summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.hardware85
-rw-r--r--bitbake/AUTHORS2
-rwxr-xr-xbitbake/bin/bitbake87
-rwxr-xr-xbitbake/bin/bitdoc2
-rw-r--r--bitbake/contrib/vim/ftdetect/bitbake.vim28
-rw-r--r--bitbake/contrib/vim/ftplugin/bitbake.vim1
-rwxr-xr-xbitbake/contrib/vim/plugin/newbb.vim85
-rw-r--r--bitbake/contrib/vim/syntax/bitbake.vim192
-rw-r--r--bitbake/doc/manual/usermanual.xml6
-rw-r--r--bitbake/lib/bb/__init__.py51
-rw-r--r--bitbake/lib/bb/build.py488
-rw-r--r--bitbake/lib/bb/cache.py664
-rw-r--r--bitbake/lib/bb/codeparser.py41
-rw-r--r--bitbake/lib/bb/command.py65
-rw-r--r--bitbake/lib/bb/cooker.py436
-rw-r--r--bitbake/lib/bb/data.py19
-rw-r--r--bitbake/lib/bb/data_smart.py99
-rw-r--r--bitbake/lib/bb/event.py112
-rw-r--r--bitbake/lib/bb/fetch/__init__.py127
-rw-r--r--bitbake/lib/bb/fetch/bzr.py35
-rw-r--r--bitbake/lib/bb/fetch/cvs.py41
-rw-r--r--bitbake/lib/bb/fetch/git.py107
-rw-r--r--bitbake/lib/bb/fetch/hg.py40
-rw-r--r--bitbake/lib/bb/fetch/local.py2
-rw-r--r--bitbake/lib/bb/fetch/osc.py31
-rw-r--r--bitbake/lib/bb/fetch/perforce.py28
-rw-r--r--bitbake/lib/bb/fetch/repo.py35
-rw-r--r--bitbake/lib/bb/fetch/svk.py20
-rw-r--r--bitbake/lib/bb/fetch/svn.py33
-rw-r--r--bitbake/lib/bb/fetch/wget.py16
-rw-r--r--bitbake/lib/bb/fetch2/__init__.py985
-rw-r--r--bitbake/lib/bb/fetch2/bzr.py141
-rw-r--r--bitbake/lib/bb/fetch2/cvs.py169
-rw-r--r--bitbake/lib/bb/fetch2/git.py236
-rw-r--r--bitbake/lib/bb/fetch2/hg.py174
-rw-r--r--bitbake/lib/bb/fetch2/local.py76
-rw-r--r--bitbake/lib/bb/fetch2/osc.py135
-rw-r--r--bitbake/lib/bb/fetch2/perforce.py196
-rw-r--r--bitbake/lib/bb/fetch2/repo.py98
-rw-r--r--bitbake/lib/bb/fetch2/ssh.py120
-rw-r--r--bitbake/lib/bb/fetch2/svk.py97
-rw-r--r--bitbake/lib/bb/fetch2/svn.py173
-rw-r--r--bitbake/lib/bb/fetch2/wget.py91
-rw-r--r--bitbake/lib/bb/msg.py204
-rw-r--r--bitbake/lib/bb/parse/__init__.py21
-rw-r--r--bitbake/lib/bb/parse/ast.py127
-rw-r--r--bitbake/lib/bb/parse/parse_py/BBHandler.py35
-rw-r--r--bitbake/lib/bb/parse/parse_py/ConfHandler.py19
-rw-r--r--bitbake/lib/bb/persist_data.py226
-rw-r--r--bitbake/lib/bb/process.py109
-rw-r--r--bitbake/lib/bb/providers.py37
-rw-r--r--bitbake/lib/bb/pysh/__init__.py (renamed from bitbake/lib/pysh/__init__.py)0
-rw-r--r--bitbake/lib/bb/pysh/builtin.py (renamed from bitbake/lib/pysh/builtin.py)0
-rw-r--r--bitbake/lib/bb/pysh/interp.py (renamed from bitbake/lib/pysh/interp.py)0
-rw-r--r--bitbake/lib/bb/pysh/lsprof.py (renamed from bitbake/lib/pysh/lsprof.py)0
-rw-r--r--bitbake/lib/bb/pysh/pysh.py (renamed from bitbake/lib/pysh/pysh.py)0
-rw-r--r--bitbake/lib/bb/pysh/pyshlex.py (renamed from bitbake/lib/pysh/pyshlex.py)0
-rw-r--r--bitbake/lib/bb/pysh/pyshyacc.py779
-rw-r--r--bitbake/lib/bb/pysh/sherrors.py (renamed from bitbake/lib/pysh/sherrors.py)0
-rw-r--r--bitbake/lib/bb/pysh/subprocess_fix.py (renamed from bitbake/lib/pysh/subprocess_fix.py)0
-rw-r--r--bitbake/lib/bb/runqueue.py443
-rw-r--r--bitbake/lib/bb/server/none.py2
-rw-r--r--bitbake/lib/bb/server/xmlrpc.py2
-rw-r--r--bitbake/lib/bb/shell.py12
-rw-r--r--bitbake/lib/bb/siggen.py98
-rw-r--r--bitbake/lib/bb/taskdata.py83
-rw-r--r--bitbake/lib/bb/ui/crumbs/progress.py2
-rw-r--r--bitbake/lib/bb/ui/crumbs/runningbuild.py225
-rw-r--r--bitbake/lib/bb/ui/depexp.py77
-rw-r--r--bitbake/lib/bb/ui/goggle.py33
-rw-r--r--bitbake/lib/bb/ui/knotty.py170
-rw-r--r--bitbake/lib/bb/ui/ncurses.py66
-rw-r--r--bitbake/lib/bb/ui/puccho.py2
-rw-r--r--bitbake/lib/bb/ui/uievent.py25
-rw-r--r--bitbake/lib/bb/utils.py177
-rw-r--r--bitbake/lib/progressbar.py384
-rw-r--r--bitbake/lib/pysh/pyshyacc.py772
-rw-r--r--documentation/bsp-guide/bsp.xml326
-rw-r--r--documentation/poky-ref-manual/extendpoky.xml15
-rw-r--r--documentation/poky-ref-manual/poky-ref-manual.xml4
-rw-r--r--documentation/poky-ref-manual/ref-variables.xml8
-rw-r--r--[-rwxr-xr-x]documentation/yocto-project-qs/figures/using-a-pre-built-image.pngbin13228 -> 12733 bytes
-rw-r--r--documentation/yocto-project-qs/yocto-project-qs.xml234
-rw-r--r--meta-demoapps/recipes-connectivity/openswan/openswan_2.4.7.bb6
-rw-r--r--meta-demoapps/recipes-connectivity/opensync/libsync_svn.bb5
-rw-r--r--meta-demoapps/recipes-connectivity/telepathy/empathy_2.26.1.bb6
-rw-r--r--meta-demoapps/recipes-gnome/abiword/abiword-2.5.inc2
-rw-r--r--meta-demoapps/recipes-gnome/abiword/abiword-embedded_2.5.2.bb2
-rw-r--r--meta-demoapps/recipes-gnome/abiword/abiword.inc2
-rw-r--r--meta-demoapps/recipes-gnome/abiword/abiword_2.5.2.bb4
-rw-r--r--meta-demoapps/recipes-gnome/abiword/abiword_cvs.bb2
-rw-r--r--meta-demoapps/recipes-gnome/libgsf/libgsf_1.14.5.bb4
-rw-r--r--meta-demoapps/recipes-sato/matchbox-themes-extra/matchbox-themes-extra_git.bb32
-rw-r--r--meta-demoapps/recipes-sato/matchbox-themes-extra/matchbox-themes-extra_svn.bb30
-rw-r--r--meta-demoapps/recipes-sato/matchbox-themes-gtk/matchbox-themes-gtk.bb4
-rw-r--r--meta-emenlow/README78
-rw-r--r--meta-emenlow/binary/.gitignore0
-rw-r--r--meta-emenlow/conf/layer.conf4
-rw-r--r--meta-emenlow/conf/machine/emenlow.conf7
-rw-r--r--meta-emenlow/recipes-bsp/formfactor/formfactor/emenlow/machconfig (renamed from meta-emenlow/recipes/formfactor/formfactor/emenlow/machconfig)0
-rw-r--r--meta-emenlow/recipes-bsp/formfactor/formfactor_0.0.bbappend (renamed from meta-emenlow/recipes/formfactor/formfactor_0.0.bbappend)0
-rw-r--r--meta-emenlow/recipes-graphics/libdrm-poulsbo/libdrm-poulsbo-2.3.0/libdrm-poulsbo.patch (renamed from meta-emenlow/recipes/libdrm-poulsbo/libdrm-poulsbo-2.3.0/libdrm-poulsbo.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libdrm-poulsbo/libdrm-poulsbo_2.3.0.bb (renamed from meta-emenlow/recipes/libdrm-poulsbo/libdrm-poulsbo_2.3.0.bb)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/033_g45_add_rgba_subpic.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/033_g45_add_rgba_subpic.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/034_g45_fix_return_for_unimpl.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/034_g45_fix_return_for_unimpl.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/035_g45_add_yv12_image_format.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/035_g45_add_yv12_image_format.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/036_g45_add_vaGetImage.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/036_g45_add_vaGetImage.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/037_g45_add_vaPutImage.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/037_g45_add_vaPutImage.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/038_g45_vaPutSurface_cliprects.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/038_g45_vaPutSurface_cliprects.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/102_attribute_visibility.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/102_attribute_visibility.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/103_fix_vainfo_deps.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/103_fix_vainfo_deps.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/104_fix_libva_pkgconfig_deps.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/104_fix_libva_pkgconfig_deps.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/105_dont_search_LIBGL_DRIVERS_PATH.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/105_dont_search_LIBGL_DRIVERS_PATH.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/108_drivers_path.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/108_drivers_path.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/203_fix_fglrx_detection.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/203_fix_fglrx_detection.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/204_check_ATIFGLEXTENSION.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/204_check_ATIFGLEXTENSION.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/300_sds_version.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/300_sds_version.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/301_vdpau_mpeg4.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/301_vdpau_mpeg4.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/320_move_vaPutSurface_flags_def.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/320_move_vaPutSurface_flags_def.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/321_libva_glx.base.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/321_libva_glx.base.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/322_libva_glx.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/322_libva_glx.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/390_compat.base.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/390_compat.base.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/391_compat.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/391_compat.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/392_compat.dso.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/392_compat.dso.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva-0.31.0/libdrm-poulsbo.patch (renamed from meta-emenlow/recipes/libva/libva-0.31.0/libdrm-poulsbo.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/libva/libva_0.31.0.bb (renamed from meta-emenlow/recipes/libva/libva_0.31.0.bb)0
-rw-r--r--meta-emenlow/recipes-graphics/psb-firmware/psb-firmware_0.30.bb (renamed from meta-emenlow/recipes/psb-firmware/psb-firmware_0.30.bb)0
-rw-r--r--meta-emenlow/recipes-graphics/psb-kernel-source/psb-kernel-source-4.42.0/build.patch (renamed from meta-emenlow/recipes/psb-kernel-source/psb-kernel-source-4.42.0/build.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/psb-kernel-source/psb-kernel-source_4.42.0.bb (renamed from meta-emenlow/recipes/psb-kernel-source/psb-kernel-source_4.42.0.bb)0
-rw-r--r--meta-emenlow/recipes-graphics/xorg-xserver/files/crosscompile.patch (renamed from meta-emenlow/recipes/xorg-xserver/files/crosscompile.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/xorg-xserver/files/fix_open_max_preprocessor_error.patch (renamed from meta-emenlow/recipes/xorg-xserver/files/fix_open_max_preprocessor_error.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/xorg-xserver/files/libdrm-poulsbo.patch (renamed from meta-emenlow/recipes/xorg-xserver/files/libdrm-poulsbo.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/xorg-xserver/files/macro_tweak.patch (renamed from meta-emenlow/recipes/xorg-xserver/files/macro_tweak.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/xorg-xserver/files/nodolt.patch (renamed from meta-emenlow/recipes/xorg-xserver/files/nodolt.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/xorg-xserver/xserver-psb_1.7.99.2.bb (renamed from meta-emenlow/recipes/xorg-xserver/xserver-psb_1.7.99.2.bb)0
-rw-r--r--meta-emenlow/recipes-graphics/xorg-xserver/xserver-xf86-config/emenlow/xorg.conf (renamed from meta-emenlow/recipes/xorg-xserver/xserver-xf86-config/emenlow/xorg.conf)0
-rw-r--r--meta-emenlow/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend (renamed from meta-emenlow/recipes/xorg-xserver/xserver-xf86-config_0.1.bbappend)0
-rw-r--r--meta-emenlow/recipes-graphics/xpsb-glx/xpsb-glx-0.18/cross-compile.patch (renamed from meta-emenlow/recipes/xpsb-glx/xpsb-glx-0.18/cross-compile.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/xpsb-glx/xpsb-glx-0.18/libdrmname.patch (renamed from meta-emenlow/recipes/xpsb-glx/xpsb-glx-0.18/libdrmname.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/xpsb-glx/xpsb-glx-0.18/native-matypes.patch (renamed from meta-emenlow/recipes/xpsb-glx/xpsb-glx-0.18/native-matypes.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/xpsb-glx/xpsb-glx_0.18.bb (renamed from meta-emenlow/recipes/xpsb-glx/xpsb-glx_0.18.bb)0
-rw-r--r--meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/01_disable_lid_timer.patch (renamed from meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/01_disable_lid_timer.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/dri-h.patch (renamed from meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/dri-h.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/libdrm-poulsbo.patch (renamed from meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/libdrm-poulsbo.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_mixed.patch (renamed from meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_mixed.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_xvtempfix.patch (renamed from meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_xvtempfix.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/stubs.patch (renamed from meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/stubs.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/visibility.patch (renamed from meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/visibility.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-ignoreacpi.patch (renamed from meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-ignoreacpi.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-xserver17.patch (renamed from meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-xserver17.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-assert.patch (renamed from meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-assert.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-comment_unused.patch (renamed from meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-comment_unused.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-greedy.patch (renamed from meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-greedy.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-loader.patch (renamed from meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-loader.patch)0
-rw-r--r--meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb_0.32.1.bb (renamed from meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb_0.32.1.bb)0
-rw-r--r--meta-emenlow/recipes-kernel/linux/linux-2.6.33.2/defconfig (renamed from meta-emenlow/recipes/linux/linux-2.6.33.2/defconfig)0
-rw-r--r--meta-emenlow/recipes-kernel/linux/linux-yocto-stable_git.bbappend (renamed from meta-emenlow/recipes/linux/linux-yocto-stable_git.bbappend)0
-rw-r--r--meta-emenlow/recipes-kernel/linux/linux_2.6.33.2.bbappend (renamed from meta-emenlow/recipes/linux/linux_2.6.33.2.bbappend)0
-rw-r--r--meta-rt/conf/layer.conf23
-rw-r--r--meta-rt/images/poky-image-minimal-rt-directdisk.bb15
-rw-r--r--meta-rt/images/poky-image-minimal-rt-live.bb15
-rw-r--r--meta-rt/images/poky-image-minimal-rt.bb12
-rw-r--r--meta-rt/recipes-kernel/linux-yocto-rt_stablegit.bb40
-rw-r--r--meta-rt/recipes-tests/rt-tests_git.bb22
-rw-r--r--meta/classes/autotools.bbclass42
-rw-r--r--meta/classes/base.bbclass168
-rw-r--r--meta/classes/binconfig.bbclass6
-rw-r--r--meta/classes/bootimg.bbclass4
-rw-r--r--meta/classes/cpan-base.bbclass4
-rw-r--r--meta/classes/cpan.bbclass5
-rw-r--r--meta/classes/cpan_build.bbclass4
-rw-r--r--meta/classes/cross-canadian.bbclass7
-rw-r--r--meta/classes/cross.bbclass27
-rw-r--r--meta/classes/crosssdk.bbclass4
-rw-r--r--meta/classes/distrodata.bbclass110
-rw-r--r--meta/classes/distutils-common-base.bbclass23
-rw-r--r--meta/classes/distutils.bbclass20
-rw-r--r--meta/classes/gtk-icon-cache.bbclass2
-rw-r--r--meta/classes/image.bbclass7
-rw-r--r--meta/classes/imagetest-qemu.bbclass52
-rw-r--r--meta/classes/insane.bbclass32
-rw-r--r--meta/classes/kernel-yocto.bbclass112
-rw-r--r--meta/classes/kernel.bbclass23
-rw-r--r--meta/classes/libc-package.bbclass3
-rw-r--r--meta/classes/license.bbclass103
-rw-r--r--meta/classes/native.bbclass5
-rw-r--r--meta/classes/nativesdk.bbclass5
-rw-r--r--meta/classes/package.bbclass22
-rw-r--r--meta/classes/package_deb.bbclass154
-rw-r--r--meta/classes/package_ipk.bbclass70
-rw-r--r--meta/classes/package_rpm.bbclass257
-rw-r--r--meta/classes/patch.bbclass4
-rw-r--r--meta/classes/poky-autobuild-notifier.bbclass6
-rw-r--r--meta/classes/poky-image.bbclass5
-rw-r--r--meta/classes/poky.bbclass29
-rw-r--r--meta/classes/populate_sdk.bbclass82
-rw-r--r--meta/classes/populate_sdk_deb.bbclass60
-rw-r--r--meta/classes/populate_sdk_ipk.bbclass44
-rw-r--r--meta/classes/populate_sdk_rpm.bbclass80
-rw-r--r--meta/classes/python-dir.bbclass2
-rw-r--r--meta/classes/qmake2.bbclass3
-rw-r--r--meta/classes/qt4e.bbclass18
-rw-r--r--meta/classes/qt4x11.bbclass9
-rw-r--r--meta/classes/rm_work.bbclass34
-rw-r--r--meta/classes/rootfs_deb.bbclass111
-rw-r--r--meta/classes/rootfs_ipk.bbclass47
-rw-r--r--meta/classes/rootfs_rpm.bbclass179
-rw-r--r--meta/classes/sanity.bbclass32
-rw-r--r--meta/classes/setuptools.bbclass8
-rw-r--r--meta/classes/siteconfig.bbclass15
-rw-r--r--meta/classes/sstate.bbclass168
-rw-r--r--meta/classes/staging.bbclass56
-rw-r--r--meta/classes/tinderclient.bbclass6
-rw-r--r--meta/classes/toolchain-scripts.bbclass34
-rw-r--r--meta/classes/update-rc.d.bbclass8
-rw-r--r--meta/classes/utility-tasks.bbclass31
-rw-r--r--meta/classes/utils.bbclass26
-rw-r--r--meta/conf/abi_version.conf2
-rw-r--r--meta/conf/bitbake.conf64
-rw-r--r--meta/conf/distro/include/as-needed.inc3
-rw-r--r--meta/conf/distro/include/distro_tracking_fields.inc2159
-rw-r--r--meta/conf/distro/include/poky-default-revisions.inc110
-rw-r--r--meta/conf/distro/include/poky-default.inc2
-rw-r--r--meta/conf/distro/include/poky-fixed-revisions.inc2
-rw-r--r--meta/conf/distro/include/poky-glibc.inc3
-rw-r--r--meta/conf/distro/include/poky-uclibc.inc3
-rw-r--r--meta/conf/distro/include/preferred-xorg-versions.inc73
-rw-r--r--meta/conf/distro/poky-lsb.conf6
-rw-r--r--meta/conf/distro/poky.conf42
-rw-r--r--meta/conf/local.conf.sample21
-rw-r--r--meta/conf/machine/akita.conf1
-rw-r--r--meta/conf/machine/atom-pc.conf1
-rw-r--r--meta/conf/machine/beagleboard.conf10
-rw-r--r--meta/conf/machine/cm-x270.conf2
-rw-r--r--meta/conf/machine/depicture.conf1
-rw-r--r--meta/conf/machine/em-x270.conf1
-rw-r--r--meta/conf/machine/htcuniversal.conf2
-rw-r--r--meta/conf/machine/hx2000.conf2
-rw-r--r--meta/conf/machine/igep0020.conf1
-rw-r--r--meta/conf/machine/igep0030.conf1
-rw-r--r--meta/conf/machine/include/qemu.inc4
-rw-r--r--meta/conf/machine/include/tune-arm1136jf-s.inc1
-rw-r--r--meta/conf/machine/include/tune-arm920t.inc2
-rw-r--r--meta/conf/machine/include/tune-arm926ejs.inc2
-rw-r--r--meta/conf/machine/include/tune-arm9tdmi.inc2
-rw-r--r--meta/conf/machine/include/tune-armv7.inc1
-rw-r--r--meta/conf/machine/include/tune-atom.inc1
-rw-r--r--meta/conf/machine/include/tune-c3.inc3
-rw-r--r--meta/conf/machine/include/tune-cortexa8.inc1
-rw-r--r--meta/conf/machine/include/tune-ep9312.inc2
-rw-r--r--meta/conf/machine/include/tune-iwmmxt.inc3
-rw-r--r--meta/conf/machine/include/tune-mips32.inc2
-rw-r--r--meta/conf/machine/include/tune-ppc603e.inc4
-rw-r--r--meta/conf/machine/include/tune-ppce300c2.inc1
-rw-r--r--meta/conf/machine/include/tune-ppce500.inc2
-rw-r--r--meta/conf/machine/include/tune-sh3.inc2
-rw-r--r--meta/conf/machine/include/tune-sh4.inc6
-rw-r--r--meta/conf/machine/include/tune-supersparc.inc3
-rw-r--r--meta/conf/machine/include/tune-xscale.inc1
-rw-r--r--meta/conf/machine/mpc8315e-rdb.conf9
-rw-r--r--meta/conf/machine/mx31ads.conf1
-rw-r--r--meta/conf/machine/mx31phy.conf1
-rw-r--r--meta/conf/machine/omap-3430ldp.conf1
-rw-r--r--meta/conf/machine/omap-3430sdp.conf1
-rw-r--r--meta/conf/machine/overo.conf3
-rw-r--r--meta/conf/machine/qemuarm.conf1
-rw-r--r--meta/conf/machine/qemuppc.conf1
-rw-r--r--meta/conf/machine/qemux86-64.conf1
-rw-r--r--meta/conf/machine/qemux86.conf1
-rw-r--r--meta/conf/machine/routerstationpro.conf4
-rw-r--r--meta/conf/machine/spitz.conf1
-rw-r--r--meta/conf/machine/zoom2.conf1
-rw-r--r--meta/conf/machine/zylonite.conf3
-rw-r--r--meta/files/common-licenses/Apache-2.0202
-rw-r--r--meta/files/common-licenses/Artistic131
-rw-r--r--meta/files/common-licenses/BSD26
-rw-r--r--meta/files/common-licenses/GFDL451
-rw-r--r--meta/files/common-licenses/GFDL-1.2397
-rw-r--r--meta/files/common-licenses/GFDL-1.3451
-rw-r--r--meta/files/common-licenses/GPL676
-rw-r--r--meta/files/common-licenses/GPLv2339
-rw-r--r--meta/files/common-licenses/GPLv3676
-rw-r--r--meta/files/common-licenses/LGPL165
-rw-r--r--meta/files/common-licenses/LGPLv2481
-rw-r--r--meta/files/common-licenses/LGPLv2.1510
-rw-r--r--meta/files/common-licenses/LGPLv3165
-rw-r--r--meta/lib/oe/patch.py6
-rw-r--r--meta/recipes-bsp/apmd/apmd-3.2.2-14/workaround.patch59
-rw-r--r--meta/recipes-bsp/apmd/apmd_3.2.2-14.bb9
-rw-r--r--meta/recipes-bsp/eee-acpi-scripts/eee-acpi-scripts_git.bb6
-rw-r--r--meta/recipes-bsp/grub/grub_0.97.bb4
-rw-r--r--meta/recipes-bsp/hostap/hostap-conf_1.0.bb4
-rw-r--r--meta/recipes-bsp/libacpi/libacpi_0.2.bb4
-rw-r--r--meta/recipes-bsp/orinoco/orinoco-conf_1.0.bb4
-rw-r--r--meta/recipes-bsp/pciutils/pciutils_3.1.7.bb5
-rw-r--r--meta/recipes-bsp/qemu-config/qemu-config.bb4
-rw-r--r--meta/recipes-bsp/uboot/u-boot-mkimage-native_1.3.2.bb2
-rw-r--r--meta/recipes-bsp/uboot/u-boot-omap3-git/beagleboard/name.patch14
-rw-r--r--meta/recipes-bsp/uboot/u-boot-omap3_git.bb18
-rw-r--r--meta/recipes-bsp/uboot/u-boot.inc3
-rw-r--r--meta/recipes-bsp/uboot/u-boot_git.bb21
-rw-r--r--meta/recipes-bsp/usbutils/usbutils_0.86.bb5
-rw-r--r--meta/recipes-bsp/v86d/v86d_0.1.9.bb2
-rw-r--r--meta/recipes-bsp/x-load/files/signGP.c108
-rw-r--r--meta/recipes-bsp/x-load/signgp-native.bb14
-rw-r--r--meta/recipes-bsp/x-load/x-load-git/beagleboard/armv7-a.patch11
-rw-r--r--meta/recipes-bsp/x-load/x-load-git/beagleboard/name.patch16
-rw-r--r--meta/recipes-bsp/x-load/x-load-git/omap3evm/armv7-a.patch11
-rw-r--r--meta/recipes-bsp/x-load/x-load-git/overo/armv7-a.patch11
-rw-r--r--meta/recipes-bsp/x-load/x-load.inc5
-rw-r--r--meta/recipes-bsp/x-load/x-load_git.bb21
-rw-r--r--meta/recipes-bsp/zaurusd/zaurusd_svn.bb5
-rw-r--r--meta/recipes-connectivity/avahi/avahi.inc11
-rw-r--r--meta/recipes-connectivity/avahi/avahi_0.6.28.bb2
-rw-r--r--meta/recipes-connectivity/bind/bind-9.7.2-P3/conf.patch (renamed from meta/recipes-connectivity/bind/bind-9.7.2-P2/conf.patch)0
-rw-r--r--meta/recipes-connectivity/bind/bind-9.7.2-P3/cross-build-fix.patch (renamed from meta/recipes-connectivity/bind/bind-9.7.2-P2/cross-build-fix.patch)0
-rw-r--r--meta/recipes-connectivity/bind/bind_9.7.2-P2.bb54
-rw-r--r--meta/recipes-connectivity/bind/bind_9.7.2-P3.bb55
-rw-r--r--meta/recipes-connectivity/bluez/bluez4-4.82/bluetooth.conf (renamed from meta/recipes-connectivity/bluez/bluez4-4.79/bluetooth.conf)0
-rw-r--r--meta/recipes-connectivity/bluez/bluez4-4.82/fix-dfutool-usb-declaration-mismatch.patch (renamed from meta/recipes-connectivity/bluez/bluez4-4.79/fix-dfutool-usb-declaration-mismatch.patch)0
-rw-r--r--meta/recipes-connectivity/bluez/bluez4-4.82/hid2hci_usb_init.patch (renamed from meta/recipes-connectivity/bluez/bluez4-4.79/hid2hci_usb_init.patch)0
-rw-r--r--meta/recipes-connectivity/bluez/bluez4-4.82/sbc-thumb.patch (renamed from meta/recipes-connectivity/bluez/bluez4-4.79/sbc-thumb.patch)0
-rw-r--r--meta/recipes-connectivity/bluez/bluez4_4.79.bb76
-rw-r--r--meta/recipes-connectivity/bluez/bluez4_4.82.bb76
-rw-r--r--meta/recipes-connectivity/connman/connman-0.65/connman (renamed from meta/recipes-connectivity/connman/connman-0.63/connman)0
-rw-r--r--meta/recipes-connectivity/connman/connman-0.65/dbusperms.patch (renamed from meta/recipes-connectivity/connman/connman-0.63/dbusperms.patch)0
-rw-r--r--meta/recipes-connectivity/connman/connman-0.65/fix-shutdown-ap-disconnect.patch (renamed from meta/recipes-connectivity/connman/connman-0.63/fix-shutdown-ap-disconnect.patch)0
-rw-r--r--meta/recipes-connectivity/connman/connman-gnome/connman-applet.desktop10
-rw-r--r--meta/recipes-connectivity/connman/connman-gnome/remove-connman-property-desktop-file.patch42
-rw-r--r--meta/recipes-connectivity/connman/connman-gnome/service_name_update.patch36
-rw-r--r--meta/recipes-connectivity/connman/connman-gnome_0.5.bb10
-rw-r--r--meta/recipes-connectivity/connman/connman_0.63.bb28
-rw-r--r--meta/recipes-connectivity/connman/connman_0.65.bb28
-rw-r--r--meta/recipes-connectivity/gsm/gsmd.inc8
-rw-r--r--meta/recipes-connectivity/gupnp/gupnp_0.14.0.bb4
-rw-r--r--meta/recipes-connectivity/gypsy/gypsy_svn.bb2
-rw-r--r--meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.10.bb4
-rw-r--r--meta/recipes-connectivity/nfs-utils/files/fix-ac-prereq.patch13
-rw-r--r--meta/recipes-connectivity/nfs-utils/libnfsidmap_0.23.bb16
-rw-r--r--meta/recipes-connectivity/nfs-utils/libnfsidmap_0.24.bb18
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils_1.2.3.bb6
-rw-r--r--meta/recipes-connectivity/ofono/ofono.inc2
-rw-r--r--meta/recipes-connectivity/ofono/ofono_0.33.bb9
-rw-r--r--meta/recipes-connectivity/ofono/ofono_0.37.bb9
-rw-r--r--meta/recipes-connectivity/openssl/openssl-0.9.8p/debian/valgrind.patch15
-rw-r--r--meta/recipes-connectivity/openssl/openssl_0.9.8p.bb1
-rw-r--r--meta/recipes-connectivity/ppp-dialin/ppp-dialin_0.1.bb4
-rw-r--r--meta/recipes-connectivity/resolvconf/resolvconf_1.43.bb35
-rw-r--r--meta/recipes-connectivity/resolvconf/resolvconf_1.48.bb36
-rw-r--r--meta/recipes-connectivity/telepathy/telepathy-glib_0.13.5.bb19
-rw-r--r--meta/recipes-connectivity/telepathy/telepathy-glib_0.13.6.bb19
-rw-r--r--meta/recipes-connectivity/telepathy/telepathy-idle_0.1.6.bb18
-rw-r--r--meta/recipes-connectivity/telepathy/telepathy-idle_0.1.7.bb18
-rw-r--r--meta/recipes-connectivity/telepathy/telepathy-mission-control_5.7.0.bb44
-rw-r--r--meta/recipes-connectivity/telepathy/telepathy-mission-control_5.7.1.bb44
-rw-r--r--meta/recipes-connectivity/telepathy/telepathy-python_0.15.18.bb21
-rw-r--r--meta/recipes-connectivity/telepathy/telepathy-python_0.15.19.bb21
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant-0.7.inc10
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_0.7.3.bb2
-rw-r--r--meta/recipes-core/base-files/base-files/profile2
-rw-r--r--meta/recipes-core/base-files/base-files_3.0.14.bb18
-rw-r--r--meta/recipes-core/busybox/busybox-1.17.3/busybox-udhcpc-no_deconfig.patch110
-rw-r--r--meta/recipes-core/busybox/busybox.inc4
-rw-r--r--meta/recipes-core/busybox/busybox_1.17.3.bb4
-rwxr-xr-xmeta/recipes-core/busybox/files/busybox-udhcpc25
-rw-r--r--meta/recipes-core/coreutils/coreutils-6.9/coreutils-6.9-cp-i-u.patch118
-rw-r--r--meta/recipes-core/coreutils/coreutils-6.9/coreutils-fix-install.patch99
-rw-r--r--meta/recipes-core/coreutils/coreutils-6.9/coreutils-i18n.patch4049
-rw-r--r--meta/recipes-core/coreutils/coreutils-6.9/coreutils-ls-x.patch115
-rw-r--r--meta/recipes-core/coreutils/coreutils-6.9/coreutils-overflow.patch17
-rw-r--r--meta/recipes-core/coreutils/coreutils_6.9.bb5
-rw-r--r--meta/recipes-core/coreutils/coreutils_8.5.bb73
-rw-r--r--meta/recipes-core/coreutils/coreutils_8.9.bb74
-rw-r--r--meta/recipes-core/dbus-wait/dbus-wait_svn.bb2
-rw-r--r--meta/recipes-core/dbus/dbus-1.4.1/dbus-1.init (renamed from meta/recipes-core/dbus/dbus-1.4.0/dbus-1.init)0
-rw-r--r--meta/recipes-core/dbus/dbus-1.4.1/tmpdir.patch (renamed from meta/recipes-core/dbus/dbus-1.4.0/tmpdir.patch)0
-rw-r--r--meta/recipes-core/dbus/dbus-glib-0.88/fix_asneeded.patch17
-rw-r--r--meta/recipes-core/dbus/dbus-glib-0.92/no-examples.patch (renamed from meta/recipes-core/dbus/dbus-glib-0.88/no-examples.patch)0
-rw-r--r--meta/recipes-core/dbus/dbus-glib.inc12
-rw-r--r--meta/recipes-core/dbus/dbus-glib_0.88.bb6
-rw-r--r--meta/recipes-core/dbus/dbus-glib_0.92.bb6
-rw-r--r--meta/recipes-core/dbus/dbus.inc5
-rw-r--r--meta/recipes-core/dbus/dbus_1.4.0.bb6
-rw-r--r--meta/recipes-core/dbus/dbus_1.4.1.bb6
-rw-r--r--meta/recipes-core/eglibc/cross-localedef-native_2.12.bb11
-rw-r--r--meta/recipes-core/eglibc/eglibc-initial.inc10
-rw-r--r--meta/recipes-core/eglibc/eglibc-package.inc8
-rw-r--r--meta/recipes-core/eglibc/eglibc.inc19
-rw-r--r--meta/recipes-core/eglibc/eglibc_2.12.bb2
-rw-r--r--meta/recipes-core/gettext/gettext_0.14.1.bb19
-rw-r--r--meta/recipes-core/gettext/gettext_0.17.bb35
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0-2.27.3/configure-libtool.patch36
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/60_wait-longer-for-threads-to-die.patch (renamed from meta/recipes-core/glib-2.0/glib-2.0-2.27.3/60_wait-longer-for-threads-to-die.patch)0
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/configure-libtool.patch36
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/g_once_init_enter.patch22
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/glib-gettextize-dir.patch (renamed from meta/recipes-core/glib-2.0/glib-2.0-2.27.3/glib-gettextize-dir.patch)0
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0_2.26.1.bb16
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0_2.27.3.bb13
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0_2.27.5.bb18
-rw-r--r--meta/recipes-core/glib-2.0/glib.inc6
-rw-r--r--meta/recipes-core/glibc/glibc-initial.inc10
-rw-r--r--meta/recipes-core/glibc/glibc.inc21
-rw-r--r--meta/recipes-core/glibc/ldconfig-native_2.5.bb2
-rw-r--r--meta/recipes-core/images/poky-image-live.inc3
-rw-r--r--meta/recipes-core/images/poky-image-minimal-dev.bb15
-rw-r--r--meta/recipes-core/images/poky-image-minimal.bb2
-rw-r--r--meta/recipes-core/initrdscripts/files/init-live.sh1
-rw-r--r--meta/recipes-core/initscripts/initscripts_1.0.bb4
-rw-r--r--meta/recipes-core/libxml/libxml2.inc1
-rw-r--r--meta/recipes-core/libxml/libxml2_2.7.7.bb2
-rw-r--r--meta/recipes-core/meta/external-python-tarball.bb4
-rw-r--r--meta/recipes-core/meta/meta-environment.bb61
-rw-r--r--meta/recipes-core/meta/meta-toolchain-gmae.bb5
-rw-r--r--meta/recipes-core/meta/meta-toolchain-sdk.bb4
-rw-r--r--meta/recipes-core/meta/meta-toolchain.bb102
-rw-r--r--meta/recipes-core/ncurses/ncurses-5.7/config.cache4
-rw-r--r--meta/recipes-core/ncurses/ncurses-5.7/tic-hang.patch25
-rw-r--r--meta/recipes-core/ncurses/ncurses/makefile_tweak.patch89
-rw-r--r--meta/recipes-core/ncurses/ncurses/visibility.patch4904
-rw-r--r--meta/recipes-core/ncurses/ncurses_5.4.bb11
-rw-r--r--meta/recipes-core/ncurses/ncurses_5.7.bb242
-rw-r--r--meta/recipes-core/netbase/netbase-4.44/colinux/interfaces (renamed from meta/recipes-core/netbase/netbase-4.43/colinux/interfaces)0
-rw-r--r--meta/recipes-core/netbase/netbase-4.44/epia/interfaces (renamed from meta/recipes-core/netbase/netbase-4.43/epia/interfaces)0
-rw-r--r--meta/recipes-core/netbase/netbase-4.44/hosts (renamed from meta/recipes-core/netbase/netbase-4.43/hosts)0
-rw-r--r--meta/recipes-core/netbase/netbase-4.44/init (renamed from meta/recipes-core/netbase/netbase-4.43/init)0
-rw-r--r--meta/recipes-core/netbase/netbase-4.44/interfaces (renamed from meta/recipes-core/netbase/netbase-4.43/interfaces)0
-rw-r--r--meta/recipes-core/netbase/netbase-4.44/mtx-1/interfaces (renamed from meta/recipes-core/netbase/netbase-4.43/mtx-1/interfaces)0
-rw-r--r--meta/recipes-core/netbase/netbase-4.44/nfsroot (renamed from meta/recipes-core/netbase/netbase-4.43/nfsroot)0
-rw-r--r--meta/recipes-core/netbase/netbase-4.44/nokia800/interfaces (renamed from meta/recipes-core/netbase/netbase-4.43/nokia800/interfaces)0
-rw-r--r--meta/recipes-core/netbase/netbase-4.44/openmn/hosts (renamed from meta/recipes-core/netbase/netbase-4.43/openmn/hosts)0
-rw-r--r--meta/recipes-core/netbase/netbase-4.44/openmn/interfaces (renamed from meta/recipes-core/netbase/netbase-4.43/openmn/interfaces)0
-rw-r--r--meta/recipes-core/netbase/netbase-4.44/qemuarm/interfaces (renamed from meta/recipes-core/netbase/netbase-4.43/qemuarm/interfaces)0
-rw-r--r--meta/recipes-core/netbase/netbase-4.44/qemuarmv6/interfaces (renamed from meta/recipes-core/netbase/netbase-4.43/qemuarmv6/interfaces)0
-rw-r--r--meta/recipes-core/netbase/netbase-4.44/qemuarmv7/interfaces (renamed from meta/recipes-core/netbase/netbase-4.43/qemuarmv7/interfaces)0
-rw-r--r--meta/recipes-core/netbase/netbase-4.44/qemux86-64/interfaces (renamed from meta/recipes-core/netbase/netbase-4.43/qemux86-64/interfaces)0
-rw-r--r--meta/recipes-core/netbase/netbase-4.44/qemux86/interfaces (renamed from meta/recipes-core/netbase/netbase-4.43/qemux86/interfaces)0
-rw-r--r--meta/recipes-core/netbase/netbase-4.44/tosa/interfaces (renamed from meta/recipes-core/netbase/netbase-4.43/tosa/interfaces)0
-rw-r--r--meta/recipes-core/netbase/netbase-4.44/wrt54/interfaces (renamed from meta/recipes-core/netbase/netbase-4.43/wrt54/interfaces)0
-rw-r--r--meta/recipes-core/netbase/netbase-4.44/xxs1500/interfaces (renamed from meta/recipes-core/netbase/netbase-4.43/xxs1500/interfaces)0
-rw-r--r--meta/recipes-core/netbase/netbase_4.43.bb61
-rw-r--r--meta/recipes-core/netbase/netbase_4.44.bb61
-rw-r--r--meta/recipes-core/psplash/files/psplash-poky-img.h909
-rw-r--r--meta/recipes-core/psplash/psplash_svn.bb11
-rw-r--r--meta/recipes-core/sysfsutils/sysfsutils-2.1.0/sysfsutils-2.0.0-class-dup.patch21
-rw-r--r--meta/recipes-core/sysfsutils/sysfsutils_2.1.0.bb6
-rw-r--r--meta/recipes-core/tasks/task-cross-canadian.bb3
-rw-r--r--meta/recipes-core/tasks/task-poky-sdk.bb4
-rw-r--r--meta/recipes-core/tasks/task-poky-tools.bb11
-rw-r--r--meta/recipes-core/tasks/task-sdk-host.bb6
-rw-r--r--meta/recipes-core/util-linux/util-linux-2.17.2/util-linux-ng-2.16-mount_lock_path.patch25
-rw-r--r--meta/recipes-core/util-linux/util-linux.inc52
-rw-r--r--meta/recipes-core/util-linux/util-linux_2.17.2.bb5
-rw-r--r--meta/recipes-devtools/apt/apt-0.7.14/use-host.patch20
-rw-r--r--meta/recipes-devtools/apt/apt-native_0.7.14.bb2
-rw-r--r--meta/recipes-devtools/apt/apt_0.7.14.bb6
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.20.1/binutils-2.16.1-e300c2c3.patch18
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.20.1/binutils-libtool.patch67
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.20.1/binutils-mips-pie.patch29
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.20.1/binutils-poison.patch253
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.20.1/binutils-uclibc-300-012_check_ldrunpath_length.patch47
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.21/110-arm-eabi-conf.patch (renamed from meta/recipes-devtools/binutils/binutils-2.20.1/110-arm-eabi-conf.patch)0
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.21/binutils-2.19.1-ld-sysroot.patch37
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.21/binutils-poison.patch245
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.21/binutils-uclibc-100-uclibc-conf.patch (renamed from meta/recipes-devtools/binutils/binutils-2.20.1/binutils-uclibc-100-uclibc-conf.patch)0
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.21/binutils-uclibc-300-001_ld_makefile_patch.patch (renamed from meta/recipes-devtools/binutils/binutils-2.20.1/binutils-uclibc-300-001_ld_makefile_patch.patch)0
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.21/binutils-uclibc-300-006_better_file_error.patch (renamed from meta/recipes-devtools/binutils/binutils-2.20.1/binutils-uclibc-300-006_better_file_error.patch)0
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.21/binutils-uclibc-300-012_check_ldrunpath_length.patch48
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.21/binutils-uclibc-gas-needs-libm.patch (renamed from meta/recipes-devtools/binutils/binutils-2.20.1/binutils-uclibc-gas-needs-libm.patch)0
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.21/binutils-x86_64_i386_biarch.patch (renamed from meta/recipes-devtools/binutils/binutils-2.20.1/binutils-x86_64_i386_biarch.patch)0
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.21/libiberty_path_fix.patch (renamed from meta/recipes-devtools/binutils/binutils-2.20.1/libiberty_path_fix.patch)0
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.21/libtool-2.4-update.patch18719
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.21/libtool-rpath-fix.patch36
-rw-r--r--meta/recipes-devtools/binutils/binutils-cross-canadian.inc6
-rw-r--r--meta/recipes-devtools/binutils/binutils-cross-canadian_2.20.1.bb3
-rw-r--r--meta/recipes-devtools/binutils/binutils-cross-canadian_2.21.bb3
-rw-r--r--meta/recipes-devtools/binutils/binutils-cross.inc6
-rw-r--r--meta/recipes-devtools/binutils/binutils-cross_2.20.1.bb3
-rw-r--r--meta/recipes-devtools/binutils/binutils-cross_2.21.bb2
-rw-r--r--meta/recipes-devtools/binutils/binutils-crosssdk_2.20.1.bb12
-rw-r--r--meta/recipes-devtools/binutils/binutils-crosssdk_2.21.bb12
-rw-r--r--meta/recipes-devtools/binutils/binutils.inc20
-rw-r--r--meta/recipes-devtools/binutils/binutils_2.20.1.bb41
-rw-r--r--meta/recipes-devtools/binutils/binutils_2.21.bb37
-rw-r--r--meta/recipes-devtools/binutils/files/better_file_error.patch17
-rw-r--r--meta/recipes-devtools/binutils/files/ld_makefile.patch22
-rw-r--r--meta/recipes-devtools/binutils/files/objdump_fix.patch134
-rw-r--r--meta/recipes-devtools/binutils/files/plt32trunc.patch24
-rw-r--r--meta/recipes-devtools/binutils/files/signed_char_fix.patch12
-rw-r--r--meta/recipes-devtools/bison/bison_2.4.3.bb8
-rw-r--r--meta/recipes-devtools/cdrtools/cdrtools-native_2.01.bb2
-rw-r--r--meta/recipes-devtools/desktop-file-utils/desktop-file-utils-native_0.15.bb3
-rw-r--r--meta/recipes-devtools/distcc/distcc_2.18.3.bb4
-rw-r--r--meta/recipes-devtools/docbook-dsssl-stylesheets/docbook-dsssl-stylesheets-native_1.79.bb52
-rw-r--r--meta/recipes-devtools/docbook-sgml-dtd/docbook-sgml-dtd-3.1-native.bb23
-rw-r--r--meta/recipes-devtools/docbook-sgml-dtd/docbook-sgml-dtd-4.1-native.bb23
-rw-r--r--meta/recipes-devtools/docbook-sgml-dtd/docbook-sgml-dtd-4.5-native.bb17
-rw-r--r--meta/recipes-devtools/docbook-sgml-dtd/docbook-sgml-dtd-native.inc53
-rw-r--r--meta/recipes-devtools/docbook-sgml-dtd/files/LICENSE-OASIS16
-rw-r--r--meta/recipes-devtools/dpkg/dpkg.inc4
-rw-r--r--meta/recipes-devtools/dpkg/dpkg_1.15.8.5.bb25
-rw-r--r--meta/recipes-devtools/dpkg/dpkg_1.15.8.7.bb25
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs_1.41.12.bb4
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.108/warnings.patch132
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.89/warnings.patch98
-rw-r--r--meta/recipes-devtools/elfutils/elfutils_0.108.bb25
-rw-r--r--meta/recipes-devtools/elfutils/elfutils_0.89.bb10
-rw-r--r--meta/recipes-devtools/flex/flex.inc3
-rw-r--r--meta/recipes-devtools/flex/flex_2.5.35.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.5.1.inc2
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.5.1/GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch33
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.5.1/fedora/gcc45-no-add-needed.patch52
-rw-r--r--meta/recipes-devtools/gcc/gcc-configure-cross.inc4
-rw-r--r--meta/recipes-devtools/gcc/gcc-configure-runtime.inc16
-rw-r--r--meta/recipes-devtools/gcc/gcc-configure-sdk.inc2
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-canadian_4.5.1.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-initial.inc2
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-initial_4.3.3.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-initial_4.5.1.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-intermediate.inc35
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-intermediate_4.3.3.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-intermediate_4.5.1.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross_4.5.1.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.3.3.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.5.1.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-crosssdk-intermediate_4.5.1.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-crosssdk_4.5.1.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-package-runtime.inc8
-rw-r--r--meta/recipes-devtools/gcc/gcc-runtime_4.3.3.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-runtime_4.5.1.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc_4.5.1.bb2
-rw-r--r--meta/recipes-devtools/gcc/libgcc_4.5.1.bb46
-rw-r--r--meta/recipes-devtools/gdb/gdb-common.inc4
-rw-r--r--meta/recipes-devtools/git/git_1.7.3.2.bb10
-rw-r--r--meta/recipes-devtools/git/git_1.7.3.4.bb10
-rw-r--r--meta/recipes-devtools/guilt/guilt-native_0.33.bb6
-rw-r--r--meta/recipes-devtools/icon-naming-utils/icon-naming-utils-native_0.8.7.bb2
-rwxr-xr-xmeta/recipes-devtools/installer/adt-installer/adt_installer367
-rw-r--r--meta/recipes-devtools/installer/adt-installer/adt_installer.conf52
-rw-r--r--meta/recipes-devtools/installer/adt-installer/opkg/conf/opkg-sdk-i686.conf6
-rw-r--r--meta/recipes-devtools/installer/adt-installer/opkg/conf/opkg-sdk-x86_64.conf6
-rwxr-xr-xmeta/recipes-devtools/installer/adt-installer/scripts/adt_installer_internal210
-rw-r--r--meta/recipes-devtools/installer/adt-installer/scripts/data_define40
-rwxr-xr-xmeta/recipes-devtools/installer/adt-installer/scripts/extract_rootfs67
-rw-r--r--meta/recipes-devtools/installer/adt-installer/scripts/util104
-rw-r--r--meta/recipes-devtools/installer/adt-installer_1.0.bb84
-rw-r--r--meta/recipes-devtools/intltool/intltool.inc4
-rw-r--r--meta/recipes-devtools/intltool/intltool_0.40.6.bb2
-rw-r--r--meta/recipes-devtools/libtool/libtool-2.4.inc13
-rw-r--r--meta/recipes-devtools/libtool/libtool-cross_2.4.bb13
-rw-r--r--meta/recipes-devtools/libtool/libtool-native_2.4.bb11
-rw-r--r--meta/recipes-devtools/libtool/libtool-nativesdk_2.4.bb11
-rw-r--r--meta/recipes-devtools/libtool/libtool.inc22
-rw-r--r--meta/recipes-devtools/libtool/libtool/cross_compile.patch38
-rw-r--r--meta/recipes-devtools/libtool/libtool/fix-final-rpath.patch36
-rw-r--r--meta/recipes-devtools/libtool/libtool/rename-with-sysroot.patch824
-rw-r--r--meta/recipes-devtools/libtool/libtool/resolve-sysroot.patch40
-rw-r--r--meta/recipes-devtools/libtool/libtool/use-sysroot-in-libpath.patch20
-rw-r--r--meta/recipes-devtools/libtool/libtool_2.4.bb31
-rw-r--r--meta/recipes-devtools/mklibs/files/ac_init_fix.patch17
-rw-r--r--meta/recipes-devtools/mklibs/mklibs-native_0.1.31.bb23
-rw-r--r--meta/recipes-devtools/mtd/mtd-utils_1.4.1.bb2
-rw-r--r--meta/recipes-devtools/openjade/openjade-1.3.2/autoconf.patch173
-rw-r--r--meta/recipes-devtools/openjade/openjade-1.3.2/configure.patch68
-rw-r--r--meta/recipes-devtools/openjade/openjade-1.3.2/makefile.patch34
-rw-r--r--meta/recipes-devtools/openjade/openjade-1.3.2/oj-native-libosp-fix.patch15
-rw-r--r--meta/recipes-devtools/openjade/openjade_1.3.2.bb66
-rw-r--r--meta/recipes-devtools/opensp/opensp/attributevalue.patch62
-rw-r--r--meta/recipes-devtools/opensp/opensp/fix-docdir.patch14
-rw-r--r--meta/recipes-devtools/opensp/opensp/m4.patch1925
-rw-r--r--meta/recipes-devtools/opensp/opensp/rangmap-fix.patch15
-rw-r--r--meta/recipes-devtools/opensp/opensp_1.5.bb27
-rw-r--r--meta/recipes-devtools/opkg-utils/opkg-utils_svn.bb8
-rw-r--r--meta/recipes-devtools/opkg/opkg-0.1.8/opkg_unarchive.patch17
-rw-r--r--meta/recipes-devtools/opkg/opkg.inc3
-rw-r--r--meta/recipes-devtools/opkg/opkg/logfix.patch23
-rw-r--r--meta/recipes-devtools/opkg/opkg_0.1.8.bb8
-rw-r--r--meta/recipes-devtools/opkg/opkg_svn.bb15
-rw-r--r--meta/recipes-devtools/patch/patch_2.6.1.bb2
-rw-r--r--meta/recipes-devtools/pax-utils/pax-utils_0.2.1.bb19
-rw-r--r--meta/recipes-devtools/pax-utils/pax-utils_0.2.2.bb21
-rw-r--r--meta/recipes-devtools/perl/files/letgcc-find-errno.patch14
-rw-r--r--meta/recipes-devtools/perl/files/perl-5.8.8-gcc-4.2.patch13
-rw-r--r--meta/recipes-devtools/perl/liburi-perl_1.56.bb (renamed from meta/recipes-devtools/perl/liburi-perl_1.56)0
-rw-r--r--meta/recipes-devtools/perl/libxml-simple-perl_2.18.bb4
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/09_fix_installperl.patch19
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/Makefile.SH.patch288
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/Makefile.patch57
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/asm-pageh-fix.patch19
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/config.sh1086
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/config.sh-3238
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/config.sh-32-be (renamed from meta/recipes-devtools/perl/perl-5.8.8/config.sh-32-be)0
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/config.sh-32-le (renamed from meta/recipes-devtools/perl/perl-5.8.8/config.sh-32-le)0
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/config.sh-6438
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/config.sh-64-be (renamed from meta/recipes-devtools/perl/perl-5.8.8/config.sh-64-be)0
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/config.sh-64-le (renamed from meta/recipes-devtools/perl/perl-5.8.8/config.sh-64-le)0
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/cross-generate_uudmap.patch13
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/arm_optim.diff32
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/arm_thread_stress_timeout.diff23
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/cpan_config_path.diff22
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/cpan_definstalldirs.diff35
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/cpanplus_config_path.diff43
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/cpanplus_definstalldirs.diff52
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/db_file_ver.diff32
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/deprecate-with-apt.diff59
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/devel-ppport-ia64-optim.diff32
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/disable-zlib-bundling.diff29
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/doc_info.diff34
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/enc2xs_inc.diff49
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/errno_ver.diff32
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/extutils_hacks.diff313
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/fakeroot.diff43
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/autodie-flock.diff98
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/concat-stack-corruption.diff37
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/cpanplus-without-home.diff30
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/h2ph-gcc-4.5.diff106
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/hurd-ccflags.diff26
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/lc-numeric-docs.diff95
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/lc-numeric-sprintf.diff29
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/net_smtp_docs.diff23
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/processPL.diff43
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/instmodsh_doc.diff26
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/ld_run_path.diff23
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/libnet_config_path.diff35
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/m68k_thread_stress.diff43
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/mod_paths.diff98
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/module_build_man_extensions.diff31
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/perlivp.diff38
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/prune_libs.diff36
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/debian/squelch-locale-warnings.diff53
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/generate-sh.patch (renamed from meta/recipes-devtools/perl/perl-5.8.8/generate-sh.patch)0
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/installperl.patch15
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/native-nopacklist.patch80
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/native-perlinc.patch24
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/native-ssp.patch (renamed from meta/recipes-devtools/perl/perl-5.8.8/native-ssp.patch)0
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/perl-configpm-switch.patch (renamed from meta/recipes-devtools/perl/perl-5.8.8/perl-configpm-switch.patch)0
-rwxr-xr-xmeta/recipes-devtools/perl/perl-5.12.2/perl-configure.sh43
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/perl-dynloader.patch23
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/perl-enable-gdbm.patch (renamed from meta/recipes-devtools/perl/perl-5.8.8/perl-enable-gdbm.patch)0
-rw-r--r--meta/recipes-devtools/perl/perl-5.12.2/perl-moreconfig.patch (renamed from meta/recipes-devtools/perl/perl-5.8.8/perl-moreconfig.patch)0
-rw-r--r--meta/recipes-devtools/perl/perl-5.8.8/09_fix_installperl.patch32
-rw-r--r--meta/recipes-devtools/perl/perl-5.8.8/52_debian_extutils_hacks.patch234
-rw-r--r--meta/recipes-devtools/perl/perl-5.8.8/53_debian_mod_paths.patch107
-rw-r--r--meta/recipes-devtools/perl/perl-5.8.8/54_debian_perldoc-r.patch16
-rw-r--r--meta/recipes-devtools/perl/perl-5.8.8/58_debian_cpan_config_path.patch14
-rw-r--r--meta/recipes-devtools/perl/perl-5.8.8/60_debian_libnet_config_path.patch16
-rw-r--r--meta/recipes-devtools/perl/perl-5.8.8/62_debian_cpan_definstalldirs.patch16
-rw-r--r--meta/recipes-devtools/perl/perl-5.8.8/64_debian_enc2xs_inc.patch28
-rw-r--r--meta/recipes-devtools/perl/perl-5.8.8/Makefile.SH.patch253
-rw-r--r--meta/recipes-devtools/perl/perl-5.8.8/Makefile.patch61
-rw-r--r--meta/recipes-devtools/perl/perl-5.8.8/asm-pageh-fix.patch19
-rw-r--r--meta/recipes-devtools/perl/perl-5.8.8/config.sh1020
-rw-r--r--meta/recipes-devtools/perl/perl-5.8.8/config.sh-3258
-rw-r--r--meta/recipes-devtools/perl/perl-5.8.8/config.sh-6458
-rw-r--r--meta/recipes-devtools/perl/perl-5.8.8/installperl.patch15
-rw-r--r--meta/recipes-devtools/perl/perl-5.8.8/makedepend-dash.patch13
-rw-r--r--meta/recipes-devtools/perl/perl-5.8.8/native-no-gdbminc.patch18
-rw-r--r--meta/recipes-devtools/perl/perl-5.8.8/native-nopacklist.patch84
-rw-r--r--meta/recipes-devtools/perl/perl-5.8.8/native-perlinc.patch24
-rwxr-xr-xmeta/recipes-devtools/perl/perl-5.8.8/perl-configure.sh43
-rw-r--r--meta/recipes-devtools/perl/perl-5.8.8/perl-dynloader.patch23
-rw-r--r--meta/recipes-devtools/perl/perl-native_5.12.2.bb100
-rw-r--r--meta/recipes-devtools/perl/perl-native_5.8.8.bb96
-rw-r--r--meta/recipes-devtools/perl/perl-rdepends_5.12.2.inc210
-rw-r--r--meta/recipes-devtools/perl/perl-rdepends_5.8.8.inc1145
-rw-r--r--meta/recipes-devtools/perl/perl-rprovides_5.12.2.inc1
-rw-r--r--meta/recipes-devtools/perl/perl_5.12.2.bb276
-rw-r--r--meta/recipes-devtools/perl/perl_5.8.8.bb228
-rw-r--r--meta/recipes-devtools/prelink/prelink_git.bb5
-rw-r--r--meta/recipes-devtools/pseudo/pseudo/895fa7e359e8026a608fba052c2994e42901e45f.patch235
-rw-r--r--meta/recipes-devtools/pseudo/pseudo/static_sqlite.patch18
-rw-r--r--meta/recipes-devtools/pseudo/pseudo_git.bb40
-rw-r--r--meta/recipes-devtools/python/python-dbus_0.83.1.bb25
-rw-r--r--meta/recipes-devtools/python/python-dbus_0.83.2.bb25
-rw-r--r--meta/recipes-devtools/python/python-gst_0.10.19.bb4
-rw-r--r--meta/recipes-devtools/python/python-imaging_1.1.7.bb4
-rw-r--r--meta/recipes-devtools/python/python-native_2.6.6.bb1
-rw-r--r--meta/recipes-devtools/python/python-pycurl_7.19.0.bb4
-rw-r--r--meta/recipes-devtools/python/python-pygobject-native_2.27.0.bb15
-rw-r--r--meta/recipes-devtools/python/python-pygobject_2.27.0.bb14
-rw-r--r--meta/recipes-devtools/python/python-pygtk_2.17.0.bb4
-rw-r--r--meta/recipes-devtools/python/python-pyrex-native_0.9.9.bb4
-rw-r--r--meta/recipes-devtools/python/python-scons-native_2.0.1.bb4
-rw-r--r--meta/recipes-devtools/python/python.inc10
-rw-r--r--meta/recipes-devtools/python/python_2.6.6.bb11
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.12.4/arm-cp15-fix.patch131
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.12.4/arm_timer-fix-oneshot-mode.patch32
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.12.4/arm_timer-reload-timer-when-enabled.patch40
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.12.4/cursor-shadow-fix.patch35
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.12.4/enable-i386-linux-user.patch53
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.12.4/fix-configure-checks.patch20
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.12.4/fix-nogl.patch96
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.12.4/init-info.patch16
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.12.4/linker-flags.patch22
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.12.4/no-strip.patch26
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.12.4/qemu-git-qemugl-host.patch34376
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.12.4/qemu-ppc-hack.patch136
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.12.4/qemu-vmware-vga-depth.patch115
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.12.4/vmware-vga-fifo-rewind.patch198
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.12.4/workaround_bad_futex_headers.patch24
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/enable-i386-linux-user.patch53
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/fix-configure-checks.patch20
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/fix-dirent.patch (renamed from meta/recipes-devtools/qemu/qemu-0.12.4/fix-dirent.patch)0
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/fix-nogl.patch96
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/glflags.patch (renamed from meta/recipes-devtools/qemu/qemu-0.12.4/glflags.patch)0
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/init-info.patch16
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/linker-flags.patch22
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/no-strip.patch26
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/parallel_make.patch34
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/port92_fix.patch196
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/powerpc_rom.bin (renamed from meta/recipes-devtools/qemu/qemu-0.12.4/powerpc_rom.bin)bin4096 -> 4096 bytes
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/qemu-git-qemugl-host.patch34364
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/qemu-ppc-hack.patch108
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/qemu-vmware-vga-depth.patch115
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/qemugl-allow-glxcontext-release.patch (renamed from meta/recipes-devtools/qemu/qemu-0.12.4/qemugl-allow-glxcontext-release.patch)0
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/vmware-vga-fifo-rewind.patch198
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/wacom-tablet-fix.patch65
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.13.0/workaround_bad_futex_headers.patch24
-rw-r--r--meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb6
-rw-r--r--meta/recipes-devtools/qemu/qemu-helper-nativesdk_1.0.bb10
-rw-r--r--meta/recipes-devtools/qemu/qemu_0.12.4.bb40
-rw-r--r--meta/recipes-devtools/qemu/qemu_0.13.0.bb39
-rw-r--r--meta/recipes-devtools/rpm/rpm/header-include-fix.patch24
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-autogen.patch54
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-libsql-fix.patch18
-rwxr-xr-xmeta/recipes-devtools/rpm/rpm/rpm2cpio51
-rw-r--r--meta/recipes-devtools/rpm/rpm_5.1.10.bb168
-rw-r--r--meta/recipes-devtools/rpm/rpm_5.4.0.bb417
-rw-r--r--meta/recipes-devtools/sgml-common/sgml-common-0.6.3/autohell.patch58
-rw-r--r--meta/recipes-devtools/sgml-common/sgml-common-0.6.3/license.patch26
-rw-r--r--meta/recipes-devtools/sgml-common/sgml-common-native_0.6.3.bb50
-rw-r--r--meta/recipes-devtools/sgml-common/sgml-common_0.6.3.bb52
-rw-r--r--meta/recipes-devtools/sgmlspl/files/combined.patch457
-rw-r--r--meta/recipes-devtools/sgmlspl/sgmlspl-native_1.03ii.bb17
-rw-r--r--meta/recipes-devtools/subversion/subversion/disable-revision-install.patch24
-rw-r--r--meta/recipes-devtools/subversion/subversion_1.6.13.bb35
-rw-r--r--meta/recipes-devtools/subversion/subversion_1.6.15.bb35
-rw-r--r--meta/recipes-devtools/tcf-agent/tcf-agent_svn.bb2
-rw-r--r--meta/recipes-devtools/ubootchart/ubootchart_svn.bb6
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/001-2.2b47-2.2b51.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/001-2.2b47-2.2b51.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/002-destdir.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/002-destdir.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/003-manpages.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/003-manpages.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/004-strsignal.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/004-strsignal.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/005-sys-time.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/005-sys-time.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/006-reiserfs.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/006-reiserfs.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/007-map.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/007-map.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/008-configure.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/008-configure.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/009-multirw.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/009-multirw.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/010-realpath.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/010-realpath.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/011-fno-strict-aliasing.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/011-fno-strict-aliasing.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/012-nostrip.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/012-nostrip.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/013-mntpathlen.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/013-mntpathlen.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/014-uninitialized.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/014-uninitialized.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/015-setattr.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/015-setattr.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/016-makefile.in.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/016-makefile.in.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/017-wrs-dynamic-rpc.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/017-wrs-dynamic-rpc.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/018-remove-tcp-wrappers.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/018-remove-tcp-wrappers.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/019-pid-before-fork.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/019-pid-before-fork.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/020-undefined-chmod-fix.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/020-undefined-chmod-fix.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/021-nolibwrap.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/021-nolibwrap.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/022-add-close-on-exec-descriptors.patch (renamed from meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/022-add-close-on-exec-descriptors.patch)0
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server_2.1+2.2beta47.bb75
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server_2.2beta47.bb74
-rw-r--r--meta/recipes-devtools/unifdef/unifdef-native_2.6.18+git.bb2
-rw-r--r--meta/recipes-extended/at/at_3.1.12.bb29
-rw-r--r--meta/recipes-extended/augeas/augeas_0.7.3.bb6
-rw-r--r--meta/recipes-extended/augeas/augeas_0.7.4.bb6
-rw-r--r--meta/recipes-extended/bash/bash.inc5
-rw-r--r--meta/recipes-extended/bash/bash_3.2.48.bb2
-rw-r--r--meta/recipes-extended/bash/bash_4.1.bb2
-rw-r--r--meta/recipes-extended/blktool/blktool_4-6.bb9
-rw-r--r--meta/recipes-extended/byacc/byacc_20100610.bb7
-rw-r--r--meta/recipes-extended/byacc/byacc_20101127.bb7
-rw-r--r--meta/recipes-extended/cronie/cronie/crontab10
-rw-r--r--meta/recipes-extended/cronie/cronie_1.4.6.bb33
-rw-r--r--meta/recipes-extended/cups/cups-1.4.6/0001-don-t-try-to-run-generated-binaries.patch68
-rw-r--r--meta/recipes-extended/cups/cups-1.4.6/use_echo_only_in_init.patch11
-rw-r--r--meta/recipes-extended/cups/cups14.inc85
-rw-r--r--meta/recipes-extended/cups/cups_1.4.6.bb17
-rw-r--r--meta/recipes-extended/images/poky-image-lsb-dev.bb9
-rw-r--r--meta/recipes-extended/iputils/files/debian/CVE-2010-2529.diff22
-rw-r--r--meta/recipes-extended/iputils/iputils_s20100418.bb87
-rw-r--r--meta/recipes-extended/iputils/iputils_s20101006.bb86
-rw-r--r--meta/recipes-extended/libuser/libuser-0.57.1/disable-sgml-doc.patch (renamed from meta/recipes-extended/libuser/libuser-0.56.18/disable-sgml-doc.patch)0
-rw-r--r--meta/recipes-extended/libuser/libuser_0.56.18.bb25
-rw-r--r--meta/recipes-extended/libuser/libuser_0.57.1.bb25
-rw-r--r--meta/recipes-extended/libzypp/libzypp/rpm5-no-rpmdbinit.patch25
-rw-r--r--meta/recipes-extended/libzypp/libzypp_git.bb8
-rw-r--r--meta/recipes-extended/mailx/mailx_12.4.bb28
-rw-r--r--meta/recipes-extended/man-pages/man-pages_3.25.bb33
-rw-r--r--meta/recipes-extended/man-pages/man-pages_3.32.bb33
-rw-r--r--meta/recipes-extended/man/man-1.6e/man-1.6e-lzma+xz-support.patch142
-rw-r--r--meta/recipes-extended/man/man-1.6e/man-1.6e-ro_usr.patch67
-rw-r--r--meta/recipes-extended/man/man-1.6e/man-1.6e-whatis2.patch37
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.5g-nonrootbuild.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.5g-nonrootbuild.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.5h1-gencat.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.5h1-gencat.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.5h1-make.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.5h1-make.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.5i2-initial.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.5i2-initial.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.5i2-newline.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.5i2-newline.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.5i2-overflow.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.5i2-overflow.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.5j-i18n.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.5j-i18n.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.5j-nocache.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.5j-nocache.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.5j-utf8.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.5j-utf8.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.5k-confpath.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.5k-confpath.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.5k-nonascii.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.5k-nonascii.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.5k-sofix.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.5k-sofix.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.5m2-bug11621.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.5m2-bug11621.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.5m2-buildroot.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.5m2-buildroot.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.5m2-multiple.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.5m2-multiple.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.5m2-no-color-for-printing.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.5m2-no-color-for-printing.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.5m2-sigpipe.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.5m2-sigpipe.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.5m2-tv_fhs.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.5m2-tv_fhs.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.6e-i18n_whatis.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.6e-i18n_whatis.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.6e-lzma+xz-support.patch120
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.6e-mandirs.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.6e-mandirs.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.6e-new_sections.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.6e-new_sections.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.6e-ro_usr.patch29
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.6e-security.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.6e-security.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.6e-use_i18n_vars_in_a_std_way.patch (renamed from meta/recipes-extended/man/man-1.6e/man-1.6e-use_i18n_vars_in_a_std_way.patch)0
-rw-r--r--meta/recipes-extended/man/man-1.6f/man-1.6e-whatis2.patch48
-rw-r--r--meta/recipes-extended/man/man-1.6f/man.1.gz (renamed from meta/recipes-extended/man/man-1.6e/man.1.gz)bin12323 -> 12323 bytes
-rw-r--r--meta/recipes-extended/man/man-1.6f/man.7.gz (renamed from meta/recipes-extended/man/man-1.6e/man.7.gz)bin6192 -> 6192 bytes
-rw-r--r--meta/recipes-extended/man/man-1.6f/manpath.5.gz (renamed from meta/recipes-extended/man/man-1.6e/manpath.5.gz)bin2133 -> 2133 bytes
-rw-r--r--meta/recipes-extended/man/man_1.6e.bb65
-rw-r--r--meta/recipes-extended/man/man_1.6f.bb65
-rw-r--r--meta/recipes-extended/mc/mc_4.7.3.bb16
-rw-r--r--meta/recipes-extended/mc/mc_4.7.5.bb20
-rw-r--r--meta/recipes-extended/msmtp/msmtp_1.4.23.bb21
-rw-r--r--meta/recipes-extended/parted/parted-2.3/no_check.patch (renamed from meta/recipes-extended/parted/parted-1.9.0/no_check.patch)0
-rw-r--r--meta/recipes-extended/parted/parted-2.3/syscalls.patch (renamed from meta/recipes-extended/parted/parted-1.9.0/syscalls.patch)0
-rw-r--r--meta/recipes-extended/parted/parted_1.9.0.bb20
-rw-r--r--meta/recipes-extended/parted/parted_2.3.bb20
-rw-r--r--meta/recipes-extended/perl/libconvert-asn1-perl_0.21.bb18
-rw-r--r--meta/recipes-extended/perl/libconvert-asn1-perl_0.22.bb20
-rw-r--r--meta/recipes-extended/polkit/polkit_0.99.bb4
-rw-r--r--meta/recipes-extended/sat-solver/sat-solver/cmake.patch43
-rw-r--r--meta/recipes-extended/sat-solver/sat-solver/db5.patch24
-rw-r--r--meta/recipes-extended/sat-solver/sat-solver/rpm5.patch9
-rw-r--r--meta/recipes-extended/sat-solver/sat-solver_git.bb7
-rw-r--r--meta/recipes-extended/shadow/shadow.inc2
-rw-r--r--meta/recipes-extended/shadow/shadow_4.1.4.2.bb2
-rw-r--r--meta/recipes-extended/sudo/sudo_1.7.4p4.bb11
-rw-r--r--meta/recipes-extended/sudo/sudo_1.7.4p6.bb11
-rw-r--r--meta/recipes-extended/tzcode/tzcode-native_2009r.bb2
-rw-r--r--meta/recipes-extended/zypper/zypper/dso_linking_change_build_fix.patch58
-rw-r--r--meta/recipes-extended/zypper/zypper/rpm5-flag.patch16
-rw-r--r--meta/recipes-extended/zypper/zypper_git.bb8
-rw-r--r--meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf-2.22.1/configure_fix.patch19
-rw-r--r--meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf-2.22.1/hardcoded_libtool.patch31
-rw-r--r--meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.22.1.bb70
-rw-r--r--meta/recipes-gnome/gnome/gconf-dbus_svn.bb2
-rw-r--r--meta/recipes-gnome/gnome/gnome-common_2.28.0.bb2
-rw-r--r--meta/recipes-gnome/gnome/gnome-doc-utils.inc9
-rw-r--r--meta/recipes-gnome/gnome/gnome-doc-utils_0.20.2.bb7
-rw-r--r--meta/recipes-gnome/gnome/gnome-doc-utils_0.20.4.bb7
-rw-r--r--meta/recipes-gnome/gnome/gnome-icon-theme_2.31.0.bb6
-rw-r--r--meta/recipes-gnome/gnome/gnome-keyring_2.32.1.bb4
-rw-r--r--meta/recipes-gnome/gnome/gnome-mime-data_2.18.0.bb4
-rw-r--r--meta/recipes-gnome/gnome/gobject-introspection_git.bb4
-rw-r--r--meta/recipes-gnome/gnome/libgdata_0.6.5.bb15
-rw-r--r--meta/recipes-gnome/gnome/libgdata_0.7.1.bb15
-rw-r--r--meta/recipes-gnome/gnome/metacity/crosscompile.patch60
-rw-r--r--meta/recipes-gnome/gnome/metacity_2.22.0.bb23
-rw-r--r--meta/recipes-gnome/gnome/metacity_2.30.3.bb29
-rw-r--r--meta/recipes-gnome/gthumb/gthumb_2.12.0.bb16
-rw-r--r--meta/recipes-gnome/gthumb/gthumb_2.12.1.bb16
-rw-r--r--meta/recipes-gnome/gtk+/gdk-pixbuf-csource-native_2.12.7.bb37
-rw-r--r--meta/recipes-gnome/gtk+/gdk-pixbuf-csource/reduce-dependencies.patch221
-rw-r--r--meta/recipes-gnome/gtk+/gtk+-2.20.1/disable-gio-png-sniff-test.diff97
-rw-r--r--meta/recipes-gnome/gtk+/gtk+-2.20.1/hardcoded_libtool.patch31
-rw-r--r--meta/recipes-gnome/gtk+/gtk+-2.20.1/no-demos.patch10
-rw-r--r--meta/recipes-gnome/gtk+/gtk+-2.22.1/0001-bgo-584832-Duplicate-the-exec-string-returned-by-gtk.patch (renamed from meta/recipes-gnome/gtk+/gtk+-2.20.1/0001-bgo-584832-Duplicate-the-exec-string-returned-by-gtk.patch)0
-rw-r--r--meta/recipes-gnome/gtk+/gtk+-2.22.1/cellrenderer-cairo.patch (renamed from meta/recipes-gnome/gtk+/gtk+-2.20.1/cellrenderer-cairo.patch)0
-rw-r--r--meta/recipes-gnome/gtk+/gtk+-2.22.1/configurefix.patch (renamed from meta/recipes-gnome/gtk+/gtk+-2.20.1/configurefix.patch)0
-rw-r--r--meta/recipes-gnome/gtk+/gtk+-2.22.1/entry-cairo.patch (renamed from meta/recipes-gnome/gtk+/gtk+-2.20.1/entry-cairo.patch)0
-rw-r--r--meta/recipes-gnome/gtk+/gtk+-2.22.1/hardcoded_libtool.patch31
-rw-r--r--meta/recipes-gnome/gtk+/gtk+-2.22.1/no-demos.patch13
-rw-r--r--meta/recipes-gnome/gtk+/gtk+-2.22.1/run-iconcache.patch (renamed from meta/recipes-gnome/gtk+/gtk+-2.20.1/run-iconcache.patch)0
-rw-r--r--meta/recipes-gnome/gtk+/gtk+-2.22.1/toggle-font.diff (renamed from meta/recipes-gnome/gtk+/gtk+-2.20.1/toggle-font.diff)0
-rw-r--r--meta/recipes-gnome/gtk+/gtk+-2.22.1/xsettings.patch (renamed from meta/recipes-gnome/gtk+/gtk+-2.20.1/xsettings.patch)0
-rw-r--r--meta/recipes-gnome/gtk+/gtk+.inc23
-rw-r--r--meta/recipes-gnome/gtk+/gtk+_2.12.7.bb2
-rw-r--r--meta/recipes-gnome/gtk+/gtk+_2.16.6.bb2
-rw-r--r--meta/recipes-gnome/gtk+/gtk+_2.20.1.bb61
-rw-r--r--meta/recipes-gnome/gtk+/gtk+_2.22.1.bb57
-rw-r--r--meta/recipes-gnome/gtk-theme-darkilouche/gtk-theme-darkilouche.bb23
-rw-r--r--meta/recipes-gnome/gtk-theme-darkilouche/gtk-theme-darkilouche/change-colours.diff13
-rw-r--r--meta/recipes-gnome/gtkhtml2/gtkhtml2_svn.bb2
-rw-r--r--meta/recipes-gnome/librsvg/librsvg-2.32.1/doc_Makefile.patch (renamed from meta/recipes-gnome/librsvg/librsvg-2.32.0/doc_Makefile.patch)0
-rw-r--r--meta/recipes-gnome/librsvg/librsvg_2.32.0.bb47
-rw-r--r--meta/recipes-gnome/librsvg/librsvg_2.32.1.bb48
-rw-r--r--meta/recipes-gnome/libunique/libunique_1.1.6.bb7
-rw-r--r--meta/recipes-gnome/tasks/task-poky-sdk-gmae.bb4
-rw-r--r--meta/recipes-gnome/tasks/task-poky-standalone-gmae-sdk-target.bb4
-rw-r--r--meta/recipes-graphics/cairo/cairo.inc12
-rw-r--r--meta/recipes-graphics/cairo/cairo_1.10.0.bb39
-rw-r--r--meta/recipes-graphics/cairo/cairo_1.10.2.bb53
-rw-r--r--meta/recipes-graphics/clutter/clutter-1.0_git.bb21
-rw-r--r--meta/recipes-graphics/clutter/clutter-1.4_1.4.2.bb25
-rw-r--r--meta/recipes-graphics/clutter/clutter-box2d.inc2
-rw-r--r--meta/recipes-graphics/clutter/clutter-box2d_git.bb6
-rw-r--r--meta/recipes-graphics/clutter/clutter-gst-1.0_git.bb17
-rw-r--r--meta/recipes-graphics/clutter/clutter-gst-1.4_git.bb18
-rw-r--r--meta/recipes-graphics/clutter/clutter-gst.inc4
-rw-r--r--meta/recipes-graphics/clutter/clutter-gst/enable_tests.patch15
-rw-r--r--meta/recipes-graphics/clutter/clutter-gtk-1.0_git.bb15
-rw-r--r--meta/recipes-graphics/clutter/clutter-gtk-1.4_git.bb17
-rw-r--r--meta/recipes-graphics/clutter/clutter-gtk.inc2
-rw-r--r--meta/recipes-graphics/clutter/clutter-gtk/disable_deprecated.patch9
-rw-r--r--meta/recipes-graphics/clutter/clutter-gtk/enable_tests.patch17
-rw-r--r--meta/recipes-graphics/clutter/clutter.inc2
-rw-r--r--meta/recipes-graphics/clutter/clutter/enable_tests-1.4.patch13
-rw-r--r--meta/recipes-graphics/clutter/clutter/test-conformance-fix.patch66
-rw-r--r--meta/recipes-graphics/clutter/table.inc2
-rw-r--r--meta/recipes-graphics/clutter/tidy.inc2
-rw-r--r--meta/recipes-graphics/directfb/directfb-1.4.6/mkdfiff.patch24
-rw-r--r--meta/recipes-graphics/directfb/directfb.inc69
-rw-r--r--meta/recipes-graphics/directfb/directfb_1.4.6.bb27
-rw-r--r--meta/recipes-graphics/directfb/files/directfb-1.2.x-fix-pkgconfig-cflags.patch47
-rw-r--r--meta/recipes-graphics/directfb/files/dont-use-linux-config.patch12
-rw-r--r--meta/recipes-graphics/drm/libdrm-2.4.23/installtests.patch (renamed from meta/recipes-graphics/drm/libdrm-2.4.22/installtests.patch)0
-rw-r--r--meta/recipes-graphics/drm/libdrm.inc7
-rw-r--r--meta/recipes-graphics/drm/libdrm_2.4.22.bb9
-rw-r--r--meta/recipes-graphics/drm/libdrm_2.4.23.bb9
-rw-r--r--meta/recipes-graphics/drm/libdrm_git.bb2
-rw-r--r--meta/recipes-graphics/fontconfig/fontconfig_2.8.0.bb12
-rw-r--r--meta/recipes-graphics/freetype/freetype-2.4.4/no-hardcode.patch (renamed from meta/recipes-graphics/freetype/freetype-2.4.3/no-hardcode.patch)0
-rw-r--r--meta/recipes-graphics/freetype/freetype_2.4.3.bb56
-rw-r--r--meta/recipes-graphics/freetype/freetype_2.4.4.bb56
-rw-r--r--meta/recipes-graphics/fstests/files/dso_linking_change_build_fix.patch72
-rw-r--r--meta/recipes-graphics/fstests/fstests_svn.bb7
-rw-r--r--meta/recipes-graphics/libfakekey/libfakekey_git.bb19
-rw-r--r--meta/recipes-graphics/libfakekey/libfakekey_svn.bb19
-rw-r--r--meta/recipes-graphics/libmatchbox/libmatchbox_git.bb17
-rw-r--r--meta/recipes-graphics/libmatchbox/libmatchbox_svn.bb17
-rw-r--r--meta/recipes-graphics/libsdl/libsdl-nativesdk_1.2.11.bb8
-rw-r--r--meta/recipes-graphics/matchbox-wm-2/matchbox-wm-2_svn.bb2
-rw-r--r--meta/recipes-graphics/matchbox-wm/matchbox-wm_0.9.5.bb32
-rw-r--r--meta/recipes-graphics/matchbox-wm/matchbox-wm_1.1.bb37
-rw-r--r--meta/recipes-graphics/matchbox-wm/matchbox-wm_git.bb44
-rw-r--r--meta/recipes-graphics/matchbox-wm/matchbox-wm_svn.bb44
-rw-r--r--meta/recipes-graphics/mesa/mesa-common.inc13
-rw-r--r--meta/recipes-graphics/mesa/mesa-demos/dso_linking_change_build_fix.patch23
-rw-r--r--meta/recipes-graphics/mesa/mesa-demos_8.0.1.bb9
-rw-r--r--meta/recipes-graphics/mesa/mesa-dri-glsl-native_7.8.2.bb27
-rw-r--r--meta/recipes-graphics/mesa/mesa-dri-glsl-native_7.9.bb25
-rw-r--r--meta/recipes-graphics/mesa/mesa-dri_7.10.bb38
-rw-r--r--meta/recipes-graphics/mesa/mesa-dri_7.8.2.bb59
-rw-r--r--meta/recipes-graphics/mesa/mesa-dri_7.9.bb38
-rw-r--r--meta/recipes-graphics/mutter/mutter.inc5
-rw-r--r--meta/recipes-graphics/mutter/mutter_git.bb4
-rw-r--r--meta/recipes-graphics/pango/pango.inc8
-rw-r--r--meta/recipes-graphics/tasks/task-poky-clutter.bb16
-rw-r--r--meta/recipes-graphics/tslib/tslib_1.0.bb6
-rw-r--r--meta/recipes-graphics/ttf-fonts/liberation-fonts_1.04.bb4
-rw-r--r--meta/recipes-graphics/ttf-fonts/liberation-fonts_1.06.bb5
-rw-r--r--meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb7
-rw-r--r--meta/recipes-graphics/x11-common/x11-common/etc/X11/Xsession2
-rw-r--r--meta/recipes-graphics/x11-common/x11-common_0.1.bb4
-rw-r--r--meta/recipes-graphics/xcb/libxcb.inc5
-rw-r--r--meta/recipes-graphics/xcb/libxcb_git.bb2
-rw-r--r--meta/recipes-graphics/xcb/xcb-proto.inc6
-rw-r--r--meta/recipes-graphics/xcb/xcb-proto_git.bb2
-rw-r--r--meta/recipes-graphics/xcb/xcb-util.inc9
-rw-r--r--meta/recipes-graphics/xorg-app/mkfontdir_1.0.5.bb14
-rw-r--r--meta/recipes-graphics/xorg-app/mkfontdir_1.0.6.bb21
-rw-r--r--meta/recipes-graphics/xorg-app/mkfontscale_1.0.7.bb12
-rw-r--r--meta/recipes-graphics/xorg-app/mkfontscale_1.0.8.bb18
-rw-r--r--meta/recipes-graphics/xorg-app/x11perf_1.5.2.bb7
-rw-r--r--meta/recipes-graphics/xorg-app/xauth_1.0.5.bb2
-rw-r--r--meta/recipes-graphics/xorg-app/xdpyinfo_1.1.0.bb14
-rw-r--r--meta/recipes-graphics/xorg-app/xdpyinfo_1.2.0.bb21
-rw-r--r--meta/recipes-graphics/xorg-app/xhost_1.0.3.bb10
-rw-r--r--meta/recipes-graphics/xorg-app/xhost_1.0.4.bb18
-rw-r--r--meta/recipes-graphics/xorg-app/xinit_1.2.1.bb11
-rw-r--r--meta/recipes-graphics/xorg-app/xinit_1.3.0.bb18
-rw-r--r--meta/recipes-graphics/xorg-app/xkbcomp/cross-compile-fix.patch35
-rw-r--r--meta/recipes-graphics/xorg-app/xkbcomp_1.1.1.bb14
-rw-r--r--meta/recipes-graphics/xorg-app/xkbcomp_1.2.0.bb19
-rw-r--r--meta/recipes-graphics/xorg-app/xmodmap_1.0.5.bb9
-rw-r--r--meta/recipes-graphics/xorg-app/xprop_1.1.0.bb13
-rw-r--r--meta/recipes-graphics/xorg-app/xprop_1.2.0.bb19
-rw-r--r--meta/recipes-graphics/xorg-app/xrandr_1.3.4.bb7
-rw-r--r--meta/recipes-graphics/xorg-app/xset_1.2.1.bb6
-rw-r--r--meta/recipes-graphics/xorg-app/xvinfo_1.0.2.bb9
-rw-r--r--meta/recipes-graphics/xorg-app/xvinfo_1.1.1.bb14
-rw-r--r--meta/recipes-graphics/xorg-app/xwininfo_1.1.0.bb11
-rw-r--r--meta/recipes-graphics/xorg-app/xwininfo_1.1.1.bb16
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.5.0.bb10
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.6.0.bb20
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-keyboard_1.4.0.bb10
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-keyboard_1.5.0.bb15
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-keyboard_git.bb7
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-mouse_1.6.0.bb8
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-mouse_git.bb8
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.2.1.bb10
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.3.0.bb22
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-synaptics_git.bb8
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-vmmouse_12.6.10.bb2
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-intel_2.13.0.bb15
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-intel_2.14.0.bb20
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb8
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-omapfb/omap-blacklist-tv-out.patch25
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-omapfb/omap-force-plain-mode.patch23
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-omapfb/omap-revert-set-CRTC-limit.patch32
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-omapfb/omap-revert-set-virtual-size.patch23
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-omapfb_git.bb10
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.3.0.bb8
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-vmware_11.0.3.bb4
-rw-r--r--meta/recipes-graphics/xorg-font/encodings_1.0.4.bb6
-rw-r--r--meta/recipes-graphics/xorg-font/font-alias_1.0.3.bb6
-rw-r--r--meta/recipes-graphics/xorg-font/font-util_1.2.0.bb6
-rw-r--r--meta/recipes-graphics/xorg-font/xorg-font-common.inc4
-rw-r--r--meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb3
-rw-r--r--meta/recipes-graphics/xorg-lib/libdmx_1.1.0.bb14
-rw-r--r--meta/recipes-graphics/xorg-lib/libdmx_1.1.1.bb21
-rw-r--r--meta/recipes-graphics/xorg-lib/libfontenc_1.1.0.bb5
-rw-r--r--meta/recipes-graphics/xorg-lib/libice_1.0.7.bb8
-rw-r--r--meta/recipes-graphics/xorg-lib/libpciaccess_0.12.0.bb5
-rw-r--r--meta/recipes-graphics/xorg-lib/libsm_1.2.0.bb10
-rw-r--r--meta/recipes-graphics/xorg-lib/libx11-diet_1.3.bb3
-rw-r--r--meta/recipes-graphics/xorg-lib/libx11-diet_git.bb3
-rw-r--r--meta/recipes-graphics/xorg-lib/libx11-trim_1.3.4.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libx11-trim_git.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libx11.inc6
-rw-r--r--meta/recipes-graphics/xorg-lib/libxau_1.0.6.bb6
-rw-r--r--meta/recipes-graphics/xorg-lib/libxcalibrate_git.bb5
-rw-r--r--meta/recipes-graphics/xorg-lib/libxcomposite_0.4.3.bb11
-rw-r--r--meta/recipes-graphics/xorg-lib/libxcursor_1.1.11.bb8
-rw-r--r--meta/recipes-graphics/xorg-lib/libxdamage_1.1.3.bb13
-rw-r--r--meta/recipes-graphics/xorg-lib/libxdmcp_1.1.0.bb8
-rw-r--r--meta/recipes-graphics/xorg-lib/libxext_1.2.0.bb10
-rw-r--r--meta/recipes-graphics/xorg-lib/libxext_git.bb11
-rw-r--r--meta/recipes-graphics/xorg-lib/libxfixes_4.0.5.bb7
-rw-r--r--meta/recipes-graphics/xorg-lib/libxfont_1.4.3.bb6
-rw-r--r--meta/recipes-graphics/xorg-lib/libxfontcache_1.0.5.bb6
-rw-r--r--meta/recipes-graphics/xorg-lib/libxft_2.2.0.bb15
-rw-r--r--meta/recipes-graphics/xorg-lib/libxi_1.4.0.bb7
-rw-r--r--meta/recipes-graphics/xorg-lib/libxi_git.bb8
-rw-r--r--meta/recipes-graphics/xorg-lib/libxinerama_1.1.1.bb6
-rw-r--r--meta/recipes-graphics/xorg-lib/libxkbfile_1.0.7.bb5
-rw-r--r--meta/recipes-graphics/xorg-lib/libxmu_1.1.0.bb10
-rw-r--r--meta/recipes-graphics/xorg-lib/libxp_1.0.0.bb18
-rw-r--r--meta/recipes-graphics/xorg-lib/libxp_1.0.1.bb21
-rw-r--r--meta/recipes-graphics/xorg-lib/libxpm_3.5.9.bb8
-rw-r--r--meta/recipes-graphics/xorg-lib/libxprintapputil_1.0.1.bb7
-rw-r--r--meta/recipes-graphics/xorg-lib/libxprintutil_1.0.1.bb7
-rw-r--r--meta/recipes-graphics/xorg-lib/libxrandr_1.3.1.bb8
-rw-r--r--meta/recipes-graphics/xorg-lib/libxrender_0.9.6.bb8
-rw-r--r--meta/recipes-graphics/xorg-lib/libxres_1.0.5.bb7
-rw-r--r--meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.1.bb10
-rw-r--r--meta/recipes-graphics/xorg-lib/libxt_1.0.9.bb12
-rw-r--r--meta/recipes-graphics/xorg-lib/libxtrap_1.0.0.bb6
-rw-r--r--meta/recipes-graphics/xorg-lib/libxtst_1.2.0.bb6
-rw-r--r--meta/recipes-graphics/xorg-lib/libxv_1.0.6.bb7
-rw-r--r--meta/recipes-graphics/xorg-lib/libxvmc_1.0.6.bb5
-rw-r--r--meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.2.bb8
-rw-r--r--meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.2.bb17
-rw-r--r--meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.3.bb21
-rw-r--r--meta/recipes-graphics/xorg-lib/libxxf86vm_1.1.1.bb7
-rw-r--r--meta/recipes-graphics/xorg-lib/pixman_0.20.0.bb18
-rw-r--r--meta/recipes-graphics/xorg-lib/pixman_0.20.2.bb25
-rw-r--r--meta/recipes-graphics/xorg-lib/xkeyboard-config_2.0.bb27
-rw-r--r--meta/recipes-graphics/xorg-lib/xkeyboard-config_2.1.bb34
-rw-r--r--meta/recipes-graphics/xorg-lib/xtrans_1.2.6.bb10
-rw-r--r--meta/recipes-graphics/xorg-proto/bigreqsproto_1.1.0.bb15
-rw-r--r--meta/recipes-graphics/xorg-proto/bigreqsproto_1.1.1.bb19
-rw-r--r--meta/recipes-graphics/xorg-proto/calibrateproto_git.bb5
-rw-r--r--meta/recipes-graphics/xorg-proto/compositeproto_0.4.2.bb20
-rw-r--r--meta/recipes-graphics/xorg-proto/compositeproto_0.4.bb11
-rw-r--r--meta/recipes-graphics/xorg-proto/damageproto_1.2.1.bb7
-rw-r--r--meta/recipes-graphics/xorg-proto/dmxproto_2.3.1.bb19
-rw-r--r--meta/recipes-graphics/xorg-proto/dmxproto_2.3.bb11
-rw-r--r--meta/recipes-graphics/xorg-proto/dri2proto_2.3.bb8
-rw-r--r--meta/recipes-graphics/xorg-proto/dri2proto_git.bb8
-rw-r--r--meta/recipes-graphics/xorg-proto/evieext_1.1.0.bb6
-rw-r--r--meta/recipes-graphics/xorg-proto/fixesproto_4.1.2.bb8
-rw-r--r--meta/recipes-graphics/xorg-proto/fontcacheproto_0.1.3.bb6
-rw-r--r--meta/recipes-graphics/xorg-proto/fontsproto_2.1.1.bb6
-rw-r--r--meta/recipes-graphics/xorg-proto/glproto_1.4.12.bb6
-rw-r--r--meta/recipes-graphics/xorg-proto/inputproto_2.0.1.bb22
-rw-r--r--meta/recipes-graphics/xorg-proto/inputproto_2.0.bb15
-rw-r--r--meta/recipes-graphics/xorg-proto/inputproto_git.bb6
-rw-r--r--meta/recipes-graphics/xorg-proto/kbproto_1.0.5.bb6
-rw-r--r--meta/recipes-graphics/xorg-proto/printproto_1.0.4.bb12
-rw-r--r--meta/recipes-graphics/xorg-proto/printproto_1.0.5.bb17
-rw-r--r--meta/recipes-graphics/xorg-proto/randrproto_1.3.2.bb6
-rw-r--r--meta/recipes-graphics/xorg-proto/recordproto_1.14.1.bb6
-rw-r--r--meta/recipes-graphics/xorg-proto/renderproto_0.11.1.bb21
-rw-r--r--meta/recipes-graphics/xorg-proto/renderproto_0.11.bb14
-rw-r--r--meta/recipes-graphics/xorg-proto/resourceproto_1.1.0.bb11
-rw-r--r--meta/recipes-graphics/xorg-proto/resourceproto_1.1.1.bb19
-rw-r--r--meta/recipes-graphics/xorg-proto/scrnsaverproto_1.2.0.bb12
-rw-r--r--meta/recipes-graphics/xorg-proto/scrnsaverproto_1.2.1.bb21
-rw-r--r--meta/recipes-graphics/xorg-proto/trapproto_3.4.3.bb6
-rw-r--r--meta/recipes-graphics/xorg-proto/videoproto_2.3.1.bb5
-rw-r--r--meta/recipes-graphics/xorg-proto/xcmiscproto_1.2.1.bb6
-rw-r--r--meta/recipes-graphics/xorg-proto/xextproto_7.1.2.bb9
-rw-r--r--meta/recipes-graphics/xorg-proto/xf86bigfontproto_1.2.0.bb6
-rw-r--r--meta/recipes-graphics/xorg-proto/xf86dgaproto_2.1.bb7
-rw-r--r--meta/recipes-graphics/xorg-proto/xf86driproto_2.1.0.bb11
-rw-r--r--meta/recipes-graphics/xorg-proto/xf86driproto_2.1.1.bb18
-rw-r--r--meta/recipes-graphics/xorg-proto/xf86miscproto_0.9.3.bb7
-rw-r--r--meta/recipes-graphics/xorg-proto/xf86rushproto_1.1.2.bb6
-rw-r--r--meta/recipes-graphics/xorg-proto/xf86vidmodeproto_2.3.1.bb18
-rw-r--r--meta/recipes-graphics/xorg-proto/xf86vidmodeproto_2.3.bb12
-rw-r--r--meta/recipes-graphics/xorg-proto/xineramaproto_1.2.1.bb18
-rw-r--r--meta/recipes-graphics/xorg-proto/xineramaproto_1.2.bb11
-rw-r--r--meta/recipes-graphics/xorg-proto/xproto_7.0.19.bb13
-rw-r--r--meta/recipes-graphics/xorg-proto/xproto_7.0.20.bb19
-rw-r--r--meta/recipes-graphics/xorg-util/gccmakedep_1.0.2.bb10
-rw-r--r--meta/recipes-graphics/xorg-util/imake_1.0.4.bb13
-rw-r--r--meta/recipes-graphics/xorg-util/makedepend_1.0.3.bb10
-rw-r--r--meta/recipes-graphics/xorg-util/util-macros_1.11.0.bb4
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-kdrive.inc8
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-kdrive_1.7.99.2.bb2
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xf86-common.inc3
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xf86-dri-lite_1.9.2.bb23
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xf86-dri-lite_1.9.3.bb22
-rw-r--r--meta/recipes-graphics/xrestop/xrestop_0.4.bb3
-rw-r--r--meta/recipes-graphics/xtscal/xtscal/dso_linking_change_build_fix.patch25
-rw-r--r--meta/recipes-graphics/xtscal/xtscal_0.6.3.bb8
-rw-r--r--meta/recipes-graphics/xvideo-tests/xvideo-tests_svn.bb2
-rw-r--r--meta/recipes-kernel/blktrace/blktrace/blktrace-makefile.patch4
-rw-r--r--meta/recipes-kernel/blktrace/blktrace/dso_linking_change_build_fix.patch26
-rw-r--r--meta/recipes-kernel/blktrace/blktrace_git.bb5
-rw-r--r--meta/recipes-kernel/dtc/dtc-native_git.bb3
-rw-r--r--meta/recipes-kernel/dtc/dtc/remove_space_opt.patch16
-rw-r--r--meta/recipes-kernel/dtc/dtc_git.bb1
-rw-r--r--meta/recipes-kernel/dtc/dtc_git.inc2
-rw-r--r--meta/recipes-kernel/kern-tools/kern-tools-native_git.bb6
-rw-r--r--meta/recipes-kernel/linux-firmware/linux-firmware_git.bb2
-rw-r--r--meta/recipes-kernel/linux-libc-headers/linux-libc-headers-yocto_git.bb9
-rw-r--r--meta/recipes-kernel/linux/linux-dtb.inc27
-rw-r--r--meta/recipes-kernel/linux/linux-dummy.bb5
-rw-r--r--meta/recipes-kernel/linux/linux-dummy/COPYING.GPL339
-rw-r--r--meta/recipes-kernel/linux/linux-igep_2.6.33.5.bb1
-rw-r--r--meta/recipes-kernel/linux/linux-omap2_git.bb2
-rw-r--r--meta/recipes-kernel/linux/linux-omap3-pm_git.bb2
-rw-r--r--meta/recipes-kernel/linux/linux-omap3_git.bb2
-rw-r--r--meta/recipes-kernel/linux/linux-rp-2.6.23/defconfig-bootcdx861579
-rw-r--r--meta/recipes-kernel/linux/linux-rp-2.6.24/defconfig-bootcdx861994
-rw-r--r--meta/recipes-kernel/linux/linux-rp-2.6.26/defconfig-bootcdx861994
-rw-r--r--meta/recipes-kernel/linux/linux-rp.inc2
-rw-r--r--meta/recipes-kernel/linux/linux-rp_2.6.23.bb1
-rw-r--r--meta/recipes-kernel/linux/linux-rp_2.6.24.bb1
-rw-r--r--meta/recipes-kernel/linux/linux-rp_2.6.26.bb1
-rw-r--r--meta/recipes-kernel/linux/linux-tools.inc4
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-stable_git.bb24
-rw-r--r--meta/recipes-kernel/linux/linux-yocto.inc8
-rw-r--r--meta/recipes-kernel/linux/linux-yocto/tools-perf-no-scripting.patch49
-rw-r--r--meta/recipes-kernel/linux/linux-yocto_git.bb31
-rw-r--r--meta/recipes-kernel/linux/linux.inc27
-rw-r--r--meta/recipes-kernel/linux/linux_2.6.33.2.bb3
-rw-r--r--meta/recipes-kernel/lttng/lttng-ust_0.11.bb30
-rw-r--r--meta/recipes-kernel/lttng/lttng-ust_0.8.bb26
-rw-r--r--meta/recipes-kernel/lttng/lttng-viewer_0.12.35.bb34
-rw-r--r--meta/recipes-kernel/lttng/lttng-viewer_0.12.36.bb34
-rw-r--r--meta/recipes-kernel/modutils/files/gcc4.patch57
-rw-r--r--meta/recipes-kernel/oprofile/oprofile_0.9.6.bb6
-rw-r--r--meta/recipes-kernel/oprofile/oprofile_cvs.bb6
-rw-r--r--meta/recipes-kernel/oprofile/oprofileui-svn.inc7
-rw-r--r--meta/recipes-kernel/oprofile/oprofileui/dso_linking_change_build_fix.patch25
-rw-r--r--meta/recipes-kernel/systemtap/systemtap_git.bb28
-rw-r--r--meta/recipes-kernel/trace-cmd/kernelshark_git.bb21
-rw-r--r--meta/recipes-kernel/trace-cmd/trace-cmd_git.bb19
-rw-r--r--meta/recipes-kernel/update-modules/update-modules_1.0.bb6
-rw-r--r--meta/recipes-multimedia/gstreamer/gst-openmax_0.10.1.bb4
-rw-r--r--meta/recipes-multimedia/gstreamer/gst-plugins-base-0.10.31/gst-plugins-base-tremor.patch (renamed from meta/recipes-multimedia/gstreamer/gst-plugins-base-0.10.30/gst-plugins-base-tremor.patch)0
-rw-r--r--meta/recipes-multimedia/gstreamer/gst-plugins-base_0.10.30.bb27
-rw-r--r--meta/recipes-multimedia/gstreamer/gst-plugins-base_0.10.31.bb27
-rw-r--r--meta/recipes-multimedia/gstreamer/gst-plugins-good_0.10.25.bb22
-rw-r--r--meta/recipes-multimedia/gstreamer/gst-plugins-good_0.10.26.bb22
-rw-r--r--meta/recipes-multimedia/gstreamer/gst-plugins.inc2
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer-0.10.30/make-382.patch32
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer-0.10.31/check_fix.patch (renamed from meta/recipes-multimedia/gstreamer/gstreamer-0.10.30/check_fix.patch)0
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer-0.10.31/gst-inspect-check-error.patch (renamed from meta/recipes-multimedia/gstreamer/gstreamer-0.10.30/gst-inspect-check-error.patch)0
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer-0.10.31/gstregistrybinary.c (renamed from meta/recipes-multimedia/gstreamer/gstreamer-0.10.30/gstregistrybinary.c)0
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer-0.10.31/gstregistrybinary.h (renamed from meta/recipes-multimedia/gstreamer/gstreamer-0.10.30/gstregistrybinary.h)0
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer_0.10.30.bb35
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer_0.10.31.bb34
-rw-r--r--meta/recipes-multimedia/libogg/libogg_1.2.1.bb19
-rw-r--r--meta/recipes-multimedia/libogg/libogg_1.2.2.bb19
-rw-r--r--meta/recipes-multimedia/musicbrainz/libmusicbrainz_3.0.3.bb4
-rw-r--r--meta/recipes-multimedia/pulseaudio/libcanberra/autoconf_version.patch38
-rw-r--r--meta/recipes-multimedia/pulseaudio/libcanberra/nofallbackfix.patch16
-rw-r--r--meta/recipes-multimedia/pulseaudio/libcanberra_0.10.bb27
-rw-r--r--meta/recipes-multimedia/pulseaudio/libcanberra_0.26.bb25
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.22/armv4+v5asm.patch (renamed from meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.21/armv4+v5asm.patch)0
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.22/autoconf_version.patch (renamed from meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.21/autoconf_version.patch)0
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.22/buildfix.patch (renamed from meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.21/buildfix.patch)0
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.22/configure_silent_rules.patch (renamed from meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.21/configure_silent_rules.patch)0
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.22/gcc4-compile-fix.patch (renamed from meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.21/gcc4-compile-fix.patch)0
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.22/tls_m4.patch (renamed from meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.21/tls_m4.patch)0
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.22/volatiles.04_pulse (renamed from meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.21/volatiles.04_pulse)0
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio_0.9.21.bb28
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio_0.9.22.bb28
-rw-r--r--meta/recipes-multimedia/tremor/tremor_20101027.bb20
-rw-r--r--meta/recipes-multimedia/tremor/tremor_20101121.bb20
-rw-r--r--meta/recipes-qt/meta/meta-toolchain-qte.bb26
-rw-r--r--meta/recipes-qt/qt-apps/fotowall_0.9.bb4
-rw-r--r--meta/recipes-qt/qt-apps/qmmp_0.4.1.bb35
-rw-r--r--meta/recipes-qt/qt-apps/qmmp_0.4.3.bb46
-rw-r--r--meta/recipes-qt/qt-apps/quicky_0.4.bb3
-rw-r--r--meta/recipes-qt/qt4/files/compile.test-lflags.patch13
-rw-r--r--meta/recipes-qt/qt4/files/configure-lflags.patch13
-rw-r--r--meta/recipes-qt/qt4/files/configure-paths.patch21
-rw-r--r--meta/recipes-qt/qt4/files/qmake-exists-check.patch18
-rw-r--r--meta/recipes-qt/qt4/files/qte.sh7
-rw-r--r--meta/recipes-qt/qt4/files/qthelp-lib-qtclucene.patch86
-rw-r--r--meta/recipes-qt/qt4/qt-4.6.3.inc18
-rw-r--r--meta/recipes-qt/qt4/qt-4.7.1.inc58
-rw-r--r--meta/recipes-qt/qt4/qt-4.7.1/0001-Added-Openembedded-crossarch-option.patch44
-rw-r--r--meta/recipes-qt/qt4/qt-4.7.1/g++.conf60
-rw-r--r--meta/recipes-qt/qt4/qt-4.7.1/hack-out-pg2-4.7.0.patch19
-rw-r--r--meta/recipes-qt/qt4/qt-4.7.1/linux.conf66
-rw-r--r--meta/recipes-qt/qt4/qt4-embedded.inc34
-rw-r--r--meta/recipes-qt/qt4/qt4-embedded_4.6.3.bb9
-rw-r--r--meta/recipes-qt/qt4/qt4-embedded_4.7.1.bb10
-rw-r--r--meta/recipes-qt/qt4/qt4-tools-native.inc16
-rw-r--r--meta/recipes-qt/qt4/qt4-tools-native_4.6.3.bb12
-rw-r--r--meta/recipes-qt/qt4/qt4-tools-native_4.7.1.bb13
-rw-r--r--meta/recipes-qt/qt4/qt4-tools-nativesdk.inc111
-rw-r--r--meta/recipes-qt/qt4/qt4-tools-nativesdk_4.6.3.bb6
-rw-r--r--meta/recipes-qt/qt4/qt4-tools-nativesdk_4.7.1.bb6
-rw-r--r--meta/recipes-qt/qt4/qt4-x11-free.inc9
-rw-r--r--meta/recipes-qt/qt4/qt4-x11-free_4.6.3.bb7
-rw-r--r--meta/recipes-qt/qt4/qt4-x11-free_4.7.1.bb12
-rw-r--r--meta/recipes-qt/qt4/qt4.inc84
-rw-r--r--meta/recipes-qt/qt4/qt4_arch.inc25
-rw-r--r--meta/recipes-qt/tasks/task-poky-qt.bb6
-rw-r--r--meta/recipes-qt/tasks/task-qte-toolchain-host.bb7
-rw-r--r--meta/recipes-qt/tasks/task-qte-toolchain-target.bb35
-rw-r--r--meta/recipes-sato/eds/eds-dbus/old-gdk-api.patch17
-rw-r--r--meta/recipes-sato/eds/eds-dbus_git.bb1
-rw-r--r--meta/recipes-sato/eds/eds-tools_bzr.bb4
-rw-r--r--meta/recipes-sato/gaku/gaku_svn.bb8
-rw-r--r--meta/recipes-sato/gtk-engines/gtk-sato-engine_svn.bb2
-rw-r--r--meta/recipes-sato/images/poky-image-sato-dev.bb9
-rw-r--r--meta/recipes-sato/images/poky-image-sato-sdk-directdisk.bb9
-rw-r--r--meta/recipes-sato/images/poky-image-sato-sdk-live.bb11
-rw-r--r--meta/recipes-sato/images/poky-image-sato-sdk.bb (renamed from meta/recipes-sato/images/poky-image-sdk.bb)0
-rw-r--r--meta/recipes-sato/images/poky-image-sdk-directdisk.bb9
-rw-r--r--meta/recipes-sato/images/poky-image-sdk-live.bb11
-rw-r--r--meta/recipes-sato/leafpad/leafpad_0.8.17.bb31
-rw-r--r--meta/recipes-sato/leafpad/leafpad_0.8.18.1.bb31
-rw-r--r--meta/recipes-sato/libowl/libowl_svn.bb2
-rw-r--r--meta/recipes-sato/matchbox-config-gtk/matchbox-config-gtk_git.bb21
-rw-r--r--meta/recipes-sato/matchbox-config-gtk/matchbox-config-gtk_svn.bb20
-rw-r--r--meta/recipes-sato/matchbox-desktop-sato/matchbox-desktop-sato_svn.bb2
-rw-r--r--meta/recipes-sato/matchbox-desktop/files/dso_linking_change_build_fix.patch26
-rw-r--r--meta/recipes-sato/matchbox-desktop/matchbox-desktop_2.0.bb5
-rw-r--r--meta/recipes-sato/matchbox-desktop/matchbox-desktop_git.bb23
-rw-r--r--meta/recipes-sato/matchbox-desktop/matchbox-desktop_svn.bb22
-rw-r--r--meta/recipes-sato/matchbox-keyboard/files/single-instance.patch22
-rw-r--r--meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_git.bb61
-rw-r--r--meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_svn.bb60
-rw-r--r--meta/recipes-sato/matchbox-panel-2/matchbox-panel-2_git.bb36
-rw-r--r--meta/recipes-sato/matchbox-panel-2/matchbox-panel-2_svn.bb36
-rw-r--r--meta/recipes-sato/matchbox-sato/matchbox-session-sato_0.1.bb4
-rw-r--r--meta/recipes-sato/matchbox-stroke/files/dso_linking_change_build_fix.patch36
-rw-r--r--meta/recipes-sato/matchbox-stroke/files/single-instance.patch19
-rw-r--r--meta/recipes-sato/matchbox-stroke/matchbox-stroke_git.bb25
-rw-r--r--meta/recipes-sato/matchbox-stroke/matchbox-stroke_svn.bb22
-rw-r--r--meta/recipes-sato/matchbox-terminal/matchbox-terminal_git.bb18
-rw-r--r--meta/recipes-sato/matchbox-terminal/matchbox-terminal_svn.bb18
-rw-r--r--meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato-2/png_rename.patch14
-rw-r--r--meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato-2_svn.bb6
-rw-r--r--meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato_svn.bb2
-rw-r--r--meta/recipes-sato/owl-video-widget/libowl-av_svn.bb8
-rw-r--r--meta/recipes-sato/owl-video-widget/owl-video_svn.bb4
-rw-r--r--meta/recipes-sato/pimlico/contacts.inc2
-rw-r--r--meta/recipes-sato/pimlico/contacts_0.9.bb2
-rw-r--r--meta/recipes-sato/pimlico/contacts_git.bb2
-rw-r--r--meta/recipes-sato/pimlico/dates.inc2
-rw-r--r--meta/recipes-sato/pimlico/dates/dso_linking_change_build_fix.patch44
-rw-r--r--meta/recipes-sato/pimlico/dates_0.4.8.bb2
-rw-r--r--meta/recipes-sato/pimlico/dates_git.bb5
-rw-r--r--meta/recipes-sato/puzzles/oh-puzzles_svn.bb2
-rw-r--r--meta/recipes-sato/puzzles/puzzles_r9023.bb60
-rw-r--r--meta/recipes-sato/puzzles/puzzles_r9076.bb61
-rw-r--r--meta/recipes-sato/screenshot/files/dso_linking_change_build_fix.patch49
-rw-r--r--meta/recipes-sato/screenshot/screenshot_svn.bb6
-rw-r--r--meta/recipes-sato/settings-daemon/files/dso_linking_change_build_fix.patch29
-rw-r--r--meta/recipes-sato/settings-daemon/settings-daemon_git.bb27
-rw-r--r--meta/recipes-sato/settings-daemon/settings-daemon_svn.bb26
-rw-r--r--meta/recipes-sato/web/web-webkit_svn.bb5
-rw-r--r--meta/recipes-sato/web/web_svn.bb2
-rw-r--r--meta/recipes-sato/webkit/files/GNUmakefile.am692
-rw-r--r--meta/recipes-sato/webkit/files/Makefile2
-rwxr-xr-xmeta/recipes-sato/webkit/files/autogen.sh2
-rw-r--r--meta/recipes-sato/webkit/files/configure.ac164
-rw-r--r--meta/recipes-sato/webkit/files/nodolt.patch16
-rw-r--r--meta/recipes-sato/webkit/webkit-gtk_svn.bb8
-rw-r--r--meta/recipes-support/apr/apr-util_1.3.10.bb35
-rw-r--r--meta/recipes-support/apr/apr-util_1.3.4.bb30
-rw-r--r--meta/recipes-support/apr/apr/buildconf_fix.patch25
-rw-r--r--meta/recipes-support/apr/apr/cleanup.patch9
-rw-r--r--meta/recipes-support/apr/apr_1.3.3.bb37
-rw-r--r--meta/recipes-support/apr/apr_1.4.2.bb50
-rw-r--r--meta/recipes-support/attr/acl.inc2
-rw-r--r--meta/recipes-support/attr/acl_2.2.49.bb2
-rw-r--r--meta/recipes-support/attr/attr.inc2
-rw-r--r--meta/recipes-support/attr/attr_2.4.44.bb2
-rw-r--r--meta/recipes-support/beecrypt/beecrypt/disable-icu-check.patch12
-rw-r--r--meta/recipes-support/beecrypt/beecrypt/fix-security.patch51
-rw-r--r--meta/recipes-support/beecrypt/beecrypt/x64fix.patch23
-rw-r--r--meta/recipes-support/beecrypt/beecrypt_4.1.2.bb26
-rw-r--r--meta/recipes-support/beecrypt/beecrypt_4.2.1.bb27
-rw-r--r--meta/recipes-support/boost/boost-jam-native.inc2
-rw-r--r--meta/recipes-support/createrepo/createrepo/fix-native-install.patch161
-rw-r--r--meta/recipes-support/createrepo/createrepo_0.4.11.bb20
-rw-r--r--meta/recipes-support/db/db/arm-thumb-mutex.patch36
-rw-r--r--meta/recipes-support/db/db/arm-thumb-mutex_db5.patch36
-rw-r--r--meta/recipes-support/db/db/configure_fixes.patch18
-rw-r--r--meta/recipes-support/db/db_4.2.52.bb100
-rw-r--r--meta/recipes-support/db/db_4.3.29.bb89
-rw-r--r--meta/recipes-support/db/db_5.1.19.bb104
-rw-r--r--meta/recipes-support/enchant/enchant_1.6.0.bb4
-rw-r--r--meta/recipes-support/gnutls/gnutls-2.10.4/configure-fix.patch (renamed from meta/recipes-support/gnutls/gnutls-2.8.6/configure-fix.patch)0
-rw-r--r--meta/recipes-support/gnutls/gnutls-2.10.4/gnutls-openssl.patch (renamed from meta/recipes-support/gnutls/gnutls-2.8.6/gnutls-openssl.patch)0
-rw-r--r--meta/recipes-support/gnutls/gnutls-2.10.4/gnutls-texinfo-euro.patch (renamed from meta/recipes-support/gnutls/gnutls-2.8.6/gnutls-texinfo-euro.patch)0
-rw-r--r--meta/recipes-support/gnutls/gnutls_2.10.4.bb10
-rw-r--r--meta/recipes-support/gnutls/gnutls_2.8.6.bb10
-rw-r--r--meta/recipes-support/gnutls/libtasn1_2.8.bb22
-rw-r--r--meta/recipes-support/gnutls/libtasn1_2.9.bb22
-rw-r--r--meta/recipes-support/hal/hal.inc2
-rw-r--r--meta/recipes-support/hal/hal_0.5.14.bb2
-rw-r--r--meta/recipes-support/hal/hal_git.bb2
-rw-r--r--meta/recipes-support/libfm/libfm-0.1.14/add_missing.patch50
-rw-r--r--meta/recipes-support/libfm/libfm_0.1.14.bb5
-rw-r--r--meta/recipes-support/libgdbus/libgdbus_git.bb22
-rw-r--r--meta/recipes-support/liburcu/liburcu_0.4.8.bb27
-rw-r--r--meta/recipes-support/liburcu/liburcu_0.5.2.bb27
-rw-r--r--meta/recipes-support/lzo/lzo-2.03/autofoo.patch17
-rw-r--r--meta/recipes-support/lzo/lzo-2.04/acinclude.m4 (renamed from meta/recipes-support/lzo/lzo-2.03/acinclude.m4)0
-rw-r--r--meta/recipes-support/lzo/lzo-2.04/autoconf.patch19
-rw-r--r--meta/recipes-support/lzo/lzo_2.03.bb25
-rw-r--r--meta/recipes-support/lzo/lzo_2.04.bb26
-rw-r--r--meta/recipes-tbd/consolekit/consolekit_0.4.3.bb21
-rw-r--r--meta/site/mips-common3
-rw-r--r--meta/site/x86_64-linux8
-rwxr-xr-xpoky-init-build-env23
-rwxr-xr-xscripts/bitbake38
-rwxr-xr-xscripts/contrib/bbvars.py186
-rwxr-xr-xscripts/poky-env-internal106
-rwxr-xr-xscripts/poky-extract-sdk5
-rwxr-xr-xscripts/poky-qemu25
-rwxr-xr-xscripts/poky-setup-builddir113
-rwxr-xr-xscripts/poky-setup-rpmrepo89
-rw-r--r--scripts/qemuimage-testlib127
-rwxr-xr-xscripts/qemuimage-tests/sanity/compiler52
-rwxr-xr-xscripts/qemuimage-tests/sanity/connman52
-rwxr-xr-xscripts/qemuimage-tests/sanity/dmesg2
-rwxr-xr-xscripts/qemuimage-tests/sanity/rpm_query52
-rwxr-xr-xscripts/qemuimage-tests/sanity/scp2
-rwxr-xr-xscripts/qemuimage-tests/sanity/shutdown8
-rwxr-xr-xscripts/qemuimage-tests/sanity/ssh2
-rwxr-xr-xscripts/qemuimage-tests/sanity/zypper_help52
-rwxr-xr-xscripts/qemuimage-tests/sanity/zypper_search52
-rw-r--r--scripts/qemuimage-tests/scenario/qemuarm/poky-image-lsb4
-rw-r--r--scripts/qemuimage-tests/scenario/qemuarm/poky-image-sato5
-rw-r--r--scripts/qemuimage-tests/scenario/qemuarm/poky-image-sdk6
-rw-r--r--scripts/qemuimage-tests/scenario/qemumips/poky-image-lsb4
-rw-r--r--scripts/qemuimage-tests/scenario/qemumips/poky-image-sato5
-rw-r--r--scripts/qemuimage-tests/scenario/qemumips/poky-image-sdk6
-rw-r--r--scripts/qemuimage-tests/scenario/qemuppc/poky-image-lsb4
-rw-r--r--scripts/qemuimage-tests/scenario/qemuppc/poky-image-sato5
-rw-r--r--scripts/qemuimage-tests/scenario/qemuppc/poky-image-sdk6
-rw-r--r--scripts/qemuimage-tests/scenario/qemux86-64/poky-image-lsb4
-rw-r--r--scripts/qemuimage-tests/scenario/qemux86-64/poky-image-sato5
-rw-r--r--scripts/qemuimage-tests/scenario/qemux86-64/poky-image-sdk6
-rw-r--r--scripts/qemuimage-tests/scenario/qemux86/poky-image-lsb4
-rw-r--r--scripts/qemuimage-tests/scenario/qemux86/poky-image-sato5
-rw-r--r--scripts/qemuimage-tests/scenario/qemux86/poky-image-sdk6
-rw-r--r--scripts/qemuimage-tests/tools/compiler_test.sh137
-rw-r--r--scripts/qemuimage-tests/tools/connman_test.sh55
-rw-r--r--scripts/qemuimage-tests/tools/rpm_test.sh45
-rw-r--r--scripts/qemuimage-tests/tools/zypper_test.sh45
-rwxr-xr-xscripts/rpm2cpio.sh53
-rwxr-xr-xscripts/send-pull-request99
1380 files changed, 95350 insertions, 61844 deletions
diff --git a/README.hardware b/README.hardware
index fe384b37d2..bc5b5b8afd 100644
--- a/README.hardware
+++ b/README.hardware
@@ -26,6 +26,7 @@ The following boards are supported by Poky:
* Marvell PXA3xx Zylonite (zylonite)
* Logic iMX31 Lite Kit (mx31litekit)
* Phytec phyCORE-iMX31 (mx31phy)
+ * Texas Instruments Beagleboard (beagleboard)
For more information see board's section below. The Poky MACHINE setting
corresponding to the board is given in brackets.
@@ -45,14 +46,6 @@ The following consumer devices are supported by Poky:
For more information see board's section below. The Poky MACHINE setting
corresponding to the board is given in brackets.
-Poky Boot CD (bootcdx86)
-========================
-
-The Poky boot CD iso images are designed as a demonstration of the Poky
-environment and to show the versatile image formats Poky can generate. It will
-run on Pentium2 or greater PC style computers. The iso image can be
-burnt to CD and then booted from.
-
Hardware Reference Boards
=========================
@@ -318,9 +311,9 @@ On the first partition you need three files:
* a kernel renamed to "zImage"
* a default.txt which contains:
-set kernel "zImage"
-set mtype "855"
-set cmdline "root=/dev/mmcblk0p2 rw console=ttyS0,115200n8 console=tty0 rootdelay=5 fbcon=rotate:1"
+set kernel "zImage"
+set mtype "855"
+set cmdline "root=/dev/mmcblk0p2 rw console=ttyS0,115200n8 console=tty0 rootdelay=5 fbcon=rotate:1"
boot2
On the second parition the root file system is extracted as root. A different
@@ -509,3 +502,73 @@ USB Device:
For more details on the USB-ZIP scenario, see the syslinux documentation:
http://git.kernel.org/?p=boot/syslinux/syslinux.git;a=blob_plain;f=doc/usbkey.txt;hb=HEAD
+
+
+Texas Instruments Beagleboard (beagleboard)
+===========================================
+
+The Beagleboard is an ARM Cortex-A8 development board with USB, DVI-D, S-Video,
+2D/3D accelerated graphics, audio, serial, JTAG, and SD/MMC. The xM adds a
+faster CPU, more RAM, an ethernet port, more USB ports, microSD, and removes
+the NAND flash. The beagleboard MACHINE is tested on the following platforms:
+
+ o Beagleboard xM
+
+TODO: need someone with a Beagleboard C4 to verify these instructions.
+
+Due to the lack of NAND on the xM, the install and boot process varies a bit
+between boards. The C4 can run the x-loader and u-boot binaries from NAND or
+the SD, while the xM can only run them from the SD. The following instructions
+apply to both the C4 and the xM, but te C4 can skip step 2 (as noted below),
+and may require modification of the NAND environment.
+
+ 1. Partition and format an SD card:
+ # fdisk -lu /dev/mmcblk0
+
+ Disk /dev/mmcblk0: 3951 MB, 3951034368 bytes
+ 255 heads, 63 sectors/track, 480 cylinders, total 7716864 sectors
+ Units = sectors of 1 * 512 = 512 bytes
+
+ Device Boot Start End Blocks Id System
+ /dev/mmcblk0p1 * 63 144584 72261 c Win95 FAT32 (LBA)
+ /dev/mmcblk0p2 144585 465884 160650 83 Linux
+
+ # mkfs.vfat -F 16 -n "boot" /dev/mmcblk0p1
+ # mke2fs -j -L "root" /dev/mmcblk0p2
+
+ The following assumes the SD card partition 1 and 2 are mounted at
+ /media/boot and /media/root respectively. The files referenced here
+ are made available after the build in build/tmp/deploy/images.
+
+ 2. Install the boot loaders
+ This step can be omitted for the C4 as it can have the x-loader and
+ u-boot installed in NAND.
+
+ # cp MLO-beagleboard /media/boot/MLO
+ # cp u-boot-beagleboard.bin /media/boot/u-boot.bin
+
+ 3. Install the root filesystem
+ # tar x -C /media/root -f poky-image-$IMAGE_TYPE-beagleboard.tar.bz2
+ # tar x -C /media/root -f modules-$KERNEL_VERSION-beagleboard.tgz
+
+ 4. Install the kernel uImage
+ # cp uImage-beagleboard.bin /media/boot/uImage
+
+ 5. Prepare a u-boot script to simplify the boot process
+ The Beagleboard can be made to boot at this point from the u-boot command
+ shell. To automate this process, generate a user.scr script as follows.
+
+ Install uboot-mkimage (from uboot-mkimage on Ubuntu or uboot-tools on Fedora).
+
+ Prepare a script config:
+
+ # (cat << EOF
+ setenv bootcmd 'mmc init; fatload mmc 0:1 0x80300000 uImage; bootm 0x80300000'
+ setenv bootargs 'console=tty0 console=ttyS2,115200n8 root=/dev/mmcblk0p2 rootwait rootfstype=ext3 ro'
+ boot
+ EOF
+ ) > serial-boot.cmd
+ # mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Poky Minimal" -d ./serial-boot.cmd ./user.scr
+ # cp user.scr /media/boot
+
+ 6. Unmount the SD partitions and boot the Beagleboard
diff --git a/bitbake/AUTHORS b/bitbake/AUTHORS
index a4014b1e39..91fd78fd25 100644
--- a/bitbake/AUTHORS
+++ b/bitbake/AUTHORS
@@ -1,7 +1,7 @@
Tim Ansell <mithro@mithis.net>
Phil Blundell <pb@handhelds.org>
Seb Frankengul <seb@frankengul.org>
-Holger Freyther <zecke@handhelds.org>
+Holger Freyther <holger@moiji-mobile.com>
Marcin Juszkiewicz <marcin@juszkiewicz.com.pl>
Chris Larson <kergoth@handhelds.org>
Ulrich Luckas <luckas@musoft.de>
diff --git a/bitbake/bin/bitbake b/bitbake/bin/bitbake
index 797b5a8d60..6d0528953c 100755
--- a/bitbake/bin/bitbake
+++ b/bitbake/bin/bitbake
@@ -23,14 +23,18 @@
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import os
-import sys
-sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])),
+import sys, logging
+sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)),
'lib'))
import optparse
import warnings
from traceback import format_exception
-import bb
+try:
+ import bb
+except RuntimeError, exc:
+ sys.exit(str(exc))
+from bb import event
import bb.msg
from bb import cooker
from bb import ui
@@ -39,12 +43,9 @@ from bb.server import none
#from bb.server import xmlrpc
__version__ = "1.11.0"
+logger = logging.getLogger("BitBake")
-
-#============================================================================#
-# BBOptions
-#============================================================================#
class BBConfiguration(object):
"""
Manages build options and configurations for one run
@@ -56,34 +57,44 @@ class BBConfiguration(object):
self.pkgs_to_build = []
-def print_exception(exc, value, tb):
- """Send exception information through bb.msg"""
- bb.fatal("".join(format_exception(exc, value, tb, limit=8)))
+def get_ui(config):
+ if config.ui:
+ interface = config.ui
+ else:
+ interface = 'knotty'
-sys.excepthook = print_exception
+ try:
+ # Dynamically load the UI based on the ui name. Although we
+ # suggest a fixed set this allows you to have flexibility in which
+ # ones are available.
+ module = __import__("bb.ui", fromlist = [interface])
+ return getattr(module, interface).main
+ except AttributeError:
+ sys.exit("FATAL: Invalid user interface '%s' specified.\n"
+ "Valid interfaces: depexp, goggle, ncurses, knotty [default]." % interface)
+# Display bitbake/OE warnings via the BitBake.Warnings logger, ignoring others"""
+warnlog = logging.getLogger("BitBake.Warnings")
_warnings_showwarning = warnings.showwarning
def _showwarning(message, category, filename, lineno, file=None, line=None):
- """Display python warning messages using bb.msg"""
if file is not None:
if _warnings_showwarning is not None:
_warnings_showwarning(message, category, filename, lineno, file, line)
else:
s = warnings.formatwarning(message, category, filename, lineno)
- s = s.split("\n")[0]
- bb.msg.warn(None, s)
+ warnlog.warn(s)
warnings.showwarning = _showwarning
-warnings.simplefilter("ignore", DeprecationWarning)
+warnings.filterwarnings("ignore")
+warnings.filterwarnings("default", module="(<string>$|(oe|bb)\.)")
+warnings.filterwarnings("ignore", category=PendingDeprecationWarning)
+warnings.filterwarnings("ignore", category=ImportWarning)
+warnings.filterwarnings("ignore", category=DeprecationWarning, module="<string>$")
+warnings.filterwarnings("ignore", message="With-statements now directly support multiple context managers")
-#============================================================================#
-# main
-#============================================================================#
def main():
- return_value = 1
-
parser = optparse.OptionParser(
version = "BitBake Build Tool Core version %s, %%prog version %s" % (bb.__version__, __version__),
usage = """%prog [options] [package ...]
@@ -159,6 +170,11 @@ Default BBFILES are the .bb files in the current directory.""")
configuration.pkgs_to_build.extend(args[1:])
configuration.initial_path = os.environ['PATH']
+ ui_main = get_ui(configuration)
+
+ loghandler = event.LogHandler()
+ logger.addHandler(loghandler)
+
#server = bb.server.xmlrpc
server = bb.server.none
@@ -175,7 +191,6 @@ Default BBFILES are the .bb files in the current directory.""")
bb.utils.clean_environment()
cooker = bb.cooker.BBCooker(configuration, server)
-
cooker.parseCommandLine()
serverinfo = server.BitbakeServerInfo(cooker.server)
@@ -183,8 +198,10 @@ Default BBFILES are the .bb files in the current directory.""")
server.BitBakeServerFork(cooker, cooker.server, serverinfo, cooker_logfile)
del cooker
+ logger.removeHandler(loghandler)
+
# Setup a connection to the server (cooker)
- serverConnection = server.BitBakeServerConnection(serverinfo)
+ server_connection = server.BitBakeServerConnection(serverinfo)
# Launch the UI
if configuration.ui:
@@ -193,25 +210,15 @@ Default BBFILES are the .bb files in the current directory.""")
ui = "knotty"
try:
- # Dynamically load the UI based on the ui name. Although we
- # suggest a fixed set this allows you to have flexibility in which
- # ones are available.
- uimodule = __import__("bb.ui", fromlist = [ui])
- ui_init = getattr(uimodule, ui).init
- except AttributeError:
- print("FATAL: Invalid user interface '%s' specified. " % ui)
- print("Valid interfaces are 'ncurses', 'depexp' or the default, 'knotty'.")
- else:
- try:
- return_value = server.BitbakeUILauch().launch(serverinfo, ui_init, serverConnection.connection, serverConnection.events)
- except Exception as e:
- print("FATAL: Unable to start to '%s' UI: %s" % (ui, e))
- raise
+ return server.BitbakeUILauch().launch(serverinfo, ui_main, server_connection.connection, server_connection.events)
finally:
- serverConnection.terminate()
-
- return return_value
+ server_connection.terminate()
if __name__ == "__main__":
- ret = main()
+ try:
+ ret = main()
+ except Exception:
+ ret = 1
+ import traceback
+ traceback.print_exc(5)
sys.exit(ret)
diff --git a/bitbake/bin/bitdoc b/bitbake/bin/bitdoc
index 8043b2bd1c..c2a7061d1b 100755
--- a/bitbake/bin/bitdoc
+++ b/bitbake/bin/bitdoc
@@ -20,7 +20,7 @@
import optparse, os, sys
# bitbake
-sys.path.append(os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), 'lib'))
+sys.path.append(os.path.join(os.path.dirname(os.path.dirname(__file__), 'lib'))
import bb
import bb.parse
from string import split, join
diff --git a/bitbake/contrib/vim/ftdetect/bitbake.vim b/bitbake/contrib/vim/ftdetect/bitbake.vim
index 3882a9a08d..179e4d9888 100644
--- a/bitbake/contrib/vim/ftdetect/bitbake.vim
+++ b/bitbake/contrib/vim/ftdetect/bitbake.vim
@@ -1,4 +1,24 @@
-au BufNewFile,BufRead *.bb setfiletype bitbake
-au BufNewFile,BufRead *.bbclass setfiletype bitbake
-au BufNewFile,BufRead *.inc setfiletype bitbake
-" au BufNewFile,BufRead *.conf setfiletype bitbake
+" Vim filetype detection file
+" Language: BitBake
+" Author: Ricardo Salveti <rsalveti@rsalveti.net>
+" Copyright: Copyright (C) 2008 Ricardo Salveti <rsalveti@rsalveti.net>
+" Licence: You may redistribute this under the same terms as Vim itself
+"
+" This sets up the syntax highlighting for BitBake files, like .bb, .bbclass and .inc
+
+if &compatible || version < 600
+ finish
+endif
+
+" .bb and .bbclass
+au BufNewFile,BufRead *.b{b,bclass} set filetype=bitbake
+
+" .inc
+au BufNewFile,BufRead *.inc set filetype=bitbake
+
+" .conf
+au BufNewFile,BufRead *.conf
+ \ if (match(expand("%:p:h"), "conf") > 0) |
+ \ set filetype=bitbake |
+ \ endif
+
diff --git a/bitbake/contrib/vim/ftplugin/bitbake.vim b/bitbake/contrib/vim/ftplugin/bitbake.vim
new file mode 100644
index 0000000000..ed69d3b1b0
--- /dev/null
+++ b/bitbake/contrib/vim/ftplugin/bitbake.vim
@@ -0,0 +1 @@
+set sts=4 sw=4 et
diff --git a/bitbake/contrib/vim/plugin/newbb.vim b/bitbake/contrib/vim/plugin/newbb.vim
new file mode 100755
index 0000000000..afba1d9aa4
--- /dev/null
+++ b/bitbake/contrib/vim/plugin/newbb.vim
@@ -0,0 +1,85 @@
+" Vim plugin file
+" Purpose: Create a template for new bb files
+" Author: Ricardo Salveti <rsalveti@gmail.com>
+" Copyright: Copyright (C) 2008 Ricardo Salveti <rsalveti@gmail.com>
+"
+" This file is licensed under the MIT license, see COPYING.MIT in
+" this source distribution for the terms.
+"
+" Based on the gentoo-syntax package
+"
+" Will try to use git to find the user name and email
+
+if &compatible || v:version < 600
+ finish
+endif
+
+fun! <SID>GetUserName()
+ let l:user_name = system("git-config --get user.name")
+ if v:shell_error
+ return "Unknow User"
+ else
+ return substitute(l:user_name, "\n", "", "")
+endfun
+
+fun! <SID>GetUserEmail()
+ let l:user_email = system("git-config --get user.email")
+ if v:shell_error
+ return "unknow@user.org"
+ else
+ return substitute(l:user_email, "\n", "", "")
+endfun
+
+fun! BBHeader()
+ let l:current_year = strftime("%Y")
+ let l:user_name = <SID>GetUserName()
+ let l:user_email = <SID>GetUserEmail()
+ 0 put ='# Copyright (C) ' . l:current_year .
+ \ ' ' . l:user_name . ' <' . l:user_email . '>'
+ put ='# Released under the MIT license (see COPYING.MIT for the terms)'
+ $
+endfun
+
+fun! NewBBTemplate()
+ let l:paste = &paste
+ set nopaste
+
+ " Get the header
+ call BBHeader()
+
+ " New the bb template
+ put ='DESCRIPTION = \"\"'
+ put ='HOMEPAGE = \"\"'
+ put ='LICENSE = \"\"'
+ put ='SECTION = \"\"'
+ put ='DEPENDS = \"\"'
+ put ='PR = \"r0\"'
+ put =''
+ put ='SRC_URI = \"\"'
+
+ " Go to the first place to edit
+ 0
+ /^DESCRIPTION =/
+ exec "normal 2f\""
+
+ if paste == 1
+ set paste
+ endif
+endfun
+
+if !exists("g:bb_create_on_empty")
+ let g:bb_create_on_empty = 1
+endif
+
+" disable in case of vimdiff
+if v:progname =~ "vimdiff"
+ let g:bb_create_on_empty = 0
+endif
+
+augroup NewBB
+ au BufNewFile *.bb
+ \ if g:bb_create_on_empty |
+ \ call NewBBTemplate() |
+ \ endif
+augroup END
+
diff --git a/bitbake/contrib/vim/syntax/bitbake.vim b/bitbake/contrib/vim/syntax/bitbake.vim
index be55980b3a..a06dd9e0ac 100644
--- a/bitbake/contrib/vim/syntax/bitbake.vim
+++ b/bitbake/contrib/vim/syntax/bitbake.vim
@@ -1,127 +1,123 @@
" Vim syntax file
+" Language: BitBake bb/bbclasses/inc
+" Author: Chris Larson <kergoth@handhelds.org>
+" Ricardo Salveti <rsalveti@rsalveti.net>
+" Copyright: Copyright (C) 2004 Chris Larson <kergoth@handhelds.org>
+" Copyright (C) 2008 Ricardo Salveti <rsalveti@rsalveti.net>
"
-" Copyright (C) 2004 Chris Larson <kergoth@handhelds.org>
" This file is licensed under the MIT license, see COPYING.MIT in
" this source distribution for the terms.
"
-" Language: BitBake
-" Maintainer: Chris Larson <kergoth@handhelds.org>
-" Filenames: *.bb, *.bbclass
-
-if version < 600
- syntax clear
-elseif exists("b:current_syntax")
- finish
-endif
-
-syn case match
-
-" Catch incorrect syntax (only matches if nothing else does)
+" Syntax highlighting for bb, bbclasses and inc files.
"
-syn match bbUnmatched "."
+" It's an entirely new type, just has specific syntax in shell and python code
+if &compatible || v:version < 600
+ finish
+endif
+if exists("b:current_syntax")
+ finish
+endif
syn include @python syntax/python.vim
if exists("b:current_syntax")
unlet b:current_syntax
endif
+" BitBake syntax
-" Other
-
-syn match bbComment "^#.*$" display contains=bbTodo
-syn keyword bbTodo TODO FIXME XXX contained
-syn match bbDelimiter "[(){}=]" contained
-syn match bbQuote /['"]/ contained
-syn match bbArrayBrackets "[\[\]]" contained
-
-
-" BitBake strings
-
-syn match bbContinue "\\$"
-syn region bbString matchgroup=bbQuote start=/"/ skip=/\\$/ excludenl end=/"/ contained keepend contains=bbTodo,bbContinue,bbVarInlinePy,bbVarDeref
-syn region bbString matchgroup=bbQuote start=/'/ skip=/\\$/ excludenl end=/'/ contained keepend contains=bbTodo,bbContinue,bbVarInlinePy,bbVarDeref
-
-" BitBake variable metadata
-
-syn match bbVarBraces "[\${}]"
-syn region bbVarDeref matchgroup=bbVarBraces start="${" end="}" contained
-" syn region bbVarDeref start="${" end="}" contained
-" syn region bbVarInlinePy start="${@" end="}" contained contains=@python
-syn region bbVarInlinePy matchgroup=bbVarBraces start="${@" end="}" contained contains=@python
-
-syn keyword bbExportFlag export contained nextgroup=bbIdentifier skipwhite
-" syn match bbVarDeref "${[a-zA-Z0-9\-_\.]\+}" contained
-syn match bbVarDef "^\(export\s*\)\?\([a-zA-Z0-9\-_\.]\+\(_[${}a-zA/-Z0-9\-_\.]\+\)\?\)\s*\(:=\|+=\|=+\|\.=\|=\.\|?=\|=\)\@=" contains=bbExportFlag,bbIdentifier,bbVarDeref nextgroup=bbVarEq
-
-syn match bbIdentifier "[a-zA-Z0-9\-_\./]\+" display contained
-"syn keyword bbVarEq = display contained nextgroup=bbVarValue
-syn match bbVarEq "\(:=\|+=\|=+\|\.=\|=\.\|?=\|=\)" contained nextgroup=bbVarValue
-syn match bbVarValue ".*$" contained contains=bbString
-
-" BitBake variable metadata flags
-syn match bbVarFlagDef "^\([a-zA-Z0-9\-_\.]\+\)\(\[[a-zA-Z0-9\-_\.]\+\]\)\@=" contains=bbIdentifier nextgroup=bbVarFlagFlag
-syn region bbVarFlagFlag matchgroup=bbArrayBrackets start="\[" end="\]\s*\(=\)\@=" keepend excludenl contained contains=bbIdentifier nextgroup=bbVarEq
-"syn match bbVarFlagFlag "\[\([a-zA-Z0-9\-_\.]\+\)\]\s*\(=\)\@=" contains=bbIdentifier nextgroup=bbVarEq
-
-
-" Functions!
-syn match bbFunction "\h\w*" display contained
+" Matching case
+syn case match
+" Indicates the error when nothing is matched
+syn match bbUnmatched "."
-" BitBake python metadata
+" Comments
+syn cluster bbCommentGroup contains=bbTodo,@Spell
+syn keyword bbTodo COMBAK FIXME TODO XXX contained
+syn match bbComment "#.*$" contains=@bbCommentGroup
-syn keyword bbPythonFlag python contained nextgroup=bbFunction
-syn match bbPythonFuncDef "^\(python\s\+\)\(\w\+\)\?\(\s*()\s*\)\({\)\@=" contains=bbPythonFlag,bbFunction,bbDelimiter nextgroup=bbPythonFuncRegion skipwhite
-syn region bbPythonFuncRegion matchgroup=bbDelimiter start="{\s*$" end="^}\s*$" keepend contained contains=@python
-"hi def link bbPythonFuncRegion Comment
+" String helpers
+syn match bbQuote +['"]+ contained
+syn match bbDelimiter "[(){}=]" contained
+syn match bbArrayBrackets "[\[\]]" contained
+" BitBake strings
+syn match bbContinue "\\$"
+syn region bbString matchgroup=bbQuote start=+"+ skip=+\\$+ excludenl end=+"+ contained keepend contains=bbTodo,bbContinue,bbVarDeref,bbVarPyValue,@Spell
+syn region bbString matchgroup=bbQuote start=+'+ skip=+\\$+ excludenl end=+'+ contained keepend contains=bbTodo,bbContinue,bbVarDeref,bbVarPyValue,@Spell
+
+" Vars definition
+syn match bbExport "^export" nextgroup=bbIdentifier skipwhite
+syn keyword bbExportFlag export contained nextgroup=bbIdentifier skipwhite
+syn match bbIdentifier "[a-zA-Z0-9\-_\.\/\+]\+" display contained
+syn match bbVarDeref "${[a-zA-Z0-9\-_\.\/\+]\+}" contained
+syn match bbVarEq "\(:=\|+=\|=+\|\.=\|=\.\|?=\|=\)" contained nextgroup=bbVarValue
+syn match bbVarDef "^\(export\s*\)\?\([a-zA-Z0-9\-_\.\/\+]\+\(_[${}a-zA-Z0-9\-_\.\/\+]\+\)\?\)\s*\(:=\|+=\|=+\|\.=\|=\.\|?=\|=\)\@=" contains=bbExportFlag,bbIdentifier,bbVarDeref nextgroup=bbVarEq
+syn match bbVarValue ".*$" contained contains=bbString,bbVarDeref,bbVarPyValue
+syn region bbVarPyValue start=+${@+ skip=+\\$+ excludenl end=+}+ contained contains=@python
+
+" Vars metadata flags
+syn match bbVarFlagDef "^\([a-zA-Z0-9\-_\.]\+\)\(\[[a-zA-Z0-9\-_\.]\+\]\)\@=" contains=bbIdentifier nextgroup=bbVarFlagFlag
+syn region bbVarFlagFlag matchgroup=bbArrayBrackets start="\[" end="\]\s*\(=\)\@=" keepend excludenl contained contains=bbIdentifier nextgroup=bbVarEq
+
+" Includes and requires
+syn keyword bbInclude inherit include require contained
+syn match bbIncludeRest ".*$" contained contains=bbString,bbVarDeref
+syn match bbIncludeLine "^\(inherit\|include\|require\)\s\+" contains=bbInclude nextgroup=bbIncludeRest
+
+" Add taks and similar
+syn keyword bbStatement addtask addhandler after before EXPORT_FUNCTIONS contained
+syn match bbStatementRest ".*$" skipwhite contained contains=bbStatement
+syn match bbStatementLine "^\(addtask\|addhandler\|after\|before\|EXPORT_FUNCTIONS\)\s\+" contains=bbStatement nextgroup=bbStatementRest
+
+" OE Important Functions
+syn keyword bbOEFunctions do_fetch do_unpack do_patch do_configure do_compile do_stage do_install do_package contained
+
+" Generic Functions
+syn match bbFunction "\h[0-9A-Za-z_-]*" display contained contains=bbOEFunctions
" BitBake shell metadata
syn include @shell syntax/sh.vim
if exists("b:current_syntax")
unlet b:current_syntax
endif
+syn keyword bbShFakeRootFlag fakeroot contained
+syn match bbShFuncDef "^\(fakeroot\s*\)\?\([0-9A-Za-z_-]\+\)\(python\)\@<!\(\s*()\s*\)\({\)\@=" contains=bbShFakeRootFlag,bbFunction,bbDelimiter nextgroup=bbShFuncRegion skipwhite
+syn region bbShFuncRegion matchgroup=bbDelimiter start="{\s*$" end="^}\s*$" keepend contained contains=@shell
-syn keyword bbFakerootFlag fakeroot contained nextgroup=bbFunction
-syn match bbShellFuncDef "^\(fakeroot\s*\)\?\(\w\+\)\(python\)\@<!\(\s*()\s*\)\({\)\@=" contains=bbFakerootFlag,bbFunction,bbDelimiter nextgroup=bbShellFuncRegion skipwhite
-syn region bbShellFuncRegion matchgroup=bbDelimiter start="{\s*$" end="^}\s*$" keepend contained contains=@shell
-"hi def link bbShellFuncRegion Comment
-
+" BitBake python metadata
+syn keyword bbPyFlag python contained
+syn match bbPyFuncDef "^\(python\s\+\)\([0-9A-Za-z_-]\+\)\?\(\s*()\s*\)\({\)\@=" contains=bbPyFlag,bbFunction,bbDelimiter nextgroup=bbPyFuncRegion skipwhite
+syn region bbPyFuncRegion matchgroup=bbDelimiter start="{\s*$" end="^}\s*$" keepend contained contains=@python
" BitBake 'def'd python functions
-syn keyword bbDef def contained
-syn region bbDefRegion start='^def\s\+\w\+\s*([^)]*)\s*:\s*$' end='^\(\s\|$\)\@!' contains=@python
-
-
-" BitBake statements
-syn keyword bbStatement include inherit require addtask addhandler EXPORT_FUNCTIONS display contained
-syn match bbStatementLine "^\(include\|inherit\|require\|addtask\|addhandler\|EXPORT_FUNCTIONS\)\s\+" contains=bbStatement nextgroup=bbStatementRest
-syn match bbStatementRest ".*$" contained contains=bbString,bbVarDeref
-
-" Highlight
-"
-hi def link bbArrayBrackets Statement
-hi def link bbUnmatched Error
-hi def link bbContinue Special
-hi def link bbDef Statement
-hi def link bbPythonFlag Type
-hi def link bbExportFlag Type
-hi def link bbFakerootFlag Type
-hi def link bbStatement Statement
-hi def link bbString String
-hi def link bbTodo Todo
-hi def link bbComment Comment
-hi def link bbOperator Operator
-hi def link bbError Error
-hi def link bbFunction Function
-hi def link bbDelimiter Delimiter
-hi def link bbIdentifier Identifier
-hi def link bbVarEq Operator
-hi def link bbQuote String
-hi def link bbVarValue String
-" hi def link bbVarInlinePy PreProc
-hi def link bbVarDeref PreProc
-hi def link bbVarBraces PreProc
+syn keyword bbPyDef def contained
+syn region bbPyDefRegion start='^\(def\s\+\)\([0-9A-Za-z_-]\+\)\(\s*(.*)\s*\):\s*$' end='^\(\s\|$\)\@!' contains=@python
+
+" Highlighting Definitions
+hi def link bbUnmatched Error
+hi def link bbInclude Include
+hi def link bbTodo Todo
+hi def link bbComment Comment
+hi def link bbQuote String
+hi def link bbString String
+hi def link bbDelimiter Keyword
+hi def link bbArrayBrackets Statement
+hi def link bbContinue Special
+hi def link bbExport Type
+hi def link bbExportFlag Type
+hi def link bbIdentifier Identifier
+hi def link bbVarDeref PreProc
+hi def link bbVarDef Identifier
+hi def link bbVarValue String
+hi def link bbShFakeRootFlag Type
+hi def link bbFunction Function
+hi def link bbPyFlag Type
+hi def link bbPyDef Statement
+hi def link bbStatement Statement
+hi def link bbStatementRest Identifier
+hi def link bbOEFunctions Special
+hi def link bbVarPyValue PreProc
let b:current_syntax = "bb"
diff --git a/bitbake/doc/manual/usermanual.xml b/bitbake/doc/manual/usermanual.xml
index 748ac319ef..32b40eee54 100644
--- a/bitbake/doc/manual/usermanual.xml
+++ b/bitbake/doc/manual/usermanual.xml
@@ -318,7 +318,7 @@ a per URI parameters separated by a <quote>;</quote> consisting of a key and a v
<title>CVS File Fetcher</title>
<para>The URN for the CVS Fetcher is <emphasis>cvs</emphasis>. This Fetcher honors the variables <varname>DL_DIR</varname>, <varname>SRCDATE</varname>, <varname>FETCHCOMMAND_cvs</varname>, <varname>UPDATECOMMAND_cvs</varname>. <varname>DL_DIR</varname> specifies where a temporary checkout is saved, <varname>SRCDATE</varname> specifies which date to use when doing the fetching (the special value of "now" will cause the checkout to be updated on every build), <varname>FETCHCOMMAND</varname> and <varname>UPDATECOMMAND</varname> specify which executables should be used when doing the CVS checkout or update.
</para>
- <para>The supported Parameters are <varname>module</varname>, <varname>tag</varname>, <varname>date</varname>, <varname>method</varname>, <varname>localdir</varname>, <varname>rsh</varname>. The <varname>module</varname> specifies which module to check out, the <varname>tag</varname> describes which CVS TAG should be used for the checkout by default the TAG is empty. A <varname>date</varname> can be specified to override the SRCDATE of the configuration to checkout a specific date. The special value of "now" will cause the checkout to be updated on every build.<varname>method</varname> is by default <emphasis>pserver</emphasis>, if <emphasis>ext</emphasis> is used the <varname>rsh</varname> parameter will be evaluated and <varname>CVS_RSH</varname> will be set. Finally <varname>localdir</varname> is used to checkout into a special directory relative to <varname>CVSDIR</varname>.
+ <para>The supported Parameters are <varname>module</varname>, <varname>tag</varname>, <varname>date</varname>, <varname>method</varname>, <varname>localdir</varname>, <varname>rsh</varname> and <varname>scmdata</varname>. The <varname>module</varname> specifies which module to check out, the <varname>tag</varname> describes which CVS TAG should be used for the checkout. By default the TAG is empty. A <varname>date</varname> can be specified to override the SRCDATE of the configuration to checkout a specific date. The special value of "now" will cause the checkout to be updated on every build.<varname>method</varname> is by default <emphasis>pserver</emphasis>, if <emphasis>ext</emphasis> is used the <varname>rsh</varname> parameter will be evaluated and <varname>CVS_RSH</varname> will be set. Finally <varname>localdir</varname> is used to checkout into a special directory relative to <varname>CVSDIR</varname>. If <varname>scmdata</varname> is set to <quote>keep</quote>
<screen><varname>SRC_URI</varname> = "cvs://CVSROOT;module=mymodule;tag=some-version;method=ext"
<varname>SRC_URI</varname> = "cvs://CVSROOT;module=mymodule;date=20060126;localdir=usethat"
</screen>
@@ -351,7 +351,7 @@ will be tried first when fetching a file if that fails the actual file will be t
</para>
<para>This Fetcher honors the variables <varname>FETCHCOMMAND_svn</varname>, <varname>DL_DIR</varname>, <varname>SRCDATE</varname>. <varname>FETCHCOMMAND</varname> contains the subversion command, <varname>DL_DIR</varname> is the directory where tarballs will be saved, <varname>SRCDATE</varname> specifies which date to use when doing the fetching (the special value of "now" will cause the checkout to be updated on every build).
</para>
- <para>The supported Parameters are <varname>proto</varname>, <varname>rev</varname>. <varname>proto</varname> is the subversion prototype, <varname>rev</varname> is the subversions revision.
+ <para>The supported Parameters are <varname>proto</varname>, <varname>rev</varname> and <varname>scmdata</varname>. <varname>proto</varname> is the subversion protocol, <varname>rev</varname> is the subversion revision. If <varname>scmdata</varname> is set to <quote>keep</quote>, the <quote>.svn</quote> directories will be available during compile-time.
</para>
<para><screen><varname>SRC_URI</varname> = "svn://svn.oe.handhelds.org/svn;module=vip;proto=http;rev=667"
<varname>SRC_URI</varname> = "svn://svn.oe.handhelds.org/svn/;module=opie;proto=svn+ssh;date=20060126"
@@ -364,7 +364,7 @@ will be tried first when fetching a file if that fails the actual file will be t
</para>
<para>The Variables <varname>DL_DIR</varname>, <varname>GITDIR</varname> are used. <varname>DL_DIR</varname> will be used to store the checkedout version. <varname>GITDIR</varname> will be used as the base directory where the git tree is cloned to.
</para>
- <para>The Parameters are <emphasis>tag</emphasis>, <emphasis>protocol</emphasis>. <emphasis>tag</emphasis> is a git tag, the default is <quote>master</quote>. <emphasis>protocol</emphasis> is the git protocol to use and defaults to <quote>rsync</quote>.
+ <para>The Parameters are <emphasis>tag</emphasis>, <emphasis>protocol</emphasis> and <emphasis>scmdata</emphasis>. <emphasis>tag</emphasis> is a git tag, the default is <quote>master</quote>. <emphasis>protocol</emphasis> is the git protocol to use and defaults to <quote>rsync</quote>. If <emphasis>scmdata</emphasis> is set to <quote>keep</quote>, the <quote>.git</quote> directory will be available during compile-time.
</para>
<para><screen><varname>SRC_URI</varname> = "git://git.oe.handhelds.org/git/vip.git;tag=version-1"
<varname>SRC_URI</varname> = "git://git.oe.handhelds.org/git/vip.git;protocol=http"
diff --git a/bitbake/lib/bb/__init__.py b/bitbake/lib/bb/__init__.py
index 88adfc1dfa..4c7afc9c21 100644
--- a/bitbake/lib/bb/__init__.py
+++ b/bitbake/lib/bb/__init__.py
@@ -28,6 +28,41 @@ if sys.version_info < (2, 6, 0):
raise RuntimeError("Sorry, python 2.6.0 or later is required for this version of bitbake")
import os
+import logging
+import traceback
+
+class NullHandler(logging.Handler):
+ def emit(self, record):
+ pass
+
+Logger = logging.getLoggerClass()
+class BBLogger(Logger):
+ def __init__(self, name):
+ if name.split(".")[0] == "BitBake":
+ self.debug = self.bbdebug
+ Logger.__init__(self, name)
+
+ def bbdebug(self, level, msg, *args, **kwargs):
+ return self.log(logging.DEBUG - level + 1, msg, *args, **kwargs)
+
+ def plain(self, msg, *args, **kwargs):
+ return self.log(logging.INFO + 1, msg, *args, **kwargs)
+
+ def verbose(self, msg, *args, **kwargs):
+ return self.log(logging.INFO - 1, msg, *args, **kwargs)
+
+ def exception(self, msg, *args, **kwargs):
+ return self.critical("%s\n%s" % (msg, traceback.format_exc()), *args, **kwargs)
+
+logging.raiseExceptions = False
+logging.setLoggerClass(BBLogger)
+
+logger = logging.getLogger("BitBake")
+logger.addHandler(NullHandler())
+logger.setLevel(logging.INFO)
+
+# This has to be imported after the setLoggerClass, as the import of bb.msg
+# can result in construction of the various loggers.
import bb.msg
if "BBDEBUG" in os.environ:
@@ -35,25 +70,29 @@ if "BBDEBUG" in os.environ:
if level:
bb.msg.set_debug_level(level)
+if True or os.environ.get("BBFETCH2"):
+ from bb import fetch2 as fetch
+ sys.modules['bb.fetch'] = sys.modules['bb.fetch2']
# Messaging convenience functions
def plain(*args):
- bb.msg.plain(''.join(args))
+ logger.plain(''.join(args))
def debug(lvl, *args):
- bb.msg.debug(lvl, None, ''.join(args))
+ logger.debug(lvl, ''.join(args))
def note(*args):
- bb.msg.note(1, None, ''.join(args))
+ logger.info(''.join(args))
def warn(*args):
- bb.msg.warn(None, ''.join(args))
+ logger.warn(''.join(args))
def error(*args):
- bb.msg.error(None, ''.join(args))
+ logger.error(''.join(args))
def fatal(*args):
- bb.msg.fatal(None, ''.join(args))
+ logger.critical(''.join(args))
+ sys.exit(1)
def deprecated(func, name = None, advice = ""):
diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py
index 18a75edca3..07bd35afcc 100644
--- a/bitbake/lib/bb/build.py
+++ b/bitbake/lib/bb/build.py
@@ -25,9 +25,20 @@
#
#Based on functions from the base bb module, Copyright 2003 Holger Schurig
+import os
+import sys
+import logging
+import bb
+import bb.msg
+import bb.process
+from contextlib import nested
from bb import data, event, mkdirhier, utils
-import bb, os, sys
-import bb.utils
+
+bblogger = logging.getLogger('BitBake')
+logger = logging.getLogger('BitBake.Build')
+
+NULL = open(os.devnull, 'r+')
+
# When we execute a python function we'd like certain things
# in all namespaces, hence we add them to __builtins__
@@ -36,13 +47,22 @@ import bb.utils
__builtins__['bb'] = bb
__builtins__['os'] = os
-# events
class FuncFailed(Exception):
- """
- Executed function failed
- First parameter a message
- Second paramter is a logfile (optional)
- """
+ def __init__(self, name = None, logfile = None):
+ self.logfile = logfile
+ self.name = name
+ if name:
+ self.msg = "Function '%s' failed" % name
+ else:
+ self.msg = "Function failed"
+
+ def __str__(self):
+ if self.logfile and os.path.exists(self.logfile):
+ msg = ("%s (see %s for further information)" %
+ (self.msg, self.logfile))
+ else:
+ msg = self.msg
+ return msg
class TaskBase(event.Event):
"""Base class for task events"""
@@ -69,38 +89,56 @@ class TaskSucceeded(TaskBase):
class TaskFailed(TaskBase):
"""Task execution failed"""
- def __init__(self, msg, logfile, t, d ):
+
+ def __init__(self, task, logfile, metadata):
self.logfile = logfile
- self.msg = msg
- TaskBase.__init__(self, t, d)
+ super(TaskFailed, self).__init__(task, metadata)
class TaskInvalid(TaskBase):
- """Invalid Task"""
-# functions
+ def __init__(self, task, metadata):
+ super(TaskInvalid, self).__init__(task, metadata)
+ self._message = "No such task '%s'" % task
+
+
+class LogTee(object):
+ def __init__(self, logger, outfile):
+ self.outfile = outfile
+ self.logger = logger
+ self.name = self.outfile.name
+
+ def write(self, string):
+ self.logger.plain(string)
+ self.outfile.write(string)
+
+ def __enter__(self):
+ self.outfile.__enter__()
+ return self
+
+ def __exit__(self, *excinfo):
+ self.outfile.__exit__(*excinfo)
+
+ def __repr__(self):
+ return '<LogTee {0}>'.format(self.name)
+
def exec_func(func, d, dirs = None):
"""Execute an BB 'function'"""
body = data.getVar(func, d)
if not body:
- bb.warn("Function %s doesn't exist" % func)
+ if body is None:
+ logger.warn("Function %s doesn't exist", func)
return
flags = data.getVarFlags(func, d)
- for item in ['deps', 'check', 'interactive', 'python', 'cleandirs', 'dirs', 'lockfiles', 'fakeroot', 'task']:
- if not item in flags:
- flags[item] = None
-
- ispython = flags['python']
-
- cleandirs = flags['cleandirs']
+ cleandirs = flags.get('cleandirs')
if cleandirs:
for cdir in data.expand(cleandirs, d).split():
- os.system("rm -rf %s" % cdir)
+ bb.utils.remove(cdir, True)
if dirs is None:
- dirs = flags['dirs']
+ dirs = flags.get('dirs')
if dirs:
dirs = data.expand(dirs, d).split()
@@ -110,277 +148,254 @@ def exec_func(func, d, dirs = None):
adir = dirs[-1]
else:
adir = data.getVar('B', d, 1)
+ if not os.path.exists(adir):
+ adir = None
- # Save current directory
- try:
- prevdir = os.getcwd()
- except OSError:
- prevdir = data.getVar('TOPDIR', d, True)
-
- # Setup scriptfile
- t = data.getVar('T', d, 1)
- if not t:
- raise SystemExit("T variable not set, unable to build")
- bb.utils.mkdirhier(t)
- runfile = "%s/run.%s.%s" % (t, func, str(os.getpid()))
- logfile = d.getVar("BB_LOGFILE", True)
-
- # Change to correct directory (if specified)
- if adir and os.access(adir, os.F_OK):
- os.chdir(adir)
-
- locks = []
- lockfiles = flags['lockfiles']
- if lockfiles:
- for lock in data.expand(lockfiles, d).split():
- locks.append(bb.utils.lockfile(lock))
+ ispython = flags.get('python')
+ if flags.get('fakeroot') and not flags.get('task'):
+ bb.fatal("Function %s specifies fakeroot but isn't a task?!" % func)
- try:
- # Run the function
- if ispython:
- exec_func_python(func, d, runfile, logfile)
- else:
- exec_func_shell(func, d, runfile, logfile, flags)
+ lockflag = flags.get('lockfiles')
+ if lockflag:
+ lockfiles = [data.expand(f, d) for f in lockflag.split()]
+ else:
+ lockfiles = None
- # Restore original directory
- try:
- os.chdir(prevdir)
- except:
- pass
+ tempdir = data.getVar('T', d, 1)
+ runfile = os.path.join(tempdir, 'run.{0}.{1}'.format(func, os.getpid()))
- finally:
+ with bb.utils.fileslocked(lockfiles):
+ if ispython:
+ exec_func_python(func, d, runfile, cwd=adir)
+ else:
+ exec_func_shell(func, d, runfile, cwd=adir)
- # Unlock any lockfiles
- for lock in locks:
- bb.utils.unlockfile(lock)
+_functionfmt = """
+def {function}(d):
+{body}
-def exec_func_python(func, d, runfile, logfile):
+{function}(d)
+"""
+logformatter = bb.msg.BBLogFormatter("%(levelname)s: %(message)s")
+def exec_func_python(func, d, runfile, cwd=None):
"""Execute a python BB 'function'"""
- bbfile = bb.data.getVar('FILE', d, 1)
- tmp = "def " + func + "(d):\n%s" % data.getVar(func, d)
- tmp += '\n' + func + '(d)'
+ bbfile = d.getVar('FILE', True)
+ try:
+ olddir = os.getcwd()
+ except OSError:
+ olddir = None
+ code = _functionfmt.format(function=func, body=d.getVar(func, True))
+ bb.utils.mkdirhier(os.path.dirname(runfile))
+ with open(runfile, 'w') as script:
+ script.write(code)
+
+ if cwd:
+ os.chdir(cwd)
- f = open(runfile, "w")
- f.write(tmp)
- comp = utils.better_compile(tmp, func, bbfile)
try:
- utils.better_exec(comp, {"d": d}, tmp, bbfile)
+ comp = utils.better_compile(code, func, bbfile)
+ utils.better_exec(comp, {"d": d}, code, bbfile)
except:
- (t, value, tb) = sys.exc_info()
-
- if t in [bb.parse.SkipPackage, bb.build.FuncFailed]:
+ if sys.exc_info()[0] in (bb.parse.SkipPackage, bb.build.FuncFailed):
raise
- raise FuncFailed("Function %s failed" % func, logfile)
+ raise FuncFailed(func, None)
+ finally:
+ if olddir:
+ os.chdir(olddir)
-def exec_func_shell(func, d, runfile, logfile, flags):
- """Execute a shell BB 'function' Returns true if execution was successful.
-
- For this, it creates a bash shell script in the tmp dectory, writes the local
- data into it and finally executes. The output of the shell will end in a log file and stdout.
+def exec_func_shell(function, d, runfile, cwd=None):
+ """Execute a shell function from the metadata
Note on directory behavior. The 'dirs' varflag should contain a list
of the directories you need created prior to execution. The last
item in the list is where we will chdir/cd to.
"""
- deps = flags['deps']
- check = flags['check']
- if check in globals():
- if globals()[check](func, deps):
- return
-
- f = open(runfile, "w")
- f.write("#!/bin/sh -e\n")
- if bb.msg.debug_level['default'] > 0: f.write("set -x\n")
- data.emit_func(func, f, d)
-
- f.write("cd %s\n" % os.getcwd())
- if func: f.write("%s\n" % func)
- f.close()
- os.chmod(runfile, 0775)
- if not func:
- raise FuncFailed("Function not specified for exec_func_shell")
-
- # execute function
- if flags['fakeroot'] and not flags['task']:
- bb.fatal("Function %s specifies fakeroot but isn't a task?!" % func)
-
- lang_environment = "LC_ALL=C "
- ret = os.system('%ssh -e %s' % (lang_environment, runfile))
+ # Don't let the emitted shell script override PWD
+ d.delVarFlag('PWD', 'export')
- if ret == 0:
- return
+ with open(runfile, 'w') as script:
+ script.write('#!/bin/sh -e\n')
+ if logger.isEnabledFor(logging.DEBUG):
+ script.write("set -x\n")
+ data.emit_func(function, script, d)
- raise FuncFailed("function %s failed" % func, logfile)
+ script.write("%s\n" % function)
+ os.fchmod(script.fileno(), 0775)
+ env = {
+ 'PATH': d.getVar('PATH', True),
+ 'LC_ALL': 'C',
+ }
-def exec_task(fn, task, d):
- """Execute an BB 'task'
+ cmd = runfile
- The primary difference between executing a task versus executing
- a function is that a task exists in the task digraph, and therefore
- has dependencies amongst other tasks."""
+ if logger.isEnabledFor(logging.DEBUG):
+ logfile = LogTee(logger, sys.stdout)
+ else:
+ logfile = sys.stdout
- # Check whther this is a valid task
+ try:
+ bb.process.run(cmd, env=env, cwd=cwd, shell=False, stdin=NULL,
+ log=logfile)
+ except bb.process.CmdError:
+ logfn = d.getVar('BB_LOGFILE', True)
+ raise FuncFailed(function, logfn)
+
+def _task_data(fn, task, d):
+ localdata = data.createCopy(d)
+ localdata.setVar('BB_FILENAME', fn)
+ localdata.setVar('BB_CURRENTTASK', task[3:])
+ localdata.setVar('OVERRIDES', 'task-%s:%s' %
+ (task[3:], d.getVar('OVERRIDES', False)))
+ localdata.finalize()
+ data.expandKeys(localdata)
+ return localdata
+
+def _exec_task(fn, task, d, quieterr):
+ """Execute a BB 'task'
+
+ Execution of a task involves a bit more setup than executing a function,
+ running it with its own local metadata, and with some useful variables set.
+ """
if not data.getVarFlag(task, 'task', d):
event.fire(TaskInvalid(task, d), d)
- bb.msg.error(bb.msg.domain.Build, "No such task: %s" % task)
+ logger.error("No such task: %s" % task)
return 1
- quieterr = False
- if d.getVarFlag(task, "quieterrors") is not None:
- quieterr = True
+ logger.debug(1, "Executing task %s", task)
+
+ localdata = _task_data(fn, task, d)
+ tempdir = localdata.getVar('T', True)
+ if not tempdir:
+ bb.fatal("T variable not set, unable to build")
+
+ bb.utils.mkdirhier(tempdir)
+ loglink = os.path.join(tempdir, 'log.{0}'.format(task))
+ logfn = os.path.join(tempdir, 'log.{0}.{1}'.format(task, os.getpid()))
+ if loglink:
+ bb.utils.remove(loglink)
- try:
- bb.msg.debug(1, bb.msg.domain.Build, "Executing task %s" % task)
- old_overrides = data.getVar('OVERRIDES', d, 0)
- localdata = data.createCopy(d)
- data.setVar('OVERRIDES', 'task-%s:%s' % (task[3:], old_overrides), localdata)
- data.update_data(localdata)
- data.expandKeys(localdata)
- data.setVar('BB_FILENAME', fn, d)
- data.setVar('BB_CURRENTTASK', task[3:], d)
- event.fire(TaskStarted(task, localdata), localdata)
-
- # Setup logfiles
- t = data.getVar('T', d, 1)
- if not t:
- raise SystemExit("T variable not set, unable to build")
- bb.utils.mkdirhier(t)
- loglink = "%s/log.%s" % (t, task)
- logfile = "%s/log.%s.%s" % (t, task, str(os.getpid()))
- d.setVar("BB_LOGFILE", logfile)
-
- # Even though the log file has not yet been opened, lets create the link
- if loglink:
- try:
- os.remove(loglink)
- except OSError as e:
- pass
-
- try:
- os.symlink(logfile, loglink)
- except OSError as e:
- pass
-
- # Handle logfiles
- si = file('/dev/null', 'r')
try:
- so = file(logfile, 'w')
- except OSError as e:
- bb.msg.error(bb.msg.domain.Build, "opening log file: %s" % e)
- pass
- se = so
-
- # Dup the existing fds so we dont lose them
- osi = [os.dup(sys.stdin.fileno()), sys.stdin.fileno()]
- oso = [os.dup(sys.stdout.fileno()), sys.stdout.fileno()]
- ose = [os.dup(sys.stderr.fileno()), sys.stderr.fileno()]
-
- # Replace those fds with our own
- os.dup2(si.fileno(), osi[1])
- os.dup2(so.fileno(), oso[1])
- os.dup2(se.fileno(), ose[1])
-
- # Since we've remapped stdout and stderr, its safe for log messages to be printed there now
- # exec_func can nest so we have to save state
- origstdout = bb.event.useStdout
- bb.event.useStdout = True
-
-
- prefuncs = (data.getVarFlag(task, 'prefuncs', localdata) or "").split()
- for func in prefuncs:
- exec_func(func, localdata)
- exec_func(task, localdata)
- postfuncs = (data.getVarFlag(task, 'postfuncs', localdata) or "").split()
- for func in postfuncs:
- exec_func(func, localdata)
+ os.symlink(logfn, loglink)
+ except OSError:
+ pass
- event.fire(TaskSucceeded(task, localdata), localdata)
+ prefuncs = localdata.getVarFlag(task, 'prefuncs', expand=True)
+ postfuncs = localdata.getVarFlag(task, 'postfuncs', expand=True)
- # make stamp, or cause event and raise exception
- if not data.getVarFlag(task, 'nostamp', d) and not data.getVarFlag(task, 'selfstamp', d):
- make_stamp(task, d)
+ # Handle logfiles
+ si = file('/dev/null', 'r')
+ try:
+ logfile = file(logfn, 'w')
+ except OSError:
+ logger.exception("Opening log file '%s'", logfn)
+ pass
- except FuncFailed as message:
- # Try to extract the optional logfile
- try:
- (msg, logfile) = message
- except:
- logfile = None
- msg = message
- if not quieterr:
- bb.msg.error(bb.msg.domain.Build, "Task failed: %s" % message )
- failedevent = TaskFailed(msg, logfile, task, d)
- event.fire(failedevent, d)
- return 1
+ # Dup the existing fds so we dont lose them
+ osi = [os.dup(sys.stdin.fileno()), sys.stdin.fileno()]
+ oso = [os.dup(sys.stdout.fileno()), sys.stdout.fileno()]
+ ose = [os.dup(sys.stderr.fileno()), sys.stderr.fileno()]
- except Exception:
- from traceback import format_exc
+ # Replace those fds with our own
+ os.dup2(si.fileno(), osi[1])
+ os.dup2(logfile.fileno(), oso[1])
+ os.dup2(logfile.fileno(), ose[1])
+
+ # Ensure python logging goes to the logfile
+ handler = logging.StreamHandler(logfile)
+ handler.setFormatter(logformatter)
+ bblogger.addHandler(handler)
+
+ localdata.setVar('BB_LOGFILE', logfn)
+
+ event.fire(TaskStarted(task, localdata), localdata)
+ try:
+ for func in (prefuncs or '').split():
+ exec_func(func, localdata)
+ exec_func(task, localdata)
+ for func in (postfuncs or '').split():
+ exec_func(func, localdata)
+ except FuncFailed as exc:
if not quieterr:
- bb.msg.error(bb.msg.domain.Build, "Build of %s failed" % (task))
- bb.msg.error(bb.msg.domain.Build, format_exc())
- failedevent = TaskFailed("Task Failed", None, task, d)
- event.fire(failedevent, d)
+ logger.error(str(exc))
+ event.fire(TaskFailed(exc.name, logfn, localdata), localdata)
return 1
finally:
sys.stdout.flush()
sys.stderr.flush()
- bb.event.useStdout = origstdout
+ bblogger.removeHandler(handler)
# Restore the backup fds
os.dup2(osi[0], osi[1])
os.dup2(oso[0], oso[1])
os.dup2(ose[0], ose[1])
- # Close our logs
- si.close()
- so.close()
- se.close()
-
- if logfile and os.path.exists(logfile) and os.path.getsize(logfile) == 0:
- bb.msg.debug(2, bb.msg.domain.Build, "Zero size logfile %s, removing" % logfile)
- os.remove(logfile)
- try:
- os.remove(loglink)
- except OSError as e:
- pass
-
# Close the backup fds
os.close(osi[0])
os.close(oso[0])
os.close(ose[0])
+ si.close()
+
+ logfile.close()
+ if os.path.exists(logfn) and os.path.getsize(logfn) == 0:
+ logger.debug(2, "Zero size logfn %s, removing", logfn)
+ bb.utils.remove(logfn)
+ bb.utils.remove(loglink)
+ event.fire(TaskSucceeded(task, localdata), localdata)
+
+ if not localdata.getVarFlag(task, 'nostamp') and not localdata.getVarFlag(task, 'selfstamp'):
+ make_stamp(task, localdata)
return 0
-def extract_stamp(d, fn):
- """
- Extracts stamp format which is either a data dictionary (fn unset)
- or a dataCache entry (fn set).
- """
- if fn:
- return d.stamp[fn]
- return data.getVar('STAMP', d, 1)
+def exec_task(fn, task, d):
+ try:
+ quieterr = False
+ if d.getVarFlag(task, "quieterrors") is not None:
+ quieterr = True
+
+ return _exec_task(fn, task, d, quieterr)
+ except Exception:
+ from traceback import format_exc
+ if not quieterr:
+ logger.error("Build of %s failed" % (task))
+ logger.error(format_exc())
+ failedevent = TaskFailed("Task Failed", None, task, d)
+ event.fire(failedevent, d)
+ return 1
-def stamp_internal(task, d, file_name):
+def stamp_internal(taskname, d, file_name):
"""
Internal stamp helper function
- Removes any stamp for the given task
Makes sure the stamp directory exists
Returns the stamp path+filename
+
+ In the bitbake core, d can be a CacheData and file_name will be set.
+ When called in task context, d will be a data store, file_name will not be set
"""
- stamp = extract_stamp(d, file_name)
+ taskflagname = taskname
+ if taskname.endswith("_setscene") and taskname != "do_setscene":
+ taskflagname = taskname.replace("_setscene", "")
+
+ if file_name:
+ stamp = d.stamp[file_name]
+ extrainfo = d.stamp_extrainfo[file_name].get(taskflagname) or ""
+ else:
+ stamp = d.getVar('STAMP', True)
+ file_name = d.getVar('BB_FILENAME', True)
+ extrainfo = d.getVarFlag(taskflagname, 'stamp-extra-info', True) or ""
+
if not stamp:
return
- stamp = "%s.%s" % (stamp, task)
+
+ stamp = bb.parse.siggen.stampfile(stamp, file_name, taskname, extrainfo)
+
bb.utils.mkdirhier(os.path.dirname(stamp))
- # Remove the file and recreate to force timestamp
- # change on broken NFS filesystems
- if os.access(stamp, os.F_OK):
- os.remove(stamp)
+
return stamp
def make_stamp(task, d, file_name = None):
@@ -389,7 +404,10 @@ def make_stamp(task, d, file_name = None):
(d can be a data dict or dataCache)
"""
stamp = stamp_internal(task, d, file_name)
+ # Remove the file and recreate to force timestamp
+ # change on broken NFS filesystems
if stamp:
+ bb.utils.remove(stamp)
f = open(stamp, "w")
f.close()
@@ -398,7 +416,15 @@ def del_stamp(task, d, file_name = None):
Removes a stamp for a given task
(d can be a data dict or dataCache)
"""
- stamp_internal(task, d, file_name)
+ stamp = stamp_internal(task, d, file_name)
+ bb.utils.remove(stamp)
+
+def stampfile(taskname, d, file_name = None):
+ """
+ Return the stamp for a given task
+ (d can be a data dict or dataCache)
+ """
+ return stamp_internal(taskname, d, file_name)
def add_tasks(tasklist, d):
task_deps = data.getVar('_task_deps', d)
diff --git a/bitbake/lib/bb/cache.py b/bitbake/lib/bb/cache.py
index c6f3794d5e..ff42a37b44 100644
--- a/bitbake/lib/bb/cache.py
+++ b/bitbake/lib/bb/cache.py
@@ -29,27 +29,153 @@
import os
+import logging
+from collections import defaultdict, namedtuple
import bb.data
import bb.utils
+logger = logging.getLogger("BitBake.Cache")
+
try:
import cPickle as pickle
except ImportError:
import pickle
- bb.msg.note(1, bb.msg.domain.Cache, "Importing cPickle failed. Falling back to a very slow implementation.")
-
-__cache_version__ = "132"
-
-class Cache:
+ logger.info("Importing cPickle failed. "
+ "Falling back to a very slow implementation.")
+
+__cache_version__ = "136"
+
+recipe_fields = (
+ 'pn',
+ 'pv',
+ 'pr',
+ 'pe',
+ 'defaultpref',
+ 'depends',
+ 'provides',
+ 'task_deps',
+ 'stamp',
+ 'stamp_extrainfo',
+ 'broken',
+ 'not_world',
+ 'skipped',
+ 'timestamp',
+ 'packages',
+ 'packages_dynamic',
+ 'rdepends',
+ 'rdepends_pkg',
+ 'rprovides',
+ 'rprovides_pkg',
+ 'rrecommends',
+ 'rrecommends_pkg',
+ 'nocache',
+ 'variants',
+ 'file_depends',
+ 'tasks',
+ 'basetaskhashes',
+ 'hashfilename',
+)
+
+
+class RecipeInfo(namedtuple('RecipeInfo', recipe_fields)):
+ __slots__ = ()
+
+ @classmethod
+ def listvar(cls, var, metadata):
+ return cls.getvar(var, metadata).split()
+
+ @classmethod
+ def intvar(cls, var, metadata):
+ return int(cls.getvar(var, metadata) or 0)
+
+ @classmethod
+ def depvar(cls, var, metadata):
+ return bb.utils.explode_deps(cls.getvar(var, metadata))
+
+ @classmethod
+ def pkgvar(cls, var, packages, metadata):
+ return dict((pkg, cls.depvar("%s_%s" % (var, pkg), metadata))
+ for pkg in packages)
+
+ @classmethod
+ def taskvar(cls, var, tasks, metadata):
+ return dict((task, cls.getvar("%s_task-%s" % (var, task), metadata))
+ for task in tasks)
+
+ @classmethod
+ def flaglist(cls, flag, varlist, metadata):
+ return dict((var, metadata.getVarFlag(var, flag, True))
+ for var in varlist)
+
+ @classmethod
+ def getvar(cls, var, metadata):
+ return metadata.getVar(var, True) or ''
+
+ @classmethod
+ def make_optional(cls, default=None, **kwargs):
+ """Construct the namedtuple from the specified keyword arguments,
+ with every value considered optional, using the default value if
+ it was not specified."""
+ for field in cls._fields:
+ kwargs[field] = kwargs.get(field, default)
+ return cls(**kwargs)
+
+ @classmethod
+ def from_metadata(cls, filename, metadata):
+ if cls.getvar('__SKIPPED', metadata):
+ return cls.make_optional(skipped=True)
+
+ tasks = metadata.getVar('__BBTASKS', False)
+
+ pn = cls.getvar('PN', metadata)
+ packages = cls.listvar('PACKAGES', metadata)
+ if not pn in packages:
+ packages.append(pn)
+
+ return RecipeInfo(
+ tasks = tasks,
+ basetaskhashes = cls.taskvar('BB_BASEHASH', tasks, metadata),
+ hashfilename = cls.getvar('BB_HASHFILENAME', metadata),
+
+ file_depends = metadata.getVar('__depends', False),
+ task_deps = metadata.getVar('_task_deps', False) or
+ {'tasks': [], 'parents': {}},
+ variants = cls.listvar('__VARIANTS', metadata) + [''],
+
+ skipped = False,
+ timestamp = bb.parse.cached_mtime(filename),
+ packages = cls.listvar('PACKAGES', metadata),
+ pn = pn,
+ pe = cls.getvar('PE', metadata),
+ pv = cls.getvar('PV', metadata),
+ pr = cls.getvar('PR', metadata),
+ nocache = cls.getvar('__BB_DONT_CACHE', metadata),
+ defaultpref = cls.intvar('DEFAULT_PREFERENCE', metadata),
+ broken = cls.getvar('BROKEN', metadata),
+ not_world = cls.getvar('EXCLUDE_FROM_WORLD', metadata),
+ stamp = cls.getvar('STAMP', metadata),
+ stamp_extrainfo = cls.flaglist('stamp-extra-info', tasks, metadata),
+ packages_dynamic = cls.listvar('PACKAGES_DYNAMIC', metadata),
+ depends = cls.depvar('DEPENDS', metadata),
+ provides = cls.depvar('PROVIDES', metadata),
+ rdepends = cls.depvar('RDEPENDS', metadata),
+ rprovides = cls.depvar('RPROVIDES', metadata),
+ rrecommends = cls.depvar('RRECOMMENDS', metadata),
+ rprovides_pkg = cls.pkgvar('RPROVIDES', packages, metadata),
+ rdepends_pkg = cls.pkgvar('RDEPENDS', packages, metadata),
+ rrecommends_pkg = cls.pkgvar('RRECOMMENDS', packages, metadata),
+ )
+
+
+class Cache(object):
"""
BitBake Cache implementation
"""
- def __init__(self, data):
-
+ def __init__(self, data):
self.cachedir = bb.data.getVar("CACHE", data, True)
- self.clean = {}
- self.checked = {}
+ self.clean = set()
+ self.checked = set()
self.depends_cache = {}
self.data = None
self.data_fn = None
@@ -57,92 +183,74 @@ class Cache:
if self.cachedir in [None, '']:
self.has_cache = False
- bb.msg.note(1, bb.msg.domain.Cache, "Not using a cache. Set CACHE = <directory> to enable.")
+ logger.info("Not using a cache. "
+ "Set CACHE = <directory> to enable.")
return
self.has_cache = True
self.cachefile = os.path.join(self.cachedir, "bb_cache.dat")
- bb.msg.debug(1, bb.msg.domain.Cache, "Using cache in '%s'" % self.cachedir)
+ logger.debug(1, "Using cache in '%s'", self.cachedir)
bb.utils.mkdirhier(self.cachedir)
# If any of configuration.data's dependencies are newer than the
# cache there isn't even any point in loading it...
newest_mtime = 0
- deps = bb.data.getVar("__depends", data)
+ deps = bb.data.getVar("__base_depends", data)
- old_mtimes = [old_mtime for f, old_mtime in deps]
+ old_mtimes = [old_mtime for _, old_mtime in deps]
old_mtimes.append(newest_mtime)
newest_mtime = max(old_mtimes)
if bb.parse.cached_mtime_noerror(self.cachefile) >= newest_mtime:
- try:
- p = pickle.Unpickler(file(self.cachefile, "rb"))
- self.depends_cache, version_data = p.load()
- if version_data['CACHE_VER'] != __cache_version__:
- raise ValueError('Cache Version Mismatch')
- if version_data['BITBAKE_VER'] != bb.__version__:
- raise ValueError('Bitbake Version Mismatch')
- except EOFError:
- bb.msg.note(1, bb.msg.domain.Cache, "Truncated cache found, rebuilding...")
- self.depends_cache = {}
- except:
- bb.msg.note(1, bb.msg.domain.Cache, "Invalid cache found, rebuilding...")
- self.depends_cache = {}
- else:
- if os.path.isfile(self.cachefile):
- bb.msg.note(1, bb.msg.domain.Cache, "Out of date cache found, rebuilding...")
-
- def getVar(self, var, fn, exp = 0):
- """
- Gets the value of a variable
- (similar to getVar in the data class)
-
- There are two scenarios:
- 1. We have cached data - serve from depends_cache[fn]
- 2. We're learning what data to cache - serve from data
- backend but add a copy of the data to the cache.
- """
- if fn in self.clean:
- return self.depends_cache[fn][var]
-
- self.depends_cache.setdefault(fn, {})
-
- if fn != self.data_fn:
- # We're trying to access data in the cache which doesn't exist
- # yet setData hasn't been called to setup the right access. Very bad.
- bb.msg.error(bb.msg.domain.Cache, "Parsing error data_fn %s and fn %s don't match" % (self.data_fn, fn))
-
- self.cacheclean = False
- result = bb.data.getVar(var, self.data, exp)
- self.depends_cache[fn][var] = result
- return result
-
- def setData(self, virtualfn, fn, data):
- """
- Called to prime bb_cache ready to learn which variables to cache.
- Will be followed by calls to self.getVar which aren't cached
- but can be fulfilled from self.data.
- """
- self.data_fn = virtualfn
- self.data = data
-
- # Make sure __depends makes the depends_cache
- # If we're a virtual class we need to make sure all our depends are appended
- # to the depends of fn.
- depends = self.getVar("__depends", virtualfn) or set()
- self.depends_cache.setdefault(fn, {})
- if "__depends" not in self.depends_cache[fn] or not self.depends_cache[fn]["__depends"]:
- self.depends_cache[fn]["__depends"] = depends
- else:
- self.depends_cache[fn]["__depends"].update(depends)
-
- # Make sure the variants always make it into the cache too
- self.getVar('__VARIANTS', virtualfn, True)
+ self.load_cachefile()
+ elif os.path.isfile(self.cachefile):
+ logger.info("Out of date cache found, rebuilding...")
- self.depends_cache[virtualfn]["CACHETIMESTAMP"] = bb.parse.cached_mtime(fn)
-
- def virtualfn2realfn(self, virtualfn):
+ def load_cachefile(self):
+ with open(self.cachefile, "rb") as cachefile:
+ pickled = pickle.Unpickler(cachefile)
+ try:
+ cache_ver = pickled.load()
+ bitbake_ver = pickled.load()
+ except Exception:
+ logger.info('Invalid cache, rebuilding...')
+ return
+
+ if cache_ver != __cache_version__:
+ logger.info('Cache version mismatch, rebuilding...')
+ return
+ elif bitbake_ver != bb.__version__:
+ logger.info('Bitbake version mismatch, rebuilding...')
+ return
+
+ cachesize = os.fstat(cachefile.fileno()).st_size
+ bb.event.fire(bb.event.CacheLoadStarted(cachesize), self.data)
+
+ previous_percent = 0
+ while cachefile:
+ try:
+ key = pickled.load()
+ value = pickled.load()
+ except Exception:
+ break
+
+ self.depends_cache[key] = value
+
+ # only fire events on even percentage boundaries
+ current_progress = cachefile.tell()
+ current_percent = 100 * current_progress / cachesize
+ if current_percent > previous_percent:
+ previous_percent = current_percent
+ bb.event.fire(bb.event.CacheLoadProgress(current_progress),
+ self.data)
+
+ bb.event.fire(bb.event.CacheLoadCompleted(cachesize,
+ len(self.depends_cache)),
+ self.data)
+
+ @staticmethod
+ def virtualfn2realfn(virtualfn):
"""
Convert a virtual file name to a real one + the associated subclass keyword
"""
@@ -152,79 +260,94 @@ class Cache:
if virtualfn.startswith('virtual:'):
cls = virtualfn.split(':', 2)[1]
fn = virtualfn.replace('virtual:' + cls + ':', '')
- #bb.msg.debug(2, bb.msg.domain.Cache, "virtualfn2realfn %s to %s %s" % (virtualfn, fn, cls))
return (fn, cls)
- def realfn2virtual(self, realfn, cls):
+ @staticmethod
+ def realfn2virtual(realfn, cls):
"""
Convert a real filename + the associated subclass keyword to a virtual filename
"""
if cls == "":
- #bb.msg.debug(2, bb.msg.domain.Cache, "realfn2virtual %s and '%s' to %s" % (realfn, cls, realfn))
return realfn
- #bb.msg.debug(2, bb.msg.domain.Cache, "realfn2virtual %s and %s to %s" % (realfn, cls, "virtual:" + cls + ":" + realfn))
return "virtual:" + cls + ":" + realfn
- def loadDataFull(self, virtualfn, appends, cfgData):
+ @classmethod
+ def loadDataFull(cls, virtualfn, appends, cfgData):
"""
Return a complete set of data for fn.
To do this, we need to parse the file.
"""
- (fn, cls) = self.virtualfn2realfn(virtualfn)
-
- bb.msg.debug(1, bb.msg.domain.Cache, "Parsing %s (full)" % fn)
+ (fn, virtual) = cls.virtualfn2realfn(virtualfn)
+
+ logger.debug(1, "Parsing %s (full)", fn)
+
+ bb_data = cls.load_bbfile(fn, appends, cfgData)
+ return bb_data[virtual]
+
+ @classmethod
+ def parse(cls, filename, appends, configdata):
+ """Parse the specified filename, returning the recipe information"""
+ infos = []
+ datastores = cls.load_bbfile(filename, appends, configdata)
+ depends = set()
+ for variant, data in sorted(datastores.iteritems(),
+ key=lambda i: i[0],
+ reverse=True):
+ virtualfn = cls.realfn2virtual(filename, variant)
+ depends |= (data.getVar("__depends", False) or set())
+ if depends and not variant:
+ data.setVar("__depends", depends)
+ info = RecipeInfo.from_metadata(filename, data)
+ infos.append((virtualfn, info))
+ return infos
+
+ def load(self, filename, appends, configdata):
+ """Obtain the recipe information for the specified filename,
+ using cached values if available, otherwise parsing.
+
+ Note that if it does parse to obtain the info, it will not
+ automatically add the information to the cache or to your
+ CacheData. Use the add or add_info method to do so after
+ running this, or use loadData instead."""
+ cached = self.cacheValid(filename)
+ if cached:
+ infos = []
+ info = self.depends_cache[filename]
+ for variant in info.variants:
+ virtualfn = self.realfn2virtual(filename, variant)
+ infos.append((virtualfn, self.depends_cache[virtualfn]))
+ else:
+ logger.debug(1, "Parsing %s", filename)
+ return self.parse(filename, appends, configdata)
- bb_data = self.load_bbfile(fn, appends, cfgData)
- return bb_data[cls]
+ return cached, infos
def loadData(self, fn, appends, cfgData, cacheData):
- """
- Load a subset of data for fn.
- If the cached data is valid we do nothing,
- To do this, we need to parse the file and set the system
- to record the variables accessed.
- Return the cache status and whether the file was skipped when parsed
- """
- skipped = 0
- virtuals = 0
-
- if fn not in self.checked:
- self.cacheValidUpdate(fn)
-
- if self.cacheValid(fn):
- multi = self.getVar('__VARIANTS', fn, True)
- for cls in (multi or "").split() + [""]:
- virtualfn = self.realfn2virtual(fn, cls)
- if self.depends_cache[virtualfn]["__SKIPPED"]:
- skipped += 1
- bb.msg.debug(1, bb.msg.domain.Cache, "Skipping %s" % virtualfn)
- continue
- self.handle_data(virtualfn, cacheData)
- virtuals += 1
- return True, skipped, virtuals
-
- bb.msg.debug(1, bb.msg.domain.Cache, "Parsing %s" % fn)
-
- bb_data = self.load_bbfile(fn, appends, cfgData)
-
- for data in bb_data:
- virtualfn = self.realfn2virtual(fn, data)
- self.setData(virtualfn, fn, bb_data[data])
- if self.getVar("__SKIPPED", virtualfn):
+ """Load the recipe info for the specified filename,
+ parsing and adding to the cache if necessary, and adding
+ the recipe information to the supplied CacheData instance."""
+ skipped, virtuals = 0, 0
+
+ cached, infos = self.load(fn, appends, cfgData)
+ for virtualfn, info in infos:
+ if info.skipped:
+ logger.debug(1, "Skipping %s", virtualfn)
skipped += 1
- bb.msg.debug(1, bb.msg.domain.Cache, "Skipping %s" % virtualfn)
else:
- self.handle_data(virtualfn, cacheData)
+ self.add_info(virtualfn, info, cacheData, not cached)
virtuals += 1
- return False, skipped, virtuals
+ return cached, skipped, virtuals
def cacheValid(self, fn):
"""
Is the cache valid for fn?
Fast version, no timestamps checked.
"""
+ if fn not in self.checked:
+ self.cacheValidUpdate(fn)
+
# Is cache enabled?
if not self.has_cache:
return False
@@ -241,70 +364,67 @@ class Cache:
if not self.has_cache:
return False
- self.checked[fn] = ""
-
- # Pretend we're clean so getVar works
- self.clean[fn] = ""
+ self.checked.add(fn)
# File isn't in depends_cache
if not fn in self.depends_cache:
- bb.msg.debug(2, bb.msg.domain.Cache, "Cache: %s is not cached" % fn)
- self.remove(fn)
+ logger.debug(2, "Cache: %s is not cached", fn)
return False
mtime = bb.parse.cached_mtime_noerror(fn)
# Check file still exists
if mtime == 0:
- bb.msg.debug(2, bb.msg.domain.Cache, "Cache: %s no longer exists" % fn)
+ logger.debug(2, "Cache: %s no longer exists", fn)
self.remove(fn)
return False
+ info = self.depends_cache[fn]
# Check the file's timestamp
- if mtime != self.getVar("CACHETIMESTAMP", fn, True):
- bb.msg.debug(2, bb.msg.domain.Cache, "Cache: %s changed" % fn)
+ if mtime != info.timestamp:
+ logger.debug(2, "Cache: %s changed", fn)
self.remove(fn)
return False
# Check dependencies are still valid
- depends = self.getVar("__depends", fn, True)
+ depends = info.file_depends
if depends:
for f, old_mtime in depends:
fmtime = bb.parse.cached_mtime_noerror(f)
# Check if file still exists
if old_mtime != 0 and fmtime == 0:
+ logger.debug(2, "Cache: %s's dependency %s was removed",
+ fn, f)
self.remove(fn)
return False
if (fmtime != old_mtime):
- bb.msg.debug(2, bb.msg.domain.Cache, "Cache: %s's dependency %s changed" % (fn, f))
+ logger.debug(2, "Cache: %s's dependency %s changed",
+ fn, f)
self.remove(fn)
return False
- #bb.msg.debug(2, bb.msg.domain.Cache, "Depends Cache: %s is clean" % fn)
- if not fn in self.clean:
- self.clean[fn] = ""
-
invalid = False
- # Mark extended class data as clean too
- multi = self.getVar('__VARIANTS', fn, True)
- for cls in (multi or "").split():
+ for cls in info.variants:
virtualfn = self.realfn2virtual(fn, cls)
- self.clean[virtualfn] = ""
- if not virtualfn in self.depends_cache:
- bb.msg.debug(2, bb.msg.domain.Cache, "Cache: %s is not cached" % virtualfn)
+ self.clean.add(virtualfn)
+ if virtualfn not in self.depends_cache:
+ logger.debug(2, "Cache: %s is not cached", virtualfn)
invalid = True
- # If any one of the varients is not present, mark cache as invalid for all
+ # If any one of the variants is not present, mark as invalid for all
if invalid:
- for cls in (multi or "").split():
+ for cls in info.variants:
virtualfn = self.realfn2virtual(fn, cls)
- bb.msg.debug(2, bb.msg.domain.Cache, "Cache: Removing %s from cache" % virtualfn)
- del self.clean[virtualfn]
- bb.msg.debug(2, bb.msg.domain.Cache, "Cache: Removing %s from cache" % fn)
- del self.clean[fn]
+ if virtualfn in self.clean:
+ logger.debug(2, "Cache: Removing %s from cache", virtualfn)
+ self.clean.remove(virtualfn)
+ if fn in self.clean:
+ logger.debug(2, "Cache: Marking %s as not clean", fn)
+ self.clean.remove(fn)
return False
+ self.clean.add(fn)
return True
def remove(self, fn):
@@ -312,154 +432,61 @@ class Cache:
Remove a fn from the cache
Called from the parser in error cases
"""
- bb.msg.debug(1, bb.msg.domain.Cache, "Removing %s from cache" % fn)
if fn in self.depends_cache:
+ logger.debug(1, "Removing %s from cache", fn)
del self.depends_cache[fn]
if fn in self.clean:
- del self.clean[fn]
+ logger.debug(1, "Marking %s as unclean", fn)
+ self.clean.remove(fn)
def sync(self):
"""
Save the cache
Called from the parser when complete (or exiting)
"""
- import copy
if not self.has_cache:
return
if self.cacheclean:
- bb.msg.note(1, bb.msg.domain.Cache, "Cache is clean, not saving.")
+ logger.debug(2, "Cache is clean, not saving.")
return
- version_data = {}
- version_data['CACHE_VER'] = __cache_version__
- version_data['BITBAKE_VER'] = bb.__version__
-
- cache_data = copy.copy(self.depends_cache)
- for fn in self.depends_cache:
- if '__BB_DONT_CACHE' in self.depends_cache[fn] and self.depends_cache[fn]['__BB_DONT_CACHE']:
- bb.msg.debug(2, bb.msg.domain.Cache, "Not caching %s, marked as not cacheable" % fn)
- del cache_data[fn]
- elif 'PV' in self.depends_cache[fn] and 'SRCREVINACTION' in self.depends_cache[fn]['PV']:
- bb.msg.error(bb.msg.domain.Cache, "Not caching %s as it had SRCREVINACTION in PV. Please report this bug" % fn)
- del cache_data[fn]
+ with open(self.cachefile, "wb") as cachefile:
+ pickler = pickle.Pickler(cachefile, pickle.HIGHEST_PROTOCOL)
+ pickler.dump(__cache_version__)
+ pickler.dump(bb.__version__)
+ for key, value in self.depends_cache.iteritems():
+ pickler.dump(key)
+ pickler.dump(value)
- p = pickle.Pickler(file(self.cachefile, "wb" ), -1 )
- p.dump([cache_data, version_data])
+ del self.depends_cache
- def mtime(self, cachefile):
+ @staticmethod
+ def mtime(cachefile):
return bb.parse.cached_mtime_noerror(cachefile)
- def handle_data(self, file_name, cacheData):
+ def add_info(self, filename, info, cacheData, parsed=None):
+ cacheData.add_from_recipeinfo(filename, info)
+ if not self.has_cache:
+ return
+
+ if 'SRCREVINACTION' not in info.pv and not info.nocache:
+ if parsed:
+ self.cacheclean = False
+ self.depends_cache[filename] = info
+
+ def add(self, file_name, data, cacheData, parsed=None):
"""
Save data we need into the cache
"""
- pn = self.getVar('PN', file_name, True)
- pe = self.getVar('PE', file_name, True) or "0"
- pv = self.getVar('PV', file_name, True)
- if 'SRCREVINACTION' in pv:
- bb.msg.note(1, bb.msg.domain.Cache, "Found SRCREVINACTION in PV (%s) or %s. Please report this bug." % (pv, file_name))
- pr = self.getVar('PR', file_name, True)
- dp = int(self.getVar('DEFAULT_PREFERENCE', file_name, True) or "0")
- depends = bb.utils.explode_deps(self.getVar("DEPENDS", file_name, True) or "")
- packages = (self.getVar('PACKAGES', file_name, True) or "").split()
- packages_dynamic = (self.getVar('PACKAGES_DYNAMIC', file_name, True) or "").split()
- rprovides = (self.getVar("RPROVIDES", file_name, True) or "").split()
-
- cacheData.task_deps[file_name] = self.getVar("_task_deps", file_name)
-
- # build PackageName to FileName lookup table
- if pn not in cacheData.pkg_pn:
- cacheData.pkg_pn[pn] = []
- cacheData.pkg_pn[pn].append(file_name)
-
- cacheData.stamp[file_name] = self.getVar('STAMP', file_name, True)
-
- cacheData.tasks[file_name] = self.getVar('__BBTASKS', file_name, True)
- for t in cacheData.tasks[file_name]:
- cacheData.basetaskhash[file_name + "." + t] = self.getVar("BB_BASEHASH_task-%s" % t, file_name, True)
-
- # build FileName to PackageName lookup table
- cacheData.pkg_fn[file_name] = pn
- cacheData.pkg_pepvpr[file_name] = (pe, pv, pr)
- cacheData.pkg_dp[file_name] = dp
-
- provides = [pn]
- for provide in (self.getVar("PROVIDES", file_name, True) or "").split():
- if provide not in provides:
- provides.append(provide)
-
- # Build forward and reverse provider hashes
- # Forward: virtual -> [filenames]
- # Reverse: PN -> [virtuals]
- if pn not in cacheData.pn_provides:
- cacheData.pn_provides[pn] = []
-
- cacheData.fn_provides[file_name] = provides
- for provide in provides:
- if provide not in cacheData.providers:
- cacheData.providers[provide] = []
- cacheData.providers[provide].append(file_name)
- if not provide in cacheData.pn_provides[pn]:
- cacheData.pn_provides[pn].append(provide)
-
- cacheData.deps[file_name] = []
- for dep in depends:
- if not dep in cacheData.deps[file_name]:
- cacheData.deps[file_name].append(dep)
- if not dep in cacheData.all_depends:
- cacheData.all_depends.append(dep)
-
- # Build reverse hash for PACKAGES, so runtime dependencies
- # can be be resolved (RDEPENDS, RRECOMMENDS etc.)
- for package in packages:
- if not package in cacheData.packages:
- cacheData.packages[package] = []
- cacheData.packages[package].append(file_name)
- rprovides += (self.getVar("RPROVIDES_%s" % package, file_name, 1) or "").split()
-
- for package in packages_dynamic:
- if not package in cacheData.packages_dynamic:
- cacheData.packages_dynamic[package] = []
- cacheData.packages_dynamic[package].append(file_name)
-
- for rprovide in rprovides:
- if not rprovide in cacheData.rproviders:
- cacheData.rproviders[rprovide] = []
- cacheData.rproviders[rprovide].append(file_name)
-
- # Build hash of runtime depends and rececommends
-
- if not file_name in cacheData.rundeps:
- cacheData.rundeps[file_name] = {}
- if not file_name in cacheData.runrecs:
- cacheData.runrecs[file_name] = {}
-
- rdepends = self.getVar('RDEPENDS', file_name, True) or ""
- rrecommends = self.getVar('RRECOMMENDS', file_name, True) or ""
- for package in packages + [pn]:
- if not package in cacheData.rundeps[file_name]:
- cacheData.rundeps[file_name][package] = []
- if not package in cacheData.runrecs[file_name]:
- cacheData.runrecs[file_name][package] = []
-
- cacheData.rundeps[file_name][package] = rdepends + " " + (self.getVar("RDEPENDS_%s" % package, file_name, True) or "")
- cacheData.runrecs[file_name][package] = rrecommends + " " + (self.getVar("RRECOMMENDS_%s" % package, file_name, True) or "")
-
- # Collect files we may need for possible world-dep
- # calculations
- if not self.getVar('BROKEN', file_name, True) and not self.getVar('EXCLUDE_FROM_WORLD', file_name, True):
- cacheData.possible_world.append(file_name)
+ realfn = self.virtualfn2realfn(file_name)[0]
+ info = RecipeInfo.from_metadata(realfn, data)
+ self.add_info(file_name, info, cacheData, parsed)
- cacheData.hashfn[file_name] = self.getVar('BB_HASHFILENAME', file_name, True)
-
- # Touch this to make sure its in the cache
- self.getVar('__BB_DONT_CACHE', file_name, True)
- self.getVar('__VARIANTS', file_name, True)
-
- def load_bbfile(self, bbfile, appends, config):
+ @staticmethod
+ def load_bbfile(bbfile, appends, config):
"""
Load and parse one .bb build file
Return the data and whether parsing resulted in the file being skipped
@@ -485,13 +512,16 @@ class Cache:
try:
if appends:
data.setVar('__BBAPPEND', " ".join(appends), bb_data)
- bb_data = parse.handle(bbfile, bb_data) # read .bb data
- if chdir_back: os.chdir(oldpath)
+ bb_data = parse.handle(bbfile, bb_data)
+ if chdir_back:
+ os.chdir(oldpath)
return bb_data
except:
- if chdir_back: os.chdir(oldpath)
+ if chdir_back:
+ os.chdir(oldpath)
raise
+
def init(cooker):
"""
The Objective: Cache the minimum amount of data possible yet get to the
@@ -512,11 +542,7 @@ def init(cooker):
return Cache(cooker.configuration.data)
-
-#============================================================================#
-# CacheData
-#============================================================================#
-class CacheData:
+class CacheData(object):
"""
The data structures we compile from the cached data
"""
@@ -524,26 +550,26 @@ class CacheData:
def __init__(self):
"""
Direct cache variables
- (from Cache.handle_data)
"""
- self.providers = {}
- self.rproviders = {}
- self.packages = {}
- self.packages_dynamic = {}
+ self.providers = defaultdict(list)
+ self.rproviders = defaultdict(list)
+ self.packages = defaultdict(list)
+ self.packages_dynamic = defaultdict(list)
self.possible_world = []
- self.pkg_pn = {}
+ self.pkg_pn = defaultdict(list)
self.pkg_fn = {}
self.pkg_pepvpr = {}
self.pkg_dp = {}
- self.pn_provides = {}
+ self.pn_provides = defaultdict(list)
self.fn_provides = {}
self.all_depends = []
- self.deps = {}
- self.rundeps = {}
- self.runrecs = {}
+ self.deps = defaultdict(list)
+ self.rundeps = defaultdict(lambda: defaultdict(list))
+ self.runrecs = defaultdict(lambda: defaultdict(list))
self.task_queues = {}
self.task_deps = {}
self.stamp = {}
+ self.stamp_extrainfo = {}
self.preferred = {}
self.tasks = {}
self.basetaskhash = {}
@@ -557,3 +583,55 @@ class CacheData:
self.world_target = set()
self.bbfile_priority = {}
self.bbfile_config_priorities = []
+
+ def add_from_recipeinfo(self, fn, info):
+ self.task_deps[fn] = info.task_deps
+ self.pkg_fn[fn] = info.pn
+ self.pkg_pn[info.pn].append(fn)
+ self.pkg_pepvpr[fn] = (info.pe, info.pv, info.pr)
+ self.pkg_dp[fn] = info.defaultpref
+ self.stamp[fn] = info.stamp
+ self.stamp_extrainfo[fn] = info.stamp_extrainfo
+
+ provides = [info.pn]
+ for provide in info.provides:
+ if provide not in provides:
+ provides.append(provide)
+ self.fn_provides[fn] = provides
+
+ for provide in provides:
+ self.providers[provide].append(fn)
+ if provide not in self.pn_provides[info.pn]:
+ self.pn_provides[info.pn].append(provide)
+
+ for dep in info.depends:
+ if dep not in self.deps[fn]:
+ self.deps[fn].append(dep)
+ if dep not in self.all_depends:
+ self.all_depends.append(dep)
+
+ rprovides = info.rprovides
+ for package in info.packages:
+ self.packages[package].append(fn)
+ rprovides += info.rprovides_pkg[package]
+
+ for rprovide in rprovides:
+ self.rproviders[rprovide].append(fn)
+
+ for package in info.packages_dynamic:
+ self.packages_dynamic[package].append(fn)
+
+ # Build hash of runtime depends and rececommends
+ for package in info.packages + [info.pn]:
+ self.rundeps[fn][package] = list(info.rdepends) + info.rdepends_pkg[package]
+ self.runrecs[fn][package] = list(info.rrecommends) + info.rrecommends_pkg[package]
+
+ # Collect files we may need for possible world-dep
+ # calculations
+ if not info.broken and not info.not_world:
+ self.possible_world.append(fn)
+
+ self.hashfn[fn] = info.hashfilename
+ for task, taskhash in info.basetaskhashes.iteritems():
+ identifier = '%s.%s' % (fn, task)
+ self.basetaskhash[identifier] = taskhash
diff --git a/bitbake/lib/bb/codeparser.py b/bitbake/lib/bb/codeparser.py
index ba3009212b..bfffcacc33 100644
--- a/bitbake/lib/bb/codeparser.py
+++ b/bitbake/lib/bb/codeparser.py
@@ -1,16 +1,21 @@
-from pysh import pyshyacc, pyshlex
-from itertools import chain
-from bb import msg, utils
import ast
import codegen
+import logging
+import os.path
+import bb.utils, bb.data
+from itertools import chain
+from pysh import pyshyacc, pyshlex
+
+logger = logging.getLogger('BitBake.CodeParser')
PARSERCACHE_VERSION = 2
try:
import cPickle as pickle
except ImportError:
import pickle
- bb.msg.note(1, bb.msg.domain.Cache, "Importing cPickle failed. Falling back to a very slow implementation.")
+ logger.info('Importing cPickle failed. Falling back to a very slow implementation.')
+
def check_indent(codestr):
"""If the code is indented, add a top level piece of code to 'remove' the indentation"""
@@ -23,7 +28,7 @@ def check_indent(codestr):
return codestr
if codestr[i-1] is " " or codestr[i-1] is " ":
- return "if 1:\n" + codestr
+ return "if 1:\n" + codestr
return codestr
@@ -31,15 +36,18 @@ pythonparsecache = {}
shellparsecache = {}
def parser_cachefile(d):
- cachedir = bb.data.getVar("PERSISTENT_DIR", d, True) or bb.data.getVar("CACHE", d, True)
+ cachedir = (bb.data.getVar("PERSISTENT_DIR", d, True) or
+ bb.data.getVar("CACHE", d, True))
if cachedir in [None, '']:
return None
bb.utils.mkdirhier(cachedir)
cachefile = os.path.join(cachedir, "bb_codeparser.dat")
- bb.msg.debug(1, bb.msg.domain.Cache, "Using cache in '%s' for codeparser cache" % cachefile)
+ logger.debug(1, "Using cache in '%s' for codeparser cache", cachefile)
return cachefile
def parser_cache_init(d):
+ global pythonparsecache
+ global shellparsecache
cachefile = parser_cachefile(d)
if not cachefile:
@@ -54,17 +62,16 @@ def parser_cache_init(d):
if version != PARSERCACHE_VERSION:
return
- bb.codeparser.pythonparsecache = data[0]
- bb.codeparser.shellparsecache = data[1]
+ pythonparsecache = data[0]
+ shellparsecache = data[1]
def parser_cache_save(d):
-
cachefile = parser_cachefile(d)
if not cachefile:
return
p = pickle.Pickler(file(cachefile, "wb"), -1)
- p.dump([[bb.codeparser.pythonparsecache, bb.codeparser.shellparsecache], PARSERCACHE_VERSION])
+ p.dump([[pythonparsecache, shellparsecache], PARSERCACHE_VERSION])
class PythonParser():
class ValueVisitor():
@@ -129,10 +136,10 @@ class PythonParser():
funcstr = codegen.to_source(func)
argstr = codegen.to_source(arg)
except TypeError:
- msg.debug(2, None, "Failed to convert function and argument to source form")
+ logger.debug(2, 'Failed to convert function and argument to source form')
else:
- msg.debug(1, None, "Warning: in call to '%s', argument '%s' is not a literal" %
- (funcstr, argstr))
+ logger.debug(1, "Warning: in call to '%s', argument '%s' is "
+ "not a literal", funcstr, argstr)
def visit_Call(self, node):
if self.compare_name(self.getvars, node.func):
@@ -184,7 +191,7 @@ class PythonParser():
self.execs = pythonparsecache[h]["execs"]
return
- code = compile(check_indent(str(node)), "<string>", "exec",
+ code = compile(check_indent(str(node)), "<string>", "exec",
ast.PyCF_ONLY_AST)
visitor = self.ValueVisitor(code)
@@ -319,11 +326,11 @@ class ShellParser():
cmd = word[1]
if cmd.startswith("$"):
- msg.debug(1, None, "Warning: execution of non-literal command '%s'" % cmd)
+ logger.debug(1, "Warning: execution of non-literal "
+ "command '%s'", cmd)
elif cmd == "eval":
command = " ".join(word for _, word in words[1:])
self.parse_shell(command)
else:
self.allexecs.add(cmd)
break
-
diff --git a/bitbake/lib/bb/command.py b/bitbake/lib/bb/command.py
index 9a8d689e2a..b88089298c 100644
--- a/bitbake/lib/bb/command.py
+++ b/bitbake/lib/bb/command.py
@@ -35,12 +35,25 @@ import bb.data
async_cmds = {}
sync_cmds = {}
+
+class CommandCompleted(bb.event.Event):
+ pass
+
+class CommandExit(bb.event.Event):
+ def __init__(self, exitcode):
+ bb.event.Event.__init__(self)
+ self.exitcode = int(exitcode)
+
+class CommandFailed(CommandExit):
+ def __init__(self, message):
+ self.error = message
+ CommandExit.__init__(self, 1)
+
class Command:
"""
A queue of asynchronous commands for bitbake
"""
def __init__(self, cooker):
-
self.cooker = cooker
self.cmds_sync = CommandsSync()
self.cmds_async = CommandsAsync()
@@ -81,7 +94,8 @@ class Command:
(command, options) = self.currentAsyncCommand
commandmethod = getattr(CommandsAsync, command)
needcache = getattr( commandmethod, "needcache" )
- if needcache and self.cooker.cookerState != bb.cooker.cookerParsed:
+ if (needcache and self.cooker.state in
+ (bb.cooker.state.initial, bb.cooker.state.parsing)):
self.cooker.updateCache()
return True
else:
@@ -104,11 +118,13 @@ class Command:
self.finishAsyncCommand(traceback.format_exc())
return False
- def finishAsyncCommand(self, error = None):
- if error:
- bb.event.fire(CookerCommandFailed(error), self.cooker.configuration.event_data)
+ def finishAsyncCommand(self, msg=None, code=None):
+ if msg:
+ bb.event.fire(CommandFailed(msg), self.cooker.configuration.event_data)
+ elif code:
+ bb.event.fire(CommandExit(code), self.cooker.configuration.event_data)
else:
- bb.event.fire(CookerCommandCompleted(), self.cooker.configuration.event_data)
+ bb.event.fire(CommandCompleted(), self.cooker.configuration.event_data)
self.currentAsyncCommand = None
@@ -123,13 +139,13 @@ class CommandsSync:
"""
Trigger cooker 'shutdown' mode
"""
- command.cooker.cookerAction = bb.cooker.cookerShutdown
+ command.cooker.shutdown()
def stateStop(self, command, params):
"""
Stop the cooker
"""
- command.cooker.cookerAction = bb.cooker.cookerStop
+ command.cooker.stop()
def getCmdLineAction(self, command, params):
"""
@@ -248,33 +264,8 @@ class CommandsAsync:
"""
Parse the .bb files
"""
- command.cooker.compareRevisions()
- command.finishAsyncCommand()
+ if bb.fetch.fetcher_compare_revisions(command.cooker.configuration.data):
+ command.finishAsyncCommand(code=1)
+ else:
+ command.finishAsyncCommand()
compareRevisions.needcache = True
-
-#
-# Events
-#
-class CookerCommandCompleted(bb.event.Event):
- """
- Cooker command completed
- """
- def __init__(self):
- bb.event.Event.__init__(self)
-
-
-class CookerCommandFailed(bb.event.Event):
- """
- Cooker command completed
- """
- def __init__(self, error):
- bb.event.Event.__init__(self)
- self.error = error
-
-class CookerCommandSetExitCode(bb.event.Event):
- """
- Set the exit code for a cooker command
- """
- def __init__(self, exitcode):
- bb.event.Event.__init__(self)
- self.exitcode = int(exitcode)
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 95f38f6236..e524db7498 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
@@ -23,37 +24,36 @@
from __future__ import print_function
import sys, os, glob, os.path, re, time
+import atexit
+import itertools
+import logging
+import multiprocessing
+import signal
import sre_constants
+import threading
from cStringIO import StringIO
from contextlib import closing
import bb
from bb import utils, data, parse, event, cache, providers, taskdata, command, runqueue
+logger = logging.getLogger("BitBake")
+collectlog = logging.getLogger("BitBake.Collection")
+buildlog = logging.getLogger("BitBake.Build")
+parselog = logging.getLogger("BitBake.Parsing")
+providerlog = logging.getLogger("BitBake.Provider")
+
class MultipleMatches(Exception):
"""
Exception raised when multiple file matches are found
"""
-class ParsingErrorsFound(Exception):
- """
- Exception raised when parsing errors are found
- """
-
class NothingToBuild(Exception):
"""
Exception raised when there is nothing to build
"""
-
-# Different states cooker can be in
-cookerClean = 1
-cookerParsing = 2
-cookerParsed = 3
-
-# Different action states the cooker can be in
-cookerRun = 1 # Cooker is running normally
-cookerShutdown = 2 # Active tasks should be brought to a controlled stop
-cookerStop = 3 # Stop, now!
+class state:
+ initial, parsing, running, shutdown, stop = range(5)
#============================================================================#
# BBCooker
@@ -65,9 +65,7 @@ class BBCooker:
def __init__(self, configuration, server):
self.status = None
-
- self.cache = None
- self.bb_cache = None
+ self.appendlist = {}
if server:
self.server = server.BitBakeServer(self)
@@ -102,13 +100,12 @@ class BBCooker:
import termios
tcattr = termios.tcgetattr(fd)
if tcattr[3] & termios.TOSTOP:
- bb.msg.note(1, bb.msg.domain.Build, "The terminal had the TOSTOP bit set, clearing...")
+ buildlog.info("The terminal had the TOSTOP bit set, clearing...")
tcattr[3] = tcattr[3] & ~termios.TOSTOP
termios.tcsetattr(fd, termios.TCSANOW, tcattr)
self.command = bb.command.Command(self)
- self.cookerState = cookerClean
- self.cookerAction = cookerRun
+ self.state = state.initial
def parseConfiguration(self):
@@ -118,7 +115,7 @@ class BBCooker:
if nice:
curnice = os.nice(0)
nice = int(nice) - curnice
- bb.msg.note(2, bb.msg.domain.Build, "Renice to %s " % os.nice(nice))
+ buildlog.verbose("Renice to %s " % os.nice(nice))
def parseCommandLine(self):
# Parse any commandline into actions
@@ -126,11 +123,11 @@ class BBCooker:
self.commandlineAction = None
if 'world' in self.configuration.pkgs_to_build:
- bb.msg.error(bb.msg.domain.Build, "'world' is not a valid target for --environment.")
+ buildlog.error("'world' is not a valid target for --environment.")
elif len(self.configuration.pkgs_to_build) > 1:
- bb.msg.error(bb.msg.domain.Build, "Only one target can be used with the --environment option.")
+ buildlog.error("Only one target can be used with the --environment option.")
elif self.configuration.buildfile and len(self.configuration.pkgs_to_build) > 0:
- bb.msg.error(bb.msg.domain.Build, "No target should be used with the --environment and --buildfile options.")
+ buildlog.error("No target should be used with the --environment and --buildfile options.")
elif len(self.configuration.pkgs_to_build) > 0:
self.commandlineAction = ["showEnvironmentTarget", self.configuration.pkgs_to_build]
else:
@@ -148,13 +145,13 @@ class BBCooker:
self.commandlineAction = ["generateDotGraph", self.configuration.pkgs_to_build, self.configuration.cmd]
else:
self.commandlineAction = None
- bb.msg.error(bb.msg.domain.Build, "Please specify a package name for dependency graph generation.")
+ buildlog.error("Please specify a package name for dependency graph generation.")
else:
if self.configuration.pkgs_to_build:
self.commandlineAction = ["buildTargets", self.configuration.pkgs_to_build, self.configuration.cmd]
else:
self.commandlineAction = None
- bb.msg.error(bb.msg.domain.Build, "Nothing to do. Use 'bitbake world' to build everything, or run 'bitbake --help' for usage information.")
+ buildlog.error("Nothing to do. Use 'bitbake world' to build everything, or run 'bitbake --help' for usage information.")
def runCommands(self, server, data, abort):
"""
@@ -180,8 +177,8 @@ class BBCooker:
preferred_versions[pn] = (pref_ver, pref_file)
latest_versions[pn] = (last_ver, last_file)
- bb.msg.plain("%-35s %25s %25s" % ("Package Name", "Latest Version", "Preferred Version"))
- bb.msg.plain("%-35s %25s %25s\n" % ("============", "==============", "================="))
+ logger.plain("%-35s %25s %25s", "Package Name", "Latest Version", "Preferred Version")
+ logger.plain("%-35s %25s %25s\n", "============", "==============", "=================")
for p in sorted(pkg_pn):
pref = preferred_versions[p]
@@ -193,11 +190,7 @@ class BBCooker:
if pref == latest:
prefstr = ""
- bb.msg.plain("%-35s %25s %25s" % (p, lateststr, prefstr))
-
- def compareRevisions(self):
- ret = bb.fetch.fetcher_compare_revisons(self.configuration.data)
- bb.event.fire(bb.command.CookerCommandSetExitCode(ret), self.configuration.event_data)
+ logger.plain("%-35s %25s %25s", p, lateststr, prefstr)
def showEnvironment(self, buildfile = None, pkgs_to_build = []):
"""
@@ -207,8 +200,6 @@ class BBCooker:
envdata = None
if buildfile:
- self.cb = None
- self.bb_cache = bb.cache.init(self)
fn = self.matchFile(buildfile)
elif len(pkgs_to_build) == 1:
self.updateCache()
@@ -229,28 +220,22 @@ class BBCooker:
if fn:
try:
- envdata = self.bb_cache.loadDataFull(fn, self.get_file_appends(fn), self.configuration.data)
- except IOError as e:
- bb.msg.error(bb.msg.domain.Parsing, "Unable to read %s: %s" % (fn, e))
- raise
- except Exception as e:
- bb.msg.error(bb.msg.domain.Parsing, "%s" % e)
+ envdata = bb.cache.Cache.loadDataFull(fn, self.get_file_appends(fn), self.configuration.data)
+ except Exception, e:
+ parselog.exception("Unable to read %s", fn)
raise
# emit variables and shell functions
- try:
- data.update_data(envdata)
- with closing(StringIO()) as env:
- data.emit_env(env, envdata, True)
- bb.msg.plain(env.getvalue())
- except Exception as e:
- bb.msg.fatal(bb.msg.domain.Parsing, "%s" % e)
+ data.update_data(envdata)
+ with closing(StringIO()) as env:
+ data.emit_env(env, envdata, True)
+ logger.plain(env.getvalue())
# emit the metadata which isnt valid shell
data.expandKeys(envdata)
for e in envdata.keys():
if data.getVarFlag( e, 'python', envdata ):
- bb.msg.plain("\npython %s () {\n%s}\n" % (e, data.getVar(e, envdata, 1)))
+ logger.plain("\npython %s () {\n%s}\n", e, data.getVar(e, envdata, 1))
def generateDepTreeData(self, pkgs_to_build, task):
"""
@@ -290,7 +275,7 @@ class BBCooker:
depend_tree["rdepends-pkg"] = {}
depend_tree["rrecs-pkg"] = {}
- for task in range(len(rq.rqdata.runq_fnid)):
+ for task in xrange(len(rq.rqdata.runq_fnid)):
taskname = rq.rqdata.runq_task[task]
fnid = rq.rqdata.runq_fnid[task]
fn = taskdata.fn_index[fnid]
@@ -374,7 +359,7 @@ class BBCooker:
for rdepend in depgraph["rdepends-pn"][pn]:
print('"%s" -> "%s" [style=dashed]' % (pn, rdepend), file=depends_file)
print("}", file=depends_file)
- bb.msg.plain("PN dependencies saved to 'pn-depends.dot'")
+ logger.info("PN dependencies saved to 'pn-depends.dot'")
depends_file = file('package-depends.dot', 'w' )
print("digraph depends {", file=depends_file)
@@ -395,7 +380,7 @@ class BBCooker:
for rdepend in depgraph["rrecs-pkg"][package]:
print('"%s" -> "%s" [style=dashed]' % (package, rdepend), file=depends_file)
print("}", file=depends_file)
- bb.msg.plain("Package dependencies saved to 'package-depends.dot'")
+ logger.info("Package dependencies saved to 'package-depends.dot'")
tdepends_file = file('task-depends.dot', 'w' )
print("digraph depends {", file=tdepends_file)
@@ -407,7 +392,7 @@ class BBCooker:
for dep in depgraph["tdepends"][task]:
print('"%s" -> "%s"' % (task, dep), file=tdepends_file)
print("}", file=tdepends_file)
- bb.msg.plain("Task dependencies saved to 'task-depends.dot'")
+ logger.info("Task dependencies saved to 'task-depends.dot'")
def buildDepgraph( self ):
all_depends = self.status.all_depends
@@ -431,10 +416,10 @@ class BBCooker:
try:
(providee, provider) = p.split(':')
except:
- bb.msg.fatal(bb.msg.domain.Provider, "Malformed option in PREFERRED_PROVIDERS variable: %s" % p)
+ providerlog.critical("Malformed option in PREFERRED_PROVIDERS variable: %s" % p)
continue
if providee in self.status.preferred and self.status.preferred[providee] != provider:
- bb.msg.error(bb.msg.domain.Provider, "conflicting preferences for %s: both %s and %s specified" % (providee, provider, self.status.preferred[providee]))
+ providerlog.error("conflicting preferences for %s: both %s and %s specified", providee, provider, self.status.preferred[providee])
self.status.preferred[providee] = provider
# Calculate priorities for each file
@@ -443,8 +428,7 @@ class BBCooker:
for collection, pattern, regex, _ in self.status.bbfile_config_priorities:
if not regex in matched:
- bb.msg.warn(bb.msg.domain.Provider, "No bb files matched BBFILE_PATTERN_%s '%s'" %
- (collection, pattern))
+ collectlog.warn("No bb files matched BBFILE_PATTERN_%s '%s'" % (collection, pattern))
def buildWorldTargetList(self):
"""
@@ -452,19 +436,19 @@ class BBCooker:
"""
all_depends = self.status.all_depends
pn_provides = self.status.pn_provides
- bb.msg.debug(1, bb.msg.domain.Parsing, "collating packages for \"world\"")
+ parselog.debug(1, "collating packages for \"world\"")
for f in self.status.possible_world:
terminal = True
pn = self.status.pkg_fn[f]
for p in pn_provides[pn]:
if p.startswith('virtual/'):
- bb.msg.debug(2, bb.msg.domain.Parsing, "World build skipping %s due to %s provider starting with virtual/" % (f, p))
+ parselog.debug(2, "World build skipping %s due to %s provider starting with virtual/", f, p)
terminal = False
break
for pf in self.status.providers[p]:
if self.status.pkg_fn[pf] != pn:
- bb.msg.debug(2, bb.msg.domain.Parsing, "World build skipping %s due to both us and %s providing %s" % (f, pf, p))
+ parselog.debug(2, "World build skipping %s due to both us and %s providing %s", f, pf, p)
terminal = False
break
if terminal:
@@ -478,8 +462,9 @@ class BBCooker:
"""Drop off into a shell"""
try:
from bb import shell
- except ImportError as details:
- bb.msg.fatal(bb.msg.domain.Parsing, "Sorry, shell not available (%s)" % details )
+ except ImportError:
+ parselog.exception("Interactive mode not available")
+ sys.exit(1)
else:
shell.start( self )
@@ -493,70 +478,56 @@ class BBCooker:
path, _ = os.path.split(path)
def parseConfigurationFiles(self, files):
- try:
- data = self.configuration.data
-
- bb.parse.init_parser(data, self.configuration.dump_signatures)
- for f in files:
- data = bb.parse.handle(f, data)
-
- layerconf = self._findLayerConf()
- if layerconf:
- bb.msg.debug(2, bb.msg.domain.Parsing, "Found bblayers.conf (%s)" % layerconf)
- data = bb.parse.handle(layerconf, data)
-
- layers = (bb.data.getVar('BBLAYERS', data, True) or "").split()
-
- data = bb.data.createCopy(data)
- for layer in layers:
- bb.msg.debug(2, bb.msg.domain.Parsing, "Adding layer %s" % layer)
- bb.data.setVar('LAYERDIR', layer, data)
- data = bb.parse.handle(os.path.join(layer, "conf", "layer.conf"), data)
+ def _parse(f, data, include=False):
+ try:
+ return bb.parse.handle(f, data, include)
+ except (IOError, bb.parse.ParseError) as exc:
+ parselog.critical("Unable to parse %s: %s" % (f, exc))
+ sys.exit(1)
- # XXX: Hack, relies on the local keys of the datasmart
- # instance being stored in the 'dict' attribute and makes
- # assumptions about how variable expansion works, but
- # there's no better way to force an expansion of a single
- # variable across the datastore today, and this at least
- # lets us reference LAYERDIR without having to immediately
- # eval all our variables that use it.
- for key in data.dict:
- if key != "_data":
- value = data.getVar(key, False)
- if value and "${LAYERDIR}" in value:
- data.setVar(key, value.replace("${LAYERDIR}", layer))
+ data = self.configuration.data
+ bb.parse.init_parser(data)
+ for f in files:
+ data = _parse(f, data)
- bb.data.delVar('LAYERDIR', data)
+ layerconf = self._findLayerConf()
+ if layerconf:
+ parselog.debug(2, "Found bblayers.conf (%s)", layerconf)
+ data = _parse(layerconf, data)
- if not data.getVar("BBPATH", True):
- bb.fatal("The BBPATH variable is not set")
+ layers = (bb.data.getVar('BBLAYERS', data, True) or "").split()
- data = bb.parse.handle(os.path.join("conf", "bitbake.conf"), data)
+ data = bb.data.createCopy(data)
+ for layer in layers:
+ parselog.debug(2, "Adding layer %s", layer)
+ bb.data.setVar('LAYERDIR', layer, data)
+ data = _parse(os.path.join(layer, "conf", "layer.conf"), data)
+ data.expandVarref('LAYERDIR')
- self.configuration.data = data
+ bb.data.delVar('LAYERDIR', data)
- # Handle any INHERITs and inherit the base class
- inherits = ["base"] + (bb.data.getVar('INHERIT', self.configuration.data, True ) or "").split()
- for inherit in inherits:
- self.configuration.data = bb.parse.handle(os.path.join('classes', '%s.bbclass' % inherit), self.configuration.data, True )
+ if not data.getVar("BBPATH", True):
+ raise SystemExit("The BBPATH variable is not set")
- # Nomally we only register event handlers at the end of parsing .bb files
- # We register any handlers we've found so far here...
- for var in bb.data.getVar('__BBHANDLERS', self.configuration.data) or []:
- bb.event.register(var, bb.data.getVar(var, self.configuration.data))
+ data = _parse(os.path.join("conf", "bitbake.conf"), data)
- if bb.data.getVar("BB_WORKERCONTEXT", self.configuration.data) is None:
- bb.fetch.fetcher_init(self.configuration.data)
- bb.codeparser.parser_cache_init(self.configuration.data)
+ self.configuration.data = data
- bb.parse.init_parser(data, self.configuration.dump_signatures)
+ # Handle any INHERITs and inherit the base class
+ inherits = ["base"] + (bb.data.getVar('INHERIT', self.configuration.data, True ) or "").split()
+ for inherit in inherits:
+ self.configuration.data = _parse(os.path.join('classes', '%s.bbclass' % inherit), self.configuration.data, True )
- bb.event.fire(bb.event.ConfigParsed(), self.configuration.data)
+ # Nomally we only register event handlers at the end of parsing .bb files
+ # We register any handlers we've found so far here...
+ for var in bb.data.getVar('__BBHANDLERS', self.configuration.data) or []:
+ bb.event.register(var, bb.data.getVar(var, self.configuration.data))
- except IOError as e:
- bb.msg.fatal(bb.msg.domain.Parsing, "Error when parsing %s: %s" % (files, str(e)))
- except bb.parse.ParseError as details:
- bb.msg.fatal(bb.msg.domain.Parsing, "Unable to parse %s (%s)" % (files, details) )
+ if bb.data.getVar("BB_WORKERCONTEXT", self.configuration.data) is None:
+ bb.fetch.fetcher_init(self.configuration.data)
+ bb.codeparser.parser_cache_init(self.configuration.data)
+ bb.parse.init_parser(data)
+ bb.event.fire(bb.event.ConfigParsed(), self.configuration.data)
def handleCollections( self, collections ):
"""Handle collections"""
@@ -565,22 +536,22 @@ class BBCooker:
for c in collection_list:
regex = bb.data.getVar("BBFILE_PATTERN_%s" % c, self.configuration.data, 1)
if regex == None:
- bb.msg.error(bb.msg.domain.Parsing, "BBFILE_PATTERN_%s not defined" % c)
+ parselog.error("BBFILE_PATTERN_%s not defined" % c)
continue
priority = bb.data.getVar("BBFILE_PRIORITY_%s" % c, self.configuration.data, 1)
if priority == None:
- bb.msg.error(bb.msg.domain.Parsing, "BBFILE_PRIORITY_%s not defined" % c)
+ parselog.error("BBFILE_PRIORITY_%s not defined" % c)
continue
try:
cre = re.compile(regex)
except re.error:
- bb.msg.error(bb.msg.domain.Parsing, "BBFILE_PATTERN_%s \"%s\" is not a valid regular expression" % (c, regex))
+ parselog.error("BBFILE_PATTERN_%s \"%s\" is not a valid regular expression", c, regex)
continue
try:
pri = int(priority)
self.status.bbfile_config_priorities.append((c, regex, cre, pri))
except ValueError:
- bb.msg.error(bb.msg.domain.Parsing, "invalid value for BBFILE_PRIORITY_%s: \"%s\"" % (c, priority))
+ parselog.error("invalid value for BBFILE_PRIORITY_%s: \"%s\"", c, priority)
def buildSetVars(self):
"""
@@ -596,7 +567,7 @@ class BBCooker:
"""
bf = os.path.abspath(buildfile)
- (filelist, masked) = self.collect_bbfiles()
+ filelist, masked = self.collect_bbfiles()
try:
os.stat(bf)
return [bf]
@@ -616,9 +587,9 @@ class BBCooker:
"""
matches = self.matchFiles(buildfile)
if len(matches) != 1:
- bb.msg.error(bb.msg.domain.Parsing, "Unable to match %s (%s matches found):" % (buildfile, len(matches)))
+ parselog.error("Unable to match %s (%s matches found):" % (buildfile, len(matches)))
for f in matches:
- bb.msg.error(bb.msg.domain.Parsing, " %s" % f)
+ parselog.error(" %s" % f)
raise MultipleMatches
return matches[0]
@@ -635,22 +606,23 @@ class BBCooker:
if (task == None):
task = self.configuration.cmd
- self.bb_cache = bb.cache.init(self)
- self.status = bb.cache.CacheData()
-
- (fn, cls) = self.bb_cache.virtualfn2realfn(buildfile)
+ (fn, cls) = bb.cache.Cache.virtualfn2realfn(buildfile)
buildfile = self.matchFile(fn)
- fn = self.bb_cache.realfn2virtual(buildfile, cls)
+ fn = bb.cache.Cache.realfn2virtual(buildfile, cls)
self.buildSetVars()
- # Load data into the cache for fn and parse the loaded cache data
- the_data = self.bb_cache.loadDataFull(fn, self.get_file_appends(fn), self.configuration.data)
- self.bb_cache.setData(fn, buildfile, the_data)
- self.bb_cache.handle_data(fn, self.status)
+ self.status = bb.cache.CacheData()
+ infos = bb.cache.Cache.parse(fn, self.get_file_appends(fn), \
+ self.configuration.data)
+ maininfo = None
+ for vfn, info in infos:
+ self.status.add_from_recipeinfo(vfn, info)
+ if vfn == fn:
+ maininfo = info
# Tweak some variables
- item = self.bb_cache.getVar('PN', fn, True)
+ item = maininfo.pn
self.status.ignored_dependencies = set()
self.status.bbfile_priority[fn] = 1
@@ -662,7 +634,7 @@ class BBCooker:
# Remove stamp for target if force mode active
if self.configuration.force:
- bb.msg.note(2, bb.msg.domain.RunQueue, "Remove stamp %s, %s" % (task, fn))
+ logger.verbose("Remove stamp %s, %s", task, fn)
bb.build.del_stamp('do_%s' % task, self.status, fn)
# Setup taskdata structure
@@ -682,17 +654,17 @@ class BBCooker:
def buildFileIdle(server, rq, abort):
- if abort or self.cookerAction == cookerStop:
+ if abort or self.state == state.stop:
rq.finish_runqueue(True)
- elif self.cookerAction == cookerShutdown:
+ elif self.state == state.shutdown:
rq.finish_runqueue(False)
failures = 0
try:
retval = rq.execute_runqueue()
except runqueue.TaskFailure as exc:
for fnid in exc.args:
- bb.msg.error(bb.msg.domain.Build, "'%s' failed" % taskdata.fn_index[fnid])
- failures = failures + 1
+ buildlog.error("'%s' failed" % taskdata.fn_index[fnid])
+ failures += len(exc.args)
retval = False
if not retval:
bb.event.fire(bb.event.BuildCompleted(buildname, item, failures), self.configuration.event_data)
@@ -719,17 +691,17 @@ class BBCooker:
targets = self.checkPackages(targets)
def buildTargetsIdle(server, rq, abort):
- if abort or self.cookerAction == cookerStop:
+ if abort or self.state == state.stop:
rq.finish_runqueue(True)
- elif self.cookerAction == cookerShutdown:
+ elif self.state == state.shutdown:
rq.finish_runqueue(False)
failures = 0
try:
retval = rq.execute_runqueue()
except runqueue.TaskFailure as exc:
for fnid in exc.args:
- bb.msg.error(bb.msg.domain.Build, "'%s' failed" % taskdata.fn_index[fnid])
- failures = failures + 1
+ buildlog.error("'%s' failed" % taskdata.fn_index[fnid])
+ failures += len(exc.args)
retval = False
if not retval:
bb.event.fire(bb.event.BuildCompleted(buildname, targets, failures), self.configuration.event_data)
@@ -764,12 +736,10 @@ class BBCooker:
self.server.register_idle_function(buildTargetsIdle, rq)
def updateCache(self):
-
- if self.cookerState == cookerParsed:
+ if self.state == state.running:
return
- if self.cookerState != cookerParsing:
-
+ if self.state != state.parsing:
self.parseConfiguration ()
# Import Psyco if available and not disabled
@@ -779,11 +749,11 @@ class BBCooker:
try:
import psyco
except ImportError:
- bb.msg.note(1, bb.msg.domain.Collection, "Psyco JIT Compiler (http://psyco.sf.net) not available. Install it to increase performance.")
+ collectlog.info("Psyco JIT Compiler (http://psyco.sf.net) not available. Install it to increase performance.")
else:
psyco.bind( CookerParser.parse_next )
else:
- bb.msg.note(1, bb.msg.domain.Collection, "You have disabled Psyco. This decreases performance.")
+ collectlog.info("You have disabled Psyco. This decreases performance.")
self.status = bb.cache.CacheData()
@@ -799,12 +769,12 @@ class BBCooker:
bb.data.renameVar("__depends", "__base_depends", self.configuration.data)
self.parser = CookerParser(self, filelist, masked)
- self.cookerState = cookerParsing
+ self.state = state.parsing
if not self.parser.parse_next():
- bb.msg.debug(1, bb.msg.domain.Collection, "parsing complete")
+ collectlog.debug(1, "parsing complete")
self.buildDepgraph()
- self.cookerState = cookerParsed
+ self.state = state.running
return None
return True
@@ -848,9 +818,8 @@ class BBCooker:
def collect_bbfiles( self ):
"""Collect all available .bb build files"""
parsed, cached, skipped, masked = 0, 0, 0, 0
- self.bb_cache = bb.cache.init(self)
- bb.msg.debug(1, bb.msg.domain.Collection, "collecting .bb files")
+ collectlog.debug(1, "collecting .bb files")
files = (data.getVar( "BBFILES", self.configuration.data, 1 ) or "").split()
data.setVar("BBFILES", " ".join(files), self.configuration.data)
@@ -859,7 +828,7 @@ class BBCooker:
files = self.get_bbfiles()
if not len(files):
- bb.msg.error(bb.msg.domain.Collection, "no recipe files to build, check your BBPATH and BBFILES?")
+ collectlog.error("no recipe files to build, check your BBPATH and BBFILES?")
bb.event.fire(CookerExit(), self.configuration.event_data)
newfiles = set()
@@ -879,13 +848,14 @@ class BBCooker:
try:
bbmask_compiled = re.compile(bbmask)
except sre_constants.error:
- bb.msg.fatal(bb.msg.domain.Collection, "BBMASK is not a valid regular expression.")
+ collectlog.critical("BBMASK is not a valid regular expression, ignoring.")
+ return list(newfiles), 0
bbfiles = []
bbappend = []
for f in newfiles:
if bbmask and bbmask_compiled.search(f):
- bb.msg.debug(1, bb.msg.domain.Collection, "skipping masked file %s" % f)
+ collectlog.debug(1, "skipping masked file %s", f)
masked += 1
continue
if f.endswith('.bb'):
@@ -893,26 +863,25 @@ class BBCooker:
elif f.endswith('.bbappend'):
bbappend.append(f)
else:
- bb.msg.note(1, bb.msg.domain.Collection, "File %s of unknown filetype in BBFILES? Ignorning..." % f)
+ collectlog.debug(1, "skipping %s: unknown file extension", f)
# Build a list of .bbappend files for each .bb file
- self.appendlist = {}
for f in bbappend:
base = os.path.basename(f).replace('.bbappend', '.bb')
if not base in self.appendlist:
self.appendlist[base] = []
self.appendlist[base].append(f)
-
+
return (bbfiles, masked)
def get_file_appends(self, fn):
"""
Returns a list of .bbappend files to apply to fn
- NB: collect_files() must have been called prior to this
+ NB: collect_bbfiles() must have been called prior to this
"""
f = os.path.basename(fn)
if f in self.appendlist:
- return self.appendlist[f]
+ return self.appendlist[f]
return []
def pre_serve(self):
@@ -924,6 +893,11 @@ class BBCooker:
def post_serve(self):
bb.event.fire(CookerExit(), self.configuration.event_data)
+ def shutdown(self):
+ self.state = state.shutdown
+
+ def stop(self):
+ self.state = state.stop
def server_main(cooker, func, *args):
cooker.pre_serve()
@@ -974,65 +948,119 @@ class CookerExit(bb.event.Event):
def __init__(self):
bb.event.Event.__init__(self)
-class CookerParser:
+def parse_file(task):
+ filename, appends = task
+ try:
+ return True, bb.cache.Cache.parse(filename, appends, parse_file.cfg)
+ except Exception, exc:
+ exc.recipe = filename
+ raise exc
+
+class CookerParser(object):
def __init__(self, cooker, filelist, masked):
- # Internal data
self.filelist = filelist
self.cooker = cooker
+ self.cfgdata = cooker.configuration.data
# Accounting statistics
self.parsed = 0
self.cached = 0
self.error = 0
self.masked = masked
- self.total = len(filelist)
self.skipped = 0
self.virtuals = 0
+ self.total = len(filelist)
- # Pointer to the next file to parse
- self.pointer = 0
+ self.current = 0
+ self.num_processes = int(self.cfgdata.getVar("BB_NUMBER_PARSE_THREADS", True) or
+ multiprocessing.cpu_count())
+
+ self.bb_cache = bb.cache.Cache(self.cfgdata)
+ self.fromcache = []
+ self.willparse = []
+ for filename in self.filelist:
+ appends = self.cooker.get_file_appends(filename)
+ if not self.bb_cache.cacheValid(filename):
+ self.willparse.append((filename, appends))
+ else:
+ self.fromcache.append((filename, appends))
+ self.toparse = self.total - len(self.fromcache)
+ self.progress_chunk = max(self.toparse / 100, 1)
- def parse_next(self):
- cooker = self.cooker
- if self.pointer < len(self.filelist):
- f = self.filelist[self.pointer]
+ self.start()
- try:
- fromCache, skipped, virtuals = cooker.bb_cache.loadData(f, cooker.get_file_appends(f), cooker.configuration.data, cooker.status)
- if fromCache:
- self.cached += 1
- else:
- self.parsed += 1
-
- self.skipped += skipped
- self.virtuals += virtuals
-
- except IOError as e:
- self.error += 1
- cooker.bb_cache.remove(f)
- bb.msg.error(bb.msg.domain.Collection, "opening %s: %s" % (f, e))
- pass
- except KeyboardInterrupt:
- cooker.bb_cache.remove(f)
- cooker.bb_cache.sync()
- raise
- except Exception as e:
- self.error += 1
- cooker.bb_cache.remove(f)
- bb.msg.error(bb.msg.domain.Collection, "%s while parsing %s" % (e, f))
- except:
- cooker.bb_cache.remove(f)
- raise
- finally:
- bb.event.fire(bb.event.ParseProgress(self.cached, self.parsed, self.skipped, self.masked, self.virtuals, self.error, self.total), cooker.configuration.event_data)
+ def start(self):
+ def init(cfg):
+ signal.signal(signal.SIGINT, signal.SIG_IGN)
+ parse_file.cfg = cfg
+
+ bb.event.fire(bb.event.ParseStarted(self.toparse), self.cfgdata)
- self.pointer += 1
+ self.pool = multiprocessing.Pool(self.num_processes, init, [self.cfgdata])
+ parsed = self.pool.imap(parse_file, self.willparse)
+ self.pool.close()
- if self.pointer >= self.total:
- cooker.bb_cache.sync()
- bb.codeparser.parser_cache_save(cooker.configuration.data)
- if self.error > 0:
- raise ParsingErrorsFound
+ self.results = itertools.chain(self.load_cached(), parsed)
+
+ def shutdown(self, clean=True):
+ if clean:
+ event = bb.event.ParseCompleted(self.cached, self.parsed,
+ self.skipped, self.masked,
+ self.virtuals, self.error,
+ self.total)
+ bb.event.fire(event, self.cfgdata)
+ else:
+ self.pool.terminate()
+ self.pool.join()
+
+ sync = threading.Thread(target=self.bb_cache.sync)
+ sync.start()
+ atexit.register(lambda: sync.join())
+
+ codesync = threading.Thread(target=bb.codeparser.parser_cache_save(self.cooker.configuration.data))
+ codesync.start()
+ atexit.register(lambda: codesync.join())
+
+ def load_cached(self):
+ for filename, appends in self.fromcache:
+ cached, infos = self.bb_cache.load(filename, appends, self.cfgdata)
+ yield not cached, infos
+
+ def parse_next(self):
+ try:
+ parsed, result = self.results.next()
+ except StopIteration:
+ self.shutdown()
return False
+ except KeyboardInterrupt:
+ self.shutdown(clean=False)
+ raise
+ except Exception as exc:
+ self.shutdown(clean=False)
+ bb.fatal('Error parsing %s: %s' % (exc.recipe, exc))
+
+ self.current += 1
+ self.virtuals += len(result)
+ if parsed:
+ self.parsed += 1
+ if self.parsed % self.progress_chunk == 0:
+ bb.event.fire(bb.event.ParseProgress(self.parsed),
+ self.cfgdata)
+ else:
+ self.cached += 1
+
+ for virtualfn, info in result:
+ if info.skipped:
+ self.skipped += 1
+ else:
+ self.bb_cache.add_info(virtualfn, info, self.cooker.status,
+ parsed=parsed)
return True
+
+ def reparse(self, filename):
+ infos = self.bb_cache.parse(filename,
+ self.cooker.get_file_appends(filename),
+ self.cfgdata)
+ for vfn, info in infos:
+ self.cooker.status.add_from_recipeinfo(vfn, info)
diff --git a/bitbake/lib/bb/data.py b/bitbake/lib/bb/data.py
index 0aa8b404cb..50f2218a70 100644
--- a/bitbake/lib/bb/data.py
+++ b/bitbake/lib/bb/data.py
@@ -161,7 +161,7 @@ def expandKeys(alterdata, readdata = None):
def inheritFromOS(d):
"""Inherit variables from the environment."""
- exportlist = bb.utils.preserved_envvars_export_list()
+ exportlist = bb.utils.preserved_envvars_exported()
for s in os.environ.keys():
try:
setVar(s, os.environ[s], d)
@@ -192,7 +192,8 @@ def emit_var(var, o=sys.__stdout__, d = init(), all=False):
return 0
if all:
- o.write('# %s=%s\n' % (var, oval))
+ commentVal = re.sub('\n', '\n#', str(oval))
+ o.write('# %s=%s\n' % (var, commentVal))
if (var.find("-") != -1 or var.find(".") != -1 or var.find('{') != -1 or var.find('}') != -1 or var.find('+') != -1) and not all:
return 0
@@ -201,7 +202,7 @@ def emit_var(var, o=sys.__stdout__, d = init(), all=False):
if unexport:
o.write('unset %s\n' % varExpanded)
- return 1
+ return 0
if not val:
return 0
@@ -219,8 +220,9 @@ def emit_var(var, o=sys.__stdout__, d = init(), all=False):
# if we're going to output this within doublequotes,
# to a shell, we need to escape the quotes in the var
alter = re.sub('"', '\\"', val.strip())
+ alter = re.sub('\n', ' \\\n', alter)
o.write('%s="%s"\n' % (varExpanded, alter))
- return 1
+ return 0
def emit_env(o=sys.__stdout__, d = init(), all=False):
"""Emits all items in the data store in a format such that it can be sourced by a shell."""
@@ -259,7 +261,7 @@ def emit_func(func, o=sys.__stdout__, d = init()):
for key in keys:
emit_var(key, o, d, False) and o.write('\n')
- emit_var(func, o, d, False) and o.write('\n')
+ emit_var(func, o, d, False) and o.write('\n')
newdeps = bb.codeparser.ShellParser().parse_shell(d.getVar(func, True))
seen = set()
while newdeps:
@@ -299,7 +301,7 @@ def build_dependencies(key, keys, shelldeps, d):
deps |= set((d.getVarFlag(key, "vardeps", True) or "").split())
deps -= set((d.getVarFlag(key, "vardepsexclude", True) or "").split())
except:
- bb.note("Error expanding variable %s" % key)
+ bb.note("Error expanding variable %s" % key)
raise
return deps
#bb.note("Variable %s references %s and calls %s" % (key, str(deps), str(execs)))
@@ -311,12 +313,10 @@ def generate_dependencies(d):
shelldeps = set(key for key in keys if d.getVarFlag(key, "export") and not d.getVarFlag(key, "unexport"))
deps = {}
- taskdeps = {}
tasklist = bb.data.getVar('__BBTASKS', d) or []
for task in tasklist:
deps[task] = build_dependencies(task, keys, shelldeps, d)
-
newdeps = deps[task]
seen = set()
while newdeps:
@@ -328,9 +328,8 @@ def generate_dependencies(d):
deps[dep] = build_dependencies(dep, keys, shelldeps, d)
newdeps |= deps[dep]
newdeps -= seen
- taskdeps[task] = seen | newdeps
#print "For %s: %s" % (task, str(taskdeps[task]))
- return taskdeps, deps
+ return tasklist, deps
def inherits_class(klass, d):
val = getVar('__inherit_cache', d) or []
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py
index 30f9cbc2d4..83e6f70cd7 100644
--- a/bitbake/lib/bb/data_smart.py
+++ b/bitbake/lib/bb/data_smart.py
@@ -28,17 +28,21 @@ BitBake build tools.
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
-import copy, re, sys
-import bb
+import copy, re
+from collections import MutableMapping
+import logging
+import bb, bb.codeparser
from bb import utils
from bb.COW import COWDictBase
+logger = logging.getLogger("BitBake.Data")
__setvar_keyword__ = ["_append", "_prepend"]
__setvar_regexp__ = re.compile('(?P<base>.*?)(?P<keyword>_append|_prepend)(_(?P<add>.*))?')
__expand_var_regexp__ = re.compile(r"\${[^{}]+}")
__expand_python_regexp__ = re.compile(r"\${@.+?}")
+
class VariableParse:
def __init__(self, varname, d, val = None):
self.varname = varname
@@ -69,11 +73,24 @@ class VariableParse:
self.references |= parser.references
self.execs |= parser.execs
- value = utils.better_eval(codeobj, {"d": self.d})
+ value = utils.better_eval(codeobj, DataContext(self.d))
return str(value)
-class DataSmart:
+class DataContext(dict):
+ def __init__(self, metadata, **kwargs):
+ self.metadata = metadata
+ dict.__init__(self, **kwargs)
+ self['d'] = metadata
+
+ def __missing__(self, key):
+ value = self.metadata.getVar(key, True)
+ if value is None or self.metadata.getVarFlag(key, 'func'):
+ raise KeyError(key)
+ else:
+ return value
+
+class DataSmart(MutableMapping):
def __init__(self, special = COWDictBase.copy(), seen = COWDictBase.copy() ):
self.dict = {}
@@ -100,10 +117,8 @@ class DataSmart:
s = __expand_python_regexp__.sub(varparse.python_sub, s)
if s == olds:
break
- except KeyboardInterrupt:
- raise
- except:
- bb.msg.note(1, bb.msg.domain.Data, "%s:%s while evaluating:\n%s" % (sys.exc_info()[0], sys.exc_info()[1], s))
+ except Exception:
+ logger.exception("Error evaluating '%s'", s)
raise
varparse.value = s
@@ -115,7 +130,7 @@ class DataSmart:
def expand(self, s, varname):
return self.expandWithRefs(s, varname).value
-
+
def finalize(self):
"""Performs final steps upon the datastore, including application of overrides"""
@@ -149,9 +164,9 @@ class DataSmart:
for var in vars:
name = var[:-l]
try:
- self[name] = self[var]
+ self.setVar(name, self.getVar(var, False))
except Exception:
- bb.msg.note(1, bb.msg.domain.Data, "Untracked delVar")
+ logger.info("Untracked delVar")
# now on to the appends and prepends
for op in __setvar_keyword__:
@@ -277,13 +292,13 @@ class DataSmart:
self._makeShadowCopy(var)
self.dict[var][flag] = flagvalue
- def getVarFlag(self, var, flag, exp = False):
+ def getVarFlag(self, var, flag, expand=False):
local_var = self._findVar(var)
value = None
if local_var:
if flag in local_var:
value = copy.copy(local_var[flag])
- if exp and value:
+ if expand and value:
value = self.expand(value, None)
return value
@@ -347,23 +362,53 @@ class DataSmart:
return data
- # Dictionary Methods
- def keys(self):
- def _keys(d, mykey):
+ def expandVarref(self, variable, parents=False):
+ """Find all references to variable in the data and expand it
+ in place, optionally descending to parent datastores."""
+
+ if parents:
+ keys = iter(self)
+ else:
+ keys = self.localkeys()
+
+ ref = '${%s}' % variable
+ value = self.getVar(variable, False)
+ for key in keys:
+ referrervalue = self.getVar(key, False)
+ if referrervalue and ref in referrervalue:
+ self.setVar(key, referrervalue.replace(ref, value))
+
+ def localkeys(self):
+ for key in self.dict:
+ if key != '_data':
+ yield key
+
+ def __iter__(self):
+ seen = set()
+ def _keys(d):
if "_data" in d:
- _keys(d["_data"], mykey)
+ for key in _keys(d["_data"]):
+ yield key
- for key in d.keys():
+ for key in d:
if key != "_data":
- mykey[key] = None
- keytab = {}
- _keys(self.dict, keytab)
- return keytab.keys()
+ if not key in seen:
+ seen.add(key)
+ yield key
+ return _keys(self.dict)
+
+ def __len__(self):
+ return len(frozenset(self))
def __getitem__(self, item):
- #print "Warning deprecated"
- return self.getVar(item, False)
+ value = self.getVar(item, False)
+ if value is None:
+ raise KeyError(item)
+ else:
+ return value
+
+ def __setitem__(self, var, value):
+ self.setVar(var, value)
- def __setitem__(self, var, data):
- #print "Warning deprecated"
- self.setVar(var, data)
+ def __delitem__(self, var):
+ self.delVar(var)
diff --git a/bitbake/lib/bb/event.py b/bitbake/lib/bb/event.py
index 45458c2d63..3467ddd613 100644
--- a/bitbake/lib/bb/event.py
+++ b/bitbake/lib/bb/event.py
@@ -24,16 +24,20 @@ BitBake build tools.
import os, sys
import warnings
+try:
+ import cPickle as pickle
+except ImportError:
+ import pickle
+import logging
+import atexit
import bb.utils
-import pickle
# This is the pid for which we should generate the event. This is set when
# the runqueue forks off.
worker_pid = 0
worker_pipe = None
-useStdout = True
-class Event:
+class Event(object):
"""Base class for events"""
def __init__(self):
@@ -55,8 +59,7 @@ bb.utils._context["NotHandled"] = NotHandled
bb.utils._context["Handled"] = Handled
def fire_class_handlers(event, d):
- import bb.msg
- if isinstance(event, bb.msg.MsgBase):
+ if isinstance(event, logging.LogRecord):
return
for handler in _handlers:
@@ -73,7 +76,28 @@ def fire_class_handlers(event, d):
h(event)
del event.data
+ui_queue = []
+@atexit.register
+def print_ui_queue():
+ """If we're exiting before a UI has been spawned, display any queued
+ LogRecords to the console."""
+ logger = logging.getLogger("BitBake")
+ if not _ui_handlers:
+ from bb.msg import BBLogFormatter
+ console = logging.StreamHandler(sys.stdout)
+ console.setFormatter(BBLogFormatter("%(levelname)s: %(message)s"))
+ logger.handlers = [console]
+ while ui_queue:
+ event = ui_queue.pop()
+ if isinstance(event, logging.LogRecord):
+ logger.handle(event)
+
def fire_ui_handlers(event, d):
+ if not _ui_handlers:
+ # No UI handlers registered yet, queue up the messages
+ ui_queue.append(event)
+ return
+
errors = []
for h in _ui_handlers:
#print "Sending event %s" % event
@@ -104,13 +128,11 @@ def fire(event, d):
def worker_fire(event, d):
data = "<event>" + pickle.dumps(event) + "</event>"
worker_pipe.write(data)
- worker_pipe.flush()
def fire_from_worker(event, d):
if not event.startswith("<event>") or not event.endswith("</event>"):
print("Error, not an event %s" % event)
return
- #print "Got event %s" % event
event = pickle.loads(event[7:-8])
fire_ui_handlers(event, d)
@@ -123,7 +145,7 @@ def register(name, handler):
if handler is not None:
# handle string containing python code
- if type(handler).__name__ == "str":
+ if isinstance(handler, basestring):
tmp = "def tmpHandler(e):\n%s" % handler
comp = bb.utils.better_compile(tmp, "tmpHandler(e)", "bb.event._registerCode")
_handlers[name] = comp
@@ -139,7 +161,6 @@ def remove(name, handler):
def register_UIHhandler(handler):
bb.event._ui_handler_seq = bb.event._ui_handler_seq + 1
_ui_handlers[_ui_handler_seq] = handler
- bb.event.useStdout = False
return _ui_handler_seq
def unregister_UIHhandler(handlerNum):
@@ -274,10 +295,14 @@ class MultipleProviders(Event):
"""
return self._candidates
-class ParseProgress(Event):
- """
- Parsing Progress Event
- """
+class ParseStarted(Event):
+ """Recipe parsing for the runqueue has begun"""
+ def __init__(self, total):
+ Event.__init__(self)
+ self.total = total
+
+class ParseCompleted(Event):
+ """Recipe parsing for the runqueue has completed"""
def __init__(self, cached, parsed, skipped, masked, virtuals, errors, total):
Event.__init__(self)
@@ -290,6 +315,32 @@ class ParseProgress(Event):
self.sofar = cached + parsed
self.total = total
+class ParseProgress(Event):
+ """Recipe parsing progress"""
+
+ def __init__(self, current):
+ self.current = current
+
+class CacheLoadStarted(Event):
+ """Loading of the dependency cache has begun"""
+ def __init__(self, total):
+ Event.__init__(self)
+ self.total = total
+
+class CacheLoadProgress(Event):
+ """Cache loading progress"""
+ def __init__(self, current):
+ Event.__init__(self)
+ self.current = current
+
+class CacheLoadCompleted(Event):
+ """Cache loading is complete"""
+ def __init__(self, total, num_entries):
+ Event.__init__(self)
+ self.total = total
+ self.num_entries = num_entries
+
+
class DepTreeGenerated(Event):
"""
Event when a dependency tree has been generated
@@ -298,3 +349,38 @@ class DepTreeGenerated(Event):
def __init__(self, depgraph):
Event.__init__(self)
self._depgraph = depgraph
+
+class MsgBase(Event):
+ """Base class for messages"""
+
+ def __init__(self, msg):
+ self._message = msg
+ Event.__init__(self)
+
+class MsgDebug(MsgBase):
+ """Debug Message"""
+
+class MsgNote(MsgBase):
+ """Note Message"""
+
+class MsgWarn(MsgBase):
+ """Warning Message"""
+
+class MsgError(MsgBase):
+ """Error Message"""
+
+class MsgFatal(MsgBase):
+ """Fatal Message"""
+
+class MsgPlain(MsgBase):
+ """General output"""
+
+class LogHandler(logging.Handler):
+ """Dispatch logging messages as bitbake events"""
+
+ def emit(self, record):
+ fire(record, None)
+
+ def filter(self, record):
+ record.taskpid = worker_pid
+ return True
diff --git a/bitbake/lib/bb/fetch/__init__.py b/bitbake/lib/bb/fetch/__init__.py
index 88212ffa33..b452751c7b 100644
--- a/bitbake/lib/bb/fetch/__init__.py
+++ b/bitbake/lib/bb/fetch/__init__.py
@@ -27,9 +27,15 @@ BitBake build tools.
from __future__ import absolute_import
from __future__ import print_function
import os, re
+import logging
import bb
from bb import data
from bb import persist_data
+from bb import utils
+
+__version__ = "1"
+
+logger = logging.getLogger("BitBake.Fetch")
class MalformedUrl(Exception):
"""Exception raised when encountering an invalid url"""
@@ -117,9 +123,8 @@ def encodeurl(decoded):
return url
def uri_replace(uri, uri_find, uri_replace, d):
-# bb.msg.note(1, bb.msg.domain.Fetcher, "uri_replace: operating on %s" % uri)
if not uri or not uri_find or not uri_replace:
- bb.msg.debug(1, bb.msg.domain.Fetcher, "uri_replace: passed an undefined value, not replacing")
+ logger.debug(1, "uri_replace: passed an undefined value, not replacing")
uri_decoded = list(decodeurl(uri))
uri_find_decoded = list(decodeurl(uri_find))
uri_replace_decoded = list(decodeurl(uri_replace))
@@ -134,38 +139,32 @@ def uri_replace(uri, uri_find, uri_replace, d):
if d:
localfn = bb.fetch.localpath(uri, d)
if localfn:
- result_decoded[loc] = os.path.dirname(result_decoded[loc]) + "/" + os.path.basename(bb.fetch.localpath(uri, d))
-# bb.msg.note(1, bb.msg.domain.Fetcher, "uri_replace: matching %s against %s and replacing with %s" % (i, uri_decoded[loc], uri_replace_decoded[loc]))
+ result_decoded[loc] = os.path.join(os.path.dirname(result_decoded[loc]), os.path.basename(bb.fetch.localpath(uri, d)))
else:
-# bb.msg.note(1, bb.msg.domain.Fetcher, "uri_replace: no match")
return uri
-# else:
-# for j in i:
-# FIXME: apply replacements against options
return encodeurl(result_decoded)
methods = []
urldata_cache = {}
saved_headrevs = {}
-persistent_database_connection = {}
def fetcher_init(d):
"""
Called to initialize the fetchers once the configuration data is known.
Calls before this must not hit the cache.
"""
- pd = persist_data.PersistData(d, persistent_database_connection)
+ pd = persist_data.persist(d)
# When to drop SCM head revisions controlled by user policy
srcrev_policy = bb.data.getVar('BB_SRCREV_POLICY', d, 1) or "clear"
if srcrev_policy == "cache":
- bb.msg.debug(1, bb.msg.domain.Fetcher, "Keeping SRCREV cache due to cache policy of: %s" % srcrev_policy)
+ logger.debug(1, "Keeping SRCREV cache due to cache policy of: %s", srcrev_policy)
elif srcrev_policy == "clear":
- bb.msg.debug(1, bb.msg.domain.Fetcher, "Clearing SRCREV cache due to cache policy of: %s" % srcrev_policy)
+ logger.debug(1, "Clearing SRCREV cache due to cache policy of: %s", srcrev_policy)
try:
- bb.fetch.saved_headrevs = pd.getKeyValues("BB_URI_HEADREVS")
+ bb.fetch.saved_headrevs = pd['BB_URI_HEADREVS'].items()
except:
pass
- pd.delDomain("BB_URI_HEADREVS")
+ del pd['BB_URI_HEADREVS']
else:
raise FetchError("Invalid SRCREV cache policy of: %s" % srcrev_policy)
@@ -173,28 +172,24 @@ def fetcher_init(d):
if hasattr(m, "init"):
m.init(d)
- # Make sure our domains exist
- pd.addDomain("BB_URI_HEADREVS")
- pd.addDomain("BB_URI_LOCALCOUNT")
-
-def fetcher_compare_revisons(d):
+def fetcher_compare_revisions(d):
"""
Compare the revisions in the persistant cache with current values and
return true/false on whether they've changed.
"""
- pd = persist_data.PersistData(d, persistent_database_connection)
- data = pd.getKeyValues("BB_URI_HEADREVS")
+ pd = persist_data.persist(d)
+ data = pd['BB_URI_HEADREVS'].items()
data2 = bb.fetch.saved_headrevs
changed = False
for key in data:
if key not in data2 or data2[key] != data[key]:
- bb.msg.debug(1, bb.msg.domain.Fetcher, "%s changed" % key)
+ logger.debug(1, "%s changed", key)
changed = True
return True
else:
- bb.msg.debug(2, bb.msg.domain.Fetcher, "%s did not change" % key)
+ logger.debug(2, "%s did not change", key)
return False
# Function call order is usually:
@@ -225,12 +220,6 @@ def init(urls, d, setup = True):
def mirror_from_string(data):
return [ i.split() for i in (data or "").replace('\\n','\n').split('\n') if i ]
-def removefile(f):
- try:
- os.remove(f)
- except:
- pass
-
def verify_checksum(u, ud, d):
"""
verify the MD5 and SHA256 checksum for downloaded src
@@ -251,17 +240,20 @@ def verify_checksum(u, ud, d):
sha256data = bb.utils.sha256_file(ud.localpath)
if (ud.md5_expected == None or ud.sha256_expected == None):
- bb.warn("Missing SRC_URI checksum for %s, consider to add\n" \
- "SRC_URI[%s] = \"%s\"\nSRC_URI[%s] = \"%s\"" \
- % (ud.localpath, ud.md5_name, md5data, ud.sha256_name, sha256data))
+ logger.warn('Missing SRC_URI checksum for %s, consider adding to the recipe:\n'
+ 'SRC_URI[%s] = "%s"\nSRC_URI[%s] = "%s"',
+ ud.localpath, ud.md5_name, md5data,
+ ud.sha256_name, sha256data)
if bb.data.getVar("BB_STRICT_CHECKSUM", d, True) == "1":
raise FetchError("No checksum specified for %s." % u)
return
if (ud.md5_expected != md5data or ud.sha256_expected != sha256data):
- bb.error("The checksums for '%s' did not match." % ud.localpath)
- bb.error("Expected MD5: '%s' and Got: '%s'" % (ud.md5_expected, md5data))
- bb.error("Expected SHA256: '%s' and Got: '%s'" % (ud.sha256_expected, sha256data))
+ logger.error('The checksums for "%s" did not match.\n'
+ ' MD5: expected "%s", got "%s"\n'
+ ' SHA256: expected "%s", got "%s"\n',
+ ud.localpath, ud.md5_expected, md5data,
+ ud.sha256_expected, sha256data)
raise FetchError("%s checksum mismatch." % u)
def go(d, urls = None):
@@ -298,7 +290,7 @@ def go(d, urls = None):
localpath = ud.localpath
except FetchError:
# Remove any incomplete file
- removefile(ud.localpath)
+ bb.utils.remove(ud.localpath)
# Finally, try fetching uri, u, from MIRRORS
mirrors = mirror_from_string(bb.data.getVar('MIRRORS', d, True))
localpath = try_mirrors (d, u, mirrors)
@@ -307,8 +299,6 @@ def go(d, urls = None):
ud.localpath = localpath
- verify_checksum(u, ud, d)
-
if os.path.exists(ud.md5):
# Touch the md5 file to show active use of the download
try:
@@ -317,6 +307,8 @@ def go(d, urls = None):
# Errors aren't fatal here
pass
else:
+ # Only check the checksums if we've not seen this item before
+ verify_checksum(u, ud, d)
Fetch.write_md5sum(u, ud, d)
bb.utils.unlockfile(lf)
@@ -334,7 +326,7 @@ def checkstatus(d, urls = None):
for u in urls:
ud = urldata[u]
m = ud.method
- bb.msg.debug(1, bb.msg.domain.Fetcher, "Testing URL %s" % u)
+ logger.debug(1, "Testing URL %s", u)
# First try checking uri, u, from PREMIRRORS
mirrors = mirror_from_string(bb.data.getVar('PREMIRRORS', d, True))
ret = try_mirrors(d, u, mirrors, True)
@@ -365,6 +357,9 @@ def localpaths(d):
srcrev_internal_call = False
+def get_autorev(d):
+ return get_srcrev(d)
+
def get_srcrev(d):
"""
Return the version string for the current package
@@ -388,17 +383,17 @@ def get_srcrev(d):
scms = []
- # Only call setup_localpath on URIs which suppports_srcrev()
+ # Only call setup_localpath on URIs which supports_srcrev()
urldata = init(bb.data.getVar('SRC_URI', d, 1).split(), d, False)
for u in urldata:
ud = urldata[u]
- if ud.method.suppports_srcrev():
+ if ud.method.supports_srcrev():
if not ud.setup:
ud.setup_localpath(d)
scms.append(u)
if len(scms) == 0:
- bb.msg.error(bb.msg.domain.Fetcher, "SRCREV was used yet no valid SCM was found in SRC_URI")
+ logger.error("SRCREV was used yet no valid SCM was found in SRC_URI")
raise ParameterError
if bb.data.getVar('BB_SRCREV_POLICY', d, True) != "cache":
@@ -412,7 +407,7 @@ def get_srcrev(d):
#
format = bb.data.getVar('SRCREV_FORMAT', d, 1)
if not format:
- bb.msg.error(bb.msg.domain.Fetcher, "The SRCREV_FORMAT variable must be set when multiple SCMs are used.")
+ logger.error("The SRCREV_FORMAT variable must be set when multiple SCMs are used.")
raise ParameterError
for scm in scms:
@@ -454,7 +449,7 @@ def runfetchcmd(cmd, d, quiet = False):
if val:
cmd = 'export ' + var + '=\"%s\"; %s' % (val, cmd)
- bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % cmd)
+ logger.debug(1, "Running %s", cmd)
# redirect stderr to stdout
stdout_handle = os.popen(cmd + " 2>&1", "r")
@@ -490,7 +485,7 @@ def try_mirrors(d, uri, mirrors, check = False, force = False):
"""
fpath = os.path.join(data.getVar("DL_DIR", d, 1), os.path.basename(uri))
if not check and os.access(fpath, os.R_OK) and not force:
- bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists, skipping checkout." % fpath)
+ logger.debug(1, "%s already exists, skipping checkout.", fpath)
return fpath
ld = d.createCopy()
@@ -500,7 +495,7 @@ def try_mirrors(d, uri, mirrors, check = False, force = False):
try:
ud = FetchData(newuri, ld)
except bb.fetch.NoMethodError:
- bb.msg.debug(1, bb.msg.domain.Fetcher, "No method for %s" % uri)
+ logger.debug(1, "No method for %s", uri)
continue
ud.setup_localpath(ld)
@@ -518,8 +513,8 @@ def try_mirrors(d, uri, mirrors, check = False, force = False):
bb.fetch.MD5SumError):
import sys
(type, value, traceback) = sys.exc_info()
- bb.msg.debug(2, bb.msg.domain.Fetcher, "Mirror fetch failure: %s" % value)
- removefile(ud.localpath)
+ logger.debug(2, "Mirror fetch failure: %s", value)
+ bb.utils.remove(ud.localpath)
continue
return None
@@ -610,6 +605,13 @@ class Fetch(object):
and duplicate code execution)
"""
return url
+ def _strip_leading_slashes(self, relpath):
+ """
+ Remove leading slash as os.path.join can't cope
+ """
+ while os.path.isabs(relpath):
+ relpath = relpath[1:]
+ return relpath
def setUrls(self, urls):
self.__urls = urls
@@ -625,7 +627,7 @@ class Fetch(object):
"""
return False
- def suppports_srcrev(self):
+ def supports_srcrev(self):
"""
The fetcher supports auto source revisions (SRCREV)
"""
@@ -654,7 +656,7 @@ class Fetch(object):
Check the status of a URL
Assumes localpath was called first
"""
- bb.msg.note(1, bb.msg.domain.Fetcher, "URL %s could not be checked for status since no method exists." % url)
+ logger.info("URL %s could not be checked for status since no method exists.", url)
return True
def getSRCDate(urldata, d):
@@ -695,7 +697,7 @@ class Fetch(object):
if not rev:
rev = data.getVar("SRCREV_pn-%s_%s" % (pn, ud.parm['name']), d, 1)
if not rev:
- rev = data.getVar("SRCREV_%s" % (ud.parm['name']), d, 1)
+ rev = data.getVar("SRCREV_%s" % (ud.parm['name']), d, 1)
if not rev:
rev = data.getVar("SRCREV", d, 1)
if rev == "INVALID":
@@ -729,9 +731,7 @@ class Fetch(object):
"""
Verify the md5sum we wanted with the one we got
"""
- wanted_sum = None
- if 'md5sum' in ud.parm:
- wanted_sum = ud.parm['md5sum']
+ wanted_sum = ud.parm.get('md5sum')
if not wanted_sum:
return True
@@ -756,14 +756,14 @@ class Fetch(object):
if not hasattr(self, "_latest_revision"):
raise ParameterError
- pd = persist_data.PersistData(d, persistent_database_connection)
+ pd = persist_data.persist(d)
+ revs = pd['BB_URI_HEADREVS']
key = self.generate_revision_key(url, ud, d)
- rev = pd.getValue("BB_URI_HEADREVS", key)
+ rev = revs[key]
if rev != None:
return str(rev)
- rev = self._latest_revision(url, ud, d)
- pd.setValue("BB_URI_HEADREVS", key, rev)
+ revs[key] = rev = self._latest_revision(url, ud, d)
return rev
def sortable_revision(self, url, ud, d):
@@ -773,17 +773,18 @@ class Fetch(object):
if hasattr(self, "_sortable_revision"):
return self._sortable_revision(url, ud, d)
- pd = persist_data.PersistData(d, persistent_database_connection)
+ pd = persist_data.persist(d)
+ localcounts = pd['BB_URI_LOCALCOUNT']
key = self.generate_revision_key(url, ud, d)
latest_rev = self._build_revision(url, ud, d)
- last_rev = pd.getValue("BB_URI_LOCALCOUNT", key + "_rev")
+ last_rev = localcounts[key + '_rev']
uselocalcount = bb.data.getVar("BB_LOCALCOUNT_OVERRIDE", d, True) or False
count = None
if uselocalcount:
count = Fetch.localcount_internal_helper(ud, d)
if count is None:
- count = pd.getValue("BB_URI_LOCALCOUNT", key + "_count")
+ count = localcounts[key + '_count']
if last_rev == latest_rev:
return str(count + "+" + latest_rev)
@@ -799,8 +800,8 @@ class Fetch(object):
else:
count = str(int(count) + 1)
- pd.setValue("BB_URI_LOCALCOUNT", key + "_rev", latest_rev)
- pd.setValue("BB_URI_LOCALCOUNT", key + "_count", count)
+ localcounts[key + '_rev'] = latest_rev
+ localcounts[key + '_count'] = count
return str(count + "+" + latest_rev)
diff --git a/bitbake/lib/bb/fetch/bzr.py b/bitbake/lib/bb/fetch/bzr.py
index 813d7d8c80..afaf799900 100644
--- a/bitbake/lib/bb/fetch/bzr.py
+++ b/bitbake/lib/bb/fetch/bzr.py
@@ -25,11 +25,10 @@ BitBake 'Fetch' implementation for bzr.
import os
import sys
+import logging
import bb
from bb import data
-from bb.fetch import Fetch
-from bb.fetch import FetchError
-from bb.fetch import runfetchcmd
+from bb.fetch import Fetch, FetchError, runfetchcmd, logger
class Bzr(Fetch):
def supports(self, url, ud, d):
@@ -38,10 +37,7 @@ class Bzr(Fetch):
def localpath (self, url, ud, d):
# Create paths to bzr checkouts
- relpath = ud.path
- if relpath.startswith('/'):
- # Remove leading slash as os.path.join can't cope
- relpath = relpath[1:]
+ relpath = self._strip_leading_slashes(ud.path)
ud.pkgdir = os.path.join(data.expand('${BZRDIR}', d), ud.host, relpath)
revision = Fetch.srcrev_internal_helper(ud, d)
@@ -65,9 +61,7 @@ class Bzr(Fetch):
basecmd = data.expand('${FETCHCMD_bzr}', d)
- proto = "http"
- if "proto" in ud.parm:
- proto = ud.parm["proto"]
+ proto = ud.parm.get('proto', 'http')
bzrroot = ud.host + ud.path
@@ -93,22 +87,29 @@ class Bzr(Fetch):
if os.access(os.path.join(ud.pkgdir, os.path.basename(ud.pkgdir), '.bzr'), os.R_OK):
bzrcmd = self._buildbzrcommand(ud, d, "update")
- bb.msg.debug(1, bb.msg.domain.Fetcher, "BZR Update %s" % loc)
+ logger.debug(1, "BZR Update %s", loc)
os.chdir(os.path.join (ud.pkgdir, os.path.basename(ud.path)))
runfetchcmd(bzrcmd, d)
else:
- os.system("rm -rf %s" % os.path.join(ud.pkgdir, os.path.basename(ud.pkgdir)))
+ bb.utils.remove(os.path.join(ud.pkgdir, os.path.basename(ud.pkgdir)), True)
bzrcmd = self._buildbzrcommand(ud, d, "fetch")
- bb.msg.debug(1, bb.msg.domain.Fetcher, "BZR Checkout %s" % loc)
+ logger.debug(1, "BZR Checkout %s", loc)
bb.mkdirhier(ud.pkgdir)
os.chdir(ud.pkgdir)
- bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % bzrcmd)
+ logger.debug(1, "Running %s", bzrcmd)
runfetchcmd(bzrcmd, d)
os.chdir(ud.pkgdir)
+
+ scmdata = ud.parm.get("scmdata", "")
+ if scmdata == "keep":
+ tar_flags = ""
+ else:
+ tar_flags = "--exclude '.bzr' --exclude '.bzrtags'"
+
# tar them up to a defined filename
try:
- runfetchcmd("tar -czf %s %s" % (ud.localpath, os.path.basename(ud.pkgdir)), d)
+ runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, os.path.basename(ud.pkgdir)), d)
except:
t, v, tb = sys.exc_info()
try:
@@ -117,7 +118,7 @@ class Bzr(Fetch):
pass
raise t, v, tb
- def suppports_srcrev(self):
+ def supports_srcrev(self):
return True
def _revision_key(self, url, ud, d):
@@ -130,7 +131,7 @@ class Bzr(Fetch):
"""
Return the latest upstream revision number
"""
- bb.msg.debug(2, bb.msg.domain.Fetcher, "BZR fetcher hitting network for %s" % url)
+ logger.debug(2, "BZR fetcher hitting network for %s", url)
output = runfetchcmd(self._buildbzrcommand(ud, d, "revno"), d, True)
diff --git a/bitbake/lib/bb/fetch/cvs.py b/bitbake/lib/bb/fetch/cvs.py
index 61976f7ef4..0edb794b04 100644
--- a/bitbake/lib/bb/fetch/cvs.py
+++ b/bitbake/lib/bb/fetch/cvs.py
@@ -27,11 +27,10 @@ BitBake build tools.
#
import os
+import logging
import bb
from bb import data
-from bb.fetch import Fetch
-from bb.fetch import FetchError
-from bb.fetch import MissingParameterError
+from bb.fetch import Fetch, FetchError, MissingParameterError, logger
class Cvs(Fetch):
"""
@@ -48,9 +47,7 @@ class Cvs(Fetch):
raise MissingParameterError("cvs method needs a 'module' parameter")
ud.module = ud.parm["module"]
- ud.tag = ""
- if 'tag' in ud.parm:
- ud.tag = ud.parm['tag']
+ ud.tag = ud.parm.get('tag', "")
# Override the default date in certain cases
if 'date' in ud.parm:
@@ -77,17 +74,9 @@ class Cvs(Fetch):
def go(self, loc, ud, d):
- method = "pserver"
- if "method" in ud.parm:
- method = ud.parm["method"]
-
- localdir = ud.module
- if "localdir" in ud.parm:
- localdir = ud.parm["localdir"]
-
- cvs_port = ""
- if "port" in ud.parm:
- cvs_port = ud.parm["port"]
+ method = ud.parm.get('method', 'pserver')
+ localdir = ud.parm.get('localdir', ud.module)
+ cvs_port = ud.parm.get('port', '')
cvs_rsh = None
if method == "ext":
@@ -136,21 +125,21 @@ class Cvs(Fetch):
cvsupdatecmd = "CVS_RSH=\"%s\" %s" % (cvs_rsh, cvsupdatecmd)
# create module directory
- bb.msg.debug(2, bb.msg.domain.Fetcher, "Fetch: checking for module directory")
+ logger.debug(2, "Fetch: checking for module directory")
pkg = data.expand('${PN}', d)
pkgdir = os.path.join(data.expand('${CVSDIR}', localdata), pkg)
moddir = os.path.join(pkgdir, localdir)
if os.access(os.path.join(moddir, 'CVS'), os.R_OK):
- bb.msg.note(1, bb.msg.domain.Fetcher, "Update " + loc)
+ logger.info("Update " + loc)
# update sources there
os.chdir(moddir)
myret = os.system(cvsupdatecmd)
else:
- bb.msg.note(1, bb.msg.domain.Fetcher, "Fetch " + loc)
+ logger.info("Fetch " + loc)
# check out sources there
bb.mkdirhier(pkgdir)
os.chdir(pkgdir)
- bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % cvscmd)
+ logger.debug(1, "Running %s", cvscmd)
myret = os.system(cvscmd)
if myret != 0 or not os.access(moddir, os.R_OK):
@@ -160,14 +149,20 @@ class Cvs(Fetch):
pass
raise FetchError(ud.module)
+ scmdata = ud.parm.get("scmdata", "")
+ if scmdata == "keep":
+ tar_flags = ""
+ else:
+ tar_flags = "--exclude 'CVS'"
+
# tar them up to a defined filename
if 'fullpath' in ud.parm:
os.chdir(pkgdir)
- myret = os.system("tar -czf %s %s" % (ud.localpath, localdir))
+ myret = os.system("tar %s -czf %s %s" % (tar_flags, ud.localpath, localdir))
else:
os.chdir(moddir)
os.chdir('..')
- myret = os.system("tar -czf %s %s" % (ud.localpath, os.path.basename(moddir)))
+ myret = os.system("tar %s -czf %s %s" % (tar_flags, ud.localpath, os.path.basename(moddir)))
if myret != 0:
try:
diff --git a/bitbake/lib/bb/fetch/git.py b/bitbake/lib/bb/fetch/git.py
index 9bd447ff8b..b37a09743e 100644
--- a/bitbake/lib/bb/fetch/git.py
+++ b/bitbake/lib/bb/fetch/git.py
@@ -22,9 +22,11 @@ BitBake 'Fetch' git implementation
import os
import bb
+import bb.persist_data
from bb import data
from bb.fetch import Fetch
from bb.fetch import runfetchcmd
+from bb.fetch import logger
class Git(Fetch):
"""Class to fetch a module or modules from git repositories"""
@@ -116,6 +118,7 @@ class Git(Fetch):
repofile = os.path.join(data.getVar("DL_DIR", d, 1), ud.mirrortarball)
+
coname = '%s' % (ud.tag)
codir = os.path.join(ud.clonedir, coname)
@@ -153,7 +156,7 @@ class Git(Fetch):
os.chdir(ud.clonedir)
mirror_tarballs = data.getVar("BB_GENERATE_MIRROR_TARBALLS", d, True)
if mirror_tarballs != "0" or 'fullclone' in ud.parm:
- bb.msg.note(1, bb.msg.domain.Fetcher, "Creating tarball of git repository")
+ logger.info("Creating tarball of git repository")
runfetchcmd("tar -czf %s %s" % (repofile, os.path.join(".", ".git", "*") ), d)
if 'fullclone' in ud.parm:
@@ -179,19 +182,25 @@ class Git(Fetch):
readpathspec = ""
coprefix = os.path.join(codir, "git", "")
- bb.mkdirhier(codir)
- os.chdir(ud.clonedir)
- runfetchcmd("%s read-tree %s%s" % (ud.basecmd, ud.tag, readpathspec), d)
- runfetchcmd("%s checkout-index -q -f --prefix=%s -a" % (ud.basecmd, coprefix), d)
+ scmdata = ud.parm.get("scmdata", "")
+ if scmdata == "keep":
+ runfetchcmd("%s clone -n %s %s" % (ud.basecmd, ud.clonedir, coprefix), d)
+ os.chdir(coprefix)
+ runfetchcmd("%s checkout -q -f %s%s" % (ud.basecmd, ud.tag, readpathspec), d)
+ else:
+ bb.mkdirhier(codir)
+ os.chdir(ud.clonedir)
+ runfetchcmd("%s read-tree %s%s" % (ud.basecmd, ud.tag, readpathspec), d)
+ runfetchcmd("%s checkout-index -q -f --prefix=%s -a" % (ud.basecmd, coprefix), d)
os.chdir(codir)
- bb.msg.note(1, bb.msg.domain.Fetcher, "Creating tarball of git checkout")
+ logger.info("Creating tarball of git checkout")
runfetchcmd("tar -czf %s %s" % (ud.localpath, os.path.join(".", "*") ), d)
os.chdir(ud.clonedir)
bb.utils.prunedir(codir)
- def suppports_srcrev(self):
+ def supports_srcrev(self):
return True
def _contains_ref(self, tag, d):
@@ -199,11 +208,19 @@ class Git(Fetch):
output = runfetchcmd("%s log --pretty=oneline -n 1 %s -- 2> /dev/null | wc -l" % (basecmd, tag), d, quiet=True)
return output.split()[0] != "0"
- def _revision_key(self, url, ud, d):
+ def _revision_key(self, url, ud, d, branch=False):
"""
Return a unique key for the url
"""
- return "git:" + ud.host + ud.path.replace('/', '.') + ud.branch
+ key = 'git:' + ud.host + ud.path.replace('/', '.')
+ if branch:
+ return key + ud.branch
+ else:
+ return key
+
+ def generate_revision_key(self, url, ud, d, branch=False):
+ key = self._revision_key(url, ud, d, branch)
+ return "%s-%s" % (key, bb.data.getVar("PN", d, True) or "")
def _latest_revision(self, url, ud, d):
"""
@@ -221,6 +238,74 @@ class Git(Fetch):
raise bb.fetch.FetchError("Fetch command %s gave empty output\n" % (cmd))
return output.split()[0]
+ def latest_revision(self, url, ud, d):
+ """
+ Look in the cache for the latest revision, if not present ask the SCM.
+ """
+ persisted = bb.persist_data.persist(d)
+ revs = persisted['BB_URI_HEADREVS']
+
+ key = self.generate_revision_key(url, ud, d, branch=True)
+ rev = revs[key]
+ if rev is None:
+ # Compatibility with old key format, no branch included
+ oldkey = self.generate_revision_key(url, ud, d, branch=False)
+ rev = revs[oldkey]
+ if rev is not None:
+ del revs[oldkey]
+ else:
+ rev = self._latest_revision(url, ud, d)
+ revs[key] = rev
+
+ return str(rev)
+
+ def sortable_revision(self, url, ud, d):
+ """
+
+ """
+ pd = bb.persist_data.persist(d)
+ localcounts = pd['BB_URI_LOCALCOUNT']
+ key = self.generate_revision_key(url, ud, d, branch=True)
+ oldkey = self.generate_revision_key(url, ud, d, branch=False)
+
+ latest_rev = self._build_revision(url, ud, d)
+ last_rev = localcounts[key + '_rev']
+ if last_rev is None:
+ last_rev = localcounts[oldkey + '_rev']
+ if last_rev is not None:
+ del localcounts[oldkey + '_rev']
+ localcounts[key + '_rev'] = last_rev
+
+ uselocalcount = bb.data.getVar("BB_LOCALCOUNT_OVERRIDE", d, True) or False
+ count = None
+ if uselocalcount:
+ count = Fetch.localcount_internal_helper(ud, d)
+ if count is None:
+ count = localcounts[key + '_count']
+ if count is None:
+ count = localcounts[oldkey + '_count']
+ if count is not None:
+ del localcounts[oldkey + '_count']
+ localcounts[key + '_count'] = count
+
+ if last_rev == latest_rev:
+ return str(count + "+" + latest_rev)
+
+ buildindex_provided = hasattr(self, "_sortable_buildindex")
+ if buildindex_provided:
+ count = self._sortable_buildindex(url, ud, d, latest_rev)
+ if count is None:
+ count = "0"
+ elif uselocalcount or buildindex_provided:
+ count = str(count)
+ else:
+ count = str(int(count) + 1)
+
+ localcounts[key + '_rev'] = latest_rev
+ localcounts[key + '_count'] = count
+
+ return str(count + "+" + latest_rev)
+
def _build_revision(self, url, ud, d):
return ud.tag
@@ -238,7 +323,7 @@ class Git(Fetch):
print("no repo")
self.go(None, ud, d)
if not os.path.exists(ud.clonedir):
- bb.msg.error(bb.msg.domain.Fetcher, "GIT repository for %s doesn't exist in %s, cannot get sortable buildnumber, using old value" % (url, ud.clonedir))
+ logger.error("GIT repository for %s doesn't exist in %s, cannot get sortable buildnumber, using old value", url, ud.clonedir)
return None
@@ -250,5 +335,5 @@ class Git(Fetch):
os.chdir(cwd)
buildindex = "%s" % output.split()[0]
- bb.msg.debug(1, bb.msg.domain.Fetcher, "GIT repository for %s in %s is returning %s revisions in rev-list before %s" % (url, ud.clonedir, buildindex, rev))
+ logger.debug(1, "GIT repository for %s in %s is returning %s revisions in rev-list before %s", url, ud.clonedir, buildindex, rev)
return buildindex
diff --git a/bitbake/lib/bb/fetch/hg.py b/bitbake/lib/bb/fetch/hg.py
index efb3b5c76d..3c649a6ad0 100644
--- a/bitbake/lib/bb/fetch/hg.py
+++ b/bitbake/lib/bb/fetch/hg.py
@@ -26,21 +26,27 @@ BitBake 'Fetch' implementation for mercurial DRCS (hg).
import os
import sys
+import logging
import bb
from bb import data
from bb.fetch import Fetch
from bb.fetch import FetchError
from bb.fetch import MissingParameterError
from bb.fetch import runfetchcmd
+from bb.fetch import logger
class Hg(Fetch):
- """Class to fetch a from mercurial repositories"""
+ """Class to fetch from mercurial repositories"""
def supports(self, url, ud, d):
"""
Check to see if a given url can be fetched with mercurial.
"""
return ud.type in ['hg']
+ def forcefetch(self, url, ud, d):
+ revTag = ud.parm.get('rev', 'tip')
+ return revTag == "tip"
+
def localpath(self, url, ud, d):
if not "module" in ud.parm:
raise MissingParameterError("hg method needs a 'module' parameter")
@@ -48,10 +54,7 @@ class Hg(Fetch):
ud.module = ud.parm["module"]
# Create paths to mercurial checkouts
- relpath = ud.path
- if relpath.startswith('/'):
- # Remove leading slash as os.path.join can't cope
- relpath = relpath[1:]
+ relpath = self._strip_leading_slashes(ud.path)
ud.pkgdir = os.path.join(data.expand('${HGDIR}', d), ud.host, relpath)
ud.moddir = os.path.join(ud.pkgdir, ud.module)
@@ -78,9 +81,7 @@ class Hg(Fetch):
basecmd = data.expand('${FETCHCMD_hg}', d)
- proto = "http"
- if "proto" in ud.parm:
- proto = ud.parm["proto"]
+ proto = ud.parm.get('proto', 'http')
host = ud.host
if proto == "file":
@@ -116,34 +117,41 @@ class Hg(Fetch):
def go(self, loc, ud, d):
"""Fetch url"""
- bb.msg.debug(2, bb.msg.domain.Fetcher, "Fetch: checking for module directory '" + ud.moddir + "'")
+ logger.debug(2, "Fetch: checking for module directory '" + ud.moddir + "'")
if os.access(os.path.join(ud.moddir, '.hg'), os.R_OK):
updatecmd = self._buildhgcommand(ud, d, "pull")
- bb.msg.note(1, bb.msg.domain.Fetcher, "Update " + loc)
+ logger.info("Update " + loc)
# update sources there
os.chdir(ud.moddir)
- bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % updatecmd)
+ logger.debug(1, "Running %s", updatecmd)
runfetchcmd(updatecmd, d)
else:
fetchcmd = self._buildhgcommand(ud, d, "fetch")
- bb.msg.note(1, bb.msg.domain.Fetcher, "Fetch " + loc)
+ logger.info("Fetch " + loc)
# check out sources there
bb.mkdirhier(ud.pkgdir)
os.chdir(ud.pkgdir)
- bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % fetchcmd)
+ logger.debug(1, "Running %s", fetchcmd)
runfetchcmd(fetchcmd, d)
# Even when we clone (fetch), we still need to update as hg's clone
# won't checkout the specified revision if its on a branch
updatecmd = self._buildhgcommand(ud, d, "update")
- bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % updatecmd)
+ os.chdir(ud.moddir)
+ logger.debug(1, "Running %s", updatecmd)
runfetchcmd(updatecmd, d)
+ scmdata = ud.parm.get("scmdata", "")
+ if scmdata == "keep":
+ tar_flags = ""
+ else:
+ tar_flags = "--exclude '.hg' --exclude '.hgrags'"
+
os.chdir(ud.pkgdir)
try:
- runfetchcmd("tar -czf %s %s" % (ud.localpath, ud.module), d)
+ runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, ud.module), d)
except:
t, v, tb = sys.exc_info()
try:
@@ -152,7 +160,7 @@ class Hg(Fetch):
pass
raise t, v, tb
- def suppports_srcrev(self):
+ def supports_srcrev(self):
return True
def _latest_revision(self, url, ud, d):
diff --git a/bitbake/lib/bb/fetch/local.py b/bitbake/lib/bb/fetch/local.py
index 882a2c4602..6aa9e45768 100644
--- a/bitbake/lib/bb/fetch/local.py
+++ b/bitbake/lib/bb/fetch/local.py
@@ -66,7 +66,7 @@ class Local(Fetch):
Check the status of the url
"""
if urldata.localpath.find("*") != -1:
- bb.msg.note(1, bb.msg.domain.Fetcher, "URL %s looks like a glob and was therefore not checked." % url)
+ logger.info("URL %s looks like a glob and was therefore not checked.", url)
return True
if os.path.exists(urldata.localpath):
return True
diff --git a/bitbake/lib/bb/fetch/osc.py b/bitbake/lib/bb/fetch/osc.py
index ed773939b0..8e0423d762 100644
--- a/bitbake/lib/bb/fetch/osc.py
+++ b/bitbake/lib/bb/fetch/osc.py
@@ -8,8 +8,10 @@ Based on the svn "Fetch" implementation.
import os
import sys
+import logging
import bb
from bb import data
+from bb import utils
from bb.fetch import Fetch
from bb.fetch import FetchError
from bb.fetch import MissingParameterError
@@ -32,10 +34,7 @@ class Osc(Fetch):
ud.module = ud.parm["module"]
# Create paths to osc checkouts
- relpath = ud.path
- if relpath.startswith('/'):
- # Remove leading slash as os.path.join can't cope
- relpath = relpath[1:]
+ relpath = self._strip_leading_slashes(ud.path)
ud.pkgdir = os.path.join(data.expand('${OSCDIR}', d), ud.host)
ud.moddir = os.path.join(ud.pkgdir, relpath, ud.module)
@@ -61,9 +60,7 @@ class Osc(Fetch):
basecmd = data.expand('${FETCHCMD_osc}', d)
- proto = "ocs"
- if "proto" in ud.parm:
- proto = ud.parm["proto"]
+ proto = ud.parm.get('proto', 'ocs')
options = []
@@ -72,10 +69,7 @@ class Osc(Fetch):
if ud.revision:
options.append("-r %s" % ud.revision)
- coroot = ud.path
- if coroot.startswith('/'):
- # Remove leading slash as os.path.join can't cope
- coroot= coroot[1:]
+ coroot = self._strip_leading_slashes(ud.path)
if command is "fetch":
osccmd = "%s %s co %s/%s %s" % (basecmd, config, coroot, ud.module, " ".join(options))
@@ -91,22 +85,22 @@ class Osc(Fetch):
Fetch url
"""
- bb.msg.debug(2, bb.msg.domain.Fetcher, "Fetch: checking for module directory '" + ud.moddir + "'")
+ logger.debug(2, "Fetch: checking for module directory '" + ud.moddir + "'")
if os.access(os.path.join(data.expand('${OSCDIR}', d), ud.path, ud.module), os.R_OK):
oscupdatecmd = self._buildosccommand(ud, d, "update")
- bb.msg.note(1, bb.msg.domain.Fetcher, "Update "+ loc)
+ logger.info("Update "+ loc)
# update sources there
os.chdir(ud.moddir)
- bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % oscupdatecmd)
+ logger.debug(1, "Running %s", oscupdatecmd)
runfetchcmd(oscupdatecmd, d)
else:
oscfetchcmd = self._buildosccommand(ud, d, "fetch")
- bb.msg.note(1, bb.msg.domain.Fetcher, "Fetch " + loc)
+ logger.info("Fetch " + loc)
# check out sources there
bb.mkdirhier(ud.pkgdir)
os.chdir(ud.pkgdir)
- bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % oscfetchcmd)
+ logger.debug(1, "Running %s", oscfetchcmd)
runfetchcmd(oscfetchcmd, d)
os.chdir(os.path.join(ud.pkgdir + ud.path))
@@ -129,9 +123,8 @@ class Osc(Fetch):
Generate a .oscrc to be used for this run.
"""
- config_path = "%s/oscrc" % data.expand('${OSCDIR}', d)
- if (os.path.exists(config_path)):
- os.remove(config_path)
+ config_path = os.path.join(data.expand('${OSCDIR}', d), "oscrc")
+ bb.utils.remove(config_path)
f = open(config_path, 'w')
f.write("[general]\n")
diff --git a/bitbake/lib/bb/fetch/perforce.py b/bitbake/lib/bb/fetch/perforce.py
index 1c74cff349..222ed7eaaa 100644
--- a/bitbake/lib/bb/fetch/perforce.py
+++ b/bitbake/lib/bb/fetch/perforce.py
@@ -27,10 +27,12 @@ BitBake build tools.
from future_builtins import zip
import os
+import logging
import bb
from bb import data
from bb.fetch import Fetch
from bb.fetch import FetchError
+from bb.fetch import logger
class Perforce(Fetch):
def supports(self, url, ud, d):
@@ -86,10 +88,10 @@ class Perforce(Fetch):
depot += "@%s" % (p4date)
p4cmd = data.getVar('FETCHCOMMAND_p4', d, 1)
- bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s%s changes -m 1 %s" % (p4cmd, p4opt, depot))
+ logger.debug(1, "Running %s%s changes -m 1 %s", p4cmd, p4opt, depot)
p4file = os.popen("%s%s changes -m 1 %s" % (p4cmd, p4opt, depot))
cset = p4file.readline().strip()
- bb.msg.debug(1, bb.msg.domain.Fetcher, "READ %s" % (cset))
+ logger.debug(1, "READ %s", cset)
if not cset:
return -1
@@ -111,8 +113,7 @@ class Perforce(Fetch):
if which != -1:
base = path[:which]
- if base[0] == "/":
- base = base[1:]
+ base = self._strip_leading_slashes(base)
cset = Perforce.getcset(d, path, host, user, pswd, parm)
@@ -132,10 +133,7 @@ class Perforce(Fetch):
else:
path = depot
- if "module" in parm:
- module = parm["module"]
- else:
- module = os.path.basename(path)
+ module = parm.get('module', os.path.basename(path))
localdata = data.createCopy(d)
data.setVar('OVERRIDES', "p4:%s" % data.getVar('OVERRIDES', localdata), localdata)
@@ -155,13 +153,13 @@ class Perforce(Fetch):
p4cmd = data.getVar('FETCHCOMMAND', localdata, 1)
# create temp directory
- bb.msg.debug(2, bb.msg.domain.Fetcher, "Fetch: creating temporary directory")
+ logger.debug(2, "Fetch: creating temporary directory")
bb.mkdirhier(data.expand('${WORKDIR}', localdata))
data.setVar('TMPBASE', data.expand('${WORKDIR}/oep4.XXXXXX', localdata), localdata)
tmppipe = os.popen(data.getVar('MKTEMPDIRCMD', localdata, 1) or "false")
tmpfile = tmppipe.readline().strip()
if not tmpfile:
- bb.msg.error(bb.msg.domain.Fetcher, "Fetch: unable to create temporary directory.. make sure 'mktemp' is in the PATH.")
+ logger.error("Fetch: unable to create temporary directory.. make sure 'mktemp' is in the PATH.")
raise FetchError(module)
if "label" in parm:
@@ -171,12 +169,12 @@ class Perforce(Fetch):
depot = "%s@%s" % (depot, cset)
os.chdir(tmpfile)
- bb.msg.note(1, bb.msg.domain.Fetcher, "Fetch " + loc)
- bb.msg.note(1, bb.msg.domain.Fetcher, "%s%s files %s" % (p4cmd, p4opt, depot))
+ logger.info("Fetch " + loc)
+ logger.info("%s%s files %s", p4cmd, p4opt, depot)
p4file = os.popen("%s%s files %s" % (p4cmd, p4opt, depot))
if not p4file:
- bb.msg.error(bb.msg.domain.Fetcher, "Fetch: unable to get the P4 files from %s" % (depot))
+ logger.error("Fetch: unable to get the P4 files from %s", depot)
raise FetchError(module)
count = 0
@@ -194,7 +192,7 @@ class Perforce(Fetch):
count = count + 1
if count == 0:
- bb.msg.error(bb.msg.domain.Fetcher, "Fetch: No files gathered from the P4 fetch")
+ logger.error("Fetch: No files gathered from the P4 fetch")
raise FetchError(module)
myret = os.system("tar -czf %s %s" % (ud.localpath, module))
@@ -205,4 +203,4 @@ class Perforce(Fetch):
pass
raise FetchError(module)
# cleanup
- os.system('rm -rf %s' % tmpfile)
+ bb.utils.prunedir(tmpfile)
diff --git a/bitbake/lib/bb/fetch/repo.py b/bitbake/lib/bb/fetch/repo.py
index 883310b019..03642e7a0d 100644
--- a/bitbake/lib/bb/fetch/repo.py
+++ b/bitbake/lib/bb/fetch/repo.py
@@ -45,24 +45,11 @@ class Repo(Fetch):
"master".
"""
- if "protocol" in ud.parm:
- ud.proto = ud.parm["protocol"]
- else:
- ud.proto = "git"
-
- if "branch" in ud.parm:
- ud.branch = ud.parm["branch"]
- else:
- ud.branch = "master"
-
- if "manifest" in ud.parm:
- manifest = ud.parm["manifest"]
- if manifest.endswith(".xml"):
- ud.manifest = manifest
- else:
- ud.manifest = manifest + ".xml"
- else:
- ud.manifest = "default.xml"
+ ud.proto = ud.parm.get('protocol', 'git')
+ ud.branch = ud.parm.get('branch', 'master')
+ ud.manifest = ud.parm.get('manifest', 'default.xml')
+ if not ud.manifest.endswith('.xml'):
+ ud.manifest += '.xml'
ud.localfile = data.expand("repo_%s%s_%s_%s.tar.gz" % (ud.host, ud.path.replace("/", "."), ud.manifest, ud.branch), d)
@@ -72,7 +59,7 @@ class Repo(Fetch):
"""Fetch url"""
if os.access(os.path.join(data.getVar("DL_DIR", d, True), ud.localfile), os.R_OK):
- bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists (or was stashed). Skipping repo init / sync." % ud.localpath)
+ logger.debug(1, "%s already exists (or was stashed). Skipping repo init / sync.", ud.localpath)
return
gitsrcname = "%s%s" % (ud.host, ud.path.replace("/", "."))
@@ -92,10 +79,16 @@ class Repo(Fetch):
runfetchcmd("repo sync", d)
os.chdir(codir)
+ scmdata = ud.parm.get("scmdata", "")
+ if scmdata == "keep":
+ tar_flags = ""
+ else:
+ tar_flags = "--exclude '.repo' --exclude '.git'"
+
# Create a cache
- runfetchcmd("tar --exclude=.repo --exclude=.git -czf %s %s" % (ud.localpath, os.path.join(".", "*") ), d)
+ runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, os.path.join(".", "*") ), d)
- def suppports_srcrev(self):
+ def supports_srcrev(self):
return False
def _build_revision(self, url, ud, d):
diff --git a/bitbake/lib/bb/fetch/svk.py b/bitbake/lib/bb/fetch/svk.py
index a17ac04d21..595a9da255 100644
--- a/bitbake/lib/bb/fetch/svk.py
+++ b/bitbake/lib/bb/fetch/svk.py
@@ -26,11 +26,13 @@ This implementation is for svk. It is based on the svn implementation
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
import os
+import logging
import bb
from bb import data
from bb.fetch import Fetch
from bb.fetch import FetchError
from bb.fetch import MissingParameterError
+from bb.fetch import logger
class Svk(Fetch):
"""Class to fetch a module or modules from svk repositories"""
@@ -46,18 +48,14 @@ class Svk(Fetch):
else:
ud.module = ud.parm["module"]
- ud.revision = ""
- if 'rev' in ud.parm:
- ud.revision = ud.parm['rev']
+ ud.revision = ud.parm.get('rev', "")
ud.localfile = data.expand('%s_%s_%s_%s_%s.tar.gz' % (ud.module.replace('/', '.'), ud.host, ud.path.replace('/', '.'), ud.revision, ud.date), d)
return os.path.join(data.getVar("DL_DIR", d, True), ud.localfile)
def forcefetch(self, url, ud, d):
- if (ud.date == "now"):
- return True
- return False
+ return ud.date == "now"
def go(self, loc, ud, d):
"""Fetch urls"""
@@ -72,19 +70,19 @@ class Svk(Fetch):
# create temp directory
localdata = data.createCopy(d)
data.update_data(localdata)
- bb.msg.debug(2, bb.msg.domain.Fetcher, "Fetch: creating temporary directory")
+ logger.debug(2, "Fetch: creating temporary directory")
bb.mkdirhier(data.expand('${WORKDIR}', localdata))
data.setVar('TMPBASE', data.expand('${WORKDIR}/oesvk.XXXXXX', localdata), localdata)
tmppipe = os.popen(data.getVar('MKTEMPDIRCMD', localdata, 1) or "false")
tmpfile = tmppipe.readline().strip()
if not tmpfile:
- bb.msg.error(bb.msg.domain.Fetcher, "Fetch: unable to create temporary directory.. make sure 'mktemp' is in the PATH.")
+ logger.error("Fetch: unable to create temporary directory.. make sure 'mktemp' is in the PATH.")
raise FetchError(ud.module)
# check out sources there
os.chdir(tmpfile)
- bb.msg.note(1, bb.msg.domain.Fetcher, "Fetch " + loc)
- bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % svkcmd)
+ logger.info("Fetch " + loc)
+ logger.debug(1, "Running %s", svkcmd)
myret = os.system(svkcmd)
if myret != 0:
try:
@@ -103,4 +101,4 @@ class Svk(Fetch):
pass
raise FetchError(ud.module)
# cleanup
- os.system('rm -rf %s' % tmpfile)
+ bb.utils.prunedir(tmpfile)
diff --git a/bitbake/lib/bb/fetch/svn.py b/bitbake/lib/bb/fetch/svn.py
index 375e8df055..8f053abf74 100644
--- a/bitbake/lib/bb/fetch/svn.py
+++ b/bitbake/lib/bb/fetch/svn.py
@@ -25,12 +25,14 @@ BitBake 'Fetch' implementation for svn.
import os
import sys
+import logging
import bb
from bb import data
from bb.fetch import Fetch
from bb.fetch import FetchError
from bb.fetch import MissingParameterError
from bb.fetch import runfetchcmd
+from bb.fetch import logger
class Svn(Fetch):
"""Class to fetch a module or modules from svn repositories"""
@@ -47,10 +49,7 @@ class Svn(Fetch):
ud.module = ud.parm["module"]
# Create paths to svn checkouts
- relpath = ud.path
- if relpath.startswith('/'):
- # Remove leading slash as os.path.join can't cope
- relpath = relpath[1:]
+ relpath = self._strip_leading_slashes(ud.path)
ud.pkgdir = os.path.join(data.expand('${SVNDIR}', d), ud.host, relpath)
ud.moddir = os.path.join(ud.pkgdir, ud.module)
@@ -92,9 +91,7 @@ class Svn(Fetch):
basecmd = data.expand('${FETCHCMD_svn}', d)
- proto = "svn"
- if "proto" in ud.parm:
- proto = ud.parm["proto"]
+ proto = ud.parm.get('proto', 'svn')
svn_rsh = None
if proto == "svn+ssh" and "rsh" in ud.parm:
@@ -136,28 +133,34 @@ class Svn(Fetch):
def go(self, loc, ud, d):
"""Fetch url"""
- bb.msg.debug(2, bb.msg.domain.Fetcher, "Fetch: checking for module directory '" + ud.moddir + "'")
+ logger.debug(2, "Fetch: checking for module directory '" + ud.moddir + "'")
if os.access(os.path.join(ud.moddir, '.svn'), os.R_OK):
svnupdatecmd = self._buildsvncommand(ud, d, "update")
- bb.msg.note(1, bb.msg.domain.Fetcher, "Update " + loc)
+ logger.info("Update " + loc)
# update sources there
os.chdir(ud.moddir)
- bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % svnupdatecmd)
+ logger.debug(1, "Running %s", svnupdatecmd)
runfetchcmd(svnupdatecmd, d)
else:
svnfetchcmd = self._buildsvncommand(ud, d, "fetch")
- bb.msg.note(1, bb.msg.domain.Fetcher, "Fetch " + loc)
+ logger.info("Fetch " + loc)
# check out sources there
bb.mkdirhier(ud.pkgdir)
os.chdir(ud.pkgdir)
- bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % svnfetchcmd)
+ logger.debug(1, "Running %s", svnfetchcmd)
runfetchcmd(svnfetchcmd, d)
+ scmdata = ud.parm.get("scmdata", "")
+ if scmdata == "keep":
+ tar_flags = ""
+ else:
+ tar_flags = "--exclude '.svn'"
+
os.chdir(ud.pkgdir)
# tar them up to a defined filename
try:
- runfetchcmd("tar -czf %s %s" % (ud.localpath, ud.module), d)
+ runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, ud.module), d)
except:
t, v, tb = sys.exc_info()
try:
@@ -166,7 +169,7 @@ class Svn(Fetch):
pass
raise t, v, tb
- def suppports_srcrev(self):
+ def supports_srcrev(self):
return True
def _revision_key(self, url, ud, d):
@@ -179,7 +182,7 @@ class Svn(Fetch):
"""
Return the latest upstream revision number
"""
- bb.msg.debug(2, bb.msg.domain.Fetcher, "SVN fetcher hitting network for %s" % url)
+ logger.debug(2, "SVN fetcher hitting network for %s", url)
output = runfetchcmd("LANG=C LC_ALL=C " + self._buildsvncommand(ud, d, "info"), d, True)
diff --git a/bitbake/lib/bb/fetch/wget.py b/bitbake/lib/bb/fetch/wget.py
index dcc58c75e8..4d4bdfd493 100644
--- a/bitbake/lib/bb/fetch/wget.py
+++ b/bitbake/lib/bb/fetch/wget.py
@@ -26,12 +26,11 @@ BitBake build tools.
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
import os
+import logging
import bb
+import urllib
from bb import data
-from bb.fetch import Fetch
-from bb.fetch import FetchError
-from bb.fetch import encodeurl, decodeurl
-from bb.fetch import runfetchcmd
+from bb.fetch import Fetch, FetchError, encodeurl, decodeurl, logger, runfetchcmd
class Wget(Fetch):
"""Class to fetch urls via 'wget'"""
@@ -45,7 +44,7 @@ class Wget(Fetch):
url = encodeurl([ud.type, ud.host, ud.path, ud.user, ud.pswd, {}])
ud.basename = os.path.basename(ud.path)
- ud.localfile = data.expand(os.path.basename(url), d)
+ ud.localfile = data.expand(urllib.unquote(ud.basename), d)
return os.path.join(data.getVar("DL_DIR", d, True), ud.localfile)
@@ -68,15 +67,14 @@ class Wget(Fetch):
fetchcmd = fetchcmd.replace("${URI}", uri.split(";")[0])
fetchcmd = fetchcmd.replace("${FILE}", ud.basename)
-
- bb.msg.note(1, bb.msg.domain.Fetcher, "fetch " + uri)
- bb.msg.debug(2, bb.msg.domain.Fetcher, "executing " + fetchcmd)
+ logger.info("fetch " + uri)
+ logger.debug(2, "executing " + fetchcmd)
runfetchcmd(fetchcmd, d)
# Sanity check since wget can pretend it succeed when it didn't
# Also, this used to happen if sourceforge sent us to the mirror page
if not os.path.exists(ud.localpath) and not checkonly:
- bb.msg.debug(2, bb.msg.domain.Fetcher, "The fetch command for %s returned success but %s doesn't exist?..." % (uri, ud.localpath))
+ logger.debug(2, "The fetch command for %s returned success but %s doesn't exist?...", uri, ud.localpath)
return False
return True
diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py
new file mode 100644
index 0000000000..ef9d75f3fe
--- /dev/null
+++ b/bitbake/lib/bb/fetch2/__init__.py
@@ -0,0 +1,985 @@
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+"""
+BitBake 'Fetch' implementations
+
+Classes for obtaining upstream sources for the
+BitBake build tools.
+"""
+
+# Copyright (C) 2003, 2004 Chris Larson
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# 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.
+#
+# Based on functions from the base bb module, Copyright 2003 Holger Schurig
+
+from __future__ import absolute_import
+from __future__ import print_function
+import os, re
+import logging
+import bb
+from bb import data
+from bb import persist_data
+from bb import utils
+
+__version__ = "2"
+
+logger = logging.getLogger("BitBake.Fetcher")
+
+class BBFetchException(Exception):
+ """Class all fetch exceptions inherit from"""
+ def __init__(self, message):
+ self.msg = message
+ Exception.__init__(self, message)
+
+ def __str__(self):
+ return self.msg
+
+class MalformedUrl(BBFetchException):
+ """Exception raised when encountering an invalid url"""
+ def __init__(self, url):
+ msg = "The URL: '%s' is invalid and cannot be interpreted" % url
+ self.url = url
+ BBFetchException.__init__(self, msg)
+ self.args = url
+
+class FetchError(BBFetchException):
+ """General fetcher exception when something happens incorrectly"""
+ def __init__(self, message, url = None):
+ msg = "Fetcher failure for URL: '%s'. %s" % (url, message)
+ self.url = url
+ BBFetchException.__init__(self, msg)
+ self.args = (message, url)
+
+class UnpackError(BBFetchException):
+ """General fetcher exception when something happens incorrectly when unpacking"""
+ def __init__(self, message, url):
+ msg = "Unpack failure for URL: '%s'. %s" % (url, message)
+ self.url = url
+ BBFetchException.__init__(self, msg)
+ self.args = (message, url)
+
+class NoMethodError(BBFetchException):
+ """Exception raised when there is no method to obtain a supplied url or set of urls"""
+ def __init__(self, url):
+ msg = "Could not find a fetcher which supports the URL: '%s'" % url
+ self.url = url
+ BBFetchException.__init__(self, msg)
+ self.args = url
+
+class MissingParameterError(BBFetchException):
+ """Exception raised when a fetch method is missing a critical parameter in the url"""
+ def __init__(self, missing, url):
+ msg = "URL: '%s' is missing the required parameter '%s'" % (url, missing)
+ self.url = url
+ self.missing = missing
+ BBFetchException.__init__(self, msg)
+ self.args = (missing, url)
+
+class ParameterError(BBFetchException):
+ """Exception raised when a url cannot be proccessed due to invalid parameters."""
+ def __init__(self, message, url):
+ msg = "URL: '%s' has invalid parameters. %s" % (url, message)
+ self.url = url
+ BBFetchException.__init__(self, msg)
+ self.args = (message, url)
+
+class MD5SumError(BBFetchException):
+ """Exception raised when a MD5 checksum of a file does not match for a downloaded file"""
+ def __init__(self, path, wanted, got, url):
+ msg = "File: '%s' has md5 sum %s when %s was expected (from URL: '%s')" % (path, got, wanted, url)
+ self.url = url
+ self.path = path
+ self.wanted = wanted
+ self.got = got
+ BBFetchException.__init__(self, msg)
+ self.args = (path, wanted, got, url)
+
+class SHA256SumError(MD5SumError):
+ """Exception raised when a SHA256 checksum of a file does not match for a downloaded file"""
+
+def decodeurl(url):
+ """Decodes an URL into the tokens (scheme, network location, path,
+ user, password, parameters).
+ """
+
+ m = re.compile('(?P<type>[^:]*)://((?P<user>.+)@)?(?P<location>[^;]+)(;(?P<parm>.*))?').match(url)
+ if not m:
+ raise MalformedUrl(url)
+
+ type = m.group('type')
+ location = m.group('location')
+ if not location:
+ raise MalformedUrl(url)
+ user = m.group('user')
+ parm = m.group('parm')
+
+ locidx = location.find('/')
+ if locidx != -1 and type.lower() != 'file':
+ host = location[:locidx]
+ path = location[locidx:]
+ else:
+ host = ""
+ path = location
+ if user:
+ m = re.compile('(?P<user>[^:]+)(:?(?P<pswd>.*))').match(user)
+ if m:
+ user = m.group('user')
+ pswd = m.group('pswd')
+ else:
+ user = ''
+ pswd = ''
+
+ p = {}
+ if parm:
+ for s in parm.split(';'):
+ s1, s2 = s.split('=')
+ p[s1] = s2
+
+ return (type, host, path, user, pswd, p)
+
+def encodeurl(decoded):
+ """Encodes a URL from tokens (scheme, network location, path,
+ user, password, parameters).
+ """
+
+ (type, host, path, user, pswd, p) = decoded
+
+ if not path:
+ raise MissingParameterError('path', "encoded from the data %s" % str(decoded))
+ if not type:
+ raise MissingParameterError('type', "encoded from the data %s" % str(decoded))
+ url = '%s://' % type
+ if user and type != "file":
+ url += "%s" % user
+ if pswd:
+ url += ":%s" % pswd
+ url += "@"
+ if host and type != "file":
+ url += "%s" % host
+ url += "%s" % path
+ if p:
+ for parm in p:
+ url += ";%s=%s" % (parm, p[parm])
+
+ return url
+
+def uri_replace(ud, uri_find, uri_replace, d):
+ if not ud.url or not uri_find or not uri_replace:
+ logger.debug(1, "uri_replace: passed an undefined value, not replacing")
+ uri_decoded = list(decodeurl(ud.url))
+ uri_find_decoded = list(decodeurl(uri_find))
+ uri_replace_decoded = list(decodeurl(uri_replace))
+ result_decoded = ['', '', '', '', '', {}]
+ for i in uri_find_decoded:
+ loc = uri_find_decoded.index(i)
+ result_decoded[loc] = uri_decoded[loc]
+ if isinstance(i, basestring):
+ if (re.match(i, uri_decoded[loc])):
+ result_decoded[loc] = re.sub(i, uri_replace_decoded[loc], uri_decoded[loc])
+ if uri_find_decoded.index(i) == 2:
+ if ud.mirrortarball:
+ result_decoded[loc] = os.path.join(os.path.dirname(result_decoded[loc]), os.path.basename(ud.mirrortarball))
+ elif ud.localpath:
+ result_decoded[loc] = os.path.join(os.path.dirname(result_decoded[loc]), os.path.basename(ud.localpath))
+ else:
+ return ud.url
+ return encodeurl(result_decoded)
+
+methods = []
+urldata_cache = {}
+saved_headrevs = {}
+
+def fetcher_init(d):
+ """
+ Called to initialize the fetchers once the configuration data is known.
+ Calls before this must not hit the cache.
+ """
+ pd = persist_data.persist(d)
+ # When to drop SCM head revisions controlled by user policy
+ srcrev_policy = bb.data.getVar('BB_SRCREV_POLICY', d, True) or "clear"
+ if srcrev_policy == "cache":
+ logger.debug(1, "Keeping SRCREV cache due to cache policy of: %s", srcrev_policy)
+ elif srcrev_policy == "clear":
+ logger.debug(1, "Clearing SRCREV cache due to cache policy of: %s", srcrev_policy)
+ try:
+ bb.fetch2.saved_headrevs = pd['BB_URI_HEADREVS'].items()
+ except:
+ pass
+ del pd['BB_URI_HEADREVS']
+ else:
+ raise FetchError("Invalid SRCREV cache policy of: %s" % srcrev_policy)
+
+ for m in methods:
+ if hasattr(m, "init"):
+ m.init(d)
+
+def fetcher_compare_revisions(d):
+ """
+ Compare the revisions in the persistant cache with current values and
+ return true/false on whether they've changed.
+ """
+
+ pd = persist_data.persist(d)
+ data = pd['BB_URI_HEADREVS'].items()
+ data2 = bb.fetch2.saved_headrevs
+
+ changed = False
+ for key in data:
+ if key not in data2 or data2[key] != data[key]:
+ logger.debug(1, "%s changed", key)
+ changed = True
+ return True
+ else:
+ logger.debug(2, "%s did not change", key)
+ return False
+
+def mirror_from_string(data):
+ return [ i.split() for i in (data or "").replace('\\n','\n').split('\n') if i ]
+
+def verify_checksum(u, ud, d):
+ """
+ verify the MD5 and SHA256 checksum for downloaded src
+
+ return value:
+ - True: checksum matched
+ - False: checksum unmatched
+
+ if checksum is missing in recipes file, "BB_STRICT_CHECKSUM" decide the return value.
+ if BB_STRICT_CHECKSUM = "1" then return false as unmatched, otherwise return true as
+ matched
+ """
+
+ if not ud.type in ["http", "https", "ftp", "ftps"]:
+ return
+
+ md5data = bb.utils.md5_file(ud.localpath)
+ sha256data = bb.utils.sha256_file(ud.localpath)
+
+ if (ud.md5_expected == None or ud.sha256_expected == None):
+ logger.warn('Missing SRC_URI checksum for %s, consider adding to the recipe:\n'
+ 'SRC_URI[%s] = "%s"\nSRC_URI[%s] = "%s"',
+ ud.localpath, ud.md5_name, md5data,
+ ud.sha256_name, sha256data)
+ if bb.data.getVar("BB_STRICT_CHECKSUM", d, True) == "1":
+ raise FetchError("No checksum specified for %s." % u, u)
+ return
+
+ if ud.md5_expected != md5data:
+ raise MD5SumError(ud.localpath, ud.md5_expected, md5data, u)
+
+ if ud.sha256_expected != sha256data:
+ raise SHA256SumError(ud.localpath, ud.sha256_expected, sha256data, u)
+
+def subprocess_setup():
+ import signal
+ # Python installs a SIGPIPE handler by default. This is usually not what
+ # non-Python subprocesses expect.
+ # SIGPIPE errors are known issues with gzip/bash
+ signal.signal(signal.SIGPIPE, signal.SIG_DFL)
+
+def get_autorev(d):
+ # only not cache src rev in autorev case
+ if bb.data.getVar('BB_SRCREV_POLICY', d, True) != "cache":
+ bb.data.setVar('__BB_DONT_CACHE', '1', d)
+ return "AUTOINC"
+
+def get_srcrev(d):
+ """
+ Return the version string for the current package
+ (usually to be used as PV)
+ Most packages usually only have one SCM so we just pass on the call.
+ In the multi SCM case, we build a value based on SRCREV_FORMAT which must
+ have been set.
+ """
+
+ scms = []
+ fetcher = Fetch(bb.data.getVar('SRC_URI', d, True).split(), d)
+ urldata = fetcher.ud
+ for u in urldata:
+ if urldata[u].method.supports_srcrev():
+ scms.append(u)
+
+ if len(scms) == 0:
+ raise FetchError("SRCREV was used yet no valid SCM was found in SRC_URI")
+
+ if len(scms) == 1 and len(urldata[scms[0]].names) == 1:
+ return urldata[scms[0]].method.sortable_revision(scms[0], urldata[scms[0]], d, urldata[scms[0]].names[0])
+
+ #
+ # Mutiple SCMs are in SRC_URI so we resort to SRCREV_FORMAT
+ #
+ format = bb.data.getVar('SRCREV_FORMAT', d, True)
+ if not format:
+ raise FetchError("The SRCREV_FORMAT variable must be set when multiple SCMs are used.")
+
+ for scm in scms:
+ ud = urldata[scm]
+ for name in ud.names:
+ rev = ud.method.sortable_revision(scm, ud, d, name)
+ format = format.replace(name, rev)
+
+ return format
+
+def localpath(url, d):
+ fetcher = bb.fetch2.Fetch([url], d)
+ return fetcher.localpath(url)
+
+def runfetchcmd(cmd, d, quiet = False, cleanup = []):
+ """
+ Run cmd returning the command output
+ Raise an error if interrupted or cmd fails
+ Optionally echo command output to stdout
+ Optionally remove the files/directories listed in cleanup upon failure
+ """
+
+ # Need to export PATH as binary could be in metadata paths
+ # rather than host provided
+ # Also include some other variables.
+ # FIXME: Should really include all export varaiables?
+ exportvars = ['PATH', 'GIT_PROXY_COMMAND', 'GIT_PROXY_HOST',
+ 'GIT_PROXY_PORT', 'GIT_CONFIG', 'http_proxy', 'ftp_proxy',
+ 'https_proxy', 'no_proxy', 'ALL_PROXY', 'all_proxy',
+ 'SSH_AUTH_SOCK', 'SSH_AGENT_PID', 'HOME']
+
+ for var in exportvars:
+ val = data.getVar(var, d, True)
+ if val:
+ cmd = 'export ' + var + '=\"%s\"; %s' % (val, cmd)
+
+ logger.debug(1, "Running %s", cmd)
+
+ # redirect stderr to stdout
+ stdout_handle = os.popen(cmd + " 2>&1", "r")
+ output = ""
+
+ while True:
+ line = stdout_handle.readline()
+ if not line:
+ break
+ if not quiet:
+ print(line, end=' ')
+ output += line
+
+ status = stdout_handle.close() or 0
+ signal = status >> 8
+ exitstatus = status & 0xff
+
+ if (signal or status != 0):
+ for f in cleanup:
+ try:
+ bb.utils.remove(f, True)
+ except OSError:
+ pass
+
+ if signal:
+ raise FetchError("Fetch command %s failed with signal %s, output:\n%s" % (cmd, signal, output))
+ elif status != 0:
+ raise FetchError("Fetch command %s failed with exit code %s, output:\n%s" % (cmd, status, output))
+
+ return output
+
+def check_network_access(d, info = ""):
+ """
+ log remote network access, and error if BB_NO_NETWORK is set
+ """
+ if bb.data.getVar("BB_NO_NETWORK", d, True) == "1":
+ raise FetchError("BB_NO_NETWORK is set, but the fetcher code attempted network access with the command %s" % info)
+ else:
+ logger.debug(1, "Fetcher accessed the network with the command %s" % info)
+
+def try_mirrors(d, origud, mirrors, check = False):
+ """
+ Try to use a mirrored version of the sources.
+ This method will be automatically called before the fetchers go.
+
+ d Is a bb.data instance
+ uri is the original uri we're trying to download
+ mirrors is the list of mirrors we're going to try
+ """
+ ld = d.createCopy()
+ for (find, replace) in mirrors:
+ newuri = uri_replace(origud, find, replace, ld)
+ if newuri == origud.url:
+ continue
+ try:
+ ud = FetchData(newuri, ld)
+ ud.setup_localpath(ld)
+
+ if check:
+ found = ud.method.checkstatus(newuri, ud, ld)
+ if found:
+ return found
+ continue
+
+ if ud.method.need_update(newuri, ud, ld):
+ ud.method.download(newuri, ud, ld)
+ if hasattr(ud.method,"build_mirror_data"):
+ ud.method.build_mirror_data(newuri, ud, ld)
+
+ if not ud.localpath or not os.path.exists(ud.localpath):
+ continue
+
+ if ud.localpath == origud.localpath:
+ return ud.localpath
+
+ # We may be obtaining a mirror tarball which needs further processing by the real fetcher
+ # If that tarball is a local file:// we need to provide a symlink to it
+ dldir = ld.getVar("DL_DIR", True)
+ if not ud.localpath.startswith(dldir):
+ if os.path.basename(ud.localpath) != os.path.basename(origud.localpath):
+ os.symlink(ud.localpath, os.path.join(dldir, os.path.basename(ud.localpath)))
+ return None
+ # Otherwise the result is a local file:// and we symlink to it
+ if not os.path.exists(origud.localpath):
+ os.symlink(ud.localpath, origud.localpath)
+ return ud.localpath
+
+ except bb.fetch2.BBFetchException:
+ logger.debug(1, "Mirror fetch failure for url %s (original url: %s)" % (newuri, origud.url))
+ try:
+ if os.path.isfile(ud.localpath):
+ bb.utils.remove(ud.localpath)
+ except UnboundLocalError:
+ pass
+ continue
+ return None
+
+def srcrev_internal_helper(ud, d, name):
+ """
+ Return:
+ a) a source revision if specified
+ b) latest revision if SRCREV="AUTOINC"
+ c) None if not specified
+ """
+
+ if 'rev' in ud.parm:
+ return ud.parm['rev']
+
+ if 'tag' in ud.parm:
+ return ud.parm['tag']
+
+ rev = None
+ if name != '':
+ pn = data.getVar("PN", d, True)
+ rev = data.getVar("SRCREV_%s_pn-%s" % (name, pn), d, True)
+ if not rev:
+ rev = data.getVar("SRCREV_%s" % name, d, True)
+ if not rev:
+ rev = data.getVar("SRCREV", d, True)
+ if rev == "INVALID":
+ raise FetchError("Please set SRCREV to a valid value", ud.url)
+ if rev == "AUTOINC":
+ rev = ud.method.latest_revision(ud.url, ud, d, name)
+
+ return rev
+
+class FetchData(object):
+ """
+ A class which represents the fetcher state for a given URI.
+ """
+ def __init__(self, url, d):
+ # localpath is the location of a downloaded result. If not set, the file is local.
+ self.localfile = ""
+ self.localpath = None
+ self.lockfile = None
+ self.mirrortarball = None
+ (self.type, self.host, self.path, self.user, self.pswd, self.parm) = decodeurl(data.expand(url, d))
+ self.date = self.getSRCDate(d)
+ self.url = url
+ if not self.user and "user" in self.parm:
+ self.user = self.parm["user"]
+ if not self.pswd and "pswd" in self.parm:
+ self.pswd = self.parm["pswd"]
+ self.setup = False
+
+ if "name" in self.parm:
+ self.md5_name = "%s.md5sum" % self.parm["name"]
+ self.sha256_name = "%s.sha256sum" % self.parm["name"]
+ else:
+ self.md5_name = "md5sum"
+ self.sha256_name = "sha256sum"
+ self.md5_expected = bb.data.getVarFlag("SRC_URI", self.md5_name, d)
+ self.sha256_expected = bb.data.getVarFlag("SRC_URI", self.sha256_name, d)
+
+ self.names = self.parm.get("name",'default').split(',')
+
+ self.method = None
+ for m in methods:
+ if m.supports(url, self, d):
+ self.method = m
+ break
+
+ if not self.method:
+ raise NoMethodError(url)
+
+ if self.method.supports_srcrev():
+ self.revisions = {}
+ for name in self.names:
+ self.revisions[name] = srcrev_internal_helper(self, d, name)
+
+ # add compatibility code for non name specified case
+ if len(self.names) == 1:
+ self.revision = self.revisions[self.names[0]]
+
+ if hasattr(self.method, "urldata_init"):
+ self.method.urldata_init(self, d)
+
+ if "localpath" in self.parm:
+ # if user sets localpath for file, use it instead.
+ self.localpath = self.parm["localpath"]
+ self.basename = os.path.basename(self.localpath)
+ elif self.localfile:
+ self.localpath = self.method.localpath(self.url, self, d)
+
+ if self.localfile and self.localpath:
+ # Note: These files should always be in DL_DIR whereas localpath may not be.
+ basepath = bb.data.expand("${DL_DIR}/%s" % os.path.basename(self.localpath), d)
+ self.donestamp = basepath + '.done'
+ self.lockfile = basepath + '.lock'
+
+ def setup_localpath(self, d):
+ if not self.localpath:
+ self.localpath = self.method.localpath(self.url, self, d)
+
+ def getSRCDate(self, d):
+ """
+ Return the SRC Date for the component
+
+ d the bb.data module
+ """
+ if "srcdate" in self.parm:
+ return self.parm['srcdate']
+
+ pn = data.getVar("PN", d, True)
+
+ if pn:
+ return data.getVar("SRCDATE_%s" % pn, d, True) or data.getVar("SRCDATE", d, True) or data.getVar("DATE", d, True)
+
+ return data.getVar("SRCDATE", d, True) or data.getVar("DATE", d, True)
+
+class FetchMethod(object):
+ """Base class for 'fetch'ing data"""
+
+ def __init__(self, urls = []):
+ self.urls = []
+
+ def supports(self, url, urldata, d):
+ """
+ Check to see if this fetch class supports a given url.
+ """
+ return 0
+
+ def localpath(self, url, urldata, d):
+ """
+ Return the local filename of a given url assuming a successful fetch.
+ Can also setup variables in urldata for use in go (saving code duplication
+ and duplicate code execution)
+ """
+ return os.path.join(data.getVar("DL_DIR", d, True), urldata.localfile)
+
+ def _strip_leading_slashes(self, relpath):
+ """
+ Remove leading slash as os.path.join can't cope
+ """
+ while os.path.isabs(relpath):
+ relpath = relpath[1:]
+ return relpath
+
+ def setUrls(self, urls):
+ self.__urls = urls
+
+ def getUrls(self):
+ return self.__urls
+
+ urls = property(getUrls, setUrls, None, "Urls property")
+
+ def need_update(self, url, ud, d):
+ """
+ Force a fetch, even if localpath exists?
+ """
+ if os.path.exists(ud.localpath):
+ return False
+ return True
+
+ def supports_srcrev(self):
+ """
+ The fetcher supports auto source revisions (SRCREV)
+ """
+ return False
+
+ def download(self, url, urldata, d):
+ """
+ Fetch urls
+ Assumes localpath was called first
+ """
+ raise NoMethodError(url)
+
+ def unpack(self, urldata, rootdir, data):
+ import subprocess
+ iterate = False
+ file = urldata.localpath
+ dots = file.split(".")
+ if dots[-1] in ['gz', 'bz2', 'Z']:
+ efile = os.path.join(bb.data.getVar('WORKDIR', data, True),os.path.basename('.'.join(dots[0:-1])))
+ else:
+ efile = file
+ cmd = None
+
+ if file.endswith('.tar'):
+ cmd = 'tar x --no-same-owner -f %s' % file
+ elif file.endswith('.tgz') or file.endswith('.tar.gz') or file.endswith('.tar.Z'):
+ cmd = 'tar xz --no-same-owner -f %s' % file
+ elif file.endswith('.tbz') or file.endswith('.tbz2') or file.endswith('.tar.bz2'):
+ cmd = 'bzip2 -dc %s | tar x --no-same-owner -f -' % file
+ elif file.endswith('.gz') or file.endswith('.Z') or file.endswith('.z'):
+ cmd = 'gzip -dc %s > %s' % (file, efile)
+ elif file.endswith('.bz2'):
+ cmd = 'bzip2 -dc %s > %s' % (file, efile)
+ elif file.endswith('.tar.xz'):
+ cmd = 'xz -dc %s | tar x --no-same-owner -f -' % file
+ elif file.endswith('.xz'):
+ cmd = 'xz -dc %s > %s' % (file, efile)
+ elif file.endswith('.zip') or file.endswith('.jar'):
+ cmd = 'unzip -q -o'
+ if 'dos' in urldata.parm:
+ cmd = '%s -a' % cmd
+ cmd = "%s '%s'" % (cmd, file)
+ elif file.endswith('.src.rpm') or file.endswith('.srpm'):
+ if 'unpack' in urldata.parm:
+ unpack_file = ("%s" % urldata.parm['unpack'])
+ cmd = 'rpm2cpio.sh %s | cpio -i %s' % (file, unpack_file)
+ iterate = True
+ iterate_file = unpack_file
+ else:
+ cmd = 'rpm2cpio.sh %s | cpio -i' % (file)
+ else:
+ # If file == dest, then avoid any copies, as we already put the file into dest!
+ dest = os.path.join(rootdir, os.path.basename(file))
+ if (file != dest) and not (os.path.exists(dest) and os.path.samefile(file, dest)):
+ if os.path.isdir(file):
+ filesdir = os.path.realpath(bb.data.getVar("FILESDIR", data, True))
+ destdir = "."
+ if file[0:len(filesdir)] == filesdir:
+ destdir = file[len(filesdir):file.rfind('/')]
+ destdir = destdir.strip('/')
+ if len(destdir) < 1:
+ destdir = "."
+ elif not os.access("%s/%s" % (rootdir, destdir), os.F_OK):
+ os.makedirs("%s/%s" % (rootdir, destdir))
+ cmd = 'cp -pPR %s %s/%s/' % (file, rootdir, destdir)
+ else:
+ if not 'patch' in urldata.parm:
+ # The "destdir" handling was specifically done for FILESPATH
+ # items. So, only do so for file:// entries.
+ if urldata.type == "file" and urldata.path.find("/") != -1:
+ destdir = urldata.path.rsplit("/", 1)[0]
+ else:
+ destdir = "."
+ bb.mkdirhier("%s/%s" % (rootdir, destdir))
+ cmd = 'cp %s %s/%s/' % (file, rootdir, destdir)
+
+ if not cmd:
+ return
+
+ # Change to subdir before executing command
+ save_cwd = os.getcwd();
+ os.chdir(rootdir)
+ if 'subdir' in urldata.parm:
+ newdir = ("%s/%s" % (rootdir, urldata.parm['subdir']))
+ bb.mkdirhier(newdir)
+ os.chdir(newdir)
+
+ cmd = "PATH=\"%s\" %s" % (bb.data.getVar('PATH', data, True), cmd)
+ bb.note("Unpacking %s to %s/" % (file, os.getcwd()))
+ ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True)
+
+ os.chdir(save_cwd)
+
+ if ret != 0:
+ raise UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), urldata.url)
+
+ if iterate is True:
+ iterate_urldata = urldata
+ iterate_urldata.localpath = "%s/%s" % (rootdir, iterate_file)
+ self.unpack(urldata, rootdir, data)
+
+ return
+
+ def try_premirror(self, url, urldata, d):
+ """
+ Should premirrors be used?
+ """
+ return True
+
+ def checkstatus(self, url, urldata, d):
+ """
+ Check the status of a URL
+ Assumes localpath was called first
+ """
+ logger.info("URL %s could not be checked for status since no method exists.", url)
+ return True
+
+ def localcount_internal_helper(ud, d, name):
+ """
+ Return:
+ a) a locked localcount if specified
+ b) None otherwise
+ """
+
+ localcount = None
+ if name != '':
+ pn = data.getVar("PN", d, True)
+ localcount = data.getVar("LOCALCOUNT_" + name, d, True)
+ if not localcount:
+ localcount = data.getVar("LOCALCOUNT", d, True)
+ return localcount
+
+ localcount_internal_helper = staticmethod(localcount_internal_helper)
+
+ def latest_revision(self, url, ud, d, name):
+ """
+ Look in the cache for the latest revision, if not present ask the SCM.
+ """
+ if not hasattr(self, "_latest_revision"):
+ raise ParameterError("The fetcher for this URL does not support _latest_revision", url)
+
+ pd = persist_data.persist(d)
+ revs = pd['BB_URI_HEADREVS']
+ key = self.generate_revision_key(url, ud, d, name)
+ rev = revs[key]
+ if rev != None:
+ return str(rev)
+
+ revs[key] = rev = self._latest_revision(url, ud, d, name)
+ return rev
+
+ def sortable_revision(self, url, ud, d, name):
+ """
+
+ """
+ if hasattr(self, "_sortable_revision"):
+ return self._sortable_revision(url, ud, d)
+
+ pd = persist_data.persist(d)
+ localcounts = pd['BB_URI_LOCALCOUNT']
+ key = self.generate_revision_key(url, ud, d, name)
+
+ latest_rev = self._build_revision(url, ud, d, name)
+ last_rev = localcounts[key + '_rev']
+ uselocalcount = bb.data.getVar("BB_LOCALCOUNT_OVERRIDE", d, True) or False
+ count = None
+ if uselocalcount:
+ count = FetchMethod.localcount_internal_helper(ud, d, name)
+ if count is None:
+ count = localcounts[key + '_count'] or "0"
+
+ if last_rev == latest_rev:
+ return str(count + "+" + latest_rev)
+
+ buildindex_provided = hasattr(self, "_sortable_buildindex")
+ if buildindex_provided:
+ count = self._sortable_buildindex(url, ud, d, latest_rev)
+
+ if count is None:
+ count = "0"
+ elif uselocalcount or buildindex_provided:
+ count = str(count)
+ else:
+ count = str(int(count) + 1)
+
+ localcounts[key + '_rev'] = latest_rev
+ localcounts[key + '_count'] = count
+
+ return str(count + "+" + latest_rev)
+
+ def generate_revision_key(self, url, ud, d, name):
+ key = self._revision_key(url, ud, d, name)
+ return "%s-%s" % (key, bb.data.getVar("PN", d, True) or "")
+
+class Fetch(object):
+ def __init__(self, urls, d, cache = True):
+ if len(urls) == 0:
+ urls = d.getVar("SRC_URI", True).split()
+ self.urls = urls
+ self.d = d
+ self.ud = {}
+
+ fn = bb.data.getVar('FILE', d, True)
+ if cache and fn in urldata_cache:
+ self.ud = urldata_cache[fn]
+
+ for url in urls:
+ if url not in self.ud:
+ self.ud[url] = FetchData(url, d)
+
+ if cache:
+ urldata_cache[fn] = self.ud
+
+ def localpath(self, url):
+ if url not in self.urls:
+ self.ud[url] = FetchData(url, self.d)
+
+ self.ud[url].setup_localpath(self.d)
+ return bb.data.expand(self.ud[url].localpath, self.d)
+
+ def localpaths(self):
+ """
+ Return a list of the local filenames, assuming successful fetch
+ """
+ local = []
+
+ for u in self.urls:
+ ud = self.ud[u]
+ ud.setup_localpath(self.d)
+ local.append(ud.localpath)
+
+ return local
+
+ def download(self, urls = []):
+ """
+ Fetch all urls
+ """
+ if len(urls) == 0:
+ urls = self.urls
+
+ for u in urls:
+ ud = self.ud[u]
+ ud.setup_localpath(self.d)
+ m = ud.method
+ localpath = ""
+
+ if not ud.localfile:
+ continue
+
+ lf = bb.utils.lockfile(ud.lockfile)
+
+ try:
+ if not m.need_update(u, ud, self.d):
+ localpath = ud.localpath
+ elif m.try_premirror(u, ud, self.d):
+ mirrors = mirror_from_string(bb.data.getVar('PREMIRRORS', self.d, True))
+ localpath = try_mirrors(self.d, ud, mirrors, False)
+
+ if bb.data.getVar("BB_FETCH_PREMIRRORONLY", self.d, True) is not None:
+ bb.data.setVar("BB_NO_NETWORK", "1", self.d)
+
+ if not localpath and m.need_update(u, ud, self.d):
+ try:
+ m.download(u, ud, self.d)
+ if hasattr(m, "build_mirror_data"):
+ m.build_mirror_data(u, ud, self.d)
+ localpath = ud.localpath
+
+ except BBFetchException:
+ # Remove any incomplete fetch
+ if os.path.isfile(ud.localpath):
+ bb.utils.remove(ud.localpath)
+ mirrors = mirror_from_string(bb.data.getVar('MIRRORS', self.d, True))
+ localpath = try_mirrors (self.d, ud, mirrors)
+
+ if not localpath or not os.path.exists(localpath):
+ raise FetchError("Unable to fetch URL %s from any source." % u, u)
+
+ if os.path.exists(ud.donestamp):
+ # Touch the done stamp file to show active use of the download
+ try:
+ os.utime(ud.donestamp, None)
+ except:
+ # Errors aren't fatal here
+ pass
+ else:
+ # Only check the checksums if we've not seen this item before, then create the stamp
+ verify_checksum(u, ud, self.d)
+ open(ud.donestamp, 'w').close()
+
+ finally:
+ bb.utils.unlockfile(lf)
+
+ def checkstatus(self, urls = []):
+ """
+ Check all urls exist upstream
+ """
+
+ if len(urls) == 0:
+ urls = self.urls
+
+ for u in urls:
+ ud = self.ud[u]
+ ud.setup_localpath(self.d)
+ m = ud.method
+ logger.debug(1, "Testing URL %s", u)
+ # First try checking uri, u, from PREMIRRORS
+ mirrors = mirror_from_string(bb.data.getVar('PREMIRRORS', self.d, True))
+ ret = try_mirrors(self.d, ud, mirrors, True)
+ if not ret:
+ # Next try checking from the original uri, u
+ try:
+ ret = m.checkstatus(u, ud, self.d)
+ except:
+ # Finally, try checking uri, u, from MIRRORS
+ mirrors = mirror_from_string(bb.data.getVar('MIRRORS', self.d, True))
+ ret = try_mirrors (self.d, ud, mirrors, True)
+
+ if not ret:
+ raise FetchError("URL %s doesn't work" % u, u)
+
+ def unpack(self, root, urls = []):
+ """
+ Check all urls exist upstream
+ """
+
+ if len(urls) == 0:
+ urls = self.urls
+
+ for u in urls:
+ ud = self.ud[u]
+ ud.setup_localpath(self.d)
+
+ if bb.data.expand(self.localpath, self.d) is None:
+ continue
+
+ if ud.lockfile:
+ lf = bb.utils.lockfile(ud.lockfile)
+
+ ud.method.unpack(ud, root, self.d)
+
+ if ud.lockfile:
+ bb.utils.unlockfile(lf)
+
+from . import cvs
+from . import git
+from . import local
+from . import svn
+from . import wget
+from . import svk
+from . import ssh
+from . import perforce
+from . import bzr
+from . import hg
+from . import osc
+from . import repo
+
+methods.append(local.Local())
+methods.append(wget.Wget())
+methods.append(svn.Svn())
+methods.append(git.Git())
+methods.append(cvs.Cvs())
+methods.append(svk.Svk())
+methods.append(ssh.SSH())
+methods.append(perforce.Perforce())
+methods.append(bzr.Bzr())
+methods.append(hg.Hg())
+methods.append(osc.Osc())
+methods.append(repo.Repo())
diff --git a/bitbake/lib/bb/fetch2/bzr.py b/bitbake/lib/bb/fetch2/bzr.py
new file mode 100644
index 0000000000..bb175662b4
--- /dev/null
+++ b/bitbake/lib/bb/fetch2/bzr.py
@@ -0,0 +1,141 @@
+"""
+BitBake 'Fetch' implementation for bzr.
+
+"""
+
+# Copyright (C) 2007 Ross Burton
+# Copyright (C) 2007 Richard Purdie
+#
+# Classes for obtaining upstream sources for the
+# BitBake build tools.
+# Copyright (C) 2003, 2004 Chris Larson
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# 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.
+
+import os
+import sys
+import logging
+import bb
+from bb import data
+from bb.fetch2 import FetchMethod
+from bb.fetch2 import FetchError
+from bb.fetch2 import runfetchcmd
+from bb.fetch2 import logger
+
+class Bzr(FetchMethod):
+ def supports(self, url, ud, d):
+ return ud.type in ['bzr']
+
+ def urldata_init(self, ud, d):
+ """
+ init bzr specific variable within url data
+ """
+ # Create paths to bzr checkouts
+ relpath = self._strip_leading_slashes(ud.path)
+ ud.pkgdir = os.path.join(data.expand('${BZRDIR}', d), ud.host, relpath)
+
+ if not ud.revision:
+ ud.revision = self.latest_revision(ud.url, ud, d)
+
+ ud.localfile = data.expand('bzr_%s_%s_%s.tar.gz' % (ud.host, ud.path.replace('/', '.'), ud.revision), d)
+
+ def _buildbzrcommand(self, ud, d, command):
+ """
+ Build up an bzr commandline based on ud
+ command is "fetch", "update", "revno"
+ """
+
+ basecmd = data.expand('${FETCHCMD_bzr}', d)
+
+ proto = ud.parm.get('proto', 'http')
+
+ bzrroot = ud.host + ud.path
+
+ options = []
+
+ if command is "revno":
+ bzrcmd = "%s revno %s %s://%s" % (basecmd, " ".join(options), proto, bzrroot)
+ else:
+ if ud.revision:
+ options.append("-r %s" % ud.revision)
+
+ if command is "fetch":
+ bzrcmd = "%s co %s %s://%s" % (basecmd, " ".join(options), proto, bzrroot)
+ elif command is "update":
+ bzrcmd = "%s pull %s --overwrite" % (basecmd, " ".join(options))
+ else:
+ raise FetchError("Invalid bzr command %s" % command, ud.url)
+
+ return bzrcmd
+
+ def download(self, loc, ud, d):
+ """Fetch url"""
+
+ if os.access(os.path.join(ud.pkgdir, os.path.basename(ud.pkgdir), '.bzr'), os.R_OK):
+ bzrcmd = self._buildbzrcommand(ud, d, "update")
+ logger.debug(1, "BZR Update %s", loc)
+ bb.fetch2.check_network_access(d, bzrcmd)
+ os.chdir(os.path.join (ud.pkgdir, os.path.basename(ud.path)))
+ runfetchcmd(bzrcmd, d)
+ else:
+ bb.utils.remove(os.path.join(ud.pkgdir, os.path.basename(ud.pkgdir)), True)
+ bzrcmd = self._buildbzrcommand(ud, d, "fetch")
+ bb.fetch2.check_network_access(d, bzrcmd)
+ logger.debug(1, "BZR Checkout %s", loc)
+ bb.mkdirhier(ud.pkgdir)
+ os.chdir(ud.pkgdir)
+ logger.debug(1, "Running %s", bzrcmd)
+ runfetchcmd(bzrcmd, d)
+
+ os.chdir(ud.pkgdir)
+
+ scmdata = ud.parm.get("scmdata", "")
+ if scmdata == "keep":
+ tar_flags = ""
+ else:
+ tar_flags = "--exclude '.bzr' --exclude '.bzrtags'"
+
+ # tar them up to a defined filename
+ runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, os.path.basename(ud.pkgdir)), d, cleanup = [ud.localpath])
+
+ def supports_srcrev(self):
+ return True
+
+ def _revision_key(self, url, ud, d, name):
+ """
+ Return a unique key for the url
+ """
+ return "bzr:" + ud.pkgdir
+
+ def _latest_revision(self, url, ud, d, name):
+ """
+ Return the latest upstream revision number
+ """
+ logger.debug(2, "BZR fetcher hitting network for %s", url)
+
+ bb.fetch2.check_network_access(d, self._buildbzrcommand(ud, d, "revno"))
+
+ output = runfetchcmd(self._buildbzrcommand(ud, d, "revno"), d, True)
+
+ return output.strip()
+
+ def _sortable_revision(self, url, ud, d):
+ """
+ Return a sortable revision number which in our case is the revision number
+ """
+
+ return self._build_revision(url, ud, d)
+
+ def _build_revision(self, url, ud, d):
+ return ud.revision
diff --git a/bitbake/lib/bb/fetch2/cvs.py b/bitbake/lib/bb/fetch2/cvs.py
new file mode 100644
index 0000000000..3cd28b1fd5
--- /dev/null
+++ b/bitbake/lib/bb/fetch2/cvs.py
@@ -0,0 +1,169 @@
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+"""
+BitBake 'Fetch' implementations
+
+Classes for obtaining upstream sources for the
+BitBake build tools.
+
+"""
+
+# Copyright (C) 2003, 2004 Chris Larson
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# 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.
+#
+#Based on functions from the base bb module, Copyright 2003 Holger Schurig
+#
+
+import os
+import logging
+import bb
+from bb import data
+from bb.fetch2 import FetchMethod, FetchError, MissingParameterError, logger
+from bb.fetch2 import runfetchcmd
+
+class Cvs(FetchMethod):
+ """
+ Class to fetch a module or modules from cvs repositories
+ """
+ def supports(self, url, ud, d):
+ """
+ Check to see if a given url can be fetched with cvs.
+ """
+ return ud.type in ['cvs']
+
+ def urldata_init(self, ud, d):
+ if not "module" in ud.parm:
+ raise MissingParameterError("module", ud.url)
+ ud.module = ud.parm["module"]
+
+ ud.tag = ud.parm.get('tag', "")
+
+ # Override the default date in certain cases
+ if 'date' in ud.parm:
+ ud.date = ud.parm['date']
+ elif ud.tag:
+ ud.date = ""
+
+ norecurse = ''
+ if 'norecurse' in ud.parm:
+ norecurse = '_norecurse'
+
+ fullpath = ''
+ if 'fullpath' in ud.parm:
+ fullpath = '_fullpath'
+
+ ud.localfile = data.expand('%s_%s_%s_%s%s%s.tar.gz' % (ud.module.replace('/', '.'), ud.host, ud.tag, ud.date, norecurse, fullpath), d)
+
+ def need_update(self, url, ud, d):
+ if (ud.date == "now"):
+ return True
+ if not os.path.exists(ud.localpath):
+ return True
+ return False
+
+ def download(self, loc, ud, d):
+
+ method = ud.parm.get('method', 'pserver')
+ localdir = ud.parm.get('localdir', ud.module)
+ cvs_port = ud.parm.get('port', '')
+
+ cvs_rsh = None
+ if method == "ext":
+ if "rsh" in ud.parm:
+ cvs_rsh = ud.parm["rsh"]
+
+ if method == "dir":
+ cvsroot = ud.path
+ else:
+ cvsroot = ":" + method
+ cvsproxyhost = data.getVar('CVS_PROXY_HOST', d, True)
+ if cvsproxyhost:
+ cvsroot += ";proxy=" + cvsproxyhost
+ cvsproxyport = data.getVar('CVS_PROXY_PORT', d, True)
+ if cvsproxyport:
+ cvsroot += ";proxyport=" + cvsproxyport
+ cvsroot += ":" + ud.user
+ if ud.pswd:
+ cvsroot += ":" + ud.pswd
+ cvsroot += "@" + ud.host + ":" + cvs_port + ud.path
+
+ options = []
+ if 'norecurse' in ud.parm:
+ options.append("-l")
+ if ud.date:
+ # treat YYYYMMDDHHMM specially for CVS
+ if len(ud.date) == 12:
+ options.append("-D \"%s %s:%s UTC\"" % (ud.date[0:8], ud.date[8:10], ud.date[10:12]))
+ else:
+ options.append("-D \"%s UTC\"" % ud.date)
+ if ud.tag:
+ options.append("-r %s" % ud.tag)
+
+ localdata = data.createCopy(d)
+ data.setVar('OVERRIDES', "cvs:%s" % data.getVar('OVERRIDES', localdata), localdata)
+ data.update_data(localdata)
+
+ data.setVar('CVSROOT', cvsroot, localdata)
+ data.setVar('CVSCOOPTS', " ".join(options), localdata)
+ data.setVar('CVSMODULE', ud.module, localdata)
+ cvscmd = data.getVar('FETCHCOMMAND', localdata, True)
+ cvsupdatecmd = data.getVar('UPDATECOMMAND', localdata, True)
+
+ if cvs_rsh:
+ cvscmd = "CVS_RSH=\"%s\" %s" % (cvs_rsh, cvscmd)
+ cvsupdatecmd = "CVS_RSH=\"%s\" %s" % (cvs_rsh, cvsupdatecmd)
+
+ # create module directory
+ logger.debug(2, "Fetch: checking for module directory")
+ pkg = data.expand('${PN}', d)
+ pkgdir = os.path.join(data.expand('${CVSDIR}', localdata), pkg)
+ moddir = os.path.join(pkgdir, localdir)
+ if os.access(os.path.join(moddir, 'CVS'), os.R_OK):
+ logger.info("Update " + loc)
+ bb.fetch2.check_network_access(d, cvsupdatecmd)
+ # update sources there
+ os.chdir(moddir)
+ cmd = cvsupdatecmd
+ else:
+ logger.info("Fetch " + loc)
+ # check out sources there
+ bb.mkdirhier(pkgdir)
+ os.chdir(pkgdir)
+ logger.debug(1, "Running %s", cvscmd)
+ bb.fetch2.check_network_access(d, cvscmd)
+ cmd = cvscmd
+
+ runfetchcmd(cmd, d, cleanup = [moddir])
+
+ if not os.access(moddir, os.R_OK):
+ raise FetchError("Directory %s was not readable despite sucessful fetch?!" % moddir, ud.url)
+
+ scmdata = ud.parm.get("scmdata", "")
+ if scmdata == "keep":
+ tar_flags = ""
+ else:
+ tar_flags = "--exclude 'CVS'"
+
+ # tar them up to a defined filename
+ if 'fullpath' in ud.parm:
+ os.chdir(pkgdir)
+ cmd = "tar %s -czf %s %s" % (tar_flags, ud.localpath, localdir)
+ else:
+ os.chdir(moddir)
+ os.chdir('..')
+ cmd = "tar %s -czf %s %s" % (tar_flags, ud.localpath, os.path.basename(moddir))
+
+ runfetchcmd(cmd, d, cleanup = [ud.localpath])
+
diff --git a/bitbake/lib/bb/fetch2/git.py b/bitbake/lib/bb/fetch2/git.py
new file mode 100644
index 0000000000..4cb6693505
--- /dev/null
+++ b/bitbake/lib/bb/fetch2/git.py
@@ -0,0 +1,236 @@
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+"""
+BitBake 'Fetch' git implementation
+
+"""
+
+#Copyright (C) 2005 Richard Purdie
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# 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.
+
+import os
+import bb
+from bb import data
+from bb.fetch2 import FetchMethod
+from bb.fetch2 import runfetchcmd
+from bb.fetch2 import logger
+
+class Git(FetchMethod):
+ """Class to fetch a module or modules from git repositories"""
+ def init(self, d):
+ #
+ # Only enable _sortable revision if the key is set
+ #
+ if bb.data.getVar("BB_GIT_CLONE_FOR_SRCREV", d, True):
+ self._sortable_buildindex = self._sortable_buildindex_disabled
+ def supports(self, url, ud, d):
+ """
+ Check to see if a given url can be fetched with git.
+ """
+ return ud.type in ['git']
+
+ def urldata_init(self, ud, d):
+ """
+ init git specific variable within url data
+ so that the git method like latest_revision() can work
+ """
+ if 'protocol' in ud.parm:
+ ud.proto = ud.parm['protocol']
+ elif not ud.host:
+ ud.proto = 'file'
+ else:
+ ud.proto = "rsync"
+
+ ud.nocheckout = False
+ if 'nocheckout' in ud.parm:
+ ud.nocheckout = True
+
+ branches = ud.parm.get("branch", "master").split(',')
+ if len(branches) != len(ud.names):
+ raise bb.fetch2.ParameterError("The number of name and branch parameters is not balanced", ud.url)
+ ud.branches = {}
+ for name in ud.names:
+ branch = branches[ud.names.index(name)]
+ ud.branches[name] = branch
+
+ gitsrcname = '%s%s' % (ud.host, ud.path.replace('/', '.'))
+ ud.mirrortarball = 'git2_%s.tar.gz' % (gitsrcname)
+ ud.clonedir = os.path.join(data.expand('${GITDIR}', d), gitsrcname)
+
+ ud.basecmd = data.getVar("FETCHCMD_git", d, True) or "git"
+
+ for name in ud.names:
+ # Ensure anything that doesn't look like a sha256 checksum/revision is translated into one
+ if not ud.revisions[name] or len(ud.revisions[name]) != 40 or (False in [c in "abcdef0123456789" for c in ud.revisions[name]]):
+ ud.revisions[name] = self.latest_revision(ud.url, ud, d, name)
+
+ ud.localfile = ud.clonedir
+
+ def localpath(self, url, ud, d):
+ return ud.clonedir
+
+ def need_update(self, u, ud, d):
+ if not os.path.exists(ud.clonedir):
+ return True
+ os.chdir(ud.clonedir)
+ for name in ud.names:
+ if not self._contains_ref(ud.revisions[name], d):
+ return True
+ return False
+
+ def try_premirror(self, u, ud, d):
+ # If we don't do this, updating an existing checkout with only premirrors
+ # is not possible
+ if bb.data.getVar("BB_FETCH_PREMIRRORONLY", d, True) is not None:
+ return True
+ if os.path.exists(ud.clonedir):
+ return False
+ return True
+
+ def download(self, loc, ud, d):
+ """Fetch url"""
+
+ if ud.user:
+ username = ud.user + '@'
+ else:
+ username = ""
+
+ repofile = os.path.join(data.getVar("DL_DIR", d, True), ud.mirrortarball)
+
+ ud.repochanged = not os.path.exists(repofile)
+
+ # If the checkout doesn't exist and the mirror tarball does, extract it
+ if not os.path.exists(ud.clonedir) and os.path.exists(repofile):
+ bb.mkdirhier(ud.clonedir)
+ os.chdir(ud.clonedir)
+ runfetchcmd("tar -xzf %s" % (repofile), d)
+
+ # If the repo still doesn't exist, fallback to cloning it
+ if not os.path.exists(ud.clonedir):
+ bb.fetch2.check_network_access(d, "git clone --bare %s%s" % (ud.host, ud.path))
+ runfetchcmd("%s clone --bare %s://%s%s%s %s" % (ud.basecmd, ud.proto, username, ud.host, ud.path, ud.clonedir), d)
+
+ os.chdir(ud.clonedir)
+ # Update the checkout if needed
+ needupdate = False
+ for name in ud.names:
+ if not self._contains_ref(ud.revisions[name], d):
+ needupdate = True
+ if needupdate:
+ bb.fetch2.check_network_access(d, "git fetch %s%s" % (ud.host, ud.path))
+ try:
+ runfetchcmd("%s remote prune origin" % ud.basecmd, d)
+ runfetchcmd("%s remote rm origin" % ud.basecmd, d)
+ except bb.fetch2.FetchError:
+ logger.debug(1, "No Origin")
+
+ runfetchcmd("%s remote add origin %s://%s%s%s" % (ud.basecmd, ud.proto, username, ud.host, ud.path), d)
+ runfetchcmd("%s fetch --all -t" % ud.basecmd, d)
+ runfetchcmd("%s prune-packed" % ud.basecmd, d)
+ runfetchcmd("%s pack-redundant --all | xargs -r rm" % ud.basecmd, d)
+ ud.repochanged = True
+
+ def build_mirror_data(self, url, ud, d):
+ # Generate a mirror tarball if needed
+ repofile = os.path.join(data.getVar("DL_DIR", d, True), ud.mirrortarball)
+
+ os.chdir(ud.clonedir)
+ mirror_tarballs = data.getVar("BB_GENERATE_MIRROR_TARBALLS", d, True)
+ if mirror_tarballs != "0" and ud.repochanged:
+ logger.info("Creating tarball of git repository")
+ runfetchcmd("tar -czf %s %s" % (repofile, os.path.join(".") ), d)
+
+ def unpack(self, ud, destdir, d):
+ """ unpack the downloaded src to destdir"""
+
+ subdir = ud.parm.get("subpath", "")
+ if subdir != "":
+ readpathspec = ":%s" % (subdir)
+ else:
+ readpathspec = ""
+
+ destdir = os.path.join(destdir, "git/")
+ if os.path.exists(destdir):
+ bb.utils.prunedir(destdir)
+
+ runfetchcmd("git clone -s -n %s %s" % (ud.clonedir, destdir), d)
+ if not ud.nocheckout:
+ os.chdir(destdir)
+ runfetchcmd("%s read-tree %s%s" % (ud.basecmd, ud.revisions[ud.names[0]], readpathspec), d)
+ runfetchcmd("%s checkout-index -q -f -a" % ud.basecmd, d)
+ return True
+
+ def supports_srcrev(self):
+ return True
+
+ def _contains_ref(self, tag, d):
+ basecmd = data.getVar("FETCHCMD_git", d, True) or "git"
+ output = runfetchcmd("%s log --pretty=oneline -n 1 %s -- 2> /dev/null | wc -l" % (basecmd, tag), d, quiet=True)
+ return output.split()[0] != "0"
+
+ def _revision_key(self, url, ud, d, name):
+ """
+ Return a unique key for the url
+ """
+ return "git:" + ud.host + ud.path.replace('/', '.') + ud.branches[name]
+
+ def _latest_revision(self, url, ud, d, name):
+ """
+ Compute the HEAD revision for the url
+ """
+ if ud.user:
+ username = ud.user + '@'
+ else:
+ username = ""
+
+ bb.fetch2.check_network_access(d, "git ls-remote %s%s %s" % (ud.host, ud.path, ud.branches[name]))
+ basecmd = data.getVar("FETCHCMD_git", d, True) or "git"
+ cmd = "%s ls-remote %s://%s%s%s %s" % (basecmd, ud.proto, username, ud.host, ud.path, ud.branches[name])
+ output = runfetchcmd(cmd, d, True)
+ if not output:
+ raise bb.fetch2.FetchError("The command %s gave empty output unexpectedly" % cmd, url)
+ return output.split()[0]
+
+ def _build_revision(self, url, ud, d, name):
+ return ud.revisions[name]
+
+ def _sortable_buildindex_disabled(self, url, ud, d, rev):
+ """
+ Return a suitable buildindex for the revision specified. This is done by counting revisions
+ using "git rev-list" which may or may not work in different circumstances.
+ """
+
+ cwd = os.getcwd()
+
+ # Check if we have the rev already
+
+ if not os.path.exists(ud.clonedir):
+ print("no repo")
+ self.download(None, ud, d)
+ if not os.path.exists(ud.clonedir):
+ logger.error("GIT repository for %s doesn't exist in %s, cannot get sortable buildnumber, using old value", url, ud.clonedir)
+ return None
+
+
+ os.chdir(ud.clonedir)
+ if not self._contains_ref(rev, d):
+ self.download(None, ud, d)
+
+ output = runfetchcmd("%s rev-list %s -- 2> /dev/null | wc -l" % (ud.basecmd, rev), d, quiet=True)
+ os.chdir(cwd)
+
+ buildindex = "%s" % output.split()[0]
+ logger.debug(1, "GIT repository for %s in %s is returning %s revisions in rev-list before %s", url, ud.clonedir, buildindex, rev)
+ return buildindex
diff --git a/bitbake/lib/bb/fetch2/hg.py b/bitbake/lib/bb/fetch2/hg.py
new file mode 100644
index 0000000000..ac5825baa9
--- /dev/null
+++ b/bitbake/lib/bb/fetch2/hg.py
@@ -0,0 +1,174 @@
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+"""
+BitBake 'Fetch' implementation for mercurial DRCS (hg).
+
+"""
+
+# Copyright (C) 2003, 2004 Chris Larson
+# Copyright (C) 2004 Marcin Juszkiewicz
+# Copyright (C) 2007 Robert Schuster
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# 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.
+#
+# Based on functions from the base bb module, Copyright 2003 Holger Schurig
+
+import os
+import sys
+import logging
+import bb
+from bb import data
+from bb.fetch2 import FetchMethod
+from bb.fetch2 import FetchError
+from bb.fetch2 import MissingParameterError
+from bb.fetch2 import runfetchcmd
+from bb.fetch2 import logger
+
+class Hg(FetchMethod):
+ """Class to fetch from mercurial repositories"""
+ def supports(self, url, ud, d):
+ """
+ Check to see if a given url can be fetched with mercurial.
+ """
+ return ud.type in ['hg']
+
+ def urldata_init(self, ud, d):
+ """
+ init hg specific variable within url data
+ """
+ if not "module" in ud.parm:
+ raise MissingParameterError('module', ud.url)
+
+ ud.module = ud.parm["module"]
+
+ # Create paths to mercurial checkouts
+ relpath = self._strip_leading_slashes(ud.path)
+ ud.pkgdir = os.path.join(data.expand('${HGDIR}', d), ud.host, relpath)
+ ud.moddir = os.path.join(ud.pkgdir, ud.module)
+
+ if 'rev' in ud.parm:
+ ud.revision = ud.parm['rev']
+ elif not ud.revision:
+ ud.revision = self.latest_revision(ud.url, ud, d)
+
+ ud.localfile = data.expand('%s_%s_%s_%s.tar.gz' % (ud.module.replace('/', '.'), ud.host, ud.path.replace('/', '.'), ud.revision), d)
+
+ def need_update(self, url, ud, d):
+ revTag = ud.parm.get('rev', 'tip')
+ if revTag == "tip":
+ return True
+ if not os.path.exists(ud.localpath):
+ return True
+ return False
+
+ def _buildhgcommand(self, ud, d, command):
+ """
+ Build up an hg commandline based on ud
+ command is "fetch", "update", "info"
+ """
+
+ basecmd = data.expand('${FETCHCMD_hg}', d)
+
+ proto = ud.parm.get('proto', 'http')
+
+ host = ud.host
+ if proto == "file":
+ host = "/"
+ ud.host = "localhost"
+
+ if not ud.user:
+ hgroot = host + ud.path
+ else:
+ hgroot = ud.user + "@" + host + ud.path
+
+ if command is "info":
+ return "%s identify -i %s://%s/%s" % (basecmd, proto, hgroot, ud.module)
+
+ options = [];
+ if ud.revision:
+ options.append("-r %s" % ud.revision)
+
+ if command is "fetch":
+ cmd = "%s clone %s %s://%s/%s %s" % (basecmd, " ".join(options), proto, hgroot, ud.module, ud.module)
+ elif command is "pull":
+ # do not pass options list; limiting pull to rev causes the local
+ # repo not to contain it and immediately following "update" command
+ # will crash
+ cmd = "%s pull" % (basecmd)
+ elif command is "update":
+ cmd = "%s update -C %s" % (basecmd, " ".join(options))
+ else:
+ raise FetchError("Invalid hg command %s" % command, ud.url)
+
+ return cmd
+
+ def download(self, loc, ud, d):
+ """Fetch url"""
+
+ logger.debug(2, "Fetch: checking for module directory '" + ud.moddir + "'")
+
+ if os.access(os.path.join(ud.moddir, '.hg'), os.R_OK):
+ updatecmd = self._buildhgcommand(ud, d, "pull")
+ logger.info("Update " + loc)
+ # update sources there
+ os.chdir(ud.moddir)
+ logger.debug(1, "Running %s", updatecmd)
+ bb.fetch2.check_network_access(d, updatecmd)
+ runfetchcmd(updatecmd, d)
+
+ else:
+ fetchcmd = self._buildhgcommand(ud, d, "fetch")
+ logger.info("Fetch " + loc)
+ # check out sources there
+ bb.mkdirhier(ud.pkgdir)
+ os.chdir(ud.pkgdir)
+ logger.debug(1, "Running %s", fetchcmd)
+ bb.fetch2.check_network_access(d, fetchcmd)
+ runfetchcmd(fetchcmd, d)
+
+ # Even when we clone (fetch), we still need to update as hg's clone
+ # won't checkout the specified revision if its on a branch
+ updatecmd = self._buildhgcommand(ud, d, "update")
+ os.chdir(ud.moddir)
+ logger.debug(1, "Running %s", updatecmd)
+ runfetchcmd(updatecmd, d)
+
+ scmdata = ud.parm.get("scmdata", "")
+ if scmdata == "keep":
+ tar_flags = ""
+ else:
+ tar_flags = "--exclude '.hg' --exclude '.hgrags'"
+
+ os.chdir(ud.pkgdir)
+ runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, ud.module), d, cleanup = [ud.localpath])
+
+ def supports_srcrev(self):
+ return True
+
+ def _latest_revision(self, url, ud, d, name):
+ """
+ Compute tip revision for the url
+ """
+ bb.fetch2.check_network_access(d, self._buildhgcommand(ud, d, "info"))
+ output = runfetchcmd(self._buildhgcommand(ud, d, "info"), d)
+ return output.strip()
+
+ def _build_revision(self, url, ud, d):
+ return ud.revision
+
+ def _revision_key(self, url, ud, d, name):
+ """
+ Return a unique key for the url
+ """
+ return "hg:" + ud.moddir
diff --git a/bitbake/lib/bb/fetch2/local.py b/bitbake/lib/bb/fetch2/local.py
new file mode 100644
index 0000000000..d77d39375e
--- /dev/null
+++ b/bitbake/lib/bb/fetch2/local.py
@@ -0,0 +1,76 @@
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+"""
+BitBake 'Fetch' implementations
+
+Classes for obtaining upstream sources for the
+BitBake build tools.
+
+"""
+
+# Copyright (C) 2003, 2004 Chris Larson
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# 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.
+#
+# Based on functions from the base bb module, Copyright 2003 Holger Schurig
+
+import os
+import bb
+import bb.utils
+from bb import data
+from bb.fetch2 import FetchMethod
+
+class Local(FetchMethod):
+ def supports(self, url, urldata, d):
+ """
+ Check to see if a given url represents a local fetch.
+ """
+ return urldata.type in ['file']
+
+ def urldata_init(self, ud, d):
+ # We don't set localfile as for this fetcher the file is already local!
+ return
+
+ def localpath(self, url, urldata, d):
+ """
+ Return the local filename of a given url assuming a successful fetch.
+ """
+ path = url.split("://")[1]
+ path = path.split(";")[0]
+ newpath = path
+ if path[0] != "/":
+ filespath = data.getVar('FILESPATH', d, True)
+ if filespath:
+ newpath = bb.utils.which(filespath, path)
+ if not newpath:
+ filesdir = data.getVar('FILESDIR', d, True)
+ if filesdir:
+ newpath = os.path.join(filesdir, path)
+ return newpath
+
+ def download(self, url, urldata, d):
+ """Fetch urls (no-op for Local method)"""
+ # no need to fetch local files, we'll deal with them in place.
+ return 1
+
+ def checkstatus(self, url, urldata, d):
+ """
+ Check the status of the url
+ """
+ if urldata.localpath.find("*") != -1:
+ logger.info("URL %s looks like a glob and was therefore not checked.", url)
+ return True
+ if os.path.exists(urldata.localpath):
+ return True
+ return False
diff --git a/bitbake/lib/bb/fetch2/osc.py b/bitbake/lib/bb/fetch2/osc.py
new file mode 100644
index 0000000000..f252b5e4a3
--- /dev/null
+++ b/bitbake/lib/bb/fetch2/osc.py
@@ -0,0 +1,135 @@
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+"""
+Bitbake "Fetch" implementation for osc (Opensuse build service client).
+Based on the svn "Fetch" implementation.
+
+"""
+
+import os
+import sys
+import logging
+import bb
+from bb import data
+from bb.fetch2 import FetchMethod
+from bb.fetch2 import FetchError
+from bb.fetch2 import MissingParameterError
+from bb.fetch2 import runfetchcmd
+
+class Osc(FetchMethod):
+ """Class to fetch a module or modules from Opensuse build server
+ repositories."""
+
+ def supports(self, url, ud, d):
+ """
+ Check to see if a given url can be fetched with osc.
+ """
+ return ud.type in ['osc']
+
+ def urldata_init(self, ud, d):
+ if not "module" in ud.parm:
+ raise MissingParameterError('module', ud.url)
+
+ ud.module = ud.parm["module"]
+
+ # Create paths to osc checkouts
+ relpath = self._strip_leading_slashes(ud.path)
+ ud.pkgdir = os.path.join(data.expand('${OSCDIR}', d), ud.host)
+ ud.moddir = os.path.join(ud.pkgdir, relpath, ud.module)
+
+ if 'rev' in ud.parm:
+ ud.revision = ud.parm['rev']
+ else:
+ pv = data.getVar("PV", d, 0)
+ rev = bb.fetch2.srcrev_internal_helper(ud, d)
+ if rev and rev != True:
+ ud.revision = rev
+ else:
+ ud.revision = ""
+
+ ud.localfile = data.expand('%s_%s_%s.tar.gz' % (ud.module.replace('/', '.'), ud.path.replace('/', '.'), ud.revision), d)
+
+ def _buildosccommand(self, ud, d, command):
+ """
+ Build up an ocs commandline based on ud
+ command is "fetch", "update", "info"
+ """
+
+ basecmd = data.expand('${FETCHCMD_osc}', d)
+
+ proto = ud.parm.get('proto', 'ocs')
+
+ options = []
+
+ config = "-c %s" % self.generate_config(ud, d)
+
+ if ud.revision:
+ options.append("-r %s" % ud.revision)
+
+ coroot = self._strip_leading_slashes(ud.path)
+
+ if command is "fetch":
+ osccmd = "%s %s co %s/%s %s" % (basecmd, config, coroot, ud.module, " ".join(options))
+ elif command is "update":
+ osccmd = "%s %s up %s" % (basecmd, config, " ".join(options))
+ else:
+ raise FetchError("Invalid osc command %s" % command, ud.url)
+
+ return osccmd
+
+ def download(self, loc, ud, d):
+ """
+ Fetch url
+ """
+
+ logger.debug(2, "Fetch: checking for module directory '" + ud.moddir + "'")
+
+ if os.access(os.path.join(data.expand('${OSCDIR}', d), ud.path, ud.module), os.R_OK):
+ oscupdatecmd = self._buildosccommand(ud, d, "update")
+ logger.info("Update "+ loc)
+ # update sources there
+ os.chdir(ud.moddir)
+ logger.debug(1, "Running %s", oscupdatecmd)
+ bb.fetch2.check_network_access(d, oscupdatecmd)
+ runfetchcmd(oscupdatecmd, d)
+ else:
+ oscfetchcmd = self._buildosccommand(ud, d, "fetch")
+ logger.info("Fetch " + loc)
+ # check out sources there
+ bb.mkdirhier(ud.pkgdir)
+ os.chdir(ud.pkgdir)
+ logger.debug(1, "Running %s", oscfetchcmd)
+ bb.fetch2.check_network_access(d, oscfetchcmd)
+ runfetchcmd(oscfetchcmd, d)
+
+ os.chdir(os.path.join(ud.pkgdir + ud.path))
+ # tar them up to a defined filename
+ runfetchcmd("tar -czf %s %s" % (ud.localpath, ud.module), d, cleanup = [ud.localpath])
+
+ def supports_srcrev(self):
+ return False
+
+ def generate_config(self, ud, d):
+ """
+ Generate a .oscrc to be used for this run.
+ """
+
+ config_path = os.path.join(data.expand('${OSCDIR}', d), "oscrc")
+ if (os.path.exists(config_path)):
+ os.remove(config_path)
+
+ f = open(config_path, 'w')
+ f.write("[general]\n")
+ f.write("apisrv = %s\n" % ud.host)
+ f.write("scheme = http\n")
+ f.write("su-wrapper = su -c\n")
+ f.write("build-root = %s\n" % data.expand('${WORKDIR}', d))
+ f.write("urllist = http://moblin-obs.jf.intel.com:8888/build/%(project)s/%(repository)s/%(buildarch)s/:full/%(name)s.rpm\n")
+ f.write("extra-pkgs = gzip\n")
+ f.write("\n")
+ f.write("[%s]\n" % ud.host)
+ f.write("user = %s\n" % ud.parm["user"])
+ f.write("pass = %s\n" % ud.parm["pswd"])
+ f.close()
+
+ return config_path
diff --git a/bitbake/lib/bb/fetch2/perforce.py b/bitbake/lib/bb/fetch2/perforce.py
new file mode 100644
index 0000000000..6347834c76
--- /dev/null
+++ b/bitbake/lib/bb/fetch2/perforce.py
@@ -0,0 +1,196 @@
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+"""
+BitBake 'Fetch' implementations
+
+Classes for obtaining upstream sources for the
+BitBake build tools.
+
+"""
+
+# Copyright (C) 2003, 2004 Chris Larson
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# 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.
+#
+# Based on functions from the base bb module, Copyright 2003 Holger Schurig
+
+from future_builtins import zip
+import os
+import logging
+import bb
+from bb import data
+from bb.fetch2 import FetchMethod
+from bb.fetch2 import FetchError
+from bb.fetch2 import logger
+from bb.fetch2 import runfetchcmd
+
+class Perforce(FetchMethod):
+ def supports(self, url, ud, d):
+ return ud.type in ['p4']
+
+ def doparse(url, d):
+ parm = {}
+ path = url.split("://")[1]
+ delim = path.find("@");
+ if delim != -1:
+ (user, pswd, host, port) = path.split('@')[0].split(":")
+ path = path.split('@')[1]
+ else:
+ (host, port) = data.getVar('P4PORT', d).split(':')
+ user = ""
+ pswd = ""
+
+ if path.find(";") != -1:
+ keys=[]
+ values=[]
+ plist = path.split(';')
+ for item in plist:
+ if item.count('='):
+ (key, value) = item.split('=')
+ keys.append(key)
+ values.append(value)
+
+ parm = dict(zip(keys, values))
+ path = "//" + path.split(';')[0]
+ host += ":%s" % (port)
+ parm["cset"] = Perforce.getcset(d, path, host, user, pswd, parm)
+
+ return host, path, user, pswd, parm
+ doparse = staticmethod(doparse)
+
+ def getcset(d, depot, host, user, pswd, parm):
+ p4opt = ""
+ if "cset" in parm:
+ return parm["cset"];
+ if user:
+ p4opt += " -u %s" % (user)
+ if pswd:
+ p4opt += " -P %s" % (pswd)
+ if host:
+ p4opt += " -p %s" % (host)
+
+ p4date = data.getVar("P4DATE", d, True)
+ if "revision" in parm:
+ depot += "#%s" % (parm["revision"])
+ elif "label" in parm:
+ depot += "@%s" % (parm["label"])
+ elif p4date:
+ depot += "@%s" % (p4date)
+
+ p4cmd = data.getVar('FETCHCOMMAND_p4', d, True)
+ logger.debug(1, "Running %s%s changes -m 1 %s", p4cmd, p4opt, depot)
+ p4file = os.popen("%s%s changes -m 1 %s" % (p4cmd, p4opt, depot))
+ cset = p4file.readline().strip()
+ logger.debug(1, "READ %s", cset)
+ if not cset:
+ return -1
+
+ return cset.split(' ')[1]
+ getcset = staticmethod(getcset)
+
+ def urldata_init(self, ud, d):
+ (host, path, user, pswd, parm) = Perforce.doparse(ud.url, d)
+
+ # If a label is specified, we use that as our filename
+
+ if "label" in parm:
+ ud.localfile = "%s.tar.gz" % (parm["label"])
+ return
+
+ base = path
+ which = path.find('/...')
+ if which != -1:
+ base = path[:which]
+
+ base = self._strip_leading_slashes(base)
+
+ cset = Perforce.getcset(d, path, host, user, pswd, parm)
+
+ ud.localfile = data.expand('%s+%s+%s.tar.gz' % (host, base.replace('/', '.'), cset), d)
+
+ def download(self, loc, ud, d):
+ """
+ Fetch urls
+ """
+
+ (host, depot, user, pswd, parm) = Perforce.doparse(loc, d)
+
+ if depot.find('/...') != -1:
+ path = depot[:depot.find('/...')]
+ else:
+ path = depot
+
+ module = parm.get('module', os.path.basename(path))
+
+ localdata = data.createCopy(d)
+ data.setVar('OVERRIDES', "p4:%s" % data.getVar('OVERRIDES', localdata), localdata)
+ data.update_data(localdata)
+
+ # Get the p4 command
+ p4opt = ""
+ if user:
+ p4opt += " -u %s" % (user)
+
+ if pswd:
+ p4opt += " -P %s" % (pswd)
+
+ if host:
+ p4opt += " -p %s" % (host)
+
+ p4cmd = data.getVar('FETCHCOMMAND', localdata, True)
+
+ # create temp directory
+ logger.debug(2, "Fetch: creating temporary directory")
+ bb.mkdirhier(data.expand('${WORKDIR}', localdata))
+ data.setVar('TMPBASE', data.expand('${WORKDIR}/oep4.XXXXXX', localdata), localdata)
+ tmppipe = os.popen(data.getVar('MKTEMPDIRCMD', localdata, True) or "false")
+ tmpfile = tmppipe.readline().strip()
+ if not tmpfile:
+ raise FetchError("Fetch: unable to create temporary directory.. make sure 'mktemp' is in the PATH.", loc)
+
+ if "label" in parm:
+ depot = "%s@%s" % (depot, parm["label"])
+ else:
+ cset = Perforce.getcset(d, depot, host, user, pswd, parm)
+ depot = "%s@%s" % (depot, cset)
+
+ os.chdir(tmpfile)
+ logger.info("Fetch " + loc)
+ logger.info("%s%s files %s", p4cmd, p4opt, depot)
+ p4file = os.popen("%s%s files %s" % (p4cmd, p4opt, depot))
+
+ if not p4file:
+ raise FetchError("Fetch: unable to get the P4 files from %s" % depot, loc)
+
+ count = 0
+
+ for file in p4file:
+ list = file.split()
+
+ if list[2] == "delete":
+ continue
+
+ dest = list[0][len(path)+1:]
+ where = dest.find("#")
+
+ os.system("%s%s print -o %s/%s %s" % (p4cmd, p4opt, module, dest[:where], list[0]))
+ count = count + 1
+
+ if count == 0:
+ logger.error()
+ raise FetchError("Fetch: No files gathered from the P4 fetch", loc)
+
+ runfetchcmd("tar -czf %s %s" % (ud.localpath, module), d, cleanup = [ud.localpath])
+ # cleanup
+ bb.utils.prunedir(tmpfile)
diff --git a/bitbake/lib/bb/fetch2/repo.py b/bitbake/lib/bb/fetch2/repo.py
new file mode 100644
index 0000000000..3b16fc0144
--- /dev/null
+++ b/bitbake/lib/bb/fetch2/repo.py
@@ -0,0 +1,98 @@
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+"""
+BitBake "Fetch" repo (git) implementation
+
+"""
+
+# Copyright (C) 2009 Tom Rini <trini@embeddedalley.com>
+#
+# Based on git.py which is:
+#Copyright (C) 2005 Richard Purdie
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# 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.
+
+import os
+import bb
+from bb import data
+from bb.fetch2 import FetchMethod
+from bb.fetch2 import runfetchcmd
+
+class Repo(FetchMethod):
+ """Class to fetch a module or modules from repo (git) repositories"""
+ def supports(self, url, ud, d):
+ """
+ Check to see if a given url can be fetched with repo.
+ """
+ return ud.type in ["repo"]
+
+ def urldata_init(self, ud, d):
+ """
+ We don"t care about the git rev of the manifests repository, but
+ we do care about the manifest to use. The default is "default".
+ We also care about the branch or tag to be used. The default is
+ "master".
+ """
+
+ ud.proto = ud.parm.get('protocol', 'git')
+ ud.branch = ud.parm.get('branch', 'master')
+ ud.manifest = ud.parm.get('manifest', 'default.xml')
+ if not ud.manifest.endswith('.xml'):
+ ud.manifest += '.xml'
+
+ ud.localfile = data.expand("repo_%s%s_%s_%s.tar.gz" % (ud.host, ud.path.replace("/", "."), ud.manifest, ud.branch), d)
+
+ def download(self, loc, ud, d):
+ """Fetch url"""
+
+ if os.access(os.path.join(data.getVar("DL_DIR", d, True), ud.localfile), os.R_OK):
+ logger.debug(1, "%s already exists (or was stashed). Skipping repo init / sync.", ud.localpath)
+ return
+
+ gitsrcname = "%s%s" % (ud.host, ud.path.replace("/", "."))
+ repodir = data.getVar("REPODIR", d, True) or os.path.join(data.getVar("DL_DIR", d, True), "repo")
+ codir = os.path.join(repodir, gitsrcname, ud.manifest)
+
+ if ud.user:
+ username = ud.user + "@"
+ else:
+ username = ""
+
+ bb.mkdirhier(os.path.join(codir, "repo"))
+ os.chdir(os.path.join(codir, "repo"))
+ if not os.path.exists(os.path.join(codir, "repo", ".repo")):
+ bb.fetch2.check_network_access(d, "repo init -m %s -b %s -u %s://%s%s%s" % (ud.manifest, ud.branch, ud.proto, username, ud.host, ud.path))
+ runfetchcmd("repo init -m %s -b %s -u %s://%s%s%s" % (ud.manifest, ud.branch, ud.proto, username, ud.host, ud.path), d)
+
+ bb.fetch2.check_network_access(d, "repo sync %s" % ud.url)
+ runfetchcmd("repo sync", d)
+ os.chdir(codir)
+
+ scmdata = ud.parm.get("scmdata", "")
+ if scmdata == "keep":
+ tar_flags = ""
+ else:
+ tar_flags = "--exclude '.repo' --exclude '.git'"
+
+ # Create a cache
+ runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, os.path.join(".", "*") ), d)
+
+ def supports_srcrev(self):
+ return False
+
+ def _build_revision(self, url, ud, d):
+ return ud.manifest
+
+ def _want_sortable_revision(self, url, ud, d):
+ return False
diff --git a/bitbake/lib/bb/fetch2/ssh.py b/bitbake/lib/bb/fetch2/ssh.py
new file mode 100644
index 0000000000..2ee9ab093a
--- /dev/null
+++ b/bitbake/lib/bb/fetch2/ssh.py
@@ -0,0 +1,120 @@
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+'''
+BitBake 'Fetch' implementations
+
+This implementation is for Secure Shell (SSH), and attempts to comply with the
+IETF secsh internet draft:
+ http://tools.ietf.org/wg/secsh/draft-ietf-secsh-scp-sftp-ssh-uri/
+
+ Currently does not support the sftp parameters, as this uses scp
+ Also does not support the 'fingerprint' connection parameter.
+
+'''
+
+# Copyright (C) 2006 OpenedHand Ltd.
+#
+#
+# Based in part on svk.py:
+# Copyright (C) 2006 Holger Hans Peter Freyther
+# Based on svn.py:
+# Copyright (C) 2003, 2004 Chris Larson
+# Based on functions from the base bb module:
+# Copyright 2003 Holger Schurig
+#
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# 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.
+
+import re, os
+from bb import data
+from bb.fetch2 import FetchMethod
+from bb.fetch2 import FetchError
+from bb.fetch2 import logger
+from bb.fetch2 import runfetchcmd
+
+
+__pattern__ = re.compile(r'''
+ \s* # Skip leading whitespace
+ ssh:// # scheme
+ ( # Optional username/password block
+ (?P<user>\S+) # username
+ (:(?P<pass>\S+))? # colon followed by the password (optional)
+ )?
+ (?P<cparam>(;[^;]+)*)? # connection parameters block (optional)
+ @
+ (?P<host>\S+?) # non-greedy match of the host
+ (:(?P<port>[0-9]+))? # colon followed by the port (optional)
+ /
+ (?P<path>[^;]+) # path on the remote system, may be absolute or relative,
+ # and may include the use of '~' to reference the remote home
+ # directory
+ (?P<sparam>(;[^;]+)*)? # parameters block (optional)
+ $
+''', re.VERBOSE)
+
+class SSH(FetchMethod):
+ '''Class to fetch a module or modules via Secure Shell'''
+
+ def supports(self, url, urldata, d):
+ return __pattern__.match(url) != None
+
+ def localpath(self, url, urldata, d):
+ m = __pattern__.match(urldata.url)
+ path = m.group('path')
+ host = m.group('host')
+ lpath = os.path.join(data.getVar('DL_DIR', d, True), host, os.path.basename(path))
+ return lpath
+
+ def download(self, url, urldata, d):
+ dldir = data.getVar('DL_DIR', d, True)
+
+ m = __pattern__.match(url)
+ path = m.group('path')
+ host = m.group('host')
+ port = m.group('port')
+ user = m.group('user')
+ password = m.group('pass')
+
+ ldir = os.path.join(dldir, host)
+ lpath = os.path.join(ldir, os.path.basename(path))
+
+ if not os.path.exists(ldir):
+ os.makedirs(ldir)
+
+ if port:
+ port = '-P %s' % port
+ else:
+ port = ''
+
+ if user:
+ fr = user
+ if password:
+ fr += ':%s' % password
+ fr += '@%s' % host
+ else:
+ fr = host
+ fr += ':%s' % path
+
+
+ import commands
+ cmd = 'scp -B -r %s %s %s/' % (
+ port,
+ commands.mkarg(fr),
+ commands.mkarg(ldir)
+ )
+
+ bb.fetch2.check_network_access(d, cmd)
+
+ runfetchcmd(cmd, d)
+
diff --git a/bitbake/lib/bb/fetch2/svk.py b/bitbake/lib/bb/fetch2/svk.py
new file mode 100644
index 0000000000..6211cac8d3
--- /dev/null
+++ b/bitbake/lib/bb/fetch2/svk.py
@@ -0,0 +1,97 @@
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+"""
+BitBake 'Fetch' implementations
+
+This implementation is for svk. It is based on the svn implementation
+
+"""
+
+# Copyright (C) 2006 Holger Hans Peter Freyther
+# Copyright (C) 2003, 2004 Chris Larson
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# 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.
+#
+# Based on functions from the base bb module, Copyright 2003 Holger Schurig
+
+import os
+import logging
+import bb
+from bb import data
+from bb.fetch2 import FetchMethod
+from bb.fetch2 import FetchError
+from bb.fetch2 import MissingParameterError
+from bb.fetch2 import logger
+from bb.fetch2 import runfetchcmd
+
+class Svk(FetchMethod):
+ """Class to fetch a module or modules from svk repositories"""
+ def supports(self, url, ud, d):
+ """
+ Check to see if a given url can be fetched with svk.
+ """
+ return ud.type in ['svk']
+
+ def urldata_init(self, ud, d):
+
+ if not "module" in ud.parm:
+ raise MissingParameterError('module', ud.url)
+ else:
+ ud.module = ud.parm["module"]
+
+ ud.revision = ud.parm.get('rev', "")
+
+ ud.localfile = data.expand('%s_%s_%s_%s_%s.tar.gz' % (ud.module.replace('/', '.'), ud.host, ud.path.replace('/', '.'), ud.revision, ud.date), d)
+
+ def need_update(self, url, ud, d):
+ if ud.date == "now":
+ return True
+ if not os.path.exists(ud.localpath):
+ return True
+ return False
+
+ def download(self, loc, ud, d):
+ """Fetch urls"""
+
+ svkroot = ud.host + ud.path
+
+ svkcmd = "svk co -r {%s} %s/%s" % (ud.date, svkroot, ud.module)
+
+ if ud.revision:
+ svkcmd = "svk co -r %s %s/%s" % (ud.revision, svkroot, ud.module)
+
+ # create temp directory
+ localdata = data.createCopy(d)
+ data.update_data(localdata)
+ logger.debug(2, "Fetch: creating temporary directory")
+ bb.mkdirhier(data.expand('${WORKDIR}', localdata))
+ data.setVar('TMPBASE', data.expand('${WORKDIR}/oesvk.XXXXXX', localdata), localdata)
+ tmppipe = os.popen(data.getVar('MKTEMPDIRCMD', localdata, True) or "false")
+ tmpfile = tmppipe.readline().strip()
+ if not tmpfile:
+ logger.error()
+ raise FetchError("Fetch: unable to create temporary directory.. make sure 'mktemp' is in the PATH.", loc)
+
+ # check out sources there
+ os.chdir(tmpfile)
+ logger.info("Fetch " + loc)
+ logger.debug(1, "Running %s", svkcmd)
+ runfetchcmd(svkcmd, d, cleanup = [tmpfile])
+
+ os.chdir(os.path.join(tmpfile, os.path.dirname(ud.module)))
+ # tar them up to a defined filename
+ runfetchcmd("tar -czf %s %s" % (ud.localpath, os.path.basename(ud.module)), d, cleanup = [ud.localpath])
+
+ # cleanup
+ bb.utils.prunedir(tmpfile)
diff --git a/bitbake/lib/bb/fetch2/svn.py b/bitbake/lib/bb/fetch2/svn.py
new file mode 100644
index 0000000000..4ab643bcf7
--- /dev/null
+++ b/bitbake/lib/bb/fetch2/svn.py
@@ -0,0 +1,173 @@
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+"""
+BitBake 'Fetch' implementation for svn.
+
+"""
+
+# Copyright (C) 2003, 2004 Chris Larson
+# Copyright (C) 2004 Marcin Juszkiewicz
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# 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.
+#
+# Based on functions from the base bb module, Copyright 2003 Holger Schurig
+
+import os
+import sys
+import logging
+import bb
+from bb import data
+from bb.fetch2 import FetchMethod
+from bb.fetch2 import FetchError
+from bb.fetch2 import MissingParameterError
+from bb.fetch2 import runfetchcmd
+from bb.fetch2 import logger
+
+class Svn(FetchMethod):
+ """Class to fetch a module or modules from svn repositories"""
+ def supports(self, url, ud, d):
+ """
+ Check to see if a given url can be fetched with svn.
+ """
+ return ud.type in ['svn']
+
+ def urldata_init(self, ud, d):
+ """
+ init svn specific variable within url data
+ """
+ if not "module" in ud.parm:
+ raise MissingParameterError('module', ud.url)
+
+ ud.module = ud.parm["module"]
+
+ # Create paths to svn checkouts
+ relpath = self._strip_leading_slashes(ud.path)
+ ud.pkgdir = os.path.join(data.expand('${SVNDIR}', d), ud.host, relpath)
+ ud.moddir = os.path.join(ud.pkgdir, ud.module)
+
+ if 'rev' in ud.parm:
+ ud.revision = ud.parm['rev']
+
+ ud.localfile = data.expand('%s_%s_%s_%s_.tar.gz' % (ud.module.replace('/', '.'), ud.host, ud.path.replace('/', '.'), ud.revision), d)
+
+ def _buildsvncommand(self, ud, d, command):
+ """
+ Build up an svn commandline based on ud
+ command is "fetch", "update", "info"
+ """
+
+ basecmd = data.expand('${FETCHCMD_svn}', d)
+
+ proto = ud.parm.get('proto', 'svn')
+
+ svn_rsh = None
+ if proto == "svn+ssh" and "rsh" in ud.parm:
+ svn_rsh = ud.parm["rsh"]
+
+ svnroot = ud.host + ud.path
+
+ options = []
+
+ if ud.user:
+ options.append("--username %s" % ud.user)
+
+ if ud.pswd:
+ options.append("--password %s" % ud.pswd)
+
+ if command is "info":
+ svncmd = "%s info %s %s://%s/%s/" % (basecmd, " ".join(options), proto, svnroot, ud.module)
+ else:
+ suffix = ""
+ if ud.revision:
+ options.append("-r %s" % ud.revision)
+ suffix = "@%s" % (ud.revision)
+
+ if command is "fetch":
+ svncmd = "%s co %s %s://%s/%s%s %s" % (basecmd, " ".join(options), proto, svnroot, ud.module, suffix, ud.module)
+ elif command is "update":
+ svncmd = "%s update %s" % (basecmd, " ".join(options))
+ else:
+ raise FetchError("Invalid svn command %s" % command, ud.url)
+
+ if svn_rsh:
+ svncmd = "svn_RSH=\"%s\" %s" % (svn_rsh, svncmd)
+
+ return svncmd
+
+ def download(self, loc, ud, d):
+ """Fetch url"""
+
+ logger.debug(2, "Fetch: checking for module directory '" + ud.moddir + "'")
+
+ if os.access(os.path.join(ud.moddir, '.svn'), os.R_OK):
+ svnupdatecmd = self._buildsvncommand(ud, d, "update")
+ logger.info("Update " + loc)
+ # update sources there
+ os.chdir(ud.moddir)
+ logger.debug(1, "Running %s", svnupdatecmd)
+ bb.fetch2.check_network_access(d, svnupdatecmd)
+ runfetchcmd(svnupdatecmd, d)
+ else:
+ svnfetchcmd = self._buildsvncommand(ud, d, "fetch")
+ logger.info("Fetch " + loc)
+ # check out sources there
+ bb.mkdirhier(ud.pkgdir)
+ os.chdir(ud.pkgdir)
+ logger.debug(1, "Running %s", svnfetchcmd)
+ bb.fetch2.check_network_access(d, svnfetchcmd)
+ runfetchcmd(svnfetchcmd, d)
+
+ scmdata = ud.parm.get("scmdata", "")
+ if scmdata == "keep":
+ tar_flags = ""
+ else:
+ tar_flags = "--exclude '.svn'"
+
+ os.chdir(ud.pkgdir)
+ # tar them up to a defined filename
+ runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, ud.module), d, cleanup = [ud.localpath])
+
+ def supports_srcrev(self):
+ return True
+
+ def _revision_key(self, url, ud, d, name):
+ """
+ Return a unique key for the url
+ """
+ return "svn:" + ud.moddir
+
+ def _latest_revision(self, url, ud, d, name):
+ """
+ Return the latest upstream revision number
+ """
+ bb.fetch2.check_network_access(d, self._buildsvncommand(ud, d, "info"))
+
+ output = runfetchcmd("LANG=C LC_ALL=C " + self._buildsvncommand(ud, d, "info"), d, True)
+
+ revision = None
+ for line in output.splitlines():
+ if "Last Changed Rev" in line:
+ revision = line.split(":")[1].strip()
+
+ return revision
+
+ def _sortable_revision(self, url, ud, d):
+ """
+ Return a sortable revision number which in our case is the revision number
+ """
+
+ return self._build_revision(url, ud, d)
+
+ def _build_revision(self, url, ud, d):
+ return ud.revision
diff --git a/bitbake/lib/bb/fetch2/wget.py b/bitbake/lib/bb/fetch2/wget.py
new file mode 100644
index 0000000000..cf6d5bf2a0
--- /dev/null
+++ b/bitbake/lib/bb/fetch2/wget.py
@@ -0,0 +1,91 @@
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+"""
+BitBake 'Fetch' implementations
+
+Classes for obtaining upstream sources for the
+BitBake build tools.
+
+"""
+
+# Copyright (C) 2003, 2004 Chris Larson
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# 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.
+#
+# Based on functions from the base bb module, Copyright 2003 Holger Schurig
+
+import os
+import logging
+import bb
+import urllib
+from bb import data
+from bb.fetch2 import FetchMethod
+from bb.fetch2 import FetchError
+from bb.fetch2 import encodeurl
+from bb.fetch2 import decodeurl
+from bb.fetch2 import logger
+from bb.fetch2 import runfetchcmd
+
+class Wget(FetchMethod):
+ """Class to fetch urls via 'wget'"""
+ def supports(self, url, ud, d):
+ """
+ Check to see if a given url can be fetched with wget.
+ """
+ return ud.type in ['http', 'https', 'ftp']
+
+ def urldata_init(self, ud, d):
+
+ ud.basename = os.path.basename(ud.path)
+ ud.localfile = data.expand(urllib.unquote(ud.basename), d)
+
+ def download(self, uri, ud, d, checkonly = False):
+ """Fetch urls"""
+
+ def fetch_uri(uri, ud, d):
+ if checkonly:
+ fetchcmd = data.getVar("CHECKCOMMAND", d, True)
+ elif os.path.exists(ud.localpath):
+ # file exists, but we didnt complete it.. trying again..
+ fetchcmd = data.getVar("RESUMECOMMAND", d, True)
+ else:
+ fetchcmd = data.getVar("FETCHCOMMAND", d, True)
+
+ uri = uri.split(";")[0]
+ uri_decoded = list(decodeurl(uri))
+ uri_type = uri_decoded[0]
+ uri_host = uri_decoded[1]
+
+ fetchcmd = fetchcmd.replace("${URI}", uri.split(";")[0])
+ fetchcmd = fetchcmd.replace("${FILE}", ud.basename)
+ logger.info("fetch " + uri)
+ logger.debug(2, "executing " + fetchcmd)
+ bb.fetch2.check_network_access(d, fetchcmd)
+ runfetchcmd(fetchcmd, d)
+
+ # Sanity check since wget can pretend it succeed when it didn't
+ # Also, this used to happen if sourceforge sent us to the mirror page
+ if not os.path.exists(ud.localpath) and not checkonly:
+ raise FetchError("The fetch command returned success but %s doesn't exist?!" % (uri, ud.localpath), uri)
+
+ localdata = data.createCopy(d)
+ data.setVar('OVERRIDES', "wget:" + data.getVar('OVERRIDES', localdata), localdata)
+ data.update_data(localdata)
+
+ fetch_uri(uri, ud, localdata)
+
+ return True
+
+ def checkstatus(self, uri, ud, d):
+ return self.download(uri, ud, d, True)
diff --git a/bitbake/lib/bb/msg.py b/bitbake/lib/bb/msg.py
index 21692d930d..1f9ff904af 100644
--- a/bitbake/lib/bb/msg.py
+++ b/bitbake/lib/bb/msg.py
@@ -23,12 +23,66 @@ Message handling infrastructure for bitbake
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import sys
+import logging
import collections
+from itertools import groupby
+import warnings
import bb
import bb.event
-debug_level = collections.defaultdict(lambda: 0)
-verbose = False
+class BBLogFormatter(logging.Formatter):
+ """Formatter which ensures that our 'plain' messages (logging.INFO + 1) are used as is"""
+
+ DEBUG3 = logging.DEBUG - 2
+ DEBUG2 = logging.DEBUG - 1
+ DEBUG = logging.DEBUG
+ VERBOSE = logging.INFO - 1
+ NOTE = logging.INFO
+ PLAIN = logging.INFO + 1
+ ERROR = logging.ERROR
+ WARNING = logging.WARNING
+ CRITICAL = logging.CRITICAL
+
+ levelnames = {
+ DEBUG3 : 'DEBUG',
+ DEBUG2 : 'DEBUG',
+ DEBUG : 'DEBUG',
+ VERBOSE: 'NOTE',
+ NOTE : 'NOTE',
+ PLAIN : '',
+ WARNING : 'WARNING',
+ ERROR : 'ERROR',
+ CRITICAL: 'ERROR',
+ }
+
+ def getLevelName(self, levelno):
+ try:
+ return self.levelnames[levelno]
+ except KeyError:
+ self.levelnames[levelno] = value = 'Level %d' % levelno
+ return value
+
+ def format(self, record):
+ record.levelname = self.getLevelName(record.levelno)
+ if record.levelno == self.PLAIN:
+ return record.getMessage()
+ else:
+ return logging.Formatter.format(self, record)
+
+class Loggers(dict):
+ def __getitem__(self, key):
+ if key in self:
+ return dict.__getitem__(self, key)
+ else:
+ log = logging.getLogger("BitBake.%s" % domain._fields[key])
+ dict.__setitem__(self, key, log)
+ return log
+
+class DebugLevel(dict):
+ def __getitem__(self, key):
+ if key == "default":
+ key = domain.Default
+ return get_debug_level(key)
def _NamedTuple(name, fields):
Tuple = collections.namedtuple(name, " ".join(fields))
@@ -48,97 +102,99 @@ domain = _NamedTuple("Domain", (
"RunQueue",
"TaskData",
"Util"))
+logger = logging.getLogger("BitBake")
+loggers = Loggers()
+debug_level = DebugLevel()
-
-class MsgBase(bb.event.Event):
- """Base class for messages"""
-
- def __init__(self, msg):
- self._message = msg
- bb.event.Event.__init__(self)
-
-class MsgDebug(MsgBase):
- """Debug Message"""
-
-class MsgNote(MsgBase):
- """Note Message"""
-
-class MsgWarn(MsgBase):
- """Warning Message"""
-
-class MsgError(MsgBase):
- """Error Message"""
-
-class MsgFatal(MsgBase):
- """Fatal Message"""
-
-class MsgPlain(MsgBase):
- """General output"""
-
-#
# Message control functions
#
def set_debug_level(level):
- for d in domain:
- debug_level[d] = level
- debug_level[domain.Default] = level
+ for log in loggers.itervalues():
+ log.setLevel(logging.NOTSET)
+
+ if level:
+ logger.setLevel(logging.DEBUG - level + 1)
+ else:
+ logger.setLevel(logging.INFO)
def get_debug_level(msgdomain = domain.Default):
- return debug_level[msgdomain]
+ if not msgdomain:
+ level = logger.getEffectiveLevel()
+ else:
+ level = loggers[msgdomain].getEffectiveLevel()
+ return max(0, logging.DEBUG - level + 1)
def set_verbose(level):
- verbose = level
-
-def set_debug_domains(strdomains):
- for domainstr in strdomains:
- for d in domain:
- if domain._fields[d] == domainstr:
- debug_level[d] += 1
+ if level:
+ logger.setLevel(BBLogFormatter.VERBOSE)
+ else:
+ logger.setLevel(BBLogFormatter.INFO)
+
+def set_debug_domains(domainargs):
+ for (domainarg, iterator) in groupby(domainargs):
+ for index, msgdomain in enumerate(domain._fields):
+ if msgdomain == domainarg:
+ level = len(tuple(iterator))
+ if level:
+ loggers[index].setLevel(logging.DEBUG - level + 1)
break
else:
- warn(None, "Logging domain %s is not valid, ignoring" % domainstr)
+ warn(None, "Logging domain %s is not valid, ignoring" % domainarg)
#
# Message handling functions
#
-def debug(level, msgdomain, msg, fn = None):
+def debug(level, msgdomain, msg):
+ warnings.warn("bb.msg.debug will soon be deprecated in favor of the python 'logging' module",
+ PendingDeprecationWarning, stacklevel=2)
+ level = logging.DEBUG - (level - 1)
if not msgdomain:
- msgdomain = domain.Default
-
- if debug_level[msgdomain] >= level:
- bb.event.fire(MsgDebug(msg), None)
- if bb.event.useStdout:
- print('DEBUG: %s' % (msg))
+ logger.debug(level, msg)
+ else:
+ loggers[msgdomain].debug(level, msg)
+
+def plain(msg):
+ warnings.warn("bb.msg.plain will soon be deprecated in favor of the python 'logging' module",
+ PendingDeprecationWarning, stacklevel=2)
+ logger.plain(msg)
+
+def note(level, msgdomain, msg):
+ warnings.warn("bb.msg.note will soon be deprecated in favor of the python 'logging' module",
+ PendingDeprecationWarning, stacklevel=2)
+ if level > 1:
+ if msgdomain:
+ logger.verbose(msg)
+ else:
+ loggers[msgdomain].verbose(msg)
+ else:
+ if msgdomain:
+ logger.info(msg)
+ else:
+ loggers[msgdomain].info(msg)
-def note(level, msgdomain, msg, fn = None):
+def warn(msgdomain, msg):
+ warnings.warn("bb.msg.warn will soon be deprecated in favor of the python 'logging' module",
+ PendingDeprecationWarning, stacklevel=2)
if not msgdomain:
- msgdomain = domain.Default
+ logger.warn(msg)
+ else:
+ loggers[msgdomain].warn(msg)
- if level == 1 or verbose or debug_level[msgdomain] >= 1:
- bb.event.fire(MsgNote(msg), None)
- if bb.event.useStdout:
- print('NOTE: %s' % (msg))
-
-def warn(msgdomain, msg, fn = None):
- bb.event.fire(MsgWarn(msg), None)
- if bb.event.useStdout:
- print('WARNING: %s' % (msg))
-
-def error(msgdomain, msg, fn = None):
- bb.event.fire(MsgError(msg), None)
- if bb.event.useStdout:
- print('ERROR: %s' % (msg))
-
-def fatal(msgdomain, msg, fn = None):
- bb.event.fire(MsgFatal(msg), None)
+def error(msgdomain, msg):
+ warnings.warn("bb.msg.error will soon be deprecated in favor of the python 'logging' module",
+ PendingDeprecationWarning, stacklevel=2)
+ if not msgdomain:
+ logger.error(msg)
+ else:
+ loggers[msgdomain].error(msg)
- if bb.event.useStdout:
- print('FATAL: %s' % (msg))
+def fatal(msgdomain, msg):
+ warnings.warn("bb.msg.fatal will soon be deprecated in favor of raising appropriate exceptions",
+ PendingDeprecationWarning, stacklevel=2)
+ if not msgdomain:
+ logger.critical(msg)
+ else:
+ loggers[msgdomain].critical(msg)
sys.exit(1)
-
-def plain(msg, fn = None):
- bb.event.fire(MsgPlain(msg), None)
- if bb.event.useStdout:
- print(msg)
diff --git a/bitbake/lib/bb/parse/__init__.py b/bitbake/lib/bb/parse/__init__.py
index da160ceb27..eee8d9cddb 100644
--- a/bitbake/lib/bb/parse/__init__.py
+++ b/bitbake/lib/bb/parse/__init__.py
@@ -26,10 +26,15 @@ File parsers for the BitBake build tools.
handlers = []
-import bb, os
+import os
+import stat
+import logging
+import bb
import bb.utils
import bb.siggen
+logger = logging.getLogger("BitBake.Parsing")
+
class ParseError(Exception):
"""Exception raised when parsing fails"""
@@ -39,19 +44,19 @@ class SkipPackage(Exception):
__mtime_cache = {}
def cached_mtime(f):
if f not in __mtime_cache:
- __mtime_cache[f] = os.stat(f)[8]
+ __mtime_cache[f] = os.stat(f)[stat.ST_MTIME]
return __mtime_cache[f]
def cached_mtime_noerror(f):
if f not in __mtime_cache:
try:
- __mtime_cache[f] = os.stat(f)[8]
+ __mtime_cache[f] = os.stat(f)[stat.ST_MTIME]
except OSError:
return 0
return __mtime_cache[f]
def update_mtime(f):
- __mtime_cache[f] = os.stat(f)[8]
+ __mtime_cache[f] = os.stat(f)[stat.ST_MTIME]
return __mtime_cache[f]
def mark_dependency(d, f):
@@ -80,18 +85,18 @@ def init(fn, data):
if h['supports'](fn):
return h['init'](data)
-def init_parser(d, dumpsigs):
- bb.parse.siggen = bb.siggen.init(d, dumpsigs)
+def init_parser(d):
+ bb.parse.siggen = bb.siggen.init(d)
def resolve_file(fn, d):
if not os.path.isabs(fn):
bbpath = bb.data.getVar("BBPATH", d, True)
- newfn = bb.which(bbpath, fn)
+ newfn = bb.utils.which(bbpath, fn)
if not newfn:
raise IOError("file %s not found in %s" % (fn, bbpath))
fn = newfn
- bb.msg.debug(2, bb.msg.domain.Parsing, "LOAD %s" % fn)
+ logger.debug(2, "LOAD %s", fn)
return fn
# Used by OpenEmbedded metadata
diff --git a/bitbake/lib/bb/parse/ast.py b/bitbake/lib/bb/parse/ast.py
index 870ae65b0e..8fffe1e8f0 100644
--- a/bitbake/lib/bb/parse/ast.py
+++ b/bitbake/lib/bb/parse/ast.py
@@ -23,11 +23,14 @@
from __future__ import absolute_import
from future_builtins import filter
-import bb, re, string
-from bb import methodpool
+import re
+import string
+import logging
+import bb
import itertools
+from bb import methodpool
+from bb.parse import logger
-__word__ = re.compile(r"\S+")
__parsed_methods__ = bb.methodpool.get_parsed_dict()
_bbversions_re = re.compile(r"\[(?P<from>[0-9]+)-(?P<to>[0-9]+)\]")
@@ -37,13 +40,14 @@ class StatementGroup(list):
statement.eval(data)
class AstNode(object):
- pass
+ def __init__(self, filename, lineno):
+ self.filename = filename
+ self.lineno = lineno
class IncludeNode(AstNode):
- def __init__(self, what_file, fn, lineno, force):
+ def __init__(self, filename, lineno, what_file, force):
+ AstNode.__init__(self, filename, lineno)
self.what_file = what_file
- self.from_fn = fn
- self.from_lineno = lineno
self.force = force
def eval(self, data):
@@ -51,16 +55,17 @@ class IncludeNode(AstNode):
Include the file and evaluate the statements
"""
s = bb.data.expand(self.what_file, data)
- bb.msg.debug(3, bb.msg.domain.Parsing, "CONF %s:%d: including %s" % (self.from_fn, self.from_lineno, s))
+ logger.debug(2, "CONF %s:%s: including %s", self.filename, self.lineno, s)
# TODO: Cache those includes... maybe not here though
if self.force:
- bb.parse.ConfHandler.include(self.from_fn, s, data, "include required")
+ bb.parse.ConfHandler.include(self.filename, s, data, "include required")
else:
- bb.parse.ConfHandler.include(self.from_fn, s, data, False)
+ bb.parse.ConfHandler.include(self.filename, s, data, False)
class ExportNode(AstNode):
- def __init__(self, var):
+ def __init__(self, filename, lineno, var):
+ AstNode.__init__(self, filename, lineno)
self.var = var
def eval(self, data):
@@ -73,7 +78,8 @@ class DataNode(AstNode):
this need to be re-evaluated... we might be able to do
that faster with multiple classes.
"""
- def __init__(self, groupd):
+ def __init__(self, filename, lineno, groupd):
+ AstNode.__init__(self, filename, lineno)
self.groupd = groupd
def getFunc(self, key, data):
@@ -116,19 +122,18 @@ class DataNode(AstNode):
else:
bb.data.setVar(key, val, data)
-class MethodNode:
- def __init__(self, func_name, body, lineno, fn):
+class MethodNode(AstNode):
+ def __init__(self, filename, lineno, func_name, body):
+ AstNode.__init__(self, filename, lineno)
self.func_name = func_name
self.body = body
- self.fn = fn
- self.lineno = lineno
def eval(self, data):
if self.func_name == "__anonymous":
- funcname = ("__anon_%s_%s" % (self.lineno, self.fn.translate(string.maketrans('/.+-', '____'))))
+ funcname = ("__anon_%s_%s" % (self.lineno, self.filename.translate(string.maketrans('/.+-', '____'))))
if not funcname in bb.methodpool._parsed_fns:
text = "def %s(d):\n" % (funcname) + '\n'.join(self.body)
- bb.methodpool.insert_method(funcname, text, self.fn)
+ bb.methodpool.insert_method(funcname, text, self.filename)
anonfuncs = bb.data.getVar('__BBANONFUNCS', data) or []
anonfuncs.append(funcname)
bb.data.setVar('__BBANONFUNCS', anonfuncs, data)
@@ -137,25 +142,26 @@ class MethodNode:
bb.data.setVar(self.func_name, '\n'.join(self.body), data)
class PythonMethodNode(AstNode):
- def __init__(self, funcname, root, body, fn):
- self.func_name = funcname
- self.root = root
+ def __init__(self, filename, lineno, function, define, body):
+ AstNode.__init__(self, filename, lineno)
+ self.function = function
+ self.define = define
self.body = body
- self.fn = fn
def eval(self, data):
# Note we will add root to parsedmethods after having parse
# 'this' file. This means we will not parse methods from
# bb classes twice
text = '\n'.join(self.body)
- if not bb.methodpool.parsed_module(self.root):
- bb.methodpool.insert_method(self.root, text, self.fn)
- bb.data.setVarFlag(self.func_name, "func", 1, data)
- bb.data.setVarFlag(self.func_name, "python", 1, data)
- bb.data.setVar(self.func_name, text, data)
+ if not bb.methodpool.parsed_module(self.define):
+ bb.methodpool.insert_method(self.define, text, self.filename)
+ bb.data.setVarFlag(self.function, "func", 1, data)
+ bb.data.setVarFlag(self.function, "python", 1, data)
+ bb.data.setVar(self.function, text, data)
class MethodFlagsNode(AstNode):
- def __init__(self, key, m):
+ def __init__(self, filename, lineno, key, m):
+ AstNode.__init__(self, filename, lineno)
self.key = key
self.m = m
@@ -175,8 +181,9 @@ class MethodFlagsNode(AstNode):
bb.data.delVarFlag(self.key, "fakeroot", data)
class ExportFuncsNode(AstNode):
- def __init__(self, fns, classes):
- self.n = __word__.findall(fns)
+ def __init__(self, filename, lineno, fns, classes):
+ AstNode.__init__(self, filename, lineno)
+ self.n = fns.split()
self.classes = classes
def eval(self, data):
@@ -214,7 +221,8 @@ class ExportFuncsNode(AstNode):
bb.data.setVarFlag(var, 'export_func', '1', data)
class AddTaskNode(AstNode):
- def __init__(self, func, before, after):
+ def __init__(self, filename, lineno, func, before, after):
+ AstNode.__init__(self, filename, lineno)
self.func = func
self.before = before
self.after = after
@@ -245,8 +253,9 @@ class AddTaskNode(AstNode):
bb.data.setVarFlag(entry, "deps", [var] + existing, data)
class BBHandlerNode(AstNode):
- def __init__(self, fns):
- self.hs = __word__.findall(fns)
+ def __init__(self, filename, lineno, fns):
+ AstNode.__init__(self, filename, lineno)
+ self.hs = fns.split()
def eval(self, data):
bbhands = bb.data.getVar('__BBHANDLERS', data) or []
@@ -256,49 +265,49 @@ class BBHandlerNode(AstNode):
bb.data.setVar('__BBHANDLERS', bbhands, data)
class InheritNode(AstNode):
- def __init__(self, files):
- self.n = __word__.findall(files)
+ def __init__(self, filename, lineno, classes):
+ AstNode.__init__(self, filename, lineno)
+ self.classes = classes
def eval(self, data):
- bb.parse.BBHandler.inherit(self.n, data)
+ bb.parse.BBHandler.inherit(self.classes, data)
-def handleInclude(statements, m, fn, lineno, force):
- statements.append(IncludeNode(m.group(1), fn, lineno, force))
+def handleInclude(statements, filename, lineno, m, force):
+ statements.append(IncludeNode(filename, lineno, m.group(1), force))
-def handleExport(statements, m):
- statements.append(ExportNode(m.group(1)))
+def handleExport(statements, filename, lineno, m):
+ statements.append(ExportNode(filename, lineno, m.group(1)))
-def handleData(statements, groupd):
- statements.append(DataNode(groupd))
+def handleData(statements, filename, lineno, groupd):
+ statements.append(DataNode(filename, lineno, groupd))
-def handleMethod(statements, func_name, lineno, fn, body):
- statements.append(MethodNode(func_name, body, lineno, fn))
+def handleMethod(statements, filename, lineno, func_name, body):
+ statements.append(MethodNode(filename, lineno, func_name, body))
-def handlePythonMethod(statements, funcname, root, body, fn):
- statements.append(PythonMethodNode(funcname, root, body, fn))
+def handlePythonMethod(statements, filename, lineno, funcname, root, body):
+ statements.append(PythonMethodNode(filename, lineno, funcname, root, body))
-def handleMethodFlags(statements, key, m):
- statements.append(MethodFlagsNode(key, m))
+def handleMethodFlags(statements, filename, lineno, key, m):
+ statements.append(MethodFlagsNode(filename, lineno, key, m))
-def handleExportFuncs(statements, m, classes):
- statements.append(ExportFuncsNode(m.group(1), classes))
+def handleExportFuncs(statements, filename, lineno, m, classes):
+ statements.append(ExportFuncsNode(filename, lineno, m.group(1), classes))
-def handleAddTask(statements, m):
+def handleAddTask(statements, filename, lineno, m):
func = m.group("func")
before = m.group("before")
after = m.group("after")
if func is None:
return
- statements.append(AddTaskNode(func, before, after))
+ statements.append(AddTaskNode(filename, lineno, func, before, after))
-def handleBBHandlers(statements, m):
- statements.append(BBHandlerNode(m.group(1)))
+def handleBBHandlers(statements, filename, lineno, m):
+ statements.append(BBHandlerNode(filename, lineno, m.group(1)))
-def handleInherit(statements, m):
- files = m.group(1)
- n = __word__.findall(files)
- statements.append(InheritNode(m.group(1)))
+def handleInherit(statements, filename, lineno, m):
+ classes = m.group(1)
+ statements.append(InheritNode(filename, lineno, classes.split()))
def finalize(fn, d, variant = None):
for lazykey in bb.data.getVar("__lazy_assigned", d) or ():
@@ -365,7 +374,7 @@ def _expand_versions(versions):
def multi_finalize(fn, d):
appends = (d.getVar("__BBAPPEND", True) or "").split()
for append in appends:
- bb.msg.debug(2, bb.msg.domain.Parsing, "Appending .bbappend file " + append + " to " + fn)
+ logger.debug(2, "Appending .bbappend file %s to %s", append, fn)
bb.parse.BBHandler.handle(append, d, True)
safe_d = d
diff --git a/bitbake/lib/bb/parse/parse_py/BBHandler.py b/bitbake/lib/bb/parse/parse_py/BBHandler.py
index 51ad10fb92..31d1e21c67 100644
--- a/bitbake/lib/bb/parse/parse_py/BBHandler.py
+++ b/bitbake/lib/bb/parse/parse_py/BBHandler.py
@@ -27,11 +27,12 @@
from __future__ import absolute_import
import re, bb, os
-import bb.fetch, bb.build, bb.utils
+import logging
+import bb.build, bb.utils
from bb import data
from . import ConfHandler
-from .. import resolve_file, ast
+from .. import resolve_file, ast, logger
from .ConfHandler import include, init
# For compatibility
@@ -64,7 +65,8 @@ IN_PYTHON_EOF = -9999999999999
def supports(fn, d):
- return fn[-3:] == ".bb" or fn[-8:] == ".bbclass" or fn[-4:] == ".inc"
+ """Return True if fn has a supported extension"""
+ return os.path.splitext(fn)[-1] in [".bb", ".bbclass", ".inc"]
def inherit(files, d):
__inherit_cache = data.getVar('__inherit_cache', d) or []
@@ -72,11 +74,11 @@ def inherit(files, d):
lineno = 0
for file in files:
file = data.expand(file, d)
- if file[0] != "/" and file[-8:] != ".bbclass":
+ if not os.path.isabs(file) and not file.endswith(".bbclass"):
file = os.path.join('classes', '%s.bbclass' % file)
if not file in __inherit_cache:
- bb.msg.debug(2, bb.msg.domain.Parsing, "BB %s:%d: inheriting %s" % (fn, lineno, file))
+ logger.log(logging.DEBUG -1, "BB %s:%d: inheriting %s", fn, lineno, file)
__inherit_cache.append( file )
data.setVar('__inherit_cache', __inherit_cache, d)
include(fn, file, d, "inherit")
@@ -115,12 +117,12 @@ def handle(fn, d, include):
if include == 0:
- bb.msg.debug(2, bb.msg.domain.Parsing, "BB " + fn + ": handle(data)")
+ logger.debug(2, "BB %s: handle(data)", fn)
else:
- bb.msg.debug(2, bb.msg.domain.Parsing, "BB " + fn + ": handle(data, include)")
+ logger.debug(2, "BB %s: handle(data, include)", fn)
- (root, ext) = os.path.splitext(os.path.basename(fn))
- base_name = "%s%s" % (root, ext)
+ base_name = os.path.basename(fn)
+ (root, ext) = os.path.splitext(base_name)
init(d)
if ext == ".bbclass":
@@ -170,7 +172,7 @@ def feeder(lineno, s, fn, root, statements):
if __infunc__:
if s == '}':
__body__.append('')
- ast.handleMethod(statements, __infunc__, lineno, fn, __body__)
+ ast.handleMethod(statements, fn, lineno, __infunc__, __body__)
__infunc__ = ""
__body__ = []
else:
@@ -183,7 +185,8 @@ def feeder(lineno, s, fn, root, statements):
__body__.append(s)
return
else:
- ast.handlePythonMethod(statements, __inpython__, root, __body__, fn)
+ ast.handlePythonMethod(statements, fn, lineno, __inpython__,
+ root, __body__)
__body__ = []
__inpython__ = False
@@ -204,7 +207,7 @@ def feeder(lineno, s, fn, root, statements):
m = __func_start_regexp__.match(s)
if m:
__infunc__ = m.group("func") or "__anonymous"
- ast.handleMethodFlags(statements, __infunc__, m)
+ ast.handleMethodFlags(statements, fn, lineno, __infunc__, m)
return
m = __def_regexp__.match(s)
@@ -216,22 +219,22 @@ def feeder(lineno, s, fn, root, statements):
m = __export_func_regexp__.match(s)
if m:
- ast.handleExportFuncs(statements, m, classes)
+ ast.handleExportFuncs(statements, fn, lineno, m, classes)
return
m = __addtask_regexp__.match(s)
if m:
- ast.handleAddTask(statements, m)
+ ast.handleAddTask(statements, fn, lineno, m)
return
m = __addhandler_regexp__.match(s)
if m:
- ast.handleBBHandlers(statements, m)
+ ast.handleBBHandlers(statements, fn, lineno, m)
return
m = __inherit_regexp__.match(s)
if m:
- ast.handleInherit(statements, m)
+ ast.handleInherit(statements, fn, lineno, m)
return
return ConfHandler.feeder(lineno, s, fn, statements)
diff --git a/bitbake/lib/bb/parse/parse_py/ConfHandler.py b/bitbake/lib/bb/parse/parse_py/ConfHandler.py
index 9128a2ef8f..fc239a3540 100644
--- a/bitbake/lib/bb/parse/parse_py/ConfHandler.py
+++ b/bitbake/lib/bb/parse/parse_py/ConfHandler.py
@@ -25,8 +25,9 @@
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import re, bb.data, os
+import logging
import bb.utils
-from bb.parse import ParseError, resolve_file, ast
+from bb.parse import ParseError, resolve_file, ast, logger
#__config_regexp__ = re.compile( r"(?P<exp>export\s*)?(?P<var>[a-zA-Z0-9\-_+.${}]+)\s*(?P<colon>:)?(?P<ques>\?)?=\s*(?P<apo>['\"]?)(?P<value>.*)(?P=apo)$")
__config_regexp__ = re.compile( r"(?P<exp>export\s*)?(?P<var>[a-zA-Z0-9\-_+.${}/]+)(\[(?P<flag>[a-zA-Z0-9\-_+.]+)\])?\s*((?P<colon>:=)|(?P<lazyques>\?\?=)|(?P<ques>\?=)|(?P<append>\+=)|(?P<prepend>=\+)|(?P<predot>=\.)|(?P<postdot>\.=)|=)\s*(?P<apo>['\"]?)(?P<value>.*)(?P=apo)$")
@@ -45,10 +46,10 @@ def supports(fn, d):
def include(oldfn, fn, data, error_out):
"""
-
- error_out If True a ParseError will be reaised if the to be included
+ error_out If True a ParseError will be raised if the to be included
+ config-files could not be included.
"""
- if oldfn == fn: # prevent infinate recursion
+ if oldfn == fn: # prevent infinite recursion
return None
import bb
@@ -68,7 +69,7 @@ def include(oldfn, fn, data, error_out):
except IOError:
if error_out:
raise ParseError("Could not %(error_out)s file %(fn)s" % vars() )
- bb.msg.debug(2, bb.msg.domain.Parsing, "CONF file '%s' not found" % fn)
+ logger.debug(2, "CONF file '%s' not found", fn)
def handle(fn, data, include):
init(data)
@@ -112,22 +113,22 @@ def feeder(lineno, s, fn, statements):
m = __config_regexp__.match(s)
if m:
groupd = m.groupdict()
- ast.handleData(statements, groupd)
+ ast.handleData(statements, fn, lineno, groupd)
return
m = __include_regexp__.match(s)
if m:
- ast.handleInclude(statements, m, fn, lineno, False)
+ ast.handleInclude(statements, fn, lineno, m, False)
return
m = __require_regexp__.match(s)
if m:
- ast.handleInclude(statements, m, fn, lineno, True)
+ ast.handleInclude(statements, fn, lineno, m, True)
return
m = __export_regexp__.match(s)
if m:
- ast.handleExport(statements, m)
+ ast.handleExport(statements, fn, lineno, m)
return
raise ParseError("%s:%d: unparsed line: '%s'" % (fn, lineno, s));
diff --git a/bitbake/lib/bb/persist_data.py b/bitbake/lib/bb/persist_data.py
index 00f4929945..b8c2392945 100644
--- a/bitbake/lib/bb/persist_data.py
+++ b/bitbake/lib/bb/persist_data.py
@@ -1,6 +1,12 @@
-# BitBake Persistent Data Store
-#
+"""BitBake Persistent Data Store
+
+Used to store data in a central location such that other threads/tasks can
+access them at some future date. Acts as a convenience wrapper around sqlite,
+currently, providing a key/value store accessed by 'domain'.
+"""
+
# Copyright (C) 2007 Richard Purdie
+# Copyright (C) 2010 Chris Larson <chris_larson@mentor.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
@@ -15,119 +21,175 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-import bb, os
-import bb.utils
+import collections
+import logging
+import os.path
+import sys
+import warnings
+import bb.msg, bb.data, bb.utils
try:
import sqlite3
except ImportError:
- try:
- from pysqlite2 import dbapi2 as sqlite3
- except ImportError:
- bb.msg.fatal(bb.msg.domain.PersistData, "Importing sqlite3 and pysqlite2 failed, please install one of them. Python 2.5 or a 'python-pysqlite2' like package is likely to be what you need.")
+ from pysqlite2 import dbapi2 as sqlite3
sqlversion = sqlite3.sqlite_version_info
if sqlversion[0] < 3 or (sqlversion[0] == 3 and sqlversion[1] < 3):
- bb.msg.fatal(bb.msg.domain.PersistData, "sqlite3 version 3.3.0 or later is required.")
-
-class PersistData:
- """
- BitBake Persistent Data Store
-
- Used to store data in a central location such that other threads/tasks can
- access them at some future date.
-
- The "domain" is used as a key to isolate each data pool and in this
- implementation corresponds to an SQL table. The SQL table consists of a
- simple key and value pair.
-
- Why sqlite? It handles all the locking issues for us.
- """
- def __init__(self, d, persistent_database_connection):
- if "connection" in persistent_database_connection:
- self.cursor = persistent_database_connection["connection"].cursor()
- return
- self.cachedir = bb.data.getVar("PERSISTENT_DIR", d, True) or bb.data.getVar("CACHE", d, True)
- if self.cachedir in [None, '']:
- bb.msg.fatal(bb.msg.domain.PersistData, "Please set the 'PERSISTENT_DIR' or 'CACHE' variable.")
- try:
- os.stat(self.cachedir)
- except OSError:
- bb.utils.mkdirhier(self.cachedir)
-
- self.cachefile = os.path.join(self.cachedir, "bb_persist_data.sqlite3")
- bb.msg.debug(1, bb.msg.domain.PersistData, "Using '%s' as the persistent data cache" % self.cachefile)
-
- connection = sqlite3.connect(self.cachefile, timeout=5, isolation_level=None)
- persistent_database_connection["connection"] = connection
- self.cursor = persistent_database_connection["connection"].cursor()
+ raise Exception("sqlite3 version 3.3.0 or later is required.")
+
+
+logger = logging.getLogger("BitBake.PersistData")
+
+
+class SQLTable(collections.MutableMapping):
+ """Object representing a table/domain in the database"""
+ def __init__(self, cursor, table):
+ self.cursor = cursor
+ self.table = table
+
+ cursor.execute("CREATE TABLE IF NOT EXISTS %s(key TEXT, value TEXT);"
+ % table)
+
+ def _execute(self, *query):
+ """Execute a query, waiting to acquire a lock if necessary"""
+ count = 0
+ while True:
+ try:
+ return self.cursor.execute(*query)
+ break
+ except sqlite3.OperationalError as exc:
+ if 'database is locked' in str(exc) and count < 500:
+ count = count + 1
+ continue
+ raise
+
+ def __getitem__(self, key):
+ data = self._execute("SELECT * from %s where key=?;" %
+ self.table, [key])
+ for row in data:
+ return row[1]
+
+ def __delitem__(self, key):
+ self._execute("DELETE from %s where key=?;" % self.table, [key])
+
+ def __setitem__(self, key, value):
+ data = self._execute("SELECT * from %s where key=?;" %
+ self.table, [key])
+ exists = len(list(data))
+ if exists:
+ self._execute("UPDATE %s SET value=? WHERE key=?;" % self.table,
+ [value, key])
+ else:
+ self._execute("INSERT into %s(key, value) values (?, ?);" %
+ self.table, [key, value])
+
+ def __contains__(self, key):
+ return key in set(self)
+
+ def __len__(self):
+ data = self._execute("SELECT COUNT(key) FROM %s;" % self.table)
+ for row in data:
+ return row[0]
+
+ def __iter__(self):
+ data = self._execute("SELECT key FROM %s;" % self.table)
+ for row in data:
+ yield row[0]
+
+ def iteritems(self):
+ data = self._execute("SELECT * FROM %s;" % self.table)
+ for row in data:
+ yield row[0], row[1]
+
+ def itervalues(self):
+ data = self._execute("SELECT value FROM %s;" % self.table)
+ for row in data:
+ yield row[0]
+
+
+class SQLData(object):
+ """Object representing the persistent data"""
+ def __init__(self, filename):
+ bb.utils.mkdirhier(os.path.dirname(filename))
+
+ self.filename = filename
+ self.connection = sqlite3.connect(filename, timeout=5,
+ isolation_level=None)
+ self.cursor = self.connection.cursor()
+ self._tables = {}
+
+ def __getitem__(self, table):
+ if not isinstance(table, basestring):
+ raise TypeError("table argument must be a string, not '%s'" %
+ type(table))
+
+ if table in self._tables:
+ return self._tables[table]
+ else:
+ tableobj = self._tables[table] = SQLTable(self.cursor, table)
+ return tableobj
+
+ def __delitem__(self, table):
+ if table in self._tables:
+ del self._tables[table]
+ self.cursor.execute("DROP TABLE IF EXISTS %s;" % table)
+
+
+class PersistData(object):
+ """Deprecated representation of the bitbake persistent data store"""
+ def __init__(self, d):
+ warnings.warn("Use of PersistData will be deprecated in the future",
+ category=PendingDeprecationWarning,
+ stacklevel=2)
+
+ self.data = persist(d)
+ logger.debug(1, "Using '%s' as the persistent data cache",
+ self.data.filename)
def addDomain(self, domain):
"""
- Should be called before any domain is used
- Creates it if it doesn't exist.
+ Add a domain (pending deprecation)
"""
- self._execute("CREATE TABLE IF NOT EXISTS %s(key TEXT, value TEXT);" % domain)
+ return self.data[domain]
def delDomain(self, domain):
"""
Removes a domain and all the data it contains
"""
- self._execute("DROP TABLE IF EXISTS %s;" % domain)
+ del self.data[domain]
def getKeyValues(self, domain):
"""
Return a list of key + value pairs for a domain
"""
- ret = {}
- data = self._execute("SELECT key, value from %s;" % domain)
- for row in data:
- ret[str(row[0])] = str(row[1])
-
- return ret
+ return self.data[domain].items()
def getValue(self, domain, key):
"""
Return the value of a key for a domain
"""
- data = self._execute("SELECT * from %s where key=?;" % domain, [key])
- for row in data:
- return row[1]
+ return self.data[domain][key]
def setValue(self, domain, key, value):
"""
Sets the value of a key for a domain
"""
- data = self._execute("SELECT * from %s where key=?;" % domain, [key])
- rows = 0
- for row in data:
- rows = rows + 1
- if rows:
- self._execute("UPDATE %s SET value=? WHERE key=?;" % domain, [value, key])
- else:
- self._execute("INSERT into %s(key, value) values (?, ?);" % domain, [key, value])
+ self.data[domain][key] = value
def delValue(self, domain, key):
"""
Deletes a key/value pair
"""
- self._execute("DELETE from %s where key=?;" % domain, [key])
-
- #
- # We wrap the sqlite execute calls as on contended machines or single threaded
- # systems we can have multiple processes trying to access the DB at once and it seems
- # sqlite sometimes doesn't wait for the timeout. We therefore loop but put in an
- # emergency brake too
- #
- def _execute(self, *query):
- count = 0
- while True:
- try:
- ret = self.cursor.execute(*query)
- #print "Had to retry %s times" % count
- return ret
- except sqlite3.OperationalError as e:
- if 'database is locked' in str(e) and count < 500:
- count = count + 1
- continue
- raise
+ del self.data[domain][key]
+
+
+def persist(d):
+ """Convenience factory for construction of SQLData based upon metadata"""
+ cachedir = (bb.data.getVar("PERSISTENT_DIR", d, True) or
+ bb.data.getVar("CACHE", d, True))
+ if not cachedir:
+ logger.critical("Please set the 'PERSISTENT_DIR' or 'CACHE' variable")
+ sys.exit(1)
+
+ cachefile = os.path.join(cachedir, "bb_persist_data.sqlite3")
+ return SQLData(cachefile)
diff --git a/bitbake/lib/bb/process.py b/bitbake/lib/bb/process.py
new file mode 100644
index 0000000000..808cd60f92
--- /dev/null
+++ b/bitbake/lib/bb/process.py
@@ -0,0 +1,109 @@
+import logging
+import signal
+import subprocess
+
+logger = logging.getLogger('BitBake.Process')
+
+def subprocess_setup():
+ # Python installs a SIGPIPE handler by default. This is usually not what
+ # non-Python subprocesses expect.
+ signal.signal(signal.SIGPIPE, signal.SIG_DFL)
+
+class CmdError(RuntimeError):
+ def __init__(self, command, message=None):
+ self.command = command
+ self.message = message
+
+ def __str__(self):
+ if not isinstance(self.command, basestring):
+ cmd = subprocess.list2cmdline(self.command)
+ else:
+ cmd = self.command
+
+ msg = "Execution of '%s' failed" % cmd
+ if self.message:
+ msg += ': %s' % self.message
+ return msg
+
+class NotFoundError(CmdError):
+ def __str__(self):
+ return CmdError.__str__(self) + ": command not found"
+
+class ExecutionError(CmdError):
+ def __init__(self, command, exitcode, stdout = None, stderr = None):
+ CmdError.__init__(self, command)
+ self.exitcode = exitcode
+ self.stdout = stdout
+ self.stderr = stderr
+
+ def __str__(self):
+ message = ""
+ if self.stderr:
+ message += self.stderr
+ if self.stdout:
+ message += self.stdout
+ if message:
+ message = ":\n" + message
+ return (CmdError.__str__(self) +
+ " with exit code %s" % self.exitcode + message)
+
+class Popen(subprocess.Popen):
+ defaults = {
+ "close_fds": True,
+ "preexec_fn": subprocess_setup,
+ "stdout": subprocess.PIPE,
+ "stderr": subprocess.STDOUT,
+ "stdin": subprocess.PIPE,
+ "shell": False,
+ }
+
+ def __init__(self, *args, **kwargs):
+ options = dict(self.defaults)
+ options.update(kwargs)
+ subprocess.Popen.__init__(self, *args, **options)
+
+def _logged_communicate(pipe, log, input):
+ if pipe.stdin:
+ if input is not None:
+ pipe.stdin.write(input)
+ pipe.stdin.close()
+
+ bufsize = 512
+ outdata, errdata = [], []
+ while pipe.poll() is None:
+ if pipe.stdout is not None:
+ data = pipe.stdout.read(bufsize)
+ if data is not None:
+ outdata.append(data)
+ log.write(data)
+
+ if pipe.stderr is not None:
+ data = pipe.stderr.read(bufsize)
+ if data is not None:
+ errdata.append(data)
+ log.write(data)
+ return ''.join(outdata), ''.join(errdata)
+
+def run(cmd, input=None, log=None, **options):
+ """Convenience function to run a command and return its output, raising an
+ exception when the command fails"""
+
+ if isinstance(cmd, basestring) and not "shell" in options:
+ options["shell"] = True
+
+ try:
+ pipe = Popen(cmd, **options)
+ except OSError, exc:
+ if exc.errno == 2:
+ raise NotFoundError(cmd)
+ else:
+ raise CmdError(cmd, exc)
+
+ if log:
+ stdout, stderr = _logged_communicate(pipe, log, input)
+ else:
+ stdout, stderr = pipe.communicate(input)
+
+ if pipe.returncode != 0:
+ raise ExecutionError(cmd, pipe.returncode, stdout, stderr)
+ return stdout, stderr
diff --git a/bitbake/lib/bb/providers.py b/bitbake/lib/bb/providers.py
index 58326f0398..dcba9ae255 100644
--- a/bitbake/lib/bb/providers.py
+++ b/bitbake/lib/bb/providers.py
@@ -22,9 +22,12 @@
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import re
+import logging
from bb import data, utils
import bb
+logger = logging.getLogger("BitBake.Provider")
+
class NoProvider(Exception):
"""Exception raised when no provider of a build dependency can be found"""
@@ -120,9 +123,9 @@ def findPreferredProvider(pn, cfgData, dataCache, pkg_pn = None, item = None):
if item:
itemstr = " (for item %s)" % item
if preferred_file is None:
- bb.msg.note(1, bb.msg.domain.Provider, "preferred version %s of %s not available%s" % (pv_str, pn, itemstr))
+ logger.info("preferred version %s of %s not available%s", pv_str, pn, itemstr)
else:
- bb.msg.debug(1, bb.msg.domain.Provider, "selecting %s as PREFERRED_VERSION %s of package %s%s" % (preferred_file, pv_str, pn, itemstr))
+ logger.debug(1, "selecting %s as PREFERRED_VERSION %s of package %s%s", preferred_file, pv_str, pn, itemstr)
return (preferred_ver, preferred_file)
@@ -189,7 +192,7 @@ def _filterProviders(providers, item, cfgData, dataCache):
pkg_pn[pn] = []
pkg_pn[pn].append(p)
- bb.msg.debug(1, bb.msg.domain.Provider, "providers for %s are: %s" % (item, pkg_pn.keys()))
+ logger.debug(1, "providers for %s are: %s", item, pkg_pn.keys())
# First add PREFERRED_VERSIONS
for pn in pkg_pn:
@@ -206,7 +209,7 @@ def _filterProviders(providers, item, cfgData, dataCache):
eligible.append(preferred_versions[pn][1])
if len(eligible) == 0:
- bb.msg.error(bb.msg.domain.Provider, "no eligible providers for %s" % item)
+ logger.error("no eligible providers for %s", item)
return 0
# If pn == item, give it a slight default preference
@@ -242,13 +245,13 @@ def filterProviders(providers, item, cfgData, dataCache):
for p in eligible:
pn = dataCache.pkg_fn[p]
if dataCache.preferred[item] == pn:
- bb.msg.note(2, bb.msg.domain.Provider, "selecting %s to satisfy %s due to PREFERRED_PROVIDERS" % (pn, item))
+ logger.verbose("selecting %s to satisfy %s due to PREFERRED_PROVIDERS", pn, item)
eligible.remove(p)
eligible = [p] + eligible
foundUnique = True
break
- bb.msg.debug(1, bb.msg.domain.Provider, "sorted providers for %s are: %s" % (item, eligible))
+ logger.debug(1, "sorted providers for %s are: %s", item, eligible)
return eligible, foundUnique
@@ -264,27 +267,31 @@ def filterProvidersRunTime(providers, item, cfgData, dataCache):
# Should use dataCache.preferred here?
preferred = []
preferred_vars = []
+ pns = {}
+ for p in eligible:
+ pns[dataCache.pkg_fn[p]] = p
for p in eligible:
pn = dataCache.pkg_fn[p]
provides = dataCache.pn_provides[pn]
for provide in provides:
- bb.msg.note(2, bb.msg.domain.Provider, "checking PREFERRED_PROVIDER_%s" % (provide))
prefervar = bb.data.getVar('PREFERRED_PROVIDER_%s' % provide, cfgData, 1)
- if prefervar == pn:
+ logger.verbose("checking PREFERRED_PROVIDER_%s (value %s) against %s", provide, prefervar, pns.keys())
+ if prefervar in pns and pns[prefervar] not in preferred:
var = "PREFERRED_PROVIDER_%s = %s" % (provide, prefervar)
- bb.msg.note(2, bb.msg.domain.Provider, "selecting %s to satisfy runtime %s due to %s" % (pn, item, var))
+ logger.verbose("selecting %s to satisfy runtime %s due to %s", prefervar, item, var)
preferred_vars.append(var)
- eligible.remove(p)
- eligible = [p] + eligible
- preferred.append(p)
+ pref = pns[prefervar]
+ eligible.remove(pref)
+ eligible = [pref] + eligible
+ preferred.append(pref)
break
numberPreferred = len(preferred)
if numberPreferred > 1:
- bb.msg.error(bb.msg.domain.Provider, "Conflicting PREFERRED_PROVIDER entries were found which resulted in an attempt to select multiple providers (%s) for runtime dependecy %s\nThe entries resulting in this conflict were: %s" % (preferred, item, preferred_vars))
+ logger.error("Trying to resolve runtime dependency %s resulted in conflicting PREFERRED_PROVIDER entries being found.\nThe providers found were: %s\nThe PREFERRED_PROVIDER entries resulting in this conflict were: %s", item, preferred, preferred_vars)
- bb.msg.debug(1, bb.msg.domain.Provider, "sorted providers for %s are: %s" % (item, eligible))
+ logger.debug(1, "sorted providers for %s are: %s", item, eligible)
return eligible, numberPreferred
@@ -314,7 +321,7 @@ def getRuntimeProviders(dataCache, rdepend):
try:
regexp = re.compile(pattern)
except:
- bb.msg.error(bb.msg.domain.Provider, "Error parsing re expression: %s" % pattern)
+ logger.error("Error parsing regular expression '%s'", pattern)
raise
regexp_cache[pattern] = regexp
if regexp.match(rdepend):
diff --git a/bitbake/lib/pysh/__init__.py b/bitbake/lib/bb/pysh/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/bitbake/lib/pysh/__init__.py
+++ b/bitbake/lib/bb/pysh/__init__.py
diff --git a/bitbake/lib/pysh/builtin.py b/bitbake/lib/bb/pysh/builtin.py
index 25ad22eb74..25ad22eb74 100644
--- a/bitbake/lib/pysh/builtin.py
+++ b/bitbake/lib/bb/pysh/builtin.py
diff --git a/bitbake/lib/pysh/interp.py b/bitbake/lib/bb/pysh/interp.py
index efe5181e1e..efe5181e1e 100644
--- a/bitbake/lib/pysh/interp.py
+++ b/bitbake/lib/bb/pysh/interp.py
diff --git a/bitbake/lib/pysh/lsprof.py b/bitbake/lib/bb/pysh/lsprof.py
index b1831c22a7..b1831c22a7 100644
--- a/bitbake/lib/pysh/lsprof.py
+++ b/bitbake/lib/bb/pysh/lsprof.py
diff --git a/bitbake/lib/pysh/pysh.py b/bitbake/lib/bb/pysh/pysh.py
index b4e6145b51..b4e6145b51 100644
--- a/bitbake/lib/pysh/pysh.py
+++ b/bitbake/lib/bb/pysh/pysh.py
diff --git a/bitbake/lib/pysh/pyshlex.py b/bitbake/lib/bb/pysh/pyshlex.py
index b977b5e869..b977b5e869 100644
--- a/bitbake/lib/pysh/pyshlex.py
+++ b/bitbake/lib/bb/pysh/pyshlex.py
diff --git a/bitbake/lib/bb/pysh/pyshyacc.py b/bitbake/lib/bb/pysh/pyshyacc.py
new file mode 100644
index 0000000000..e8e80aac45
--- /dev/null
+++ b/bitbake/lib/bb/pysh/pyshyacc.py
@@ -0,0 +1,779 @@
+# pyshyacc.py - PLY grammar definition for pysh
+#
+# Copyright 2007 Patrick Mezard
+#
+# This software may be used and distributed according to the terms
+# of the GNU General Public License, incorporated herein by reference.
+
+"""PLY grammar file.
+"""
+import os.path
+import sys
+
+import pyshlex
+tokens = pyshlex.tokens
+
+from ply import yacc
+import sherrors
+
+class IORedirect:
+ def __init__(self, op, filename, io_number=None):
+ self.op = op
+ self.filename = filename
+ self.io_number = io_number
+
+class HereDocument:
+ def __init__(self, op, name, content, io_number=None):
+ self.op = op
+ self.name = name
+ self.content = content
+ self.io_number = io_number
+
+def make_io_redirect(p):
+ """Make an IORedirect instance from the input 'io_redirect' production."""
+ name, io_number, io_target = p
+ assert name=='io_redirect'
+
+ if io_target[0]=='io_file':
+ io_type, io_op, io_file = io_target
+ return IORedirect(io_op, io_file, io_number)
+ elif io_target[0]=='io_here':
+ io_type, io_op, io_name, io_content = io_target
+ return HereDocument(io_op, io_name, io_content, io_number)
+ else:
+ assert False, "Invalid IO redirection token %s" % repr(io_type)
+
+class SimpleCommand:
+ """
+ assigns contains (name, value) pairs.
+ """
+ def __init__(self, words, redirs, assigns):
+ self.words = list(words)
+ self.redirs = list(redirs)
+ self.assigns = list(assigns)
+
+class Pipeline:
+ def __init__(self, commands, reverse_status=False):
+ self.commands = list(commands)
+ assert self.commands #Grammar forbids this
+ self.reverse_status = reverse_status
+
+class AndOr:
+ def __init__(self, op, left, right):
+ self.op = str(op)
+ self.left = left
+ self.right = right
+
+class ForLoop:
+ def __init__(self, name, items, cmds):
+ self.name = str(name)
+ self.items = list(items)
+ self.cmds = list(cmds)
+
+class WhileLoop:
+ def __init__(self, condition, cmds):
+ self.condition = list(condition)
+ self.cmds = list(cmds)
+
+class UntilLoop:
+ def __init__(self, condition, cmds):
+ self.condition = list(condition)
+ self.cmds = list(cmds)
+
+class FunDef:
+ def __init__(self, name, body):
+ self.name = str(name)
+ self.body = body
+
+class BraceGroup:
+ def __init__(self, cmds):
+ self.cmds = list(cmds)
+
+class IfCond:
+ def __init__(self, cond, if_cmds, else_cmds):
+ self.cond = list(cond)
+ self.if_cmds = if_cmds
+ self.else_cmds = else_cmds
+
+class Case:
+ def __init__(self, name, items):
+ self.name = name
+ self.items = items
+
+class SubShell:
+ def __init__(self, cmds):
+ self.cmds = cmds
+
+class RedirectList:
+ def __init__(self, cmd, redirs):
+ self.cmd = cmd
+ self.redirs = list(redirs)
+
+def get_production(productions, ptype):
+ """productions must be a list of production tuples like (name, obj) where
+ name is the production string identifier.
+ Return the first production named 'ptype'. Raise KeyError if None can be
+ found.
+ """
+ for production in productions:
+ if production is not None and production[0]==ptype:
+ return production
+ raise KeyError(ptype)
+
+#-------------------------------------------------------------------------------
+# PLY grammar definition
+#-------------------------------------------------------------------------------
+
+def p_multiple_commands(p):
+ """multiple_commands : newline_sequence
+ | complete_command
+ | multiple_commands complete_command"""
+ if len(p)==2:
+ if p[1] is not None:
+ p[0] = [p[1]]
+ else:
+ p[0] = []
+ else:
+ p[0] = p[1] + [p[2]]
+
+def p_complete_command(p):
+ """complete_command : list separator
+ | list"""
+ if len(p)==3 and p[2] and p[2][1] == '&':
+ p[0] = ('async', p[1])
+ else:
+ p[0] = p[1]
+
+def p_list(p):
+ """list : list separator_op and_or
+ | and_or"""
+ if len(p)==2:
+ p[0] = [p[1]]
+ else:
+ #if p[2]!=';':
+ # raise NotImplementedError('AND-OR list asynchronous execution is not implemented')
+ p[0] = p[1] + [p[3]]
+
+def p_and_or(p):
+ """and_or : pipeline
+ | and_or AND_IF linebreak pipeline
+ | and_or OR_IF linebreak pipeline"""
+ if len(p)==2:
+ p[0] = p[1]
+ else:
+ p[0] = ('and_or', AndOr(p[2], p[1], p[4]))
+
+def p_maybe_bang_word(p):
+ """maybe_bang_word : Bang"""
+ p[0] = ('maybe_bang_word', p[1])
+
+def p_pipeline(p):
+ """pipeline : pipe_sequence
+ | bang_word pipe_sequence"""
+ if len(p)==3:
+ p[0] = ('pipeline', Pipeline(p[2][1:], True))
+ else:
+ p[0] = ('pipeline', Pipeline(p[1][1:]))
+
+def p_pipe_sequence(p):
+ """pipe_sequence : command
+ | pipe_sequence PIPE linebreak command"""
+ if len(p)==2:
+ p[0] = ['pipe_sequence', p[1]]
+ else:
+ p[0] = p[1] + [p[4]]
+
+def p_command(p):
+ """command : simple_command
+ | compound_command
+ | compound_command redirect_list
+ | function_definition"""
+
+ if p[1][0] in ( 'simple_command',
+ 'for_clause',
+ 'while_clause',
+ 'until_clause',
+ 'case_clause',
+ 'if_clause',
+ 'function_definition',
+ 'subshell',
+ 'brace_group',):
+ if len(p) == 2:
+ p[0] = p[1]
+ else:
+ p[0] = ('redirect_list', RedirectList(p[1], p[2][1:]))
+ else:
+ raise NotImplementedError('%s command is not implemented' % repr(p[1][0]))
+
+def p_compound_command(p):
+ """compound_command : brace_group
+ | subshell
+ | for_clause
+ | case_clause
+ | if_clause
+ | while_clause
+ | until_clause"""
+ p[0] = p[1]
+
+def p_subshell(p):
+ """subshell : LPARENS compound_list RPARENS"""
+ p[0] = ('subshell', SubShell(p[2][1:]))
+
+def p_compound_list(p):
+ """compound_list : term
+ | newline_list term
+ | term separator
+ | newline_list term separator"""
+ productions = p[1:]
+ try:
+ sep = get_production(productions, 'separator')
+ if sep[1]!=';':
+ raise NotImplementedError()
+ except KeyError:
+ pass
+ term = get_production(productions, 'term')
+ p[0] = ['compound_list'] + term[1:]
+
+def p_term(p):
+ """term : term separator and_or
+ | and_or"""
+ if len(p)==2:
+ p[0] = ['term', p[1]]
+ else:
+ if p[2] is not None and p[2][1] == '&':
+ p[0] = ['term', ('async', p[1][1:])] + [p[3]]
+ else:
+ p[0] = p[1] + [p[3]]
+
+def p_maybe_for_word(p):
+ # Rearrange 'For' priority wrt TOKEN. See p_for_word
+ """maybe_for_word : For"""
+ p[0] = ('maybe_for_word', p[1])
+
+def p_for_clause(p):
+ """for_clause : for_word name linebreak do_group
+ | for_word name linebreak in sequential_sep do_group
+ | for_word name linebreak in wordlist sequential_sep do_group"""
+ productions = p[1:]
+ do_group = get_production(productions, 'do_group')
+ try:
+ items = get_production(productions, 'in')[1:]
+ except KeyError:
+ raise NotImplementedError('"in" omission is not implemented')
+
+ try:
+ items = get_production(productions, 'wordlist')[1:]
+ except KeyError:
+ items = []
+
+ name = p[2]
+ p[0] = ('for_clause', ForLoop(name, items, do_group[1:]))
+
+def p_name(p):
+ """name : token""" #Was NAME instead of token
+ p[0] = p[1]
+
+def p_in(p):
+ """in : In"""
+ p[0] = ('in', p[1])
+
+def p_wordlist(p):
+ """wordlist : wordlist token
+ | token"""
+ if len(p)==2:
+ p[0] = ['wordlist', ('TOKEN', p[1])]
+ else:
+ p[0] = p[1] + [('TOKEN', p[2])]
+
+def p_case_clause(p):
+ """case_clause : Case token linebreak in linebreak case_list Esac
+ | Case token linebreak in linebreak case_list_ns Esac
+ | Case token linebreak in linebreak Esac"""
+ if len(p) < 8:
+ items = []
+ else:
+ items = p[6][1:]
+ name = p[2]
+ p[0] = ('case_clause', Case(name, [c[1] for c in items]))
+
+def p_case_list_ns(p):
+ """case_list_ns : case_list case_item_ns
+ | case_item_ns"""
+ p_case_list(p)
+
+def p_case_list(p):
+ """case_list : case_list case_item
+ | case_item"""
+ if len(p)==2:
+ p[0] = ['case_list', p[1]]
+ else:
+ p[0] = p[1] + [p[2]]
+
+def p_case_item_ns(p):
+ """case_item_ns : pattern RPARENS linebreak
+ | pattern RPARENS compound_list linebreak
+ | LPARENS pattern RPARENS linebreak
+ | LPARENS pattern RPARENS compound_list linebreak"""
+ p_case_item(p)
+
+def p_case_item(p):
+ """case_item : pattern RPARENS linebreak DSEMI linebreak
+ | pattern RPARENS compound_list DSEMI linebreak
+ | LPARENS pattern RPARENS linebreak DSEMI linebreak
+ | LPARENS pattern RPARENS compound_list DSEMI linebreak"""
+ if len(p) < 7:
+ name = p[1][1:]
+ else:
+ name = p[2][1:]
+
+ try:
+ cmds = get_production(p[1:], "compound_list")[1:]
+ except KeyError:
+ cmds = []
+
+ p[0] = ('case_item', (name, cmds))
+
+def p_pattern(p):
+ """pattern : token
+ | pattern PIPE token"""
+ if len(p)==2:
+ p[0] = ['pattern', ('TOKEN', p[1])]
+ else:
+ p[0] = p[1] + [('TOKEN', p[2])]
+
+def p_maybe_if_word(p):
+ # Rearrange 'If' priority wrt TOKEN. See p_if_word
+ """maybe_if_word : If"""
+ p[0] = ('maybe_if_word', p[1])
+
+def p_maybe_then_word(p):
+ # Rearrange 'Then' priority wrt TOKEN. See p_then_word
+ """maybe_then_word : Then"""
+ p[0] = ('maybe_then_word', p[1])
+
+def p_if_clause(p):
+ """if_clause : if_word compound_list then_word compound_list else_part Fi
+ | if_word compound_list then_word compound_list Fi"""
+ else_part = []
+ if len(p)==7:
+ else_part = p[5]
+ p[0] = ('if_clause', IfCond(p[2][1:], p[4][1:], else_part))
+
+def p_else_part(p):
+ """else_part : Elif compound_list then_word compound_list else_part
+ | Elif compound_list then_word compound_list
+ | Else compound_list"""
+ if len(p)==3:
+ p[0] = p[2][1:]
+ else:
+ else_part = []
+ if len(p)==6:
+ else_part = p[5]
+ p[0] = ('elif', IfCond(p[2][1:], p[4][1:], else_part))
+
+def p_while_clause(p):
+ """while_clause : While compound_list do_group"""
+ p[0] = ('while_clause', WhileLoop(p[2][1:], p[3][1:]))
+
+def p_maybe_until_word(p):
+ # Rearrange 'Until' priority wrt TOKEN. See p_until_word
+ """maybe_until_word : Until"""
+ p[0] = ('maybe_until_word', p[1])
+
+def p_until_clause(p):
+ """until_clause : until_word compound_list do_group"""
+ p[0] = ('until_clause', UntilLoop(p[2][1:], p[3][1:]))
+
+def p_function_definition(p):
+ """function_definition : fname LPARENS RPARENS linebreak function_body"""
+ p[0] = ('function_definition', FunDef(p[1], p[5]))
+
+def p_function_body(p):
+ """function_body : compound_command
+ | compound_command redirect_list"""
+ if len(p)!=2:
+ raise NotImplementedError('functions redirections lists are not implemented')
+ p[0] = p[1]
+
+def p_fname(p):
+ """fname : TOKEN""" #Was NAME instead of token
+ p[0] = p[1]
+
+def p_brace_group(p):
+ """brace_group : Lbrace compound_list Rbrace"""
+ p[0] = ('brace_group', BraceGroup(p[2][1:]))
+
+def p_maybe_done_word(p):
+ #See p_assignment_word for details.
+ """maybe_done_word : Done"""
+ p[0] = ('maybe_done_word', p[1])
+
+def p_maybe_do_word(p):
+ """maybe_do_word : Do"""
+ p[0] = ('maybe_do_word', p[1])
+
+def p_do_group(p):
+ """do_group : do_word compound_list done_word"""
+ #Do group contains a list of AndOr
+ p[0] = ['do_group'] + p[2][1:]
+
+def p_simple_command(p):
+ """simple_command : cmd_prefix cmd_word cmd_suffix
+ | cmd_prefix cmd_word
+ | cmd_prefix
+ | cmd_name cmd_suffix
+ | cmd_name"""
+ words, redirs, assigns = [], [], []
+ for e in p[1:]:
+ name = e[0]
+ if name in ('cmd_prefix', 'cmd_suffix'):
+ for sube in e[1:]:
+ subname = sube[0]
+ if subname=='io_redirect':
+ redirs.append(make_io_redirect(sube))
+ elif subname=='ASSIGNMENT_WORD':
+ assigns.append(sube)
+ else:
+ words.append(sube)
+ elif name in ('cmd_word', 'cmd_name'):
+ words.append(e)
+
+ cmd = SimpleCommand(words, redirs, assigns)
+ p[0] = ('simple_command', cmd)
+
+def p_cmd_name(p):
+ """cmd_name : TOKEN"""
+ p[0] = ('cmd_name', p[1])
+
+def p_cmd_word(p):
+ """cmd_word : token"""
+ p[0] = ('cmd_word', p[1])
+
+def p_maybe_assignment_word(p):
+ #See p_assignment_word for details.
+ """maybe_assignment_word : ASSIGNMENT_WORD"""
+ p[0] = ('maybe_assignment_word', p[1])
+
+def p_cmd_prefix(p):
+ """cmd_prefix : io_redirect
+ | cmd_prefix io_redirect
+ | assignment_word
+ | cmd_prefix assignment_word"""
+ try:
+ prefix = get_production(p[1:], 'cmd_prefix')
+ except KeyError:
+ prefix = ['cmd_prefix']
+
+ try:
+ value = get_production(p[1:], 'assignment_word')[1]
+ value = ('ASSIGNMENT_WORD', value.split('=', 1))
+ except KeyError:
+ value = get_production(p[1:], 'io_redirect')
+ p[0] = prefix + [value]
+
+def p_cmd_suffix(p):
+ """cmd_suffix : io_redirect
+ | cmd_suffix io_redirect
+ | token
+ | cmd_suffix token
+ | maybe_for_word
+ | cmd_suffix maybe_for_word
+ | maybe_done_word
+ | cmd_suffix maybe_done_word
+ | maybe_do_word
+ | cmd_suffix maybe_do_word
+ | maybe_until_word
+ | cmd_suffix maybe_until_word
+ | maybe_assignment_word
+ | cmd_suffix maybe_assignment_word
+ | maybe_if_word
+ | cmd_suffix maybe_if_word
+ | maybe_then_word
+ | cmd_suffix maybe_then_word
+ | maybe_bang_word
+ | cmd_suffix maybe_bang_word"""
+ try:
+ suffix = get_production(p[1:], 'cmd_suffix')
+ token = p[2]
+ except KeyError:
+ suffix = ['cmd_suffix']
+ token = p[1]
+
+ if isinstance(token, tuple):
+ if token[0]=='io_redirect':
+ p[0] = suffix + [token]
+ else:
+ #Convert maybe_* to TOKEN if necessary
+ p[0] = suffix + [('TOKEN', token[1])]
+ else:
+ p[0] = suffix + [('TOKEN', token)]
+
+def p_redirect_list(p):
+ """redirect_list : io_redirect
+ | redirect_list io_redirect"""
+ if len(p) == 2:
+ p[0] = ['redirect_list', make_io_redirect(p[1])]
+ else:
+ p[0] = p[1] + [make_io_redirect(p[2])]
+
+def p_io_redirect(p):
+ """io_redirect : io_file
+ | IO_NUMBER io_file
+ | io_here
+ | IO_NUMBER io_here"""
+ if len(p)==3:
+ p[0] = ('io_redirect', p[1], p[2])
+ else:
+ p[0] = ('io_redirect', None, p[1])
+
+def p_io_file(p):
+ #Return the tuple (operator, filename)
+ """io_file : LESS filename
+ | LESSAND filename
+ | GREATER filename
+ | GREATAND filename
+ | DGREAT filename
+ | LESSGREAT filename
+ | CLOBBER filename"""
+ #Extract the filename from the file
+ p[0] = ('io_file', p[1], p[2][1])
+
+def p_filename(p):
+ #Return the filename
+ """filename : TOKEN"""
+ p[0] = ('filename', p[1])
+
+def p_io_here(p):
+ """io_here : DLESS here_end
+ | DLESSDASH here_end"""
+ p[0] = ('io_here', p[1], p[2][1], p[2][2])
+
+def p_here_end(p):
+ """here_end : HERENAME TOKEN"""
+ p[0] = ('here_document', p[1], p[2])
+
+def p_newline_sequence(p):
+ # Nothing in the grammar can handle leading NEWLINE productions, so add
+ # this one with the lowest possible priority relatively to newline_list.
+ """newline_sequence : newline_list"""
+ p[0] = None
+
+def p_newline_list(p):
+ """newline_list : NEWLINE
+ | newline_list NEWLINE"""
+ p[0] = None
+
+def p_linebreak(p):
+ """linebreak : newline_list
+ | empty"""
+ p[0] = None
+
+def p_separator_op(p):
+ """separator_op : COMMA
+ | AMP"""
+ p[0] = p[1]
+
+def p_separator(p):
+ """separator : separator_op linebreak
+ | newline_list"""
+ if len(p)==2:
+ #Ignore newlines
+ p[0] = None
+ else:
+ #Keep the separator operator
+ p[0] = ('separator', p[1])
+
+def p_sequential_sep(p):
+ """sequential_sep : COMMA linebreak
+ | newline_list"""
+ p[0] = None
+
+# Low priority TOKEN => for_word conversion.
+# Let maybe_for_word be used as a token when necessary in higher priority
+# rules.
+def p_for_word(p):
+ """for_word : maybe_for_word"""
+ p[0] = p[1]
+
+def p_if_word(p):
+ """if_word : maybe_if_word"""
+ p[0] = p[1]
+
+def p_then_word(p):
+ """then_word : maybe_then_word"""
+ p[0] = p[1]
+
+def p_done_word(p):
+ """done_word : maybe_done_word"""
+ p[0] = p[1]
+
+def p_do_word(p):
+ """do_word : maybe_do_word"""
+ p[0] = p[1]
+
+def p_until_word(p):
+ """until_word : maybe_until_word"""
+ p[0] = p[1]
+
+def p_assignment_word(p):
+ """assignment_word : maybe_assignment_word"""
+ p[0] = ('assignment_word', p[1][1])
+
+def p_bang_word(p):
+ """bang_word : maybe_bang_word"""
+ p[0] = ('bang_word', p[1][1])
+
+def p_token(p):
+ """token : TOKEN
+ | Fi"""
+ p[0] = p[1]
+
+def p_empty(p):
+ 'empty :'
+ p[0] = None
+
+# Error rule for syntax errors
+def p_error(p):
+ msg = []
+ w = msg.append
+ w('%r\n' % p)
+ w('followed by:\n')
+ for i in range(5):
+ n = yacc.token()
+ if not n:
+ break
+ w(' %r\n' % n)
+ raise sherrors.ShellSyntaxError(''.join(msg))
+
+# Build the parser
+try:
+ import pyshtables
+except ImportError:
+ outputdir = os.path.dirname(__file__)
+ if not os.access(outputdir, os.W_OK):
+ outputdir = ''
+ yacc.yacc(tabmodule = 'pyshtables', outputdir = outputdir, debug = 0)
+else:
+ yacc.yacc(tabmodule = 'pysh.pyshtables', write_tables = 0, debug = 0)
+
+
+def parse(input, eof=False, debug=False):
+ """Parse a whole script at once and return the generated AST and unconsumed
+ data in a tuple.
+
+ NOTE: eof is probably meaningless for now, the parser being unable to work
+ in pull mode. It should be set to True.
+ """
+ lexer = pyshlex.PLYLexer()
+ remaining = lexer.add(input, eof)
+ if lexer.is_empty():
+ return [], remaining
+ if debug:
+ debug = 2
+ return yacc.parse(lexer=lexer, debug=debug), remaining
+
+#-------------------------------------------------------------------------------
+# AST rendering helpers
+#-------------------------------------------------------------------------------
+
+def format_commands(v):
+ """Return a tree made of strings and lists. Make command trees easier to
+ display.
+ """
+ if isinstance(v, list):
+ return [format_commands(c) for c in v]
+ if isinstance(v, tuple):
+ if len(v)==2 and isinstance(v[0], str) and not isinstance(v[1], str):
+ if v[0] == 'async':
+ return ['AsyncList', map(format_commands, v[1])]
+ else:
+ #Avoid decomposing tuples like ('pipeline', Pipeline(...))
+ return format_commands(v[1])
+ return format_commands(list(v))
+ elif isinstance(v, IfCond):
+ name = ['IfCond']
+ name += ['if', map(format_commands, v.cond)]
+ name += ['then', map(format_commands, v.if_cmds)]
+ name += ['else', map(format_commands, v.else_cmds)]
+ return name
+ elif isinstance(v, ForLoop):
+ name = ['ForLoop']
+ name += [repr(v.name)+' in ', map(str, v.items)]
+ name += ['commands', map(format_commands, v.cmds)]
+ return name
+ elif isinstance(v, AndOr):
+ return [v.op, format_commands(v.left), format_commands(v.right)]
+ elif isinstance(v, Pipeline):
+ name = 'Pipeline'
+ if v.reverse_status:
+ name = '!' + name
+ return [name, format_commands(v.commands)]
+ elif isinstance(v, Case):
+ name = ['Case']
+ name += [v.name, format_commands(v.items)]
+ elif isinstance(v, SimpleCommand):
+ name = ['SimpleCommand']
+ if v.words:
+ name += ['words', map(str, v.words)]
+ if v.assigns:
+ assigns = [tuple(a[1]) for a in v.assigns]
+ name += ['assigns', map(str, assigns)]
+ if v.redirs:
+ name += ['redirs', map(format_commands, v.redirs)]
+ return name
+ elif isinstance(v, RedirectList):
+ name = ['RedirectList']
+ if v.redirs:
+ name += ['redirs', map(format_commands, v.redirs)]
+ name += ['command', format_commands(v.cmd)]
+ return name
+ elif isinstance(v, IORedirect):
+ return ' '.join(map(str, (v.io_number, v.op, v.filename)))
+ elif isinstance(v, HereDocument):
+ return ' '.join(map(str, (v.io_number, v.op, repr(v.name), repr(v.content))))
+ elif isinstance(v, SubShell):
+ return ['SubShell', map(format_commands, v.cmds)]
+ else:
+ return repr(v)
+
+def print_commands(cmds, output=sys.stdout):
+ """Pretty print a command tree."""
+ def print_tree(cmd, spaces, output):
+ if isinstance(cmd, list):
+ for c in cmd:
+ print_tree(c, spaces + 3, output)
+ else:
+ print >>output, ' '*spaces + str(cmd)
+
+ formatted = format_commands(cmds)
+ print_tree(formatted, 0, output)
+
+
+def stringify_commands(cmds):
+ """Serialize a command tree as a string.
+
+ Returned string is not pretty and is currently used for unit tests only.
+ """
+ def stringify(value):
+ output = []
+ if isinstance(value, list):
+ formatted = []
+ for v in value:
+ formatted.append(stringify(v))
+ formatted = ' '.join(formatted)
+ output.append(''.join(['<', formatted, '>']))
+ else:
+ output.append(value)
+ return ' '.join(output)
+
+ return stringify(format_commands(cmds))
+
+
+def visit_commands(cmds, callable):
+ """Visit the command tree and execute callable on every Pipeline and
+ SimpleCommand instances.
+ """
+ if isinstance(cmds, (tuple, list)):
+ map(lambda c: visit_commands(c,callable), cmds)
+ elif isinstance(cmds, (Pipeline, SimpleCommand)):
+ callable(cmds)
diff --git a/bitbake/lib/pysh/sherrors.py b/bitbake/lib/bb/pysh/sherrors.py
index 1d5bd53b3a..1d5bd53b3a 100644
--- a/bitbake/lib/pysh/sherrors.py
+++ b/bitbake/lib/bb/pysh/sherrors.py
diff --git a/bitbake/lib/pysh/subprocess_fix.py b/bitbake/lib/bb/pysh/subprocess_fix.py
index 46eca22802..46eca22802 100644
--- a/bitbake/lib/pysh/subprocess_fix.py
+++ b/bitbake/lib/bb/pysh/subprocess_fix.py
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index b4134f8266..a3f444c2ab 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -22,19 +22,18 @@ Handles preparation and execution of a queue of tasks
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-import bb, os, sys
-import subprocess
-from bb import msg, data, event
+import copy
+import os
+import sys
import signal
import stat
import fcntl
-import copy
+import logging
+import bb
+from bb import msg, data, event
-try:
- import cPickle as pickle
-except ImportError:
- import pickle
- bb.msg.note(1, bb.msg.domain.Cache, "Importing cPickle failed. Falling back to a very slow implementation.")
+bblogger = logging.getLogger("BitBake")
+logger = logging.getLogger("BitBake.RunQueue")
class RunQueueStats:
"""
@@ -87,21 +86,28 @@ class RunQueueScheduler(object):
"""
self.rq = runqueue
self.rqdata = rqdata
- numTasks = len(self.rq.runq_fnid)
+ numTasks = len(self.rqdata.runq_fnid)
self.prio_map = []
self.prio_map.extend(range(numTasks))
- def next(self):
+ def next_buildable_task(self):
"""
Return the id of the first task we find that is buildable
"""
- for task1 in range(len(self.rqdata.runq_fnid)):
- task = self.prio_map[task1]
- if self.rq.runq_running[task] == 1:
+ for tasknum in xrange(len(self.rqdata.runq_fnid)):
+ taskid = self.prio_map[tasknum]
+ if self.rq.runq_running[taskid] == 1:
continue
- if self.rq.runq_buildable[task] == 1:
- return task
+ if self.rq.runq_buildable[taskid] == 1:
+ return taskid
+
+ def next(self):
+ """
+ Return the id of the task we should build next
+ """
+ if self.rq.stats.active < self.rq.number_tasks:
+ return self.next_buildable_task()
class RunQueueSchedulerSpeed(RunQueueScheduler):
"""
@@ -114,13 +120,12 @@ class RunQueueSchedulerSpeed(RunQueueScheduler):
"""
The priority map is sorted by task weight.
"""
- from copy import deepcopy
self.rq = runqueue
self.rqdata = rqdata
- sortweight = sorted(deepcopy(self.rqdata.runq_weight))
- copyweight = deepcopy(self.rqdata.runq_weight)
+ sortweight = sorted(copy.deepcopy(self.rqdata.runq_weight))
+ copyweight = copy.deepcopy(self.rqdata.runq_weight)
self.prio_map = []
for weight in sortweight:
@@ -142,12 +147,11 @@ class RunQueueSchedulerCompletion(RunQueueSchedulerSpeed):
def __init__(self, runqueue, rqdata):
RunQueueSchedulerSpeed.__init__(self, runqueue, rqdata)
- from copy import deepcopy
#FIXME - whilst this groups all fnids together it does not reorder the
#fnid groups optimally.
- basemap = deepcopy(self.prio_map)
+ basemap = copy.deepcopy(self.prio_map)
self.prio_map = []
while (len(basemap) > 0):
entry = basemap.pop(0)
@@ -201,7 +205,7 @@ class RunQueueData:
return "%s, %s" % (fn, taskname)
def get_task_id(self, fnid, taskname):
- for listid in range(len(self.runq_fnid)):
+ for listid in xrange(len(self.runq_fnid)):
if self.runq_fnid[listid] == fnid and self.runq_task[listid] == taskname:
return listid
return None
@@ -223,7 +227,7 @@ class RunQueueData:
"""
lowest = 0
new_chain = []
- for entry in range(len(chain)):
+ for entry in xrange(len(chain)):
if chain[entry] < chain[lowest]:
lowest = entry
new_chain.extend(chain[lowest:])
@@ -236,7 +240,7 @@ class RunQueueData:
"""
if len(chain1) != len(chain2):
return False
- for index in range(len(chain1)):
+ for index in xrange(len(chain1)):
if chain1[index] != chain2[index]:
return False
return True
@@ -281,7 +285,7 @@ class RunQueueData:
if dep in explored_deps[revdep]:
scan = True
if scan:
- find_chains(revdep, deepcopy(prev_chain))
+ find_chains(revdep, copy.deepcopy(prev_chain))
for dep in explored_deps[revdep]:
if dep not in total_deps:
total_deps.append(dep)
@@ -298,7 +302,7 @@ class RunQueueData:
Calculate a number representing the "weight" of each task. Heavier weighted tasks
have more dependencies and hence should be executed sooner for maximum speed.
- This function also sanity checks the task list finding tasks that its not
+ This function also sanity checks the task list finding tasks that are not
possible to execute due to circular dependencies.
"""
@@ -307,7 +311,7 @@ class RunQueueData:
deps_left = []
task_done = []
- for listid in range(numTasks):
+ for listid in xrange(numTasks):
task_done.append(False)
weight.append(0)
deps_left.append(len(self.runq_revdeps[listid]))
@@ -331,17 +335,17 @@ class RunQueueData:
# Circular dependency sanity check
problem_tasks = []
- for task in range(numTasks):
+ for task in xrange(numTasks):
if task_done[task] is False or deps_left[task] != 0:
problem_tasks.append(task)
- bb.msg.debug(2, bb.msg.domain.RunQueue, "Task %s (%s) is not buildable\n" % (task, self.get_user_idstring(task)))
- bb.msg.debug(2, bb.msg.domain.RunQueue, "(Complete marker was %s and the remaining dependency count was %s)\n\n" % (task_done[task], deps_left[task]))
+ logger.debug(2, "Task %s (%s) is not buildable", task, self.get_user_idstring(task))
+ logger.debug(2, "(Complete marker was %s and the remaining dependency count was %s)\n", task_done[task], deps_left[task])
if problem_tasks:
message = "Unbuildable tasks were found.\n"
message = message + "These are usually caused by circular dependencies and any circular dependency chains found will be printed below. Increase the debug level to see a list of unbuildable tasks.\n\n"
message = message + "Identifying dependency loops (this may take a short while)...\n"
- bb.msg.error(bb.msg.domain.RunQueue, message)
+ logger.error(message)
msgs = self.circular_depchains_handler(problem_tasks)
@@ -369,7 +373,7 @@ class RunQueueData:
# Nothing to do
return 0
- bb.msg.note(1, bb.msg.domain.RunQueue, "Preparing runqueue")
+ logger.info("Preparing runqueue")
# Step A - Work out a list of tasks to run
#
@@ -409,14 +413,14 @@ class RunQueueData:
if taskid is not None:
depends.append(taskid)
- for task in range(len(taskData.tasks_name)):
+ for task in xrange(len(taskData.tasks_name)):
depends = []
recrdepends = []
fnid = taskData.tasks_fnid[task]
fn = taskData.fn_index[fnid]
task_deps = self.dataCache.task_deps[fn]
- bb.msg.debug(2, bb.msg.domain.RunQueue, "Processing %s:%s" %(fn, taskData.tasks_name[task]))
+ logger.debug(2, "Processing %s:%s", fn, taskData.tasks_name[task])
if fnid not in taskData.failed_fnids:
@@ -454,7 +458,9 @@ class RunQueueData:
depdata = taskData.build_targets[depid][0]
if depdata is not None:
dep = taskData.fn_index[depdata]
- taskid = taskData.gettask_id(dep, idependtask)
+ taskid = taskData.gettask_id(dep, idependtask, False)
+ if taskid is None:
+ bb.msg.fatal(bb.msg.domain.RunQueue, "Task %s in %s depends upon nonexistant task %s in %s" % (taskData.tasks_name[task], fn, idependtask, dep))
depends.append(taskid)
if depdata != fnid:
tdepends_fnid[fnid].add(taskid)
@@ -474,7 +480,7 @@ class RunQueueData:
# Rmove all self references
if task in depends:
newdep = []
- bb.msg.debug(2, bb.msg.domain.RunQueue, "Task %s (%s %s) contains self reference! %s" % (task, taskData.fn_index[taskData.tasks_fnid[task]], taskData.tasks_name[task], depends))
+ logger.debug(2, "Task %s (%s %s) contains self reference! %s", task, taskData.fn_index[taskData.tasks_fnid[task]], taskData.tasks_name[task], depends)
for dep in depends:
if task != dep:
newdep.append(dep)
@@ -498,7 +504,7 @@ class RunQueueData:
# Algorithm is O(tasks) + O(tasks)*O(fnids)
#
reccumdepends = {}
- for task in range(len(self.runq_fnid)):
+ for task in xrange(len(self.runq_fnid)):
fnid = self.runq_fnid[task]
if fnid not in reccumdepends:
if fnid in tdepends_fnid:
@@ -506,7 +512,7 @@ class RunQueueData:
else:
reccumdepends[fnid] = set()
reccumdepends[fnid].update(self.runq_depends[task])
- for task in range(len(self.runq_fnid)):
+ for task in xrange(len(self.runq_fnid)):
taskfnid = self.runq_fnid[task]
for fnid in reccumdepends:
if task in reccumdepends[fnid]:
@@ -519,7 +525,7 @@ class RunQueueData:
#
# e.g. do_sometask[recrdeptask] = "do_someothertask"
# (makes sure sometask runs after someothertask of all DEPENDS, RDEPENDS and intertask dependencies, recursively)
- for task in range(len(self.runq_fnid)):
+ for task in xrange(len(self.runq_fnid)):
if len(runq_recrdepends[task]) > 0:
taskfnid = self.runq_fnid[task]
for dep in reccumdepends[taskfnid]:
@@ -536,7 +542,7 @@ class RunQueueData:
# as active too. If the task is to be 'forced', clear its stamp. Once
# all active tasks are marked, prune the ones we don't need.
- bb.msg.note(2, bb.msg.domain.RunQueue, "Marking Active Tasks")
+ logger.verbose("Marking Active Tasks")
def mark_active(listid, depth):
"""
@@ -567,11 +573,6 @@ class RunQueueData:
fn = taskData.fn_index[fnid]
self.target_pairs.append((fn, target[1]))
- # Remove stamps for targets if force mode active
- if self.cooker.configuration.force:
- bb.msg.note(2, bb.msg.domain.RunQueue, "Remove stamp %s, %s" % (target[1], fn))
- bb.build.del_stamp(target[1], self.dataCache, fn)
-
if fnid in taskData.failed_fnids:
continue
@@ -588,7 +589,7 @@ class RunQueueData:
maps = []
delcount = 0
- for listid in range(len(self.runq_fnid)):
+ for listid in xrange(len(self.runq_fnid)):
if runq_build[listid-delcount] == 1:
maps.append(listid-delcount)
else:
@@ -612,11 +613,11 @@ class RunQueueData:
else:
bb.msg.fatal(bb.msg.domain.RunQueue, "No active tasks and not in --continue mode?! Please report this bug.")
- bb.msg.note(2, bb.msg.domain.RunQueue, "Pruned %s inactive tasks, %s left" % (delcount, len(self.runq_fnid)))
+ logger.verbose("Pruned %s inactive tasks, %s left", delcount, len(self.runq_fnid))
# Remap the dependencies to account for the deleted tasks
# Check we didn't delete a task we depend on
- for listid in range(len(self.runq_fnid)):
+ for listid in xrange(len(self.runq_fnid)):
newdeps = []
origdeps = self.runq_depends[listid]
for origdep in origdeps:
@@ -625,17 +626,17 @@ class RunQueueData:
newdeps.append(maps[origdep])
self.runq_depends[listid] = set(newdeps)
- bb.msg.note(2, bb.msg.domain.RunQueue, "Assign Weightings")
+ logger.verbose("Assign Weightings")
# Generate a list of reverse dependencies to ease future calculations
- for listid in range(len(self.runq_fnid)):
+ for listid in xrange(len(self.runq_fnid)):
for dep in self.runq_depends[listid]:
self.runq_revdeps[dep].add(listid)
# Identify tasks at the end of dependency chains
# Error on circular dependency loops (length two)
endpoints = []
- for listid in range(len(self.runq_fnid)):
+ for listid in xrange(len(self.runq_fnid)):
revdeps = self.runq_revdeps[listid]
if len(revdeps) == 0:
endpoints.append(listid)
@@ -644,7 +645,7 @@ class RunQueueData:
#self.dump_data(taskData)
bb.msg.fatal(bb.msg.domain.RunQueue, "Task %s (%s) has circular dependency on %s (%s)" % (taskData.fn_index[self.runq_fnid[dep]], self.runq_task[dep], taskData.fn_index[self.runq_fnid[listid]], self.runq_task[listid]))
- bb.msg.note(2, bb.msg.domain.RunQueue, "Compute totals (have %s endpoint(s))" % len(endpoints))
+ logger.verbose("Compute totals (have %s endpoint(s))", len(endpoints))
# Calculate task weights
# Check of higher length circular dependencies
@@ -653,7 +654,7 @@ class RunQueueData:
# Sanity Check - Check for multiple tasks building the same provider
prov_list = {}
seen_fn = []
- for task in range(len(self.runq_fnid)):
+ for task in xrange(len(self.runq_fnid)):
fn = taskData.fn_index[self.runq_fnid[task]]
if fn in seen_fn:
continue
@@ -667,9 +668,7 @@ class RunQueueData:
for prov in prov_list:
if len(prov_list[prov]) > 1 and prov not in self.multi_provider_whitelist:
error = True
- bb.msg.error(bb.msg.domain.RunQueue, "Multiple .bb files are due to be built which each provide %s (%s).\n This usually means one provides something the other doesn't and should." % (prov, " ".join(prov_list[prov])))
- #if error:
- # bb.msg.fatal(bb.msg.domain.RunQueue, "Corrupted metadata configuration detected, aborting...")
+ logger.error("Multiple .bb files are due to be built which each provide %s (%s).\n This usually means one provides something the other doesn't and should.", prov, " ".join(prov_list[prov]))
# Create a whitelist usable by the stamp checks
@@ -683,20 +682,15 @@ class RunQueueData:
stampfnwhitelist.append(fn)
self.stampfnwhitelist = stampfnwhitelist
- #self.dump_data(taskData)
-
# Interate over the task list looking for tasks with a 'setscene' function
-
self.runq_setscene = []
for task in range(len(self.runq_fnid)):
setscene = taskData.gettask_id(self.taskData.fn_index[self.runq_fnid[task]], self.runq_task[task] + "_setscene", False)
if not setscene:
continue
- #bb.note("Found setscene for %s %s" % (self.taskData.fn_index[self.runq_fnid[task]], self.runq_task[task]))
self.runq_setscene.append(task)
# Interate over the task list and call into the siggen code
-
dealtwith = set()
todeal = set(range(len(self.runq_fnid)))
while len(todeal) > 0:
@@ -709,21 +703,24 @@ class RunQueueData:
procdep.append(self.taskData.fn_index[self.runq_fnid[dep]] + "." + self.runq_task[dep])
self.runq_hash[task] = bb.parse.siggen.get_taskhash(self.taskData.fn_index[self.runq_fnid[task]], self.runq_task[task], procdep, self.dataCache)
- hashdata = {}
- hashdata["hashes"] = {}
- hashdata["deps"] = {}
- for task in range(len(self.runq_fnid)):
- hashdata["hashes"][self.taskData.fn_index[self.runq_fnid[task]] + "." + self.runq_task[task]] = self.runq_hash[task]
+ self.hashes = {}
+ self.hash_deps = {}
+ for task in xrange(len(self.runq_fnid)):
+ identifier = '%s.%s' % (self.taskData.fn_index[self.runq_fnid[task]],
+ self.runq_task[task])
+ self.hashes[identifier] = self.runq_hash[task]
deps = []
for dep in self.runq_depends[task]:
- deps.append(self.taskData.fn_index[self.runq_fnid[dep]] + "." + self.runq_task[dep])
- hashdata["deps"][self.taskData.fn_index[self.runq_fnid[task]] + "." + self.runq_task[task]] = deps
+ depidentifier = '%s.%s' % (self.taskData.fn_index[self.runq_fnid[dep]],
+ self.runq_task[dep])
+ deps.append(depidentifier)
+ self.hash_deps[identifier] = deps
- hashdata["msg-debug"] = self.cooker.configuration.debug
- hashdata["msg-debug-domains"] = self.cooker.configuration.debug_domains
- hashdata["verbose"] = self.cooker.configuration.verbose
-
- self.hashdata = hashdata
+ # Remove stamps for targets if force mode active
+ if self.cooker.configuration.force:
+ for (fn, target) in self.target_pairs:
+ logger.verbose("Remove stamp %s, %s", target, fn)
+ bb.build.del_stamp(target, self.dataCache, fn)
return len(self.runq_fnid)
@@ -731,25 +728,25 @@ class RunQueueData:
"""
Dump some debug information on the internal data structures
"""
- bb.msg.debug(3, bb.msg.domain.RunQueue, "run_tasks:")
- for task in range(len(self.rqdata.runq_task)):
- bb.msg.debug(3, bb.msg.domain.RunQueue, " (%s)%s - %s: %s Deps %s RevDeps %s" % (task,
- taskQueue.fn_index[self.rqdata.runq_fnid[task]],
- self.rqdata.runq_task[task],
- self.rqdata.runq_weight[task],
- self.rqdata.runq_depends[task],
- self.rqdata.runq_revdeps[task]))
-
- bb.msg.debug(3, bb.msg.domain.RunQueue, "sorted_tasks:")
- for task1 in range(len(self.rqdata.runq_task)):
+ logger.debug(3, "run_tasks:")
+ for task in xrange(len(self.rqdata.runq_task)):
+ logger.debug(3, " (%s)%s - %s: %s Deps %s RevDeps %s", task,
+ taskQueue.fn_index[self.rqdata.runq_fnid[task]],
+ self.rqdata.runq_task[task],
+ self.rqdata.runq_weight[task],
+ self.rqdata.runq_depends[task],
+ self.rqdata.runq_revdeps[task])
+
+ logger.debug(3, "sorted_tasks:")
+ for task1 in xrange(len(self.rqdata.runq_task)):
if task1 in self.prio_map:
task = self.prio_map[task1]
- bb.msg.debug(3, bb.msg.domain.RunQueue, " (%s)%s - %s: %s Deps %s RevDeps %s" % (task,
- taskQueue.fn_index[self.rqdata.runq_fnid[task]],
- self.rqdata.runq_task[task],
- self.rqdata.runq_weight[task],
- self.rqdata.runq_depends[task],
- self.rqdata.runq_revdeps[task]))
+ logger.debug(3, " (%s)%s - %s: %s Deps %s RevDeps %s", task,
+ taskQueue.fn_index[self.rqdata.runq_fnid[task]],
+ self.rqdata.runq_task[task],
+ self.rqdata.runq_weight[task],
+ self.rqdata.runq_depends[task],
+ self.rqdata.runq_revdeps[task])
class RunQueue:
def __init__(self, cooker, cfgData, dataCache, taskData, targets):
@@ -777,7 +774,7 @@ class RunQueue:
if self.stamppolicy == "whitelist":
stampwhitelist = self.rqdata.stampfnwhitelist
- for task in range(len(self.rqdata.runq_fnid)):
+ for task in xrange(len(self.rqdata.runq_fnid)):
unchecked[task] = ""
if len(self.rqdata.runq_depends[task]) == 0:
buildable.append(task)
@@ -792,12 +789,12 @@ class RunQueue:
if revdep in unchecked:
buildable.append(revdep)
- for task in range(len(self.rqdata.runq_fnid)):
+ for task in xrange(len(self.rqdata.runq_fnid)):
if task not in unchecked:
continue
fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[task]]
taskname = self.rqdata.runq_task[task]
- stampfile = "%s.%s" % (self.rqdata.dataCache.stamp[fn], taskname)
+ stampfile = bb.build.stampfile(taskname, self.rqdata.dataCache, fn)
# If the stamp is missing its not current
if not os.access(stampfile, os.F_OK):
del unchecked[task]
@@ -818,7 +815,7 @@ class RunQueue:
if task in unchecked:
fn = self.taskData.fn_index[self.rqdata.runq_fnid[task]]
taskname = self.rqdata.runq_task[task]
- stampfile = "%s.%s" % (self.rqdata.dataCache.stamp[fn], taskname)
+ stampfile = bb.build.stampfile(taskname, self.rqdata.dataCache, fn)
iscurrent = True
t1 = os.stat(stampfile)[stat.ST_MTIME]
@@ -826,7 +823,7 @@ class RunQueue:
if iscurrent:
fn2 = self.taskData.fn_index[self.rqdata.runq_fnid[dep]]
taskname2 = self.rqdata.runq_task[dep]
- stampfile2 = "%s.%s" % (self.rqdata.dataCache.stamp[fn2], taskname2)
+ stampfile2 = bb.build.stampfile(taskname2, self.rqdata.dataCache, fn2)
if fn == fn2 or (fulldeptree and fn2 not in stampwhitelist):
if dep in notcurrent:
iscurrent = False
@@ -877,20 +874,20 @@ class RunQueue:
fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[task]]
if taskname is None:
taskname = self.rqdata.runq_task[task]
-
- stampfile = bb.parse.siggen.stampfile(self.rqdata.dataCache.stamp[fn], taskname, self.rqdata.runq_hash[task])
+
+ stampfile = bb.build.stampfile(taskname, self.rqdata.dataCache, fn)
# If the stamp is missing its not current
if not os.access(stampfile, os.F_OK):
- bb.msg.debug(2, bb.msg.domain.RunQueue, "Stampfile %s not available\n" % stampfile)
+ logger.debug(2, "Stampfile %s not available", stampfile)
return False
# If its a 'nostamp' task, it's not current
taskdep = self.rqdata.dataCache.task_deps[fn]
if 'nostamp' in taskdep and taskname in taskdep['nostamp']:
- bb.msg.debug(2, bb.msg.domain.RunQueue, "%s.%s is nostamp\n" % (fn, taskname))
+ logger.debug(2, "%s.%s is nostamp\n", fn, taskname)
return False
- if taskname.endswith("_setscene"):
+ if taskname != "do_setscene" and taskname.endswith("_setscene"):
return True
iscurrent = True
@@ -899,18 +896,18 @@ class RunQueue:
if iscurrent:
fn2 = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[dep]]
taskname2 = self.rqdata.runq_task[dep]
- stampfile2 = bb.parse.siggen.stampfile(self.rqdata.dataCache.stamp[fn2], taskname2, self.rqdata.runq_hash[dep])
- stampfile3 = bb.parse.siggen.stampfile(self.rqdata.dataCache.stamp[fn2], taskname2 + "_setscene", self.rqdata.runq_hash[dep])
+ stampfile2 = bb.build.stampfile(taskname2, self.rqdata.dataCache, fn2)
+ stampfile3 = bb.build.stampfile(taskname2 + "_setscene", self.rqdata.dataCache, fn2)
t2 = get_timestamp(stampfile2)
t3 = get_timestamp(stampfile3)
if t3 and t3 > t2:
continue
if fn == fn2 or (fulldeptree and fn2 not in stampwhitelist):
if not t2:
- bb.msg.debug(2, bb.msg.domain.RunQueue, "Stampfile %s does not exist" % (stampfile2))
+ logger.debug(2, 'Stampfile %s does not exist', stampfile2)
iscurrent = False
if t1 < t2:
- bb.msg.debug(2, bb.msg.domain.RunQueue, "Stampfile %s < %s" % (stampfile, stampfile2))
+ logger.debug(2, 'Stampfile %s < %s', stampfile, stampfile2)
iscurrent = False
return iscurrent
@@ -941,7 +938,7 @@ class RunQueue:
retval = self.rqexe.execute()
if self.state is runQueueRunInit:
- bb.msg.note(1, bb.msg.domain.RunQueue, "Executing RunQueue Tasks")
+ logger.info("Executing RunQueue Tasks")
self.rqexe = RunQueueExecuteTasks(self)
self.state = runQueueRunning
@@ -960,7 +957,7 @@ class RunQueue:
if self.state is runQueueComplete:
# All done
- bb.msg.note(1, bb.msg.domain.RunQueue, "Tasks Summary: Attempted %d tasks of which %d didn't need to be rerun and %d failed." % (self.rqexe.stats.completed, self.rqexe.stats.skipped, self.rqexe.stats.failed))
+ logger.info("Tasks Summary: Attempted %d tasks of which %d didn't need to be rerun and %d failed.", self.rqexe.stats.completed, self.rqexe.stats.skipped, self.rqexe.stats.failed)
return False
if self.state is runQueueChildProcess:
@@ -982,8 +979,8 @@ class RunQueue:
bb.note("Reparsing files to collect dependency data")
for task in range(len(self.rqdata.runq_fnid)):
if self.rqdata.runq_fnid[task] not in done:
- fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[task]]
- the_data = self.cooker.bb_cache.loadDataFull(fn, self.cooker.get_file_appends(fn), self.cooker.configuration.data)
+ fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[task]]
+ the_data = bb.cache.Cache.loadDataFull(fn, self.cooker.get_file_appends(fn), self.cooker.configuration.data)
done.add(self.rqdata.runq_fnid[task])
bb.parse.siggen.dump_sigs(self.rqdata.dataCache)
@@ -1022,16 +1019,16 @@ class RunQueueExecute:
self.build_pipes[result[0]].close()
del self.build_pipes[result[0]]
if result[1] != 0:
- self.task_fail(task, result[1])
+ self.task_fail(task, result[1]>>8)
else:
self.task_complete(task)
def finish_now(self):
if self.stats.active:
- bb.msg.note(1, bb.msg.domain.RunQueue, "Sending SIGINT to remaining %s tasks" % self.stats.active)
+ logger.info("Sending SIGTERM to remaining %s tasks", self.stats.active)
for k, v in self.build_pids.iteritems():
try:
- os.kill(-k, signal.SIGINT)
+ os.kill(-k, signal.SIGTERM)
except:
pass
for pipe in self.build_pipes:
@@ -1055,8 +1052,8 @@ class RunQueueExecute:
self.rq.state = runQueueComplete
return
- def fork_off_task(self, fn, task, taskname):
- the_data = self.cooker.bb_cache.loadDataFull(fn, self.cooker.get_file_appends(fn), self.cooker.configuration.data)
+ def fork_off_task(self, fn, task, taskname, quieterrors=False):
+ the_data = bb.cache.Cache.loadDataFull(fn, self.cooker.get_file_appends(fn), self.cooker.configuration.data)
env = bb.data.export_vars(the_data)
env = bb.data.export_envvars(env, the_data)
@@ -1070,55 +1067,59 @@ class RunQueueExecute:
fakedirs = (the_data.getVar("FAKEROOTDIRS", True) or "").split()
for p in fakedirs:
bb.mkdirhier(p)
- bb.msg.debug(2, bb.msg.domain.RunQueue, "Running %s:%s under fakeroot, state dir is %s" % (fn, taskname, fakedirs))
+ logger.debug(2, "Running %s:%s under fakeroot, state dir is %s" % (fn, taskname, fakedirs))
- env['BB_TASKHASH'] = self.rqdata.runq_hash[task]
env['PATH'] = self.cooker.configuration.initial_path
envbackup = os.environ.copy()
- os.environ = env
+ for e in envbackup:
+ os.unsetenv(e)
+ for e in env:
+ os.putenv(e, env[e])
sys.stdout.flush()
sys.stderr.flush()
-
try:
- pipeinfd, pipeoutfd = os.pipe()
- pipein = os.fdopen(pipeinfd, 'rb', 4096)
- pipeout = os.fdopen(pipeoutfd, 'wb', 4096)
-
+ pipein, pipeout = os.pipe()
+ pipein = os.fdopen(pipein, 'rb', 4096)
+ pipeout = os.fdopen(pipeout, 'wb', 0)
pid = os.fork()
except OSError as e:
bb.msg.fatal(bb.msg.domain.RunQueue, "fork failed: %d (%s)" % (e.errno, e.strerror))
if pid == 0:
pipein.close()
+
# Save out the PID so that the event can include it the
# events
bb.event.worker_pid = os.getpid()
bb.event.worker_pipe = pipeout
bb.event.useStdout = False
+ # Child processes should send their messages to the UI
+ # process via the server process, not print them
+ # themselves
+ bblogger.handlers = [bb.event.LogHandler()]
+
self.rq.state = runQueueChildProcess
# Make the child the process group leader
os.setpgid(0, 0)
# No stdin
- newsi = os.open('/dev/null', os.O_RDWR)
+ newsi = os.open(os.devnull, os.O_RDWR)
os.dup2(newsi, sys.stdin.fileno())
- # Stdout to a logfile
- #logout = data.expand("${TMPDIR}/log/stdout.%s" % os.getpid(), self.cfgData, True)
- #mkdirhier(os.path.dirname(logout))
- #newso = open(logout, 'w')
- #os.dup2(newso.fileno(), sys.stdout.fileno())
- #os.dup2(newso.fileno(), sys.stderr.fileno())
- if taskname.endswith("_setscene"):
+ if quieterrors:
the_data.setVarFlag(taskname, "quieterrors", "1")
+ bb.data.setVar("__RUNQUEUE_DO_NOT_USE_EXTERNALLY", self, self.cooker.configuration.data)
+ bb.data.setVar("__RUNQUEUE_DO_NOT_USE_EXTERNALLY2", fn, self.cooker.configuration.data)
bb.data.setVar("BB_WORKERCONTEXT", "1", the_data)
- bb.parse.siggen.set_taskdata(self.rqdata.hashdata["hashes"], self.rqdata.hashdata["deps"])
+ bb.parse.siggen.set_taskdata(self.rqdata.hashes, self.rqdata.hash_deps)
- for h in self.rqdata.hashdata["hashes"]:
- bb.data.setVar("BBHASH_%s" % h, self.rqdata.hashdata["hashes"][h], the_data)
- for h in self.rqdata.hashdata["deps"]:
- bb.data.setVar("BBHASHDEPS_%s" % h, self.rqdata.hashdata["deps"][h], the_data)
+ for h in self.rqdata.hashes:
+ bb.data.setVar("BBHASH_%s" % h, self.rqdata.hashes[h], the_data)
+ for h in self.rqdata.hash_deps:
+ bb.data.setVar("BBHASHDEPS_%s" % h, self.rqdata.hash_deps[h], the_data)
+
+ bb.data.setVar("BB_TASKHASH", self.rqdata.runq_hash[task], the_data)
ret = 0
try:
@@ -1128,7 +1129,10 @@ class RunQueueExecute:
except:
os._exit(1)
- os.environ = envbackup
+ for e in env:
+ os.unsetenv(e)
+ for e in envbackup:
+ os.putenv(e, envbackup[e])
return pid, pipein, pipeout
@@ -1136,9 +1140,10 @@ class RunQueueExecuteDummy(RunQueueExecute):
def __init__(self, rq):
self.rq = rq
self.stats = RunQueueStats(0)
+
def finish(self):
self.rq.state = runQueueComplete
- return
+ return
class RunQueueExecuteTasks(RunQueueExecute):
def __init__(self, rq):
@@ -1147,7 +1152,7 @@ class RunQueueExecuteTasks(RunQueueExecute):
self.stats = RunQueueStats(len(self.rqdata.runq_fnid))
# Mark initial buildable tasks
- for task in range(self.stats.total):
+ for task in xrange(self.stats.total):
self.runq_running.append(0)
self.runq_complete.append(0)
if len(self.rqdata.runq_depends[task]) == 0:
@@ -1160,31 +1165,52 @@ class RunQueueExecuteTasks(RunQueueExecute):
found = True
while found:
found = False
- for task in range(self.stats.total):
+ for task in xrange(self.stats.total):
if task in self.rq.scenequeue_covered:
continue
if len(self.rqdata.runq_revdeps[task]) > 0 and self.rqdata.runq_revdeps[task].issubset(self.rq.scenequeue_covered):
self.rq.scenequeue_covered.add(task)
found = True
- bb.debug("Full skip list %s" % self.rq.scenequeue_covered)
+ logger.debug(1, 'Full skip list %s', self.rq.scenequeue_covered)
for task in self.rq.scenequeue_covered:
self.task_skip(task)
event.fire(bb.event.StampUpdate(self.rqdata.target_pairs, self.rqdata.dataCache.stamp), self.cfgData)
- schedulers = [obj for obj in globals().itervalues()
- if type(obj) is type and issubclass(obj, RunQueueScheduler)]
+ schedulers = self.get_schedulers()
for scheduler in schedulers:
if self.scheduler == scheduler.name:
self.sched = scheduler(self, self.rqdata)
+ logger.debug(1, "Using runqueue scheduler '%s'", scheduler.name)
break
else:
- bb.error("Invalid scheduler '%s', using default 'speed' scheduler" % self.scheduler)
- bb.error("Available schedulers: %s" % ", ".join(obj.name for obj in schedulers))
- self.sched = RunQueueSchedulerSpeed(self, self.rqdata)
+ bb.fatal("Invalid scheduler '%s'. Available schedulers: %s" %
+ (self.scheduler, ", ".join(obj.name for obj in schedulers)))
+
+
+ def get_schedulers(self):
+ schedulers = set(obj for obj in globals().values()
+ if type(obj) is type and
+ issubclass(obj, RunQueueScheduler))
+ user_schedulers = bb.data.getVar("BB_SCHEDULERS", self.cfgData, True)
+ if user_schedulers:
+ for sched in user_schedulers.split():
+ if not "." in sched:
+ bb.note("Ignoring scheduler '%s' from BB_SCHEDULERS: not an import" % sched)
+ continue
+
+ modname, name = sched.rsplit(".", 1)
+ try:
+ module = __import__(modname, fromlist=(name,))
+ except ImportError, exc:
+ logger.critical("Unable to import scheduler '%s' from '%s': %s" % (name, modname, exc))
+ raise SystemExit(1)
+ else:
+ schedulers.add(getattr(module, name))
+ return schedulers
def task_completeoutright(self, task):
"""
@@ -1206,7 +1232,7 @@ class RunQueueExecuteTasks(RunQueueExecute):
self.runq_buildable[revdep] = 1
fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[revdep]]
taskname = self.rqdata.runq_task[revdep]
- bb.msg.debug(1, bb.msg.domain.RunQueue, "Marking task %s (%s, %s) as buildable" % (revdep, fn, taskname))
+ logger.debug(1, "Marking task %s (%s, %s) as buildable", revdep, fn, taskname)
def task_complete(self, task):
self.stats.taskCompleted()
@@ -1218,11 +1244,10 @@ class RunQueueExecuteTasks(RunQueueExecute):
Called when a task has failed
Updates the state engine with the failure
"""
- bb.msg.error(bb.msg.domain.RunQueue, "Task %s (%s) failed with %s" % (task, self.rqdata.get_user_idstring(task), exitcode))
self.stats.taskFailed()
fnid = self.rqdata.runq_fnid[task]
self.failed_fnids.append(fnid)
- bb.event.fire(runQueueTaskFailed(task, self.stats, self.rq), self.cfgData)
+ bb.event.fire(runQueueTaskFailed(task, self.stats, exitcode, self.rq), self.cfgData)
if self.rqdata.taskData.abort:
self.rq.state = runQueueCleanUp
@@ -1242,38 +1267,30 @@ class RunQueueExecuteTasks(RunQueueExecute):
# nothing to do
self.rq.state = runQueueCleanUp
- task = None
- if self.stats.active < self.number_tasks:
- task = self.sched.next()
+ task = self.sched.next()
if task is not None:
fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[task]]
taskname = self.rqdata.runq_task[task]
if self.rq.check_stamp_task(task, taskname):
- bb.msg.debug(2, bb.msg.domain.RunQueue, "Stamp current task %s (%s)" % (task, self.rqdata.get_user_idstring(task)))
+ logger.debug(2, "Stamp current task %s (%s)", task,
+ self.rqdata.get_user_idstring(task))
self.task_skip(task)
return True
- bb.event.fire(runQueueTaskStarted(task, self.stats, self.rq), self.cfgData)
-
taskdep = self.rqdata.dataCache.task_deps[fn]
if 'noexec' in taskdep and taskname in taskdep['noexec']:
- bb.msg.note(1, bb.msg.domain.RunQueue,
- "Noexec task %d of %d (ID: %s, %s)" % (self.stats.completed + self.stats.active + self.stats.failed + 1,
- self.stats.total,
- task,
- self.rqdata.get_user_idstring(task)))
+ startevent = runQueueTaskStarted(task, self.stats, self.rq,
+ noexec=True)
+ bb.event.fire(startevent, self.cfgData)
self.runq_running[task] = 1
self.stats.taskActive()
bb.build.make_stamp(taskname, self.rqdata.dataCache, fn)
self.task_complete(task)
return True
-
- bb.msg.note(1, bb.msg.domain.RunQueue,
- "Running task %d of %d (ID: %s, %s)" % (self.stats.completed + self.stats.active + self.stats.failed + 1,
- self.stats.total,
- task,
- self.rqdata.get_user_idstring(task)))
+ else:
+ startevent = runQueueTaskStarted(task, self.stats, self.rq)
+ bb.event.fire(startevent, self.cfgData)
pid, pipein, pipeout = self.fork_off_task(fn, task, taskname)
@@ -1281,8 +1298,6 @@ class RunQueueExecuteTasks(RunQueueExecute):
self.build_pipes[pid] = runQueuePipe(pipein, pipeout, self.cfgData)
self.runq_running[task] = 1
self.stats.taskActive()
- if self.stats.active < self.number_tasks:
- return True
for pipe in self.build_pipes:
self.build_pipes[pipe].read()
@@ -1297,13 +1312,13 @@ class RunQueueExecuteTasks(RunQueueExecute):
return True
# Sanity Checks
- for task in range(self.stats.total):
+ for task in xrange(self.stats.total):
if self.runq_buildable[task] == 0:
- bb.msg.error(bb.msg.domain.RunQueue, "Task %s never buildable!" % task)
+ logger.error("Task %s never buildable!", task)
if self.runq_running[task] == 0:
- bb.msg.error(bb.msg.domain.RunQueue, "Task %s never ran!" % task)
+ logger.error("Task %s never ran!", task)
if self.runq_complete[task] == 0:
- bb.msg.error(bb.msg.domain.RunQueue, "Task %s never completed!" % task)
+ logger.error("Task %s never completed!", task)
self.rq.state = runQueueComplete
return True
@@ -1332,12 +1347,12 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
# therefore aims to collapse the huge runqueue dependency tree into a smaller one
# only containing the setscene functions.
- for task in range(self.stats.total):
+ for task in xrange(self.stats.total):
self.runq_running.append(0)
self.runq_complete.append(0)
self.runq_buildable.append(0)
- for task in range(len(self.rqdata.runq_fnid)):
+ for task in xrange(len(self.rqdata.runq_fnid)):
sq_revdeps.append(copy.copy(self.rqdata.runq_revdeps[task]))
sq_revdeps_new.append(set())
if (len(self.rqdata.runq_revdeps[task]) == 0) and task not in self.rqdata.runq_setscene:
@@ -1368,7 +1383,7 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
process_endpoints(endpoints)
- for task in range(len(self.rqdata.runq_fnid)):
+ for task in xrange(len(self.rqdata.runq_fnid)):
if task in self.rqdata.runq_setscene:
deps = set()
for dep in sq_revdeps_new[task]:
@@ -1377,20 +1392,20 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
elif len(sq_revdeps_new[task]) != 0:
bb.msg.fatal(bb.msg.domain.RunQueue, "Something went badly wrong during scenequeue generation, aborting. Please report this problem.")
- #for task in range(len(sq_revdeps_squash)):
+ #for task in xrange(len(sq_revdeps_squash)):
# print "Task %s: %s.%s is %s " % (task, self.taskData.fn_index[self.runq_fnid[self.runq_setscene[task]]], self.runq_task[self.runq_setscene[task]] + "_setscene", sq_revdeps_squash[task])
self.sq_deps = []
self.sq_revdeps = sq_revdeps_squash
self.sq_revdeps2 = copy.deepcopy(self.sq_revdeps)
- for task in range(len(self.sq_revdeps)):
+ for task in xrange(len(self.sq_revdeps)):
self.sq_deps.append(set())
- for task in range(len(self.sq_revdeps)):
+ for task in xrange(len(self.sq_revdeps)):
for dep in self.sq_revdeps[task]:
self.sq_deps[dep].add(task)
- for task in range(len(self.sq_revdeps)):
+ for task in xrange(len(self.sq_revdeps)):
if len(self.sq_revdeps[task]) == 0:
self.runq_buildable[task] = 1
@@ -1401,7 +1416,7 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
sq_taskname = []
sq_task = []
noexec = []
- for task in range(len(self.sq_revdeps)):
+ for task in xrange(len(self.sq_revdeps)):
realtask = self.rqdata.runq_setscene[task]
fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[realtask]]
taskname = self.rqdata.runq_task[realtask]
@@ -1424,14 +1439,13 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
for v in valid:
valid_new.append(sq_task[v])
- for task in range(len(self.sq_revdeps)):
+ for task in xrange(len(self.sq_revdeps)):
if task not in valid_new and task not in noexec:
- bb.msg.debug(2, bb.msg.domain.RunQueue, "No package found so skipping setscene task %s" % (self.rqdata.get_user_idstring(self.rqdata.runq_setscene[task])))
+ logger.debug(2, 'No package found, so skipping setscene task %s',
+ self.rqdata.get_user_idstring(task))
self.task_failoutright(task)
- #print(str(valid))
-
- bb.msg.note(1, bb.msg.domain.RunQueue, "Executing SetScene Tasks")
+ logger.info('Executing SetScene Tasks')
self.rq.state = runQueueSceneRun
@@ -1449,7 +1463,8 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
"""
index = self.rqdata.runq_setscene[task]
- bb.msg.debug(1, bb.msg.domain.RunQueue, "Found task %s could be accelerated" % self.rqdata.get_user_idstring(index))
+ logger.debug(1, 'Found task %s which could be accelerated',
+ self.rqdata.get_user_idstring(index))
self.scenequeue_covered.add(task)
self.scenequeue_updatecounters(task)
@@ -1461,7 +1476,7 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
def task_fail(self, task, result):
self.stats.taskFailed()
index = self.rqdata.runq_setscene[task]
- bb.event.fire(runQueueTaskFailed(task, self.stats, self), self.cfgData)
+ bb.event.fire(runQueueTaskFailed(task, self.stats, result, self), self.cfgData)
self.scenequeue_notcovered.add(task)
self.scenequeue_updatecounters(task)
@@ -1489,13 +1504,8 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
task = None
if self.stats.active < self.number_tasks:
# Find the next setscene to run
- for nexttask in range(self.stats.total):
+ for nexttask in xrange(self.stats.total):
if self.runq_buildable[nexttask] == 1 and self.runq_running[nexttask] != 1:
- #bb.note("Comparing %s to %s" % (self.sq_revdeps[nexttask], self.scenequeue_covered))
- #if len(self.sq_revdeps[nexttask]) > 0 and self.sq_revdeps[nexttask].issubset(self.scenequeue_covered):
- # bb.note("Skipping task %s" % nexttask)
- # self.scenequeue_skip(nexttask)
- # return True
task = nexttask
break
if task is not None:
@@ -1504,7 +1514,8 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
taskname = self.rqdata.runq_task[realtask] + "_setscene"
if self.rq.check_stamp_task(realtask, self.rqdata.runq_task[realtask]):
- bb.msg.debug(2, bb.msg.domain.RunQueue, "Stamp for underlying task %s (%s) is current so skipping setscene varient" % (task, self.rqdata.get_user_idstring(task)))
+ logger.debug(2, 'Stamp for underlying task %s(%s) is current, so skipping setscene variant',
+ task, self.rqdata.get_user_idstring(task))
self.task_failoutright(task)
return True
@@ -1515,12 +1526,12 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
return True
if self.rq.check_stamp_task(realtask, taskname):
- bb.msg.debug(2, bb.msg.domain.RunQueue, "Setscene stamp current task %s (%s) so skip it and its dependencies" % (task, self.rqdata.get_user_idstring(realtask)))
+ logger.debug(2, 'Setscene stamp current task %s(%s), so skip it and its dependencies',
+ task, self.rqdata.get_user_idstring(realtask))
self.task_skip(task)
return True
- bb.msg.note(1, bb.msg.domain.RunQueue,
- "Running setscene task %d of %d (%s:%s)" % (self.stats.completed + self.stats.active + self.stats.failed + 1,
+ logger.info("Running setscene task %d of %d (%s:%s)" % (self.stats.completed + self.stats.active + self.stats.failed + 1,
self.stats.total, fn, taskname))
pid, pipein, pipeout = self.fork_off_task(fn, realtask, taskname)
@@ -1546,11 +1557,14 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
for task in oldcovered:
self.rq.scenequeue_covered.add(self.rqdata.runq_setscene[task])
- bb.debug("We can skip tasks %s" % self.rq.scenequeue_covered)
+ logger.debug(1, 'We can skip tasks %s', self.rq.scenequeue_covered)
self.rq.state = runQueueRunInit
return True
+ def fork_off_task(self, fn, task, taskname):
+ return RunQueueExecute.fork_off_task(self, fn, task, taskname, quieterrors=True)
+
class TaskFailure(Exception):
"""
Exception raised when a task in a runqueue fails
@@ -1583,51 +1597,48 @@ class runQueueTaskStarted(runQueueEvent):
"""
Event notifing a task was started
"""
- def __init__(self, task, stats, rq):
+ def __init__(self, task, stats, rq, noexec=False):
runQueueEvent.__init__(self, task, stats, rq)
- self.message = "Running task %s (%d of %d) (%s)" % (task, stats.completed + stats.active + 1, self.stats.total, self.taskstring)
+ self.noexec = noexec
class runQueueTaskFailed(runQueueEvent):
"""
Event notifing a task failed
"""
- def __init__(self, task, stats, rq):
+ def __init__(self, task, stats, exitcode, rq):
runQueueEvent.__init__(self, task, stats, rq)
- self.message = "Task %s failed (%s)" % (task, self.taskstring)
+ self.exitcode = exitcode
class runQueueTaskCompleted(runQueueEvent):
"""
Event notifing a task completed
"""
- def __init__(self, task, stats, rq):
- runQueueEvent.__init__(self, task, stats, rq)
- self.message = "Task %s completed (%s)" % (task, self.taskstring)
-#def check_stamp_fn(fn, taskname, d):
-# rq = bb.data.getVar("__RUNQUEUE_DO_NOT_USE_EXTERNALLY", d)
-# fn = bb.data.getVar("__RUNQUEUE_DO_NOT_USE_EXTERNALLY2", d)
-# fnid = rq.rqdata.taskData.getfn_id(fn)
-# taskid = rq.get_task_id(fnid, taskname)
-# if taskid is not None:
-# return rq.check_stamp_task(taskid)
-# return None
+def check_stamp_fn(fn, taskname, d):
+ rqexe = bb.data.getVar("__RUNQUEUE_DO_NOT_USE_EXTERNALLY", d)
+ fn = bb.data.getVar("__RUNQUEUE_DO_NOT_USE_EXTERNALLY2", d)
+ fnid = rqexe.rqdata.taskData.getfn_id(fn)
+ taskid = rqexe.rqdata.get_task_id(fnid, taskname)
+ if taskid is not None:
+ return rqexe.rq.check_stamp_task(taskid)
+ return None
class runQueuePipe():
"""
Abstraction for a pipe between a worker thread and the server
"""
def __init__(self, pipein, pipeout, d):
- self.fd = pipein
+ self.input = pipein
pipeout.close()
- fcntl.fcntl(self.fd, fcntl.F_SETFL, fcntl.fcntl(self.fd, fcntl.F_GETFL) | os.O_NONBLOCK)
+ fcntl.fcntl(self.input, fcntl.F_SETFL, fcntl.fcntl(self.input, fcntl.F_GETFL) | os.O_NONBLOCK)
self.queue = ""
self.d = d
def read(self):
start = len(self.queue)
try:
- self.queue = self.queue + self.fd.read(1024)
- except IOError:
+ self.queue = self.queue + self.input.read(102400)
+ except (OSError, IOError):
pass
end = len(self.queue)
index = self.queue.find("</event>")
@@ -1642,4 +1653,4 @@ class runQueuePipe():
continue
if len(self.queue) > 0:
print("Warning, worker left partial message: %s" % self.queue)
- self.fd.close()
+ self.input.close()
diff --git a/bitbake/lib/bb/server/none.py b/bitbake/lib/bb/server/none.py
index dafb2feba9..2708807dfc 100644
--- a/bitbake/lib/bb/server/none.py
+++ b/bitbake/lib/bb/server/none.py
@@ -174,6 +174,8 @@ class BitBakeServerConnection():
self.server = serverinfo.server
self.connection = serverinfo.commands
self.events = bb.server.none.BBUIEventQueue(self.server)
+ for event in bb.event.ui_queue:
+ self.events.queue_event(event)
def terminate(self):
try:
diff --git a/bitbake/lib/bb/server/xmlrpc.py b/bitbake/lib/bb/server/xmlrpc.py
index c2bfe12176..0d03e308d0 100644
--- a/bitbake/lib/bb/server/xmlrpc.py
+++ b/bitbake/lib/bb/server/xmlrpc.py
@@ -243,6 +243,8 @@ class BitBakeServerConnection():
t = BBTransport()
self.connection = xmlrpclib.Server("http://%s:%s" % (serverinfo.host, serverinfo.port), transport=t, allow_none=True)
self.events = uievent.BBUIEventQueue(self.connection)
+ for event in bb.event.ui_queue:
+ self.events.queue_event(event)
def terminate(self):
# Don't wait for server indefinitely
diff --git a/bitbake/lib/bb/shell.py b/bitbake/lib/bb/shell.py
index f9ca9d5bd3..3319e2d1cc 100644
--- a/bitbake/lib/bb/shell.py
+++ b/bitbake/lib/bb/shell.py
@@ -180,11 +180,9 @@ class BitBakeShellCommands:
last_exception = Providers.NoProvider
except runqueue.TaskFailure as fnids:
- for fnid in fnids:
- print("ERROR: '%s' failed" % td.fn_index[fnid])
last_exception = runqueue.TaskFailure
- except build.EventException as e:
+ except build.FuncFailed as e:
print("ERROR: Couldn't build '%s'" % names)
last_exception = e
@@ -247,7 +245,7 @@ class BitBakeShellCommands:
cooker.buildFile(bf, cmd)
except parse.ParseError:
print("ERROR: Unable to open or parse '%s'" % bf)
- except build.EventException as e:
+ except build.FuncFailed as e:
print("ERROR: Couldn't build '%s'" % name)
last_exception = e
@@ -274,9 +272,7 @@ class BitBakeShellCommands:
bbfile = params[0]
print("SHELL: Parsing '%s'" % bbfile)
parse.update_mtime( bbfile )
- cooker.bb_cache.cacheValidUpdate(bbfile)
- fromCache = cooker.bb_cache.loadData(bbfile, cooker.configuration.data, cooker.status)
- cooker.bb_cache.sync()
+ cooker.parser.reparse(bbfile)
if False: #fromCache:
print("SHELL: File has not been updated, not reparsing")
else:
@@ -445,7 +441,7 @@ SRC_URI = ""
name, var = params
bbfile = self._findProvider( name )
if bbfile is not None:
- the_data = cooker.bb_cache.loadDataFull(bbfile, cooker.configuration.data)
+ the_data = cache.Cache.loadDataFull(bbfile, cooker.configuration.data)
value = the_data.getVar( var, 1 )
print(value)
else:
diff --git a/bitbake/lib/bb/siggen.py b/bitbake/lib/bb/siggen.py
index 48f600a212..a101ce8bb3 100644
--- a/bitbake/lib/bb/siggen.py
+++ b/bitbake/lib/bb/siggen.py
@@ -1,53 +1,63 @@
import hashlib
+import logging
import re
+logger = logging.getLogger('BitBake.SigGen')
+
try:
import cPickle as pickle
except ImportError:
import pickle
- bb.msg.note(1, bb.msg.domain.Cache, "Importing cPickle failed. Falling back to a very slow implementation.")
+ logger.info('Importing cPickle failed. Falling back to a very slow implementation.')
-def init(d, dumpsigs):
+def init(d):
siggens = [obj for obj in globals().itervalues()
if type(obj) is type and issubclass(obj, SignatureGenerator)]
desired = bb.data.getVar("BB_SIGNATURE_HANDLER", d, True) or "noop"
for sg in siggens:
if desired == sg.name:
- return sg(d, dumpsigs)
+ return sg(d)
break
else:
- bb.error("Invalid signature generator '%s', using default 'noop' generator" % desired)
- bb.error("Available generators: %s" % ", ".join(obj.name for obj in siggens))
- return SignatureGenerator(d, dumpsigs)
+ logger.error("Invalid signature generator '%s', using default 'noop'\n"
+ "Available generators: %s",
+ ', '.join(obj.name for obj in siggens))
+ return SignatureGenerator(d)
class SignatureGenerator(object):
"""
"""
name = "noop"
- def __init__(self, data, dumpsigs):
+ def __init__(self, data):
return
def finalise(self, fn, d, varient):
return
- def stampfile(self, stampbase, taskname, taskhash):
- return "%s.%s" % (stampbase, taskname)
+ def get_taskhash(self, fn, task, deps, dataCache):
+ return 0
+
+ def set_taskdata(self, hashes, deps):
+ return
+
+ def stampfile(self, stampbase, file_name, taskname, extrainfo):
+ return ("%s.%s.%s" % (stampbase, taskname, extrainfo)).rstrip('.')
class SignatureGeneratorBasic(SignatureGenerator):
"""
"""
name = "basic"
- def __init__(self, data, dumpsigs):
+ def __init__(self, data):
self.basehash = {}
self.taskhash = {}
self.taskdeps = {}
self.runtaskdeps = {}
self.gendeps = {}
self.lookupcache = {}
- self.basewhitelist = (data.getVar("BB_HASHBASE_WHITELIST", True) or "").split()
+ self.basewhitelist = set((data.getVar("BB_HASHBASE_WHITELIST", True) or "").split())
self.taskwhitelist = data.getVar("BB_HASHTASK_WHITELIST", True) or None
if self.taskwhitelist:
@@ -57,17 +67,31 @@ class SignatureGeneratorBasic(SignatureGenerator):
def _build_data(self, fn, d):
- taskdeps, gendeps = bb.data.generate_dependencies(d)
+ tasklist, gendeps = bb.data.generate_dependencies(d)
+ taskdeps = {}
basehash = {}
lookupcache = {}
- for task in taskdeps:
+ for task in tasklist:
data = d.getVar(task, False)
lookupcache[task] = data
- for dep in sorted(taskdeps[task]):
- if dep in self.basewhitelist:
- continue
+
+ newdeps = gendeps[task]
+ seen = set()
+ while newdeps:
+ nextdeps = newdeps
+ seen |= nextdeps
+ newdeps = set()
+ for dep in nextdeps:
+ if dep in self.basewhitelist:
+ continue
+ newdeps |= gendeps[dep]
+ newdeps -= seen
+
+ alldeps = seen - self.basewhitelist
+
+ for dep in sorted(alldeps):
if dep in lookupcache:
var = lookupcache[dep]
else:
@@ -78,7 +102,7 @@ class SignatureGeneratorBasic(SignatureGenerator):
if data is None:
bb.error("Task %s from %s seems to be empty?!" % (task, fn))
self.basehash[fn + "." + task] = hashlib.md5(data).hexdigest()
- #bb.note("Hash for %s is %s" % (task, tashhash[task]))
+ taskdeps[task] = sorted(alldeps)
self.taskdeps[fn] = taskdeps
self.gendeps[fn] = gendeps
@@ -110,7 +134,6 @@ class SignatureGeneratorBasic(SignatureGenerator):
# then process the actual dependencies
dep_fn = re.search("(?P<fn>.*)\..*", dep).group('fn')
if self.twl.search(dataCache.pkg_fn[dep_fn]):
- #bb.note("Skipping %s" % dep)
continue
if dep not in self.taskhash:
bb.fatal("%s is not in taskhash, caller isn't calling in dependency order?", dep)
@@ -170,6 +193,17 @@ class SignatureGeneratorBasic(SignatureGenerator):
bb.error("The mismatched hashes were %s and %s" % (dataCache.basetaskhash[k], self.basehash[k]))
self.dump_sigtask(fn, task, dataCache.stamp[fn], True)
+class SignatureGeneratorBasicHash(SignatureGeneratorBasic):
+ name = "basichash"
+
+ def stampfile(self, stampbase, fn, taskname, extrainfo):
+ if taskname != "do_setscene" and taskname.endswith("_setscene"):
+ k = fn + "." + taskname[:-9]
+ else:
+ k = fn + "." + taskname
+ h = self.taskhash[k]
+ return ("%s.%s.%s.%s" % (stampbase, taskname, h, extrainfo)).rstrip('.')
+
def dump_this_task(outfile, d):
fn = d.getVar("BB_FILENAME", True)
task = "do_" + d.getVar("BB_CURRENTTASK", True)
@@ -181,10 +215,6 @@ def compare_sigfiles(a, b):
p2 = pickle.Unpickler(file(b, "rb"))
b_data = p2.load()
- #print "Checking"
- #print str(a_data)
- #print str(b_data)
-
def dict_diff(a, b):
sa = set(a.keys())
sb = set(b.keys())
@@ -195,7 +225,7 @@ def compare_sigfiles(a, b):
changed.add(i)
added = sa - sb
removed = sb - sa
- return changed, added, removed
+ return changed, added, removed
if 'basewhitelist' in a_data and a_data['basewhitelist'] != b_data['basewhitelist']:
print "basewhitelist changed from %s to %s" % (a_data['basewhitelist'], b_data['basewhitelist'])
@@ -225,18 +255,20 @@ def compare_sigfiles(a, b):
if changed:
for dep in changed:
print "Variable %s value changed from %s to %s" % (dep, a_data['varvals'][dep], b_data['varvals'][dep])
- #if added:
- # print "Dependency on variable %s was added (value %s)" % (dep, b_data['gendeps'][dep])
- #if removed:
- # print "Dependency on Variable %s was removed (value %s)" % (dep, a_data['gendeps'][dep])
- if 'runtaskdeps' in a_data and 'runtaskdeps' in b_data and sorted(a_data['runtaskdeps']) != sorted(b_data['runtaskdeps']):
- print "Tasks this task depends on changed from %s to %s" % (sorted(a_data['runtaskdeps']), sorted(b_data['runtaskdeps']))
-
- if 'runtaskhashes' in a_data:
- for dep in a_data['runtaskhashes']:
- if a_data['runtaskhashes'][dep] != b_data['runtaskhashes'][dep]:
+ if 'runtaskhashes' in a_data and 'runtaskhashes' in b_data:
+ changed, added, removed = dict_diff(a_data['runtaskhashes'], b_data['runtaskhashes'])
+ if added:
+ for dep in added:
+ print "Dependency on task %s was added" % (dep)
+ if removed:
+ for dep in removed:
+ print "Dependency on task %s was removed" % (dep)
+ if changed:
+ for dep in changed:
print "Hash for dependent task %s changed from %s to %s" % (dep, a_data['runtaskhashes'][dep], b_data['runtaskhashes'][dep])
+ elif 'runtaskdeps' in a_data and 'runtaskdeps' in b_data and sorted(a_data['runtaskdeps']) != sorted(b_data['runtaskdeps']):
+ print "Tasks this task depends on changed from %s to %s" % (sorted(a_data['runtaskdeps']), sorted(b_data['runtaskdeps']))
def dump_sigfile(a):
p1 = pickle.Unpickler(file(a, "rb"))
diff --git a/bitbake/lib/bb/taskdata.py b/bitbake/lib/bb/taskdata.py
index e31f967850..81a42b7b53 100644
--- a/bitbake/lib/bb/taskdata.py
+++ b/bitbake/lib/bb/taskdata.py
@@ -23,20 +23,19 @@ Task data collection and handling
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+import logging
+import re
import bb
+logger = logging.getLogger("BitBake.TaskData")
+
def re_match_strings(target, strings):
"""
Whether or not the string 'target' matches
any one string of the strings which can be regular expression string
"""
- import re
-
- for name in strings:
- if (name==target or
- re.search(name, target)!=None):
- return True
- return False
+ return any(name == target or re.match(name, target)
+ for name in strings)
class TaskData:
"""
@@ -182,7 +181,7 @@ class TaskData:
if not fnid in self.depids:
dependids = {}
for depend in dataCache.deps[fn]:
- bb.msg.debug(2, bb.msg.domain.TaskData, "Added dependency %s for %s" % (depend, fn))
+ logger.debug(2, "Added dependency %s for %s", depend, fn)
dependids[self.getbuild_id(depend)] = None
self.depids[fnid] = dependids.keys()
@@ -192,12 +191,12 @@ class TaskData:
rdepends = dataCache.rundeps[fn]
rrecs = dataCache.runrecs[fn]
for package in rdepends:
- for rdepend in bb.utils.explode_deps(rdepends[package]):
- bb.msg.debug(2, bb.msg.domain.TaskData, "Added runtime dependency %s for %s" % (rdepend, fn))
+ for rdepend in rdepends[package]:
+ logger.debug(2, "Added runtime dependency %s for %s", rdepend, fn)
rdependids[self.getrun_id(rdepend)] = None
for package in rrecs:
- for rdepend in bb.utils.explode_deps(rrecs[package]):
- bb.msg.debug(2, bb.msg.domain.TaskData, "Added runtime recommendation %s for %s" % (rdepend, fn))
+ for rdepend in rrecs[package]:
+ logger.debug(2, "Added runtime recommendation %s for %s", rdepend, fn)
rdependids[self.getrun_id(rdepend)] = None
self.rdepids[fnid] = rdependids.keys()
@@ -397,7 +396,7 @@ class TaskData:
fnid = self.getfn_id(fn)
if fnid in self.failed_fnids:
continue
- bb.msg.debug(2, bb.msg.domain.Provider, "adding %s to satisfy %s" % (fn, item))
+ logger.debug(2, "adding %s to satisfy %s", fn, item)
self.add_build_target(fn, item)
self.add_tasks(fn, dataCache)
@@ -450,7 +449,7 @@ class TaskData:
fnid = self.getfn_id(fn)
if fnid in self.failed_fnids:
continue
- bb.msg.debug(2, bb.msg.domain.Provider, "adding '%s' to satisfy runtime '%s'" % (fn, item))
+ logger.debug(2, "adding '%s' to satisfy runtime '%s'", fn, item)
self.add_runtime_target(fn, item)
self.add_tasks(fn, dataCache)
@@ -463,7 +462,7 @@ class TaskData:
"""
if fnid in self.failed_fnids:
return
- bb.msg.debug(1, bb.msg.domain.Provider, "File '%s' is unbuildable, removing..." % self.fn_index[fnid])
+ logger.debug(1, "File '%s' is unbuildable, removing...", self.fn_index[fnid])
self.failed_fnids.append(fnid)
for target in self.build_targets:
if fnid in self.build_targets[target]:
@@ -485,12 +484,12 @@ class TaskData:
missing_list = [self.build_names_index[targetid]]
else:
missing_list = [self.build_names_index[targetid]] + missing_list
- bb.msg.note(2, bb.msg.domain.Provider, "Target '%s' is unbuildable, removing...\nMissing or unbuildable dependency chain was: %s" % (self.build_names_index[targetid], missing_list))
+ logger.verbose("Target '%s' is unbuildable, removing...\nMissing or unbuildable dependency chain was: %s", self.build_names_index[targetid], missing_list)
self.failed_deps.append(targetid)
dependees = self.get_dependees(targetid)
for fnid in dependees:
self.fail_fnid(fnid, missing_list)
- for taskid in range(len(self.tasks_idepends)):
+ for taskid in xrange(len(self.tasks_idepends)):
idepends = self.tasks_idepends[taskid]
for (idependid, idependtask) in idepends:
if idependid == targetid:
@@ -498,7 +497,7 @@ class TaskData:
if self.abort and targetid in self.external_targets:
target = self.build_names_index[targetid]
- bb.msg.error(bb.msg.domain.Provider, "Required build target '%s' has no buildable providers.\nMissing or unbuildable dependency chain was: %s" % (target, missing_list))
+ logger.error("Required build target '%s' has no buildable providers.\nMissing or unbuildable dependency chain was: %s", target, missing_list)
raise bb.providers.NoProvider(target)
def remove_runtarget(self, targetid, missing_list = []):
@@ -511,7 +510,7 @@ class TaskData:
else:
missing_list = [self.run_names_index[targetid]] + missing_list
- bb.msg.note(1, bb.msg.domain.Provider, "Runtime target '%s' is unbuildable, removing...\nMissing or unbuildable dependency chain was: %s" % (self.run_names_index[targetid], missing_list))
+ logger.info("Runtime target '%s' is unbuildable, removing...\nMissing or unbuildable dependency chain was: %s", self.run_names_index[targetid], missing_list)
self.failed_rdeps.append(targetid)
dependees = self.get_rdependees(targetid)
for fnid in dependees:
@@ -521,7 +520,7 @@ class TaskData:
"""
Resolve all unresolved build and runtime targets
"""
- bb.msg.note(1, bb.msg.domain.TaskData, "Resolving any missing task queue dependencies")
+ logger.info("Resolving any missing task queue dependencies")
while True:
added = 0
for target in self.get_unresolved_build_targets(dataCache):
@@ -539,7 +538,7 @@ class TaskData:
added = added + 1
except bb.providers.NoRProvider:
self.remove_runtarget(self.getrun_id(target))
- bb.msg.debug(1, bb.msg.domain.TaskData, "Resolved " + str(added) + " extra dependencies")
+ logger.debug(1, "Resolved " + str(added) + " extra dependencies")
if added == 0:
break
# self.dump_data()
@@ -548,40 +547,40 @@ class TaskData:
"""
Dump some debug information on the internal data structures
"""
- bb.msg.debug(3, bb.msg.domain.TaskData, "build_names:")
- bb.msg.debug(3, bb.msg.domain.TaskData, ", ".join(self.build_names_index))
+ logger.debug(3, "build_names:")
+ logger.debug(3, ", ".join(self.build_names_index))
- bb.msg.debug(3, bb.msg.domain.TaskData, "run_names:")
- bb.msg.debug(3, bb.msg.domain.TaskData, ", ".join(self.run_names_index))
+ logger.debug(3, "run_names:")
+ logger.debug(3, ", ".join(self.run_names_index))
- bb.msg.debug(3, bb.msg.domain.TaskData, "build_targets:")
- for buildid in range(len(self.build_names_index)):
+ logger.debug(3, "build_targets:")
+ for buildid in xrange(len(self.build_names_index)):
target = self.build_names_index[buildid]
targets = "None"
if buildid in self.build_targets:
targets = self.build_targets[buildid]
- bb.msg.debug(3, bb.msg.domain.TaskData, " (%s)%s: %s" % (buildid, target, targets))
+ logger.debug(3, " (%s)%s: %s", buildid, target, targets)
- bb.msg.debug(3, bb.msg.domain.TaskData, "run_targets:")
- for runid in range(len(self.run_names_index)):
+ logger.debug(3, "run_targets:")
+ for runid in xrange(len(self.run_names_index)):
target = self.run_names_index[runid]
targets = "None"
if runid in self.run_targets:
targets = self.run_targets[runid]
- bb.msg.debug(3, bb.msg.domain.TaskData, " (%s)%s: %s" % (runid, target, targets))
+ logger.debug(3, " (%s)%s: %s", runid, target, targets)
- bb.msg.debug(3, bb.msg.domain.TaskData, "tasks:")
- for task in range(len(self.tasks_name)):
- bb.msg.debug(3, bb.msg.domain.TaskData, " (%s)%s - %s: %s" % (
- task,
- self.fn_index[self.tasks_fnid[task]],
- self.tasks_name[task],
- self.tasks_tdepends[task]))
+ logger.debug(3, "tasks:")
+ for task in xrange(len(self.tasks_name)):
+ logger.debug(3, " (%s)%s - %s: %s",
+ task,
+ self.fn_index[self.tasks_fnid[task]],
+ self.tasks_name[task],
+ self.tasks_tdepends[task])
- bb.msg.debug(3, bb.msg.domain.TaskData, "dependency ids (per fn):")
+ logger.debug(3, "dependency ids (per fn):")
for fnid in self.depids:
- bb.msg.debug(3, bb.msg.domain.TaskData, " %s %s: %s" % (fnid, self.fn_index[fnid], self.depids[fnid]))
+ logger.debug(3, " %s %s: %s", fnid, self.fn_index[fnid], self.depids[fnid])
- bb.msg.debug(3, bb.msg.domain.TaskData, "runtime dependency ids (per fn):")
+ logger.debug(3, "runtime dependency ids (per fn):")
for fnid in self.rdepids:
- bb.msg.debug(3, bb.msg.domain.TaskData, " %s %s: %s" % (fnid, self.fn_index[fnid], self.rdepids[fnid]))
+ logger.debug(3, " %s %s: %s", fnid, self.fn_index[fnid], self.rdepids[fnid])
diff --git a/bitbake/lib/bb/ui/crumbs/progress.py b/bitbake/lib/bb/ui/crumbs/progress.py
index 8bd87108e6..36eca38294 100644
--- a/bitbake/lib/bb/ui/crumbs/progress.py
+++ b/bitbake/lib/bb/ui/crumbs/progress.py
@@ -14,4 +14,4 @@ class ProgressBar(gtk.Dialog):
def update(self, x, y):
self.progress.set_fraction(float(x)/float(y))
- self.progress.set_text("%d/%d (%2d %%)" % (x, y, x*100/y))
+ self.progress.set_text("%2d %%" % (x*100/y))
diff --git a/bitbake/lib/bb/ui/crumbs/runningbuild.py b/bitbake/lib/bb/ui/crumbs/runningbuild.py
index 9730bfd472..4703e6d844 100644
--- a/bitbake/lib/bb/ui/crumbs/runningbuild.py
+++ b/bitbake/lib/bb/ui/crumbs/runningbuild.py
@@ -1,3 +1,4 @@
+
#
# BitBake Graphical GTK User Interface
#
@@ -20,9 +21,20 @@
import gtk
import gobject
+import logging
+import time
+import urllib
+import urllib2
+
+class Colors(object):
+ OK = "#ffffff"
+ RUNNING = "#aaffaa"
+ WARNING ="#f88017"
+ ERROR = "#ffaaaa"
class RunningBuildModel (gtk.TreeStore):
- (COL_TYPE, COL_PACKAGE, COL_TASK, COL_MESSAGE, COL_ICON, COL_ACTIVE) = (0, 1, 2, 3, 4, 5)
+ (COL_LOG, COL_PACKAGE, COL_TASK, COL_MESSAGE, COL_ICON, COL_COLOR, COL_NUM_ACTIVE) = range(7)
+
def __init__ (self):
gtk.TreeStore.__init__ (self,
gobject.TYPE_STRING,
@@ -30,7 +42,8 @@ class RunningBuildModel (gtk.TreeStore):
gobject.TYPE_STRING,
gobject.TYPE_STRING,
gobject.TYPE_STRING,
- gobject.TYPE_BOOLEAN)
+ gobject.TYPE_STRING,
+ gobject.TYPE_INT)
class RunningBuild (gobject.GObject):
__gsignals__ = {
@@ -63,32 +76,42 @@ class RunningBuild (gobject.GObject):
# for the message.
if hasattr(event, 'pid'):
pid = event.pid
- if pid in self.pids_to_task:
- (package, task) = self.pids_to_task[pid]
- parent = self.tasks_to_iter[(package, task)]
+ if hasattr(event, 'process'):
+ pid = event.process
+
+ if pid and pid in self.pids_to_task:
+ (package, task) = self.pids_to_task[pid]
+ parent = self.tasks_to_iter[(package, task)]
- if isinstance(event, bb.msg.MsgBase):
- # Ignore the "Running task i of n .."
- if (event._message.startswith ("Running task")):
+ if(isinstance(event, logging.LogRecord)):
+ if (event.msg.startswith ("Running task")):
return # don't add these to the list
- # Set a pretty icon for the message based on it's type.
- if isinstance(event, bb.msg.MsgWarn):
- icon = "dialog-warning"
- elif isinstance(event, bb.msg.MsgError):
+ if event.levelno >= logging.ERROR:
icon = "dialog-error"
+ color = Colors.ERROR
+ elif event.levelno >= logging.WARNING:
+ icon = "dialog-warning"
+ color = Colors.WARNING
else:
icon = None
+ color = Colors.OK
+
+ # if we know which package we belong to, we'll append onto its list.
+ # otherwise, we'll jump to the top of the master list
+ if parent:
+ tree_add = self.model.append
+ else:
+ tree_add = self.model.prepend
+ tree_add(parent,
+ (None,
+ package,
+ task,
+ event.getMessage(),
+ icon,
+ color,
+ 0))
- # Add the message to the tree either at the top level if parent is
- # None otherwise as a descendent of a task.
- self.model.append (parent,
- (event.__class__.__name__.split()[-1], # e.g. MsgWarn, MsgError
- package,
- task,
- event._message,
- icon,
- False))
elif isinstance(event, bb.build.TaskStarted):
(package, task) = (event._package, event._task)
@@ -101,76 +124,142 @@ class RunningBuild (gobject.GObject):
if ((package, None) in self.tasks_to_iter):
parent = self.tasks_to_iter[(package, None)]
else:
- parent = self.model.append (None, (None,
+ parent = self.model.prepend(None, (None,
package,
None,
"Package: %s" % (package),
None,
- False))
+ Colors.OK,
+ 0))
self.tasks_to_iter[(package, None)] = parent
# Because this parent package now has an active child mark it as
# such.
- self.model.set(parent, self.model.COL_ICON, "gtk-execute")
+ # @todo if parent is already in error, don't mark it green
+ self.model.set(parent, self.model.COL_ICON, "gtk-execute",
+ self.model.COL_COLOR, Colors.RUNNING)
# Add an entry in the model for this task
i = self.model.append (parent, (None,
package,
task,
"Task: %s" % (task),
- None,
- False))
+ "gtk-execute",
+ Colors.RUNNING,
+ 0))
+
+ # update the parent's active task count
+ num_active = self.model.get(parent, self.model.COL_NUM_ACTIVE)[0] + 1
+ self.model.set(parent, self.model.COL_NUM_ACTIVE, num_active)
# Save out the iter so that we can find it when we have a message
# that we need to attach to a task.
self.tasks_to_iter[(package, task)] = i
- # Mark this task as active.
- self.model.set(i, self.model.COL_ICON, "gtk-execute")
-
elif isinstance(event, bb.build.TaskBase):
+ current = self.tasks_to_iter[(package, task)]
+ parent = self.tasks_to_iter[(package, None)]
+
+ # remove this task from the parent's active count
+ num_active = self.model.get(parent, self.model.COL_NUM_ACTIVE)[0] - 1
+ self.model.set(parent, self.model.COL_NUM_ACTIVE, num_active)
if isinstance(event, bb.build.TaskFailed):
- # Mark the task as failed
- i = self.tasks_to_iter[(package, task)]
- self.model.set(i, self.model.COL_ICON, "dialog-error")
+ # Mark the task and parent as failed
+ icon = "dialog-error"
+ color = Colors.ERROR
- # Mark the parent package as failed
- i = self.tasks_to_iter[(package, None)]
- self.model.set(i, self.model.COL_ICON, "dialog-error")
+ logfile = event.logfile
+ if logfile and os.path.exists(logfile):
+ with open(logfile) as f:
+ logdata = f.read()
+ self.model.append(current, ('pastebin', None, None, logdata, 'gtk-error', Colors.OK, 0))
+
+ for i in (current, parent):
+ self.model.set(i, self.model.COL_ICON, icon,
+ self.model.COL_COLOR, color)
else:
+ icon = None
+ color = Colors.OK
+
# Mark the task as inactive
- i = self.tasks_to_iter[(package, task)]
- self.model.set(i, self.model.COL_ICON, None)
+ self.model.set(current, self.model.COL_ICON, icon,
+ self.model.COL_COLOR, color)
- # Mark the parent package as inactive
+ # Mark the parent package as inactive, but make sure to
+ # preserve error and active states
i = self.tasks_to_iter[(package, None)]
- self.model.set(i, self.model.COL_ICON, None)
-
+ if self.model.get(parent, self.model.COL_ICON) != 'dialog-error':
+ self.model.set(parent, self.model.COL_ICON, icon)
+ if num_active == 0:
+ self.model.set(parent, self.model.COL_COLOR, Colors.OK)
# Clear the iters and the pids since when the task goes away the
# pid will no longer be used for messages
del self.tasks_to_iter[(package, task)]
del self.pids_to_task[pid]
+ elif isinstance(event, bb.event.BuildStarted):
+
+ self.model.prepend(None, (None,
+ None,
+ None,
+ "Build Started (%s)" % time.strftime('%m/%d/%Y %H:%M:%S'),
+ None,
+ Colors.OK,
+ 0))
elif isinstance(event, bb.event.BuildCompleted):
failures = int (event._failures)
+ self.model.prepend(None, (None,
+ None,
+ None,
+ "Build Completed (%s)" % time.strftime('%m/%d/%Y %H:%M:%S'),
+ None,
+ Colors.OK,
+ 0))
# Emit the appropriate signal depending on the number of failures
- if (failures > 1):
+ if (failures >= 1):
self.emit ("build-failed")
else:
self.emit ("build-succeeded")
+ elif isinstance(event, bb.event.CacheLoadStarted) and pbar:
+ pbar.set_title("Loading cache")
+ self.progress_total = event.total
+ pbar.update(0, self.progress_total)
+ elif isinstance(event, bb.event.CacheLoadProgress) and pbar:
+ pbar.update(event.current, self.progress_total)
+ elif isinstance(event, bb.event.CacheLoadCompleted) and pbar:
+ pbar.update(self.progress_total, self.progress_total)
+
+ elif isinstance(event, bb.event.ParseStarted) and pbar:
+ pbar.set_title("Processing recipes")
+ self.progress_total = event.total
+ pbar.update(0, self.progress_total)
elif isinstance(event, bb.event.ParseProgress) and pbar:
- x = event.sofar
- y = event.total
- if x == y:
- pbar.hide()
- return
- pbar.update(x, y)
+ pbar.update(event.current, self.progress_total)
+ elif isinstance(event, bb.event.ParseCompleted) and pbar:
+ pbar.hide()
+
+ return
+
+
+def do_pastebin(text):
+ url = 'http://pastebin.com/api_public.php'
+ params = {'paste_code': text, 'paste_format': 'text'}
+
+ req = urllib2.Request(url, urllib.urlencode(params))
+ response = urllib2.urlopen(req)
+ paste_url = response.read()
+
+ return paste_url
+
class RunningBuildTreeView (gtk.TreeView):
+ __gsignals__ = {
+ "button_press_event" : "override"
+ }
def __init__ (self):
gtk.TreeView.__init__ (self)
@@ -181,6 +270,42 @@ class RunningBuildTreeView (gtk.TreeView):
self.append_column (col)
# The message of the build.
- renderer = gtk.CellRendererText ()
- col = gtk.TreeViewColumn ("Message", renderer, text=3)
- self.append_column (col)
+ self.message_renderer = gtk.CellRendererText ()
+ self.message_column = gtk.TreeViewColumn ("Message", self.message_renderer, text=3)
+ self.message_column.add_attribute(self.message_renderer, 'background', 5)
+ self.message_renderer.set_property('editable', 5)
+ self.append_column (self.message_column)
+
+ def do_button_press_event(self, event):
+ gtk.TreeView.do_button_press_event(self, event)
+
+ if event.button == 3:
+ selection = super(RunningBuildTreeView, self).get_selection()
+ (model, iter) = selection.get_selected()
+ if iter is not None:
+ can_paste = model.get(iter, model.COL_LOG)[0]
+ if can_paste == 'pastebin':
+ # build a simple menu with a pastebin option
+ menu = gtk.Menu()
+ menuitem = gtk.MenuItem("Send log to pastebin")
+ menu.append(menuitem)
+ menuitem.connect("activate", self.pastebin_handler, (model, iter))
+ menuitem.show()
+ menu.show()
+ menu.popup(None, None, None, event.button, event.time)
+
+ def pastebin_handler(self, widget, data):
+ """
+ Send the log data to pastebin, then add the new paste url to the
+ clipboard.
+ """
+ (model, iter) = data
+ paste_url = do_pastebin(model.get(iter, model.COL_MESSAGE)[0])
+
+ # @todo Provide visual feedback to the user that it is done and that
+ # it worked.
+ print paste_url
+
+ clipboard = gtk.clipboard_get()
+ clipboard.set_text(paste_url)
+ clipboard.store() \ No newline at end of file
diff --git a/bitbake/lib/bb/ui/depexp.py b/bitbake/lib/bb/ui/depexp.py
index 6fd18d1684..3dbd5e0eca 100644
--- a/bitbake/lib/bb/ui/depexp.py
+++ b/bitbake/lib/bb/ui/depexp.py
@@ -19,8 +19,11 @@
import gobject
import gtk
+import Queue
import threading
import xmlrpclib
+import bb
+import bb.event
from bb.ui.crumbs.progress import ProgressBar
# Package Model
@@ -30,6 +33,7 @@ from bb.ui.crumbs.progress import ProgressBar
(TYPE_DEP, TYPE_RDEP) = (0, 1)
(COL_DEP_TYPE, COL_DEP_PARENT, COL_DEP_PACKAGE) = (0, 1, 2)
+
class PackageDepView(gtk.TreeView):
def __init__(self, model, dep_type, label):
gtk.TreeView.__init__(self)
@@ -50,6 +54,7 @@ class PackageDepView(gtk.TreeView):
self.current = package
self.filter_model.refilter()
+
class PackageReverseDepView(gtk.TreeView):
def __init__(self, model, label):
gtk.TreeView.__init__(self)
@@ -67,6 +72,7 @@ class PackageReverseDepView(gtk.TreeView):
self.current = package
self.filter_model.refilter()
+
class DepExplorer(gtk.Window):
def __init__(self):
gtk.Window.__init__(self)
@@ -76,7 +82,9 @@ class DepExplorer(gtk.Window):
# Create the data models
self.pkg_model = gtk.ListStore(gobject.TYPE_STRING)
+ self.pkg_model.set_sort_column_id(COL_PKG_NAME, gtk.SORT_ASCENDING)
self.depends_model = gtk.ListStore(gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_STRING)
+ self.depends_model.set_sort_column_id(COL_DEP_PACKAGE, gtk.SORT_ASCENDING)
pane = gtk.HPaned()
pane.set_position(250)
@@ -86,9 +94,11 @@ class DepExplorer(gtk.Window):
scrolled = gtk.ScrolledWindow()
scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
scrolled.set_shadow_type(gtk.SHADOW_IN)
+
self.pkg_treeview = gtk.TreeView(self.pkg_model)
self.pkg_treeview.get_selection().connect("changed", self.on_cursor_changed)
- self.pkg_treeview.append_column(gtk.TreeViewColumn("Package", gtk.CellRendererText(), text=COL_PKG_NAME))
+ column = gtk.TreeViewColumn("Package", gtk.CellRendererText(), text=COL_PKG_NAME)
+ self.pkg_treeview.append_column(column)
pane.add1(scrolled)
scrolled.add(self.pkg_treeview)
@@ -154,7 +164,6 @@ class DepExplorer(gtk.Window):
def parse(depgraph, pkg_model, depends_model):
-
for package in depgraph["pn"]:
pkg_model.set(pkg_model.append(), COL_PKG_NAME, package)
@@ -172,6 +181,7 @@ def parse(depgraph, pkg_model, depends_model):
COL_DEP_PARENT, package,
COL_DEP_PACKAGE, rdepend)
+
class gtkthread(threading.Thread):
quit = threading.Event()
def __init__(self, shutdown):
@@ -185,8 +195,8 @@ class gtkthread(threading.Thread):
gtk.main()
gtkthread.quit.set()
-def init(server, eventHandler):
+def main(server, eventHandler):
try:
cmdline = server.runCommand(["getCmdLineAction"])
if not cmdline or cmdline[0] != "generateDotGraph":
@@ -208,44 +218,81 @@ def init(server, eventHandler):
gtk.gdk.threads_enter()
dep = DepExplorer()
pbar = ProgressBar(dep)
+ pbar.connect("delete-event", gtk.main_quit)
gtk.gdk.threads_leave()
+ progress_total = 0
while True:
try:
event = eventHandler.waitEvent(0.25)
if gtkthread.quit.isSet():
+ server.runCommand(["stateStop"])
break
if event is None:
continue
+
+ if isinstance(event, bb.event.CacheLoadStarted):
+ progress_total = event.total
+ gtk.gdk.threads_enter()
+ pbar.set_title("Loading Cache")
+ pbar.update(0, progress_total)
+ gtk.gdk.threads_leave()
+
+ if isinstance(event, bb.event.CacheLoadProgress):
+ x = event.current
+ gtk.gdk.threads_enter()
+ pbar.update(x, progress_total)
+ gtk.gdk.threads_leave()
+ continue
+
+ if isinstance(event, bb.event.CacheLoadCompleted):
+ gtk.gdk.threads_enter()
+ pbar.update(progress_total, progress_total)
+ gtk.gdk.threads_leave()
+ continue
+
+ if isinstance(event, bb.event.ParseStarted):
+ progress_total = event.total
+ gtk.gdk.threads_enter()
+ pbar.set_title("Processing recipes")
+ pbar.update(0, progress_total)
+ gtk.gdk.threads_leave()
+
if isinstance(event, bb.event.ParseProgress):
- x = event.sofar
- y = event.total
- if x == y:
- print(("\nParsing finished. %d cached, %d parsed, %d skipped, %d masked, %d errors."
- % ( event.cached, event.parsed, event.skipped, event.masked, event.errors)))
- pbar.hide()
- return
+ x = event.current
gtk.gdk.threads_enter()
- pbar.update(x, y)
+ pbar.update(x, progress_total)
gtk.gdk.threads_leave()
continue
+ if isinstance(event, bb.event.ParseCompleted):
+ pbar.hide()
+ continue
+
if isinstance(event, bb.event.DepTreeGenerated):
gtk.gdk.threads_enter()
parse(event._depgraph, dep.pkg_model, dep.depends_model)
gtk.gdk.threads_leave()
- if isinstance(event, bb.command.CookerCommandCompleted):
+ if isinstance(event, bb.command.CommandCompleted):
continue
- if isinstance(event, bb.command.CookerCommandFailed):
+
+ if isinstance(event, bb.command.CommandFailed):
print("Command execution failed: %s" % event.error)
- break
+ return event.exitcode
+
+ if isinstance(event, bb.command.CommandExit):
+ return event.exitcode
+
if isinstance(event, bb.cooker.CookerExit):
break
continue
-
+ except EnvironmentError as ioerror:
+ # ignore interrupted io
+ if ioerror.args[0] == 4:
+ pass
except KeyboardInterrupt:
if shutdown == 2:
print("\nThird Keyboard Interrupt, exit.\n")
diff --git a/bitbake/lib/bb/ui/goggle.py b/bitbake/lib/bb/ui/goggle.py
index 858ca14c45..ec5a38dd4d 100644
--- a/bitbake/lib/bb/ui/goggle.py
+++ b/bitbake/lib/bb/ui/goggle.py
@@ -24,6 +24,9 @@ import xmlrpclib
from bb.ui.crumbs.runningbuild import RunningBuildTreeView, RunningBuild
from bb.ui.crumbs.progress import ProgressBar
+import Queue
+
+
def event_handle_idle_func (eventHandler, build, pbar):
# Consume as many messages as we can in the time available to us
@@ -37,6 +40,16 @@ def event_handle_idle_func (eventHandler, build, pbar):
def scroll_tv_cb (model, path, iter, view):
view.scroll_to_cell (path)
+
+# @todo hook these into the GUI so the user has feedback...
+def running_build_failed_cb (running_build):
+ pass
+
+
+def running_build_succeeded_cb (running_build):
+ pass
+
+
class MainWindow (gtk.Window):
def __init__ (self):
gtk.Window.__init__ (self, gtk.WINDOW_TOPLEVEL)
@@ -49,21 +62,25 @@ class MainWindow (gtk.Window):
self.set_default_size(640, 480)
scrolled_window.add (self.cur_build_tv)
-def init (server, eventHandler):
+
+def main (server, eventHandler):
gobject.threads_init()
gtk.gdk.threads_init()
window = MainWindow ()
window.show_all ()
pbar = ProgressBar(window)
+ pbar.connect("delete-event", gtk.main_quit)
# Create the object for the current build
running_build = RunningBuild ()
window.cur_build_tv.set_model (running_build.model)
running_build.model.connect("row-inserted", scroll_tv_cb, window.cur_build_tv)
+ running_build.connect ("build-succeeded", running_build_succeeded_cb)
+ running_build.connect ("build-failed", running_build_failed_cb)
+
try:
cmdline = server.runCommand(["getCmdLineAction"])
- print(cmdline)
if not cmdline:
return 1
ret = server.runCommand(cmdline)
@@ -76,10 +93,18 @@ def init (server, eventHandler):
# Use a timeout function for probing the event queue to find out if we
# have a message waiting for us.
- gobject.timeout_add (200,
+ gobject.timeout_add (100,
event_handle_idle_func,
eventHandler,
running_build,
pbar)
- gtk.main()
+ try:
+ gtk.main()
+ except EnvironmentError as ioerror:
+ # ignore interrupted io
+ if ioerror.args[0] == 4:
+ pass
+ finally:
+ server.runCommand(["stateStop"])
+
diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py
index 858a00b568..042dbe902c 100644
--- a/bitbake/lib/bb/ui/knotty.py
+++ b/bitbake/lib/bb/ui/knotty.py
@@ -22,15 +22,49 @@ from __future__ import division
import os
import sys
-import itertools
import xmlrpclib
-from bb import ui
+import logging
+import progressbar
+import bb.msg
from bb.ui import uihelper
+logger = logging.getLogger("BitBake")
+interactive = sys.stdout.isatty()
-parsespin = itertools.cycle( r'|/-\\' )
+class BBProgress(progressbar.ProgressBar):
+ def __init__(self, msg, maxval):
+ self.msg = msg
+ widgets = [progressbar.Percentage(), ' ', progressbar.Bar(), ' ',
+ progressbar.ETA()]
-def init(server, eventHandler):
+ progressbar.ProgressBar.__init__(self, maxval, [self.msg + ": "] + widgets)
+
+class NonInteractiveProgress(object):
+ fobj = sys.stdout
+
+ def __init__(self, msg, maxval):
+ self.msg = msg
+ self.maxval = maxval
+
+ def start(self):
+ self.fobj.write("%s..." % self.msg)
+ self.fobj.flush()
+ return self
+
+ def update(self, value):
+ pass
+
+ def finish(self):
+ self.fobj.write("done.\n")
+ self.fobj.flush()
+
+def new_progress(msg, maxval):
+ if interactive:
+ return BBProgress(msg, maxval)
+ else:
+ return NonInteractiveProgress(msg, maxval)
+
+def main(server, eventHandler):
# Get values of variables which control our output
includelogs = server.runCommand(["getVariable", "BBINCLUDELOGS"])
@@ -38,9 +72,13 @@ def init(server, eventHandler):
helper = uihelper.BBUIHelper()
+ console = logging.StreamHandler(sys.stdout)
+ format = bb.msg.BBLogFormatter("%(levelname)s: %(message)s")
+ console.setFormatter(format)
+ logger.addHandler(console)
+
try:
cmdline = server.runCommand(["getCmdLineAction"])
- #print cmdline
if not cmdline:
return 1
ret = server.runCommand(cmdline)
@@ -51,6 +89,9 @@ def init(server, eventHandler):
print("XMLRPC Fault getting commandline:\n %s" % x)
return 1
+
+ parseprogress = None
+ cacheprogress = None
shutdown = 0
return_value = 0
while True:
@@ -58,7 +99,6 @@ def init(server, eventHandler):
event = eventHandler.waitEvent(0.25)
if event is None:
continue
- #print event
helper.eventHandler(event)
if isinstance(event, bb.runqueue.runQueueExitWait):
if not shutdown:
@@ -67,31 +107,21 @@ def init(server, eventHandler):
activetasks, failedtasks = helper.getTasks()
if activetasks:
print("Waiting for %s active tasks to finish:" % len(activetasks))
- tasknum = 1
- for task in activetasks:
+ for tasknum, task in enumerate(activetasks):
print("%s: %s (pid %s)" % (tasknum, activetasks[task]["title"], task))
- tasknum = tasknum + 1
- if isinstance(event, bb.msg.MsgPlain):
- print(event._message)
- continue
- if isinstance(event, bb.msg.MsgDebug):
- print('DEBUG: ' + event._message)
- continue
- if isinstance(event, bb.msg.MsgNote):
- print('NOTE: ' + event._message)
- continue
- if isinstance(event, bb.msg.MsgWarn):
- print('WARNING: ' + event._message)
- continue
- if isinstance(event, bb.msg.MsgError):
- return_value = 1
- print('ERROR: ' + event._message)
- continue
- if isinstance(event, bb.msg.MsgFatal):
- return_value = 1
- print('FATAL: ' + event._message)
+ if isinstance(event, logging.LogRecord):
+ if event.levelno >= format.ERROR:
+ return_value = 1
+ # For "normal" logging conditions, don't show note logs from tasks
+ # but do show them if the user has changed the default log level to
+ # include verbose/debug messages
+ if logger.getEffectiveLevel() > format.VERBOSE:
+ if event.taskpid != 0 and event.levelno <= format.NOTE:
+ continue
+ logger.handle(event)
continue
+
if isinstance(event, bb.build.TaskFailed):
return_value = 1
logfile = event.logfile
@@ -117,42 +147,47 @@ def init(server, eventHandler):
for line in lines:
print(line)
if isinstance(event, bb.build.TaskBase):
- print("NOTE: %s" % event._message)
+ logger.info(event._message)
+ continue
+ if isinstance(event, bb.event.ParseStarted):
+ parseprogress = new_progress("Parsing recipes", event.total).start()
continue
if isinstance(event, bb.event.ParseProgress):
- x = event.sofar
- y = event.total
- if os.isatty(sys.stdout.fileno()):
- sys.stdout.write("\rNOTE: Handling BitBake files: %s (%04d/%04d) [%2d %%]" % ( next(parsespin), x, y, x*100//y ) )
- sys.stdout.flush()
- else:
- if x == 1:
- sys.stdout.write("Parsing .bb files, please wait...")
- sys.stdout.flush()
- if x == y:
- sys.stdout.write("done.")
- sys.stdout.flush()
- if x == y:
- print(("\nParsing of %d .bb files complete (%d cached, %d parsed). %d targets, %d skipped, %d masked, %d errors."
- % ( event.total, event.cached, event.parsed, event.virtuals, event.skipped, event.masked, event.errors)))
+ parseprogress.update(event.current)
+ continue
+ if isinstance(event, bb.event.ParseCompleted):
+ parseprogress.finish()
+ print(("Parsing of %d .bb files complete (%d cached, %d parsed). %d targets, %d skipped, %d masked, %d errors."
+ % ( event.total, event.cached, event.parsed, event.virtuals, event.skipped, event.masked, event.errors)))
+ continue
+
+ if isinstance(event, bb.event.CacheLoadStarted):
+ cacheprogress = new_progress("Loading cache", event.total).start()
+ continue
+ if isinstance(event, bb.event.CacheLoadProgress):
+ cacheprogress.update(event.current)
+ continue
+ if isinstance(event, bb.event.CacheLoadCompleted):
+ cacheprogress.finish()
+ print("Loaded %d entries from dependency cache." % event.num_entries)
continue
- if isinstance(event, bb.command.CookerCommandCompleted):
+ if isinstance(event, bb.command.CommandCompleted):
break
- if isinstance(event, bb.command.CookerCommandSetExitCode):
+ if isinstance(event, bb.command.CommandFailed):
return_value = event.exitcode
- continue
- if isinstance(event, bb.command.CookerCommandFailed):
- return_value = 1
- print("Command execution failed: %s" % event.error)
+ logger.error("Command execution failed: %s", event.error)
break
+ if isinstance(event, bb.command.CommandExit):
+ return_value = event.exitcode
+ continue
if isinstance(event, bb.cooker.CookerExit):
break
if isinstance(event, bb.event.MultipleProviders):
- print("NOTE: multiple providers are available for %s%s (%s)" % (event._is_runtime and "runtime " or "",
- event._item,
- ", ".join(event._candidates)))
- print("NOTE: consider defining a PREFERRED_PROVIDER entry to match %s" % event._item)
+ logger.info("multiple providers are available for %s%s (%s)", event._is_runtime and "runtime " or "",
+ event._item,
+ ", ".join(event._candidates))
+ logger.info("consider defining a PREFERRED_PROVIDER entry to match %s", event._item)
continue
if isinstance(event, bb.event.NoProvider):
if event._runtime:
@@ -161,9 +196,26 @@ def init(server, eventHandler):
r = ""
if event._dependees:
- print("ERROR: Nothing %sPROVIDES '%s' (but %s %sDEPENDS on or otherwise requires it)" % (r, event._item, ", ".join(event._dependees), r))
+ logger.error("Nothing %sPROVIDES '%s' (but %s %sDEPENDS on or otherwise requires it)", r, event._item, ", ".join(event._dependees), r)
+ else:
+ logger.error("Nothing %sPROVIDES '%s'", r, event._item)
+ continue
+
+ if isinstance(event, bb.runqueue.runQueueTaskStarted):
+ if event.noexec:
+ tasktype = 'noexec task'
else:
- print("ERROR: Nothing %sPROVIDES '%s'" % (r, event._item))
+ tasktype = 'task'
+ logger.info("Running %s %s of %s (ID: %s, %s)",
+ tasktype,
+ event.stats.completed + event.stats.active +
+ event.stats.failed + 1,
+ event.stats.total, event.taskid, event.taskstring)
+ continue
+
+ if isinstance(event, bb.runqueue.runQueueTaskFailed):
+ logger.error("Task %s (%s) failed with exit code '%s'",
+ event.taskid, event.taskstring, event.exitcode)
continue
# ignore
@@ -175,8 +227,12 @@ def init(server, eventHandler):
bb.runqueue.runQueueExitWait)):
continue
- print("Unknown Event: %s" % event)
+ logger.error("Unknown event: %s", event)
+ except EnvironmentError as ioerror:
+ # ignore interrupted io
+ if ioerror.args[0] == 4:
+ pass
except KeyboardInterrupt:
if shutdown == 2:
print("\nThird Keyboard Interrupt, exit.\n")
diff --git a/bitbake/lib/bb/ui/ncurses.py b/bitbake/lib/bb/ui/ncurses.py
index 3fed4c58a8..469f1b7309 100644
--- a/bitbake/lib/bb/ui/ncurses.py
+++ b/bitbake/lib/bb/ui/ncurses.py
@@ -44,8 +44,9 @@
"""
-from __future__ import division
+from __future__ import division
+import logging
import os, sys, curses, itertools, time
import bb
import xmlrpclib
@@ -246,29 +247,35 @@ class NCursesUI:
event = eventHandler.waitEvent(0.25)
if not event:
continue
+
helper.eventHandler(event)
- #mw.appendText("%s\n" % event[0])
if isinstance(event, bb.build.TaskBase):
mw.appendText("NOTE: %s\n" % event._message)
- if isinstance(event, bb.msg.MsgDebug):
- mw.appendText('DEBUG: ' + event._message + '\n')
- if isinstance(event, bb.msg.MsgNote):
- mw.appendText('NOTE: ' + event._message + '\n')
- if isinstance(event, bb.msg.MsgWarn):
- mw.appendText('WARNING: ' + event._message + '\n')
- if isinstance(event, bb.msg.MsgError):
- mw.appendText('ERROR: ' + event._message + '\n')
- if isinstance(event, bb.msg.MsgFatal):
- mw.appendText('FATAL: ' + event._message + '\n')
+ if isinstance(event, logging.LogRecord):
+ mw.appendText(logging.getLevelName(event.levelno) + ': ' + event.getMessage() + '\n')
+
+ if isinstance(event, bb.event.CacheLoadStarted):
+ self.parse_total = event.total
+ if isinstance(event, bb.event.CacheLoadProgress):
+ x = event.current
+ y = self.parse_total
+ mw.setStatus("Loading Cache: %s [%2d %%]" % ( next(parsespin), x*100/y ) )
+ if isinstance(event, bb.event.CacheLoadCompleted):
+ mw.setStatus("Idle")
+ mw.appendText("Loaded %d entries from dependency cache.\n"
+ % ( event.num_entries))
+
+ if isinstance(event, bb.event.ParseStarted):
+ self.parse_total = event.total
if isinstance(event, bb.event.ParseProgress):
- x = event.sofar
- y = event.total
- if x == y:
- mw.setStatus("Idle")
- mw.appendText("Parsing finished. %d cached, %d parsed, %d skipped, %d masked."
+ x = event.current
+ y = self.parse_total
+ mw.setStatus("Parsing Recipes: %s [%2d %%]" % ( next(parsespin), x*100/y ) )
+ if isinstance(event, bb.event.ParseCompleted):
+ mw.setStatus("Idle")
+ mw.appendText("Parsing finished. %d cached, %d parsed, %d skipped, %d masked.\n"
% ( event.cached, event.parsed, event.skipped, event.masked ))
- else:
- mw.setStatus("Parsing: %s (%04d/%04d) [%2d %%]" % ( next(parsespin), x, y, x*100//y ) )
+
# if isinstance(event, bb.build.TaskFailed):
# if event.logfile:
# if data.getVar("BBINCLUDELOGS", d):
@@ -288,12 +295,16 @@ class NCursesUI:
# else:
# bb.msg.error(bb.msg.domain.Build, "see log in %s" % logfile)
- if isinstance(event, bb.command.CookerCommandCompleted):
- exitflag = True
- if isinstance(event, bb.command.CookerCommandFailed):
+ if isinstance(event, bb.command.CommandCompleted):
+ # stop so the user can see the result of the build, but
+ # also allow them to now exit with a single ^C
+ shutdown = 2
+ if isinstance(event, bb.command.CommandFailed):
mw.appendText("Command execution failed: %s" % event.error)
time.sleep(2)
exitflag = True
+ if isinstance(event, bb.command.CommandExit):
+ exitflag = True
if isinstance(event, bb.cooker.CookerExit):
exitflag = True
@@ -304,13 +315,18 @@ class NCursesUI:
if activetasks:
taw.appendText("Active Tasks:\n")
for task in activetasks.itervalues():
- taw.appendText(task["title"])
+ taw.appendText(task["title"] + '\n')
if failedtasks:
taw.appendText("Failed Tasks:\n")
for task in failedtasks:
- taw.appendText(task["title"])
+ taw.appendText(task["title"] + '\n')
curses.doupdate()
+ except EnvironmentError as ioerror:
+ # ignore interrupted io
+ if ioerror.args[0] == 4:
+ pass
+
except KeyboardInterrupt:
if shutdown == 2:
mw.appendText("Third Keyboard Interrupt, exit.\n")
@@ -324,7 +340,7 @@ class NCursesUI:
shutdown = shutdown + 1
pass
-def init(server, eventHandler):
+def main(server, eventHandler):
if not os.isatty(sys.stdout.fileno()):
print("FATAL: Unable to run 'ncurses' UI without a TTY.")
return
diff --git a/bitbake/lib/bb/ui/puccho.py b/bitbake/lib/bb/ui/puccho.py
index a627fc803f..3ce4590c16 100644
--- a/bitbake/lib/bb/ui/puccho.py
+++ b/bitbake/lib/bb/ui/puccho.py
@@ -390,7 +390,7 @@ def running_build_failed_cb (running_build, manager):
print("build failed")
manager.notify_build_failed ()
-def init (server, eventHandler):
+def main (server, eventHandler):
# Initialise threading...
gobject.threads_init()
gtk.gdk.threads_init()
diff --git a/bitbake/lib/bb/ui/uievent.py b/bitbake/lib/bb/ui/uievent.py
index f1e4d791ee..2fef4e4659 100644
--- a/bitbake/lib/bb/ui/uievent.py
+++ b/bitbake/lib/bb/ui/uievent.py
@@ -37,8 +37,8 @@ class BBUIEventQueue:
self.BBServer = BBServer
self.t = threading.Thread()
- self.t.setDaemon(True)
- self.t.run = self.startCallbackHandler
+ self.t.setDaemon(True)
+ self.t.run = self.startCallbackHandler
self.t.start()
def getEvent(self):
@@ -63,17 +63,20 @@ class BBUIEventQueue:
def queue_event(self, event):
self.eventQueueLock.acquire()
- self.eventQueue.append(pickle.loads(event))
+ self.eventQueue.append(event)
self.eventQueueNotify.set()
self.eventQueueLock.release()
+ def send_event(self, event):
+ self.queue_event(pickle.loads(event))
+
def startCallbackHandler(self):
server = UIXMLRPCServer()
- self.host, self.port = server.socket.getsockname()
+ self.host, self.port = server.socket.getsockname()
server.register_function( self.system_quit, "event.quit" )
- server.register_function( self.queue_event, "event.send" )
+ server.register_function( self.send_event, "event.send" )
server.socket.settimeout(1)
self.EventHandle = self.BBServer.registerEventHandler(self.host, self.port)
@@ -83,7 +86,7 @@ class BBUIEventQueue:
server.handle_request()
server.server_close()
- def system_quit( self ):
+ def system_quit( self ):
"""
Shut down the callback thread
"""
@@ -95,11 +98,11 @@ class BBUIEventQueue:
class UIXMLRPCServer (SimpleXMLRPCServer):
- def __init__( self, interface = ("localhost", 0) ):
+ def __init__( self, interface = ("localhost", 0) ):
self.quit = False
- SimpleXMLRPCServer.__init__( self,
- interface,
- requestHandler=SimpleXMLRPCRequestHandler,
+ SimpleXMLRPCServer.__init__( self,
+ interface,
+ requestHandler=SimpleXMLRPCRequestHandler,
logRequests=False, allow_none=True)
def get_request(self):
@@ -121,4 +124,4 @@ class UIXMLRPCServer (SimpleXMLRPCServer):
if request is None:
return
SimpleXMLRPCServer.process_request(self, request, client_address)
-
+
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py
index f468fafc12..6373912d88 100644
--- a/bitbake/lib/bb/utils.py
+++ b/bitbake/lib/bb/utils.py
@@ -21,10 +21,14 @@ BitBake Utility Functions
import re, fcntl, os, string, stat, shutil, time
import sys
-import bb
import errno
+import logging
+import bb
import bb.msg
from commands import getstatusoutput
+from contextlib import contextmanager
+
+logger = logging.getLogger("BitBake.Util")
# Version comparison
separators = ".-"
@@ -90,7 +94,7 @@ def vercmp(ta, tb):
(ea, va, ra) = ta
(eb, vb, rb) = tb
- r = int(ea)-int(eb)
+ r = int(ea or 0) - int(eb or 0)
if (r == 0):
r = vercmp_part(va, vb)
if (r == 0):
@@ -191,10 +195,10 @@ def vercmp_string(val1, val2):
val2 = val2[0].split('.')
# add back decimal point so that .03 does not become "3" !
- for x in range(1, len(val1)):
+ for x in xrange(1, len(val1)):
if val1[x][0] == '0' :
val1[x] = '.' + val1[x]
- for x in range(1, len(val2)):
+ for x in xrange(1, len(val2)):
if val2[x][0] == '0' :
val2[x] = '.' + val2[x]
@@ -211,10 +215,10 @@ def vercmp_string(val1, val2):
val2[-1] += '_' + val2_prepart
# The above code will extend version numbers out so they
# have the same number of digits.
- for x in range(0, len(val1)):
+ for x in xrange(0, len(val1)):
cmp1 = relparse(val1[x])
cmp2 = relparse(val2[x])
- for y in range(0, 3):
+ for y in xrange(0, 3):
myret = cmp1[y] - cmp2[y]
if myret != 0:
__vercmp_cache__[valkey] = myret
@@ -287,17 +291,6 @@ def join_deps(deps):
result.append(dep)
return ", ".join(result)
-def extend_deps(dest, src):
- """
- Extend the results from explode_dep_versions by appending all of the items
- in the second list, avoiding duplicates.
- """
- for dep in src:
- if dep not in dest:
- dest[dep] = src[dep]
- elif dest[dep] != src[dep]:
- dest[dep] = src[dep]
-
def _print_trace(body, line):
"""
Print the Environment of a Text Body
@@ -305,12 +298,11 @@ def _print_trace(body, line):
# print the environment of the method
min_line = max(1, line-4)
max_line = min(line + 4, len(body))
- for i in range(min_line, max_line + 1):
+ for i in xrange(min_line, max_line + 1):
if line == i:
- bb.msg.error(bb.msg.domain.Util, " *** %.4d:%s" % (i, body[i-1]) )
+ logger.error(' *** %.4d:%s', i, body[i-1])
else:
- bb.msg.error(bb.msg.domain.Util, " %.4d:%s" % (i, body[i-1]) )
-
+ logger.error(' %.4d:%s', i, body[i-1])
def better_compile(text, file, realfile, mode = "exec"):
"""
@@ -322,62 +314,65 @@ def better_compile(text, file, realfile, mode = "exec"):
except Exception as e:
# split the text into lines again
body = text.split('\n')
- bb.msg.error(bb.msg.domain.Util, "Error in compiling python function in: %s" % (realfile))
- bb.msg.error(bb.msg.domain.Util, str(e))
+ logger.error("Error in compiling python function in %s", realfile)
+ logger.error(str(e))
if e.lineno:
- bb.msg.error(bb.msg.domain.Util, "The lines leading to this error were:")
- bb.msg.error(bb.msg.domain.Util, "\t%d:%s:'%s'" % (e.lineno, e.__class__.__name__, body[e.lineno-1]))
+ logger.error("The lines leading to this error were:")
+ logger.error("\t%d:%s:'%s'", e.lineno, e.__class__.__name__, body[e.lineno-1])
_print_trace(body, e.lineno)
else:
- bb.msg.error(bb.msg.domain.Util, "The function causing this error was:")
+ logger.error("The function causing this error was:")
for line in body:
- bb.msg.error(bb.msg.domain.Util, line)
+ logger.error(line)
+
raise
-def better_exec(code, context, text, realfile):
+def better_exec(code, context, text, realfile = "<code>"):
"""
Similiar to better_compile, better_exec will
print the lines that are responsible for the
error.
"""
import bb.parse
+ if not hasattr(code, "co_filename"):
+ code = better_compile(code, realfile, realfile)
try:
exec(code, _context, context)
- except:
+ except Exception:
(t, value, tb) = sys.exc_info()
if t in [bb.parse.SkipPackage, bb.build.FuncFailed]:
raise
- # print the Header of the Error Message
- bb.msg.error(bb.msg.domain.Util, "There was an error when executing a python function in: %s" % realfile)
- bb.msg.error(bb.msg.domain.Util, "Exception:%s Message:%s" % (t, value))
+ import traceback
+ exception = traceback.format_exception_only(t, value)
+ logger.error('Error executing a python function in %s:\n%s',
+ realfile, ''.join(exception))
# Strip 'us' from the stack (better_exec call)
tb = tb.tb_next
- import traceback
textarray = text.split('\n')
linefailed = traceback.tb_lineno(tb)
tbextract = traceback.extract_tb(tb)
tbformat = "\n".join(traceback.format_list(tbextract))
- bb.msg.error(bb.msg.domain.Util, "The stack trace of python calls that resulted in thie exception/failure was:")
+ logger.error("The stack trace of python calls that resulted in this exception/failure was:")
for line in tbformat.split('\n'):
- bb.msg.error(bb.msg.domain.Util, line)
+ logger.error(line)
- bb.msg.error(bb.msg.domain.Util, "The code that was being executed was:")
+ logger.error("The code that was being executed was:")
_print_trace(textarray, linefailed)
- bb.msg.error(bb.msg.domain.Util, "(file: '%s', lineno: %s, function: %s)" % (tbextract[0][0], tbextract[0][1], tbextract[0][2]))
+ logger.error("(file: '%s', lineno: %s, function: %s)", tbextract[0][0], tbextract[0][1], tbextract[0][2])
- # See if this is a function we constructed and has calls back into other functions in
+ # See if this is a function we constructed and has calls back into other functions in
# "text". If so, try and improve the context of the error by diving down the trace
level = 0
nexttb = tb.tb_next
while nexttb is not None:
if tbextract[level][0] == tbextract[level+1][0] and tbextract[level+1][2] == tbextract[level][0]:
_print_trace(textarray, tbextract[level+1][1])
- bb.msg.error(bb.msg.domain.Util, "(file: '%s', lineno: %s, function: %s)" % (tbextract[level+1][0], tbextract[level+1][1], tbextract[level+1][2]))
+ logger.error("(file: '%s', lineno: %s, function: %s)", tbextract[level+1][0], tbextract[level+1][1], tbextract[level+1][2])
else:
break
nexttb = tb.tb_next
@@ -391,16 +386,37 @@ def simple_exec(code, context):
def better_eval(source, locals):
return eval(source, _context, locals)
-def lockfile(name):
+@contextmanager
+def fileslocked(files):
+ """Context manager for locking and unlocking file locks."""
+ locks = []
+ if files:
+ for lockfile in files:
+ locks.append(bb.utils.lockfile(lockfile))
+
+ yield
+
+ for lock in locks:
+ bb.utils.unlockfile(lock)
+
+def lockfile(name, shared=False):
"""
Use the file fn as a lock file, return when the lock has been acquired.
Returns a variable to pass to unlockfile().
"""
path = os.path.dirname(name)
if not os.path.isdir(path):
- bb.msg.error(bb.msg.domain.Util, "Error, lockfile path does not exist!: %s" % path)
+ logger.error("Lockfile destination directory '%s' does not exist", path)
+ sys.exit(1)
+
+ if not os.access(path, os.W_OK):
+ logger.error("Error, lockfile path is not writable!: %s" % path)
sys.exit(1)
+ op = fcntl.LOCK_EX
+ if shared:
+ op = fcntl.LOCK_SH
+
while True:
# If we leave the lockfiles lying around there is no problem
# but we should clean up after ourselves. This gives potential
@@ -413,25 +429,31 @@ def lockfile(name):
# lock is the most likely to win it.
try:
- lf = open(name, "a + ")
- fcntl.flock(lf.fileno(), fcntl.LOCK_EX)
- statinfo = os.fstat(lf.fileno())
+ lf = open(name, 'a+')
+ fileno = lf.fileno()
+ fcntl.flock(fileno, op)
+ statinfo = os.fstat(fileno)
if os.path.exists(lf.name):
statinfo2 = os.stat(lf.name)
if statinfo.st_ino == statinfo2.st_ino:
return lf
- # File no longer exists or changed, retry
- lf.close
- except Exception as e:
+ lf.close()
+ except Exception:
continue
def unlockfile(lf):
"""
Unlock a file locked using lockfile()
"""
- os.unlink(lf.name)
+ try:
+ # If we had a shared lock, we need to promote to exclusive before
+ # removing the lockfile. Attempt this, ignore failures.
+ fcntl.flock(lf.fileno(), fcntl.LOCK_EX|fcntl.LOCK_NB)
+ os.unlink(lf.name)
+ except (IOError, OSError):
+ pass
fcntl.flock(lf.fileno(), fcntl.LOCK_UN)
- lf.close
+ lf.close()
def md5_file(filename):
"""
@@ -465,9 +487,9 @@ def sha256_file(filename):
s.update(line)
return s.hexdigest()
-# Variables which are preserved from the original environment *and* exported
-# into our worker context
-def preserved_envvars_export_list():
+def preserved_envvars_exported():
+ """Variables which are taken from the environment and placed in and exported
+ from the metadata"""
return [
'BB_TASKHASH',
'HOME',
@@ -480,9 +502,9 @@ def preserved_envvars_export_list():
'USERNAME',
]
-# Variables which are preserved from the original environment *and* exported
-# into our worker context for interactive tasks (e.g. requiring X)
-def preserved_envvars_export_interactive_list():
+def preserved_envvars_exported_interactive():
+ """Variables which are taken from the environment and placed in and exported
+ from the metadata, for interactive tasks"""
return [
'COLORTERM',
'DBUS_SESSION_BUS_ADDRESS',
@@ -500,8 +522,8 @@ def preserved_envvars_export_interactive_list():
'XDG_SESSION_COOKIE',
]
-# Variables which are preserved from the original environment into the datastore
-def preserved_envvars_list():
+def preserved_envvars():
+ """Variables which are taken from the environment and placed in the metadata"""
v = [
'BBPATH',
'BB_PRESERVE_ENV',
@@ -510,7 +532,7 @@ def preserved_envvars_list():
'LANG',
'_',
]
- return v + preserved_envvars_export_list() + preserved_envvars_export_interactive_list()
+ return v + preserved_envvars_exported() + preserved_envvars_exported_interactive()
def filter_environment(good_vars):
"""
@@ -528,12 +550,12 @@ def filter_environment(good_vars):
del os.environ[key]
if len(removed_vars):
- bb.msg.debug(1, bb.msg.domain.Util, "Removed the following variables from the environment: %s" % (", ".join(removed_vars)))
+ logger.debug(1, "Removed the following variables from the environment: %s", ", ".join(removed_vars))
return removed_vars
-def create_intereactive_env(d):
- for k in preserved_envvars_export_interactive_list():
+def create_interactive_env(d):
+ for k in preserved_envvars_exported_interactive():
os.setenv(k, bb.data.getVar(k, d, True))
def clean_environment():
@@ -545,7 +567,7 @@ def clean_environment():
if 'BB_ENV_WHITELIST' in os.environ:
good_vars = os.environ['BB_ENV_WHITELIST'].split()
else:
- good_vars = preserved_envvars_list()
+ good_vars = preserved_envvars()
if 'BB_ENV_EXTRAWHITE' in os.environ:
good_vars.extend(os.environ['BB_ENV_EXTRAWHITE'].split())
filter_environment(good_vars)
@@ -568,6 +590,20 @@ def build_environment(d):
if export:
os.environ[var] = bb.data.getVar(var, d, True) or ""
+def remove(path, recurse=False):
+ """Equivalent to rm -f or rm -rf"""
+ if not path:
+ return
+ import os, errno, shutil, glob
+ for name in glob.glob(path):
+ try:
+ os.unlink(name)
+ except OSError as exc:
+ if recurse and exc.errno == errno.EISDIR:
+ shutil.rmtree(name)
+ elif exc.errno != errno.ENOENT:
+ raise
+
def prunedir(topdir):
# Delete everything reachable from the directory named in 'topdir'.
# CAUTION: This is dangerous!
@@ -593,15 +629,13 @@ def prune_suffix(var, suffixes, d):
return var.replace(suffix, "")
return var
-def mkdirhier(dir):
+def mkdirhier(directory):
"""Create a directory like 'mkdir -p', but does not complain if
directory already exists like os.makedirs
"""
- bb.msg.debug(3, bb.msg.domain.Util, "mkdirhier(%s)" % dir)
try:
- os.makedirs(dir)
- bb.msg.debug(2, bb.msg.domain.Util, "created " + dir)
+ os.makedirs(directory)
except OSError as e:
if e.errno != errno.EEXIST:
raise e
@@ -787,13 +821,12 @@ def init_logger(logger, verbose, debug, debug_domains):
Set verbosity and debug levels in the logger
"""
- if verbose:
- logger.set_verbose(True)
-
if debug:
- logger.set_debug_level(debug)
+ bb.msg.set_debug_level(debug)
+ elif verbose:
+ bb.msg.set_verbose(True)
else:
- logger.set_debug_level(0)
+ bb.msg.set_debug_level(0)
if debug_domains:
- logger.set_debug_domains(debug_domains)
+ bb.msg.set_debug_domains(debug_domains)
diff --git a/bitbake/lib/progressbar.py b/bitbake/lib/progressbar.py
new file mode 100644
index 0000000000..b668647a36
--- /dev/null
+++ b/bitbake/lib/progressbar.py
@@ -0,0 +1,384 @@
+#!/usr/bin/python
+# -*- coding: iso-8859-1 -*-
+#
+# progressbar - Text progressbar library for python.
+# Copyright (c) 2005 Nilton Volpato
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+"""Text progressbar library for python.
+
+This library provides a text mode progressbar. This is typically used
+to display the progress of a long running operation, providing a
+visual clue that processing is underway.
+
+The ProgressBar class manages the progress, and the format of the line
+is given by a number of widgets. A widget is an object that may
+display diferently depending on the state of the progress. There are
+three types of widget:
+- a string, which always shows itself;
+- a ProgressBarWidget, which may return a diferent value every time
+it's update method is called; and
+- a ProgressBarWidgetHFill, which is like ProgressBarWidget, except it
+expands to fill the remaining width of the line.
+
+The progressbar module is very easy to use, yet very powerful. And
+automatically supports features like auto-resizing when available.
+"""
+
+from __future__ import division
+
+__author__ = "Nilton Volpato"
+__author_email__ = "first-name dot last-name @ gmail.com"
+__date__ = "2006-05-07"
+__version__ = "2.3-dev"
+
+import sys, time, os
+from array import array
+try:
+ from fcntl import ioctl
+ import termios
+except ImportError:
+ pass
+import signal
+try:
+ basestring
+except NameError:
+ basestring = (str,)
+
+class ProgressBarWidget(object):
+ """This is an element of ProgressBar formatting.
+
+ The ProgressBar object will call it's update value when an update
+ is needed. It's size may change between call, but the results will
+ not be good if the size changes drastically and repeatedly.
+ """
+ def update(self, pbar):
+ """Returns the string representing the widget.
+
+ The parameter pbar is a reference to the calling ProgressBar,
+ where one can access attributes of the class for knowing how
+ the update must be made.
+
+ At least this function must be overriden."""
+ pass
+
+class ProgressBarWidgetHFill(object):
+ """This is a variable width element of ProgressBar formatting.
+
+ The ProgressBar object will call it's update value, informing the
+ width this object must the made. This is like TeX \\hfill, it will
+ expand to fill the line. You can use more than one in the same
+ line, and they will all have the same width, and together will
+ fill the line.
+ """
+ def update(self, pbar, width):
+ """Returns the string representing the widget.
+
+ The parameter pbar is a reference to the calling ProgressBar,
+ where one can access attributes of the class for knowing how
+ the update must be made. The parameter width is the total
+ horizontal width the widget must have.
+
+ At least this function must be overriden."""
+ pass
+
+
+class ETA(ProgressBarWidget):
+ "Widget for the Estimated Time of Arrival"
+ def format_time(self, seconds):
+ return time.strftime('%H:%M:%S', time.gmtime(seconds))
+ def update(self, pbar):
+ if pbar.currval == 0:
+ return 'ETA: --:--:--'
+ elif pbar.finished:
+ return 'Time: %s' % self.format_time(pbar.seconds_elapsed)
+ else:
+ elapsed = pbar.seconds_elapsed
+ eta = elapsed * pbar.maxval / pbar.currval - elapsed
+ return 'ETA: %s' % self.format_time(eta)
+
+class FileTransferSpeed(ProgressBarWidget):
+ "Widget for showing the transfer speed (useful for file transfers)."
+ def __init__(self, unit='B'):
+ self.unit = unit
+ self.fmt = '%6.2f %s'
+ self.prefixes = ['', 'K', 'M', 'G', 'T', 'P']
+ def update(self, pbar):
+ if pbar.seconds_elapsed < 2e-6:#== 0:
+ bps = 0.0
+ else:
+ bps = pbar.currval / pbar.seconds_elapsed
+ spd = bps
+ for u in self.prefixes:
+ if spd < 1000:
+ break
+ spd /= 1000
+ return self.fmt % (spd, u + self.unit + '/s')
+
+class RotatingMarker(ProgressBarWidget):
+ "A rotating marker for filling the bar of progress."
+ def __init__(self, markers='|/-\\'):
+ self.markers = markers
+ self.curmark = -1
+ def update(self, pbar):
+ if pbar.finished:
+ return self.markers[0]
+ self.curmark = (self.curmark + 1) % len(self.markers)
+ return self.markers[self.curmark]
+
+class Percentage(ProgressBarWidget):
+ "Just the percentage done."
+ def update(self, pbar):
+ return '%3d%%' % pbar.percentage()
+
+class SimpleProgress(ProgressBarWidget):
+ "Returns what is already done and the total, e.g.: '5 of 47'"
+ def __init__(self, sep=' of '):
+ self.sep = sep
+ def update(self, pbar):
+ return '%d%s%d' % (pbar.currval, self.sep, pbar.maxval)
+
+class Bar(ProgressBarWidgetHFill):
+ "The bar of progress. It will stretch to fill the line."
+ def __init__(self, marker='#', left='|', right='|'):
+ self.marker = marker
+ self.left = left
+ self.right = right
+ def _format_marker(self, pbar):
+ if isinstance(self.marker, basestring):
+ return self.marker
+ else:
+ return self.marker.update(pbar)
+ def update(self, pbar, width):
+ percent = pbar.percentage()
+ cwidth = width - len(self.left) - len(self.right)
+ marked_width = int(percent * cwidth // 100)
+ m = self._format_marker(pbar)
+ bar = (self.left + (m * marked_width).ljust(cwidth) + self.right)
+ return bar
+
+class ReverseBar(Bar):
+ "The reverse bar of progress, or bar of regress. :)"
+ def update(self, pbar, width):
+ percent = pbar.percentage()
+ cwidth = width - len(self.left) - len(self.right)
+ marked_width = int(percent * cwidth // 100)
+ m = self._format_marker(pbar)
+ bar = (self.left + (m*marked_width).rjust(cwidth) + self.right)
+ return bar
+
+default_widgets = [Percentage(), ' ', Bar()]
+class ProgressBar(object):
+ """This is the ProgressBar class, it updates and prints the bar.
+
+ A common way of using it is like:
+ >>> pbar = ProgressBar().start()
+ >>> for i in xrange(100):
+ ... # do something
+ ... pbar.update(i+1)
+ ...
+ >>> pbar.finish()
+
+ You can also use a progressbar as an iterator:
+ >>> progress = ProgressBar()
+ >>> for i in progress(some_iterable):
+ ... # do something
+ ...
+
+ But anything you want to do is possible (well, almost anything).
+ You can supply different widgets of any type in any order. And you
+ can even write your own widgets! There are many widgets already
+ shipped and you should experiment with them.
+
+ The term_width parameter must be an integer or None. In the latter case
+ it will try to guess it, if it fails it will default to 80 columns.
+
+ When implementing a widget update method you may access any
+ attribute or function of the ProgressBar object calling the
+ widget's update method. The most important attributes you would
+ like to access are:
+ - currval: current value of the progress, 0 <= currval <= maxval
+ - maxval: maximum (and final) value of the progress
+ - finished: True if the bar has finished (reached 100%), False o/w
+ - start_time: the time when start() method of ProgressBar was called
+ - seconds_elapsed: seconds elapsed since start_time
+ - percentage(): percentage of the progress [0..100]. This is a method.
+
+ The attributes above are unlikely to change between different versions,
+ the other ones may change or cease to exist without notice, so try to rely
+ only on the ones documented above if you are extending the progress bar.
+ """
+
+ __slots__ = ('currval', 'fd', 'finished', 'last_update_time', 'maxval',
+ 'next_update', 'num_intervals', 'seconds_elapsed',
+ 'signal_set', 'start_time', 'term_width', 'update_interval',
+ 'widgets', '_iterable')
+
+ _DEFAULT_MAXVAL = 100
+
+ def __init__(self, maxval=None, widgets=default_widgets, term_width=None,
+ fd=sys.stderr):
+ self.maxval = maxval
+ self.widgets = widgets
+ self.fd = fd
+ self.signal_set = False
+ if term_width is not None:
+ self.term_width = term_width
+ else:
+ try:
+ self._handle_resize(None, None)
+ signal.signal(signal.SIGWINCH, self._handle_resize)
+ self.signal_set = True
+ except (SystemExit, KeyboardInterrupt):
+ raise
+ except:
+ self.term_width = int(os.environ.get('COLUMNS', 80)) - 1
+
+ self.currval = 0
+ self.finished = False
+ self.start_time = None
+ self.last_update_time = None
+ self.seconds_elapsed = 0
+ self._iterable = None
+
+ def __call__(self, iterable):
+ try:
+ self.maxval = len(iterable)
+ except TypeError:
+ # If the iterable has no length, then rely on the value provided
+ # by the user, otherwise fail.
+ if not (isinstance(self.maxval, (int, long)) and self.maxval > 0):
+ raise RuntimeError('Could not determine maxval from iterable. '
+ 'You must explicitly provide a maxval.')
+ self._iterable = iter(iterable)
+ self.start()
+ return self
+
+ def __iter__(self):
+ return self
+
+ def next(self):
+ try:
+ next = self._iterable.next()
+ self.update(self.currval + 1)
+ return next
+ except StopIteration:
+ self.finish()
+ raise
+
+ def _handle_resize(self, signum, frame):
+ h, w = array('h', ioctl(self.fd, termios.TIOCGWINSZ, '\0' * 8))[:2]
+ self.term_width = w
+
+ def percentage(self):
+ "Returns the percentage of the progress."
+ return self.currval * 100.0 / self.maxval
+
+ def _format_widgets(self):
+ r = []
+ hfill_inds = []
+ num_hfill = 0
+ currwidth = 0
+ for i, w in enumerate(self.widgets):
+ if isinstance(w, ProgressBarWidgetHFill):
+ r.append(w)
+ hfill_inds.append(i)
+ num_hfill += 1
+ elif isinstance(w, basestring):
+ r.append(w)
+ currwidth += len(w)
+ else:
+ weval = w.update(self)
+ currwidth += len(weval)
+ r.append(weval)
+ for iw in hfill_inds:
+ widget_width = int((self.term_width - currwidth) // num_hfill)
+ r[iw] = r[iw].update(self, widget_width)
+ return r
+
+ def _format_line(self):
+ return ''.join(self._format_widgets()).ljust(self.term_width)
+
+ def _next_update(self):
+ return int((int(self.num_intervals *
+ (self.currval / self.maxval)) + 1) *
+ self.update_interval)
+
+ def _need_update(self):
+ """Returns true when the progressbar should print an updated line.
+
+ You can override this method if you want finer grained control over
+ updates.
+
+ The current implementation is optimized to be as fast as possible and
+ as economical as possible in the number of updates. However, depending
+ on your usage you may want to do more updates. For instance, if your
+ progressbar stays in the same percentage for a long time, and you want
+ to update other widgets, like ETA, then you could return True after
+ some time has passed with no updates.
+
+ Ideally you could call self._format_line() and see if it's different
+ from the previous _format_line() call, but calling _format_line() takes
+ around 20 times more time than calling this implementation of
+ _need_update().
+ """
+ return self.currval >= self.next_update
+
+ def update(self, value):
+ "Updates the progress bar to a new value."
+ assert 0 <= value <= self.maxval, '0 <= %d <= %d' % (value, self.maxval)
+ self.currval = value
+ if not self._need_update():
+ return
+ if self.start_time is None:
+ raise RuntimeError('You must call start() before calling update()')
+ now = time.time()
+ self.seconds_elapsed = now - self.start_time
+ self.next_update = self._next_update()
+ self.fd.write(self._format_line() + '\r')
+ self.last_update_time = now
+
+ def start(self):
+ """Starts measuring time, and prints the bar at 0%.
+
+ It returns self so you can use it like this:
+ >>> pbar = ProgressBar().start()
+ >>> for i in xrange(100):
+ ... # do something
+ ... pbar.update(i+1)
+ ...
+ >>> pbar.finish()
+ """
+ if self.maxval is None:
+ self.maxval = self._DEFAULT_MAXVAL
+ assert self.maxval > 0
+
+ self.num_intervals = max(100, self.term_width)
+ self.update_interval = self.maxval / self.num_intervals
+ self.next_update = 0
+
+ self.start_time = self.last_update_time = time.time()
+ self.update(0)
+ return self
+
+ def finish(self):
+ """Used to tell the progress is finished."""
+ self.finished = True
+ self.update(self.maxval)
+ self.fd.write('\n')
+ if self.signal_set:
+ signal.signal(signal.SIGWINCH, signal.SIG_DFL)
diff --git a/bitbake/lib/pysh/pyshyacc.py b/bitbake/lib/pysh/pyshyacc.py
deleted file mode 100644
index 3d9510c0c3..0000000000
--- a/bitbake/lib/pysh/pyshyacc.py
+++ /dev/null
@@ -1,772 +0,0 @@
-# pyshyacc.py - PLY grammar definition for pysh
-#
-# Copyright 2007 Patrick Mezard
-#
-# This software may be used and distributed according to the terms
-# of the GNU General Public License, incorporated herein by reference.
-
-"""PLY grammar file.
-"""
-import sys
-
-import pyshlex
-tokens = pyshlex.tokens
-
-from ply import yacc
-import sherrors
-
-class IORedirect:
- def __init__(self, op, filename, io_number=None):
- self.op = op
- self.filename = filename
- self.io_number = io_number
-
-class HereDocument:
- def __init__(self, op, name, content, io_number=None):
- self.op = op
- self.name = name
- self.content = content
- self.io_number = io_number
-
-def make_io_redirect(p):
- """Make an IORedirect instance from the input 'io_redirect' production."""
- name, io_number, io_target = p
- assert name=='io_redirect'
-
- if io_target[0]=='io_file':
- io_type, io_op, io_file = io_target
- return IORedirect(io_op, io_file, io_number)
- elif io_target[0]=='io_here':
- io_type, io_op, io_name, io_content = io_target
- return HereDocument(io_op, io_name, io_content, io_number)
- else:
- assert False, "Invalid IO redirection token %s" % repr(io_type)
-
-class SimpleCommand:
- """
- assigns contains (name, value) pairs.
- """
- def __init__(self, words, redirs, assigns):
- self.words = list(words)
- self.redirs = list(redirs)
- self.assigns = list(assigns)
-
-class Pipeline:
- def __init__(self, commands, reverse_status=False):
- self.commands = list(commands)
- assert self.commands #Grammar forbids this
- self.reverse_status = reverse_status
-
-class AndOr:
- def __init__(self, op, left, right):
- self.op = str(op)
- self.left = left
- self.right = right
-
-class ForLoop:
- def __init__(self, name, items, cmds):
- self.name = str(name)
- self.items = list(items)
- self.cmds = list(cmds)
-
-class WhileLoop:
- def __init__(self, condition, cmds):
- self.condition = list(condition)
- self.cmds = list(cmds)
-
-class UntilLoop:
- def __init__(self, condition, cmds):
- self.condition = list(condition)
- self.cmds = list(cmds)
-
-class FunDef:
- def __init__(self, name, body):
- self.name = str(name)
- self.body = body
-
-class BraceGroup:
- def __init__(self, cmds):
- self.cmds = list(cmds)
-
-class IfCond:
- def __init__(self, cond, if_cmds, else_cmds):
- self.cond = list(cond)
- self.if_cmds = if_cmds
- self.else_cmds = else_cmds
-
-class Case:
- def __init__(self, name, items):
- self.name = name
- self.items = items
-
-class SubShell:
- def __init__(self, cmds):
- self.cmds = cmds
-
-class RedirectList:
- def __init__(self, cmd, redirs):
- self.cmd = cmd
- self.redirs = list(redirs)
-
-def get_production(productions, ptype):
- """productions must be a list of production tuples like (name, obj) where
- name is the production string identifier.
- Return the first production named 'ptype'. Raise KeyError if None can be
- found.
- """
- for production in productions:
- if production is not None and production[0]==ptype:
- return production
- raise KeyError(ptype)
-
-#-------------------------------------------------------------------------------
-# PLY grammar definition
-#-------------------------------------------------------------------------------
-
-def p_multiple_commands(p):
- """multiple_commands : newline_sequence
- | complete_command
- | multiple_commands complete_command"""
- if len(p)==2:
- if p[1] is not None:
- p[0] = [p[1]]
- else:
- p[0] = []
- else:
- p[0] = p[1] + [p[2]]
-
-def p_complete_command(p):
- """complete_command : list separator
- | list"""
- if len(p)==3 and p[2] and p[2][1] == '&':
- p[0] = ('async', p[1])
- else:
- p[0] = p[1]
-
-def p_list(p):
- """list : list separator_op and_or
- | and_or"""
- if len(p)==2:
- p[0] = [p[1]]
- else:
- #if p[2]!=';':
- # raise NotImplementedError('AND-OR list asynchronous execution is not implemented')
- p[0] = p[1] + [p[3]]
-
-def p_and_or(p):
- """and_or : pipeline
- | and_or AND_IF linebreak pipeline
- | and_or OR_IF linebreak pipeline"""
- if len(p)==2:
- p[0] = p[1]
- else:
- p[0] = ('and_or', AndOr(p[2], p[1], p[4]))
-
-def p_maybe_bang_word(p):
- """maybe_bang_word : Bang"""
- p[0] = ('maybe_bang_word', p[1])
-
-def p_pipeline(p):
- """pipeline : pipe_sequence
- | bang_word pipe_sequence"""
- if len(p)==3:
- p[0] = ('pipeline', Pipeline(p[2][1:], True))
- else:
- p[0] = ('pipeline', Pipeline(p[1][1:]))
-
-def p_pipe_sequence(p):
- """pipe_sequence : command
- | pipe_sequence PIPE linebreak command"""
- if len(p)==2:
- p[0] = ['pipe_sequence', p[1]]
- else:
- p[0] = p[1] + [p[4]]
-
-def p_command(p):
- """command : simple_command
- | compound_command
- | compound_command redirect_list
- | function_definition"""
-
- if p[1][0] in ( 'simple_command',
- 'for_clause',
- 'while_clause',
- 'until_clause',
- 'case_clause',
- 'if_clause',
- 'function_definition',
- 'subshell',
- 'brace_group',):
- if len(p) == 2:
- p[0] = p[1]
- else:
- p[0] = ('redirect_list', RedirectList(p[1], p[2][1:]))
- else:
- raise NotImplementedError('%s command is not implemented' % repr(p[1][0]))
-
-def p_compound_command(p):
- """compound_command : brace_group
- | subshell
- | for_clause
- | case_clause
- | if_clause
- | while_clause
- | until_clause"""
- p[0] = p[1]
-
-def p_subshell(p):
- """subshell : LPARENS compound_list RPARENS"""
- p[0] = ('subshell', SubShell(p[2][1:]))
-
-def p_compound_list(p):
- """compound_list : term
- | newline_list term
- | term separator
- | newline_list term separator"""
- productions = p[1:]
- try:
- sep = get_production(productions, 'separator')
- if sep[1]!=';':
- raise NotImplementedError()
- except KeyError:
- pass
- term = get_production(productions, 'term')
- p[0] = ['compound_list'] + term[1:]
-
-def p_term(p):
- """term : term separator and_or
- | and_or"""
- if len(p)==2:
- p[0] = ['term', p[1]]
- else:
- if p[2] is not None and p[2][1] == '&':
- p[0] = ['term', ('async', p[1][1:])] + [p[3]]
- else:
- p[0] = p[1] + [p[3]]
-
-def p_maybe_for_word(p):
- # Rearrange 'For' priority wrt TOKEN. See p_for_word
- """maybe_for_word : For"""
- p[0] = ('maybe_for_word', p[1])
-
-def p_for_clause(p):
- """for_clause : for_word name linebreak do_group
- | for_word name linebreak in sequential_sep do_group
- | for_word name linebreak in wordlist sequential_sep do_group"""
- productions = p[1:]
- do_group = get_production(productions, 'do_group')
- try:
- items = get_production(productions, 'in')[1:]
- except KeyError:
- raise NotImplementedError('"in" omission is not implemented')
-
- try:
- items = get_production(productions, 'wordlist')[1:]
- except KeyError:
- items = []
-
- name = p[2]
- p[0] = ('for_clause', ForLoop(name, items, do_group[1:]))
-
-def p_name(p):
- """name : token""" #Was NAME instead of token
- p[0] = p[1]
-
-def p_in(p):
- """in : In"""
- p[0] = ('in', p[1])
-
-def p_wordlist(p):
- """wordlist : wordlist token
- | token"""
- if len(p)==2:
- p[0] = ['wordlist', ('TOKEN', p[1])]
- else:
- p[0] = p[1] + [('TOKEN', p[2])]
-
-def p_case_clause(p):
- """case_clause : Case token linebreak in linebreak case_list Esac
- | Case token linebreak in linebreak case_list_ns Esac
- | Case token linebreak in linebreak Esac"""
- if len(p) < 8:
- items = []
- else:
- items = p[6][1:]
- name = p[2]
- p[0] = ('case_clause', Case(name, [c[1] for c in items]))
-
-def p_case_list_ns(p):
- """case_list_ns : case_list case_item_ns
- | case_item_ns"""
- p_case_list(p)
-
-def p_case_list(p):
- """case_list : case_list case_item
- | case_item"""
- if len(p)==2:
- p[0] = ['case_list', p[1]]
- else:
- p[0] = p[1] + [p[2]]
-
-def p_case_item_ns(p):
- """case_item_ns : pattern RPARENS linebreak
- | pattern RPARENS compound_list linebreak
- | LPARENS pattern RPARENS linebreak
- | LPARENS pattern RPARENS compound_list linebreak"""
- p_case_item(p)
-
-def p_case_item(p):
- """case_item : pattern RPARENS linebreak DSEMI linebreak
- | pattern RPARENS compound_list DSEMI linebreak
- | LPARENS pattern RPARENS linebreak DSEMI linebreak
- | LPARENS pattern RPARENS compound_list DSEMI linebreak"""
- if len(p) < 7:
- name = p[1][1:]
- else:
- name = p[2][1:]
-
- try:
- cmds = get_production(p[1:], "compound_list")[1:]
- except KeyError:
- cmds = []
-
- p[0] = ('case_item', (name, cmds))
-
-def p_pattern(p):
- """pattern : token
- | pattern PIPE token"""
- if len(p)==2:
- p[0] = ['pattern', ('TOKEN', p[1])]
- else:
- p[0] = p[1] + [('TOKEN', p[2])]
-
-def p_maybe_if_word(p):
- # Rearrange 'If' priority wrt TOKEN. See p_if_word
- """maybe_if_word : If"""
- p[0] = ('maybe_if_word', p[1])
-
-def p_maybe_then_word(p):
- # Rearrange 'Then' priority wrt TOKEN. See p_then_word
- """maybe_then_word : Then"""
- p[0] = ('maybe_then_word', p[1])
-
-def p_if_clause(p):
- """if_clause : if_word compound_list then_word compound_list else_part Fi
- | if_word compound_list then_word compound_list Fi"""
- else_part = []
- if len(p)==7:
- else_part = p[5]
- p[0] = ('if_clause', IfCond(p[2][1:], p[4][1:], else_part))
-
-def p_else_part(p):
- """else_part : Elif compound_list then_word compound_list else_part
- | Elif compound_list then_word compound_list
- | Else compound_list"""
- if len(p)==3:
- p[0] = p[2][1:]
- else:
- else_part = []
- if len(p)==6:
- else_part = p[5]
- p[0] = ('elif', IfCond(p[2][1:], p[4][1:], else_part))
-
-def p_while_clause(p):
- """while_clause : While compound_list do_group"""
- p[0] = ('while_clause', WhileLoop(p[2][1:], p[3][1:]))
-
-def p_maybe_until_word(p):
- # Rearrange 'Until' priority wrt TOKEN. See p_until_word
- """maybe_until_word : Until"""
- p[0] = ('maybe_until_word', p[1])
-
-def p_until_clause(p):
- """until_clause : until_word compound_list do_group"""
- p[0] = ('until_clause', UntilLoop(p[2][1:], p[3][1:]))
-
-def p_function_definition(p):
- """function_definition : fname LPARENS RPARENS linebreak function_body"""
- p[0] = ('function_definition', FunDef(p[1], p[5]))
-
-def p_function_body(p):
- """function_body : compound_command
- | compound_command redirect_list"""
- if len(p)!=2:
- raise NotImplementedError('functions redirections lists are not implemented')
- p[0] = p[1]
-
-def p_fname(p):
- """fname : TOKEN""" #Was NAME instead of token
- p[0] = p[1]
-
-def p_brace_group(p):
- """brace_group : Lbrace compound_list Rbrace"""
- p[0] = ('brace_group', BraceGroup(p[2][1:]))
-
-def p_maybe_done_word(p):
- #See p_assignment_word for details.
- """maybe_done_word : Done"""
- p[0] = ('maybe_done_word', p[1])
-
-def p_maybe_do_word(p):
- """maybe_do_word : Do"""
- p[0] = ('maybe_do_word', p[1])
-
-def p_do_group(p):
- """do_group : do_word compound_list done_word"""
- #Do group contains a list of AndOr
- p[0] = ['do_group'] + p[2][1:]
-
-def p_simple_command(p):
- """simple_command : cmd_prefix cmd_word cmd_suffix
- | cmd_prefix cmd_word
- | cmd_prefix
- | cmd_name cmd_suffix
- | cmd_name"""
- words, redirs, assigns = [], [], []
- for e in p[1:]:
- name = e[0]
- if name in ('cmd_prefix', 'cmd_suffix'):
- for sube in e[1:]:
- subname = sube[0]
- if subname=='io_redirect':
- redirs.append(make_io_redirect(sube))
- elif subname=='ASSIGNMENT_WORD':
- assigns.append(sube)
- else:
- words.append(sube)
- elif name in ('cmd_word', 'cmd_name'):
- words.append(e)
-
- cmd = SimpleCommand(words, redirs, assigns)
- p[0] = ('simple_command', cmd)
-
-def p_cmd_name(p):
- """cmd_name : TOKEN"""
- p[0] = ('cmd_name', p[1])
-
-def p_cmd_word(p):
- """cmd_word : token"""
- p[0] = ('cmd_word', p[1])
-
-def p_maybe_assignment_word(p):
- #See p_assignment_word for details.
- """maybe_assignment_word : ASSIGNMENT_WORD"""
- p[0] = ('maybe_assignment_word', p[1])
-
-def p_cmd_prefix(p):
- """cmd_prefix : io_redirect
- | cmd_prefix io_redirect
- | assignment_word
- | cmd_prefix assignment_word"""
- try:
- prefix = get_production(p[1:], 'cmd_prefix')
- except KeyError:
- prefix = ['cmd_prefix']
-
- try:
- value = get_production(p[1:], 'assignment_word')[1]
- value = ('ASSIGNMENT_WORD', value.split('=', 1))
- except KeyError:
- value = get_production(p[1:], 'io_redirect')
- p[0] = prefix + [value]
-
-def p_cmd_suffix(p):
- """cmd_suffix : io_redirect
- | cmd_suffix io_redirect
- | token
- | cmd_suffix token
- | maybe_for_word
- | cmd_suffix maybe_for_word
- | maybe_done_word
- | cmd_suffix maybe_done_word
- | maybe_do_word
- | cmd_suffix maybe_do_word
- | maybe_until_word
- | cmd_suffix maybe_until_word
- | maybe_assignment_word
- | cmd_suffix maybe_assignment_word
- | maybe_if_word
- | cmd_suffix maybe_if_word
- | maybe_then_word
- | cmd_suffix maybe_then_word
- | maybe_bang_word
- | cmd_suffix maybe_bang_word"""
- try:
- suffix = get_production(p[1:], 'cmd_suffix')
- token = p[2]
- except KeyError:
- suffix = ['cmd_suffix']
- token = p[1]
-
- if isinstance(token, tuple):
- if token[0]=='io_redirect':
- p[0] = suffix + [token]
- else:
- #Convert maybe_* to TOKEN if necessary
- p[0] = suffix + [('TOKEN', token[1])]
- else:
- p[0] = suffix + [('TOKEN', token)]
-
-def p_redirect_list(p):
- """redirect_list : io_redirect
- | redirect_list io_redirect"""
- if len(p) == 2:
- p[0] = ['redirect_list', make_io_redirect(p[1])]
- else:
- p[0] = p[1] + [make_io_redirect(p[2])]
-
-def p_io_redirect(p):
- """io_redirect : io_file
- | IO_NUMBER io_file
- | io_here
- | IO_NUMBER io_here"""
- if len(p)==3:
- p[0] = ('io_redirect', p[1], p[2])
- else:
- p[0] = ('io_redirect', None, p[1])
-
-def p_io_file(p):
- #Return the tuple (operator, filename)
- """io_file : LESS filename
- | LESSAND filename
- | GREATER filename
- | GREATAND filename
- | DGREAT filename
- | LESSGREAT filename
- | CLOBBER filename"""
- #Extract the filename from the file
- p[0] = ('io_file', p[1], p[2][1])
-
-def p_filename(p):
- #Return the filename
- """filename : TOKEN"""
- p[0] = ('filename', p[1])
-
-def p_io_here(p):
- """io_here : DLESS here_end
- | DLESSDASH here_end"""
- p[0] = ('io_here', p[1], p[2][1], p[2][2])
-
-def p_here_end(p):
- """here_end : HERENAME TOKEN"""
- p[0] = ('here_document', p[1], p[2])
-
-def p_newline_sequence(p):
- # Nothing in the grammar can handle leading NEWLINE productions, so add
- # this one with the lowest possible priority relatively to newline_list.
- """newline_sequence : newline_list"""
- p[0] = None
-
-def p_newline_list(p):
- """newline_list : NEWLINE
- | newline_list NEWLINE"""
- p[0] = None
-
-def p_linebreak(p):
- """linebreak : newline_list
- | empty"""
- p[0] = None
-
-def p_separator_op(p):
- """separator_op : COMMA
- | AMP"""
- p[0] = p[1]
-
-def p_separator(p):
- """separator : separator_op linebreak
- | newline_list"""
- if len(p)==2:
- #Ignore newlines
- p[0] = None
- else:
- #Keep the separator operator
- p[0] = ('separator', p[1])
-
-def p_sequential_sep(p):
- """sequential_sep : COMMA linebreak
- | newline_list"""
- p[0] = None
-
-# Low priority TOKEN => for_word conversion.
-# Let maybe_for_word be used as a token when necessary in higher priority
-# rules.
-def p_for_word(p):
- """for_word : maybe_for_word"""
- p[0] = p[1]
-
-def p_if_word(p):
- """if_word : maybe_if_word"""
- p[0] = p[1]
-
-def p_then_word(p):
- """then_word : maybe_then_word"""
- p[0] = p[1]
-
-def p_done_word(p):
- """done_word : maybe_done_word"""
- p[0] = p[1]
-
-def p_do_word(p):
- """do_word : maybe_do_word"""
- p[0] = p[1]
-
-def p_until_word(p):
- """until_word : maybe_until_word"""
- p[0] = p[1]
-
-def p_assignment_word(p):
- """assignment_word : maybe_assignment_word"""
- p[0] = ('assignment_word', p[1][1])
-
-def p_bang_word(p):
- """bang_word : maybe_bang_word"""
- p[0] = ('bang_word', p[1][1])
-
-def p_token(p):
- """token : TOKEN
- | Fi"""
- p[0] = p[1]
-
-def p_empty(p):
- 'empty :'
- p[0] = None
-
-# Error rule for syntax errors
-def p_error(p):
- msg = []
- w = msg.append
- w('%r\n' % p)
- w('followed by:\n')
- for i in range(5):
- n = yacc.token()
- if not n:
- break
- w(' %r\n' % n)
- raise sherrors.ShellSyntaxError(''.join(msg))
-
-# Build the parser
-try:
- import pyshtables
-except ImportError:
- yacc.yacc(tabmodule = 'pyshtables')
-else:
- yacc.yacc(tabmodule = 'pysh.pyshtables', write_tables = 0, debug = 0)
-
-
-def parse(input, eof=False, debug=False):
- """Parse a whole script at once and return the generated AST and unconsumed
- data in a tuple.
-
- NOTE: eof is probably meaningless for now, the parser being unable to work
- in pull mode. It should be set to True.
- """
- lexer = pyshlex.PLYLexer()
- remaining = lexer.add(input, eof)
- if lexer.is_empty():
- return [], remaining
- if debug:
- debug = 2
- return yacc.parse(lexer=lexer, debug=debug), remaining
-
-#-------------------------------------------------------------------------------
-# AST rendering helpers
-#-------------------------------------------------------------------------------
-
-def format_commands(v):
- """Return a tree made of strings and lists. Make command trees easier to
- display.
- """
- if isinstance(v, list):
- return [format_commands(c) for c in v]
- if isinstance(v, tuple):
- if len(v)==2 and isinstance(v[0], str) and not isinstance(v[1], str):
- if v[0] == 'async':
- return ['AsyncList', map(format_commands, v[1])]
- else:
- #Avoid decomposing tuples like ('pipeline', Pipeline(...))
- return format_commands(v[1])
- return format_commands(list(v))
- elif isinstance(v, IfCond):
- name = ['IfCond']
- name += ['if', map(format_commands, v.cond)]
- name += ['then', map(format_commands, v.if_cmds)]
- name += ['else', map(format_commands, v.else_cmds)]
- return name
- elif isinstance(v, ForLoop):
- name = ['ForLoop']
- name += [repr(v.name)+' in ', map(str, v.items)]
- name += ['commands', map(format_commands, v.cmds)]
- return name
- elif isinstance(v, AndOr):
- return [v.op, format_commands(v.left), format_commands(v.right)]
- elif isinstance(v, Pipeline):
- name = 'Pipeline'
- if v.reverse_status:
- name = '!' + name
- return [name, format_commands(v.commands)]
- elif isinstance(v, SimpleCommand):
- name = ['SimpleCommand']
- if v.words:
- name += ['words', map(str, v.words)]
- if v.assigns:
- assigns = [tuple(a[1]) for a in v.assigns]
- name += ['assigns', map(str, assigns)]
- if v.redirs:
- name += ['redirs', map(format_commands, v.redirs)]
- return name
- elif isinstance(v, RedirectList):
- name = ['RedirectList']
- if v.redirs:
- name += ['redirs', map(format_commands, v.redirs)]
- name += ['command', format_commands(v.cmd)]
- return name
- elif isinstance(v, IORedirect):
- return ' '.join(map(str, (v.io_number, v.op, v.filename)))
- elif isinstance(v, HereDocument):
- return ' '.join(map(str, (v.io_number, v.op, repr(v.name), repr(v.content))))
- elif isinstance(v, SubShell):
- return ['SubShell', map(format_commands, v.cmds)]
- else:
- return repr(v)
-
-def print_commands(cmds, output=sys.stdout):
- """Pretty print a command tree."""
- def print_tree(cmd, spaces, output):
- if isinstance(cmd, list):
- for c in cmd:
- print_tree(c, spaces + 3, output)
- else:
- print >>output, ' '*spaces + str(cmd)
-
- formatted = format_commands(cmds)
- print_tree(formatted, 0, output)
-
-
-def stringify_commands(cmds):
- """Serialize a command tree as a string.
-
- Returned string is not pretty and is currently used for unit tests only.
- """
- def stringify(value):
- output = []
- if isinstance(value, list):
- formatted = []
- for v in value:
- formatted.append(stringify(v))
- formatted = ' '.join(formatted)
- output.append(''.join(['<', formatted, '>']))
- else:
- output.append(value)
- return ' '.join(output)
-
- return stringify(format_commands(cmds))
-
-
-def visit_commands(cmds, callable):
- """Visit the command tree and execute callable on every Pipeline and
- SimpleCommand instances.
- """
- if isinstance(cmds, (tuple, list)):
- map(lambda c: visit_commands(c,callable), cmds)
- elif isinstance(cmds, (Pipeline, SimpleCommand)):
- callable(cmds)
diff --git a/documentation/bsp-guide/bsp.xml b/documentation/bsp-guide/bsp.xml
index 3cad0fd010..076c08cf60 100644
--- a/documentation/bsp-guide/bsp.xml
+++ b/documentation/bsp-guide/bsp.xml
@@ -33,7 +33,7 @@
It is intended that this information can be
used by other systems besides Poky and OpenEmbedded and that it will be simple
to extract information and convert it to other formats if required.
- Poky, through its standard layers mechanism, can directly accept The format
+ Poky, through its standard layers mechanism, can directly accept the format
described as a layer.
The BSP captures all
the hardware-specific details in one place in a standard format, which is
@@ -63,62 +63,132 @@
"bsp_name" is a placeholder for the machine or platform name.
Here are some example base directory names:
<literallayout class='monospaced'>
- meta-Emenlow
+ meta-emenlow
meta-intel_n450
- meta-oaktrail
+ meta-beagleboard
</literallayout>
</para>
<para>
- The file structure inside the base directory takes on the following form:
+ Below is the common form for the file structure inside a base directory.
+ While you can use this basic form for the standard, realize that the actual structures
+ for specific BSPs could differ.
+
<programlisting>
meta-&lt;bsp_name&gt;/
-meta-&lt;bsp_name&gt;/binary/zImage
-meta-&lt;bsp_name&gt;/binary/poky-image-minimal.directdisk
+meta-&lt;bsp_name&gt;/&lt;bsp_license_file&gt;
+meta-&lt;bsp_name&gt;/README
+meta-&lt;bsp_name&gt;/binary/&lt;bootable_images&gt;
meta-&lt;bsp_name&gt;/conf/layer.conf
-meta-&lt;bsp_name&gt;/conf/machine/*.conf
-meta-&lt;bsp_name&gt;/conf/machine/include/tune-*.inc
-meta-&lt;bsp_name&gt;/recipes-kernel/bootloader/bootloader_0.1.bb
-meta-&lt;bsp_name&gt;/recipes-kernel/linux/linux-bsp-2.6.50/*.patch
-meta-&lt;bsp_name&gt;/recipes-kernel/linux/linux-bsp-2.6.50/defconfig-bsp
-meta-&lt;bsp_name&gt;/recipes-kernel/linux/linux-bsp_2.6.50.bb
-meta-&lt;bsp_name&gt;/recipes-&lt;bsp_name&gt;/modem/modem-driver_0.1.bb
-meta-&lt;bsp_name&gt;/recipes-&lt;bsp_name&gt;/modem/modem-daemon_0.1.bb
-meta-&lt;bsp_name&gt;/recipes-&lt;bsp_name&gt;/image-creator/image-creator-native_0.1.bb
-meta-&lt;bsp_name&gt;/prebuilds/
+meta-&lt;bsp_name&gt;/conf/machine/*.conf
+meta-&lt;bsp_name&gt;/recipes-bsp/*
+meta-&lt;bsp_name&gt;/recipes-graphics/*
+meta-&lt;bsp_name&gt;/recipes-kernel/linux/linux-yocto-stable.bbappend
</programlisting>
</para>
<para>
- The following sections detail what these files and directories could contain.
+ Below is an example of the crownbay BSP:
+
+ <programlisting>
+meta-crownbay/COPYING.MIT
+meta-crownbay/README
+meta-crownbay/binary/.gitignore
+meta-crownbay/conf/layer.conf
+meta-crownbay/conf/machine/crownbay.conf
+meta-crownbay/recipes-bsp/formfactor/formfactor/crownbay/machconfig
+meta-crownbay/recipes-bsp/formfactor/formfactor_0.0.bbappend
+meta-crownbay/recipes-graphics/xorg-xserver/xserver-xf86-config/crownbay/xcorg.conf
+meta-crownbay/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend
+meta-crownbay/recipes-graphics/xorg-xserver/xserver-xf86-emgd-bin/.gitignore
+meta-crownbay/recipes-graphics/xorg-xserver/xserver-xf86-emgd-bin_1.7.99.2.bb
+meta-crownbay/recipes-graphics/xorg-xserver/xserver-xf86-emgd/crosscompile.patch
+meta-crownbay/recipes-graphics/xorg-xserver/xserver-xf86-emgd/fix_open_max_preprocessor_error.patch
+meta-crownbay/recipes-graphics/xorg-xserver/xserver-xf86-emgd/macro_tweak.patch
+meta-crownbay/recipes-graphics/xorg-xserver/xserver-xf86-emgd/nodolt.patch
+meta-crownbay/recipes-graphics/xorg-xserver/xserver-xf86-emgd_1.7.99.2.bb
+meta-crownbay/recipes-kernel/linux/linux-wrs_git.bbappend
+ </programlisting>
</para>
- </section>
+ <para>
+ The following sections describe each part of the proposed BSP format.
+ </para>
- <section id="bsp-filelayout-binary">
- <title>Pre-built User Binaries (meta-&lt;bsp_name&gt;/binary/*)</title>
+ <section id="bsp-filelayout-license">
+ <title>License Files</title>
+ <programlisting>
+meta-&lt;bsp_name&gt;/&lt;bsp_license_file&gt;
+ </programlisting>
+
+ <para>
+ These optional files satisfy licensing requirements for the BSP.
+ The type or types of files here can vary depending on the licensing requirements.
+ For example, in the crownbay BSP all licensing requirements are handled with the
+ <filename>COPYING.MIT</filename> file.
+ </para>
+
+ <para>
+ Licensing files can be MIT, BSD, GPLv*, and so forth.
+ These files are recommended for the BSP but are optional and totally up to the BSP developer.
+ </para>
+ </section>
+
+ <section id="bsp-filelayout-readme">
+ <title>README File</title>
+ <programlisting>
+meta-&lt;bsp_name&gt;/README
+ </programlisting>
+
+ <para>
+ This file provides information on how to boot the live images that are optionally
+ included in the <filename>/binary</filename> directory.
+ The <filename>README</filename> file also provides special information needed for
+ building the image.
+ </para>
+
+ <para>
+ Technically speaking a <filename>README</filename> is optional but it is highly
+ recommended that every BSP has one.
+ </para>
+ </section>
+
+ <section id="bsp-filelayout-binary">
+ <title>Pre-built User Binaries</title>
+ <programlisting>
+meta-&lt;bsp_name&gt;/binary/&lt;bootable_images&gt;
+ </programlisting>
<para>
This optional area contains useful pre-built kernels and userspace filesystem
- images appropriate to the target system.
+ images appropriate to the target system.
+ This directory contains the Application Development Toolkit (ADT) and minimal
+ live images when the BSP is has been "tar-balled" and placed on the Yocto Project website.
You can use these kernels and images to get a system running and quickly get started
- on development tasks.
+ on development tasks.
+ </para>
+
+ <para>
The exact types of binaries present are highly hardware-dependent.
- However, a README file should be present that explains how to use the kernels and
- images with the target hardware.
+ However, a README file should be present in the BSP file structure that explains how to use
+ the kernels and images with the target hardware.
If pre-built binaries are present, source code to meet licensing requirements must also
be provided in some form.
</para>
- </section>
+ </section>
- <section id='bsp-filelayout-layer'>
- <title>Layer Configuration (meta-&lt;bsp_name&gt;/conf/layer.conf)</title>
+ <section id='bsp-filelayout-layer'>
+ <title>Layer Configuration File</title>
+ <programlisting>
+meta-&lt;bsp_name&gt;/conf/layer.conf
+ </programlisting>
<para>
This file identifies the structure as a Poky layer, identifies the
- contents of the layer, and contains information about how Poky should use
- it.
- Generally, a standard boilerplate file such as the following works:
+ contents of the layer, and contains information about how Poky should use it.
+ Generally, a standard boilerplate file such as the following works.
+ In the following example you would replace "bsp" and "_bsp" with the actual name
+ of the BSP (i.e. &lt;bsp_name&gt; from the example template).
</para>
<para>
@@ -139,10 +209,13 @@ BBFILE_PRIORITY_bsp = "5"
This file simply makes BitBake aware of the recipes and configuration directories.
This file must exist so that Poky can recognize the BSP.
</para>
- </section>
+ </section>
- <section id="bsp-filelayout-machine">
- <title>Hardware Configuration Options (meta-&lt;bsp_name&gt;/conf/machine/*.conf)</title>
+ <section id="bsp-filelayout-machine">
+ <title>Hardware Configuration Options</title>
+ <programlisting>
+meta-&lt;bsp_name&gt;/conf/machine/*.conf
+ </programlisting>
<para>
The machine files bind together all the information contained elsewhere
@@ -161,16 +234,12 @@ BBFILE_PRIORITY_bsp = "5"
</para>
<para>
- At least one machine file is required for a Poky BSP layer.
+ At least one machine file is required for a BSP layer.
However, you can supply more than one file.
</para>
- </section>
-
- <section id="bsp-filelayout-tune">
- <title>Hardware Optimization Options (meta-&lt;bsp_name&gt;/conf/machine/include/tune-*.inc)</title>
<para>
- These files are shared hardware "tuning" definitions and are commonly used to
+ This directory could also contain shared hardware "tuning" definitions that are commonly used to
pass specific optimization flags to the compiler.
An example is <filename>tune-atom.inc</filename>:
</para>
@@ -191,57 +260,163 @@ TARGET_CC_ARCH = "-m32 -march=core2 -msse3 -mtune=generic -mfpmath=sse"
files included with Poky itself.
</para>
<para>
- Both the base package architecuture file and the tune file are optional for a Poky BSP layer.
+ Both the base package architecture file and the tune file are optional for a Poky BSP layer.
</para>
- </section>
+ </section>
- <section id='bsp-filelayout-kernel'>
- <title>Linux Kernel Configuration (meta-&lt;bsp_name&gt;/recipes-kernel/linux/*)</title>
+ <section id='bsp-filelayout-misc-recipes'>
+ <title>Miscellaneous Recipe Files</title>
+ <programlisting>
+meta-&lt;bsp_name&gt;/recipes-bsp/*
+ </programlisting>
<para>
- These files make up the definition of a kernel to use with this hardware.
- In this case, it is a complete self-contained kernel with its own
- configuration and patches.
- However, kernels can be shared between many machines as well.
- Following is an example:
- <programlisting>
-meta-Emenlow/recipes-kernel/linux/linux-bsp_2.6.50.bb
- </programlisting>
- This example file is the core kernel recipe that details from where to get the kernel
- source.
- All standard source code locations are supported.
- Consequently, the source could be a release tarball, a git repository, or source included in
- the directory within the BSP itself.
- </para>
- <para>
- The file then contains information about what patches to apply and how to configure and build them.
- Because the file can reuse the main Poky kernel build class, the definitions here can
- remain very simple.
+ This optional directory contains miscellaneous recipe files for the BSP.
+ Most notably would be the formfactor files.
+ For example, in the crownbay BSP there is a <filename>machconfig</filename> file and a
+ <filename>formfactor_0.0.bbappend</filename> file:
+ <programlisting>
+meta-crownbay/recipes-bsp/formfactor/formfactor/crownbay/machconfig
+meta-crownbay/recipes-bsp/formfactor/formfactor_0.0.bbappend
+ </programlisting>
</para>
+
+ <note><para>
+ If a BSP does not have a formfactor entry, defaults are established according to
+ the configuration script.
+ </para></note>
+ </section>
+
+ <section id='bsp-filelayout-recipes-graphics'>
+ <title>Display Support Files</title>
+ <programlisting>
+meta-&lt;bsp_name&gt;/recipes-graphics/*
+ </programlisting>
+
<para>
+ This optional directory contains recipes for the BSP if it has
+ special requirements for graphics support.
+ All files that are needed for the BSP to support a display are kept here.
+ For example, in the crownbay BSP several display support files exist:
<programlisting>
-linux-bsp-2.6.50/*.patch
+meta-crownbay/recipes-graphics/xorg-xserver/xserver-xf86-config/crownbay/xcorg.conf
+meta-crownbay/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend
+meta-crownbay/recipes-graphics/xorg-xserver/xserver-xf86-emgd-bin/.gitignore
+meta-crownbay/recipes-graphics/xorg-xserver/xserver-xf86-emgd-bin_1.7.99.2.bb
+meta-crownbay/recipes-graphics/xorg-xserver/xserver-xf86-emgd/crosscompile.patch
+meta-crownbay/recipes-graphics/xorg-xserver/xserver-xf86-emgd/fix_open_max_preprocessor_error.patch
+meta-crownbay/recipes-graphics/xorg-xserver/xserver-xf86-emgd/macro_tweak.patch
+meta-crownbay/recipes-graphics/xorg-xserver/xserver-xf86-emgd/nodolt.patch
+meta-crownbay/recipes-graphics/xorg-xserver/xserver-xf86-emgd_1.7.99.2.bb
</programlisting>
</para>
+ </section>
+
+ <section id='bsp-filelayout-kernel'>
+ <title>Linux Kernel Configuration</title>
+ <programlisting>
+meta-&lt;bsp_name&gt;/recipes-kernel/linux/linux-yocto-stable.bbappend
+ </programlisting>
+
+ <para>
+ This file appends your specific changes to the kernel you are using.
+ </para>
<para>
- The above example file contains patches you can apply against the base kernel, from wherever
- they may have been obtained.
+ For your BSP you typically want to use an existing Poky kernel found in the
+ Poky repository at <filename class='directory'>meta/recipes-kernel/kernel</filename>.
+ You can append your specific changes to the kernel recipe by using an append file,
+ which is located in the
+ <filename class='directory'>meta-&lt;bsp_name&gt;/recipes-kernel/linux</filename>
+ directory.
</para>
<para>
+ Suppose you use a BSP that uses the <filename>linux-yocto-stable_git.bb</filename> kernel,
+ which is the preferred kernel to use for developing a new BSP using the Yocto Project.
+ In other words, you have selected the kernel in your
+ <filename>&lt;bsp_name&gt;.conf</filename> file by adding the following statement:
<programlisting>
-meta-Emenlow/recipes-kernel/linux/linux-bsp-2.6.50/defconfig-bsp
+PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto-stable"
</programlisting>
+ You would use the <filename>linux-yocto-stable_git.bbappend</filename> file to append
+ specific BSP settings to the kernel, thus configuring the kernel for your particular BSP.
</para>
<para>
- Finally, this last example file contains kernel configuration information.
+ Now take a look at the existing "crownbay" BSP.
+ The append file used is:
+ <programlisting>
+meta-crownbay/recipes-kernel/linux/linux-yocto-stable_git.bbappend
+ </programlisting>
+ The file contains the following:
+ <programlisting>
+FILESEXTRAPATHS := "${THISDIR}/${PN}"
+COMPATIBLE_MACHINE_crownbay = "crownbay"
+KMACHINE_crownbay = "crownbay"
+ </programlisting>
+ This append file adds "crownbay" as a compatible machine,
+ and additionally sets a Yocto Kernel-specific variable that identifies the name of the
+ BSP branch to use in the GIT repository to find configuration information.
+ </para>
+ <para>
+ One thing missing in this particular BSP, which you will typically need when
+ developing a BSP, is the kernel configuration (.config) for your BSP.
+ When developing a BSP, you probably have a kernel configuration file or a set of kernel
+ configuration files that, when taken together, define the kernel configuration for your BSP.
+ You can accomplish this definition by putting the configurations in a file or a set of files
+ inside a directory located at the same level as your append file and having the same name
+ as the kernel.
+ With all these conditions met simply reference those files in a SRC_URI statement in the append
+ file.
+ </para>
+ <para>
+ For example, suppose you had a set of configuration options in a file called
+ <filename>defconfig</filename>.
+ If you put that file inside a directory named
+ <filename class='directory'>/linux-yocto-stable</filename> and then added
+ a SRC_URI statement such as the following to the append file, those configuration
+ options will be picked up and applied when the kernel is built.
+ <programlisting>
+SRC_URI += "file://defconfig"
+ </programlisting>
</para>
<para>
- Examples of kernel recipes are available in Poky itself, and thus, make these files optional.
- However, it would be unusual not to have a kernel configuration.
+ As mentioned earlier, you can group related configurations into multiple files and
+ name them all in the SRC_URI statement as well.
+ For example, you could group separate configurations specifically for Ethernet and graphics
+ into their own files and add those by using a SRC_URI statement like the
+ following in your append file:
+ <programlisting>
+SRC_URI += "file://defconfig \
+ file://eth.cfg \
+ file://gfx.cfg"
+ </programlisting>
</para>
- </section>
+ <para>
+ The FILESEXTRAPATHS variable is boilerplated here in order to make it easy to do that.
+ It basically allows those configuration files to be found by the build process.
+ </para>
+ <note><para>
+ Other methods exist to accomplish grouping and defining configuration options.
+ For example, you could directly add configuration options to the Yocto kernel
+ <filename class='directory'>wrs_meta</filename> branch for your BSP.
+ The configuration options will likely end up in that location anyway if the BSP gets
+ added to the Yocto Project.
+ For information on how to add these configurations directly, see the
+ "Yocto Project Kernel Architecture and Use Manual" on the
+ <ulink url="http://yoctoproject.org/community/documentation">Yocto Project website
+ Documentation Page</ulink>
+ </para>
+ <para>
+ In general, however, the Yocto Project maintainers take care of moving the SRC_URI-specified
+ configuration options to the <filename class='directory'>wrs_meta</filename> branch.
+ Not only is it easier for BSP developers to not have to worry about putting those
+ configurations in the branch, but having the maintainers do it allows them to apply
+ 'global' knowledge about the kinds of common configuration options multiple BSPs in
+ the tree are typically using.
+ This allows for promotion of common configurations into common features.
+ </para></note>
+ </section>
- <section id='bsp-filelayout-packages'>
+<!-- <section id='bsp-filelayout-packages'>
<title>Other Software (meta-&lt;bsp_name&gt;/recipes-kernel/*)</title>
<para>
@@ -286,9 +461,9 @@ meta-Emenlow/recipes-Emenlow/modem/modem-daemon_0.1.bb
meta-Emenlow/recipes-Emenlow/image-creator/image-creator-native_0.1.bb
</programlisting>
</para>
- </section>
+ </section>
- <section id='bs-filelayout-bbappend'>
+ <section id='bs-filelayout-bbappend'>
<title>Append BSP-Specific Information to Existing Recipes</title>
<para>
Suppose you have a recipe such as "pointercal" that requires machine-specific information.
@@ -306,7 +481,7 @@ meta-Emenlow/recipes-Emenlow/image-creator/image-creator-native_0.1.bb
This allows the BSP layer to do whatever it might want to do to customize the original recipe.
</para>
<para>
- If your recipe needs to reference extra files it can use the FILESEXTRAPATH variable
+ If your recipe needs to reference extra files it can use the FILESEXTRAPATHS variable
to specify their location.
The example below shows extra files contained in a folder called ${PN} (the package name).
</para>
@@ -318,9 +493,9 @@ FILESEXTRAPATHS := "${THISDIR}/${PN}"
which will be picked up by BitBake.
For an example see <filename>meta-emenlow/packages/formfactor</filename>.
</para>
- </section>
+ </section>
- <section id="bsp-filelayout-prebuilds">
+ <section id="bsp-filelayout-prebuilds">
<title>Pre-build Data (meta-&lt;bsp_name&gt;/prebuilds/*)</title>
<para>
This location can contain precompiled representations of the source code
@@ -328,6 +503,7 @@ FILESEXTRAPATHS := "${THISDIR}/${PN}"
Assuming a compatible configuration is used, Poky can process and use these optional pre-compiled
representations to provide much faster build times.
</para>
+ </section> -->
</section>
<section id='bsp-click-through-licensing'>
diff --git a/documentation/poky-ref-manual/extendpoky.xml b/documentation/poky-ref-manual/extendpoky.xml
index 92f51a56f9..182b36d51a 100644
--- a/documentation/poky-ref-manual/extendpoky.xml
+++ b/documentation/poky-ref-manual/extendpoky.xml
@@ -685,15 +685,20 @@ BBFILE_PRIORITY_emenlow = "6"
This means that for new recipes you must be sure to add the PR variable and set its initial value
equal to "r0".
Failing to define PR makes it easy to miss when you bump a package.
- Note that you can only use integer values for the PR variable.
+ Note that you can only use integer values following the "r" in the PR variable.
</para>
<para>
- You can also use the <glossterm><link linkend='var-INC_PR'>INC_PR</link></glossterm> variable
- to keep up with package revisioning.
+ If you are sharing a common .inc file with multiple recipes, you can also use the
+ <glossterm><link linkend='var-INC_PR'>INC_PR</link></glossterm> variable to ensure that
+ the recipes sharing the .inc file are rebuilt when the .inc file itself is changed. The
+ .inc file must set INC_PR (initially to "r0"), and all recipes referring to it should set PR to
+ "$(INC_PR).0" initially, incrementing the last number when the recipe is changed. If the
+ .inc file is changed then its INC_PR should be incremented.
</para>
<para>
- When upgrading the version of a package the (<glossterm><link
- linkend='var-PV'>PV</link></glossterm>) and PR variables should be reset to "r0".
+ When upgrading the version of a package, assuming the <glossterm><link
+ linkend='var-PV'>PV</link></glossterm> changes, the PR variable should be reset to "r0"
+ (or "$(INC_PR).0" if you are using INC_PR).
</para>
<para>
Usually, version increases occur only to packages.
diff --git a/documentation/poky-ref-manual/poky-ref-manual.xml b/documentation/poky-ref-manual/poky-ref-manual.xml
index 70f0fc1321..2175d0afb3 100644
--- a/documentation/poky-ref-manual/poky-ref-manual.xml
+++ b/documentation/poky-ref-manual/poky-ref-manual.xml
@@ -21,9 +21,9 @@
<author>
<firstname>Richard</firstname> <surname>Purdie</surname>
<affiliation>
- <orgname>Intel Corporation</orgname>
+ <orgname>Linux Foundation</orgname>
</affiliation>
- <email>richard@linux.intel.com</email>
+ <email>richard.purdie@linuxfoundation.org</email>
</author>
<author>
diff --git a/documentation/poky-ref-manual/ref-variables.xml b/documentation/poky-ref-manual/ref-variables.xml
index 98a501f399..da57e2c384 100644
--- a/documentation/poky-ref-manual/ref-variables.xml
+++ b/documentation/poky-ref-manual/ref-variables.xml
@@ -609,7 +609,7 @@ recipes-graphics/xorg-font/fiont-alias_1.0.2.bb:PR - "$(INC_PR).0"
<glossentry id='var-PR'><glossterm>PR</glossterm>
<glossdef>
- <para>Revision of package.
+ <para>Revision of package. The default value is "r0".
</para>
</glossdef>
</glossentry>
@@ -617,7 +617,11 @@ recipes-graphics/xorg-font/fiont-alias_1.0.2.bb:PR - "$(INC_PR).0"
<glossentry id='var-PV'><glossterm>PV</glossterm>
<glossdef>
<para>Version of package.
- The default value is "1.0"</para>
+ This is normally extracted from the recipe name, e.g. if the recipe is named
+ "expat_2.0.1.bb" then PV will be "2.0.1". PV is generally not overridden within
+ a recipe unless it is building an unstable version from a source code repository
+ (git, svn, etc.).
+ </para>
</glossdef>
</glossentry>
diff --git a/documentation/yocto-project-qs/figures/using-a-pre-built-image.png b/documentation/yocto-project-qs/figures/using-a-pre-built-image.png
index 4f4f7d8495..b03130d123 100755..100644
--- a/documentation/yocto-project-qs/figures/using-a-pre-built-image.png
+++ b/documentation/yocto-project-qs/figures/using-a-pre-built-image.png
Binary files differ
diff --git a/documentation/yocto-project-qs/yocto-project-qs.xml b/documentation/yocto-project-qs/yocto-project-qs.xml
index 1c45cde88b..24480bc787 100644
--- a/documentation/yocto-project-qs/yocto-project-qs.xml
+++ b/documentation/yocto-project-qs/yocto-project-qs.xml
@@ -141,7 +141,7 @@
unzip texi2html texinfo libsdl1.2-dev docbook-utils gawk \
python-pysqlite2 diffstat help2man make gcc build-essential \
g++ desktop-file-utils chrpath libgl1-mesa-dev libglu1-mesa-dev \
- mercurial
+ mercurial autoconf automake
</literallayout>
<para>
@@ -156,17 +156,18 @@
docbook-utils sed bc glibc-devel ccache pcre pcre-devel quilt \
groff linuxdoc-tools patch linuxdoc-tools cmake help2man \
perl-ExtUtils-MakeMaker tcl-devel gettext chrpath ncurses apr \
- SDL-devel mesa-libGL-devel mesa-libGLU-devel gnome-doc-utils
+ SDL-devel mesa-libGL-devel mesa-libGLU-devel gnome-doc-utils \
+ autoconf automake
</literallayout>
- <para>
- <emphasis>NOTE:</emphasis> Packages vary in number and name for other Linux distributions.
+ <note><para>
+ Packages vary in number and name for other Linux distributions.
The commands here should work. We are interested, though, to learn what works for you.
You can find more information for package requirements on common Linux distributions
at <ulink url="http://wiki.openembedded.net/index.php/OEandYourDistro"></ulink>.
However, you should be careful when using this information as the information applies
to old Linux distributions that are known to not work with a current Poky install.
- </para>
+ </para></note>
</section>
<section id='releases'>
@@ -215,15 +216,16 @@
</mediaobject>
<para>
- Use the following commands from a shell on your Debian-based host to build your image.
- The build creates an entire Linux system including the Toolchain from the source.
+ Use the following commands to build your image.
+ The build process creates an entire Linux distribution, including the toolchain, from source.
</para>
- <para><emphasis>NOTE:</emphasis> The build process using Sato currently consumes
- 50GB of disk space.
- To allow for variations in the build process and for future package expansion we
- recommend 100GB of free disk space.
- </para>
+ <note><para>
+ The build process using Sato currently consumes
+ about 50GB of disk space.
+ To allow for variations in the build process and for future package expansion, we
+ recommend having at least 100GB of free disk space.
+ </para></note>
<para>
<literallayout class='monospaced'>
@@ -234,52 +236,56 @@
</para>
<itemizedlist>
<listitem><para>The first two commands extract the Yocto Project files from the
- release area and place them into a subdirectory of your current directory
- (<command>poky-4.0-build</command> in this example).</para></listitem>
- <listitem><para>The <command>$ source</command> command creates the directory and places
- you there.
- The build directory contains all the object files used during the build.
- The default build directory is <command>poky-4.0-build</command>.
- Note that you can change the target architecture by editing the
- <command>&lt;build_directory&gt;/conf/local.conf</command> file.
- By default the target architecture is qemux86.</para></listitem>
+ release tarball and place them into a subdirectory of your current directory.</para></listitem>
+ <listitem><para>The <command>source</command> command creates the
+ <filename>poky-4.0-build</filename> directory and executes the <command>cd</command>
+ command to make <filename>poky-4.0-build</filename> the working directory.
+ The resulting build directory contains all the files created during the build.
+ By default the target architecture is qemux86.
+ To change this default, edit the value of the MACHINE variable in the
+ <filename>conf/local.conf</filename> file.</para></listitem>
</itemizedlist>
<para>
- Now might be a good time to edit the <command>conf/local.conf</command>
- file.
- The defaults should all be fine. However, you might want to look at the variables
- BB_NUMBER_THREADS and PARALLEL_MAKE.
+ Take some time to examine your <filename>conf/local.conf</filename> file.
+ The defaults should work fine.
+ However, if you have a multi-core CPU you might want to set the variables
+ BB_NUMBER_THREADS and PARALLEL_MAKE to the number of processor cores on your build machine.
By default, these variables are commented out.
</para>
<para>
- Continue with the following command to build the OS image for the target, which is
- poky-image-sato in this example.
+ Continue with the following command to build an OS image for the target, which is
+ <filename>poky-image-sato</filename> in this example.
<literallayout class='monospaced'>
$ bitbake poky-image-sato
</literallayout>
- <emphasis>NOTE:</emphasis> If you are running Fedora 14 or another distribution
- with GNU make 3.82 you might have to run the following two
- <command>$bitbake</command> commands instead:
- <literallayout class='monospaced'>
+ <note><para>
+ If you are running Fedora 14 or another distribution
+ that ships with GNU make v3.82 you need to run the following two
+ <command>bitbake</command> commands instead:
+ <literallayout class='monospaced'>
$ bitbake make-native
$ bitbake poky-image-sato
- </literallayout>
+ </literallayout>
+ </para></note>
The final command runs the image:
<literallayout class='monospaced'>
$ poky-qemu qemux86
</literallayout>
- The build process could take several hours the first time you run it.
- Depending on the number of processors and cores, the amount or RAM, the speed of your
- internet connection and other factors.
- After the initial build, subsequent builds run much faster.
+ <note><para>
+ Depending on the number of processors and cores, the amount or RAM, the speed of your
+ Internet connection and other factors, the build process could take several hours the first
+ time you run it.
+ Subsequent builds run much faster since parts of the build are cached.
+ </para></note>
</para>
</section>
<section id='using-pre-built'>
<title>Using Pre-Built Binaries and QEMU</title>
<para>
- If hardware, libraries and services are stable you can use a pre-built binary of the image, kernel and toolchain and just run it on the target using the emulator QEMU.
- This situation is perfect for developing application software.
+ If hardware, libraries and services are stable you can get started by using a pre-built binary
+ of the image, kernel and toolchain and run it using the emulator QEMU.
+ This scenario is useful for developing application software.
</para>
<para></para>
@@ -296,31 +302,74 @@
</mediaobject>
<para>
- For this scenario you need to do three things:
+ For this scenario you need to do several things:
</para>
<itemizedlist>
<listitem>
<para>
- Install the standalone Yocto toolchain tarball
+ Install the stand-alone Yocto toolchain tarball.
</para>
</listitem>
<listitem>
<para>
- Download the pre-built kernel that will run on QEMU.
- You need to be sure to get the QEMU image that matches your target machine’s architecture (e.g. x86, ARM, etc.).
+ Download the pre-built kernel that will boot with QEMU.
+ You need to be sure to get the QEMU image that matches your target machine’s
+ architecture (e.g. x86, ARM, etc.).
</para>
</listitem>
<listitem>
<para>
- Download and decompress the file image system.
+ Download the filesystem image for your target machine's architecture.
</para>
</listitem>
+ <listitem>
+ <para>
+ Set up the environment to emulate the hardware and then start the QEMU emulator.
+ </para>
+ </listitem>
+
</itemizedlist>
+ <section id='installing-the-toolchain'>
+ <title>Installing the Toolchain</title>
+ <para>
+ You can download the pre-built toolchain, which includes the poky-qemu script and
+ support files, from <ulink url='http://yoctoproject.org/downloads/yocto-0.9/toolchain/'></ulink>.
+ Toolchains are available for 32-bit and 64-bit development systems from the
+ <filename>i586</filename> and <filename>x86_64</filename> folders, respectively.
+ Each type of development system supports five target architectures.
+ The tarball files are named such that a string representing the host system appears
+ first in the filename and then is immediately followed by a string representing
+ the target architecture.
+ </para>
+
+ <literallayout class='monospaced'>
+ yocto-eglibc&lt;<emphasis>host_system</emphasis>&gt;-&lt;<emphasis>arch</emphasis>&gt;-toolchain-sdk-&lt;<emphasis>release</emphasis>&gt;.tar.bz2
+
+ Where:
+ &lt;<emphasis>host_system</emphasis>&gt; is a string representing your development system:
+ i586 or x86_64.
+
+ &lt;<emphasis>arch</emphasis>&gt; is a string representing the target architecture:
+ i585, x86_64, powerpc, mips, or arm.
+
+ &lt;<emphasis>release</emphasis>&gt; is the version of Yocto Project.
+ </literallayout>
+
+ <para>
+ For example, the following toolchain tarball is for a 64-bit development
+ host system and a 32-bit target architecture:
+ </para>
+
+ <literallayout class='monospaced'>
+ yocto-eglibc-x86_64-i586-toolchain-sdk-0.9.tar.bz2
+ </literallayout>
+
<para>
- You can download the pre-built toolchain which includes the poky-qemu script and support files from <ulink url='http://yoctoproject.org/downloads/yocto-0.9/toolchain/'></ulink>. These are available for i586 (32-bit) and x86_64 (64 bit) host machines, targeting each of the 5 supported target architectures. The tarballs are self contained and install into /opt/poky.
- Use these commands to install the toolchain tarball (taking the 64 bit host, 32 bit i586 target as an example):
+ The toolchain tarballs are self-contained and should be installed into <filename>/opt/poky</filename>.
+ The following commands show how you install the toolchain tarball given a 64-bit development host system
+ and a 32-bit target architecture.
</para>
<para>
@@ -329,41 +378,112 @@
$ sudo tar -xvjf yocto-eglibc-x86_64-i586-toolchain-sdk-0.9.tar.bz2
</literallayout>
</para>
+ </section>
+
+ <section id='downloading-the-pre-built-linux-kernel'>
+ <title>Downloading the Pre-Built Linux Kernel</title>
+ <para>
+ You can download the pre-built Linux kernel and the filesystem image suitable for
+ running in the emulator QEMU from
+ <ulink url='http://yoctoproject.org/downloads/yocto-0.9/qemu'></ulink>.
+ Be sure to use the kernel and filesystem image that matches the architecture you want
+ to simulate.
+ </para>
+
+ <para>
+ Most kernel files have the following form:
+ </para>
+
+ <literallayout class='monospaced'>
+ *zImage*qemu&lt;<emphasis>arch</emphasis>&gt;*.bin
+
+ Where:
+ &lt;<emphasis>arch</emphasis>&gt; is a string representing the target architecture:
+ x86, x86-64, ppc, mips, or arm.
+ </literallayout>
+ </section>
+ <section id='downloading-the-filesystem'>
+ <title>Downloading the Filesystem</title>
<para>
- You can download the pre-built Linux kernel and the file image system from <ulink url='http://yoctoproject.org/downloads/yocto-0.9/'></ulink>.
- The kernel and file image system have the following forms, respectively:
+ The filesystem image has two forms.
+ One form is an <filename>ext3</filename> filesystem image.
+ The other form is a tarball of the filesystem and is booted using user-space NFS.
+ Here are the respective forms:
</para>
<literallayout class='monospaced'>
- *zImage*qemu*.bin
- poky-image-*-qemu*.ext2.bz2
+ yocto-image-&lt;<emphasis>profile</emphasis>&gt;-qemu&lt;<emphasis>arch</emphasis>&gt;.rootfs.ext3
+ yocto-image-&lt;<emphasis>profile</emphasis>&gt;-qemu&lt;<emphasis>arch</emphasis>&gt;.rootfs.tar.bz2
+
+ Where:
+ &lt;<emphasis>profile</emphasis>&gt; is the filesystem image's profile:
+ sdk, sato, minimal, or lsb.
+
+ &lt;<emphasis>arch</emphasis>&gt; is a string representing the target architecture:
+ x86, x86-64, ppc, mips, or arm.
</literallayout>
+ </section>
+ <section id='setting-up-the-environment-and-starting-the-qemu-emulator'>
+ <title>Setting Up the Environment and Starting the QEMU Emulator</title>
<para>
- You must decompress the file image system using the following command:
+ Before you start the QEMU emulator you need to set up the emulation environment.
+ The following command form sets up the emulation environment.
</para>
<literallayout class='monospaced'>
- $ bzip2 -d
+ $ source /opt/poky/environment-setup-&lt;<emphasis>arch</emphasis>&gt;-poky-linux-&lt;<emphasis>if</emphasis>&gt;
+
+ Where:
+ &lt;<emphasis>arch</emphasis>&gt; is a string representing the target architecture:
+ i586, x86_64, ppc603e, mips, or armv5te.
+
+ &lt;<emphasis>if</emphasis>&gt; is a string representing an embedded application binary interface.
+ Not all setup scripts include this string.
</literallayout>
<para>
- You can now start the emulator using these commands (assuming an 32 bit i586 target):
+ Finally, this command form invokes the QEMU emulator
</para>
<literallayout class='monospaced'>
- $ source /opt/poky/environment-setup-i586-poky-linux
$ poky-qemu &lt;<emphasis>qemuarch</emphasis>&gt; &lt;<emphasis>kernel</emphasis>&gt; &lt;<emphasis>image</emphasis>&gt; &lt;<emphasis>fstype</emphasis>&gt;
+
+ Where:
+ &lt;<emphasis>qemuarch</emphasis>&gt; is a string representing the target architecture: qemux86, qemux86-64,
+ qemuppc, qemumips, or qemuarm.
+
+ &lt;<emphasis>kernel</emphasis>&gt; is the architecture-specific kernel.
+
+ &lt;<emphasis>image</emphasis>&gt; is the .ext3 filesystem image.
+
+ &lt;<emphasis>fstype</emphasis>&gt; is the filesystem type.
</literallayout>
+
<para>
- For example:
+ Continuing with the example, the following two commands setup the emulation
+ environment and launch QEMU.
+ The kernel and filesystem are for a 32-bit target architecture.
</para>
+
<literallayout class='monospaced'>
- $ poky-qemu qemuppc zImage-2.6.34-qemuppc-0.9 \
- yocto-image-minimal-qemuppc-0.9.rootfs.ext3 ext3
+ $ source /opt/poky/environment-setup-i586-poky-linux
+ $ poky-qemu qemui586 zImage-2.6.34-qemux86-0.9 yocto-image-sdk-qemux86-0.9.rootfs.ext3 ext3
</literallayout>
-
+
+ <para>
+ The environment in which QEMU launches varies depending on the filesystem image and on the
+ target architecture. For example, if you source the environment for the ARM target
+ architecture and then boot the minimal QEMU image, the emulator comes up in a new
+ shell in command-line mode. However, if you boot the SDK image QEMU comes up with
+ a GUI.
+ </para>
+
+ <note><para>
+ Booting the PPC image results in QEMU launching in the same shell in command-line mode.
+ </para></note>
+ </section>
</section>
</section>
diff --git a/meta-demoapps/recipes-connectivity/openswan/openswan_2.4.7.bb b/meta-demoapps/recipes-connectivity/openswan/openswan_2.4.7.bb
index 022f709f99..d647f682d0 100644
--- a/meta-demoapps/recipes-connectivity/openswan/openswan_2.4.7.bb
+++ b/meta-demoapps/recipes-connectivity/openswan/openswan_2.4.7.bb
@@ -5,9 +5,9 @@ Linux operating system."
HOMEPAGE = "http://www.openswan.org"
LICENSE = "GPLv2"
DEPENDS = "gmp flex-native"
-RRECOMMENDS = "kernel-module-ipsec"
-RDEPENDS_nylon = "perl"
-PR = "r0"
+RRECOMMENDS_${PN} = "kernel-module-ipsec"
+RDEPENDS_${PN}_nylon = "perl"
+PR = "r1"
SRC_URI = "http://www.openswan.org/download/old/openswan-${PV}.tar.gz \
file://openswan-2.4.7-gentoo.patch;patch=1 \
diff --git a/meta-demoapps/recipes-connectivity/opensync/libsync_svn.bb b/meta-demoapps/recipes-connectivity/opensync/libsync_svn.bb
index 74ca752ad6..34115ff4e6 100644
--- a/meta-demoapps/recipes-connectivity/opensync/libsync_svn.bb
+++ b/meta-demoapps/recipes-connectivity/opensync/libsync_svn.bb
@@ -4,10 +4,11 @@ OpenSync in GLib applications."
LICENSE = "LGPL"
SECTION = "x11"
DEPENDS = "glib-2.0 gtk+ libglade libopensync avahi"
-RRECOMMENDS = "\
+RRECOMMENDS_${PN} = "\
libopensync-plugin-file \
"
-PV = "0.0+svnr${SRCREV}"
+PV = "0.0+svnr${SRCPV}"
+PR = "r1"
SRC_URI = "svn://svn.o-hand.com/repos/sync/trunk;module=sync;proto=http"
diff --git a/meta-demoapps/recipes-connectivity/telepathy/empathy_2.26.1.bb b/meta-demoapps/recipes-connectivity/telepathy/empathy_2.26.1.bb
index 2e07b19c16..2c973ac664 100644
--- a/meta-demoapps/recipes-connectivity/telepathy/empathy_2.26.1.bb
+++ b/meta-demoapps/recipes-connectivity/telepathy/empathy_2.26.1.bb
@@ -6,9 +6,9 @@ Gadu-Gadu, Groupwise, ICQ and QQ."
HOMEPAGE = "http://blogs.gnome.org/view/xclaesse/2007/04/26/0"
LICENSE = "GPL"
DEPENDS = "libcanberra telepathy-farsight gnome-doc-utils python-native telepathy-python telepathy-mission-control libtelepathy telepathy-glib gtk+ gconf libglade eds-dbus"
-RDEPENDS = "telepathy-mission-control"
-RRECOMMENDS = "telepathy-gabble"
-PR = "r2"
+RDEPENDS_${PN} = "telepathy-mission-control"
+RRECOMMENDS_${PN} = "telepathy-gabble"
+PR = "r3"
inherit gnome
diff --git a/meta-demoapps/recipes-gnome/abiword/abiword-2.5.inc b/meta-demoapps/recipes-gnome/abiword/abiword-2.5.inc
index dcd3b85534..e3f6a9d2b9 100644
--- a/meta-demoapps/recipes-gnome/abiword/abiword-2.5.inc
+++ b/meta-demoapps/recipes-gnome/abiword/abiword-2.5.inc
@@ -3,7 +3,7 @@ HOMEPAGE = "http://www.abiword.org"
SECTION = "x11/office"
LICENSE = "GPLv2"
DEPENDS = "perl-native wv libgsf libglade libfribidi jpeg libpng libxml2"
-RDEPENDS = "glibc-gconv-ibm850 glibc-gconv-cp1252 \
+RDEPENDS_${PN} = "glibc-gconv-ibm850 glibc-gconv-cp1252 \
glibc-gconv-iso8859-15 glibc-gconv-iso8859-1"
SRC_URI = "http://www.abiword.org/downloads/abiword/${PV}/source/abiword-${PV}.tar.gz"
diff --git a/meta-demoapps/recipes-gnome/abiword/abiword-embedded_2.5.2.bb b/meta-demoapps/recipes-gnome/abiword/abiword-embedded_2.5.2.bb
index 47cf9e03c0..7ee0f866a0 100644
--- a/meta-demoapps/recipes-gnome/abiword/abiword-embedded_2.5.2.bb
+++ b/meta-demoapps/recipes-gnome/abiword/abiword-embedded_2.5.2.bb
@@ -1,5 +1,7 @@
require abiword-2.5.inc
+PR = "r1"
+
EXTRA_OECONF += "--enable-embedded"
S = "${WORKDIR}/abiword-${PV}"
diff --git a/meta-demoapps/recipes-gnome/abiword/abiword.inc b/meta-demoapps/recipes-gnome/abiword/abiword.inc
index d2fabf931c..5d7e3ce600 100644
--- a/meta-demoapps/recipes-gnome/abiword/abiword.inc
+++ b/meta-demoapps/recipes-gnome/abiword/abiword.inc
@@ -4,7 +4,7 @@ HOMEPAGE = "http://www.abiword.org""
LICENSE = "GPLv2"
DEPENDS = "libgsf libglade libfribidi libxml2 wv"
-RRECOMMENDS = "glibc-gconv-ibm850 glibc-gconv-cp1252 \
+RRECOMMENDS_${PN} = "glibc-gconv-ibm850 glibc-gconv-cp1252 \
glibc-gconv-iso8859-15 glibc-gconv-iso8859-1"
# Share this file between recipes that use cvs and that pull tarballs
diff --git a/meta-demoapps/recipes-gnome/abiword/abiword_2.5.2.bb b/meta-demoapps/recipes-gnome/abiword/abiword_2.5.2.bb
index 566d0fa203..c10d761b06 100644
--- a/meta-demoapps/recipes-gnome/abiword/abiword_2.5.2.bb
+++ b/meta-demoapps/recipes-gnome/abiword/abiword_2.5.2.bb
@@ -1,5 +1,5 @@
require abiword-2.5.inc
-PR = "r1"
+PR = "r2"
-RCONFLICTS = "abiword-embedded"
+RCONFLICTS_${PN} = "abiword-embedded"
diff --git a/meta-demoapps/recipes-gnome/abiword/abiword_cvs.bb b/meta-demoapps/recipes-gnome/abiword/abiword_cvs.bb
index e0e3bd7d60..4dffbd0710 100644
--- a/meta-demoapps/recipes-gnome/abiword/abiword_cvs.bb
+++ b/meta-demoapps/recipes-gnome/abiword/abiword_cvs.bb
@@ -1,7 +1,7 @@
require abiword.inc
PV="2.5.0+cvs${SRCDATE}"
-PR = "r3"
+PR = "r4"
SRC_URI = "${CVSURI}"
diff --git a/meta-demoapps/recipes-gnome/libgsf/libgsf_1.14.5.bb b/meta-demoapps/recipes-gnome/libgsf/libgsf_1.14.5.bb
index 760c5c10af..3ac7d6e2eb 100644
--- a/meta-demoapps/recipes-gnome/libgsf/libgsf_1.14.5.bb
+++ b/meta-demoapps/recipes-gnome/libgsf/libgsf_1.14.5.bb
@@ -1,10 +1,10 @@
DESCRIPTION = "GNOME Structured File Library"
LICENSE = "GPL"
SECTION = "libs"
-PR = "r0"
+PR = "r1"
DEPENDS= "libxml2 bzip2 glib-2.0 zlib"
-RDEPENDS = "gconf gnome-vfs"
+RDEPENDS_${PN} = "gconf gnome-vfs"
PACKAGES =+ "${PN}-gnome ${PN}-gnome-dev "
diff --git a/meta-demoapps/recipes-sato/matchbox-themes-extra/matchbox-themes-extra_git.bb b/meta-demoapps/recipes-sato/matchbox-themes-extra/matchbox-themes-extra_git.bb
new file mode 100644
index 0000000000..fdb764ca03
--- /dev/null
+++ b/meta-demoapps/recipes-sato/matchbox-themes-extra/matchbox-themes-extra_git.bb
@@ -0,0 +1,32 @@
+DESCRIPTION = "Matchbox window manager extra themes"
+LICENSE = "GPL"
+DEPENDS = "matchbox-wm"
+SECTION = "x11/wm"
+PV = "0.3+git${SRCPV}"
+
+LIC_FILES_CHKSUM = "file://configure.ac;endline=7;md5=3c4e087662e37f10e469425f3a0ad225"
+
+SRC_URI = "git://git.pokylinux.org/${PN};protocol=git"
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+# split into several packages plus one meta package
+PACKAGES = "${PN} ${PN}-industrial ${PN}-expose ${PN}-mbcrystal ${PN}-clearlooks"
+
+ALLOW_EMPTY_${PN} = 1
+FILES_${PN} = ""
+RDEPENDS_${PN} = "${PN}-industrial ${PN}-expose ${PN}-mbcrystal ${PN}-clearlooks"
+
+FILES_${PN}-industrial = "${datadir}/themes/Industrial \
+ ${datadir}/icons/Industrial"
+
+FILES_${PN}-expose = "${datadir}/themes/expose \
+ ${datadir}/icons/expose"
+
+FILES_${PN}-mbcrystal = "${datadir}/themes/mbcrystal \
+ ${datadir}/icons/mbcrystal"
+
+FILES_${PN}-clearlooks = "${datadir}/themes/Clearlooks \
+ ${datadir}/icons/Clearlooks"
+
diff --git a/meta-demoapps/recipes-sato/matchbox-themes-extra/matchbox-themes-extra_svn.bb b/meta-demoapps/recipes-sato/matchbox-themes-extra/matchbox-themes-extra_svn.bb
deleted file mode 100644
index 6a9f18beaf..0000000000
--- a/meta-demoapps/recipes-sato/matchbox-themes-extra/matchbox-themes-extra_svn.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-DESCRIPTION = "Matchbox window manager extra themes"
-LICENSE = "GPL"
-DEPENDS = "matchbox-wm"
-SECTION = "x11/wm"
-PV = "0.3+svnr${SRCREV}"
-
-SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=matchbox-themes-extra;proto=http"
-S = "${WORKDIR}/${PN}"
-
-inherit autotools pkgconfig
-
-# split into several packages plus one meta package
-PACKAGES = "${PN} ${PN}-industrial ${PN}-expose ${PN}-mbcrystal ${PN}-clearlooks"
-
-ALLOW_EMPTY_${PN} = 1
-FILES_${PN} = ""
-RDEPENDS_${PN} = "${PN}-industrial ${PN}-expose ${PN}-mbcrystal ${PN}-clearlooks"
-
-FILES_${PN}-industrial = "${datadir}/themes/Industrial \
- ${datadir}/icons/Industrial"
-
-FILES_${PN}-expose = "${datadir}/themes/expose \
- ${datadir}/icons/expose"
-
-FILES_${PN}-mbcrystal = "${datadir}/themes/mbcrystal \
- ${datadir}/icons/mbcrystal"
-
-FILES_${PN}-clearlooks = "${datadir}/themes/Clearlooks \
- ${datadir}/icons/Clearlooks"
-
diff --git a/meta-demoapps/recipes-sato/matchbox-themes-gtk/matchbox-themes-gtk.bb b/meta-demoapps/recipes-sato/matchbox-themes-gtk/matchbox-themes-gtk.bb
index 60be56de13..21716cf72e 100644
--- a/meta-demoapps/recipes-sato/matchbox-themes-gtk/matchbox-themes-gtk.bb
+++ b/meta-demoapps/recipes-sato/matchbox-themes-gtk/matchbox-themes-gtk.bb
@@ -1,9 +1,9 @@
DESCRIPTION = "Gtk2 theme files to accompany default Matchbox themes"
LICENSE = "GPL"
DEPENDS = "gtk-engines"
-RDEPENDS = "matchbox-wm gtk-engine-clearlooks"
+RDEPENDS_${PN} = "matchbox-wm gtk-engine-clearlooks"
SECTION = "x11/base"
-PR = "r2"
+PR = "r3"
SRC_URI = "file://gtkrc"
diff --git a/meta-emenlow/README b/meta-emenlow/README
new file mode 100644
index 0000000000..862af5481b
--- /dev/null
+++ b/meta-emenlow/README
@@ -0,0 +1,78 @@
+This README file contains information on building the meta-emenlow
+BSP layer using any of the supported machine configurations, and
+booting the images contained in the /binary directory.
+
+If you're only interested in booting the images in the /binary
+directory of a BSP tarball you've downloaded, there's nothing special
+to do - the appropriate images are already in the /binary directory
+depending on which BSP tarball you downloaded.
+
+Please see the corresponding sections below for details.
+
+
+Table of Contents
+=================
+
+ I. Building the meta-emenlow BSP layer
+II. Booting the images in /binary
+
+
+I. Building the meta-emenlow BSP layer
+=======================================
+
+In order to build an image with BSP support for emenlow, you just need
+to check out the poky master branch.
+
+Having done that, you can build an emenlow image by adding the
+location of the meta-emenlow layer to bblayers.conf e.g.:
+
+ yocto/meta-emenlow \
+
+To enable the emenlow layer, add the emenlow MACHINE to local.conf:
+
+ MACHINE ?= "emenlow"
+
+You should then be able to build an emenlow image as such:
+
+ $ source poky-init-build-env
+ $ bitbake poky-image-sato-live
+
+At the end of a successful build, you should have a live image that
+you can boot from a USB flash drive (see instructions on how to do
+that below, in the section 'Booting the images from /binary').
+
+
+II. Booting the images in /binary
+=================================
+
+This BSP contains bootable live images, which can be used to directly
+boot Yocto off of a USB flash drive.
+
+Under Linux, insert a USB flash drive. Assuming the USB flash drive
+takes device /dev/sdf, use dd to copy the live image to it. For
+example:
+
+# dd if=poky-image-sato-live-emenlow-20101207053738.hddimg of=/dev/sdf
+# sync
+# eject /dev/sdf
+
+This should give you a bootable USB flash device. Insert the device
+into a bootable USB socket on the target, and power on. This should
+result in a system booted to the Sato graphical desktop.
+
+If you want a terminal, use the arrows at the top of the UI to move to
+different pages of available applications, one of which is named
+'Terminal'. Clicking that should give you a root terminal.
+
+If you want to ssh into the system, you can use the root terminal to
+ifconfig the IP address and use that to ssh in. The root password is
+empty, so to log in type 'root' for the user name and hit 'Enter' at
+the Password prompt: and you should be in.
+
+----
+
+If you find you're getting corrupt images on the USB (it doesn't show
+the syslinux boot: prompt, or the boot: prompt contains strange
+characters), try doing this first:
+
+# dd if=/dev/zero of=/dev/sdf bs=1M count=512
diff --git a/meta-emenlow/binary/.gitignore b/meta-emenlow/binary/.gitignore
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/meta-emenlow/binary/.gitignore
diff --git a/meta-emenlow/conf/layer.conf b/meta-emenlow/conf/layer.conf
index 4017787c62..563b9c8e6e 100644
--- a/meta-emenlow/conf/layer.conf
+++ b/meta-emenlow/conf/layer.conf
@@ -2,8 +2,8 @@
BBPATH := "${BBPATH}:${LAYERDIR}"
# We have a packages directory, add to BBFILES
-BBFILES := "${BBFILES} ${LAYERDIR}/recipes/*/*.bb \
- ${LAYERDIR}/recipes/*/*.bbappend"
+BBFILES := "${BBFILES} ${LAYERDIR}/recipes-*/*/*.bb \
+ ${LAYERDIR}/recipes-*/*/*.bbappend"
BBFILE_COLLECTIONS += "emenlow"
BBFILE_PATTERN_emenlow := "^${LAYERDIR}/"
diff --git a/meta-emenlow/conf/machine/emenlow.conf b/meta-emenlow/conf/machine/emenlow.conf
index b8dea64038..faedfe541c 100644
--- a/meta-emenlow/conf/machine/emenlow.conf
+++ b/meta-emenlow/conf/machine/emenlow.conf
@@ -5,11 +5,11 @@
# Webs-2120 box.
TARGET_ARCH = "i586"
-PACKAGE_EXTRA_ARCHS = "x86 emen"
+PACKAGE_EXTRA_ARCHS = "x86 core2"
include conf/machine/include/tune-atom.inc
-BASE_PACKAGE_ARCH="emen"
+BASE_PACKAGE_ARCH="core2"
MACHINE_FEATURES = "kernel26 screen keyboard pci usbhost ext2 ext3 x86 \
acpi serial usbgadget"
@@ -43,3 +43,6 @@ IMAGE_FSTYPES ?= "ext3 cpio.gz"
GLIBC_ADDONS = "nptl"
GLIBC_EXTRA_OECONF = "--with-tls"
+
+SRCREV_machine_pn-linux-yocto-stable_emenlow ?= "aae69fdf104b0a9d7b3710f808aac6ab303490f7"
+SRCREV_meta_pn-linux-yocto-stable_emenlow ?= "50ccd2b3213b6a1bacb3f898c035119802dac420"
diff --git a/meta-emenlow/recipes/formfactor/formfactor/emenlow/machconfig b/meta-emenlow/recipes-bsp/formfactor/formfactor/emenlow/machconfig
index ffce012270..ffce012270 100644
--- a/meta-emenlow/recipes/formfactor/formfactor/emenlow/machconfig
+++ b/meta-emenlow/recipes-bsp/formfactor/formfactor/emenlow/machconfig
diff --git a/meta-emenlow/recipes/formfactor/formfactor_0.0.bbappend b/meta-emenlow/recipes-bsp/formfactor/formfactor_0.0.bbappend
index 4a41d4871d..4a41d4871d 100644
--- a/meta-emenlow/recipes/formfactor/formfactor_0.0.bbappend
+++ b/meta-emenlow/recipes-bsp/formfactor/formfactor_0.0.bbappend
diff --git a/meta-emenlow/recipes/libdrm-poulsbo/libdrm-poulsbo-2.3.0/libdrm-poulsbo.patch b/meta-emenlow/recipes-graphics/libdrm-poulsbo/libdrm-poulsbo-2.3.0/libdrm-poulsbo.patch
index 14bde6887a..14bde6887a 100644
--- a/meta-emenlow/recipes/libdrm-poulsbo/libdrm-poulsbo-2.3.0/libdrm-poulsbo.patch
+++ b/meta-emenlow/recipes-graphics/libdrm-poulsbo/libdrm-poulsbo-2.3.0/libdrm-poulsbo.patch
diff --git a/meta-emenlow/recipes/libdrm-poulsbo/libdrm-poulsbo_2.3.0.bb b/meta-emenlow/recipes-graphics/libdrm-poulsbo/libdrm-poulsbo_2.3.0.bb
index d0e14a5622..d0e14a5622 100644
--- a/meta-emenlow/recipes/libdrm-poulsbo/libdrm-poulsbo_2.3.0.bb
+++ b/meta-emenlow/recipes-graphics/libdrm-poulsbo/libdrm-poulsbo_2.3.0.bb
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/033_g45_add_rgba_subpic.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/033_g45_add_rgba_subpic.patch
index 1b928b4c09..1b928b4c09 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/033_g45_add_rgba_subpic.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/033_g45_add_rgba_subpic.patch
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/034_g45_fix_return_for_unimpl.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/034_g45_fix_return_for_unimpl.patch
index a4612133bb..a4612133bb 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/034_g45_fix_return_for_unimpl.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/034_g45_fix_return_for_unimpl.patch
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/035_g45_add_yv12_image_format.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/035_g45_add_yv12_image_format.patch
index 92d814c1a8..92d814c1a8 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/035_g45_add_yv12_image_format.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/035_g45_add_yv12_image_format.patch
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/036_g45_add_vaGetImage.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/036_g45_add_vaGetImage.patch
index dc25d9f9e9..dc25d9f9e9 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/036_g45_add_vaGetImage.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/036_g45_add_vaGetImage.patch
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/037_g45_add_vaPutImage.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/037_g45_add_vaPutImage.patch
index ce638cce52..ce638cce52 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/037_g45_add_vaPutImage.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/037_g45_add_vaPutImage.patch
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/038_g45_vaPutSurface_cliprects.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/038_g45_vaPutSurface_cliprects.patch
index ca2e1bd471..ca2e1bd471 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/038_g45_vaPutSurface_cliprects.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/038_g45_vaPutSurface_cliprects.patch
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/102_attribute_visibility.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/102_attribute_visibility.patch
index 2885ab7b5b..2885ab7b5b 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/102_attribute_visibility.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/102_attribute_visibility.patch
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/103_fix_vainfo_deps.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/103_fix_vainfo_deps.patch
index 942c26d1bd..942c26d1bd 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/103_fix_vainfo_deps.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/103_fix_vainfo_deps.patch
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/104_fix_libva_pkgconfig_deps.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/104_fix_libva_pkgconfig_deps.patch
index bd212bf39c..bd212bf39c 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/104_fix_libva_pkgconfig_deps.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/104_fix_libva_pkgconfig_deps.patch
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/105_dont_search_LIBGL_DRIVERS_PATH.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/105_dont_search_LIBGL_DRIVERS_PATH.patch
index de873d6014..de873d6014 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/105_dont_search_LIBGL_DRIVERS_PATH.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/105_dont_search_LIBGL_DRIVERS_PATH.patch
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/108_drivers_path.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/108_drivers_path.patch
index 073c987054..073c987054 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/108_drivers_path.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/108_drivers_path.patch
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/203_fix_fglrx_detection.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/203_fix_fglrx_detection.patch
index ce7f10653c..ce7f10653c 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/203_fix_fglrx_detection.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/203_fix_fglrx_detection.patch
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/204_check_ATIFGLEXTENSION.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/204_check_ATIFGLEXTENSION.patch
index 02920a8944..02920a8944 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/204_check_ATIFGLEXTENSION.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/204_check_ATIFGLEXTENSION.patch
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/300_sds_version.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/300_sds_version.patch
index 07531c90cb..07531c90cb 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/300_sds_version.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/300_sds_version.patch
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/301_vdpau_mpeg4.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/301_vdpau_mpeg4.patch
index 86188902ab..86188902ab 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/301_vdpau_mpeg4.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/301_vdpau_mpeg4.patch
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/320_move_vaPutSurface_flags_def.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/320_move_vaPutSurface_flags_def.patch
index f00c52ca47..f00c52ca47 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/320_move_vaPutSurface_flags_def.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/320_move_vaPutSurface_flags_def.patch
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/321_libva_glx.base.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/321_libva_glx.base.patch
index 43af6f40cc..43af6f40cc 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/321_libva_glx.base.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/321_libva_glx.base.patch
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/322_libva_glx.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/322_libva_glx.patch
index ccd9ae090e..ccd9ae090e 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/322_libva_glx.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/322_libva_glx.patch
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/390_compat.base.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/390_compat.base.patch
index f2e0d61b0d..f2e0d61b0d 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/390_compat.base.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/390_compat.base.patch
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/391_compat.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/391_compat.patch
index 5e09d22b82..5e09d22b82 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/391_compat.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/391_compat.patch
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/392_compat.dso.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/392_compat.dso.patch
index 57ae44f9d4..57ae44f9d4 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/392_compat.dso.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/392_compat.dso.patch
diff --git a/meta-emenlow/recipes/libva/libva-0.31.0/libdrm-poulsbo.patch b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/libdrm-poulsbo.patch
index ac38eceb81..ac38eceb81 100644
--- a/meta-emenlow/recipes/libva/libva-0.31.0/libdrm-poulsbo.patch
+++ b/meta-emenlow/recipes-graphics/libva/libva-0.31.0/libdrm-poulsbo.patch
diff --git a/meta-emenlow/recipes/libva/libva_0.31.0.bb b/meta-emenlow/recipes-graphics/libva/libva_0.31.0.bb
index a316409876..a316409876 100644
--- a/meta-emenlow/recipes/libva/libva_0.31.0.bb
+++ b/meta-emenlow/recipes-graphics/libva/libva_0.31.0.bb
diff --git a/meta-emenlow/recipes/psb-firmware/psb-firmware_0.30.bb b/meta-emenlow/recipes-graphics/psb-firmware/psb-firmware_0.30.bb
index 164ea66c82..164ea66c82 100644
--- a/meta-emenlow/recipes/psb-firmware/psb-firmware_0.30.bb
+++ b/meta-emenlow/recipes-graphics/psb-firmware/psb-firmware_0.30.bb
diff --git a/meta-emenlow/recipes/psb-kernel-source/psb-kernel-source-4.42.0/build.patch b/meta-emenlow/recipes-graphics/psb-kernel-source/psb-kernel-source-4.42.0/build.patch
index ce6f2aa41b..ce6f2aa41b 100644
--- a/meta-emenlow/recipes/psb-kernel-source/psb-kernel-source-4.42.0/build.patch
+++ b/meta-emenlow/recipes-graphics/psb-kernel-source/psb-kernel-source-4.42.0/build.patch
diff --git a/meta-emenlow/recipes/psb-kernel-source/psb-kernel-source_4.42.0.bb b/meta-emenlow/recipes-graphics/psb-kernel-source/psb-kernel-source_4.42.0.bb
index 5c1a3e1c27..5c1a3e1c27 100644
--- a/meta-emenlow/recipes/psb-kernel-source/psb-kernel-source_4.42.0.bb
+++ b/meta-emenlow/recipes-graphics/psb-kernel-source/psb-kernel-source_4.42.0.bb
diff --git a/meta-emenlow/recipes/xorg-xserver/files/crosscompile.patch b/meta-emenlow/recipes-graphics/xorg-xserver/files/crosscompile.patch
index 2341e40bca..2341e40bca 100644
--- a/meta-emenlow/recipes/xorg-xserver/files/crosscompile.patch
+++ b/meta-emenlow/recipes-graphics/xorg-xserver/files/crosscompile.patch
diff --git a/meta-emenlow/recipes/xorg-xserver/files/fix_open_max_preprocessor_error.patch b/meta-emenlow/recipes-graphics/xorg-xserver/files/fix_open_max_preprocessor_error.patch
index 565832eed8..565832eed8 100644
--- a/meta-emenlow/recipes/xorg-xserver/files/fix_open_max_preprocessor_error.patch
+++ b/meta-emenlow/recipes-graphics/xorg-xserver/files/fix_open_max_preprocessor_error.patch
diff --git a/meta-emenlow/recipes/xorg-xserver/files/libdrm-poulsbo.patch b/meta-emenlow/recipes-graphics/xorg-xserver/files/libdrm-poulsbo.patch
index b604cab7c2..b604cab7c2 100644
--- a/meta-emenlow/recipes/xorg-xserver/files/libdrm-poulsbo.patch
+++ b/meta-emenlow/recipes-graphics/xorg-xserver/files/libdrm-poulsbo.patch
diff --git a/meta-emenlow/recipes/xorg-xserver/files/macro_tweak.patch b/meta-emenlow/recipes-graphics/xorg-xserver/files/macro_tweak.patch
index 6998adffe9..6998adffe9 100644
--- a/meta-emenlow/recipes/xorg-xserver/files/macro_tweak.patch
+++ b/meta-emenlow/recipes-graphics/xorg-xserver/files/macro_tweak.patch
diff --git a/meta-emenlow/recipes/xorg-xserver/files/nodolt.patch b/meta-emenlow/recipes-graphics/xorg-xserver/files/nodolt.patch
index 6b34032a39..6b34032a39 100644
--- a/meta-emenlow/recipes/xorg-xserver/files/nodolt.patch
+++ b/meta-emenlow/recipes-graphics/xorg-xserver/files/nodolt.patch
diff --git a/meta-emenlow/recipes/xorg-xserver/xserver-psb_1.7.99.2.bb b/meta-emenlow/recipes-graphics/xorg-xserver/xserver-psb_1.7.99.2.bb
index 5227faa45c..5227faa45c 100644
--- a/meta-emenlow/recipes/xorg-xserver/xserver-psb_1.7.99.2.bb
+++ b/meta-emenlow/recipes-graphics/xorg-xserver/xserver-psb_1.7.99.2.bb
diff --git a/meta-emenlow/recipes/xorg-xserver/xserver-xf86-config/emenlow/xorg.conf b/meta-emenlow/recipes-graphics/xorg-xserver/xserver-xf86-config/emenlow/xorg.conf
index 6846263839..6846263839 100644
--- a/meta-emenlow/recipes/xorg-xserver/xserver-xf86-config/emenlow/xorg.conf
+++ b/meta-emenlow/recipes-graphics/xorg-xserver/xserver-xf86-config/emenlow/xorg.conf
diff --git a/meta-emenlow/recipes/xorg-xserver/xserver-xf86-config_0.1.bbappend b/meta-emenlow/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend
index 4b8d0e656b..4b8d0e656b 100644
--- a/meta-emenlow/recipes/xorg-xserver/xserver-xf86-config_0.1.bbappend
+++ b/meta-emenlow/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend
diff --git a/meta-emenlow/recipes/xpsb-glx/xpsb-glx-0.18/cross-compile.patch b/meta-emenlow/recipes-graphics/xpsb-glx/xpsb-glx-0.18/cross-compile.patch
index a231596810..a231596810 100644
--- a/meta-emenlow/recipes/xpsb-glx/xpsb-glx-0.18/cross-compile.patch
+++ b/meta-emenlow/recipes-graphics/xpsb-glx/xpsb-glx-0.18/cross-compile.patch
diff --git a/meta-emenlow/recipes/xpsb-glx/xpsb-glx-0.18/libdrmname.patch b/meta-emenlow/recipes-graphics/xpsb-glx/xpsb-glx-0.18/libdrmname.patch
index 96b94ef2c8..96b94ef2c8 100644
--- a/meta-emenlow/recipes/xpsb-glx/xpsb-glx-0.18/libdrmname.patch
+++ b/meta-emenlow/recipes-graphics/xpsb-glx/xpsb-glx-0.18/libdrmname.patch
diff --git a/meta-emenlow/recipes/xpsb-glx/xpsb-glx-0.18/native-matypes.patch b/meta-emenlow/recipes-graphics/xpsb-glx/xpsb-glx-0.18/native-matypes.patch
index 26b1f52a3e..26b1f52a3e 100644
--- a/meta-emenlow/recipes/xpsb-glx/xpsb-glx-0.18/native-matypes.patch
+++ b/meta-emenlow/recipes-graphics/xpsb-glx/xpsb-glx-0.18/native-matypes.patch
diff --git a/meta-emenlow/recipes/xpsb-glx/xpsb-glx_0.18.bb b/meta-emenlow/recipes-graphics/xpsb-glx/xpsb-glx_0.18.bb
index 6ceb1cbe08..6ceb1cbe08 100644
--- a/meta-emenlow/recipes/xpsb-glx/xpsb-glx_0.18.bb
+++ b/meta-emenlow/recipes-graphics/xpsb-glx/xpsb-glx_0.18.bb
diff --git a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/01_disable_lid_timer.patch b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/01_disable_lid_timer.patch
index 47da3bce04..47da3bce04 100644
--- a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/01_disable_lid_timer.patch
+++ b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/01_disable_lid_timer.patch
diff --git a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/dri-h.patch b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/dri-h.patch
index 98ffa27199..98ffa27199 100644
--- a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/dri-h.patch
+++ b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/dri-h.patch
diff --git a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/libdrm-poulsbo.patch b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/libdrm-poulsbo.patch
index 0ecc880c02..0ecc880c02 100644
--- a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/libdrm-poulsbo.patch
+++ b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/libdrm-poulsbo.patch
diff --git a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_mixed.patch b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_mixed.patch
index 6065fa5cac..6065fa5cac 100644
--- a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_mixed.patch
+++ b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_mixed.patch
diff --git a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_xvtempfix.patch b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_xvtempfix.patch
index 34798c07e9..34798c07e9 100644
--- a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_xvtempfix.patch
+++ b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_xvtempfix.patch
diff --git a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/stubs.patch b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/stubs.patch
index b201d7e314..b201d7e314 100644
--- a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/stubs.patch
+++ b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/stubs.patch
diff --git a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/visibility.patch b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/visibility.patch
index 2c68805871..2c68805871 100644
--- a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/visibility.patch
+++ b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/visibility.patch
diff --git a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-ignoreacpi.patch b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-ignoreacpi.patch
index a73a493ec1..a73a493ec1 100644
--- a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-ignoreacpi.patch
+++ b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-ignoreacpi.patch
diff --git a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-xserver17.patch b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-xserver17.patch
index defed50363..defed50363 100644
--- a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-xserver17.patch
+++ b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-xserver17.patch
diff --git a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-assert.patch b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-assert.patch
index 5137a59041..5137a59041 100644
--- a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-assert.patch
+++ b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-assert.patch
diff --git a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-comment_unused.patch b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-comment_unused.patch
index ca811b6967..ca811b6967 100644
--- a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-comment_unused.patch
+++ b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-comment_unused.patch
diff --git a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-greedy.patch b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-greedy.patch
index 8758911c71..8758911c71 100644
--- a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-greedy.patch
+++ b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-greedy.patch
diff --git a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-loader.patch b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-loader.patch
index 24cbc0d30e..24cbc0d30e 100644
--- a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-loader.patch
+++ b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-loader.patch
diff --git a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb_0.32.1.bb b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb_0.32.1.bb
index 1ff92bbc61..1ff92bbc61 100644
--- a/meta-emenlow/recipes/xserver-xorg-video-psb/xserver-xorg-video-psb_0.32.1.bb
+++ b/meta-emenlow/recipes-graphics/xserver-xorg-video-psb/xserver-xorg-video-psb_0.32.1.bb
diff --git a/meta-emenlow/recipes/linux/linux-2.6.33.2/defconfig b/meta-emenlow/recipes-kernel/linux/linux-2.6.33.2/defconfig
index a516dc987e..a516dc987e 100644
--- a/meta-emenlow/recipes/linux/linux-2.6.33.2/defconfig
+++ b/meta-emenlow/recipes-kernel/linux/linux-2.6.33.2/defconfig
diff --git a/meta-emenlow/recipes/linux/linux-yocto-stable_git.bbappend b/meta-emenlow/recipes-kernel/linux/linux-yocto-stable_git.bbappend
index 9fa2937d4f..9fa2937d4f 100644
--- a/meta-emenlow/recipes/linux/linux-yocto-stable_git.bbappend
+++ b/meta-emenlow/recipes-kernel/linux/linux-yocto-stable_git.bbappend
diff --git a/meta-emenlow/recipes/linux/linux_2.6.33.2.bbappend b/meta-emenlow/recipes-kernel/linux/linux_2.6.33.2.bbappend
index fac0921401..fac0921401 100644
--- a/meta-emenlow/recipes/linux/linux_2.6.33.2.bbappend
+++ b/meta-emenlow/recipes-kernel/linux/linux_2.6.33.2.bbappend
diff --git a/meta-rt/conf/layer.conf b/meta-rt/conf/layer.conf
new file mode 100644
index 0000000000..94ebc02520
--- /dev/null
+++ b/meta-rt/conf/layer.conf
@@ -0,0 +1,23 @@
+# Default to first disk/first partition
+RSP_ROOT ?= "sda1"
+
+# We have a conf and classes directory, add to BBPATH
+BBPATH := "${BBPATH}:${LAYERDIR}"
+
+# We have an images and various recipe-* directories, add to BBFILES
+BBFILES := "${BBFILES} ${LAYERDIR}/images/*.bb ${LAYERDIR}/images/*.bbappend ${LAYERDIR}/recipes-*/*.bb ${LAYERDIR}/recipes-*/*.bbappend"
+
+BBFILE_COLLECTIONS += "rt"
+BBFILE_PATTERN_rt := "^${LAYERDIR}/"
+BBFILE_PRIORITY_rt = "8"
+
+# This layer builds images using a PREEMPT_RT kernel. Override any machine
+# specified kernel providers and leave it up to the kernel recipe to
+# determine COMPATIBLE_MACHINE.
+PREFERRED_PROVIDER_virtual/kernel = "linux-yocto-rt"
+
+# preempt_rt SRCREVs, one for meta, one per machine
+SRCREV_meta_pn-linux-yocto-rt ?= "b0615811ce38836d1ade230e3bdb1efaaa68471f"
+SRCREV_machine_pn-linux-yocto-rt_qemux86-64 ?= "f49444f06875894389e640bcda6c3f6ceb1f0c3e"
+SRCREV_machine_pn-linux-yocto-rt_atom-pc ?= "78dacaf8222c9492ba17f652989ef3466423bdc2"
+
diff --git a/meta-rt/images/poky-image-minimal-rt-directdisk.bb b/meta-rt/images/poky-image-minimal-rt-directdisk.bb
new file mode 100644
index 0000000000..b68fe568b6
--- /dev/null
+++ b/meta-rt/images/poky-image-minimal-rt-directdisk.bb
@@ -0,0 +1,15 @@
+#
+# Copyright (C) 2010 Intel Corporation.
+#
+
+require recipes-core/images/poky-image-directdisk.inc
+
+DESCRIPTION = "Bootable Minimal Real-Time Direct Disk Image"
+
+ROOTFS = "${DEPLOY_DIR_IMAGE}/poky-image-minimal-rt-${MACHINE}.ext3"
+
+LICENSE = "MIT"
+
+do_bootdirectdisk[depends] += "poky-image-minimal-rt:do_rootfs"
+
+
diff --git a/meta-rt/images/poky-image-minimal-rt-live.bb b/meta-rt/images/poky-image-minimal-rt-live.bb
new file mode 100644
index 0000000000..01628dcc3f
--- /dev/null
+++ b/meta-rt/images/poky-image-minimal-rt-live.bb
@@ -0,0 +1,15 @@
+#
+# Copyright (C) 2010 Intel Corporation.
+#
+
+DESCRIPTION = "Bootable Live Minimal Real-Time Linux Image"
+
+require recipes-core/images/poky-image-live.inc
+
+LABELS += "boot install"
+
+ROOTFS = "${DEPLOY_DIR_IMAGE}/poky-image-minimal-rt-${MACHINE}.ext3"
+
+LICENSE = "MIT"
+
+do_bootimg[depends] += "poky-image-minimal-rt:do_rootfs"
diff --git a/meta-rt/images/poky-image-minimal-rt.bb b/meta-rt/images/poky-image-minimal-rt.bb
new file mode 100644
index 0000000000..6f5700c67a
--- /dev/null
+++ b/meta-rt/images/poky-image-minimal-rt.bb
@@ -0,0 +1,12 @@
+#
+# Copyright (C) 2010 Intel Corporation.
+#
+
+DESCRIPTION = "Minimal Real-Time Linux Image"
+DEPENDS = "linux-yocto-rt"
+
+require recipes-core/images/poky-image-minimal.bb
+
+IMAGE_INSTALL += "rt-tests"
+
+LICENSE = "MIT"
diff --git a/meta-rt/recipes-kernel/linux-yocto-rt_stablegit.bb b/meta-rt/recipes-kernel/linux-yocto-rt_stablegit.bb
new file mode 100644
index 0000000000..547f8feac3
--- /dev/null
+++ b/meta-rt/recipes-kernel/linux-yocto-rt_stablegit.bb
@@ -0,0 +1,40 @@
+inherit kernel
+require recipes-kernel/linux/linux-yocto.inc
+
+KMACHINE_qemux86-64 = "common_pc_64"
+KMACHINE_atom-pc = "atom-pc"
+
+LINUX_VERSION ?= "2.6.34"
+LINUX_KERNEL_TYPE = "preempt_rt"
+LINUX_VERSION_EXTENSION ?= "-yocto-${LINUX_KERNEL_TYPE_EXTENSION}"
+
+PR = "r0"
+PV = "${LINUX_VERSION}+git${SRCPV}"
+SRCREV_FORMAT = "meta_machine"
+
+COMPATIBLE_MACHINE = "(qemux86-64|atom-pc)"
+
+# this performs a fixup on the SRCREV for new/undefined BSPs
+python __anonymous () {
+ import bb, re, string
+
+ rev = bb.data.getVar("SRCREV_machine", d, 1)
+ if rev == "standard":
+ bb.data.setVar("SRCREV_machine", "${SRCREV_meta}", d)
+
+ kerntype = string.replace(bb.data.expand("${LINUX_KERNEL_TYPE}", d), "_", "-")
+ bb.data.setVar("LINUX_KERNEL_TYPE_EXTENSION", kerntype, d)
+}
+
+SRC_URI = "git://git.pokylinux.org/linux-2.6-windriver.git;protocol=git;fullclone=1;branch=${KBRANCH};name=machine \
+ git://git.pokylinux.org/linux-2.6-windriver.git;protocol=git;noclone=1;branch=wrs_meta;name=meta"
+
+# Functionality flags
+KERNEL_REVISION_CHECKING ?= "t"
+KERNEL_FEATURES=features/netfilter
+
+# extra tasks
+addtask kernel_link_vmlinux after do_compile before do_install
+addtask validate_branches before do_patch after do_kernel_checkout
+
+require recipes-kernel/linux/linux-tools.inc
diff --git a/meta-rt/recipes-tests/rt-tests_git.bb b/meta-rt/recipes-tests/rt-tests_git.bb
new file mode 100644
index 0000000000..35af022449
--- /dev/null
+++ b/meta-rt/recipes-tests/rt-tests_git.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "Real-Time preemption testcases"
+HOMEPAGE = "https://rt.wiki.kernel.org/index.php/Cyclictest"
+SECTION = "tests"
+DEPENDS = "linux-libc-headers eglibc"
+LICENSE = "GPLv2 & GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
+ file://src/cyclictest/cyclictest.c;beginline=7;endline=9;md5=ce162fe491d19d2ec67dff6dbc938d50 \
+ file://src/pi_tests/pi_stress.c;beginline=6;endline=19;md5=bd426a634a43ec612e9fbf125dfcc949"
+SRCREV = ${AUTOREV}
+PV = "git${SRCPV}"
+PR = "r0"
+
+SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/clrkwllms/rt-tests.git;protocol=git"
+
+S = "${WORKDIR}/git"
+
+CFLAGS += "-I${S}/src/include -D_GNU_SOURCE -Wall -Wno-nonnull"
+
+do_install() {
+ oe_runmake install DESTDIR=${D} SBINDIR=${sbindir} MANDIR=${mandir} \
+ INCLUDEDIR=${includedir}
+}
diff --git a/meta/classes/autotools.bbclass b/meta/classes/autotools.bbclass
index 324cbff47a..d43ae6d88b 100644
--- a/meta/classes/autotools.bbclass
+++ b/meta/classes/autotools.bbclass
@@ -38,6 +38,12 @@ def autotools_set_crosscompiling(d):
return " cross_compiling=yes"
return ""
+def append_libtool_sysroot(d):
+ # Only supply libtool sysroot option for non-native packages
+ if not bb.data.inherits_class('native', d):
+ return '--with-libtool-sysroot=${STAGING_DIR_HOST}'
+ return ""
+
# EXTRA_OECONF_append = "${@autotools_set_crosscompiling(d)}"
CONFIGUREOPTS = " --build=${BUILD_SYS} \
@@ -56,14 +62,13 @@ CONFIGUREOPTS = " --build=${BUILD_SYS} \
--includedir=${includedir} \
--oldincludedir=${oldincludedir} \
--infodir=${infodir} \
- --mandir=${mandir}"
+ --mandir=${mandir} \
+ ${@append_libtool_sysroot(d)}"
oe_runconf () {
if [ -x ${S}/configure ] ; then
cfgcmd="${S}/configure \
- ${CONFIGUREOPTS} \
- ${EXTRA_OECONF} \
- $@"
+ ${CONFIGUREOPTS} ${EXTRA_OECONF} $@"
oenote "Running $cfgcmd..."
$cfgcmd || oefatal "oe_runconf failed"
else
@@ -104,9 +109,12 @@ autotools_do_configure() {
AUTOV=`automake --version |head -n 1 |sed "s/.* //;s/\.[0-9]\+$//"`
automake --version
echo "AUTOV is $AUTOV"
- install -d ${STAGING_DATADIR}/aclocal
- install -d ${STAGING_DATADIR}/aclocal-$AUTOV
- acpaths="$acpaths -I${STAGING_DATADIR}/aclocal-$AUTOV -I ${STAGING_DATADIR}/aclocal"
+ if [ -d ${STAGING_DATADIR}/aclocal-$AUTOV ]; then
+ acpaths="$acpaths -I${STAGING_DATADIR}/aclocal-$AUTOV"
+ fi
+ if [ -d ${STAGING_DATADIR}/aclocal ]; then
+ acpaths="$acpaths -I ${STAGING_DATADIR}/aclocal"
+ fi
# autoreconf is too shy to overwrite aclocal.m4 if it doesn't look
# like it was auto-generated. Work around this by blowing it away
# by hand, unless the package specifically asked not to run aclocal.
@@ -150,22 +158,10 @@ autotools_do_configure() {
autotools_do_install() {
oe_runmake 'DESTDIR=${D}' install
-}
-
-PACKAGE_PREPROCESS_FUNCS += "autotools_prepackage_lamangler"
-
-autotools_prepackage_lamangler () {
- for i in `find ${PKGD} -name "*.la"` ; do \
- sed -i -e 's:${STAGING_LIBDIR}:${libdir}:g;' \
- -e 's:${D}::g;' \
- -e 's:-I${WORKDIR}\S*: :g;' \
- -e 's:-L${WORKDIR}\S*: :g;' \
- $i
- done
-}
-
-autotools_stage_dir() {
- sysroot_stage_dir $1 $2
+ # Info dir listing isn't interesting at this point so remove it if it exists.
+ if [ -e "${D}${infodir}/dir" ]; then
+ rm -f ${D}${infodir}/dir
+ fi
}
inherit siteconfig
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index c60048bd50..edb65eb96b 100644
--- a/meta/classes/base.bbclass
+++ b/meta/classes/base.bbclass
@@ -107,7 +107,7 @@ python base_scenefunction () {
python base_do_setscene () {
for f in (bb.data.getVar('SCENEFUNCS', d, 1) or '').split():
bb.build.exec_func(f, d)
- if not os.path.exists(bb.data.getVar('STAMP', d, 1) + ".do_setscene"):
+ if not os.path.exists(bb.build.stampfile("do_setscene", d)):
bb.build.make_stamp("do_setscene", d)
}
do_setscene[selfstamp] = "1"
@@ -116,146 +116,38 @@ addtask setscene before do_fetch
addtask fetch
do_fetch[dirs] = "${DL_DIR}"
python base_do_fetch() {
- import sys
+
+ src_uri = (bb.data.getVar('SRC_URI', d, True) or "").split()
+ if len(src_uri) == 0:
+ return
localdata = bb.data.createCopy(d)
bb.data.update_data(localdata)
- src_uri = bb.data.getVar('SRC_URI', localdata, 1)
- if not src_uri:
- return 1
-
- try:
- bb.fetch.init(src_uri.split(),d)
- except bb.fetch.NoMethodError:
- (type, value, traceback) = sys.exc_info()
- raise bb.build.FuncFailed("No method: %s" % value)
- except bb.MalformedUrl:
- (type, value, traceback) = sys.exc_info()
- raise bb.build.FuncFailed("Malformed URL: %s" % value)
-
- try:
- bb.fetch.go(localdata)
- except bb.fetch.MissingParameterError:
- (type, value, traceback) = sys.exc_info()
- raise bb.build.FuncFailed("Missing parameters: %s" % value)
- except bb.fetch.FetchError:
- (type, value, traceback) = sys.exc_info()
- raise bb.build.FuncFailed("Fetch failed: %s" % value)
- except bb.fetch.MD5SumError:
- (type, value, traceback) = sys.exc_info()
- raise bb.build.FuncFailed("MD5 failed: %s" % value)
- except:
- (type, value, traceback) = sys.exc_info()
- raise bb.build.FuncFailed("Unknown fetch Error: %s" % value)
+ try:
+ fetcher = bb.fetch2.Fetch(src_uri, localdata)
+ fetcher.download()
+ except bb.fetch2.BBFetchException, e:
+ raise bb.build.FuncFailed(e)
}
-def subprocess_setup():
- import signal
- # Python installs a SIGPIPE handler by default. This is usually not what
- # non-Python subprocesses expect.
- # SIGPIPE errors are known issues with gzip/bash
- signal.signal(signal.SIGPIPE, signal.SIG_DFL)
-
-def oe_unpack_file(file, data, url = None):
- import subprocess
- if not url:
- url = "file://%s" % file
- dots = file.split(".")
- if dots[-1] in ['gz', 'bz2', 'Z']:
- efile = os.path.join(bb.data.getVar('WORKDIR', data, 1),os.path.basename('.'.join(dots[0:-1])))
- else:
- efile = file
- cmd = None
- if file.endswith('.tar'):
- cmd = 'tar x --no-same-owner -f %s' % file
- elif file.endswith('.tgz') or file.endswith('.tar.gz') or file.endswith('.tar.Z'):
- cmd = 'tar xz --no-same-owner -f %s' % file
- elif file.endswith('.tbz') or file.endswith('.tbz2') or file.endswith('.tar.bz2'):
- cmd = 'bzip2 -dc %s | tar x --no-same-owner -f -' % file
- elif file.endswith('.gz') or file.endswith('.Z') or file.endswith('.z'):
- cmd = 'gzip -dc %s > %s' % (file, efile)
- elif file.endswith('.bz2'):
- cmd = 'bzip2 -dc %s > %s' % (file, efile)
- elif file.endswith('.tar.xz'):
- cmd = 'xz -dc %s | tar x --no-same-owner -f -' % file
- elif file.endswith('.xz'):
- cmd = 'xz -dc %s > %s' % (file, efile)
- elif file.endswith('.zip') or file.endswith('.jar'):
- cmd = 'unzip -q -o'
- (type, host, path, user, pswd, parm) = bb.decodeurl(url)
- if 'dos' in parm:
- cmd = '%s -a' % cmd
- cmd = "%s '%s'" % (cmd, file)
- elif os.path.isdir(file):
- filesdir = os.path.realpath(bb.data.getVar("FILESDIR", data, 1))
- destdir = "."
- if file[0:len(filesdir)] == filesdir:
- destdir = file[len(filesdir):file.rfind('/')]
- destdir = destdir.strip('/')
- if len(destdir) < 1:
- destdir = "."
- elif not os.access("%s/%s" % (os.getcwd(), destdir), os.F_OK):
- os.makedirs("%s/%s" % (os.getcwd(), destdir))
- cmd = 'cp -pPR %s %s/%s/' % (file, os.getcwd(), destdir)
- else:
- (type, host, path, user, pswd, parm) = bb.decodeurl(url)
- if not 'patch' in parm:
- # The "destdir" handling was specifically done for FILESPATH
- # items. So, only do so for file:// entries.
- if type == "file" and path.find("/") != -1:
- destdir = path.rsplit("/", 1)[0]
- else:
- destdir = "."
- bb.mkdirhier("%s/%s" % (os.getcwd(), destdir))
- cmd = 'cp %s %s/%s/' % (file, os.getcwd(), destdir)
-
- if not cmd:
- return True
-
- dest = os.path.join(os.getcwd(), os.path.basename(file))
- if os.path.exists(dest):
- if os.path.samefile(file, dest):
- return True
-
- # Change to subdir before executing command
- save_cwd = os.getcwd();
- parm = bb.decodeurl(url)[5]
- if 'subdir' in parm:
- newdir = ("%s/%s" % (os.getcwd(), parm['subdir']))
- bb.mkdirhier(newdir)
- os.chdir(newdir)
-
- cmd = "PATH=\"%s\" %s" % (bb.data.getVar('PATH', data, 1), cmd)
- bb.note("Unpacking %s to %s/" % (file, os.getcwd()))
- ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True)
-
- os.chdir(save_cwd)
-
- return ret == 0
-
addtask unpack after do_fetch
do_unpack[dirs] = "${WORKDIR}"
python base_do_unpack() {
- import re
+ src_uri = (bb.data.getVar('SRC_URI', d, True) or "").split()
+ if len(src_uri) == 0:
+ return
localdata = bb.data.createCopy(d)
bb.data.update_data(localdata)
- src_uri = bb.data.getVar('SRC_URI', localdata, True)
- if not src_uri:
- return
- for url in src_uri.split():
- try:
- local = bb.data.expand(bb.fetch.localpath(url, localdata), localdata)
- except bb.MalformedUrl, e:
- raise FuncFailed('Unable to generate local path for malformed uri: %s' % e)
- if local is None:
- continue
- local = os.path.realpath(local)
- ret = oe_unpack_file(local, localdata, url)
- if not ret:
- raise bb.build.FuncFailed()
+ rootdir = bb.data.getVar('WORKDIR', localdata, True)
+
+ try:
+ fetcher = bb.fetch2.Fetch(src_uri, localdata)
+ fetcher.unpack(rootdir)
+ except bb.fetch2.BBFetchException, e:
+ raise bb.build.FuncFailed(e)
}
GIT_CONFIG = "${STAGING_DIR_NATIVE}/usr/etc/gitconfig"
@@ -418,8 +310,9 @@ python () {
commercial_license = bb.data.getVar('COMMERCIAL_LICENSE', d, 1)
import re
- if commercial_license and re.search(pn, commercial_license):
- bb.debug("Skipping %s because it's commercially licensed" % pn)
+ pnr = pn.replace('+', "\+")
+ if commercial_license and re.search(pnr, commercial_license):
+ bb.debug(1, "Skipping %s because it's commercially licensed" % pn)
raise bb.parse.SkipPackage("because it requires commercial license to ship product")
# If we're building a target package we need to use fakeroot (pseudo)
@@ -532,7 +425,8 @@ python () {
for s in srcuri.split():
if not s.startswith("file://"):
continue
- local = bb.data.expand(bb.fetch.localpath(s, d), d)
+ fetcher = bb.fetch2.Fetch([s], d)
+ local = fetcher.localpath(s)
for mp in paths:
if local.startswith(mp):
#bb.note("overriding PACKAGE_ARCH from %s to %s" % (pkg_arch, mach_arch))
@@ -576,14 +470,12 @@ python do_cleanall() {
dl_dir = bb.data.getVar('DL_DIR', localdata, True)
dl_dir = os.path.realpath(dl_dir)
- src_uri = bb.data.getVar('SRC_URI', localdata, True)
- if not src_uri:
+ src_uri = (bb.data.getVar('SRC_URI', localdata, True) or "").split()
+ if len(src_uri) == 0:
return
- for url in src_uri.split():
- try:
- local = bb.data.expand(bb.fetch.localpath(url, localdata), localdata)
- except bb.MalformedUrl, e:
- raise FuncFailed('Unable to generate local path for malformed uri: %s' % e)
+ fetcher = bb.fetch2.Fetch(src_uri, localdata)
+ for url in src_uri:
+ local = fetcher.localpath(url)
if local is None:
continue
local = os.path.realpath(local)
diff --git a/meta/classes/binconfig.bbclass b/meta/classes/binconfig.bbclass
index 73ca4d6219..8e22d2d292 100644
--- a/meta/classes/binconfig.bbclass
+++ b/meta/classes/binconfig.bbclass
@@ -47,8 +47,8 @@ SYSROOT_PREPROCESS_FUNCS += "binconfig_sysroot_preprocess"
binconfig_sysroot_preprocess () {
for config in `find ${S} -name '${BINCONFIG_GLOB}'`; do
configname=`basename $config`
- install -d ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}
- cat $config | sed ${@get_binconfig_mangle(d)} > ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}/$configname
- chmod u+x ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}/$configname
+ install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}
+ cat $config | sed ${@get_binconfig_mangle(d)} > ${SYSROOT_DESTDIR}${bindir_crossscripts}/$configname
+ chmod u+x ${SYSROOT_DESTDIR}${bindir_crossscripts}/$configname
done
}
diff --git a/meta/classes/bootimg.bbclass b/meta/classes/bootimg.bbclass
index f4949f55bd..49ee85ea72 100644
--- a/meta/classes/bootimg.bbclass
+++ b/meta/classes/bootimg.bbclass
@@ -49,7 +49,7 @@ inherit syslinux
build_boot_bin() {
install -d ${HDDDIR}
- install -m 0644 ${STAGING_DIR}/${MACHINE}${HOST_VENDOR}-${HOST_OS}/kernel/bzImage \
+ install -m 0644 ${STAGING_DIR_HOST}/kernel/bzImage \
${HDDDIR}/vmlinuz
if [ -n "${INITRD}" ] && [ -s "${INITRD}" ]; then
@@ -83,7 +83,7 @@ build_boot_bin() {
# Install the kernel
- install -m 0644 ${STAGING_DIR}/${MACHINE}${HOST_VENDOR}-${HOST_OS}/kernel/bzImage \
+ install -m 0644 ${STAGING_DIR_HOST}/kernel/bzImage \
${ISODIR}/vmlinuz
# Install the configuration files
diff --git a/meta/classes/cpan-base.bbclass b/meta/classes/cpan-base.bbclass
index 1d13ff3f08..6cd2aa340f 100644
--- a/meta/classes/cpan-base.bbclass
+++ b/meta/classes/cpan-base.bbclass
@@ -2,7 +2,7 @@
# cpan-base providers various perl related information needed for building
# cpan modules
#
-FILES_${PN} += "${libdir}/perl5 ${datadir}/perl5"
+FILES_${PN} += "${libdir}/perl ${datadir}/perl"
DEPENDS += "${@["perl", "perl-native"][(bb.data.inherits_class('native', d))]}"
RDEPENDS += "${@["perl", ""][(bb.data.inherits_class('native', d))]}"
@@ -27,7 +27,7 @@ def get_perl_version(d):
# Determine where the library directories are
def perl_get_libdirs(d):
libdir = bb.data.getVar('libdir', d, 1)
- libdirs = libdir + '/perl5'
+ libdirs = libdir + '/perl'
return libdirs
def is_target(d):
diff --git a/meta/classes/cpan.bbclass b/meta/classes/cpan.bbclass
index 513f0b3ce7..1cfd0221dd 100644
--- a/meta/classes/cpan.bbclass
+++ b/meta/classes/cpan.bbclass
@@ -4,18 +4,19 @@
inherit cpan-base
EXTRA_CPANFLAGS ?= ""
+EXTRA_PERLFLAGS ?= ""
# Env var which tells perl if it should use host (no) or target (yes) settings
export PERLCONFIGTARGET = "${@is_target(d)}"
# Env var which tells perl where the perl include files are
export PERL_INC = "${STAGING_LIBDIR}/perl/${@get_perl_version(d)}/CORE"
-export PERL_LIB = "${STAGING_DATADIR}/perl/${@get_perl_version(d)}"
+export PERL_LIB = "${STAGING_LIBDIR}/perl/${@get_perl_version(d)}"
export PERL_ARCHLIB = "${STAGING_LIBDIR}/perl/${@get_perl_version(d)}"
cpan_do_configure () {
export PERL5LIB="${PERL_ARCHLIB}"
- yes '' | perl Makefile.PL ${EXTRA_CPANFLAGS}
+ yes '' | perl ${EXTRA_PERLFLAGS} Makefile.PL ${EXTRA_CPANFLAGS}
if [ "${BUILD_SYS}" != "${HOST_SYS}" ]; then
. ${STAGING_LIBDIR}/perl/config.sh
# Use find since there can be a Makefile generated for each Makefile.PL
diff --git a/meta/classes/cpan_build.bbclass b/meta/classes/cpan_build.bbclass
index dd8d5434d5..cc503a424e 100644
--- a/meta/classes/cpan_build.bbclass
+++ b/meta/classes/cpan_build.bbclass
@@ -26,8 +26,8 @@ cpan_build_do_configure () {
perl Build.PL --installdirs vendor \
--destdir ${D} \
- --install_path lib="${datadir}/perl5" \
- --install_path arch="${libdir}/perl5" \
+ --install_path lib="${datadir}/perl" \
+ --install_path arch="${libdir}/perl" \
--install_path script=${bindir} \
--install_path bin=${bindir} \
--install_path bindoc=${mandir}/man1 \
diff --git a/meta/classes/cross-canadian.bbclass b/meta/classes/cross-canadian.bbclass
index 9edce31cb5..1a045ba16d 100644
--- a/meta/classes/cross-canadian.bbclass
+++ b/meta/classes/cross-canadian.bbclass
@@ -15,6 +15,7 @@ STAGING_BINDIR_TOOLCHAIN = "${STAGING_DIR_NATIVE}${bindir_native}/${SDK_ARCH}${S
# Update BASE_PACKAGE_ARCH and PACKAGE_ARCHS
#
OLD_MULTIMACH_ARCH := "${MULTIMACH_ARCH}"
+OLD_MULTIMACH_TARGET_SYS := "${MULTIMACH_TARGET_SYS}"
OLD_PACKAGE_ARCH := ${BASE_PACKAGE_ARCH}
BASE_PACKAGE_ARCH = "${SDK_ARCH}-nativesdk"
python () {
@@ -29,7 +30,6 @@ MULTIMACH_TARGET_SYS = "${MULTIMACH_ARCH}${HOST_VENDOR}-${HOST_OS}"
INHIBIT_DEFAULT_DEPS = "1"
STAGING_DIR_HOST = "${STAGING_DIR}/${HOST_SYS}-nativesdk"
-STAGING_DIR_TARGET = "${STAGING_DIR}/${OLD_PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR}/${HOST_ARCH}-nativesdk${HOST_VENDOR}-${HOST_OS}"
@@ -43,6 +43,9 @@ HOST_OS = "${SDK_OS}"
HOST_PREFIX = "${SDK_PREFIX}"
HOST_CC_ARCH = "${SDK_CC_ARCH}"
+#assign DPKG_ARCH
+DPKG_ARCH = "${SDK_ARCH}"
+
CPPFLAGS = "${BUILDSDK_CPPFLAGS}"
CFLAGS = "${BUILDSDK_CFLAGS}"
CXXFLAGS = "${BUILDSDK_CFLAGS}"
@@ -81,3 +84,5 @@ export PKG_CONFIG_SYSROOT_DIR = "${STAGING_DIR_HOST}"
# Cross-canadian packages need to pull in nativesdk dynamic libs
SHLIBSDIR = "${STAGING_DIR}/${SDK_ARCH}-nativesdk${SDK_VENDOR}-${BUILD_OS}/shlibs"
+do_populate_sysroot[stamp-extra-info] = ""
+do_package[stamp-extra-info] = ""
diff --git a/meta/classes/cross.bbclass b/meta/classes/cross.bbclass
index 7c20be0b81..f9fd07a9a2 100644
--- a/meta/classes/cross.bbclass
+++ b/meta/classes/cross.bbclass
@@ -20,6 +20,11 @@ HOST_OS = "${BUILD_OS}"
HOST_PREFIX = "${BUILD_PREFIX}"
HOST_CC_ARCH = "${BUILD_CC_ARCH}"
+STAGING_DIR_HOST = "${STAGING_DIR}/${BASEPKG_HOST_SYS}"
+
+export PKG_CONFIG_DIR = "${STAGING_DIR}/${BASE_PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}${libdir}/pkgconfig"
+export PKG_CONFIG_SYSROOT_DIR = "${STAGING_DIR}/${BASE_PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
+
CPPFLAGS = "${BUILD_CPPFLAGS}"
CFLAGS = "${BUILD_CFLAGS}"
CXXFLAGS = "${BUILD_CFLAGS}"
@@ -40,30 +45,20 @@ target_prefix := "${prefix}"
target_exec_prefix := "${exec_prefix}"
# Overrides for paths
+CROSS_TARGET_SYS_DIR = "${MULTIMACH_TARGET_SYS}"
prefix = "${STAGING_DIR_NATIVE}${prefix_native}"
base_prefix = "${STAGING_DIR_NATIVE}"
exec_prefix = "${STAGING_DIR_NATIVE}${prefix_native}"
-bindir = "${exec_prefix}/bin/${MULTIMACH_TARGET_SYS}"
+bindir = "${exec_prefix}/bin/${CROSS_TARGET_SYS_DIR}"
sbindir = "${bindir}"
base_bindir = "${bindir}"
base_sbindir = "${bindir}"
-libdir = "${exec_prefix}/lib/${MULTIMACH_TARGET_SYS}"
-libexecdir = "${exec_prefix}/libexec/${MULTIMACH_TARGET_SYS}"
+libdir = "${exec_prefix}/lib/${CROSS_TARGET_SYS_DIR}"
+libexecdir = "${exec_prefix}/libexec/${CROSS_TARGET_SYS_DIR}"
+
+do_populate_sysroot[sstate-inputdirs] = "${SYSROOT_DESTDIR}/${STAGING_DIR_NATIVE}"
do_install () {
oe_runmake 'DESTDIR=${D}' install
}
-#
-# Override the default sysroot staging copy since this won't look like a target system
-#
-sysroot_stage_all() {
- sysroot_stage_dir ${D} ${SYSROOT_DESTDIR}
- install -d ${SYSROOT_DESTDIR}${STAGING_DIR_TARGET}${target_base_libdir}/
- install -d ${SYSROOT_DESTDIR}${STAGING_DIR_TARGET}${target_libdir}/
- mv ${SYSROOT_DESTDIR}${target_base_libdir}/* ${SYSROOT_DESTDIR}${STAGING_DIR_TARGET}${target_base_libdir}/ || true
- mv ${SYSROOT_DESTDIR}${target_libdir}/* ${SYSROOT_DESTDIR}${STAGING_DIR_TARGET}${target_libdir}/ || true
-}
-
-
-
diff --git a/meta/classes/crosssdk.bbclass b/meta/classes/crosssdk.bbclass
index 23db163ba6..75fcfefc09 100644
--- a/meta/classes/crosssdk.bbclass
+++ b/meta/classes/crosssdk.bbclass
@@ -1,7 +1,5 @@
inherit cross
-PACKAGES = ""
-
BASE_PACKAGE_ARCH = "${SDK_ARCH}"
PACKAGE_ARCH = "${BASE_PACKAGE_ARCH}"
STAGING_DIR_TARGET = "${STAGING_DIR}/${SDK_ARCH}-nativesdk${SDK_VENDOR}-${SDK_OS}"
@@ -18,3 +16,5 @@ target_base_libdir = "${SDKPATHNATIVE}${base_libdir_nativesdk}"
target_prefix = "${SDKPATHNATIVE}${prefix_nativesdk}"
target_exec_prefix = "${SDKPATHNATIVE}${exec_prefix_nativesdk}"
+do_populate_sysroot[stamp-extra-info] = ""
+do_package[stamp-extra-info] = ""
diff --git a/meta/classes/distrodata.bbclass b/meta/classes/distrodata.bbclass
index 0378790f70..31e7420cf4 100644
--- a/meta/classes/distrodata.bbclass
+++ b/meta/classes/distrodata.bbclass
@@ -3,8 +3,6 @@ require conf/distro/include/distro_tracking_fields.inc
addhandler distro_eventhandler
python distro_eventhandler() {
- from bb.event import Handled, NotHandled
- # if bb.event.getName(e) == "TaskStarted":
if bb.event.getName(e) == "BuildStarted":
"""initialize log files."""
@@ -25,7 +23,7 @@ python distro_eventhandler() {
f.close()
bb.utils.unlockfile(lf)
- return NotHandled
+ return
}
addtask distrodata_np
@@ -213,9 +211,6 @@ do_distrodataall() {
addhandler checkpkg_eventhandler
python checkpkg_eventhandler() {
- from bb.event import Handled, NotHandled
- # if bb.event.getName(e) == "TaskStarted":
-
if bb.event.getName(e) == "BuildStarted":
"""initialize log files."""
logpath = bb.data.getVar('LOG_DIR', e.data, 1)
@@ -234,8 +229,15 @@ python checkpkg_eventhandler() {
f.write("Package\tOwner\tURI Type\tVersion\tTracking\tUpstream\tTMatch\tRMatch\n")
f.close()
bb.utils.unlockfile(lf)
-
- return NotHandled
+ """initialize log files for package report system"""
+ logfile2 = os.path.join(logpath, "get_pkg_info.%s.log" % bb.data.getVar('DATETIME', e.data, 1))
+ if not os.path.exists(logfile2):
+ slogfile2 = os.path.join(logpath, "get_pkg_info.log")
+ if os.path.exists(slogfile2):
+ os.remove(slogfile2)
+ os.system("touch %s" % logfile2)
+ os.symlink(logfile2, slogfile2)
+ return
}
addtask checkpkg
@@ -262,8 +264,8 @@ python do_checkpkg() {
prefix1 = "[a-zA-Z][a-zA-Z0-9]*([\-_][a-zA-Z]\w+)*[\-_]" # match most patterns which uses "-" as separator to version digits
prefix2 = "[a-zA-Z]+" # a loose pattern such as for unzip552.tar.gz
prefix = "(%s|%s)" % (prefix1, prefix2)
- suffix = "(tar\.gz|tgz|tar\.bz2|zip)"
- suffixtuple = ("tar.gz", "tgz", "zip", "tar.bz2")
+ suffix = "(tar\.gz|tgz|tar\.bz2|zip|xz)"
+ suffixtuple = ("tar.gz", "tgz", "zip", "tar.bz2", "tar.xz")
sinterstr = "(?P<name>%s?)(?P<ver>.*)" % prefix
sdirstr = "(?P<name>%s)(?P<ver>.*)\.(?P<type>%s$)" % (prefix, suffix)
@@ -307,42 +309,31 @@ python do_checkpkg() {
"""
def internal_fetch_wget(url, d, tmpf):
status = "ErrFetchUnknown"
- try:
- """
- Clear internal url cache as it's a temporary check. Not doing so will have
- bitbake check url multiple times when looping through a single url
- """
- fn = bb.data.getVar('FILE', d, 1)
- bb.fetch.urldata_cache[fn] = {}
- bb.fetch.init([url], d)
- except bb.fetch.NoMethodError:
- status = "ErrFetchNoMethod"
- except:
- status = "ErrInitUrlUnknown"
- else:
- """
- To avoid impacting bitbake build engine, this trick is required for reusing bitbake
- interfaces. bb.fetch.go() is not appliable as it checks downloaded content in ${DL_DIR}
- while we don't want to pollute that place. So bb.fetch.checkstatus() is borrowed here
- which is designed for check purpose but we override check command for our own purpose
- """
- ld = bb.data.createCopy(d)
- bb.data.setVar('CHECKCOMMAND_wget', "/usr/bin/env wget -t 1 --passive-ftp -O %s '${URI}'" \
+ """
+ Clear internal url cache as it's a temporary check. Not doing so will have
+ bitbake check url multiple times when looping through a single url
+ """
+ fn = bb.data.getVar('FILE', d, 1)
+ bb.fetch2.urldata_cache[fn] = {}
+
+ """
+ To avoid impacting bitbake build engine, this trick is required for reusing bitbake
+ interfaces. bb.fetch.go() is not appliable as it checks downloaded content in ${DL_DIR}
+ while we don't want to pollute that place. So bb.fetch2.checkstatus() is borrowed here
+ which is designed for check purpose but we override check command for our own purpose
+ """
+ ld = bb.data.createCopy(d)
+ bb.data.setVar('CHECKCOMMAND_wget', "/usr/bin/env wget -t 1 --passive-ftp -O %s --user-agent=\"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.12) Gecko/20101027 Ubuntu/9.10 (karmic) Firefox/3.6.12\" '${URI}'" \
% tmpf.name, d)
- bb.data.update_data(ld)
-
- try:
- bb.fetch.checkstatus(ld)
- except bb.fetch.MissingParameterError:
- status = "ErrMissParam"
- except bb.fetch.FetchError:
- status = "ErrFetch"
- except bb.fetch.MD5SumError:
- status = "ErrMD5Sum"
- except:
- status = "ErrFetchUnknown"
- else:
- status = "SUCC"
+ bb.data.update_data(ld)
+
+ try:
+ fetcher = bb.fetch2.Fetch([url], ld)
+ fetcher.checkstatus()
+ status = "SUCC"
+ except bb.fetch2.BBFetchException, e:
+ status = "ErrFetch"
+
return status
"""
@@ -425,7 +416,7 @@ python do_checkpkg() {
"""match "{PN}-5.21.1.tar.gz">{PN}-5.21.1.tar.gz """
pn1 = re.search("^%s" % prefix, curname).group()
s = "[^\"]*%s[^\d\"]*?(\d+[\.\-_])+[^\"]*" % pn1
- searchstr = "[hH][rR][eE][fF]=\"%s\">" % s
+ searchstr = "[hH][rR][eE][fF]=\"%s\".*>" % s
reg = re.compile(searchstr)
valid = 0
@@ -443,7 +434,7 @@ python do_checkpkg() {
status = "ErrParseDir"
else:
"""newver still contains a full package name string"""
- status = re.search("(\d+[.\-_])*\d+", newver[1]).group()
+ status = re.search("(\d+[.\-_])*[0-9a-zA-Z]+", newver[1]).group()
elif not len(fhtml):
status = "ErrHostNoDir"
@@ -464,11 +455,23 @@ python do_checkpkg() {
logpath = bb.data.getVar('LOG_DIR', d, 1)
bb.utils.mkdirhier(logpath)
logfile = os.path.join(logpath, "checkpkg.csv")
+ """initialize log files for package report system"""
+ logfile2 = os.path.join(logpath, "get_pkg_info.log")
"""generate package information from .bb file"""
pname = bb.data.getVar('PN', d, 1)
pdesc = bb.data.getVar('DESCRIPTION', d, 1)
pgrp = bb.data.getVar('SECTION', d, 1)
+ pversion = bb.data.getVar('PV', d, 1)
+ plicense = bb.data.getVar('LICENSE',d,1)
+ psection = bb.data.getVar('SECTION',d,1)
+ phome = bb.data.getVar('HOMEPAGE', d, 1)
+ prelease = bb.data.getVar('PR',d,1)
+ ppriority = bb.data.getVar('PRIORITY',d,1)
+ pdepends = bb.data.getVar('DEPENDS',d,1)
+ pbugtracker = bb.data.getVar('BUGTRACKER',d,1)
+ ppe = bb.data.getVar('PE',d,1)
+ psrcuri = bb.data.getVar('SRC_URI',d,1)
found = 0
for uri in src_uri.split():
@@ -614,6 +617,14 @@ python do_checkpkg() {
(pname, maintainer, pproto, pcurver, pmver, pupver, pmstatus, pstatus))
f.close()
bb.utils.unlockfile(lf)
+
+ """write into get_pkg_info log file to supply data for package report system"""
+ lf2 = bb.utils.lockfile(logfile2 + ".lock")
+ f2 = open(logfile2, "a")
+ f2.write("%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n" % \
+ (pname,pversion,pupver,plicense,psection, phome,prelease, ppriority,pdepends,pbugtracker,ppe,pdesc,pstatus,pmver,psrcuri))
+ f2.close()
+ bb.utils.unlockfile(lf2)
}
addtask checkpkgall after do_checkpkg
@@ -625,9 +636,6 @@ do_checkpkgall() {
#addhandler check_eventhandler
python check_eventhandler() {
- from bb.event import Handled, NotHandled
- # if bb.event.getName(e) == "TaskStarted":
-
if bb.event.getName(e) == "BuildStarted":
import oe.distro_check as dc
tmpdir = bb.data.getVar('TMPDIR', e.data, 1)
@@ -645,7 +653,7 @@ python check_eventhandler() {
os.symlink(logfile, slogfile)
bb.data.setVar('LOG_FILE', logfile, e.data)
- return NotHandled
+ return
}
addtask distro_check
diff --git a/meta/classes/distutils-common-base.bbclass b/meta/classes/distutils-common-base.bbclass
index 01bf9eaeba..f66a5cd571 100644
--- a/meta/classes/distutils-common-base.bbclass
+++ b/meta/classes/distutils-common-base.bbclass
@@ -1,19 +1,10 @@
+inherit python-dir
+
EXTRA_OEMAKE = ""
export STAGING_INCDIR
export STAGING_LIBDIR
-def python_dir(d):
- import os, bb
- staging_incdir = bb.data.getVar( "STAGING_INCDIR", d, 1 )
- for majmin in "2.6 2.5 2.4 2.3".split():
- if os.path.exists( "%s/python%s" % ( staging_incdir, majmin ) ): return "python%s" % majmin
- if not "python-native" in bb.data.getVar( "DEPENDS", d, 1 ).split():
- raise "No Python in STAGING_INCDIR. Forgot to build python-native ?"
- return "INVALID"
-
-PYTHON_DIR = "${@python_dir(d)}"
-
PACKAGES = "${PN}-dev ${PN}-dbg ${PN}-doc ${PN}"
FILES_${PN} = "${bindir}/* ${libdir}/* ${libdir}/${PYTHON_DIR}/*"
@@ -21,10 +12,10 @@ FILES_${PN} = "${bindir}/* ${libdir}/* ${libdir}/${PYTHON_DIR}/*"
FILES_${PN}-dev += "\
${datadir}/pkgconfig \
${libdir}/pkgconfig \
- ${libdir}/${PYTHON_DIR}/site-packages/*.la \
+ ${PYTHON_SITEPACKAGES_DIR}/*.la \
"
-FILES_${PN}-dbg = "\
- ${libdir}/${PYTHON_DIR}/site-packages/.debug \
- ${libdir}/${PYTHON_DIR}/site-packages/*/.debug \
- ${libdir}/${PYTHON_DIR}/site-packages/*/*/.debug \
+FILES_${PN}-dbg += "\
+ ${PYTHON_SITEPACKAGES_DIR}/.debug \
+ ${PYTHON_SITEPACKAGES_DIR}/*/.debug \
+ ${PYTHON_SITEPACKAGES_DIR}/*/*/.debug \
"
diff --git a/meta/classes/distutils.bbclass b/meta/classes/distutils.bbclass
index 245ef7d859..7e6fbc0c06 100644
--- a/meta/classes/distutils.bbclass
+++ b/meta/classes/distutils.bbclass
@@ -16,9 +16,7 @@ distutils_do_compile() {
}
distutils_stage_headers() {
- install -d ${STAGING_DIR_HOST}${libdir}/${PYTHON_DIR}/site-packages
- STAGING_INCDIR=${STAGING_INCDIR} \
- STAGING_LIBDIR=${STAGING_LIBDIR} \
+ install -d ${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR}
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
${STAGING_BINDIR_NATIVE}/python setup.py install_headers ${DISTUTILS_STAGE_HEADERS_ARGS} || \
oefatal "python setup.py install_headers execution failed."
@@ -27,18 +25,18 @@ distutils_stage_headers() {
distutils_stage_all() {
STAGING_INCDIR=${STAGING_INCDIR} \
STAGING_LIBDIR=${STAGING_LIBDIR} \
- install -d ${STAGING_DIR_HOST}${libdir}/${PYTHON_DIR}/site-packages
- PYTHONPATH=${STAGING_DIR_HOST}${libdir}/${PYTHON_DIR}/site-packages \
+ install -d ${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR}
+ PYTHONPATH=${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR} \
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
${STAGING_BINDIR_NATIVE}/python setup.py install ${DISTUTILS_STAGE_ALL_ARGS} || \
oefatal "python setup.py install (stage) execution failed."
}
distutils_do_install() {
- install -d ${D}${libdir}/${PYTHON_DIR}/site-packages
+ install -d ${D}${PYTHON_SITEPACKAGES_DIR}
STAGING_INCDIR=${STAGING_INCDIR} \
STAGING_LIBDIR=${STAGING_LIBDIR} \
- PYTHONPATH=${D}/${libdir}/${PYTHON_DIR}/site-packages \
+ PYTHONPATH=${D}/${PYTHON_SITEPACKAGES_DIR} \
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
${STAGING_BINDIR_NATIVE}/python setup.py install ${DISTUTILS_INSTALL_ARGS} || \
oefatal "python setup.py install execution failed."
@@ -59,15 +57,17 @@ distutils_do_install() {
done
fi
- rm -f ${D}${libdir}/${PYTHON_DIR}/site-packages/easy-install.pth
-
+ rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/easy-install.pth
+
#
# FIXME: Bandaid against wrong datadir computation
#
if test -e ${D}${datadir}/share; then
mv -f ${D}${datadir}/share/* ${D}${datadir}/
fi
-
+
+ # These are generated files, on really slow systems the storage/speed trade off
+ # might be worth it, but in general it isn't
find ${D}${libdir}/${PYTHON_DIR}/site-packages -iname '*.pyo' -exec rm {} \;
}
diff --git a/meta/classes/gtk-icon-cache.bbclass b/meta/classes/gtk-icon-cache.bbclass
index 524c2f0c46..dcabaf5442 100644
--- a/meta/classes/gtk-icon-cache.bbclass
+++ b/meta/classes/gtk-icon-cache.bbclass
@@ -9,7 +9,7 @@ if [ "x$D" != "x" ]; then
fi
# Update the pixbuf loaders in case they haven't been registered yet
-gdk-pixbuf-query-loaders > /etc/gtk-2.0/gdk-pixbuf.loaders
+GDK_PIXBUF_MODULEDIR=${libdir}/gdk-pixbuf-2.0/2.10.0/loaders gdk-pixbuf-query-loaders --update-cache
for icondir in /usr/share/icons/* ; do
if [ -d $icondir ] ; then
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 9fa0155c8a..14de3e1994 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -39,7 +39,7 @@ python () {
# If we don't do this we try and run the mapping hooks while parsing which is slow
# bitbake should really provide something to let us know this...
- if bb.data.getVar('__RUNQUEUE_DO_NOT_USE_EXTERNALLY', d, True) is not None:
+ if bb.data.getVar('BB_WORKERCONTEXT', d, True) is not None:
runtime_mapping_rename("PACKAGE_INSTALL", d)
runtime_mapping_rename("PACKAGE_INSTALL_ATTEMPTONLY", d)
}
@@ -155,7 +155,6 @@ insert_feed_uris () {
}
log_check() {
- set +x
for target in $*
do
lf_path="${WORKDIR}/temp/log.do_$target.${PID}"
@@ -164,14 +163,12 @@ log_check() {
if test -e "$lf_path"
then
- rootfs_${IMAGE_PKGTYPE}_log_check $target $lf_path
+ ${IMAGE_PKGTYPE}_log_check $target $lf_path
else
echo "Cannot find logfile [$lf_path]"
fi
echo "Logfile is clean"
done
-
- set -x
}
# set '*' as the rootpassword so the images
diff --git a/meta/classes/imagetest-qemu.bbclass b/meta/classes/imagetest-qemu.bbclass
index 4b3ddfc362..8301df8452 100644
--- a/meta/classes/imagetest-qemu.bbclass
+++ b/meta/classes/imagetest-qemu.bbclass
@@ -5,6 +5,9 @@ TEST_LOG ?= "${LOG_DIR}/qemuimagetests"
TEST_RESULT ?= "${TEST_DIR}/result"
TEST_TMP ?= "${TEST_DIR}/tmp"
TEST_SCEN ?= "sanity"
+TEST_STATUS ?= "${TEST_TMP}/status"
+TARGET_IPSAVE ?= "${TEST_TMP}/target_ip"
+TEST_SERIALIZE ?= "1"
python do_qemuimagetest() {
qemuimagetest_main(d)
@@ -34,10 +37,21 @@ def qemuimagetest_main(d):
machine = bb.data.getVar('MACHINE', d, 1)
pname = bb.data.getVar('PN', d, 1)
+ """function to save test cases running status"""
+ def teststatus(test, status, index, length):
+ test_status = bb.data.getVar('TEST_STATUS', d, 1)
+ if not os.path.exists(test_status):
+ raise bb.build.FuncFailed("No test status file existing under TEST_TMP")
+
+ f = open(test_status, "w")
+ f.write("\t%-15s%-15s%-15s%-15s\n" % ("Case", "Status", "Number", "Total"))
+ f.write("\t%-15s%-15s%-15s%-15s\n" % (case, status, index, length))
+ f.close()
+
"""funtion to run each case under scenario"""
def runtest(scen, case, fulltestpath):
resultpath = bb.data.getVar('TEST_RESULT', d, 1)
- testpath = bb.data.getVar('TEST_DIR', d, 1)
+ tmppath = bb.data.getVar('TEST_TMP', d, 1)
"""initialize log file for testcase"""
logpath = bb.data.getVar('TEST_LOG', d, 1)
@@ -45,20 +59,23 @@ def qemuimagetest_main(d):
caselog = os.path.join(logpath, "%s/log_%s.%s" % (scen, case, bb.data.getVar('DATETIME', d, 1)))
os.system("touch %s" % caselog)
-
"""export TEST_TMP, TEST_RESULT, DEPLOY_DIR and QEMUARCH"""
os.environ["PATH"] = bb.data.getVar("PATH", d, True)
- os.environ["TEST_TMP"] = testpath
+ os.environ["TEST_TMP"] = tmppath
os.environ["TEST_RESULT"] = resultpath
os.environ["DEPLOY_DIR"] = bb.data.getVar("DEPLOY_DIR", d, True)
os.environ["QEMUARCH"] = machine
os.environ["QEMUTARGET"] = pname
os.environ["DISPLAY"] = bb.data.getVar("DISPLAY", d, True)
os.environ["POKYBASE"] = bb.data.getVar("POKYBASE", d, True)
+ os.environ["TOPDIR"] = bb.data.getVar("TOPDIR", d, True)
+ os.environ["TEST_STATUS"] = bb.data.getVar("TEST_STATUS", d, True)
+ os.environ["TARGET_IPSAVE"] = bb.data.getVar("TARGET_IPSAVE", d, True)
+ os.environ["TEST_SERIALIZE"] = bb.data.getVar("TEST_SERIALIZE", d, True)
"""run Test Case"""
bb.note("Run %s test in scenario %s" % (case, scen))
- os.system("%s | tee -a %s" % (fulltestpath, caselog))
+ os.system("%s" % fulltestpath)
"""Generate testcase list in runtime"""
def generate_list(testlist):
@@ -96,6 +113,18 @@ def qemuimagetest_main(d):
list.append((item, casefile, fulltestcase))
return list
+ """Clean tmp folder for testing"""
+ def clean_tmp():
+ tmppath = bb.data.getVar('TEST_TMP', d, 1)
+
+ if os.path.isdir(tmppath):
+ for f in os.listdir(tmppath):
+ tmpfile = os.path.join(tmppath, f)
+ os.remove(tmpfile)
+
+ """Before running testing, clean temp folder first"""
+ clean_tmp()
+
"""check testcase folder and create test log folder"""
testpath = bb.data.getVar('TEST_DIR', d, 1)
bb.utils.mkdirhier(testpath)
@@ -105,7 +134,13 @@ def qemuimagetest_main(d):
tmppath = bb.data.getVar('TEST_TMP', d, 1)
bb.utils.mkdirhier(tmppath)
-
+
+ """initialize test status file"""
+ test_status = bb.data.getVar('TEST_STATUS', d, 1)
+ if os.path.exists(test_status):
+ os.remove(test_status)
+ os.system("touch %s" % test_status)
+
"""initialize result file"""
resultpath = bb.data.getVar('TEST_RESULT', d, 1)
bb.utils.mkdirhier(resultpath)
@@ -128,9 +163,11 @@ def qemuimagetest_main(d):
fulllist = generate_list(testlist)
"""Begin testing"""
- for test in fulllist:
+ for index,test in enumerate(fulllist):
(scen, case, fullpath) = test
+ teststatus(case, "running", index, (len(fulllist) - 1))
runtest(scen, case, fullpath)
+ teststatus(case, "finished", index, (len(fulllist) - 1))
"""Print Test Result"""
ret = 0
@@ -149,6 +186,9 @@ def qemuimagetest_main(d):
bb.note(line)
f.close()
+ """Clean temp files for testing"""
+ clean_tmp()
+
if ret != 0:
raise bb.build.FuncFailed("Some testcases fail, pls. check test result and test log!!!")
diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
index b06d021b1b..5d3ef92a2e 100644
--- a/meta/classes/insane.bbclass
+++ b/meta/classes/insane.bbclass
@@ -153,8 +153,7 @@ def package_qa_handle_error(error_class, error_msg, name, path, d):
if fatal:
bb.error("QA Issue: %s" % error_msg)
else:
- # Use bb.warn here when it works
- bb.note("QA Issue: %s" % error_msg)
+ bb.warn("QA Issue: %s" % error_msg)
package_qa_write_error(error_class, name, path, d)
return not fatal
@@ -348,8 +347,8 @@ def package_qa_check_license(workdir, d):
if not lic_files:
# just throw a warning now. Once licensing data in entered for enough of the recipes,
# this will be converted into error and False will be returned.
- bb.warn(pn + ": Recipe file does not have license file information (LIC_FILES_CHKSUM)")
- return True
+ bb.error(pn + ": Recipe file does not have license file information (LIC_FILES_CHKSUM)")
+ return False
srcdir = bb.data.getVar('S', d, True)
@@ -357,10 +356,10 @@ def package_qa_check_license(workdir, d):
(type, host, path, user, pswd, parm) = bb.decodeurl(url)
srclicfile = os.path.join(srcdir, path)
if not os.path.isfile(srclicfile):
- raise bb.build.FuncFailed( "LIC_FILES_CHKSUM points to invalid file: " + path)
+ raise bb.build.FuncFailed( pn + ": LIC_FILES_CHKSUM points to invalid file: " + path)
if 'md5' not in parm:
- bb.error("md5 checksum is not specified for ", url)
+ bb.error(pn + ": md5 checksum is not specified for ", url)
return False
beginline, endline = 0, 0
if 'beginline' in parm:
@@ -391,11 +390,11 @@ def package_qa_check_license(workdir, d):
os.unlink(tmplicfile)
if parm['md5'] == md5chksum:
- bb.note ("md5 checksum matched for ", url)
+ bb.note (pn + ": md5 checksum matched for ", url)
else:
- bb.error ("md5 data is not matching for ", url)
- bb.note ("The new md5 checksum is ", md5chksum)
- bb.note ("Check if the license information has changed, and if it has update the .bb file with correct license")
+ bb.error (pn + ": md5 data is not matching for ", url)
+ bb.error (pn + ": The new md5 checksum is ", md5chksum)
+ bb.error (pn + ": Check if the license information has changed in")
sane = False
return sane
@@ -428,11 +427,6 @@ def package_qa_check_staged(path,d):
path = os.path.join(root,file)
if file.endswith(".la"):
file_content = open(path).read()
- # Don't check installed status for native/cross packages
- if not bb.data.inherits_class("native", d) and not bb.data.inherits_class("cross", d):
- if installed in file_content:
- error_msg = "%s failed sanity test (installed) in path %s" % (file,root)
- sane = package_qa_handle_error(5, error_msg, "staging", path, d)
if workdir in file_content:
error_msg = "%s failed sanity test (workdir) in path %s" % (file,root)
sane = package_qa_handle_error(8, error_msg, "staging", path, d)
@@ -534,9 +528,9 @@ python do_package_qa () {
checks = [package_qa_check_rpath, package_qa_check_dev,
package_qa_check_perm, package_qa_check_arch,
- package_qa_check_desktop,
+ package_qa_check_desktop, package_qa_hash_style,
package_qa_check_dbg]
- # package_qa_check_buildpaths, package_qa_hash_style
+ # package_qa_check_buildpaths,
walk_sane = True
rdepends_sane = True
for package in packages.split():
@@ -581,7 +575,7 @@ python do_qa_configure() {
os.path.join(root,"config.log")
if "config.log" in files:
if os.system(statement) == 0:
- bb.fatal("""This autoconf log indicates errors, it looked at host includes.
+ bb.fatal("""This autoconf log indicates errors, it looked at host include and/or library paths while determining system capabilities.
Rerun configure task after fixing this. The path was '%s'""" % root)
if "configure.ac" in files:
@@ -605,5 +599,5 @@ Rerun configure task after fixing this. The path was '%s'""" % root)
Missing inherit gettext?""" % config)
if not package_qa_check_license(workdir, d):
- bb.fatal("Licensing warning: LIC_FILES_CHKSUM does not match, please fix")
+ bb.fatal("Licensing Error: LIC_FILES_CHKSUM does not match, please fix")
}
diff --git a/meta/classes/kernel-yocto.bbclass b/meta/classes/kernel-yocto.bbclass
index 8e820122ec..15802fabdf 100644
--- a/meta/classes/kernel-yocto.bbclass
+++ b/meta/classes/kernel-yocto.bbclass
@@ -1,60 +1,15 @@
S = "${WORKDIR}/linux"
-# Determine which branch to fetch and build. Not all branches are in the
-# upstream repo (but will be locally created after the fetchers run) so
-# a fallback branch needs to be chosen.
-#
-# The default machine 'UNDEFINED'. If the machine is not set to a specific
-# branch in this recipe or in a recipe extension, then we fallback to a
-# branch that is always present 'standard'. This sets the KBRANCH variable
-# and is used in the SRC_URI. The machine is then set back to ${MACHINE},
-# since futher processing will use that to create local branches
-python __anonymous () {
- import bb, re
-
- version = bb.data.getVar("LINUX_VERSION", d, 1)
- # 2.6.34 signifies the old-style tree, so we need some temporary
- # conditional processing based on the kernel version.
- if version == "2.6.34":
- bb.data.setVar("KBRANCH", "${KMACHINE}-${LINUX_KERNEL_TYPE}", d)
- bb.data.setVar("KMETA", "wrs_meta", d)
- mach = bb.data.getVar("KMACHINE", d, 1)
- if mach == "UNDEFINED":
- bb.data.setVar("KBRANCH", "standard", d)
- bb.data.setVar("KMACHINE", "${MACHINE}", d)
- # track the global configuration on a bootstrapped BSP
- bb.data.setVar("SRCREV_machine", "${SRCREV_meta}", d)
- bb.data.setVar("BOOTSTRAP", "t", d)
- else:
- # The branch for a build is:
- # yocto/<kernel type>/${KMACHINE} or
- # yocto/<kernel type>/${KMACHINE}/base
- bb.data.setVar("KBRANCH", bb.data.expand("yocto/${LINUX_KERNEL_TYPE}/${KMACHINE}",d), d)
- bb.data.setVar("KMETA", "meta", d)
-
- mach = bb.data.getVar("KMACHINE", d, 1)
- # drop the "/base" if it was on the KMACHINE
- kmachine = mach.replace('/base','')
- # and then write KMACHINE back
- bb.data.setVar('KMACHINE_' + bb.data.expand("${MACHINE}",d), kmachine, d)
-
- if mach == "UNDEFINED":
- bb.data.setVar("KBRANCH", "yocto/standard/base", d)
- bb.data.setVar('KMACHINE_' + bb.data.expand("${MACHINE}",d), bb.data.expand("${MACHINE}",d), d)
- bb.data.setVar("SRCREV_machine", "standard", d)
- bb.data.setVar("BOOTSTRAP", "t", d)
-}
-
do_patch() {
cd ${S}
if [ -f ${WORKDIR}/defconfig ]; then
defconfig=${WORKDIR}/defconfig
fi
- if [ -n "${BOOTSTRAP}" ]; then
- kbranch="yocto/${LINUX_KERNEL_TYPE}/${KMACHINE}"
- else
- kbranch=${KBRANCH}
+ kbranch=${KBRANCH}
+ if [ -n "${YOCTO_KERNEL_EXTERNAL_BRANCH}" ]; then
+ # switch from a generic to a specific branch
+ kbranch=${YOCTO_KERNEL_EXTERNAL_BRANCH}
fi
# simply ensures that a branch of the right name has been created
@@ -68,7 +23,7 @@ do_patch() {
if [ -n "${KERNEL_FEATURES}" ]; then
addon_features="--features ${KERNEL_FEATURES}"
fi
- updateme ${addon_features} ${ARCH} ${WORKDIR}
+ updateme ${addon_features} ${ARCH} ${MACHINE} ${WORKDIR}
if [ $? -ne 0 ]; then
echo "ERROR. Could not update ${kbranch}"
exit 1
@@ -83,11 +38,11 @@ do_patch() {
}
do_kernel_checkout() {
- if [ -d ${WORKDIR}/.git/refs/remotes/origin ]; then
+ if [ -d ${WORKDIR}/git/.git/refs/remotes/origin ]; then
echo "Fixing up git directory for ${LINUX_KERNEL_TYPE}/${KMACHINE}"
rm -rf ${S}
mkdir ${S}
- mv ${WORKDIR}/.git ${S}
+ mv ${WORKDIR}/git/.git ${S}
if [ -e ${S}/.git/packed-refs ]; then
cd ${S}
@@ -119,23 +74,34 @@ addtask kernel_checkout before do_patch after do_unpack
do_kernel_configme() {
echo "[INFO] doing kernel configme"
+ kbranch=${KBRANCH}
+ if [ -n "${YOCTO_KERNEL_EXTERNAL_BRANCH}" ]; then
+ # switch from a generic to a specific branch
+ kbranch=${YOCTO_KERNEL_EXTERNAL_BRANCH}
+ fi
+
cd ${S}
- configme --reconfig
+ configme --reconfig --output ${B} ${kbranch} ${MACHINE}
if [ $? -ne 0 ]; then
echo "ERROR. Could not configure ${KMACHINE}-${LINUX_KERNEL_TYPE}"
exit 1
fi
-
+
echo "# Global settings from linux recipe" >> ${B}/.config
echo "CONFIG_LOCALVERSION="\"${LINUX_VERSION_EXTENSION}\" >> ${B}/.config
}
-do_kernel_configcheck() {
- echo "[INFO] validating kernel configuration"
- cd ${B}/..
- kconf_check ${B}/.config ${B} ${S} ${B} ${LINUX_VERSION} ${KMACHINE}-${LINUX_KERNEL_TYPE}
-}
+python do_kernel_configcheck() {
+ import bb, re, string, sys, commands
+ bb.plain("NOTE: validating kernel configuration")
+
+ pathprefix = "export PATH=%s; " % bb.data.getVar('PATH', d, True)
+ cmd = bb.data.expand("cd ${B}/..; kconf_check -${LINUX_KERNEL_TYPE}-config-${LINUX_VERSION} ${B} ${S} ${B} ${KBRANCH}",d )
+ ret, result = commands.getstatusoutput("%s%s" % (pathprefix, cmd))
+
+ bb.plain( "%s" % result )
+}
# Ensure that the branches (BSP and meta) are on the locatios specified by
# their SRCREV values. If they are NOT on the right commits, the branches
@@ -148,37 +114,37 @@ do_validate_branches() {
target_meta_head="${SRCREV_meta}"
# nothing to do if bootstrapping
- if [ -n "${BOOTSTRAP}" ]; then
+ if [ -n "${YOCTO_KERNEL_EXTERNAL_BRANCH}" ]; then
return
fi
current=`git branch |grep \*|sed 's/^\* //'`
if [ -n "$target_branch_head" ] && [ "$branch_head" != "$target_branch_head" ]; then
if [ -n "${KERNEL_REVISION_CHECKING}" ]; then
- git show ${target_branch_head} > /dev/null 2>&1
- if [ $? -eq 0 ]; then
- echo "Forcing branch $current to ${target_branch_head}"
- git branch -m $current $current-orig
- git checkout -b $current ${target_branch_head}
- else
+ ref=`git show ${target_meta_head} 2>&1 | head -n1 || true`
+ if [ "$ref" = "fatal: bad object ${target_meta_head}" ]; then
echo "ERROR ${target_branch_head} is not a valid commit ID."
echo "The kernel source tree may be out of sync"
exit 1
- fi
+ else
+ echo "Forcing branch $current to ${target_branch_head}"
+ git branch -m $current $current-orig
+ git checkout -b $current ${target_branch_head}
+ fi
fi
fi
if [ "$meta_head" != "$target_meta_head" ]; then
if [ -n "${KERNEL_REVISION_CHECKING}" ]; then
- git show ${target_meta_head} > /dev/null 2>&1
- if [ $? -eq 0 ]; then
- echo "Forcing branch meta to ${target_meta_head}"
- git branch -m ${KMETA} ${KMETA}-orig
- git checkout -b ${KMETA} ${target_meta_head}
- else
+ ref=`git show ${target_meta_head} 2>&1 | head -n1 || true`
+ if [ "$ref" = "fatal: bad object ${target_meta_head}" ]; then
echo "ERROR ${target_meta_head} is not a valid commit ID"
echo "The kernel source tree may be out of sync"
exit 1
+ else
+ echo "Forcing branch meta to ${target_meta_head}"
+ git branch -m ${KMETA} ${KMETA}-orig
+ git checkout -b ${KMETA} ${target_meta_head}
fi
fi
fi
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index b2f8132abf..59de148cc8 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -40,8 +40,8 @@ HOST_CC_KERNEL_ARCH ?= "${TARGET_CC_KERNEL_ARCH}"
TARGET_LD_KERNEL_ARCH ?= ""
HOST_LD_KERNEL_ARCH ?= "${TARGET_LD_KERNEL_ARCH}"
-KERNEL_CC = "${CCACHE}${HOST_PREFIX}gcc${KERNEL_CCSUFFIX} ${HOST_CC_KERNEL_ARCH}"
-KERNEL_LD = "${LD}${KERNEL_LDSUFFIX} ${HOST_LD_KERNEL_ARCH}"
+KERNEL_CC = "${CCACHE}${HOST_PREFIX}gcc${KERNEL_CCSUFFIX} ${HOST_CC_KERNEL_ARCH}${TOOLCHAIN_OPTIONS}"
+KERNEL_LD = "${LD}${KERNEL_LDSUFFIX} ${HOST_LD_KERNEL_ARCH}${TOOLCHAIN_OPTIONS}"
# Where built kernel lies in the kernel tree
KERNEL_OUTPUT ?= "arch/${ARCH}/boot/${KERNEL_IMAGETYPE}"
@@ -173,7 +173,7 @@ kernel_do_install() {
scripts/ihex2fw scripts/kallsyms scripts/pnmtologo scripts/basic/docproc \
scripts/basic/fixdep scripts/basic/hash scripts/dtc/dtc \
scripts/genksyms/genksyms scripts/kconfig/conf scripts/mod/mk_elfconfig \
- scripts/mod/modpost"
+ scripts/mod/modpost scripts/recordmcount"
rm -rf $kerneldir/scripts/*.o
rm -rf $kerneldir/scripts/basic/*.o
rm -rf $kerneldir/scripts/kconfig/*.o
@@ -185,7 +185,7 @@ kernel_do_install() {
}
sysroot_stage_all_append() {
- sysroot_stage_dir ${D}/kernel ${SYSROOT_DESTDIR}${STAGING_KERNEL_DIR}
+ sysroot_stage_dir ${D}/kernel ${SYSROOT_DESTDIR}/kernel
}
@@ -292,13 +292,16 @@ module_conf_rfcomm = "alias bt-proto-3 rfcomm"
python populate_packages_prepend () {
def extract_modinfo(file):
- import re
- tmpfile = os.tmpnam()
+ import tempfile, re
+ tempfile.tempdir = bb.data.getVar("WORKDIR", d, 1)
+ tf = tempfile.mkstemp()
+ tmpfile = tf[1]
cmd = "PATH=\"%s\" %sobjcopy -j .modinfo -O binary %s %s" % (bb.data.getVar("PATH", d, 1), bb.data.getVar("HOST_PREFIX", d, 1) or "", file, tmpfile)
os.system(cmd)
f = open(tmpfile)
l = f.read().split("\000")
f.close()
+ os.close(tf[0])
os.unlink(tmpfile)
exp = re.compile("([^=]+)=(.*)")
vals = {}
@@ -441,7 +444,7 @@ python populate_packages_prepend () {
metapkg = "kernel-modules"
bb.data.setVar('ALLOW_EMPTY_' + metapkg, "1", d)
bb.data.setVar('FILES_' + metapkg, "", d)
- blacklist = [ 'kernel-dev', 'kernel-image', 'kernel-base', 'kernel-vmlinux' ]
+ blacklist = [ 'kernel-dev', 'kernel-image', 'kernel-base', 'kernel-vmlinux', 'perf' ]
for l in module_deps.values():
for i in l:
pkg = module_pattern % legitimize_package_name(re.match(module_regex, os.path.basename(i)).group(1))
@@ -484,16 +487,16 @@ kernel_do_deploy() {
if test "x${KERNEL_IMAGETYPE}" = "xuImage" ; then
if test -e arch/${ARCH}/boot/uImage ; then
- cp arch/${ARCH}/boot/uImage ${DEPLOYDIR}/uImage-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
+ cp arch/${ARCH}/boot/uImage ${DEPLOYDIR}/${KERNEL_IMAGE_BASE_NAME}.bin
elif test -e arch/${ARCH}/boot/compressed/vmlinux ; then
${OBJCOPY} -O binary -R .note -R .comment -S arch/${ARCH}/boot/compressed/vmlinux linux.bin
- uboot-mkimage -A ${ARCH} -O linux -T kernel -C none -a ${UBOOT_ENTRYPOINT} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin ${DEPLOYDIR}/uImage-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
+ uboot-mkimage -A ${ARCH} -O linux -T kernel -C none -a ${UBOOT_ENTRYPOINT} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin ${DEPLOYDIR}/${KERNEL_IMAGE_BASE_NAME}.bin
rm -f linux.bin
else
${OBJCOPY} -O binary -R .note -R .comment -S vmlinux linux.bin
rm -f linux.bin.gz
gzip -9 linux.bin
- uboot-mkimage -A ${ARCH} -O linux -T kernel -C gzip -a ${UBOOT_ENTRYPOINT} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin.gz ${DEPLOYDIR}/uImage-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
+ uboot-mkimage -A ${ARCH} -O linux -T kernel -C gzip -a ${UBOOT_ENTRYPOINT} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin.gz ${DEPLOYDIR}/${KERNEL_IMAGE_BASE_NAME}.bin
rm -f linux.bin.gz
fi
fi
diff --git a/meta/classes/libc-package.bbclass b/meta/classes/libc-package.bbclass
index 4709b33c0e..733f26b85e 100644
--- a/meta/classes/libc-package.bbclass
+++ b/meta/classes/libc-package.bbclass
@@ -95,9 +95,6 @@ do_install() {
mv ${WORKDIR}/SUPPORTED.tmp ${WORKDIR}/SUPPORTED
done
rm -f ${D}{sysconfdir}/rpc
- rm -f ${D}${includedir}/scsi/sg.h
- rm -f ${D}${includedir}/scsi/scsi_ioctl.h
- rm -f ${D}${includedir}/scsi/scsi.h
rm -rf ${D}${datadir}/zoneinfo
rm -rf ${D}${libexecdir}/getconf
}
diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass
new file mode 100644
index 0000000000..97d4e4e41e
--- /dev/null
+++ b/meta/classes/license.bbclass
@@ -0,0 +1,103 @@
+# Populates LICENSE_DIRECTORY as set in poky.conf with the license files as set by
+# LIC_FILES_CHKSUM.
+# TODO:
+# - We should also enable the ability to put the generated license directory onto the
+# rootfs
+# - Gather up more generic licenses
+# - There is a real issue revolving around license naming standards. See license names
+# licenses.conf and compare them to the license names in the recipes. You'll see some
+# differences and that should be corrected.
+
+LICENSE_DIRECTORY ??= "${DEPLOY_DIR_IMAGE}/licenses"
+LICSSTATEDIR = "${WORKDIR}/license-destdir/"
+
+addtask populate_lic after do_patch before do_package
+do_populate_lic[dirs] = "${LICSSTATEDIR}/${PN}"
+do_populate_lic[cleandirs] = "${LICSSTATEDIR}"
+python do_populate_lic() {
+ """
+ Populate LICENSE_DIRECTORY with licenses.
+ """
+ import os
+ import bb
+ import shutil
+
+ # All the license types for the package
+ license_types = bb.data.getVar('LICENSE', d, True)
+ # All the license files for the package
+ lic_files = bb.data.getVar('LIC_FILES_CHKSUM', d, True)
+ pn = bb.data.getVar('PN', d, True)
+ # The base directory we wrangle licenses to
+ destdir = os.path.join(bb.data.getVar('LICSSTATEDIR', d, True), pn)
+ # The license files are located in S/LIC_FILE_CHECKSUM.
+ srcdir = bb.data.getVar('S', d, True)
+ # Directory we store the generic licenses as set in poky.conf
+ generic_directory = bb.data.getVar('COMMON_LICENSE_DIR', d, True)
+ if not generic_directory:
+ raise bb.build.FuncFailed("COMMON_LICENSE_DIR is unset. Please set this in your distro config")
+
+ if not lic_files:
+ # No recipe should have an invalid license file. This is checked else
+ # where, but let's be pedantic
+ bb.note(pn + ": Recipe file does not have license file information.")
+ return True
+
+ for url in lic_files.split():
+ (type, host, path, user, pswd, parm) = bb.decodeurl(url)
+ # We want the license file to be copied into the destination
+ srclicfile = os.path.join(srcdir, path)
+ ret = bb.copyfile(srclicfile, os.path.join(destdir, os.path.basename(path)))
+ # If the copy didn't occur, something horrible went wrong and we fail out
+ if ret is False or ret == 0:
+ bb.warn("%s could not be copied for some reason. It may not exist. WARN for now." % srclicfile)
+
+ # This takes some explaining.... we now are going to go an try to symlink
+ # to a generic file. But, with the way LICENSE works, a package can have multiple
+ # licenses. Some of them are, for example, GPLv2+, which means it can use that version
+ # of GPLv2 specified in it's license, or a later version of GPLv2. For the purposes of
+ # what we're doing here, we really don't track license revisions (although we may want to)
+ # So, we strip out the + and link to a generic GPLv2
+ #
+ # That said, there are some entries into LICENSE that either have no generic (bzip, zlib, ICS)
+ # or the LICENSE is messy (Apache 2.0 .... when they mean Apache-2.0). This should be corrected
+ # but it's outside of scope for this.
+ #
+ # Also, you get some clever license fields with logic in the field.
+ # I'm sure someone has written a logic parser for these fields, but if so, I don't know where it is.
+ # So what I do is just link to every license mentioned in the license field.
+
+ for license_type in license_types.replace('&', '').replace('+', '').replace('&', '').replace('|', '').replace('(', '').replace(')', '').split():
+ if os.path.isfile(os.path.join(generic_directory, license_type)):
+ gen_lic_dest = os.path.join(bb.data.getVar('LICENSE_DIRECTORY', d, True), "common-licenses")
+ try:
+ bb.mkdirhier(gen_lic_dest)
+ except:
+ pass
+
+ try:
+ bb.copyfile(os.path.join(generic_directory, license_type), os.path.join(gen_lic_dest, license_type))
+ except:
+ bb.warn("%s: No generic license file exists for: %s at %s" % (pn, license_type, generic_directory))
+ pass
+ try:
+ os.symlink(os.path.join(gen_lic_dest, license_type), os.path.join(destdir, "generic_" + license_type))
+ except:
+ bb.warn("%s: No generic license file exists for: %s at %s" % (pn, license_type, generic_directory))
+ pass
+ else:
+ bb.warn("%s: Something went wrong with copying: %s to %s" % (pn, license_type, generic_directory))
+ bb.warn("This could be either because we do not have a generic for this license or the LICENSE field is incorrect")
+ pass
+}
+
+SSTATETASKS += "do_populate_lic"
+do_populate_lic[sstate-name] = "populate-lic"
+do_populate_lic[sstate-inputdirs] = "${LICSSTATEDIR}"
+do_populate_lic[sstate-outputdirs] = "${LICENSE_DIRECTORY}/"
+
+python do_populate_lic_setscene () {
+ sstate_setscene(d)
+}
+addtask do_populate_lic_setscene
+
+
diff --git a/meta/classes/native.bbclass b/meta/classes/native.bbclass
index 3ca9d62845..545a73eb8b 100644
--- a/meta/classes/native.bbclass
+++ b/meta/classes/native.bbclass
@@ -60,6 +60,9 @@ base_prefix = "${STAGING_DIR_NATIVE}"
prefix = "${STAGING_DIR_NATIVE}${prefix_native}"
exec_prefix = "${STAGING_DIR_NATIVE}${prefix_native}"
+do_populate_sysroot[sstate-inputdirs] = "${SYSROOT_DESTDIR}/${STAGING_DIR_NATIVE}"
+do_populate_sysroot[sstate-outputdirs] = "${STAGING_DIR_NATIVE}"
+
# Since we actually install these into situ there is no staging prefix
STAGING_DIR_HOST = ""
STAGING_DIR_TARGET = ""
@@ -117,3 +120,5 @@ do_package_write_ipk[noexec] = "1"
do_package_write_deb[noexec] = "1"
do_package_write_rpm[noexec] = "1"
+do_populate_sysroot[stamp-extra-info] = ""
+do_package[stamp-extra-info] = ""
diff --git a/meta/classes/nativesdk.bbclass b/meta/classes/nativesdk.bbclass
index 154bd827b6..587a907c44 100644
--- a/meta/classes/nativesdk.bbclass
+++ b/meta/classes/nativesdk.bbclass
@@ -19,6 +19,8 @@ python () {
#STAGING_DIR_HOST = "${STAGING_DIR}/${HOST_SYS}-nativesdk"
#STAGING_DIR_TARGET = "${STAGING_DIR}/${BASEPKG_TARGET_SYS}-nativesdk"
+STAGING_DIR_HOST = "${STAGING_DIR}/${BASEPKG_HOST_SYS}"
+STAGING_DIR_TARGET = "${STAGING_DIR}/${BASEPKG_TARGET_SYS}"
HOST_ARCH = "${SDK_ARCH}"
HOST_VENDOR = "${SDK_VENDOR}"
@@ -79,4 +81,5 @@ python __anonymous () {
bb.data.setVar("OVERRIDES", bb.data.getVar("OVERRIDES", d, False) + ":virtclass-nativesdk", d)
}
-
+do_populate_sysroot[stamp-extra-info] = ""
+do_package[stamp-extra-info] = ""
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index d39c694de5..8f58ad03f1 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -289,6 +289,8 @@ python package_do_split_locales() {
if mainpkg.find('-dev'):
mainpkg = mainpkg.replace('-dev', '')
+ summary = bb.data.getVar('SUMMARY', d, True) or pn
+ description = bb.data.getVar('DESCRIPTION', d, True) or ""
for l in locales:
ln = legitimize_package_name(l)
pkg = pn + '-locale-' + ln
@@ -296,7 +298,8 @@ python package_do_split_locales() {
bb.data.setVar('FILES_' + pkg, os.path.join(datadir, 'locale', l), d)
bb.data.setVar('RDEPENDS_' + pkg, '%s virtual-locale-%s' % (mainpkg, ln), d)
bb.data.setVar('RPROVIDES_' + pkg, '%s-locale %s-translation' % (pn, ln), d)
- bb.data.setVar('DESCRIPTION_' + pkg, '%s translation for %s' % (l, pn), d)
+ bb.data.setVar('SUMMARY_' + pkg, '%s - %s translations' % (summary, l), d)
+ bb.data.setVar('DESCRIPTION_' + pkg, '%s This package contains language translation files for the %s locale.' % (description, l), d)
bb.data.setVar('PACKAGES', ' '.join(packages), d)
@@ -497,7 +500,8 @@ python emit_pkgdata() {
pkgdest = bb.data.getVar('PKGDEST', d, 1)
pkgdatadir = bb.data.getVar('PKGDESTWORK', d, True)
- lf = bb.utils.lockfile(bb.data.expand("${PACKAGELOCK}", d))
+ # Take shared lock since we're only reading, not writing
+ lf = bb.utils.lockfile(bb.data.expand("${PACKAGELOCK}", d), True)
data_file = pkgdatadir + bb.data.expand("/${PN}" , d)
f = open(data_file, 'w')
@@ -514,6 +518,7 @@ python emit_pkgdata() {
write_if_exists(sf, pkg, 'PV')
write_if_exists(sf, pkg, 'PR')
write_if_exists(sf, pkg, 'DESCRIPTION')
+ write_if_exists(sf, pkg, 'SUMMARY')
write_if_exists(sf, pkg, 'RDEPENDS')
write_if_exists(sf, pkg, 'RPROVIDES')
write_if_exists(sf, pkg, 'RRECOMMENDS')
@@ -558,7 +563,7 @@ if [ x"$D" = "x" ]; then
fi
}
-RPMDEPS = "${STAGING_LIBDIR_NATIVE}/rpm/rpmdeps"
+RPMDEPS = "${STAGING_LIBDIR_NATIVE}/rpm/bin/rpmdeps"
# Collect perfile run-time dependency metadata
# Output:
@@ -606,7 +611,7 @@ python package_do_filedeps() {
# Determine dependencies
for pkg in packages.split():
- if pkg.endswith('-dbg'):
+ if pkg.endswith('-dbg') or pkg.find('-locale-') != -1 or pkg.find('-localedata-') != -1 or pkg.find('-gconv-') != -1 or pkg.find('-charmap-') != -1 or pkg.startswith('kernel-module-') != -1:
continue
# Process provides
@@ -649,6 +654,7 @@ python package_do_shlibs() {
shlibs_dir = bb.data.getVar('SHLIBSDIR', d, True)
shlibswork_dir = bb.data.getVar('SHLIBSWORKDIR', d, True)
+ # Take shared lock since we're only reading, not writing
lf = bb.utils.lockfile(bb.data.expand("${PACKAGELOCK}", d))
def linux_so(root, path, file):
@@ -878,6 +884,7 @@ python package_do_pkgconfig () {
if hdr == 'Requires':
pkgconfig_needed[pkg] += exp.replace(',', ' ').split()
+ # Take shared lock since we're only reading, not writing
lf = bb.utils.lockfile(bb.data.expand("${PACKAGELOCK}", d))
for pkg in packages.split():
@@ -1038,6 +1045,8 @@ python package_depchains() {
for suffix in pkgs:
for pkg in pkgs[suffix]:
+ if bb.data.getVarFlag('RRECOMMENDS_' + pkg, 'nodeprrecs', d):
+ continue
(base, func) = pkgs[suffix][pkg]
if suffix == "-dev":
pkg_adddeprrecs(pkg, base, suffix, func, depends, d)
@@ -1062,7 +1071,7 @@ PACKAGEFUNCS ?= "perform_packagecopy \
package_depchains \
emit_pkgdata"
-python package_do_package () {
+python do_package () {
packages = (bb.data.getVar('PACKAGES', d, True) or "").split()
if len(packages) < 1:
bb.debug(1, "No packages to build, skipping do_package")
@@ -1091,6 +1100,7 @@ do_package[sstate-plaindirs] = "${PKGD} ${PKGDEST}"
do_package[sstate-inputdirs] = "${PKGDESTWORK} ${SHLIBSWORKDIR}"
do_package[sstate-outputdirs] = "${PKGDATA_DIR} ${SHLIBSDIR}"
do_package[sstate-lockfile] = "${PACKAGELOCK}"
+do_package[stamp-extra-info] = "${MACHINE}"
do_package_setscene[dirs] = "${STAGING_DIR}"
python do_package_setscene () {
@@ -1106,8 +1116,6 @@ do_package_write[noexec] = "1"
do_build[recrdeptask] += "do_package_write"
addtask package_write before do_build after do_package
-EXPORT_FUNCTIONS do_package do_package_write
-
#
# Helper functions for the package writing classes
#
diff --git a/meta/classes/package_deb.bbclass b/meta/classes/package_deb.bbclass
index 792a2b3aef..52bd264ead 100644
--- a/meta/classes/package_deb.bbclass
+++ b/meta/classes/package_deb.bbclass
@@ -67,6 +67,151 @@ python do_package_deb_install () {
os.putenv('PATH', path)
}
+#
+# Update the Packages index files in ${DEPLOY_DIR_DEB}
+#
+package_update_index_deb () {
+
+ local debarchs=""
+
+ if [ ! -z "${DEPLOY_KEEP_PACKAGES}" ]; then
+ return
+ fi
+
+ for arch in ${PACKAGE_ARCHS}; do
+ sdkarch=`echo $arch | sed -e 's/${HOST_ARCH}/${SDK_ARCH}/'`
+ if [ -e ${DEPLOY_DIR_DEB}/$arch ]; then
+ debarchs="$debarchs $arch"
+ fi
+ if [ -e ${DEPLOY_DIR_DEB}/$sdkarch-nativesdk ]; then
+ debarchs="$debarchs $sdkarch-nativesdk"
+ fi
+ done
+
+ for arch in $debarchs; do
+ if [ ! -d ${DEPLOY_DIR_DEB}/$arch ]; then
+ continue;
+ fi
+ cd ${DEPLOY_DIR_DEB}/$arch
+ dpkg-scanpackages . | bzip2 > Packages.bz2
+ echo "Label: $arch" > Release
+ done
+}
+
+#
+# install a bunch of packages using apt
+# the following shell variables needs to be set before calling this func:
+# INSTALL_ROOTFS_DEB - install root dir
+# INSTALL_BASEARCH_DEB - install base architecutre
+# INSTALL_ARCHS_DEB - list of available archs
+# INSTALL_PACKAGES_NORMAL_DEB - packages to be installed
+# INSTALL_PACKAGES_ATTEMPTONLY_DEB - packages attemped to be installed only
+# INSTALL_PACKAGES_LINGUAS_DEB - additional packages for uclibc
+# INSTALL_TASK_DEB - task name
+
+package_install_internal_deb () {
+
+ local target_rootfs="${INSTALL_ROOTFS_DEB}"
+ local dpkg_arch="${INSTALL_BASEARCH_DEB}"
+ local archs="${INSTALL_ARCHS_DEB}"
+ local package_to_install="${INSTALL_PACKAGES_NORMAL_DEB}"
+ local package_attemptonly="${INSTALL_PACKAGES_ATTEMPTONLY_DEB}"
+ local package_lingusa="${INSTALL_PACKAGES_LINGUAS_DEB}"
+ local task="${INSTALL_TASK_DEB}"
+
+ rm -f ${STAGING_ETCDIR_NATIVE}/apt/sources.list.rev
+ rm -f ${STAGING_ETCDIR_NATIVE}/apt/preferences
+
+ priority=1
+ for arch in $archs; do
+ if [ ! -d ${DEPLOY_DIR_DEB}/$arch ]; then
+ continue;
+ fi
+
+ echo "deb file:${DEPLOY_DIR_DEB}/$arch/ ./" >> ${STAGING_ETCDIR_NATIVE}/apt/sources.list.rev
+ (echo "Package: *"
+ echo "Pin: release l=$arch"
+ echo "Pin-Priority: $(expr 800 + $priority)"
+ echo) >> ${STAGING_ETCDIR_NATIVE}/apt/preferences
+ priority=$(expr $priority + 5)
+ done
+
+ tac ${STAGING_ETCDIR_NATIVE}/apt/sources.list.rev > ${STAGING_ETCDIR_NATIVE}/apt/sources.list
+
+ cat "${STAGING_ETCDIR_NATIVE}/apt/apt.conf.sample" \
+ | sed -e "s#Architecture \".*\";#Architecture \"${dpkg_arch}\";#" \
+ | sed -e "s:#ROOTFS#:${target_rootfs}:g" \
+ > "${STAGING_ETCDIR_NATIVE}/apt/apt-${task}.conf"
+
+ export APT_CONFIG="${STAGING_ETCDIR_NATIVE}/apt/apt-${task}.conf"
+
+ mkdir -p ${target_rootfs}/var/dpkg/info
+ mkdir -p ${target_rootfs}/var/dpkg/updates
+
+ > ${target_rootfs}/var/dpkg/status
+ > ${target_rootfs}/var/dpkg/available
+
+ apt-get update
+
+ # Uclibc builds don't provide this stuff..
+ if [ x${TARGET_OS} = "xlinux" ] || [ x${TARGET_OS} = "xlinux-gnueabi" ] ; then
+ if [ ! -z "${package_lingusa}" ]; then
+ apt-get install glibc-localedata-i18n --force-yes --allow-unauthenticated
+ if [ $? -ne 0 ]; then
+ exit 1
+ fi
+ for i in ${package_lingusa}; do
+ apt-get install $i --force-yes --allow-unauthenticated
+ if [ $? -ne 0 ]; then
+ exit 1
+ fi
+ done
+ fi
+ fi
+
+ # normal install
+ for i in ${package_to_install}; do
+ apt-get install $i --force-yes --allow-unauthenticated
+ if [ $? -ne 0 ]; then
+ exit 1
+ fi
+ done
+
+ rm -f ${WORKDIR}/temp/log.do_${task}-attemptonly.${PID}
+ if [ ! -z "${package_attemptonly}" ]; then
+ for i in ${package_attemptonly}; do
+ apt-get install $i --force-yes --allow-unauthenticated >> ${WORKDIR}/temp/log.do_${task}-attemptonly.${PID} || true
+ done
+ fi
+
+ find ${target_rootfs} -name \*.dpkg-new | for i in `cat`; do
+ mv $i `echo $i | sed -e's,\.dpkg-new$,,'`
+ done
+
+ # Mark all packages installed
+ sed -i -e "s/Status: install ok unpacked/Status: install ok installed/;" ${target_rootfs}/var/dpkg/status
+}
+
+deb_log_check() {
+ target="$1"
+ lf_path="$2"
+
+ lf_txt="`cat $lf_path`"
+ for keyword_die in "E:"
+ do
+ if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1
+ then
+ echo "log_check: There were error messages in the logfile"
+ echo -e "log_check: Matched keyword: [$keyword_die]\n"
+ echo "$lf_txt" | grep -v log_check | grep -C 5 -i "$keyword_die"
+ echo ""
+ do_exit=1
+ fi
+ done
+ test "$do_exit" = 1 && exit 1
+ true
+}
+
python do_package_deb () {
import re, copy
import textwrap
@@ -81,12 +226,6 @@ python do_package_deb () {
bb.error("PKGWRITEDIRDEB not defined, unable to package")
return
- dvar = bb.data.getVar('D', d, True)
- if not dvar:
- bb.error("D not defined, unable to package")
- return
- bb.mkdirhier(dvar)
-
packages = bb.data.getVar('PACKAGES', d, True)
if not packages:
bb.debug(1, "PACKAGES not defined, nothing to package")
@@ -101,9 +240,10 @@ python do_package_deb () {
bb.debug(1, "No packages; nothing to do")
return
+ pkgdest = bb.data.getVar('PKGDEST', d, True)
+
for pkg in packages.split():
localdata = bb.data.createCopy(d)
- pkgdest = bb.data.getVar('PKGDEST', d, True)
root = "%s/%s" % (pkgdest, pkg)
lf = bb.utils.lockfile(root + ".lock")
diff --git a/meta/classes/package_ipk.bbclass b/meta/classes/package_ipk.bbclass
index 5ddd6c66ea..3c2472bc10 100644
--- a/meta/classes/package_ipk.bbclass
+++ b/meta/classes/package_ipk.bbclass
@@ -62,6 +62,69 @@ python package_ipk_install () {
}
#
+# install a bunch of packages using opkg
+# the following shell variables needs to be set before calling this func:
+# INSTALL_ROOTFS_IPK - install root dir
+# INSTALL_CONF_IPK - configuration file
+# INSTALL_PACKAGES_NORMAL_IPK - packages to be installed
+# INSTALL_PACKAGES_ATTEMPTONLY_IPK - packages attemped to be installed only
+# INSTALL_PACKAGES_LINGUAS_IPK - additional packages for uclibc
+# INSTALL_TASK_IPK - task name
+
+package_install_internal_ipk() {
+
+ local target_rootfs="${INSTALL_ROOTFS_IPK}"
+ local conffile="${INSTALL_CONF_IPK}"
+ local package_to_install="${INSTALL_PACKAGES_NORMAL_IPK}"
+ local package_attemptonly="${INSTALL_PACKAGES_ATTEMPTONLY_IPK}"
+ local package_lingusa="${INSTALL_PACKAGES_LINGUAS_IPK}"
+ local task="${INSTALL_TASK_IPK}"
+
+ mkdir -p ${target_rootfs}${localstatedir}/lib/opkg/
+
+ local ipkg_args="-f ${conffile} -o ${target_rootfs} --force-overwrite"
+
+ opkg-cl ${ipkg_args} update
+
+ # Uclibc builds don't provide this stuff...
+ if [ x${TARGET_OS} = "xlinux" ] || [ x${TARGET_OS} = "xlinux-gnueabi" ] ; then
+ if [ ! -z "${package_lingusa}" ]; then
+ for i in ${package_lingusa}; do
+ opkg-cl ${ipkg_args} install $i
+ done
+ fi
+ fi
+
+ if [ ! -z "${package_to_install}" ]; then
+ opkg-cl ${ipkg_args} install ${package_to_install}
+ fi
+
+ if [ ! -z "${package_attemptonly}" ]; then
+ opkg-cl ${ipkg_args} install ${package_attemptonly} > "${WORKDIR}/temp/log.do_${task}_attemptonly.${PID}" || true
+ fi
+}
+
+ipk_log_check() {
+ target="$1"
+ lf_path="$2"
+
+ lf_txt="`cat $lf_path`"
+ for keyword_die in "exit 1" "Collected errors" ERR Fail
+ do
+ if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1
+ then
+ echo "log_check: There were error messages in the logfile"
+ echo -e "log_check: Matched keyword: [$keyword_die]\n"
+ echo "$lf_txt" | grep -v log_check | grep -C 5 -i "$keyword_die"
+ echo ""
+ do_exit=1
+ fi
+ done
+ test "$do_exit" = 1 && exit 1
+ true
+}
+
+#
# Update the Packages index files in ${DEPLOY_DIR_IPK}
#
package_update_index_ipk () {
@@ -133,17 +196,12 @@ python do_package_ipk () {
workdir = bb.data.getVar('WORKDIR', d, True)
outdir = bb.data.getVar('PKGWRITEDIRIPK', d, True)
- dvar = bb.data.getVar('D', d, True)
tmpdir = bb.data.getVar('TMPDIR', d, True)
pkgdest = bb.data.getVar('PKGDEST', d, True)
- if not workdir or not outdir or not dvar or not tmpdir:
+ if not workdir or not outdir or not tmpdir:
bb.error("Variables incorrectly set, unable to package")
return
- if not os.path.exists(dvar):
- bb.debug(1, "Nothing installed, nothing to do")
- return
-
packages = bb.data.getVar('PACKAGES', d, True)
if not packages or packages == '':
bb.debug(1, "No packages; nothing to do")
diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass
index fbe0626d6e..cc262dc831 100644
--- a/meta/classes/package_rpm.bbclass
+++ b/meta/classes/package_rpm.bbclass
@@ -15,6 +15,8 @@ python package_rpm_install () {
bb.fatal("package_rpm_install not implemented!")
}
+RPMCONF_TARGET_BASE = "${DEPLOY_DIR_RPM}/solvedb"
+RPMCONF_HOST_BASE = "${DEPLOY_DIR_RPM}/solvedb-sdk"
#
# Update the Packages depsolver db in ${DEPLOY_DIR_RPM}
#
@@ -26,15 +28,18 @@ package_update_index_rpm () {
fi
packagedirs=""
+ packagedirs_sdk=""
for arch in $rpmarchs ; do
sdkarch=`echo $arch | sed -e 's/${HOST_ARCH}/${SDK_ARCH}/'`
+ extension="-nativesdk"
+ if [ "$sdkarch" = "all" -o "$sdkarch" = "any" -o "$sdkarch" = "noarch" ]; then
+ extension=""
+ fi
packagedirs="$packagedirs ${DEPLOY_DIR_RPM}/$arch"
- #packagedirs="$packagedirs ${DEPLOY_DIR_RPM}/$sdkarch-nativesdk"
+ packagedirs_sdk="$packagedirs_sdk ${DEPLOY_DIR_RPM}/$sdkarch$extension"
done
- #packagedirs="$packagedirs ${DEPLOY_DIR_RPM}/${SDK_ARCH}-${TARGET_ARCH}-canadian"
-
- cat /dev/null > ${DEPLOY_DIR_RPM}/solvedb.conf
+ cat /dev/null > ${RPMCONF_TARGET_BASE}.conf
for pkgdir in $packagedirs; do
if [ -e $pkgdir/ ]; then
echo "Generating solve db for $pkgdir..."
@@ -46,10 +51,27 @@ package_update_index_rpm () {
-D "_dbpath $pkgdir/solvedb" --justdb \
--noaid --nodeps --noorder --noscripts --notriggers --noparentdirs --nolinktos --stats \
--ignoresize --nosignature --nodigest \
- -D "_dbi_tags_3 Packages:Name:Basenames:Providename:Nvra" \
- -D "__dbi_cdb create mp_mmapsize=128Mb mp_size=1Mb nofsync" \
+ -D "__dbi_txn create nofsync" \
+ $pkgdir/solvedb/manifest
+ echo $pkgdir/solvedb >> ${RPMCONF_TARGET_BASE}.conf
+ fi
+ done
+
+ cat /dev/null > ${RPMCONF_HOST_BASE}.conf
+ for pkgdir in $packagedirs_sdk; do
+ if [ -e $pkgdir/ ]; then
+ echo "Generating solve db for $pkgdir..."
+ rm -rf $pkgdir/solvedb
+ mkdir -p $pkgdir/solvedb
+ echo "# Dynamically generated solve manifest" >> $pkgdir/solvedb/manifest
+ find $pkgdir -maxdepth 1 -type f >> $pkgdir/solvedb/manifest
+ ${RPM} -i --replacepkgs --replacefiles --oldpackage \
+ -D "_dbpath $pkgdir/solvedb" --justdb \
+ --noaid --nodeps --noorder --noscripts --notriggers --noparentdirs --nolinktos --stats \
+ --ignoresize --nosignature --nodigest \
+ -D "__dbi_txn create nofsync" \
$pkgdir/solvedb/manifest
- echo $pkgdir/solvedb >> ${DEPLOY_DIR_RPM}/solvedb.conf
+ echo $pkgdir/solvedb >> ${RPMCONF_HOST_BASE}.conf
fi
done
}
@@ -59,16 +81,223 @@ package_update_index_rpm () {
# generated depsolver db's...
#
package_generate_rpm_conf () {
- printf "_solve_dbpath " > ${DEPLOY_DIR_RPM}/solvedb.macro
+ printf "_solve_dbpath " > ${RPMCONF_TARGET_BASE}.macro
+ colon=false
+ for each in `cat ${RPMCONF_TARGET_BASE}.conf` ; do
+ if [ "$colon" == true ]; then
+ printf ":" >> ${RPMCONF_TARGET_BASE}.macro
+ fi
+ printf "%s" $each >> ${RPMCONF_TARGET_BASE}.macro
+ colon=true
+ done
+ printf "\n" >> ${RPMCONF_TARGET_BASE}.macro
+
+ printf "_solve_dbpath " > ${RPMCONF_HOST_BASE}.macro
colon=false
- for each in `cat ${DEPLOY_DIR_RPM}/solvedb.conf` ; do
+ for each in `cat ${RPMCONF_HOST_BASE}.conf` ; do
if [ "$colon" == true ]; then
- printf ":" >> ${DEPLOY_DIR_RPM}/solvedb.macro
+ printf ":" >> ${RPMCONF_HOST_BASE}.macro
fi
- printf "%s" $each >> ${DEPLOY_DIR_RPM}/solvedb.macro
+ printf "%s" $each >> ${RPMCONF_HOST_BASE}.macro
colon=true
done
- printf "\n" >> ${DEPLOY_DIR_RPM}/solvedb.macro
+ printf "\n" >> ${RPMCONF_HOST_BASE}.macro
+}
+
+rpm_log_check() {
+ target="$1"
+ lf_path="$2"
+
+ lf_txt="`cat $lf_path`"
+ for keyword_die in "Cannot find package" "exit 1" ERR Fail
+ do
+ if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1
+ then
+ echo "log_check: There were error messages in the logfile"
+ echo -e "log_check: Matched keyword: [$keyword_die]\n"
+ echo "$lf_txt" | grep -v log_check | grep -C 5 -i "$keyword_die"
+ echo ""
+ do_exit=1
+ fi
+ done
+ test "$do_exit" = 1 && exit 1
+ true
+}
+
+
+#
+# Resolve package names to filepaths
+# resolve_pacakge <pkgname> <solvdb conffile>
+#
+resolve_package_rpm () {
+ local pkg="$1"
+ local conffile="$2"
+ local pkg_name=""
+ for solve in `cat ${conffile}`; do
+ pkg_name=$(${RPM} -D "_dbpath $solve" -D "__dbi_txn create nofsync" -q --yaml $pkg | grep -i 'Packageorigin' | cut -d : -f 2)
+ if [ -n "$pkg_name" ]; then
+ break;
+ fi
+ done
+ echo $pkg_name
+}
+
+#
+# install a bunch of packages using rpm
+# the following shell variables needs to be set before calling this func:
+# INSTALL_ROOTFS_RPM - install root dir
+# INSTALL_PLATFORM_RPM - main platform
+# INSTALL_PLATFORM_EXTRA_RPM - extra platform
+# INSTALL_CONFBASE_RPM - configuration file base name
+# INSTALL_PACKAGES_NORMAL_RPM - packages to be installed
+# INSTALL_PACKAGES_ATTEMPTONLY_RPM - packages attemped to be installed only
+# INSTALL_PACKAGES_LINGUAS_RPM - additional packages for uclibc
+# INSTALL_PROVIDENAME_RPM - content for provide name
+# INSTALL_TASK_RPM - task name
+
+package_install_internal_rpm () {
+
+ local target_rootfs="${INSTALL_ROOTFS_RPM}"
+ local platform="${INSTALL_PLATFORM_RPM}"
+ local platform_extra="${INSTALL_PLATFORM_EXTRA_RPM}"
+ local confbase="${INSTALL_CONFBASE_RPM}"
+ local package_to_install="${INSTALL_PACKAGES_NORMAL_RPM}"
+ local package_attemptonly="${INSTALL_PACKAGES_ATTEMPTONLY_RPM}"
+ local package_lingusa="${INSTALL_PACKAGES_LINGUAS_RPM}"
+ local providename="${INSTALL_PROVIDENAME_RPM}"
+ local task="${INSTALL_TASK_RPM}"
+
+ # Setup base system configuration
+ mkdir -p ${target_rootfs}/etc/rpm/
+ echo "${platform}-unknown-linux" >${target_rootfs}/etc/rpm/platform
+ if [ ! -z "$platform_extra" ]; then
+ for pt in $platform_extra ; do
+ echo "$pt-unknown-linux" >> ${target_rootfs}/etc/rpm/platform
+ done
+ fi
+
+ # Tell RPM that the "/" directory exist and is available
+ mkdir -p ${target_rootfs}/etc/rpm/sysinfo
+ echo "/" >${target_rootfs}/etc/rpm/sysinfo/Dirnames
+ if [ ! -z "$providename" ]; then
+ >>${target_rootfs}/etc/rpm/sysinfo/Providename
+ for provide in $providename ; do
+ echo $provide >> ${target_rootfs}/etc/rpm/sysinfo/Providename
+ done
+ fi
+
+ # Setup manifest of packages to install...
+ mkdir -p ${target_rootfs}/install
+ echo "# Install manifest" > ${target_rootfs}/install/install.manifest
+
+ # Uclibc builds don't provide this stuff...
+ if [ x${TARGET_OS} = "xlinux" ] || [ x${TARGET_OS} = "xlinux-gnueabi" ] ; then
+ if [ ! -z "${package_lingusa}" ]; then
+ for pkg in ${package_lingusa}; do
+ echo "Processing $pkg..."
+ pkg_name=$(resolve_package_rpm $pkg ${confbase}.conf)
+ if [ -z "$pkg_name" ]; then
+ echo "Unable to find package $pkg!"
+ exit 1
+ fi
+ echo $pkg_name >> ${IMAGE_ROOTFS}/install/install.manifest
+ done
+ fi
+ fi
+
+ if [ ! -z "${package_to_install}" ]; then
+ for pkg in ${package_to_install} ; do
+ echo "Processing $pkg..."
+ pkg_name=$(resolve_package_rpm $pkg ${confbase}.conf)
+ if [ -z "$pkg_name" ]; then
+ echo "Unable to find package $pkg!"
+ exit 1
+ fi
+ echo $pkg_name >> ${target_rootfs}/install/install.manifest
+ done
+ fi
+
+ # Generate an install solution by doing a --justdb install, then recreate it with
+ # an actual package install!
+ ${RPM} -D "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \
+ -D "_dbpath ${target_rootfs}/install" -D "`cat ${confbase}.macro`" \
+ -D "__dbi_txn create nofsync" \
+ -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \
+ ${target_rootfs}/install/install.manifest
+
+ if [ ! -z "${package_attemptonly}" ]; then
+ echo "Adding attempt only packages..."
+ for pkg in ${package_attemptonly} ; do
+ echo "Processing $pkg..."
+ pkg_name=$(resolve_package_rpm $pkg ${confbase}.conf)
+ if [ -z "$pkg_name" ]; then
+ echo "Unable to find package $pkg!"
+ exit 1
+ fi
+ echo "Attempting $pkg_name..." >> "${WORKDIR}/temp/log.do_${task}_attemptonly.${PID}"
+ ${RPM} -D "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \
+ -D "_dbpath ${target_rootfs}/install" -D "`cat ${confbase}.macro`" \
+ -D "__dbi_txn create nofsync private" \
+ -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \
+ $pkg_name >> "${WORKDIR}/temp/log.do_${task}_attemptonly.${PID}" || true
+ done
+ fi
+
+ #### Note: 'Recommends' is an arbitrary tag that means _SUGGESTS_ in Poky..
+ # Add any recommended packages to the image
+ # RPM does not solve for recommended packages because they are optional...
+ # So we query them and tree them like the ATTEMPTONLY packages above...
+ # Change the loop to "1" to run this code...
+ loop=0
+ if [ $loop -eq 1 ]; then
+ echo "Processing recommended packages..."
+ cat /dev/null > ${target_rootfs}/install/recommend.list
+ while [ $loop -eq 1 ]; do
+ # Dump the full set of recommends...
+ ${RPM} -D "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \
+ -D "_dbpath ${IMAGE_ROOTFS}/install" -D "`cat ${confbase}.macro`" \
+ -D "__dbi_txn create nofsync private" \
+ -qa --qf "[%{RECOMMENDS}\n]" | sort -u > ${target_rootfs}/install/recommend
+ # Did we add more to the list?
+ grep -v -x -F -f ${target_rootfs}/install/recommend.list ${target_rootfs}/install/recommend > ${target_rootfs}/install/recommend.new || true
+ # We don't want to loop unless there is a change to the list!
+ loop=0
+ cat ${target_rootfs}/install/recommend.new | \
+ while read pkg ; do
+ # Ohh there was a new one, we'll need to loop again...
+ loop=1
+ echo "Processing $pkg..."
+ pkg_name=$(resolve_package $pkg ${confbase}.conf)
+ if [ -z "$pkg_name" ]; then
+ echo "Unable to find package $pkg." >> "${WORKDIR}/temp/log.do_${task}_recommend.${PID}"
+ continue
+ fi
+ echo "Attempting $pkg_name..." >> "${WORKDIR}/temp/log.do_{task}_recommend.${PID}"
+ ${RPM} -D "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \
+ -D "_dbpath ${target_rootfs}/install" -D "`cat ${confbase}.macro`" \
+ -D "__dbi_txn create nofsync private" \
+ -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \
+ $pkg_name >> "${WORKDIR}/temp/log.do_${task}_recommend.${PID}" 2>&1 || true
+ done
+ cat ${target_rootfs}/install/recommend.list ${target_rootfs}/install/recommend.new | sort -u > ${target_rootfs}/install/recommend.new.list
+ mv -f ${target_rootfs}/install/recommend.new.list ${target_rootfs}/install/recommend.list
+ rm ${target_rootfs}/install/recommend ${target_rootfs}/install/recommend.new
+ done
+ fi
+
+ # Now that we have a solution, pull out a list of what to install...
+ echo "Manifest: ${target_rootfs}/install/install.manifest"
+ ${RPM} -D "_dbpath ${target_rootfs}/install" -qa --yaml \
+ -D "__dbi_txn create nofsync private" \
+ | grep -i 'Packageorigin' | cut -d : -f 2 > ${target_rootfs}/install/install_solution.manifest
+
+ # Attempt install
+ ${RPM} --root ${target_rootfs} \
+ -D "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \
+ -D "_dbpath ${rpmlibdir}" \
+ --noscripts --notriggers --noparentdirs --nolinktos \
+ -D "__dbi_txn create nofsync private" \
+ -Uhv ${target_rootfs}/install/install_solution.manifest
}
python write_specfile () {
@@ -193,7 +422,7 @@ python write_specfile () {
splitname = pkgname
- splitsummary = (bb.data.getVar('SUMMARY', d, True) or bb.data.getVar('DESCRIPTION', d, True) or ".")
+ splitsummary = (bb.data.getVar('SUMMARY', localdata, True) or bb.data.getVar('DESCRIPTION', localdata, True) or ".")
splitversion = (bb.data.getVar('PV', localdata, True) or "").replace('-', '+')
splitrelease = (bb.data.getVar('PR', localdata, True) or "")
splitepoch = (bb.data.getVar('PE', localdata, True) or "")
@@ -530,6 +759,8 @@ python do_package_rpm () {
cmd = cmd + " --define '_use_internal_dependency_generator 0'"
cmd = cmd + " --define '__find_requires " + outdepends + "'"
cmd = cmd + " --define '__find_provides " + outprovides + "'"
+ cmd = cmd + " --define '_unpackaged_files_terminate_build 0'"
+ cmd = cmd + " --define 'debug_package %{nil}'"
cmd = cmd + " -bb " + outspecfile
# Build the spec file!
diff --git a/meta/classes/patch.bbclass b/meta/classes/patch.bbclass
index 7ba8abb72c..80fd45f0e3 100644
--- a/meta/classes/patch.bbclass
+++ b/meta/classes/patch.bbclass
@@ -58,9 +58,8 @@ python patch_do_patch() {
continue
if not local:
- bb.fetch.init([url],d)
url = bb.encodeurl((type, host, path, user, pswd, []))
- local = os.path.join('/', bb.fetch.localpath(url, d))
+ local = os.path.join('/', bb.fetch2.localpath(url, d))
local = bb.data.expand(local, d)
if "striplevel" in parm:
@@ -126,6 +125,7 @@ python patch_do_patch() {
raise bb.build.FuncFailed(str(sys.exc_value))
resolver.Resolve()
}
+patch_do_patch[vardepsexclude] = "DATE SRCDATE"
addtask patch after do_unpack
do_patch[dirs] = "${WORKDIR}"
diff --git a/meta/classes/poky-autobuild-notifier.bbclass b/meta/classes/poky-autobuild-notifier.bbclass
index 24b85c4612..9ab3d064ed 100644
--- a/meta/classes/poky-autobuild-notifier.bbclass
+++ b/meta/classes/poky-autobuild-notifier.bbclass
@@ -48,15 +48,15 @@ def do_autobuilder_failure_report(event):
addhandler poky_autobuilder_notifier_eventhandler
python poky_autobuilder_notifier_eventhandler() {
from bb import note, error, data
- from bb.event import NotHandled, getName
+ from bb.event import getName
if e.data is None:
- return NotHandled
+ return
name = getName(e)
if name == "TaskFailed":
do_autobuilder_failure_report(e)
- return NotHandled
+ return
}
diff --git a/meta/classes/poky-image.bbclass b/meta/classes/poky-image.bbclass
index 5f34ad11d2..225584bcda 100644
--- a/meta/classes/poky-image.bbclass
+++ b/meta/classes/poky-image.bbclass
@@ -2,6 +2,9 @@
#
# Copyright (C) 2007 OpenedHand LTD
+LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
+ file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
# IMAGE_FEATURES control content of images built with Poky.
#
# By default we install task-poky-boot and task-base packages - this gives us
@@ -79,7 +82,7 @@ POKY_BASE_INSTALL = '\
\
${@base_contains("IMAGE_FEATURES", ["nfs-server", "dev-pkgs"], "task-poky-nfs-server-dev", "",d)} \
\
- ${@base_contains("IMAGE_FEATURES", "package-management", "${ROOTFS_PKGMANAGE}", "",d)} \
+ ${@base_contains("IMAGE_FEATURES", "package-management", "${ROOTFS_PKGMANAGE}", "${ROOTFS_PKGMANAGE_BOOTSTRAP}",d)} \
${@base_contains("IMAGE_FEATURES", "qt4-pkgs", "task-poky-qt-demos", "",d)} \
${POKY_EXTRA_INSTALL} \
'
diff --git a/meta/classes/poky.bbclass b/meta/classes/poky.bbclass
deleted file mode 100644
index 7d3c28ffe2..0000000000
--- a/meta/classes/poky.bbclass
+++ /dev/null
@@ -1,29 +0,0 @@
-PREMIRRORS_append () {
-bzr://.*/.* http://pokylinux.org/sources/
-cvs://.*/.* http://pokylinux.org/sources/
-git://.*/.* http://pokylinux.org/sources/
-hg://.*/.* http://pokylinux.org/sources/
-osc://.*/.* http://pokylinux.org/sources/
-p4://.*/.* http://pokylinux.org/sources/
-svk://.*/.* http://pokylinux.org/sources/
-svn://.*/.* http://pokylinux.org/sources/
-
-bzr://.*/.* http://autobuilder.pokylinux.org/sources/
-cvs://.*/.* http://autobuilder.pokylinux.org/sources/
-git://.*/.* http://autobuilder.pokylinux.org/sources/
-hg://.*/.* http://autobuilder.pokylinux.org/sources/
-osc://.*/.* http://autobuilder.pokylinux.org/sources/
-p4://.*/.* http://autobuilder.pokylinux.org/sources/
-svk://.*/.* http://autobuilder.pokylinux.org/sources/
-svn://.*/.* http://autobuilder.pokylinux.org/sources/
-}
-
-MIRRORS_append () {
-ftp://.*/.* http://pokylinux.org/sources/
-http://.*/.* http://pokylinux.org/sources/
-https://.*/.* http://pokylinux.org/sources/
-
-ftp://.*/.* http://autobuilder.pokylinux.org/sources/
-http://.*/.* http://autobuilder.pokylinux.org/sources/
-https://.*/.* http://autobuilder.pokylinux.org/sources/
-}
diff --git a/meta/classes/populate_sdk.bbclass b/meta/classes/populate_sdk.bbclass
new file mode 100644
index 0000000000..7e260ef38d
--- /dev/null
+++ b/meta/classes/populate_sdk.bbclass
@@ -0,0 +1,82 @@
+inherit meta toolchain-scripts
+inherit populate_sdk_${IMAGE_PKGTYPE}
+
+SDK_DIR = "${WORKDIR}/sdk"
+SDK_OUTPUT = "${SDK_DIR}/image"
+SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
+
+SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${TARGET_SYS}"
+
+TOOLCHAIN_HOST_TASK ?= "task-sdk-host task-cross-canadian-${TRANSLATED_TARGET_ARCH}"
+TOOLCHAIN_TARGET_TASK ?= "task-poky-standalone-sdk-target task-poky-standalone-sdk-target-dbg"
+TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${DISTRO_VERSION}"
+
+RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}"
+DEPENDS = "virtual/fakeroot-native sed-native"
+
+PID = "${@os.getpid()}"
+
+EXCLUDE_FROM_WORLD = "1"
+
+fakeroot do_populate_sdk() {
+ rm -rf ${SDK_OUTPUT}
+ mkdir -p ${SDK_OUTPUT}
+
+ populate_sdk_${IMAGE_PKGTYPE}
+
+ # Don't ship any libGL in the SDK
+ rm -rf ${SDK_OUTPUT}/${SDKPATHNATIVE}${libdir_nativesdk}/libGL*
+
+ # Can copy pstage files here
+ # target_pkgs=`cat ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/var/lib/opkg/status | grep Package: | cut -f 2 -d ' '`
+
+ # Fix or remove broken .la files
+ #rm -f ${SDK_OUTPUT}/${SDKPATHNATIVE}/lib/*.la
+ rm -f ${SDK_OUTPUT}/${SDKPATHNATIVE}${libdir_nativesdk}/*.la
+
+ # Link the ld.so.cache file into the hosts filesystem
+ ln -s /etc/ld.so.cache ${SDK_OUTPUT}/${SDKPATHNATIVE}/etc/ld.so.cache
+
+ # Setup site file for external use
+ siteconfig=${SDK_OUTPUT}/${SDKPATH}/site-config-${MULTIMACH_TARGET_SYS}
+ touch $siteconfig
+ for sitefile in ${CONFIG_SITE} ; do
+ cat $sitefile >> $siteconfig
+ done
+
+ toolchain_create_sdk_env_script
+
+ # Add version information
+ versionfile=${SDK_OUTPUT}/${SDKPATH}/version-${MULTIMACH_TARGET_SYS}
+ touch $versionfile
+ echo 'Distro: ${DISTRO}' >> $versionfile
+ echo 'Distro Version: ${DISTRO_VERSION}' >> $versionfile
+ echo 'Metadata Revision: ${METADATA_REVISION}' >> $versionfile
+ echo 'Timestamp: ${DATETIME}' >> $versionfile
+
+ # Package it up
+ mkdir -p ${SDK_DEPLOY}
+ cd ${SDK_OUTPUT}
+ tar --owner=root --group=root -cj --file=${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.bz2 .
+}
+
+populate_sdk_log_check() {
+ for target in $*
+ do
+ lf_path="${WORKDIR}/temp/log.do_$target.${PID}"
+
+ echo "log_check: Using $lf_path as logfile"
+
+ if test -e "$lf_path"
+ then
+ ${IMAGE_PKGTYPE}_log_check $target $lf_path
+ else
+ echo "Cannot find logfile [$lf_path]"
+ fi
+ echo "Logfile is clean"
+ done
+}
+
+do_populate_sdk[nostamp] = "1"
+do_populate_sdk[recrdeptask] = "do_package_write"
+addtask populate_sdk before do_build after do_install
diff --git a/meta/classes/populate_sdk_deb.bbclass b/meta/classes/populate_sdk_deb.bbclass
new file mode 100644
index 0000000000..d563c28674
--- /dev/null
+++ b/meta/classes/populate_sdk_deb.bbclass
@@ -0,0 +1,60 @@
+do_populate_sdk[depends] += "dpkg-native:do_populate_sysroot apt-native:do_populate_sysroot bzip2-native:do_populate_sysroot"
+do_populate_sdk[recrdeptask] += "do_package_write_deb"
+
+
+populate_sdk_post_deb () {
+
+ local target_rootfs=$1
+
+ cp -r ${STAGING_ETCDIR_NATIVE}/apt ${target_rootfs}/etc
+}
+
+fakeroot populate_sdk_deb () {
+
+ package_update_index_deb
+
+ export INSTALL_TASK_DEB="populate_sdk"
+ export INSTALL_PACKAGES_LINGUAS_DEB=""
+ export INSTALL_PACKAGES_ATTEMPTONLY_DEB=""
+
+ #install target
+ echo "Installing TARGET packages"
+ export INSTALL_ROOTFS_DEB="${SDK_OUTPUT}/${SDKTARGETSYSROOT}"
+ export INSTALL_BASEARCH_DEB="${DPKG_ARCH}"
+ export INSTALL_ARCHS_DEB="${PACKAGE_ARCHS}"
+ export INSTALL_PACKAGES_NORMAL_DEB="${TOOLCHAIN_TARGET_TASK}"
+
+ package_install_internal_deb
+ populate_sdk_post_deb ${INSTALL_ROOTFS_DEB}
+
+ populate_sdk_log_check populate_sdk
+
+ #install host
+ echo "Installing HOST packages"
+ export INSTALL_ROOTFS_DEB="${SDK_OUTPUT}"
+ export INSTALL_BASEARCH_DEB="${SDK_ARCH}"
+ export INSTALL_PACKAGES_NORMAL_DEB="${TOOLCHAIN_HOST_TASK}"
+ INSTALL_ARCHS_DEB=""
+ for arch in ${PACKAGE_ARCHS}; do
+ sdkarch=`echo $arch | sed -e 's/${HOST_ARCH}/${SDK_ARCH}/'`
+ extension="-nativesdk"
+ if [ "$sdkarch" = "all" -o "$sdkarch" = "any" -o "$sdkarch" = "noarch" ]; then
+ extension=""
+ fi
+ if [ -e ${DEPLOY_DIR_DEB}/$sdkarch$extension ]; then
+ INSTALL_ARCHS_DEB="$INSTALL_ARCHS_DEB $sdkarch$extension"
+ fi
+ done
+ export INSTALL_ARCHS_DEB
+
+ package_install_internal_deb
+ populate_sdk_post_deb ${SDK_OUTPUT}/${SDKPATHNATIVE}
+
+ #move remainings
+ install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}/var/dpkg
+ mv ${SDK_OUTPUT}/var/dpkg/* ${SDK_OUTPUT}/${SDKPATHNATIVE}/var/dpkg
+ rm -rf ${SDK_OUTPUT}/var
+
+ populate_sdk_log_check populate_sdk
+}
+
diff --git a/meta/classes/populate_sdk_ipk.bbclass b/meta/classes/populate_sdk_ipk.bbclass
new file mode 100644
index 0000000000..79259f80d6
--- /dev/null
+++ b/meta/classes/populate_sdk_ipk.bbclass
@@ -0,0 +1,44 @@
+do_populate_sdk[depends] += "opkg-native:do_populate_sysroot opkg-utils-native:do_populate_sysroot"
+do_populate_sdk[recrdeptask] += "do_package_write_ipk"
+
+fakeroot populate_sdk_ipk() {
+
+ rm -f ${IPKGCONF_TARGET}
+ touch ${IPKGCONF_TARGET}
+ rm -f ${IPKGCONF_SDK}
+ touch ${IPKGCONF_SDK}
+
+ package_update_index_ipk
+ package_generate_ipkg_conf
+
+ export INSTALL_PACKAGES_ATTEMPTONLY_IPK=""
+ export INSTALL_PACKAGES_LINGUAS_IPK=""
+ export INSTALL_TASK_IPK="populate_sdk"
+
+ #install target
+ export INSTALL_ROOTFS_IPK="${SDK_OUTPUT}/${SDKTARGETSYSROOT}"
+ export INSTALL_CONF_IPK="${IPKGCONF_TARGET}"
+ export INSTALL_PACKAGES_NORMAL_IPK="${TOOLCHAIN_TARGET_TASK}"
+
+ package_install_internal_ipk
+
+ #install host
+ export INSTALL_ROOTFS_IPK="${SDK_OUTPUT}"
+ export INSTALL_CONF_IPK="${IPKGCONF_SDK}"
+ export INSTALL_PACKAGES_NORMAL_IPK="${TOOLCHAIN_HOST_TASK}"
+
+ package_install_internal_ipk
+
+ #post clean up
+ install -d ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/${sysconfdir}
+ install -m 0644 ${IPKGCONF_TARGET} ${IPKGCONF_SDK} ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/${sysconfdir}/
+
+ install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}
+ install -m 0644 ${IPKGCONF_SDK} ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}/
+
+ install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/opkg
+ mv ${SDK_OUTPUT}/var/lib/opkg/* ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/opkg/
+ rm -Rf ${SDK_OUTPUT}/var
+
+ populate_sdk_log_check populate_sdk
+}
diff --git a/meta/classes/populate_sdk_rpm.bbclass b/meta/classes/populate_sdk_rpm.bbclass
new file mode 100644
index 0000000000..e1abbad17b
--- /dev/null
+++ b/meta/classes/populate_sdk_rpm.bbclass
@@ -0,0 +1,80 @@
+do_populate_sdk[depends] += "rpm-native:do_populate_sysroot"
+do_populate_sdk[recrdeptask] += "do_package_write_rpm"
+
+rpmlibdir = "/var/lib/rpm"
+RPMOPTS="--dbpath ${rpmlibdir} --define='_openall_before_chroot 1'"
+RPM="rpm ${RPMOPTS}"
+
+
+populate_sdk_post_rpm () {
+
+ local target_rootfs=$1
+
+ # remove lock files
+ rm -f ${target_rootfs}/__db.*
+
+ # Move manifests into the directory with the logs
+ mv ${target_rootfs}/install/*.manifest ${T}/
+
+ # Remove all remaining resolver files
+ rm -rf ${target_rootfs}/install
+}
+
+fakeroot populate_sdk_rpm () {
+
+ package_update_index_rpm
+ package_generate_rpm_conf
+
+ export INSTALL_PACKAGES_ATTEMPTONLY_RPM=""
+ export INSTALL_PACKAGES_LINGUAS_RPM=""
+ export INSTALL_PROVIDENAME_RPM="/bin/sh"
+ export INSTALL_TASK_RPM="populate_sdk"
+
+
+ #install target
+ export INSTALL_ROOTFS_RPM="${SDK_OUTPUT}/${SDKTARGETSYSROOT}"
+ export INSTALL_PLATFORM_RPM="${TARGET_ARCH}"
+ export INSTALL_PLATFORM_EXTRA_RPM="${PACKAGE_ARCHS}"
+ export INSTALL_CONFBASE_RPM="${RPMCONF_TARGET_BASE}"
+ export INSTALL_PACKAGES_NORMAL_RPM="${TOOLCHAIN_TARGET_TASK}"
+
+ package_install_internal_rpm
+ populate_sdk_post_rpm ${INSTALL_ROOTFS_RPM}
+
+ #install host
+ export INSTALL_ROOTFS_RPM="${SDK_OUTPUT}"
+ export INSTALL_PLATFORM_RPM="${SDK_ARCH}"
+ export INSTALL_CONFBASE_RPM="${RPMCONF_HOST_BASE}"
+ export INSTALL_PACKAGES_NORMAL_RPM="${TOOLCHAIN_HOST_TASK}"
+ INSTALL_PLATFORM_EXTRA_RPM=""
+ for arch in ${PACKAGE_ARCHS}; do
+ sdkarch=`echo $arch | sed -e 's/${HOST_ARCH}/${SDK_ARCH}/'`
+ extension="-nativesdk"
+ if [ "$sdkarch" = "all" -o "$sdkarch" = "any" -o "$sdkarch" = "noarch" ]; then
+ extension=""
+ fi
+ if [ -e ${DEPLOY_DIR_RPM}/$sdkarch$extension ]; then
+ INSTALL_PLATFORM_EXTRA_RPM="$INSTALL_PLATFORM_EXTRA_RPM $sdkarch"
+ fi
+ done
+ export INSTALL_PLATFORM_EXTRA_RPM
+
+ package_install_internal_rpm
+ populate_sdk_post_rpm ${INSTALL_ROOTFS_RPM}
+
+ # move host RPM library data
+ install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/rpm
+ mv ${SDK_OUTPUT}${rpmlibdir}/* ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/rpm/
+ rm -Rf ${SDK_OUTPUT}/var
+
+ install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}
+ mv ${SDK_OUTPUT}/etc/* ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}/
+ rm -rf ${SDK_OUTPUT}/etc
+
+ populate_sdk_log_check populate_sdk
+
+ # Workaround so the parser knows we need the resolve_package function!
+ if false ; then
+ resolve_package_rpm foo ${RPMCONF_TARGET_BASE}.conf || true
+ fi
+}
diff --git a/meta/classes/python-dir.bbclass b/meta/classes/python-dir.bbclass
new file mode 100644
index 0000000000..a072a93877
--- /dev/null
+++ b/meta/classes/python-dir.bbclass
@@ -0,0 +1,2 @@
+PYTHON_DIR = "python${PYTHON_BASEVERSION}"
+PYTHON_SITEPACKAGES_DIR = "${libdir}/${PYTHON_DIR}/site-packages"
diff --git a/meta/classes/qmake2.bbclass b/meta/classes/qmake2.bbclass
index e6810260f0..5eebd8ec42 100644
--- a/meta/classes/qmake2.bbclass
+++ b/meta/classes/qmake2.bbclass
@@ -3,7 +3,7 @@
#
inherit qmake_base
-DEPENDS_prepend = "qt4-tools-native"
+DEPENDS_prepend = "qt4-tools-native "
export QMAKESPEC = "${STAGING_DATADIR}/qt4/mkspecs/${TARGET_OS}-oe-g++"
export OE_QMAKE_UIC = "${STAGING_BINDIR_NATIVE}/uic4"
@@ -19,5 +19,6 @@ export OE_QMAKE_INCDIR_QT = "${STAGING_INCDIR}/qt4"
export OE_QMAKE_LIBDIR_QT = "${STAGING_LIBDIR}"
export OE_QMAKE_LIBS_QT = "qt"
export OE_QMAKE_LIBS_X11 = "-lXext -lX11 -lm"
+export OE_QMAKE_LIBS_X11SM = "-lSM -lICE"
export OE_QMAKE_LRELEASE = "${STAGING_BINDIR_NATIVE}/lrelease4"
export OE_QMAKE_LUPDATE = "${STAGING_BINDIR_NATIVE}/lupdate4"
diff --git a/meta/classes/qt4e.bbclass b/meta/classes/qt4e.bbclass
new file mode 100644
index 0000000000..670605ba4b
--- /dev/null
+++ b/meta/classes/qt4e.bbclass
@@ -0,0 +1,18 @@
+DEPENDS_prepend = "${@["qt4-embedded ", ""][(bb.data.getVar('PN', d, 1)[:12] == 'qt4-embedded')]}"
+
+inherit qmake2
+
+QT_DIR_NAME = "qtopia"
+QT_LIBINFIX = "E"
+# override variables set by qmake-base to compile Qt/Embedded apps
+#
+export QMAKESPEC = "${STAGING_DATADIR}/${QT_DIR_NAME}/mkspecs/${TARGET_OS}-oe-g++"
+export OE_QMAKE_INCDIR_QT = "${STAGING_INCDIR}/${QT_DIR_NAME}"
+export OE_QMAKE_LIBDIR_QT = "${STAGING_LIBDIR}"
+export OE_QMAKE_LIBS_QT = "qt"
+export OE_QMAKE_LIBS_X11 = ""
+export OE_QMAKE_EXTRA_MODULES = "network"
+EXTRA_QMAKEVARS_PRE += " QT_LIBINFIX=${QT_LIBINFIX} "
+
+# Qt4 uses atomic instructions not supported in thumb mode
+ARM_INSTRUCTION_SET = "arm"
diff --git a/meta/classes/qt4x11.bbclass b/meta/classes/qt4x11.bbclass
new file mode 100644
index 0000000000..abb1d9d2e4
--- /dev/null
+++ b/meta/classes/qt4x11.bbclass
@@ -0,0 +1,9 @@
+DEPENDS_prepend = "${@["qt4-x11-free ", ""][(bb.data.getVar('PN', d, 1)[:12] == 'qt4-x11-free')]}"
+
+inherit qmake2
+
+QT_DIR_NAME = "qt4"
+QT_LIBINFIX = ""
+
+# Qt4 uses atomic instructions not supported in thumb mode
+ARM_INSTRUCTION_SET = "arm"
diff --git a/meta/classes/rm_work.bbclass b/meta/classes/rm_work.bbclass
index 53fcda23a9..7cbdb17623 100644
--- a/meta/classes/rm_work.bbclass
+++ b/meta/classes/rm_work.bbclass
@@ -14,22 +14,46 @@ RMWORK_ORIG_TASK := "${BB_DEFAULT_TASK}"
BB_DEFAULT_TASK = "rm_work_all"
do_rm_work () {
- # Ensure pseudo is no longer active
- if [ -d ${WORKDIR}/pseudo ]; then
- ${FAKEROOT} -S
- fi
cd ${WORKDIR}
for dir in *
do
if [ `basename ${S}` = $dir ]; then
rm -rf $dir
- elif [ $dir != 'temp' ]; then
+ # The package and package-split directories are retained by sstate for
+ # do_package so we retain them here too. Anything in sstate 'plaindirs'
+ # should be retained. Also retain logs and other files in temp.
+ elif [ $dir != 'temp' ] && [ $dir != 'package' ] && [ $dir != 'package-split' ]; then
rm -rf $dir
fi
done
# Need to add pseudo back or subsqeuent work in this workdir
# might fail since setscene may not rerun to recreate it
mkdir ${WORKDIR}/pseudo/
+
+ # Change normal stamps into setscene stamps as they better reflect the
+ # fact WORKDIR is now empty
+ cd `dirname ${STAMP}`
+ for i in `basename ${STAMP}`*
+ do
+ for j in ${SSTATETASKS}
+ do
+ case $i in
+ *do_setscene*)
+ break
+ ;;
+ *_setscene*)
+ i=dummy
+ break
+ ;;
+ *$j|*$j.*)
+ mv $i `echo $i | sed -e "s#${j}#${j}_setscene#"`
+ i=dummy
+ break
+ ;;
+ esac
+ done
+ rm -f $i
+ done
}
addtask rm_work after do_${RMWORK_ORIG_TASK}
diff --git a/meta/classes/rootfs_deb.bbclass b/meta/classes/rootfs_deb.bbclass
index f579b53a82..e03e80bdb0 100644
--- a/meta/classes/rootfs_deb.bbclass
+++ b/meta/classes/rootfs_deb.bbclass
@@ -12,50 +12,29 @@ opkglibdir = "${localstatedir}/lib/opkg"
fakeroot rootfs_deb_do_rootfs () {
set +e
- mkdir -p ${IMAGE_ROOTFS}/var/dpkg/info
- mkdir -p ${IMAGE_ROOTFS}/var/dpkg/updates
- rm -f ${STAGING_ETCDIR_NATIVE}/apt/sources.list.rev
- rm -f ${STAGING_ETCDIR_NATIVE}/apt/preferences
- > ${IMAGE_ROOTFS}/var/dpkg/status
- > ${IMAGE_ROOTFS}/var/dpkg/available
mkdir -p ${IMAGE_ROOTFS}/var/dpkg/alternatives
- priority=1
- for arch in ${PACKAGE_ARCHS}; do
- if [ ! -d ${DEPLOY_DIR_DEB}/$arch ]; then
- continue;
- fi
- cd ${DEPLOY_DIR_DEB}/$arch
- # if [ -z "${DEPLOY_KEEP_PACKAGES}" ]; then
- rm -f Packages.gz Packages Packages.bz2
- # fi
- dpkg-scanpackages . | bzip2 > Packages.bz2
- echo "Label: $arch" > Release
-
- echo "deb file:${DEPLOY_DIR_DEB}/$arch/ ./" >> ${STAGING_ETCDIR_NATIVE}/apt/sources.list.rev
- (echo "Package: *"
- echo "Pin: release l=$arch"
- echo "Pin-Priority: $(expr 800 + $priority)"
- echo) >> ${STAGING_ETCDIR_NATIVE}/apt/preferences
- priority=$(expr $priority + 5)
- done
+ # update index
+ package_update_index_deb
+
+ #install packages
+ export INSTALL_ROOTFS_DEB="${IMAGE_ROOTFS}"
+ export INSTALL_BASEARCH_DEB="${DPKG_ARCH}"
+ export INSTALL_ARCHS_DEB="${PACKAGE_ARCHS}"
+ export INSTALL_PACKAGES_NORMAL_DEB="${PACKAGE_INSTALL}"
+ export INSTALL_PACKAGES_ATTEMPTONLY_DEB="${PACKAGE_INSTALL_ATTEMPTONLY}"
+ export INSTALL_PACKAGES_LINGUAS_DEB="${LINGUAS_INSTALL}"
+ export INSTALL_TASK_DEB="rootfs"
- tac ${STAGING_ETCDIR_NATIVE}/apt/sources.list.rev > ${STAGING_ETCDIR_NATIVE}/apt/sources.list
+ package_install_internal_deb
- cat "${STAGING_ETCDIR_NATIVE}/apt/apt.conf.sample" \
- | sed -e 's#Architecture ".*";#Architecture "${DPKG_ARCH}";#' \
- | sed -e 's:#ROOTFS#:${IMAGE_ROOTFS}:g' \
- > "${STAGING_ETCDIR_NATIVE}/apt/apt-rootfs.conf"
- export APT_CONFIG="${STAGING_ETCDIR_NATIVE}/apt/apt-rootfs.conf"
export D=${IMAGE_ROOTFS}
export OFFLINE_ROOT=${IMAGE_ROOTFS}
export IPKG_OFFLINE_ROOT=${IMAGE_ROOTFS}
export OPKG_OFFLINE_ROOT=${IMAGE_ROOTFS}
- apt-get update
-
_flag () {
sed -i -e "/^Package: $2\$/{n; s/Status: install ok .*/Status: install ok $1/;}" ${IMAGE_ROOTFS}/var/dpkg/status
}
@@ -63,47 +42,6 @@ fakeroot rootfs_deb_do_rootfs () {
cat ${IMAGE_ROOTFS}/var/dpkg/status | sed -n -e "/^Package: $2\$/{n; s/Status: install ok .*/$1/; p}"
}
- if [ x${TARGET_OS} = "xlinux" ] || [ x${TARGET_OS} = "xlinux-gnueabi" ] ; then
- if [ ! -z "${LINGUAS_INSTALL}" ]; then
- apt-get install glibc-localedata-i18n --force-yes --allow-unauthenticated
- if [ $? -ne 0 ]; then
- exit 1
- fi
- for i in ${LINGUAS_INSTALL}; do
- apt-get install $i --force-yes --allow-unauthenticated
- if [ $? -ne 0 ]; then
- exit 1
- fi
- done
- fi
- fi
-
- if [ ! -z "${PACKAGE_INSTALL}" ]; then
- for i in ${PACKAGE_INSTALL}; do
- apt-get install $i --force-yes --allow-unauthenticated
- if [ $? -ne 0 ]; then
- exit 1
- fi
- done
- fi
-
- rm ${WORKDIR}/temp/log.do_$target-attemptonly.${PID}
- if [ ! -z "${PACKAGE_INSTALL_ATTEMPTONLY}" ]; then
- for i in ${PACKAGE_INSTALL_ATTEMPTONLY}; do
- apt-get install $i --force-yes --allow-unauthenticated >> ${WORKDIR}/temp/log.do_rootfs-attemptonly.${PID} || true
- done
- fi
-
- find ${IMAGE_ROOTFS} -name \*.dpkg-new | for i in `cat`; do
- mv $i `echo $i | sed -e's,\.dpkg-new$,,'`
- done
-
- install -d ${IMAGE_ROOTFS}/${sysconfdir}
- echo ${BUILDNAME} > ${IMAGE_ROOTFS}/${sysconfdir}/version
-
- # Mark all packages installed
- sed -i -e "s/Status: install ok unpacked/Status: install ok installed/;" ${IMAGE_ROOTFS}/var/dpkg/status
-
# Attempt to run preinsts
# Mark packages with preinst failures as unpacked
for i in ${IMAGE_ROOTFS}/var/dpkg/info/*.preinst; do
@@ -122,6 +60,9 @@ fakeroot rootfs_deb_do_rootfs () {
set -e
+ install -d ${IMAGE_ROOTFS}/${sysconfdir}
+ echo ${BUILDNAME} > ${IMAGE_ROOTFS}/${sysconfdir}/version
+
# Hacks to allow opkg's update-alternatives and opkg to coexist for now
mkdir -p ${IMAGE_ROOTFS}${opkglibdir}
if [ -e ${IMAGE_ROOTFS}/var/dpkg/alternatives ]; then
@@ -133,27 +74,7 @@ fakeroot rootfs_deb_do_rootfs () {
${ROOTFS_POSTPROCESS_COMMAND}
- log_check rootfs
-}
-
-rootfs_deb_log_check() {
- target="$1"
- lf_path="$2"
-
- lf_txt="`cat $lf_path`"
- for keyword_die in "E:"
- do
- if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1
- then
- echo "log_check: There were error messages in the logfile"
- echo -e "log_check: Matched keyword: [$keyword_die]\n"
- echo "$lf_txt" | grep -v log_check | grep -C 5 -i "$keyword_die"
- echo ""
- do_exit=1
- fi
- done
- test "$do_exit" = 1 && exit 1
- true
+ log_check rootfs
}
remove_packaging_data_files() {
diff --git a/meta/classes/rootfs_ipk.bbclass b/meta/classes/rootfs_ipk.bbclass
index c9edec2b52..5727d1502b 100644
--- a/meta/classes/rootfs_ipk.bbclass
+++ b/meta/classes/rootfs_ipk.bbclass
@@ -12,7 +12,7 @@ ROOTFS_PKGMANAGE_BOOTSTRAP = "run-postinsts"
do_rootfs[depends] += "opkg-native:do_populate_sysroot opkg-utils-native:do_populate_sysroot"
do_rootfs[recrdeptask] += "do_package_write_ipk"
-IPKG_ARGS = "-f ${IPKGCONF_TARGET} -o ${IMAGE_ROOTFS}"
+IPKG_ARGS = "-f ${IPKGCONF_TARGET} -o ${IMAGE_ROOTFS} --force-overwrite"
OPKG_PREPROCESS_COMMANDS = "package_update_index_ipk; package_generate_ipkg_conf"
@@ -29,26 +29,19 @@ fakeroot rootfs_ipk_do_rootfs () {
${OPKG_PREPROCESS_COMMANDS}
mkdir -p ${T}/
- mkdir -p ${IMAGE_ROOTFS}${opkglibdir}
- opkg-cl ${IPKG_ARGS} update
+ #install
+ export INSTALL_PACKAGES_ATTEMPTONLY_IPK="${PACKAGE_INSTALL_ATTEMPTONLY}"
+ export INSTALL_PACKAGES_LINGUAS_IPK="${LINGUAS_INSTALL}"
+ export INSTALL_TASK_IPK="rootfs"
- # Uclibc builds don't provide this stuff...
- if [ x${TARGET_OS} = "xlinux" ] || [ x${TARGET_OS} = "xlinux-gnueabi" ] ; then
- if [ ! -z "${LINGUAS_INSTALL}" ]; then
- for i in ${LINGUAS_INSTALL}; do
- opkg-cl ${IPKG_ARGS} install $i
- done
- fi
- fi
- if [ ! -z "${PACKAGE_INSTALL}" ]; then
- opkg-cl ${IPKG_ARGS} install ${PACKAGE_INSTALL}
- fi
+ export INSTALL_ROOTFS_IPK="${IMAGE_ROOTFS}"
+ export INSTALL_CONF_IPK="${IPKGCONF_TARGET}"
+ export INSTALL_PACKAGES_NORMAL_IPK="${PACKAGE_INSTALL}"
- if [ ! -z "${PACKAGE_INSTALL_ATTEMPTONLY}" ]; then
- opkg-cl ${IPKG_ARGS} install ${PACKAGE_INSTALL_ATTEMPTONLY} > "${WORKDIR}/temp/log.do_rootfs_attemptonly.${PID}" || true
- fi
+ package_install_internal_ipk
+ #post install
export D=${IMAGE_ROOTFS}
export OFFLINE_ROOT=${IMAGE_ROOTFS}
export IPKG_OFFLINE_ROOT=${IMAGE_ROOTFS}
@@ -82,26 +75,6 @@ fakeroot rootfs_ipk_do_rootfs () {
log_check rootfs
}
-rootfs_ipk_log_check() {
- target="$1"
- lf_path="$2"
-
- lf_txt="`cat $lf_path`"
- for keyword_die in "exit 1" "Collected errors" ERR Fail
- do
- if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1
- then
- echo "log_check: There were error messages in the logfile"
- echo -e "log_check: Matched keyword: [$keyword_die]\n"
- echo "$lf_txt" | grep -v log_check | grep -C 5 -i "$keyword_die"
- echo ""
- do_exit=1
- fi
- done
- test "$do_exit" = 1 && exit 1
- true
-}
-
rootfs_ipk_write_manifest() {
manifest=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.manifest
cp ${IMAGE_ROOTFS}${opkglibdir}/status $manifest
diff --git a/meta/classes/rootfs_rpm.bbclass b/meta/classes/rootfs_rpm.bbclass
index 33abe96df9..6fe11f77e4 100644
--- a/meta/classes/rootfs_rpm.bbclass
+++ b/meta/classes/rootfs_rpm.bbclass
@@ -2,14 +2,18 @@
# Creates a root filesystem out of rpm packages
#
-ROOTFS_PKGMANAGE = "rpm zypper"
-ROOTFS_PKGMANAGE_BOOTSTRAP = "run-postinsts"
+ROOTFS_PKGMANAGE = "rpm zypper"
+# Postinstalls on device are handled within this class at present
+ROOTFS_PKGMANAGE_BOOTSTRAP = ""
do_rootfs[depends] += "rpm-native:do_populate_sysroot"
# Needed for update-alternatives
do_rootfs[depends] += "opkg-native:do_populate_sysroot"
+# Creating the repo info in do_rootfs
+#do_rootfs[depends] += "createrepo-native:do_populate_sysroot"
+
do_rootfs[recrdeptask] += "do_package_write_rpm"
AWKPOSTINSTSCRIPT = "${POKYBASE}/scripts/rootfs_rpm-extract-postinst.awk"
@@ -33,122 +37,27 @@ RPM="rpm ${RPMOPTS}"
do_rootfs[lockfiles] += "${DEPLOY_DIR_RPM}/rpm.lock"
fakeroot rootfs_rpm_do_rootfs () {
- set +x
+ #set +x
${RPM_PREPROCESS_COMMANDS}
+ #createrepo "${DEPLOY_DIR_RPM}"
+
# Setup base system configuration
mkdir -p ${IMAGE_ROOTFS}/etc/rpm/
- echo "${TARGET_ARCH}-linux" >${IMAGE_ROOTFS}/etc/rpm/platform
-
- # Tell RPM that the "/" directory exist and is available
- mkdir -p ${IMAGE_ROOTFS}/etc/rpm/sysinfo
- echo "/" >${IMAGE_ROOTFS}/etc/rpm/sysinfo/Dirnames
-
- # Setup manifest of packages to install...
- mkdir -p ${IMAGE_ROOTFS}/install
- echo "# Install manifest" > ${IMAGE_ROOTFS}/install/install.manifest
-
- # Uclibc builds don't provide this stuff...
- if [ x${TARGET_OS} = "xlinux" ] || [ x${TARGET_OS} = "xlinux-gnueabi" ] ; then
- if [ ! -z "${LINGUAS_INSTALL}" ]; then
- for pkg in ${LINGUAS_INSTALL}; do
- echo "Processing $pkg..."
- pkg_name=$(resolve_package $pkg)
- if [ -z "$pkg_name" ]; then
- echo "Unable to find package $pkg!"
- exit 1
- fi
- echo $pkg_name >> ${IMAGE_ROOTFS}/install/install.manifest
- done
- fi
- fi
- if [ ! -z "${PACKAGE_INSTALL}" ]; then
- for pkg in ${PACKAGE_INSTALL} ; do
- echo "Processing $pkg..."
- pkg_name=$(resolve_package $pkg)
- if [ -z "$pkg_name" ]; then
- echo "Unable to find package $pkg!"
- exit 1
- fi
- echo $pkg_name >> ${IMAGE_ROOTFS}/install/install.manifest
- done
- fi
+ #install pacakges
+ export INSTALL_ROOTFS_RPM="${IMAGE_ROOTFS}"
+ export INSTALL_PLATFORM_RPM="${TARGET_ARCH}"
+ export INSTALL_PLATFORM_EXTRA_RPM="${PACKAGE_ARCHS}"
+ export INSTALL_CONFBASE_RPM="${RPMCONF_TARGET_BASE}"
+ export INSTALL_PACKAGES_NORMAL_RPM="${PACKAGE_INSTALL}"
+ export INSTALL_PACKAGES_ATTEMPTONLY_RPM="${PACKAGE_INSTALL_ATTEMPTONLY}"
+ export INSTALL_PACKAGES_LINGUAS_RPM="${LINGUAS_INSTALL}"
+ export INSTALL_PROVIDENAME_RPM=""
+ export INSTALL_TASK_RPM="populate_sdk"
- # Generate an install solution by doing a --justdb install, then recreate it with
- # an actual package install!
- ${RPM} -D "_dbpath ${IMAGE_ROOTFS}/install" -D "`cat ${DEPLOY_DIR_RPM}/solvedb.macro`" \
- -D "__dbi_cdb create mp_mmapsize=128Mb mp_size=1Mb nofsync" \
- -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \
- ${IMAGE_ROOTFS}/install/install.manifest
-
- if [ ! -z "${PACKAGE_INSTALL_ATTEMPTONLY}" ]; then
- echo "Adding attempt only packages..."
- for pkg in ${PACKAGE_INSTALL_ATTEMPTONLY} ; do
- echo "Processing $pkg..."
- pkg_name=$(resolve_package $pkg)
- if [ -z "$pkg_name" ]; then
- echo "Unable to find package $pkg!"
- exit 1
- fi
- echo "Attempting $pkg_name..." >> "${WORKDIR}/temp/log.do_rootfs_attemptonly.${PID}"
- ${RPM} -D "_dbpath ${IMAGE_ROOTFS}/install" -D "`cat ${DEPLOY_DIR_RPM}/solvedb.macro`" \
- -D "__dbi_cdb create mp_mmapsize=128Mb mp_size=1Mb nofsync private" \
- -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \
- $pkg_name >> "${WORKDIR}/temp/log.do_rootfs_attemptonly.${PID}" || true
- done
- fi
-
-#### Note: 'Recommends' is an arbitrary tag that means _SUGGESTS_ in Poky..
- # Add any recommended packages to the image
- # RPM does not solve for recommended packages because they are optional...
- # So we query them and tree them like the ATTEMPTONLY packages above...
- # Change the loop to "1" to run this code...
- loop=0
- if [ $loop -eq 1 ]; then
- echo "Processing recommended packages..."
- cat /dev/null > ${IMAGE_ROOTFS}/install/recommend.list
- while [ $loop -eq 1 ]; do
- # Dump the full set of recommends...
- ${RPM} -D "_dbpath ${IMAGE_ROOTFS}/install" -D "`cat ${DEPLOY_DIR_RPM}/solvedb.macro`" \
- -qa --qf "[%{RECOMMENDS}\n]" | sort -u > ${IMAGE_ROOTFS}/install/recommend
- # Did we add more to the list?
- grep -v -x -F -f ${IMAGE_ROOTFS}/install/recommend.list ${IMAGE_ROOTFS}/install/recommend > ${IMAGE_ROOTFS}/install/recommend.new || true
- # We don't want to loop unless there is a change to the list!
- loop=0
- cat ${IMAGE_ROOTFS}/install/recommend.new | \
- while read pkg ; do
- # Ohh there was a new one, we'll need to loop again...
- loop=1
- echo "Processing $pkg..."
- pkg_name=$(resolve_package $pkg)
- if [ -z "$pkg_name" ]; then
- echo "Unable to find package $pkg." >> "${WORKDIR}/temp/log.do_rootfs_recommend.${PID}"
- continue
- fi
- echo "Attempting $pkg_name..." >> "${WORKDIR}/temp/log.do_rootfs_recommend.${PID}"
- ${RPM} -D "_dbpath ${IMAGE_ROOTFS}/install" -D "`cat ${DEPLOY_DIR_RPM}/solvedb.macro`" \
- -D "__dbi_cdb create mp_mmapsize=128Mb mp_size=1Mb nofsync private" \
- -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \
- $pkg_name >> "${WORKDIR}/temp/log.do_rootfs_recommend.${PID}" 2>&1 || true
- done
- cat ${IMAGE_ROOTFS}/install/recommend.list ${IMAGE_ROOTFS}/install/recommend.new | sort -u > ${IMAGE_ROOTFS}/install/recommend.new.list
- mv ${IMAGE_ROOTFS}/install/recommend.new.list ${IMAGE_ROOTFS}/install/recommend.list
- rm ${IMAGE_ROOTFS}/install/recommend ${IMAGE_ROOTFS}/install/recommend.new
- done
- fi
-
- # Now that we have a solution, pull out a list of what to install...
- echo "Manifest: ${IMAGE_ROOTFS}/install/install.manifest"
- ${RPM} -D "_dbpath ${IMAGE_ROOTFS}/install" -qa --yaml \
- | grep -i 'Packageorigin' | cut -d : -f 2 > ${IMAGE_ROOTFS}/install/install_solution.manifest
-
- # Attempt install
- ${RPM} --root ${IMAGE_ROOTFS} -D "_dbpath ${rpmlibdir}" \
- --noscripts --notriggers --noparentdirs --nolinktos \
- -D "__dbi_cdb create mp_mmapsize=128Mb mp_size=1Mb nofsync private" \
- -Uhv ${IMAGE_ROOTFS}/install/install_solution.manifest
+ package_install_internal_rpm
export D=${IMAGE_ROOTFS}
export OFFLINE_ROOT=${IMAGE_ROOTFS}
@@ -159,6 +68,7 @@ fakeroot rootfs_rpm_do_rootfs () {
mkdir -p ${IMAGE_ROOTFS}/etc/rpm-postinsts/
${RPM} --root ${IMAGE_ROOTFS} -D '_dbpath ${rpmlibdir}' -qa \
+ -D "__dbi_txn create nofsync private" \
--qf 'Name: %{NAME}\n%|POSTIN?{postinstall scriptlet%|POSTINPROG?{ (using %{POSTINPROG})}|:\n%{POSTIN}\n}:{%|POSTINPROG?{postinstall program: %{POSTINPROG}\n}|}|' \
> ${IMAGE_ROOTFS}/etc/rpm-postinsts/combined
awk -f ${AWKPOSTINSTSCRIPT} < ${IMAGE_ROOTFS}/etc/rpm-postinsts/combined
@@ -202,54 +112,25 @@ EOF
# remove lock files
rm -f ${IMAGE_ROOTFS}${rpmlibdir}/__db.*
- # remove resolver files and manifests
- rm -f ${IMAGE_ROOTFS}/install/install.manifest
+ # Move manifests into the directory with the logs
+ mv ${IMAGE_ROOTFS}/install/*.manifest ${T}/
+
+ # Remove all remaining resolver files
+ rm -rf ${IMAGE_ROOTFS}/install
log_check rootfs
# Workaround so the parser knows we need the resolve_package function!
if false ; then
- resolve_package foo || true
+ resolve_package_rpm foo ${RPMCONF_TARGET_BASE}.conf || true
fi
}
-rootfs_rpm_log_check() {
- target="$1"
- lf_path="$2"
-
- lf_txt="`cat $lf_path`"
- for keyword_die in "Cannot find package" "exit 1" ERR Fail
- do
- if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1
- then
- echo "log_check: There were error messages in the logfile"
- echo -e "log_check: Matched keyword: [$keyword_die]\n"
- echo "$lf_txt" | grep -v log_check | grep -C 5 -i "$keyword_die"
- echo ""
- do_exit=1
- fi
- done
- test "$do_exit" = 1 && exit 1
- true
-}
-
remove_packaging_data_files() {
rm -rf ${IMAGE_ROOTFS}${rpmlibdir}
rm -rf ${IMAGE_ROOTFS}${opkglibdir}
}
-# Resolve package names to filepaths
-resolve_package() {
- pkg="$1"
- pkg_name=""
- for solve in `cat ${DEPLOY_DIR_RPM}/solvedb.conf`; do
- pkg_name=$(${RPM} -D "_dbpath $solve" -D "_dbi_tags_3 Packages:Name:Basenames:Providename:Nvra" -D "__dbi_cdb create mp_mmapsize=128Mb mp_size=1Mb nofsync" -q --yaml $pkg | grep -i 'Packageorigin' | cut -d : -f 2)
- if [ -n "$pkg_name" ]; then
- break;
- fi
- done
- echo $pkg_name
-}
install_all_locales() {
PACKAGES_TO_INSTALL=""
@@ -257,7 +138,7 @@ install_all_locales() {
# Generate list of installed packages...
INSTALLED_PACKAGES=$( \
${RPM} --root ${IMAGE_ROOTFS} -D "_dbpath ${rpmlibdir}" \
- -D "__dbi_cdb create mp_mmapsize=128Mb mp_size=1Mb nofsync private" \
+ -D "__dbi_txn create nofsync private" \
-qa --qf "[%{NAME}\n]" | egrep -v -- "(-locale-|-dev$|-doc$|^kernel|^glibc|^ttf|^task|^perl|^python)" \
)
@@ -265,11 +146,11 @@ install_all_locales() {
# but this should be good enough for the few users of this function...
for pkg in $INSTALLED_PACKAGES; do
for lang in ${IMAGE_LOCALES}; do
- pkg_name=$(resolve_package $pkg-locale-$lang)
+ pkg_name=$(resolve_package_rpm $pkg-locale-$lang ${RPMCONF_TARGET_BASE}.conf)
if [ -n "$pkg_name" ]; then
${RPM} --root ${IMAGE_ROOTFS} -D "_dbpath ${rpmlibdir}" \
+ -D "__dbi_txn create nofsync private" \
--noscripts --notriggers --noparentdirs --nolinktos \
- -D "__dbi_cdb create mp_mmapsize=128Mb mp_size=1Mb nofsync private" \
-Uhv $pkg_name || true
fi
done
diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass
index 9d183e352f..13940f81db 100644
--- a/meta/classes/sanity.bbclass
+++ b/meta/classes/sanity.bbclass
@@ -124,6 +124,14 @@ def check_sanity(e):
if data.getVar('MACHINE', e.data, True):
if not check_conf_exists("conf/machine/${MACHINE}.conf", e.data):
messages = messages + 'Please set a valid MACHINE in your local.conf\n'
+
+ # Check that DL_DIR is set, exists and is writable. In theory, we should never even hit the check if DL_DIR isn't
+ # set, since so much relies on it being set.
+ dldir = data.getVar('DL_DIR', e.data, True)
+ if not dldir:
+ messages = messages + "DL_DIR is not set. Your environment is misconfigured, check that DL_DIR is set, and if the directory exists, that it is writable. \n"
+ if os.path.exists(dldir) and not os.access(dldir, os.W_OK):
+ messages = messages + "DL_DIR: %s exists but you do not appear to have write access to it. \n" % dldir
# Check that the DISTRO is valid
# need to take into account DISTRO renaming DISTRO
@@ -155,6 +163,9 @@ def check_sanity(e):
if not check_app_exists("qemu-arm", e.data):
messages = messages + "qemu-native was in ASSUME_PROVIDED but the QEMU binaries (qemu-arm) can't be found in PATH"
+ if "." in data.getVar('PATH', e.data, True).split(":"):
+ messages = messages + "PATH contains '.' which will break the build, please remove this"
+
if data.getVar('TARGET_ARCH', e.data, True) == "arm":
# This path is no longer user-readable in modern (very recent) Linux
try:
@@ -178,11 +189,12 @@ def check_sanity(e):
if not data.getVar( 'DISPLAY', e.data, True ) and data.getVar( 'IMAGETEST', e.data, True ) == 'qemu':
messages = messages + 'qemuimagetest needs a X desktop to start qemu, please set DISPLAY correctly (e.g. DISPLAY=:1.0)\n'
- # Ensure we have the binary for TERMCMD, as when patch application fails the error is fairly intimidating
- termcmd = data.getVar("TERMCMD", e.data, True)
- term = termcmd.split()[0]
- if not check_app_exists(term, e.data):
- messages = messages + "The console for use in patch error resolution is not available, please install %s or set TERMCMD and TERMCMDRUN (as documented in local.conf).\n" % term
+ if data.getVar('PATCHRESOLVE', e.data, True) != 'noop':
+ # Ensure we have the binary for TERMCMD, as when patch application fails the error is fairly intimidating
+ termcmd = data.getVar("TERMCMD", e.data, True)
+ term = termcmd.split()[0]
+ if not check_app_exists(term, e.data):
+ messages = messages + "The console for use in patch error resolution is not available, please install %s or set TERMCMD and TERMCMDRUN (as documented in local.conf).\n" % term
if os.path.basename(os.readlink('/bin/sh')) == 'dash':
messages = messages + "Using dash as /bin/sh causes various subtle build problems, please use bash instead (e.g. 'dpkg-reconfigure dash' on an Ubuntu system.\n"
@@ -196,9 +208,6 @@ def check_sanity(e):
if not oes_bb_conf:
messages = messages + 'You do not include OpenEmbeddeds version of conf/bitbake.conf. This means your environment is misconfigured, in particular check BBPATH.\n'
- if data.getVar('SDK_ARCH', e.data, True) == 'i686':
- messages = messages + '"Please set SDKMACHINE to i586. It is currently defaulting to the build machine architecture of i686 and this is known to have issues (see local.conf).\n'
-
nolibs = data.getVar('NO32LIBS', e.data, True)
if not nolibs:
lib32path = '/lib'
@@ -292,7 +301,7 @@ def check_sanity(e):
f.write(current_abi)
elif (abi != current_abi):
# Code to convert from one ABI to another could go here if possible.
- messages = messages + "Error, TMPDIR has changed ABI (%s to %s) and you need to either rebuild, revert or adjust it at your own risk.\n" % (abi, current_abi)
+ messages = messages + "Error, TMPDIR has changed its layout version number (%s to %s) and you need to either rebuild, revert or adjust it at your own risk.\n" % (abi, current_abi)
else:
f = file(abifile, "w")
f.write(current_abi)
@@ -300,7 +309,7 @@ def check_sanity(e):
oeroot = data.getVar('POKYBASE', e.data)
if oeroot.find ('+') != -1:
- messages = messages + "Error, you have an invalid character (+) in your POKYBASE directory path. Please more Poky to a directory which doesn't include a +."
+ messages = messages + "Error, you have an invalid character (+) in your POKYBASE directory path. Please move Poky to a directory which doesn't include a +."
elif oeroot.find (' ') != -1:
messages = messages + "Error, you have a space in your POKYBASE directory path. Please move Poky to a directory which doesn't include a space."
@@ -309,9 +318,8 @@ def check_sanity(e):
addhandler check_sanity_eventhandler
python check_sanity_eventhandler() {
- from bb.event import Handled, NotHandled
if bb.event.getName(e) == "ConfigParsed" and bb.data.getVar("BB_WORKERCONTEXT", e.data, True) != "1":
check_sanity(e)
- return NotHandled
+ return
}
diff --git a/meta/classes/setuptools.bbclass b/meta/classes/setuptools.bbclass
new file mode 100644
index 0000000000..ced9509df2
--- /dev/null
+++ b/meta/classes/setuptools.bbclass
@@ -0,0 +1,8 @@
+inherit distutils
+
+DEPENDS += "python-setuptools-native"
+
+DISTUTILS_INSTALL_ARGS = "--root=${D} \
+ --single-version-externally-managed \
+ --prefix=${prefix} \
+ --install-data=${datadir}"
diff --git a/meta/classes/siteconfig.bbclass b/meta/classes/siteconfig.bbclass
index 37d910e1da..0813c2543e 100644
--- a/meta/classes/siteconfig.bbclass
+++ b/meta/classes/siteconfig.bbclass
@@ -10,18 +10,21 @@ python siteconfig_do_siteconfig () {
sstate_install(shared_state, d)
}
+EXTRASITECONFIG ?= ""
+
siteconfig_do_siteconfig_gencache () {
- mkdir -p ${WORKDIR}/site_config
+ mkdir -p ${WORKDIR}/site_config_${MACHINE}
gen-site-config ${FILE_DIRNAME}/site_config \
- >${WORKDIR}/site_config/configure.ac
- cd ${WORKDIR}/site_config
+ >${WORKDIR}/site_config_${MACHINE}/configure.ac
+ cd ${WORKDIR}/site_config_${MACHINE}
autoconf
- CONFIG_SITE="" ./configure ${CONFIGUREOPTS} --cache-file ${PN}_cache
+ CONFIG_SITE="" ${EXTRASITECONFIG} ./configure ${CONFIGUREOPTS} --cache-file ${PN}_cache
sed -n -e "/ac_cv_c_bigendian/p" -e "/ac_cv_sizeof_/p" \
-e "/ac_cv_type_/p" -e "/ac_cv_header_/p" -e "/ac_cv_func_/p" \
< ${PN}_cache > ${PN}_config
- mkdir -p ${SYSROOT_DESTDIR}${SITECONFIG_SYSROOTCACHE}
- cp ${PN}_config ${SYSROOT_DESTDIR}${SITECONFIG_SYSROOTCACHE}
+ mkdir -p ${SYSROOT_DESTDIR}${datadir}/${TARGET_SYS}_config_site.d
+ cp ${PN}_config ${SYSROOT_DESTDIR}${datadir}/${TARGET_SYS}_config_site.d
+
}
do_populate_sysroot[sstate-interceptfuncs] += "do_siteconfig "
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index 0ba130c886..e4564e4b07 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -1,11 +1,11 @@
-SSTATE_VERSION = "1"
+SSTATE_VERSION = "2"
SSTATE_MANIFESTS = "${TMPDIR}/sstate-control"
-SSTATE_MANFILEBASE = "${SSTATE_MANIFESTS}/manifest-${SSTATE_PKGARCH}-"
+SSTATE_MANFILEBASE = "${SSTATE_MANIFESTS}/manifest-${SSTATE_MANMACH}-"
SSTATE_MANFILEPREFIX = "${SSTATE_MANFILEBASE}${PN}"
-SSTATE_PKGARCH = "${BASE_PACKAGE_ARCH}"
+SSTATE_PKGARCH = "${MULTIMACH_ARCH}"
SSTATE_PKGSPEC = "sstate-${PN}-${MULTIMACH_ARCH}${TARGET_VENDOR}-${TARGET_OS}-${PV}-${PR}-${SSTATE_PKGARCH}-${SSTATE_VERSION}-"
SSTATE_PKGNAME = "${SSTATE_PKGSPEC}${BB_TASKHASH}"
SSTATE_PKG = "${SSTATE_DIR}/${SSTATE_PKGNAME}"
@@ -14,15 +14,22 @@ SSTATE_SCAN_CMD ?= "find ${SSTATE_BUILDDIR} \( -name "*.la" -o -name "*-config"
BB_HASHFILENAME = "${SSTATE_PKGNAME}"
+SSTATE_MANMACH ?= "${SSTATE_PKGARCH}"
+
python () {
if bb.data.inherits_class('native', d):
bb.data.setVar('SSTATE_PKGARCH', bb.data.getVar('BUILD_ARCH', d), d)
- elif bb.data.inherits_class('cross', d) or bb.data.inherits_class('crosssdk', d):
+ elif bb.data.inherits_class('cross', d):
+ bb.data.setVar('SSTATE_PKGARCH', bb.data.expand("${BUILD_ARCH}_${BASE_PACKAGE_ARCH}", d), d)
+ bb.data.setVar('SSTATE_MANMACH', bb.data.expand("${BUILD_ARCH}_${MACHINE}", d), d)
+ elif bb.data.inherits_class('crosssdk', d):
bb.data.setVar('SSTATE_PKGARCH', bb.data.expand("${BUILD_ARCH}_${BASE_PACKAGE_ARCH}", d), d)
elif bb.data.inherits_class('nativesdk', d):
bb.data.setVar('SSTATE_PKGARCH', bb.data.expand("${SDK_ARCH}", d), d)
elif bb.data.inherits_class('cross-canadian', d):
bb.data.setVar('SSTATE_PKGARCH', bb.data.expand("${SDK_ARCH}_${BASE_PACKAGE_ARCH}", d), d)
+ else:
+ bb.data.setVar('SSTATE_MANMACH', bb.data.expand("${MACHINE}", d), d)
# These classes encode staging paths into their scripts data so can only be
# reused if we manipulate the paths
@@ -30,17 +37,21 @@ python () {
scan_cmd = "grep -Irl ${STAGING_DIR} ${SSTATE_BUILDDIR}"
bb.data.setVar('SSTATE_SCAN_CMD', scan_cmd, d)
+ namemap = []
for task in (bb.data.getVar('SSTATETASKS', d, True) or "").split():
+ namemap.append(bb.data.getVarFlag(task, 'sstate-name', d))
funcs = bb.data.getVarFlag(task, 'prefuncs', d) or ""
funcs = "sstate_task_prefunc " + funcs
bb.data.setVarFlag(task, 'prefuncs', funcs, d)
funcs = bb.data.getVarFlag(task, 'postfuncs', d) or ""
funcs = funcs + " sstate_task_postfunc"
bb.data.setVarFlag(task, 'postfuncs', funcs, d)
+ d.setVar('SSTATETASKNAMES', " ".join(namemap))
}
-def sstate_init(name, d):
+def sstate_init(name, task, d):
ss = {}
+ ss['task'] = task
ss['name'] = name
ss['dirs'] = []
ss['plaindirs'] = []
@@ -63,7 +74,7 @@ def sstate_state_fromvars(d, task = None):
if not name or len(inputs) != len(outputs):
bb.fatal("sstate variables not setup correctly?!")
- ss = sstate_init(name, d)
+ ss = sstate_init(name, task, d)
for i in range(len(inputs)):
sstate_add(ss, inputs[i], outputs[i], d)
ss['lockfiles'] = lockfiles
@@ -87,30 +98,6 @@ def sstate_install(ss, d):
if os.access(manifest, os.R_OK):
bb.fatal("Package already staged (%s)?!" % manifest)
- def checkmanifest(pn, task):
- return os.access(bb.data.expand("${SSTATE_MANFILEBASE}%s.%s" % (pn, task), d), os.R_OK)
-
- skipinst = False
- pn = d.getVar("PN", True)
- if pn == "gcc-cross-initial":
- if checkmanifest("gcc-cross", "populate-sysroot"):
- skipinst = True
- if checkmanifest("gcc-cross-intermediate", "populate-sysroot"):
- skipinst = True
- elif pn == "gcc-cross-intermediate":
- if checkmanifest("gcc-cross", "populate-sysroot"):
- skipinst = True
- elif pn == "glibc-initial":
- if checkmanifest("glibc", "populate-sysroot"):
- skipinst = True
- elif pn == "eglibc-initial":
- if checkmanifest("eglibc", "populate-sysroot"):
- skipinst = True
-
- if skipinst:
- bb.note("Not staging %s.%s as sysroot already contains better functionality" % (pn, ss['name']))
- return
-
locks = []
for lock in ss['lockfiles']:
locks.append(bb.utils.lockfile(lock))
@@ -168,10 +155,14 @@ def sstate_installpkg(ss, d):
fixmefn = sstateinst + "fixmepath"
if os.path.isfile(fixmefn):
staging = bb.data.getVar('STAGING_DIR', d, True)
+ staging_target = bb.data.getVar('STAGING_DIR_TARGET', d, True)
+ staging_host = bb.data.getVar('STAGING_DIR_HOST', d, True)
fixmefd = open(fixmefn, "r")
fixmefiles = fixmefd.readlines()
fixmefd.close()
for file in fixmefiles:
+ os.system("sed -i -e s:FIXMESTAGINGDIRTARGET:%s:g %s" % (staging_target, sstateinst + file))
+ os.system("sed -i -e s:FIXMESTAGINGDIRHOST:%s:g %s" % (staging_host, sstateinst + file))
os.system("sed -i -e s:FIXMESTAGINGDIR:%s:g %s" % (staging, sstateinst + file))
for state in ss['dirs']:
@@ -206,9 +197,6 @@ def sstate_clean_cachefiles(d):
def sstate_clean_manifest(manifest, d):
import oe.path
- if not os.path.exists(manifest):
- return
-
mfile = open(manifest)
entries = mfile.readlines()
mfile.close()
@@ -232,9 +220,13 @@ def sstate_clean_manifest(manifest, d):
oe.path.remove(manifest)
def sstate_clean(ss, d):
+ import oe.path
manifest = bb.data.expand("${SSTATE_MANFILEPREFIX}.%s" % ss['name'], d)
+ if not os.path.exists(manifest):
+ return
+
locks = []
for lock in ss['lockfiles']:
locks.append(bb.utils.lockfile(lock))
@@ -244,7 +236,8 @@ def sstate_clean(ss, d):
for lock in locks:
bb.utils.unlockfile(lock)
-SCENEFUNCS += "sstate_cleanall"
+ oe.path.remove(d.getVar("STAMP", True) + ".do_" + ss['task'] + "*")
+
CLEANFUNCS += "sstate_cleanall"
python sstate_cleanall() {
@@ -261,9 +254,45 @@ python sstate_cleanall() {
for manifest in (os.listdir(manifest_dir)):
if fnmatch.fnmatch(manifest, manifest_pattern):
- sstate_clean_manifest(manifest_dir + "/" + manifest, d)
+ name = manifest.replace(manifest_pattern[:-1], "")
+ namemap = d.getVar('SSTATETASKNAMES', True).split()
+ tasks = d.getVar('SSTATETASKS', True).split()
+ taskname = tasks[namemap.index(name)]
+ shared_state = sstate_state_fromvars(d, taskname[3:])
+ sstate_clean(shared_state, d)
}
+def sstate_hardcode_path(d):
+ # Need to remove hardcoded paths and fix these when we install the
+ # staging packages.
+ sstate_scan_cmd = bb.data.getVar('SSTATE_SCAN_CMD', d, True)
+ p = os.popen("%s" % sstate_scan_cmd)
+ file_list = p.read()
+
+ if file_list == "":
+ p.close()
+ return
+
+ staging = bb.data.getVar('STAGING_DIR', d, True)
+ staging_target = bb.data.getVar('STAGING_DIR_TARGET', d, True)
+ staging_host = bb.data.getVar('STAGING_DIR_HOST', d, True)
+ sstate_builddir = bb.data.getVar('SSTATE_BUILDDIR', d, True)
+
+ for i in file_list.split('\n'):
+ if not i:
+ continue
+ if bb.data.inherits_class('native', d) or bb.data.inherits_class('nativesdk', d) or bb.data.inherits_class('crosssdk', d) or bb.data.inherits_class('cross-canadian', d):
+ cmd = "sed -i -e s:%s:FIXMESTAGINGDIR:g %s" % (staging, i)
+ elif bb.data.inherits_class('cross', d):
+ cmd = "sed -i -e s:%s:FIXMESTAGINGDIRTARGET:g %s \
+ sed -i -e s:%s:FIXMESTAGINGDIR:g %s" % (staging_target, i, staging, i)
+ else:
+ cmd = "sed -i -e s:%s:FIXMESTAGINGDIRHOST:g %s" % (staging_host, i)
+
+ os.system(cmd)
+ os.system("echo %s | sed -e 's:%s::' >> %sfixmepath" % (i, sstate_builddir, sstate_builddir))
+ p.close()
+
def sstate_package(ss, d):
import oe.path
@@ -289,6 +318,7 @@ def sstate_package(ss, d):
bb.data.setVar('SSTATE_BUILDDIR', sstatebuild, d)
bb.data.setVar('SSTATE_PKG', sstatepkg, d)
+ sstate_hardcode_path(d)
bb.build.exec_func('sstate_create_package', d)
bb.siggen.dump_this_task(sstatepkg + ".siginfo", d)
@@ -296,37 +326,40 @@ def sstate_package(ss, d):
return
def pstaging_fetch(sstatepkg, d):
- import bb.fetch
-
- # only try and fetch if the user has configured a mirror
+ # Only try and fetch if the user has configured a mirror
mirrors = bb.data.getVar('SSTATE_MIRRORS', d, True)
- if mirrors:
- # Copy the data object and override DL_DIR and SRC_URI
- localdata = bb.data.createCopy(d)
- bb.data.update_data(localdata)
+ if not mirrors:
+ return
- dldir = bb.data.expand("${SSTATE_DIR}", localdata)
- srcuri = "file://" + os.path.basename(sstatepkg)
+ import bb.fetch2
+ # Copy the data object and override DL_DIR and SRC_URI
+ localdata = bb.data.createCopy(d)
+ bb.data.update_data(localdata)
- bb.mkdirhier(dldir)
+ dldir = bb.data.expand("${SSTATE_DIR}", localdata)
+ srcuri = "file://" + os.path.basename(sstatepkg)
- bb.data.setVar('DL_DIR', dldir, localdata)
- bb.data.setVar('PREMIRRORS', mirrors, localdata)
- bb.data.setVar('SRC_URI', srcuri, localdata)
+ bb.mkdirhier(dldir)
- # Try a fetch from the sstate mirror, if it fails just return and
- # we will build the package
- try:
- bb.fetch.init([srcuri], localdata)
- bb.fetch.go(localdata, [srcuri])
- # Need to optimise this, if using file:// urls, the fetcher just changes the local path
- # For now work around by symlinking
- localpath = bb.data.expand(bb.fetch.localpath(srcuri, localdata), localdata)
- if localpath != sstatepkg and os.path.exists(localpath):
- os.symlink(localpath, sstatepkg)
- except:
- pass
+ bb.data.setVar('DL_DIR', dldir, localdata)
+ bb.data.setVar('PREMIRRORS', mirrors, localdata)
+ bb.data.setVar('SRC_URI', srcuri, localdata)
+
+ # Try a fetch from the sstate mirror, if it fails just return and
+ # we will build the package
+ try:
+ fetcher = bb.fetch2.Fetch([srcuri], localdata)
+ fetcher.download()
+
+ # Need to optimise this, if using file:// urls, the fetcher just changes the local path
+ # For now work around by symlinking
+ localpath = bb.data.expand(fetcher.localpath(srcuri), localdata)
+ if localpath != sstatepkg and os.path.exists(localpath) and not os.path.exists(sstatepkg):
+ os.symlink(localpath, sstatepkg)
+
+ except bb.fetch2.BBFetchException:
+ pass
def sstate_setscene(d):
shared_state = sstate_state_fromvars(d)
@@ -353,15 +386,13 @@ python sstate_task_postfunc () {
# set as SSTATE_BUILDDIR
#
sstate_create_package () {
- # Need to remove hardcoded paths and fix these when we install the
- # staging packages.
- for i in `${SSTATE_SCAN_CMD}` ; do \
- sed -i -e s:${STAGING_DIR}:FIXMESTAGINGDIR:g $i
- echo $i | sed -e 's:${SSTATE_BUILDDIR}::' >> ${SSTATE_BUILDDIR}fixmepath
- done
-
cd ${SSTATE_BUILDDIR}
- tar -cvzf ${SSTATE_PKG} *
+ # Need to handle empty directories
+ if [ "$(ls -A)" ]; then
+ tar -czf ${SSTATE_PKG} *
+ else
+ tar -cz --file=${SSTATE_PKG} --files-from=/dev/null
+ fi
cd ${WORKDIR}
rm -rf ${SSTATE_BUILDDIR}
@@ -384,6 +415,7 @@ def sstate_checkhashes(sq_fn, sq_task, sq_hash, sq_hashfn, d):
# This needs to go away, FIXME
mapping = {
"do_populate_sysroot" : "populate-sysroot",
+ "do_populate_lic" : "populate-lic",
"do_package_write_ipk" : "deploy-ipk",
"do_package_write_deb" : "deploy-deb",
"do_package_write_rpm" : "deploy-rpm",
diff --git a/meta/classes/staging.bbclass b/meta/classes/staging.bbclass
index 843256545f..a713734c3f 100644
--- a/meta/classes/staging.bbclass
+++ b/meta/classes/staging.bbclass
@@ -25,19 +25,6 @@ sysroot_stage_libdir() {
src="$1"
dest="$2"
- olddir=`pwd`
- cd $src
- las=$(find . -name \*.la -type f)
- cd $olddir
- echo "Found la files: $las"
- for i in $las
- do
- sed -e 's/^installed=yes$/installed=no/' \
- -e '/^dependency_libs=/s,${WORKDIR}[[:alnum:]/\._+-]*/\([[:alnum:]\._+-]*\),${STAGING_LIBDIR}/\1,g' \
- -e "/^dependency_libs=/s,\([[:space:]']\)${libdir},\1${STAGING_LIBDIR},g" \
- -e "/^dependency_libs=/s,\([[:space:]']\)${base_libdir},\1${STAGING_DIR_HOST}${base_libdir},g" \
- -i $src/$i
- done
sysroot_stage_dir $src $dest
}
@@ -45,46 +32,45 @@ sysroot_stage_dirs() {
from="$1"
to="$2"
- sysroot_stage_dir $from${includedir} $to${STAGING_INCDIR}
+ sysroot_stage_dir $from${includedir} $to${includedir}
if [ "${BUILD_SYS}" = "${HOST_SYS}" ]; then
- sysroot_stage_dir $from${bindir} $to${STAGING_DIR_HOST}${bindir}
- sysroot_stage_dir $from${sbindir} $to${STAGING_DIR_HOST}${sbindir}
- sysroot_stage_dir $from${base_bindir} $to${STAGING_DIR_HOST}${base_bindir}
- sysroot_stage_dir $from${base_sbindir} $to${STAGING_DIR_HOST}${base_sbindir}
- sysroot_stage_dir $from${libexecdir} $to${STAGING_DIR_HOST}${libexecdir}
- sysroot_stage_dir $from${sysconfdir} $to${STAGING_DIR_HOST}${sysconfdir}
- sysroot_stage_dir $from${localstatedir} $to${STAGING_DIR_HOST}${localstatedir}
+ sysroot_stage_dir $from${bindir} $to${bindir}
+ sysroot_stage_dir $from${sbindir} $to${sbindir}
+ sysroot_stage_dir $from${base_bindir} $to${base_bindir}
+ sysroot_stage_dir $from${base_sbindir} $to${base_sbindir}
+ sysroot_stage_dir $from${libexecdir} $to${libexecdir}
+ sysroot_stage_dir $from${sysconfdir} $to${sysconfdir}
+ sysroot_stage_dir $from${localstatedir} $to${localstatedir}
fi
if [ -d $from${libdir} ]
then
- sysroot_stage_libdir $from/${libdir} $to${STAGING_LIBDIR}
+ sysroot_stage_libdir $from/${libdir} $to${libdir}
fi
if [ -d $from${base_libdir} ]
then
- sysroot_stage_libdir $from${base_libdir} $to${STAGING_DIR_HOST}${base_libdir}
+ sysroot_stage_libdir $from${base_libdir} $to${base_libdir}
fi
- sysroot_stage_dir $from${datadir} $to${STAGING_DATADIR}
+ sysroot_stage_dir $from${datadir} $to${datadir}
}
sysroot_stage_all() {
sysroot_stage_dirs ${D} ${SYSROOT_DESTDIR}
}
-do_populate_sysroot[dirs] = "${STAGING_DIR_TARGET}/${bindir} ${STAGING_DIR_TARGET}/${libdir} \
- ${STAGING_DIR_TARGET}/${includedir} \
- ${STAGING_BINDIR_NATIVE} ${STAGING_LIBDIR_NATIVE} \
- ${STAGING_INCDIR_NATIVE} \
- ${STAGING_DATADIR} \
- ${SYSROOT_DESTDIR}${STAGING_DIR_TARGET} \
- ${S} ${B}"
+do_populate_sysroot[dirs] = "${SYSROOT_DESTDIR}"
-# Could be compile but populate_sysroot and do_install shouldn't run at the same time
addtask populate_sysroot after do_install
SYSROOT_PREPROCESS_FUNCS ?= ""
SYSROOT_DESTDIR = "${WORKDIR}/sysroot-destdir/"
SYSROOT_LOCK = "${STAGING_DIR}/staging.lock"
+# We clean out any existing sstate from the sysroot if we rerun configure
+python sysroot_cleansstate () {
+ ss = sstate_state_fromvars(d, "populate_sysroot")
+ sstate_clean(ss, d)
+}
+do_configure[prefuncs] += "sysroot_cleansstate"
python do_populate_sysroot () {
#
@@ -103,15 +89,15 @@ python do_populate_sysroot () {
SSTATETASKS += "do_populate_sysroot"
do_populate_sysroot[sstate-name] = "populate-sysroot"
-do_populate_sysroot[sstate-inputdirs] = "${SYSROOT_DESTDIR}/${STAGING_DIR}"
-do_populate_sysroot[sstate-outputdirs] = "${TMPDIR}/sysroots"
+do_populate_sysroot[sstate-inputdirs] = "${SYSROOT_DESTDIR}"
+do_populate_sysroot[sstate-outputdirs] = "${STAGING_DIR_HOST}/"
+do_populate_sysroot[stamp-extra-info] = "${MACHINE}"
python do_populate_sysroot_setscene () {
sstate_setscene(d)
}
addtask do_populate_sysroot_setscene
-
python () {
if bb.data.getVar('do_stage', d, True) is not None:
bb.fatal("Legacy staging found for %s as it has a do_stage function. This will need conversion to a do_install or often simply removal to work with Poky" % bb.data.getVar("FILE", d, True))
diff --git a/meta/classes/tinderclient.bbclass b/meta/classes/tinderclient.bbclass
index 28df0f9505..1027c7cef4 100644
--- a/meta/classes/tinderclient.bbclass
+++ b/meta/classes/tinderclient.bbclass
@@ -367,14 +367,14 @@ def tinder_do_tinder_report(event):
addhandler tinderclient_eventhandler
python tinderclient_eventhandler() {
from bb import note, error, data
- from bb.event import NotHandled, getName
+ from bb.event import getName
if e.data is None or getName(e) == "MsgNote":
- return NotHandled
+ return
do_tinder_report = data.getVar('TINDER_REPORT', e.data, True)
if do_tinder_report and do_tinder_report == "1":
tinder_do_tinder_report(e)
- return NotHandled
+ return
}
diff --git a/meta/classes/toolchain-scripts.bbclass b/meta/classes/toolchain-scripts.bbclass
index c393d99644..b2165bc275 100644
--- a/meta/classes/toolchain-scripts.bbclass
+++ b/meta/classes/toolchain-scripts.bbclass
@@ -49,8 +49,8 @@ toolchain_create_tree_env_script () {
echo 'export TARGET_PREFIX=${TARGET_PREFIX}' >> $script
echo 'export CONFIGURE_FLAGS="--target=${TARGET_SYS} --host=${TARGET_SYS} --build=${BUILD_SYS}"' >> $script
if [ "${TARGET_OS}" = "darwin8" ]; then
- echo 'export TARGET_CFLAGS="-I${STAGING_DIR}${TARGET_SYS}${includedir}"' >> $script
- echo 'export TARGET_LDFLAGS="-L${STAGING_DIR}${TARGET_SYS}${libdir}"' >> $script
+ echo 'export TARGET_CFLAGS="-I${STAGING_DIR}${MACHINE}${includedir}"' >> $script
+ echo 'export TARGET_LDFLAGS="-L${STAGING_DIR}${MACHINE}${libdir}"' >> $script
# Workaround darwin toolchain sysroot path problems
cd ${SDK_OUTPUT}${SDKTARGETSYSROOT}/usr
ln -s /usr/local local
@@ -60,3 +60,33 @@ toolchain_create_tree_env_script () {
echo 'export POKY_NATIVE_SYSROOT="${STAGING_DIR_NATIVE}"' >> $script
echo 'export POKY_TARGET_SYSROOT="${STAGING_DIR_TARGET}"' >> $script
}
+
+# This function creates an environment-setup-script for use by the ADT installer
+toolchain_create_sdk_env_script_for_installer () {
+ # Create environment setup script
+ script=${SDK_OUTPUT}/${SDKPATH}/environment-setup-${OLD_MULTIMACH_TARGET_SYS}
+ rm -f $script
+ touch $script
+ echo 'export PATH=${SDKPATHNATIVE}${bindir_nativesdk}:${SDKPATHNATIVE}${bindir_nativesdk}/${OLD_MULTIMACH_TARGET_SYS}:$PATH' >> $script
+ echo 'export PKG_CONFIG_SYSROOT_DIR=##SDKTARGETSYSROOT##' >> $script
+ echo 'export PKG_CONFIG_PATH=##SDKTARGETSYSROOT##${target_libdir}/pkgconfig' >> $script
+ echo 'export CONFIG_SITE=${SDKPATH}/site-config-${OLD_MULTIMACH_TARGET_SYS}' >> $script
+ echo 'export CC=${TARGET_PREFIX}gcc' >> $script
+ echo 'export CXX=${TARGET_PREFIX}g++' >> $script
+ echo 'export GDB=${TARGET_PREFIX}gdb' >> $script
+ echo 'export TARGET_PREFIX=${TARGET_PREFIX}' >> $script
+ echo 'export CONFIGURE_FLAGS="--target=${TARGET_SYS} --host=${TARGET_SYS} --build=${SDK_ARCH}-linux"' >> $script
+ if [ "${TARGET_OS}" = "darwin8" ]; then
+ echo 'export TARGET_CFLAGS="-I##SDKTARGETSYSROOT##${target_includedir}"' >> $script
+ echo 'export TARGET_LDFLAGS="-L##SDKTARGETSYSROOT##{target_libdir}"' >> $script
+ # Workaround darwin toolchain sysroot path problems
+ cd ${SDK_OUTPUT}${SDKTARGETSYSROOT}/usr
+ ln -s /usr/local local
+ fi
+ echo 'export CFLAGS="${TARGET_CC_ARCH} --sysroot=##SDKTARGETSYSROOT##"' >> $script
+ echo 'export CXXFLAGS="${TARGET_CC_ARCH} --sysroot=##SDKTARGETSYSROOT##"' >> $script
+ echo 'export POKY_NATIVE_SYSROOT="${SDKPATHNATIVE}"' >> $script
+ echo 'export POKY_TARGET_SYSROOT="##SDKTARGETSYSROOT##"' >> $script
+ echo 'export POKY_DISTRO_VERSION="${DISTRO_VERSION}"' >> $script
+ echo 'export POKY_SDK_VERSION="${SDK_VERSION}"' >> $script
+}
diff --git a/meta/classes/update-rc.d.bbclass b/meta/classes/update-rc.d.bbclass
index 57137c60b4..7e4dda7cbb 100644
--- a/meta/classes/update-rc.d.bbclass
+++ b/meta/classes/update-rc.d.bbclass
@@ -1,5 +1,9 @@
+UPDATERCPN ?= "${PN}"
+
DEPENDS_append = " update-rc.d-native"
-RDEPENDS_${PN}_append = " update-rc.d"
+UPDATERCD = "update-rc.d"
+UPDATERCD_virtclass-native = ""
+RDEPENDS_${UPDATERCPN}_append = " ${UPDATERCD}"
INITSCRIPT_PARAMS ?= "defaults"
@@ -69,7 +73,7 @@ python populate_packages_prepend () {
pkgs = bb.data.getVar('INITSCRIPT_PACKAGES', d, 1)
if pkgs == None:
- pkgs = bb.data.getVar('PN', d, 1)
+ pkgs = bb.data.getVar('UPDATERCPN', d, 1)
packages = (bb.data.getVar('PACKAGES', d, 1) or "").split()
if not pkgs in packages and packages != []:
pkgs = packages[0]
diff --git a/meta/classes/utility-tasks.bbclass b/meta/classes/utility-tasks.bbclass
index db22973402..aeac2bce40 100644
--- a/meta/classes/utility-tasks.bbclass
+++ b/meta/classes/utility-tasks.bbclass
@@ -50,33 +50,18 @@ python do_rebuild() {
addtask checkuri
do_checkuri[nostamp] = "1"
python do_checkuri() {
- import sys
+ src_uri = (bb.data.getVar('SRC_URI', d, True) or "").split()
+ if len(src_uri) == 0:
+ return
localdata = bb.data.createCopy(d)
bb.data.update_data(localdata)
- src_uri = bb.data.getVar('SRC_URI', localdata, 1)
-
- try:
- bb.fetch.init(src_uri.split(),d)
- except bb.fetch.NoMethodError:
- (type, value, traceback) = sys.exc_info()
- raise bb.build.FuncFailed("No method: %s" % value)
-
- try:
- bb.fetch.checkstatus(localdata)
- except bb.fetch.MissingParameterError:
- (type, value, traceback) = sys.exc_info()
- raise bb.build.FuncFailed("Missing parameters: %s" % value)
- except bb.fetch.FetchError:
- (type, value, traceback) = sys.exc_info()
- raise bb.build.FuncFailed("Fetch failed: %s" % value)
- except bb.fetch.MD5SumError:
- (type, value, traceback) = sys.exc_info()
- raise bb.build.FuncFailed("MD5 failed: %s" % value)
- except:
- (type, value, traceback) = sys.exc_info()
- raise bb.build.FuncFailed("Unknown fetch Error: %s" % value)
+ try:
+ fetcher = bb.fetch2.Fetch(src_uri, localdata)
+ fetcher.checkstatus()
+ except bb.fetch2.BBFetchException, e:
+ raise bb.build.FuncFailed(e)
}
addtask checkuriall after do_checkuri
diff --git a/meta/classes/utils.bbclass b/meta/classes/utils.bbclass
index 746f46ce52..455b49d54a 100644
--- a/meta/classes/utils.bbclass
+++ b/meta/classes/utils.bbclass
@@ -51,11 +51,12 @@ def machine_paths(d):
def is_machine_specific(d):
"""Determine whether the current recipe is machine specific"""
machinepaths = set(machine_paths(d))
- urldatadict = bb.fetch.init(d.getVar("SRC_URI", True).split(), d, True)
- for urldata in (urldata for urldata in urldatadict.itervalues()
- if urldata.type == "file"):
- if any(urldata.localpath.startswith(mp + "/") for mp in machinepaths):
- return True
+ srcuri = d.getVar("SRC_URI", True).split()
+ for url in srcuri:
+ fetcher = bb.fetch2.Fetch([srcuri], d)
+ if url.startswith("file://"):
+ if any(fetcher.localpath(url).startswith(mp + "/") for mp in machinepaths):
+ return True
def oe_popen_env(d):
env = d.getVar("__oe_popen_env", False)
@@ -199,19 +200,8 @@ oe_libinstall() {
__runcmd install -m 0644 $dota $destpath/
fi
if [ -f "$dotlai" -a -n "$libtool" ]; then
- if test -n "$staging_install"
- then
- # stop libtool using the final directory name for libraries
- # in staging:
- __runcmd rm -f $destpath/$libname.la
- __runcmd sed -e 's/^installed=yes$/installed=no/' \
- -e '/^dependency_libs=/s,${WORKDIR}[[:alnum:]/\._+-]*/\([[:alnum:]\._+-]*\),${STAGING_LIBDIR}/\1,g' \
- -e "/^dependency_libs=/s,\([[:space:]']\)${libdir},\1${STAGING_LIBDIR},g" \
- $dotlai >$destpath/$libname.la
- else
- rm -f $destpath/$libname.la
- __runcmd install -m 0644 $dotlai $destpath/$libname.la
- fi
+ rm -f $destpath/$libname.la
+ __runcmd install -m 0644 $dotlai $destpath/$libname.la
fi
for name in $library_names; do
diff --git a/meta/conf/abi_version.conf b/meta/conf/abi_version.conf
index 3920766a47..f2919e5b60 100644
--- a/meta/conf/abi_version.conf
+++ b/meta/conf/abi_version.conf
@@ -4,4 +4,4 @@
# that breaks the format and have been previously discussed on the mailing list
# with general agreement from the core team.
#
-OELAYOUT_ABI = "6"
+OELAYOUT_ABI = "7"
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index c26beea959..da50fe5c4b 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -43,6 +43,7 @@ includedir_native = "${prefix_native}/include"
libdir_native = "${prefix_native}/lib"
datadir_native = "${prefix_native}/share"
bindir_cross = "/bin"
+bindir_crossscripts = "${bindir}/crossscripts"
prefix_nativesdk = "/usr"
bindir_nativesdk = "${prefix_nativesdk}/bin"
libdir_nativesdk = "${prefix_nativesdk}/lib"
@@ -93,6 +94,9 @@ BASE_PACKAGE_ARCH = "${HOST_ARCH}"
PACKAGE_ARCH = "${BASE_PACKAGE_ARCH}"
MACHINE_ARCH = "${@[bb.data.getVar('BASE_PACKAGE_ARCH', d, 1), bb.data.getVar('MACHINE', d, 1)][bool(bb.data.getVar('MACHINE', d, 1))]}"
PACKAGE_ARCHS = "all any noarch ${TARGET_ARCH} ${PACKAGE_EXTRA_ARCHS} ${MACHINE}"
+# MACHINE shouldn't be included here as a variable dependency since machine specific
+# packages are handled using multimachine
+PACKAGE_ARCHS[vardepsexclude] = "MACHINE"
MULTIMACH_ARCH = "${PACKAGE_ARCH}"
MULTIMACH_TARGET_SYS = "${MULTIMACH_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
@@ -162,14 +166,28 @@ BP = "${BPN}-${PV}"
SECTION = "base"
PRIORITY = "optional"
-SUMMARY_${PN} ?= "${PN} version ${PV}-${PR}"
-SUMMARY_${PN}-dbg ?= "Debugging files for ${PN}"
-SUMMARY_${PN}-dev ?= "Development files for ${PN}"
-SUMMARY_${PN}-doc ?= "Documentation files for ${PN}"
-DESCRIPTION_${PN} ?= "${SUMMARY_${PN}}"
-DESCRIPTION_${PN}-dbg ?= "${SUMMARY_${PN}-dbg}"
-DESCRIPTION_${PN}-dev ?= "${SUMMARY_${PN}-dev}"
-DESCRIPTION_${PN}-doc ?= "${SUMMARY_${PN}-doc}"
+SUMMARY ?= "${PN} version ${PV}-${PR}"
+DESCRIPTION ?= "${SUMMARY}"
+
+# The following two are commented out because they result in a recursive
+# definition of the variable in some corner cases. These are left in
+# to illustrate the intended behavior.
+#SUMMARY_${PN} ?= "${SUMMARY}"
+#DESCRIPTION_${PN} ?= "${DESCRIPTION}"
+
+SUMMARY_${PN}-dbg ?= "${SUMMARY} - Debugging files"
+DESCRIPTION_${PN}-dbg ?= "${DESCRIPTION} \
+This package contains ELF symbols and related sources for debugging purposes."
+
+SUMMARY_${PN}-dev ?= "${SUMMARY} - Development files"
+DESCRIPTION_${PN}-dev ?= "${DESCRIPTION} \
+This package contains symbolic links, static binaries, header files, and \
+related items necessary for software development."
+
+SUMMARY_${PN}-doc ?= "${SUMMARY} - Documentation files"
+DESCRIPTION_${PN}-doc ?= "${DESCRIPTION} \
+This package contains documentation."
+
LICENSE = "INVALID"
MAINTAINER = "Yocto Project Team <poky@yoctoproject.org>"
HOMEPAGE = "unknown"
@@ -252,7 +270,7 @@ LOG_DIR = "${TMPDIR}/log"
CO_DIR = "${DL_DIR}"
CVSDIR = "${CO_DIR}/cvs"
SVNDIR = "${CO_DIR}/svn"
-GITDIR = "${CO_DIR}/git"
+GITDIR = "${CO_DIR}/git2"
BZRDIR = "${CO_DIR}/bzr"
HGDIR = "${CO_DIR}/hg"
@@ -276,7 +294,7 @@ STAGING_DATADIR_NATIVE = "${STAGING_DIR_NATIVE}${datadir_native}"
# This should really be MULTIMACH_HOST_SYS but that breaks "all" and machine
# specific packages - hack around it for now.
-STAGING_DIR_HOST = "${STAGING_DIR}/${BASEPKG_HOST_SYS}"
+STAGING_DIR_HOST = "${STAGING_DIR}/${MACHINE}"
STAGING_BINDIR = "${STAGING_DIR_HOST}${bindir}"
STAGING_LIBDIR = "${STAGING_DIR_HOST}${libdir}"
STAGING_INCDIR = "${STAGING_DIR_HOST}${includedir}"
@@ -288,7 +306,8 @@ STAGING_PYDIR = "${STAGING_DIR}/lib/python2.4"
# This should really be MULTIMACH_TARGET_SYS but that breaks "all" and machine
# specific packages - hack around it for now.
-STAGING_DIR_TARGET = "${STAGING_DIR}/${BASEPKG_TARGET_SYS}"
+STAGING_DIR_TARGET = "${STAGING_DIR}/${MACHINE}"
+STAGING_DIR_TCBOOTSTRAP = "${STAGING_DIR_TARGET}-tcbootstrap"
# Setting DEPLOY_DIR outside of TMPDIR is helpful, when you are using
# packaged staging and/or multimachine.
@@ -302,7 +321,7 @@ DEPLOY_DIR_TOOLS = "${DEPLOY_DIR}/tools"
PKGDATA_DIR = "${TMPDIR}/pkgdata/${MULTIMACH_TARGET_SYS}"
-SDK_NAME = "${DISTRO}/${TARGET_ARCH}"
+SDK_NAME = "${DISTRO}-${SDK_ARCH}-${TARGET_ARCH}"
SDKPATH = "/usr/local/${SDK_NAME}"
SDKPATHNATIVE = "${SDKPATH}/sysroots/${SDK_SYS}"
@@ -311,7 +330,7 @@ SDKPATHNATIVE = "${SDKPATH}/sysroots/${SDK_SYS}"
##################################################################
OLDEST_KERNEL = "2.4.0"
-STAGING_KERNEL_DIR = "${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/kernel"
+STAGING_KERNEL_DIR = "${STAGING_DIR_HOST}/kernel"
##################################################################
# Specific image creation and rootfs population info.
@@ -398,6 +417,7 @@ export RANLIB = "${HOST_PREFIX}ranlib"
export STRIP = "${HOST_PREFIX}strip"
export OBJCOPY = "${HOST_PREFIX}objcopy"
export OBJDUMP = "${HOST_PREFIX}objdump"
+export NM = "${HOST_PREFIX}nm"
PYTHON = "${@sys.executable}"
export BUILD_CC = "${CCACHE}${BUILD_PREFIX}gcc ${BUILD_CC_ARCH}"
@@ -409,10 +429,13 @@ export BUILD_CCLD = "${BUILD_PREFIX}gcc"
export BUILD_AR = "${BUILD_PREFIX}ar"
export BUILD_RANLIB = "${BUILD_PREFIX}ranlib"
export BUILD_STRIP = "${BUILD_PREFIX}strip"
+export BUILD_NM = "${BUILD_PREFIX}nm"
export MAKE = "make"
EXTRA_OEMAKE = "-e MAKEFLAGS="
+export LC_ALL = "C"
+
##################################################################
# Patch handling.
##################################################################
@@ -449,8 +472,9 @@ BUILDSDK_LDFLAGS = "-L${STAGING_LIBDIR} \
-Wl,-rpath-link,${STAGING_DIR_HOST}${base_libdir} \
-Wl,-rpath,${base_libdir} -Wl,-O1"
+TARGET_LINK_HASH_STYLE ??= ""
export LDFLAGS = "${TARGET_LDFLAGS}"
-export TARGET_LDFLAGS = "-Wl,-O1"
+export TARGET_LDFLAGS = "-Wl,-O1 ${TARGET_LINK_HASH_STYLE}"
#export TARGET_LDFLAGS = "-L${STAGING_DIR_TARGET}${libdir} \
# -Wl,-rpath-link,${STAGING_DIR_TARGET}${libdir} \
# -Wl,-O1"
@@ -536,7 +560,7 @@ UPDATECOMMAND_cvs = "/usr/bin/env cvs -d${CVSROOT} update -d -P ${CVSCOOPTS}"
UPDATECOMMAND_svn = "/usr/bin/env svn update ${SVNCOOPTS}"
SRCDATE = "${DATE}"
SRCREV = "INVALID"
-AUTOREV = "${SRCPV}"
+AUTOREV = "${@bb.fetch.get_autorev(d)}"
SRCPV = "${@bb.fetch.get_srcrev(d)}"
SRC_URI = "file://${FILE}"
@@ -595,10 +619,10 @@ SLOT = "0"
# Other
-export PKG_CONFIG_DIR = "${STAGING_DIR}/${BASE_PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}${libdir}/pkgconfig"
+export PKG_CONFIG_DIR = "${STAGING_DIR_HOST}/${libdir}/pkgconfig"
export PKG_CONFIG_PATH = "${PKG_CONFIG_DIR}:${STAGING_DATADIR}/pkgconfig"
export PKG_CONFIG_LIBDIR = "${PKG_CONFIG_DIR}"
-export PKG_CONFIG_SYSROOT_DIR = "${STAGING_DIR}/${BASE_PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
+export PKG_CONFIG_SYSROOT_DIR = "${STAGING_DIR_HOST}"
export PKG_CONFIG_DISABLE_UNINSTALLED = "yes"
export QMAKE_MKSPEC_PATH = "${STAGING_DATADIR_NATIVE}/qmake"
@@ -725,3 +749,9 @@ DISTRO[unexport] = "1"
# Used by canadian-cross to handle string conversions on TARGET_ARCH where needed
TRANSLATED_TARGET_ARCH ??= ${TARGET_ARCH}
+
+# Setup our default hash policy
+BB_SIGNATURE_HANDLER ?= "basic"
+BB_HASHTASK_WHITELIST ?= "(.*-cross$|.*-native$|.*-cross-initial$|.*-cross-intermediate$|^virtual:native:.*|^virtual:nativesdk:.*)"
+BB_HASHBASE_WHITELIST ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH DL_DIR SSTATE_DIR THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL TERM USER FILESPATH USERNAME STAGING_DIR_HOST STAGING_DIR_TARGET"
+
diff --git a/meta/conf/distro/include/as-needed.inc b/meta/conf/distro/include/as-needed.inc
index e962619c91..9d2056e17a 100644
--- a/meta/conf/distro/include/as-needed.inc
+++ b/meta/conf/distro/include/as-needed.inc
@@ -11,5 +11,6 @@ ASNEEDED_pn-pciutils = ""
ASNEEDED_pn-puzzles = ""
ASNEEDED_pn-dialer = ""
ASNEEDED_pn-pulseaudio = ""
+ASNEEDED_pn-rpm = ""
-TARGET_LDFLAGS += "${ASNEEDED}" \ No newline at end of file
+TARGET_LDFLAGS += "${ASNEEDED}"
diff --git a/meta/conf/distro/include/distro_tracking_fields.inc b/meta/conf/distro/include/distro_tracking_fields.inc
index 7867b70bb0..3ac5452972 100644
--- a/meta/conf/distro/include/distro_tracking_fields.inc
+++ b/meta/conf/distro/include/distro_tracking_fields.inc
@@ -1,22 +1,27 @@
-RECIPE_STATUS_pn-diffutils = "red"
+RECIPE_STATUS_pn-diffutils = "green"
RECIPE_LATEST_VERSION_pn-diffutils = "3.0"
+RECIPE_LAST_UPDATE_pn-diffutils = "Dec 10, 2010"
RECIPE_MAINTAINER_pn-diffutils = "Qing He <qing.he@intel.com>"
RECIPE_STATUS_pn-epdfview = "red"
RECIPE_LATEST_VERSION_pn-epdfview = "check"
+RECIPE_LAST_UPDATE_pn-epdfview = "Jul 13, 2010"
RECIPE_MAINTAINER_pn-epdfview = "Edwin Zhai <edwin.zhai@intel.com>"
-RECIPE_STATUS_pn-fakechroot = "red"
-RECIPE_LATEST_VERSION_pn-fakechroot = "check"
-RECIPE_MAINTAINER_pn-fakechroot = "Qing He <qing.he@intel.com>"
-
-RECIPE_STATUS_pn-gccmakedep = "red"
-RECIPE_LATEST_VERSION_pn-gccmakedep = "check"
-RECIPE_MAINTAINER_pn-gccmakedep = "Dexuan Cui <dexuan.cui@intel.com>"
+RECIPE_STATUS_pn-gccmakedep = "green"
DISTRO_PN_ALIAS_pn-gccmakedep = "Mandriva=gccmakedep Ubuntu=xutils-dev"
+RECIPE_DEPENDENCY_CHECK_pn-gccmakedep = "not done"
+RECIPE_LATEST_VERSION_pn-gccmakedep = "1.0.2"
+RECIPE_NO_OF_PATCHES_pn-gccmakedep = "0"
+RECIPE_INTEL_SECTION_pn-gccmakedep = "x11/utils"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gccmakedep = "4 months"
+RECIPE_LATEST_RELEASE_DATE_pn-gccmakedep = "May 19, 2006"
+RECIPE_COMMENTS_pn-gccmakedep = ""
+RECIPE_LAST_UPDATE_pn-gccmakedep = "Jul 3, 2007"
+RECIPE_MAINTAINER_pn-gccmakedep = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-git = "green"
-RECIPE_LATEST_VERSION_pn-git = "1.7.3.2"
+RECIPE_LATEST_VERIONS_pn-git = "1.7.3.4"
RECIPE_MAINTAINER_pn-git = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-gtk-theme-torturer = "red"
@@ -26,24 +31,32 @@ DISTRO_PN_ALIAS_pn-gtk-theme-torturer = "OSPDT upstream=http://wiki.laptop.org/g
RECIPE_STATUS_pn-libpcre = "green"
RECIPE_LATEST_VERSION_pn-libpcre = "8.10"
+RECIPE_LAST_UPDATE_pn-libpcre = "Jul 13, 2010"
RECIPE_MAINTAINER_pn-libpcre = "Nitin A Kamble <nitin.a.kamble@intel.com>"
DISTRO_PN_ALIAS_pn-libpcre = "Mandriva=libpcre0 Fedora=pcre"
RECIPE_STATUS_pn-libsoup = "red"
RECIPE_LATEST_VERSION_pn-libsoup = "check"
+RECIPE_LAST_UPDATE_pn-libsoup = "Sep 22, 2008"
RECIPE_MAINTAINER_pn-libsoup = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-libtimedate-perl = "green"
RECIPE_LATEST_VERSION_pn-libtimedate-perl = "1.20"
+RECIPE_LAST_UPDATE_pn-libtimedate-perl = "Aug 13, 2010"
RECIPE_MAINTAINER_pn-libtimedate-perl = "Nitin A Kamble <nitin.a.kamble@intel.com>"
DISTRO_PN_ALIAS_pn-libtimedate-perl = "Debian=libtimedate-perl Ubuntu=libtimedate-perl"
-RECIPE_STATUS_pn-linux-firmware = "red"
-RECIPE_LATEST_VERSION_pn-linux-firmware = "check"
-RECIPE_MAINTAINER_pn-linux-firmware = "Dongxiao Xu <dongxiao.xu@intel.com"
+RECIPE_STATUS_pn-linux-firmware = "green"
+RECIPE_LATEST_VERSION_pn-linux-firmware = "40c0f950"
+RECIPE_LATEST_RELEASE_DATE_pn-linux-firmware = "2010/12/01"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-linux-firmware = "n/a"
+RECIPE_NO_OF_PATCHES_pn-linux-firmware = "0"
+RECIPE_LAST_UPDATE_pn-linux-firmware = "Dec 30, 2010"
+RECIPE_MAINTAINER_pn-linux-firmware = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-logrotate = "red"
RECIPE_LATEST_VERSION_pn-logrotate = "check"
+RECIPE_LAST_UPDATE_pn-logrotate = "Sep 1, 2010"
RECIPE_MAINTAINER_pn-logrotate = "Xiaofeng.Yan <xiaofeng@windriver.com>"
RECIPE_STATUS_pn-loudmouth = "red"
@@ -52,13 +65,10 @@ RECIPE_MAINTAINER_pn-loudmouth = "Dongxiao Xu <dongxiao.xu@intel.com"
RECIPE_STATUS_pn-makedepend = "green"
RECIPE_LATEST_VERSION_pn-makedepend = "1.0.3"
+RECIPE_LAST_UPDATE_pn-makedepend = "Nov 29, 2010"
RECIPE_MAINTAINER_pn-makedepend = "Nitin A Kamble <nitin.a.kamble@intel.com>"
DISTRO_PN_ALIAS_pn-makedepend = "Mandriva=makedepend Ubuntu=xutils-dev"
-RECIPE_STATUS_pn-mdadm = "red"
-RECIPE_LATEST_VERSION_pn-mdadm = "check"
-RECIPE_MAINTAINER_pn-mdadm = "Xiaofeng.Yan <xiaofeng@windriver.com>"
-
RECIPE_STATUS_pn-meta-ide-support = "red"
RECIPE_LATEST_VERSION_pn-meta-ide-support = "check"
DISTRO_PN_ALIAS_pn-meta-ide-support = 'Poky'
@@ -66,55 +76,57 @@ RECIPE_MAINTAINER_pn-meta-ide-support = "Joshua Lock <joshua.lock@intel.com>"
RECIPE_STATUS_pn-mingetty = "red"
RECIPE_LATEST_VERSION_pn-mingetty = "1.08"
+RECIPE_LAST_UPDATE_pn-mingetty = "Sep 1, 2010"
RECIPE_MAINTAINER_pn-mingetty = "Xiaofeng.Yan <xiaofeng@windriver.com>"
RECIPE_STATUS_pn-minicom="green"
-RECIPE_LATEST_VERSION_pn-minicom="2.4"
+RECIPE_LATEST_VERSION_pn-minicom="2.5"
RECIPE_NO_OF_PATCHES_pn-minicom="1"
RECIPE_LATEST_RELEASE_DATE_pn-minicom="2010/12/20"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-minicom="22 months"
+RECIPE_LAST_UPDATE_pn-minicom = "Nov 24, 2010"
+RECIPE_MANUAL_CHECK_DATE_pn-minicom = "Jan 30, 2011"
RECIPE_MAINTAINER_pn-minicom = "Dongxiao Xu <dongxiao.xu@intel.com>"
-RECIPE_STATUS_pn-moblin-proto = "red"
-RECIPE_LATEST_VERSION_pn-moblin-proto = "check"
-RECIPE_MAINTAINER_pn-moblin-proto = "Dexuan Cui <dexuan.cui@intel.com>"
-
RECIPE_STATUS_pn-patch = "green"
RECIPE_LATEST_VERIONS_pn-patch = "2.6.1"
+RECIPE_LAST_UPDATE_pn-patch = "Dec 7, 2010"
RECIPE_MAINTAINER_pn-patch = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-python-imaging = "green"
RECIPE_LATEST_VERSION_pn-python-imaging = "1.1.7"
+RECIPE_LAST_UPDATE_pn-python-imaging = "Jul 7, 2010"
RECIPE_MAINTAINER_pn-python-imaging = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-run-postinsts = "red"
RECIPE_LATEST_VERSION_pn-run-postinsts = "check"
+RECIPE_LAST_UPDATE_pn-run-postinsts = "Nov 22, 2010"
RECIPE_MAINTAINER_pn-run-postinsts = "Dongxiao Xu <dongxiao.xu@intel.com"
RECIPE_STATUS_pn-screen = "red"
RECIPE_LATEST_VERSION_pn-screen = "check"
+RECIPE_LAST_UPDATE_pn-screen = "Aug 31, 2010"
RECIPE_MAINTAINER_pn-screen = "Qing He <qing.he@intel.com>"
RECIPE_STATUS_pn-subversion = "green"
-RECIPE_LATEST_VERSION_pn-subversion = "1.6.13"
+RECIPE_LATEST_VERSION_pn-subversion = "1.6.15"
+RECIPE_MANUAL_CHECK_DATE_pn-subversion = "Jan 25, 2011"
RECIPE_MAINTAINER_pn-subversion = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-trace-cmd = "red"
RECIPE_LATEST_VERSION_pn-trace-cmd = "check"
DISTRO_PN_ALIAS_pn-trace-cmd = "Mandriva=trace-cmd Ubuntu=trace-cmd"
+RECIPE_LAST_UPDATE_pn-trace-cmd = "Aug 20, 2010"
RECIPE_MAINTAINER_pn-trace-cmd = "Bruce"
-RECIPE_STATUS_pn-web = "red"
-RECIPE_LATEST_VERSION_pn-web = "check"
+RECIPE_STATUS_pn-web = "green"
+RECIPE_LATEST_VERSION_pn-web = "0.0+svnr129"
DISTRO_PN_ALIAS_pn-web = "OpenedHand"
+RECIPE_LAST_UPDATE_pn-web = "Nov 30, 2010"
RECIPE_MAINTAINER_pn-web = "Edwin Zhai <edwin.zhai@intel.com>"
-RECIPE_STATUS_pn-zile = "red"
-RECIPE_LATEST_VERSION_pn-zile = "check"
-RECIPE_MAINTAINER_pn-zile = "Qing He <qing.he@intel.com>"
-
RECIPE_STATUS_pn-icu = "yellow" #do_configure for autotool;icu-3.6.inc
-DEPENDENCY_CHECK_pn-icu = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-icu = "not done"
RECIPE_LATEST_VERSION_pn-icu = "3.6"
RECIPE_PATCH_pn-icu+gccfix = "to be pushed upstream"
RECIPE_PATCH_pn-icu+use-g++-for-linking = "Unclear"
@@ -122,10 +134,11 @@ RECIPE_INTEL_SECTION_pn-icu = "base libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-icu = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-icu = "08/2006"
RECIPE_COMMENTS_pn-icu = "arm optimizations; license similar to MIT, however sub-license is not allowed; autoreconf is not used and current style is not clean. need enhancement in the future"
+RECIPE_LAST_UPDATE_pn-icu = "Dec 6, 2007"
RECIPE_MAINTAINER_pn-icu = "Scott Garman <scott.a.garman@intel.com>"
RECIPE_STATUS_pn-eggdbus = "yellow" # patch comment
-DEPENDENCY_CHECK_pn-eggdbus = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-eggdbus = "not done"
RECIPE_LATEST_VERSION_pn-eggdbus = "0.6"
RECIPE_PATCH_pn-eggdbus+gtk-doc = "local; no comment; poky doesn't have full gtk-doc support, and eggdbus itself references AM_CONDITIONAL in Makefile.am earlier before configure script is run"
RECIPE_PATCH_pn-eggdbus+marshal = "local; no comment; one binary generated in eggdbus build needs to be invoked. So point to native version"
@@ -133,103 +146,108 @@ RECIPE_INTEL_SECTION_pn-eggdbus = "base libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-eggdbus = "4 months"
RECIPE_LATEST_RELEASE_DATE_pn-eggdbus = "11/2009"
RECIPE_COMMENTS_pn-eggdbus = "http://mail.gnome.org/archives/gtk-devel-list/2008-December/msg00059.html contains more detail introduction"
+RECIPE_LAST_UPDATE_pn-eggdbus = "Jan 29, 2010"
RECIPE_MAINTAINER_pn-eggdbus = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-libdaemon = "green"
-DEPENDENCY_CHECK_pn-libdaemon = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libdaemon = "not done"
RECIPE_LATEST_VERSION_pn-libdaemon = "0.14"
RECIPE_INTEL_SECTION_pn-libdaemon = "base libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libdaemon = "15 months"
RECIPE_LATEST_RELEASE_DATE_pn-libdaemon = "11/2009"
RECIPE_COMMENTS_pn-libdaemon = ""
+RECIPE_LAST_UPDATE_pn-libdaemon = "Jun 23, 2010"
RECIPE_MAINTAINER_pn-libdaemon = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-glib-2.0 = "green"
DISTRO_PN_ALIAS_pn-glib-2.0 = "Meego=glib2 Fedora=glib2 OpenSuSE=glib2 Ubuntu=glib2.0 Mandriva=glib2.0 Debian=glib2.0"
-DEPENDENCY_CHECK_pn-glib-2.0 = "not done"
-RECIPE_LATEST_VERSION_pn-glib-2.0 = "2.27.3"
+RECIPE_DEPENDENCY_CHECK_pn-glib-2.0 = "not done"
+RECIPE_LATEST_VERSION_pn-glib-2.0 = "2.27.5"
RECIPE_PATCH_pn-glib-2.0+60_wait-longer-for-threads-to-die = "to be pushed upstream"
RECIPE_PATCH_pn-glib-2.0+configure-libtool = "local"
RECIPE_PATCH_pn-glib-2.0+glib-gettextize-dir = "marked as REMOVAL"
RECIPE_INTEL_SECTION_pn-glib-2.0 = "base libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-glib-2.0 = "8 days"
-RECIPE_LATEST_RELEASE_DATE_pn-glib-2.0 = "2010/11/09"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-glib-2.0 = "1 month"
+RECIPE_LATEST_RELEASE_DATE_pn-glib-2.0 = "2010/12/20"
RECIPE_COMMENTS_pn-glib-2.0 = ""
+RECIPE_LAST_UPDATE_pn-glib-2.0 = "Dec 30, 2010"
+RECIPE_NO_UPDATE_REASON_pn-glib-2.0 ="do not upgrade to 2.27.5 because it is unstable version"
RECIPE_MAINTAINER_pn-glib-2.0 = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libpam = "green"
DISTRO_PN_ALIAS_pn-libpam = "Meego=pam Fedora=pam OpenSuSE=pam Ubuntu=pam Mandriva=pam Debian=pam"
-DEPENDENCY_CHECK_pn-libpam = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libpam = "not done"
RECIPE_LATEST_VERSION_pn-libpam = "1.1.3"
RECIPE_INTEL_SECTION_pn-libpam = "base libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libpam = "2 months"
RECIPE_LATEST_RELEASE_DATE_pn-libpam = "2010/10/28"
RECIPE_COMMENTS_pn-libpam = ""
+RECIPE_LAST_UPDATE_pn-libpam = "Nov 23, 2010"
RECIPE_MAINTAINER_pn-libpam = "Scott Garman <scott.a.garman@intel.com>"
RECIPE_STATUS_pn-libgpg-error = "yellow" # specific .pc handle
-DEPENDENCY_CHECK_pn-libgpg-error = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libgpg-error = "not done"
RECIPE_LATEST_VERSION_pn-libgpg-error = "1.9"
RECIPE_PATCH_pn-libgpg-error+pkgconfig = "long existing since 0.7; no exact commit; it's to add a .pc.in. perhaps we don't require it now?"
RECIPE_INTEL_SECTION_pn-libgpg-error = "base libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libgpg-error = "2 months"
RECIPE_LATEST_RELEASE_DATE_pn-libgpg-error = "07/2010"
RECIPE_COMMENTS_pn-libgpg-error = ""
+RECIPE_LAST_UPDATE_pn-libgpg-error = "Nov 18, 2010"
RECIPE_MAINTAINER_pn-libgpg-error = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-gpgme = "green"
-DEPENDENCY_CHECK_pn-gpgme = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-gpgme = "not done"
RECIPE_LATEST_VERSION_pn-gpgme = "1.3.0"
RECIPE_INTEL_SECTION_pn-gpgme = "base libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gpgme = "6 months"
RECIPE_LATEST_RELEASE_DATE_pn-gpgme = "01/2010"
RECIPE_COMMENTS_pn-gpgme = ""
+RECIPE_LAST_UPDATE_pn-gpgme = "Jul 21, 2010"
RECIPE_MAINTAINER_pn-gpgme = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-expat = "green"
-DEPENDENCY_CHECK_pn-expat = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-expat = "not done"
RECIPE_LATEST_VERSION_pn-expat = "2.0.1"
RECIPE_PATCH_pn-expat+autotools = "added in 2.0.0; 70774a74; 2006; don't include its own version of m4"
RECIPE_INTEL_SECTION_pn-expat = "base libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-expat = "17 months"
RECIPE_LATEST_RELEASE_DATE_pn-expat = "06/2007"
RECIPE_COMMENTS_pn-expat = ""
+RECIPE_LAST_UPDATE_pn-expat = "Jul 7, 2010"
RECIPE_MAINTAINER_pn-expat = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-dbus = "green"
-DEPENDENCY_CHECK_pn-dbus = "not done"
-RECIPE_LATEST_VERSION_pn-dbus = "1.2.24"
-RECIPE_PATCH_pn-dbus+tmpdir = "an old patch dated to 2005; no exact commit; seems to handle tmp dir check at build time. need test whether valid now"
-RECIPE_PATCH_pn-dbus+fix-install-daemon = "by RP; 2009; 8e39848b; handle dbus-daemon install; need more study later"
+RECIPE_LATEST_VERSION_pn-dbus = "1.4.1"
RECIPE_INTEL_SECTION_pn-dbus = "base libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-dbus = "1 months"
-RECIPE_LATEST_RELEASE_DATE_pn-dbus = "03/2010"
-RECIPE_COMMENTS_pn-dbus = "unstable version at 1.3.1; though current latest version in poky is 1.2.14, it's 1.2.4 preferred"
+RECIPE_LATEST_RELEASE_DATE_pn-dbus = "12/2010"
+RECIPE_LAST_UPDATE_pn-dbus = "Jan 20, 2011"
RECIPE_MAINTAINER_pn-dbus = "Qing He <qing.he@intel.com>"
RECIPE_STATUS_pn-dbus-glib = "green"
-DEPENDENCY_CHECK_pn-dbus-glib = "not done"
-RECIPE_LATEST_VERSION_pn-dbus-glib = "0.86"
-RECIPE_PATCH_pn-dbus-glib+fix_asneeded = "added in 2009; adjust link order of expat. not sure the reason yet. disable for now"
+RECIPE_DEPENDENCY_CHECK_pn-dbus-glib = "not done"
+RECIPE_LATEST_VERSION_pn-dbus-glib = "0.92"
+RECIPE_NO_OF_PATCHES_pn-dbus-glib = "1"
RECIPE_PATCH_pn-dbus-glib+no-examples = "no need to build example. local patch"
RECIPE_INTEL_SECTION_pn-dbus-glib = "base libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-dbus-glib = "6 months"
-RECIPE_LATEST_RELEASE_DATE_pn-dbus-glib = "03/2010"
-RECIPE_COMMENTS_pn-dbus-glib = ""
+RECIPE_LATEST_RELEASE_DATE_pn-dbus-glib = "11/2010"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-dbus-glib = "3 days"
+RECIPE_LAST_UPDATE_pn-dbus-glib = "Jan 4, 2011"
RECIPE_MAINTAINER_pn-dbus-glib = "Scott Garman <scott.a.garman@intel.com>"
RECIPE_STATUS_pn-neon="green"
-DEPENDENCY_CHECK_pn-neon = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-neon = "not done"
RECIPE_LATEST_VERSION_pn-neon="0.29.5"
RECIPE_NO_OF_PATCHES_pn-neon="0"
RECIPE_INTEL_SECTION_pn-neon = "base libs"
RECIPE_LATEST_RELEASE_DATE_pn-neon="2010/10/14"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-neon="10 days"
RECIPE_COMMENTS_pn-neon = ""
+RECIPE_LAST_UPDATE_pn-neon = "Nov 15, 2010"
RECIPE_MAINTAINER_pn-neon = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libpng = "green"
-DEPENDENCY_CHECK_pn-libpng = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libpng = "not done"
RECIPE_LATEST_VERSION_pn-libpng = "1.4.5"
RECIPE_NO_UPDATE_REASON_pn-libpng = "1.4.3 has API compatibility issue, e.g. break libmatchbox. choose 1.2.44 instead"
RECIPE_PATCH_pn-libpng+makefile = "by RP; 2008; to define ECHO explicitly for lbitool 2.2.2. need check whether it's still valide for new libtool. candidate for upstream"
@@ -237,88 +255,91 @@ RECIPE_INTEL_SECTION_pn-libpng = "base libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libpng = "1 month"
RECIPE_LATEST_RELEASE_DATE_pn-libpng = "06/2010"
RECIPE_COMMENTS_pn-libpng = ""
+RECIPE_LAST_UPDATE_pn-libpng = "Jul 20, 2010"
RECIPE_MAINTAINER_pn-libpng = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-libidn = "green"
-DEPENDENCY_CHECK_pn-libidn = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libidn = "not done"
RECIPE_LATEST_VERSION_pn-libidn = "1.19"
RECIPE_INTEL_SECTION_pn-libidn = "base libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libidn = "3 months"
RECIPE_LATEST_RELEASE_DATE_pn-libidn = "05/2010"
RECIPE_COMMENTS_pn-libidn = ""
+RECIPE_LAST_UPDATE_pn-libidn = "Jul 20, 2010"
RECIPE_MAINTAINER_pn-libidn = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-glibc = "green"
-DEPENDENCY_CHECK_pn-glibc = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-glibc = "not done"
RECIPE_LATEST_VERSION_pn-glibc = "2.11.2"
RECIPE_NO_UPDATE_REASON_pn-glibc = "two glibc plugins are based on 2.10.1"
RECIPE_INTEL_SECTION_pn-glibc = "base libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-glibc = "5 months"
RECIPE_LATEST_RELEASE_DATE_pn-glibc = "05/2010"
RECIPE_COMMENTS_pn-glibc = ""
+RECIPE_LAST_UPDATE_pn-glibc = "Jul 8, 2010"
RECIPE_MAINTAINER_pn-glibc = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-liboil = "green"
-DEPENDENCY_CHECK_pn-liboil = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-liboil = "not done"
RECIPE_LATEST_VERSION_pn-liboil = "0.3.17"
RECIPE_NO_OF_PATCHES_pn-liboil = "1"
RECIPE_INTEL_SECTION_pn-liboil = "base libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-liboil = "11 months"
RECIPE_LATEST_RELEASE_DATE_pn-liboil = "02/2010"
RECIPE_COMMENTS_pn-liboil = ""
+RECIPE_LAST_UPDATE_pn-liboil = "Mar 3, 2010"
RECIPE_MAINTAINER_pn-liboil = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-libassuan = "green"
-DEPENDENCY_CHECK_pn-libassuan = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libassuan = "not done"
RECIPE_LATEST_VERSION_pn-libassuan = "2.0.1"
RECIPE_NO_OF_PATCHES_pn-libassuan = "0"
RECIPE_INTEL_SECTION_pn-libassuan = "base libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libassuan = "7 months"
RECIPE_LATEST_RELEASE_DATE_pn-libassuan = "08/2010"
RECIPE_COMMENTS_pn-libassuan = ""
+RECIPE_LAST_UPDATE_pn-libassuan = "Nov 19, 2010"
RECIPE_MAINTAINER_pn-libassuan = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-db = "green"
-DEPENDENCY_CHECK_pn-db = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-db = "not done"
RECIPE_LATEST_VERSION_pn-db = "5.0.26"
RECIPE_NO_UPDATE_REASON_pn-db= "API compatibility issue"
RECIPE_INTEL_SECTION_pn-db = "base libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-db = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-db = "n/a"
RECIPE_COMMENTS_pn-db = ""
+RECIPE_LAST_UPDATE_pn-db = "Jul 21, 2006"
RECIPE_MAINTAINER_pn-db = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libtirpc = "green"
-DEPENDENCY_CHECK_pn-libtirpc = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libtirpc = "not done"
RECIPE_LATEST_VERSION_pn-libtirpc = "0.2.1"
RECIPE_INTEL_SECTION_pn-libtirpc = "base libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libtirpc = "6 months"
RECIPE_LATEST_RELEASE_DATE_pn-libtirpc = "11/2009"
RECIPE_COMMENTS_pn-libtirpc = ""
+RECIPE_LAST_UPDATE_pn-libtirpc = "Sep 1, 2010"
RECIPE_MAINTAINER_pn-libtirpc = "Dongxiao Xu <dongxiao.xu@intel.com>"
+
RECIPE_STATUS_pn-gdbm = "green"
+RECIPE_LAST_UPDATE_pn-gdbm = "Jul 21, 2006"
RECIPE_MAINTAINER_pn-gdbm = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-gdbm = "not done"
RECIPE_LATEST_VERSION_pn-gdbm = "1.8.3"
-RECIPE_PATCH_pn-gdbm+makefile = "use oe generic DESTDIR instead of package specific INSTALL_ROOT"
-RECIPE_PATCH_pn-gdbm+libtool-mode = "explict specify install mode in libtool"
RECIPE_INTEL_SECTION_pn-gdbm = "base libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gdbm = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-gdbm = "10/2002"
-RECIPE_COMMENTS_pn-gdbm = ""
RECIPE_STATUS_pn-pth = "yellow" # custom do_configure
+RECIPE_LAST_UPDATE_pn-pth = "Mar 14, 2008"
RECIPE_MAINTAINER_pn-pth = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-pth = "not done"
RECIPE_LATEST_VERSION_pn-pth = "2.0.7"
RECIPE_INTEL_SECTION_pn-pth = "base libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-pth = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-pth = "06/2006"
-RECIPE_COMMENTS_pn-pth = ""
RECIPE_STATUS_pn-python-pycurl = "yellow" # several exports to work with python
+RECIPE_LAST_UPDATE_pn-python-pycurl = "Mar 25, 2010"
RECIPE_MAINTAINER_pn-python-pycurl = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-python-pycurl = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-python-pycurl = "not done"
RECIPE_LATEST_VERSION_pn-python-pycurl = "7.19.0"
RECIPE_PATCH_pn-python-pycurl+no-static-link = "no static libraries"
RECIPE_INTEL_SECTION_pn-python-pycurl = "base libs"
@@ -327,8 +348,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-python-pycurl = "09/2008"
RECIPE_COMMENTS_pn-python-pycurl = "the so called MIT/X here is actually ISC license, depends on libcurl (> 7.19.0)"
RECIPE_STATUS_pn-libusb1 = "green"
+RECIPE_LAST_UPDATE_pn-libusb1 = "Jul 15, 2010"
RECIPE_MAINTAINER_pn-libusb1 = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-libusb1 = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libusb1 = "not done"
RECIPE_LATEST_VERSION_pn-libusb1 = "1.0.8"
RECIPE_INTEL_SECTION_pn-libusb1 = "base libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libusb1 = "n/a"
@@ -336,8 +358,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-libusb = "05/2010"
RECIPE_COMMENTS_pn-libusb1 = ""
RECIPE_STATUS_pn-libusb-compat = "green"
+RECIPE_LAST_UPDATE_pn-libusb-compat = "Jul 16, 2010"
RECIPE_MAINTAINER_pn-libusb-compat = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-libusb-compat = "done"
+RECIPE_DEPENDENCY_CHECK_pn-libusb-compat = "done"
RECIPE_LATEST_VERSION_pn-libusb-compat = "0.1.3"
RECIPE_INTEL_SECTION_pn-libusb-compat = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libusb-compat = "1 month"
@@ -345,20 +368,17 @@ RECIPE_LATEST_RELEASE_DATE_pn-libusb-compat = "07/2009"
RECIPE_COMMENTS_pn-libusb-compat = "replaces libusb, but doesn't provides libusbpp"
DISTRO_PN_ALIAS_pn-libusb-compat = "OSPDT"
-RECIPE_STATUS_pn-libnl = "yellow" # still need to update to git
+RECIPE_STATUS_pn-libnl = "green"
+RECIPE_LAST_UPDATE_pn-libnl = "Nov 15, 2010"
RECIPE_MAINTAINER_pn-libnl = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-libnl = "not done"
RECIPE_LATEST_VERSION_pn-libnl = "2.0"
-RECIPE_PATCH_pn-libnl+local-includes = "fix compilation in Makefile"
-RECIPE_PATCH_pn-libnl+compilefix = "fix compilation"
RECIPE_INTEL_SECTION_pn-libnl = "base libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libnl = "n/a"
-RECIPE_LATEST_RELEASE_DATE_pn-libnl = "01/2008"
-RECIPE_COMMENTS_pn-libnl = "git is active and ~150 commits ahead of 1.1"
+RECIPE_LATEST_RELEASE_DATE_pn-libnl = "10/2010"
RECIPE_STATUS_pn-zlib = "yellow" # local config scripts
+RECIPE_LAST_UPDATE_pn-zlib = "Jun 11, 2010"
RECIPE_MAINTAINER_pn-zlib = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-zlib = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-zlib = "not done"
RECIPE_LATEST_VERSION_pn-zlib = "1.2.5"
RECIPE_PATCH_pn-zlib+configure.ac = "override default build method"
RECIPE_PATCH_pn-zlib+Makefile.am = "override default build method"
@@ -368,8 +388,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-zlib = "03/2010"
RECIPE_COMMENTS_pn-zlib = "rconflicts: libxml2 (< 2.7.7) (rbreaks)"
RECIPE_STATUS_pn-libxml2 = "yellow"
+RECIPE_LAST_UPDATE_pn-libxml2 = "Jun 18, 2010"
RECIPE_MAINTAINER_pn-libxml2 = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-libxml2 = "done"
+RECIPE_DEPENDENCY_CHECK_pn-libxml2 = "done"
RECIPE_LATEST_VERSION_pn-libxml2 = "2.7.7"
RECIPE_PATCH_pn-libxml2+install = "use poky environment variables"
RECIPE_INTEL_SECTION_pn-libxml2 = "base libs"
@@ -378,8 +399,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-libxml2 = "03/2010"
RECIPE_COMMENTS_pn-libxml2 = ""
RECIPE_STATUS_pn-readline = "green"
+RECIPE_LAST_UPDATE_pn-readline = "Jun 17, 2010"
RECIPE_MAINTAINER_pn-readline = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-readline = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-readline = "not done"
RECIPE_LATEST_VERSION_pn-readline = "6.1"
RECIPE_PATCH_pn-readline+configure-fix = "fix configure for build"
RECIPE_PATCH_pn-readline+acinclude.m4 = "local include file for autotools"
@@ -389,8 +411,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-readline = "01/2010"
RECIPE_COMMENTS_pn-readline = ""
RECIPE_STATUS_pn-libgcrypt = "green"
+RECIPE_LAST_UPDATE_pn-libgcrypt = "Jul 29, 2010"
RECIPE_MAINTAINER_pn-libgcrypt = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-libgcrypt = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libgcrypt = "not done"
RECIPE_LATEST_VERSION_pn-libgcrypt = "1.4.5"
RECIPE_PATCH_pn-libgcrypt+add-pkgconfig-support = "add .pc file"
RECIPE_INTEL_SECTION_pn-libgcrypt = "base libs"
@@ -399,8 +422,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-libgcrypt = "12/2009"
RECIPE_COMMENTS_pn-libgcrypt = ""
RECIPE_STATUS_pn-gnutls = "yellow" # need explict pre configure
+RECIPE_LAST_UPDATE_pn-gnutls = "Jun 23, 2010"
RECIPE_MAINTAINER_pn-gnutls = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-gnutls = "done"
+RECIPE_DEPENDENCY_CHECK_pn-gnutls = "done"
RECIPE_LATEST_VERSION_pn-gnutls = "2.8.6"
RECIPE_PATCH_pn-gnutls+gnutls-openssl = "unkown"
RECIPE_PATCH_pn-gnutls+gnutls-texinfo-euro = "fix if @euro is missing in texinfo"
@@ -411,19 +435,16 @@ RECIPE_LATEST_RELEASE_DATE_pn-gnutls = "03/2010"
RECIPE_COMMENTS_pn-gnutls = "requires libtasn1, but has an internal copy"
RECIPE_STATUS_pn-lzo = "green"
+RECIPE_LAST_UPDATE_pn-lzo = "Dec 31, 2010"
RECIPE_MAINTAINER_pn-lzo = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-lzo = "not done"
-RECIPE_LATEST_VERSION_pn-lzo = "2.03"
-RECIPE_PATCH_pn-lzo+autofoo = "minor configure.ac fix"
-RECIPE_PATCH_pn-lzo+acinclude.m4 = "lzo specific m4 macros"
+RECIPE_LATEST_VERSION_pn-lzo = "2.04"
RECIPE_INTEL_SECTION_pn-lzo = "base libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-lzo = "30 months"
-RECIPE_LATEST_RELEASE_DATE_pn-lzo = "04/2008"
-RECIPE_COMMENTS_pn-lzo = ""
+RECIPE_LATEST_RELEASE_DATE_pn-lzo = "10/2010"
RECIPE_STATUS_pn-libtasn1 = "green"
+RECIPE_LAST_UPDATE_pn-libtasn1 = "Nov 16, 2010"
RECIPE_MAINTAINER_pn-libtasn1 = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-libtasn1 = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libtasn1 = "not done"
RECIPE_LATEST_VERSION_pn-libtasn1 = "2.7"
RECIPE_INTEL_SECTION_pn-libtasn1 = "base libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libtasn1 = "1 month"
@@ -431,67 +452,39 @@ RECIPE_LATEST_RELEASE_DATE_pn-libtasn1 = "05/2010"
RECIPE_COMMENTS_pn-libtasn1 = ""
RECIPE_STATUS_pn-openssl = "green"
+RECIPE_LAST_UPDATE_pn-openssl = "Nov 17, 2010"
RECIPE_MAINTAINER_pn-openssl = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-openssl = "not done"
-RECIPE_LATEST_VERSION_pn-openssl = "1.0.0a"
+RECIPE_LATEST_VERSION_pn-openssl = "1.0.0c"
RECIPE_NO_UPDATE_REASON_pn-openssl = "compatibility and stability concerns on new major release"
-RECIPE_PATCH_pn-openssl+debian-ca = "unknown"
-RECIPE_PATCH_pn-openssl+debian-debian-targets = "unknown"
-RECIPE_PATCH_pn-openssl+debian-engines-path = "unknown"
-RECIPE_PATCH_pn-openssl+debian-make-targets = "unknown"
-RECIPE_PATCH_pn-openssl+debian-man-dir = "unknown"
-RECIPE_PATCH_pn-openssl+debian-man-section = "unknown"
-RECIPE_PATCH_pn-openssl+debian-no-rpath = "unknown"
-RECIPE_PATCH_pn-openssl+debian-no-symbolic = "unknown"
-RECIPE_PATCH_pn-openssl+debian-pic = "PIC code generation fix for perl based asm"
-RECIPE_PATCH_pn-openssl+debian-pkg-config = "unknown"
-RECIPE_PATCH_pn-openssl+debian-valgrind = "fix valgrind errors"
-RECIPE_PATCH_pn-openssl+debian-rc4-amd64 = "unknown"
-RECIPE_PATCH_pn-openssl+debian-rehash-crt = "unknown"
-RECIPE_PATCH_pn-openssl+debian-rehash_pod = "unknown"
-RECIPE_PATCH_pn-openssl+debian-shared-lib-ext = "add shared library extension in Configure"
-RECIPE_PATCH_pn-openssl+debian-stddef = "add missing header"
-RECIPE_PATCH_pn-openssl+debian-version-script = "add 0.9.8 version info into shared library"
-RECIPE_PATCH_pn-openssl+debian-perl-path = "fix shebang lines of many perl scripts"
-RECIPE_PATCH_pn-openssl+configure-targets = "add poky target to Configure (not autoconf based)"
-RECIPE_PATCH_pn-openssl+shared-libs = "use make -e to export poky environment to child makefiles"
RECIPE_INTEL_SECTION_pn-openssl = "base libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-openssl = "3 months"
-RECIPE_LATEST_RELEASE_DATE_pn-openssl = "06/2010"
-RECIPE_COMMENTS_pn-openssl = "0.9.8o is actually used for stability concerns"
+RECIPE_LATEST_RELEASE_DATE_pn-openssl = "12/2010"
RECIPE_STATUS_pn-libnss-mdns = "green"
DISTRO_PN_ALIAS_pn-libnss-mdns = "Meego=nss-mdns OpenSuSE=nss-mdns Ubuntu=nss-mdns Mandriva=nss_mdns Debian=nss-mdns"
+RECIPE_LAST_UPDATE_pn-libnss-mdns = "Jul 8, 2010"
RECIPE_MAINTAINER_pn-libnss-mdns = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-libnss-mdns = "done"
RECIPE_LATEST_VERSION_pn-libnss-mdns = "0.10"
-RECIPE_PATCH_pn-libnss-mdns+alignment-fix = "fix alignment"
RECIPE_INTEL_SECTION_pn-libnss-mdns = "base libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libnss-mdns = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-libnss-mdns = "05/2007"
-RECIPE_COMMENTS_pn-libnss-mdns = ""
-RECIPE_STATUS_pn-ncurses = "red" # need upgrade
+RECIPE_STATUS_pn-ncurses = "green"
+RECIPE_LAST_UPDATE_pn-ncurses = "Dec 30, 2010"
RECIPE_MAINTAINER_pn-ncurses = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-ncurses = "not done"
RECIPE_LATEST_VERSION_pn-ncurses = "5.7"
RECIPE_INTEL_SECTION_pn-ncurses = "base libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-ncurses = "23 months"
RECIPE_LATEST_RELEASE_DATE_pn-ncurses = "11/2008"
-RECIPE_COMMENTS_pn-ncurses = ""
RECIPE_STATUS_pn-popt = "green"
+RECIPE_LAST_UPDATE_pn-popt = "Jul 5, 2010"
RECIPE_MAINTAINER_pn-popt = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-popt = "done"
RECIPE_LATEST_VERSION_pn-popt = "1.16"
RECIPE_INTEL_SECTION_pn-popt = "base libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-popt = "13 months"
RECIPE_LATEST_RELEASE_DATE_pn-popt = "05/2010"
-RECIPE_COMMENTS_pn-popt = ""
RECIPE_STATUS_pn-sqlite3 = "green" # need upgrade
+RECIPE_LAST_UPDATE_pn-sqlite3 = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-sqlite3 = "Yu Ke <ke.yu@intel.com>"
-DEPENDENCY_CHECK_pn-sqlite3 = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-sqlite3 = "not done"
RECIPE_LATEST_VERSION_pn-sqlite3 = "3.7.3"
RECIPE_INTEL_SECTION_pn-sqlite3 = "base libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-sqlite3 = "1 month"
@@ -499,8 +492,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-sqlite3 = "10/2010"
RECIPE_COMMENTS_pn-sqlite3 = ""
RECIPE_STATUS_pn-libpthread-stubs = "green"
+RECIPE_LAST_UPDATE_pn-libpthread-stubs = "Jul 6, 2010"
RECIPE_MAINTAINER_pn-libpthread-stubs = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-libpthread-stubs = "done"
+RECIPE_DEPENDENCY_CHECK_pn-libpthread-stubs = "done"
RECIPE_LATEST_VERSION_pn-libpthread-stubs = "0.3"
RECIPE_INTEL_SECTION_pn-libpthread-stubs = "base libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libpthread-stubs = "n/a"
@@ -508,22 +502,16 @@ RECIPE_LATEST_RELEASE_DATE_pn-libpthread-stubs = "10/2009"
RECIPE_COMMENTS_pn-libpthread-stubs = "0.1: 11/2006, 0.2: 09/2009, 0.3: 10/2009"
RECIPE_STATUS_pn-attr = "yellow" # the recipe is quite hacky
+RECIPE_LAST_UPDATE_pn-attr = "Jul 7, 2010"
RECIPE_MAINTAINER_pn-attr = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-attr = "done"
RECIPE_LATEST_VERSION_pn-attr = "2.4.44"
-RECIPE_PATCH_pn-attr+double-free = ""
-RECIPE_PATCH_pn-attr+memory-leak2 = ""
-RECIPE_PATCH_pn-attr+memory-leak-in-copy = ""
-RECIPE_PATCH_pn-attr+pull-in-string.h = ""
-RECIPE_PATCH_pn-attr+thinko-in-restore = "stdin mishandling"
RECIPE_INTEL_SECTION_pn-attr = "base libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-attr = "13 months"
RECIPE_LATEST_RELEASE_DATE_pn-attr = "08/2009"
-RECIPE_COMMENTS_pn-attr = ""
RECIPE_STATUS_pn-libcap = "yellow" # hand crafted Makefiles
+RECIPE_LAST_UPDATE_pn-libcap = "Jul 7, 2010"
RECIPE_MAINTAINER_pn-libcap = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-libcap = "done"
+RECIPE_DEPENDENCY_CHECK_pn-libcap = "done"
RECIPE_LATEST_VERSION_pn-libcap = "2.19"
RECIPE_INTEL_SECTION_pn-libcap = "base libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libcap = "1 month"
@@ -531,26 +519,24 @@ RECIPE_LATEST_RELEASE_DATE_pn-libcap = "01/2010"
RECIPE_COMMENTS_pn-libcap = ""
RECIPE_STATUS_pn-libevent = "green"
+RECIPE_LAST_UPDATE_pn-libevent = "Jul 7, 2010"
RECIPE_MAINTAINER_pn-libevent = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-libevent = "done"
+RECIPE_NO_UPDATE_REASON_pn-libevent="libevent 2 is incompatible"
RECIPE_LATEST_VERSION_pn-libevent = "1.4.14b"
RECIPE_INTEL_SECTION_pn-libevent = "base libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libevent = "7 months"
RECIPE_LATEST_RELEASE_DATE_pn-libevent = "06/2010"
-RECIPE_COMMENTS_pn-libevent = ""
RECIPE_STATUS_pn-libnfsidmap = "green"
+RECIPE_LAST_UPDATE_pn-libnfsidmap = "Jan 20, 2011"
RECIPE_MAINTAINER_pn-libnfsidmap = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-libnfsidmap = "done"
-RECIPE_LATEST_VERSION_pn-libnfsidmap = "0.23"
+RECIPE_LATEST_VERSION_pn-libnfsidmap = "0.24"
RECIPE_INTEL_SECTION_pn-libnfsidmap = "base libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libnfsidmap = "4 months"
-RECIPE_LATEST_RELEASE_DATE_pn-libnfsidmap = "12/2009"
-RECIPE_COMMENTS_pn-libnfsidmap = ""
+RECIPE_LATEST_RELEASE_DATE_pn-libnfsidmap = "12/2010"
RECIPE_STATUS_pn-acl = "yellow" # hacky as attr
+RECIPE_LAST_UPDATE_pn-acl = "Jul 29, 2010"
RECIPE_MAINTAINER_pn-acl = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-acl = "done"
+RECIPE_DEPENDENCY_CHECK_pn-acl = "done"
RECIPE_LATEST_VERSION_pn-acl = "2.2.49"
RECIPE_INTEL_SECTION_pn-acl = "base libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-acl = "4 months"
@@ -558,7 +544,8 @@ RECIPE_LATEST_RELEASE_DATE_pn-acl = "11/2009"
RECIPE_COMMENTS_pn-acl = ""
RECIPE_STATUS_pn-tcp-wrappers = "yellow" # custom build system
-DEPENDENCY_CHECK_pn-tcp-wrappers = "done"
+RECIPE_DEPENDENCY_CHECK_pn-tcp-wrappers = "done"
+RECIPE_LAST_UPDATE_pn-tcp-wrappers = "Aug 11, 2010"
RECIPE_MAINTAINER_pn-tcp-wrappers = "Qing He <qing.he@intel.com>"
RECIPE_LATEST_VERSION_pn-tcp-wrappers = "7.6"
RECIPE_INTEL_SECTION_pn-tcp-wrappers = "base libs"
@@ -567,11 +554,13 @@ RECIPE_LATEST_RELEASE_DATE_pn-tcp-wrappers = "n/a"
RECIPE_COMMENTS_pn-tcp-wrappers = ""
RECIPE_STATUS_pn-libaio = "green"
+RECIPE_LAST_UPDATE_pn-libaio = "Aug 27, 2010"
RECIPE_MAINTAINER_pn-libaio = "Qing He <qing.he@intel.com>"
RECIPE_LATEST_VERSION_pn-libaio = "0.3.107"
RECIPE_STATUS_pn-libcheck = "green"
-DEPENDENCY_CHECK_pn-libcheck = "done"
+RECIPE_DEPENDENCY_CHECK_pn-libcheck = "done"
+RECIPE_LAST_UPDATE_pn-libcheck = "Aug 20, 2010"
RECIPE_MAINTAINER_pn-libcheck = "Qing He <qing.he@intel.com>"
RECIPE_LATEST_VERSION_pn-libcheck = "0.9.8"
RECIPE_INTEL_SECTION_pn-libcheck = "base libs"
@@ -581,7 +570,8 @@ RECIPE_COMMENTS_pn-libcheck = ""
DISTRO_PN_ALIAS_pn-libcheck = "Ubuntu=check Fedora=check OpenSuSE=check"
RECIPE_STATUS_pn-augeas = "green"
-DEPENDENCY_CHECK_pn-augeas = "done"
+RECIPE_DEPENDENCY_CHECK_pn-augeas = "done"
+RECIPE_LAST_UPDATE_pn-augeas = "Aug 20, 2010"
RECIPE_MAINTAINER_pn-augeas = "Qing He <qing.he@intel.com>"
RECIPE_LATEST_VERSION_pn-augeas = "0.7.3"
RECIPE_INTEL_SECTION_pn-augeas = "base libs"
@@ -591,30 +581,34 @@ RECIPE_COMMENTS_pn-augeas = ""
DISTRO_PN_ALIAS_pn-augeas = "Ubuntu=libaugeas0 Debian=libaugeas0"
RECIPE_STATUS_pn-sat-solver = "green"
-DEPENDENCY_CHECK_pn-sat-solver = "done"
+RECIPE_DEPENDENCY_CHECK_pn-sat-solver = "done"
RECIPE_LATEST_VERSION_pn-sat-solver = "git"
RECIPE_INTEL_SECTION_pn-sat-solver = "base libs"
DISTRO_PN_ALIAS_pn-sat-solver = "OSPDT OpenSuSE=satsolver-tools"
RECIPE_COMMENTS_pn-sat-solver = ""
+RECIPE_LAST_UPDATE_pn-sat-solver = "Aug 20, 2010"
RECIPE_MAINTAINER_pn-sat-solver = "Qing He <qing.he@intel.com>"
RECIPE_STATUS_pn-libzypp = "green"
-DEPENDENCY_CHECK_pn-libzypp = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libzypp = "not done"
+RECIPE_LAST_UPDATE_pn-libzypp = "Aug 20, 2010"
RECIPE_MAINTAINER_pn-libzypp = "Qing He <qing.he@intel.com>"
RECIPE_LATEST_VERSION_pn-libzypp = "git"
RECIPE_INTEL_SECTION_pn-libzypp = "base libs"
RECIPE_COMMENTS_pn-libzypp = ""
+
RECIPE_STATUS_pn-dbus-wait = "green"
-DEPENDENCY_CHECK_pn-dbus-wait = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-dbus-wait = "not done"
RECIPE_LATEST_VERSION_pn-dbus-wait = "0.0+svnr402"
RECIPE_INTEL_SECTION_pn-dbus-wait = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-dbus-wait = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-dbus-wait = "08/2008"
RECIPE_COMMENTS_pn-dbus-wait = "o-hand project"
+RECIPE_LAST_UPDATE_pn-dbus-wait = "Aug 12, 2010"
RECIPE_MAINTAINER_pn-dbus-wait= "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-e2fsprogs = "yellow" # patch comment
-DEPENDENCY_CHECK_pn-e2fsprogs = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-e2fsprogs = "not done"
RECIPE_LATEST_VERSION_pn-e2fsprogs = "1.41.12"
RECIPE_PATCH_pn-e2fsprogs+quotefix = "to be pushed upstream"
RECIPE_PATCH_pn-e2fsprogs+mkdir = "to be pushed upstream; no comment; MKINSTALLDIRS is not supported in new version autotool"
@@ -623,66 +617,73 @@ RECIPE_INTEL_SECTION_pn-e2fsprogs = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-e2fsprogs = "2 months"
RECIPE_LATEST_RELEASE_DATE_pn-e2fsprogs = "05/2010"
RECIPE_COMMENTS_pn-e2fsprogs = ""
+RECIPE_LAST_UPDATE_pn-e2fsprogs = "Jun 1, 2010"
RECIPE_MAINTAINER_pn-e2fsprogs = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-initramfs-boot = "green"
-DEPENDENCY_CHECK_pn-initramfs-boot = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-initramfs-boot = "not done"
RECIPE_LATEST_VERSION_pn-initramfs-boot = "1.0"
RECIPE_PATCH_pn-initramfs-boot+init-boot = "local"
RECIPE_INTEL_SECTION_pn-initramfs-boot = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-initramfs-boot = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-initramfs-boot = "n/a"
RECIPE_COMMENTS_pn-initramfs-boot = "local scripts follow Poky's MIT license"
+RECIPE_LAST_UPDATE_pn-initramfs-boot = "Nov 5, 2008"
RECIPE_MAINTAINER_pn-initramfs-boot = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-initramfs-live-boot = "green"
-DEPENDENCY_CHECK_pn-initramfs-live-boot = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-initramfs-live-boot = "not done"
RECIPE_LATEST_VERSION_pn-initramfs-live-boot = "1.0"
RECIPE_PATCH_pn-initramfs-live-boot+init-live = "local"
RECIPE_INTEL_SECTION_pn-initramfs-live-boot = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-initramfs-live-boot = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-initramfs-live-boot = "n/a"
RECIPE_COMMENTS_pn-initramfs-live-boot = "local scripts follow Poky's MIT license"
+RECIPE_LAST_UPDATE_pn-initramfs-live-boot = "Sep 10, 2008"
RECIPE_MAINTAINER_pn-initramfs-live-boot = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-initramfs-live-install = "green"
-DEPENDENCY_CHECK_pn-initramfs-live-install = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-initramfs-live-install = "not done"
RECIPE_LATEST_VERSION_pn-initramfs-live-install = "1.0"
RECIPE_PATCH_pn-initramfs-live-install+init-install = "local"
RECIPE_INTEL_SECTION_pn-initramfs-live-install = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-initramfs-live-install = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-initramfs-live-install = "n/a"
RECIPE_COMMENTS_pn-initramfs-live-install = "local scripts follow Poky's MIT license"
+RECIPE_LAST_UPDATE_pn-initramfs-live-install = "Oct 8, 2008"
RECIPE_MAINTAINER_pn-initramfs-live-install = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-initscripts = "green"
-DEPENDENCY_CHECK_pn-initscripts = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-initscripts = "not done"
RECIPE_LATEST_VERSION_pn-initscripts = "1.0"
RECIPE_PATCH_pn-initscripts = "many local scripts"
RECIPE_INTEL_SECTION_pn-initscripts = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-initscripts = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-initscripts = "n/a"
RECIPE_COMMENTS_pn-initscripts = "local scripts follow Poky's MIT license"
+RECIPE_LAST_UPDATE_pn-initscripts = "Jul 21, 2006"
RECIPE_MAINTAINER_pn-initscripts = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-keymaps = "green"
-DEPENDENCY_CHECK_pn-keymaps = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-keymaps = "not done"
RECIPE_LATEST_VERSION_pn-keymaps = "1.0"
RECIPE_PATCH_pn-keymaps = "many local keymap files"
RECIPE_INTEL_SECTION_pn-keymaps = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-keymaps = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-keymaps = "n/a"
RECIPE_COMMENTS_pn-keymaps = "local scripts follow Poky's MIT license, however it contains a GPL notation"
+RECIPE_LAST_UPDATE_pn-keymaps = "Jul 21, 2006"
RECIPE_MAINTAINER_pn-keymaps = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-modutils = "red"
-DEPENDENCY_CHECK_pn-modutils-initscripts = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-modutils-initscripts = "not done"
RECIPE_LATEST_VERSION_pn-modutils = "2.4.27"
+RECIPE_LAST_UPDATE_pn-modutils = "Jul 21, 2006"
RECIPE_MAINTAINER_pn-modutils = "Kevin Tian <kevin.tian@intel.com>"
DISTRO_PN_ALIAS_pn-modutils = "Ubuntu=module-init-tools Fedora=module-init-tools"
RECIPE_STATUS_pn-modutils-initscripts = "green"
-DEPENDENCY_CHECK_pn-modutils-initscripts = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-modutils-initscripts = "not done"
RECIPE_LATEST_VERSION_pn-modutils-initscripts = "1.0"
RECIPE_PATCH_pn-modutils-initscripts+modutils = "local"
RECIPE_INTEL_SECTION_pn-modutils-initscripts = "base utils"
@@ -691,116 +692,120 @@ RECIPE_LATEST_RELEASE_DATE_pn-modutils-initscripts = "n/a"
RECIPE_COMMENTS_pn-modutils-initscripts = "local scripts follow Poky's MIT license"
RECIPE_MAINTAINER_pn-modutils-initscripts = "Kevin Tian <kevin.tian@intel.com>"
-RECIPE_STATUS_pn-network-suspend-scripts = "yellow" # no PV
-DEPENDENCY_CHECK_pn-network-suspend-scripts = "not done"
-RECIPE_LATEST_VERSION_pn-network-suspend-scripts = "1.0"
-RECIPE_PATCH_pn-network-suspend-scripts = "local scripts"
-RECIPE_INTEL_SECTION_pn-network-suspend-scripts = "base utils"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-network-suspend-scripts = "n/a"
-RECIPE_LATEST_RELEASE_DATE_pn-network-suspend-scripts = "n/a"
-RECIPE_COMMENTS_pn-network-suspend-scripts = "local scripts follow Poky's MIT license"
-RECIPE_MAINTAINER_pn-network-suspend-scripts = "Kevin Tian <kevin.tian@intel.com>"
-
RECIPE_STATUS_pn-opkg-collateral = "green"
-DEPENDENCY_CHECK_pn-opkg-collateral = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-opkg-collateral = "not done"
RECIPE_LATEST_VERSION_pn-opkg-collateral = "1.0"
RECIPE_PATCH_pn-opkg-collateral = "local"
RECIPE_INTEL_SECTION_pn-opkg-collateral = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-opkg-collateral = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-opkg-collateral = "n/a"
RECIPE_COMMENTS_pn-opkg-collateral = "local scripts follow Poky's MIT license, no need to have its own"
+RECIPE_LAST_UPDATE_pn-opkg-collateral = "Mar 17, 2008"
RECIPE_MAINTAINER_pn-opkg-collateral = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-opkg-config-base = "green"
-DEPENDENCY_CHECK_pn-opkg-config-base = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-opkg-config-base = "not done"
RECIPE_LATEST_VERSION_pn-opkg-config-base = "1.0"
RECIPE_INTEL_SECTION_pn-opkg-config-base = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-opkg-config-base = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-opkg-config-base = "n/a"
RECIPE_COMMENTS_pn-opkg-config-base = "local scripts follow Poky's MIT license"
+RECIPE_LAST_UPDATE_pn-opkg-config-base = "Jan 29, 2010"
RECIPE_MAINTAINER_pn-opkg-config-base = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-poky-feed-config-opkg = "green"
-DEPENDENCY_CHECK_pn-poky-feed-config-opkg = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-poky-feed-config-opkg = "not done"
RECIPE_LATEST_VERSION_pn-poky-feed-config-opkg = "1.0"
RECIPE_INTEL_SECTION_pn-poky-feed-config-opkg = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-poky-feed-config-opkg = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-poky-feed-config-opkg = "n/a"
RECIPE_COMMENTS_pn-poky-feed-config-opkg = "local scripts follow Poky's MIT license"
+RECIPE_LAST_UPDATE_pn-poky-feed-config-opkg = "Sep 20, 2010"
RECIPE_MAINTAINER_pn-poky-feed-config-opkg = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-opkg = "green"
-DEPENDENCY_CHECK_pn-opkg = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-opkg = "not done"
RECIPE_LATEST_VERSION_pn-opkg = "0.1.8"
RECIPE_INTEL_SECTION_pn-opkg = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-opkg = "2 months"
RECIPE_LATEST_RELEASE_DATE_pn-opkg = "02/2010"
RECIPE_COMMENTS_pn-opkg = ""
+RECIPE_LAST_UPDATE_pn-opkg = "Jul 21, 2010"
RECIPE_MAINTAINER_pn-opkg = "Dongxiao Xu <dongxiao.xu@intel.com"
-RECIPE_STATUS_pn-dpkg = "red"
-RECIPE_LATEST_VERSION_pn-dpkg = "check: 1.15.8.5"
+RECIPE_STATUS_pn-dpkg = "green"
+RECIPE_LATEST_VERSION_pn-dpkg = "1.15.8.7"
+RECIPE_INTEL_SECTION_pn-dpkg = "base utils"
+RECIPE_LATEST_RELEASE_DATE_pn-dpkg = "2010/12/20"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-dpkg = "3 months"
+RECIPE_LAST_UPDATE_pn-dpkg = "Dec 30, 2010"
RECIPE_MAINTAINER_pn-dpkg = "Dongxiao Xu <dongxiao.xu@intel.com"
RECIPE_STATUS_pn-opkg-utils = "green"
-DEPENDENCY_CHECK_pn-opkg-utils = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-opkg-utils = "not done"
RECIPE_LATEST_VERSION_pn-opkg-utils = "0.1.8+svnr4747"
RECIPE_INTEL_SECTION_pn-opkg-utils = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-opkg-utils = "3 months"
RECIPE_LATEST_RELEASE_DATE_pn-opkg-utils = "11/2008"
RECIPE_COMMENTS_pn-opkg-utils = ""
+RECIPE_LAST_UPDATE_pn-opkg-utils = "Jul 21, 2010"
RECIPE_MAINTAINER_pn-opkg-utils = "Dongxiao Xu <dongxiao.xu@intel.com"
DISTRO_PN_ALIAS_pn-opkg-utils = "OSPDT upstream=http://svn.openmoko.org/trunk/src/target/opkg/"
RECIPE_STATUS_pn-polkit = "green"
-DEPENDENCY_CHECK_pn-polkit = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-polkit = "not done"
RECIPE_LATEST_VERSION_pn-polkit = "0.99"
RECIPE_INTEL_SECTION_pn-polkit = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-polkit = "1 months"
RECIPE_LATEST_RELEASE_DATE_pn-polkit = "2010/09/15"
RECIPE_COMMENTS_pn-polkit = ""
+RECIPE_LAST_UPDATE_pn-polkit = "Nov 18, 2010"
RECIPE_MAINTAINER_pn-polkit = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-psplash = "not done"
-DEPENDENCY_CHECK_pn-psplash = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-psplash = "not done"
RECIPE_LATEST_VERSION_pn-psplash = "0.0+svnr424"
RECIPE_PATCH_pn-psplash+psplash-init = "local scripts"
RECIPE_INTEL_SECTION_pn-psplash = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-psplash = "6 months"
RECIPE_LATEST_RELEASE_DATE_pn-psplash = "05/2009"
RECIPE_COMMENTS_pn-psplash = ""
+RECIPE_LAST_UPDATE_pn-psplash = "Jul 13, 2010"
RECIPE_MAINTAINER_pn-psplash = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-pax-utils = "green"
-DEPENDENCY_CHECK_pn-pax-utils = "not done"
-RECIPE_LATEST_VERSION_pn-pax-utils = "0.2.1"
+RECIPE_DEPENDENCY_CHECK_pn-pax-utils = "not done"
+RECIPE_LATEST_VERSION_pn-pax-utils = "0.2.2"
+RECIPE_NO_OF_PATCHES_pn-pax-utils = "0"
RECIPE_INTEL_SECTION_pn-pax-utils = "base utils"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-pax-utils = "15 months"
-RECIPE_LATEST_RELEASE_DATE_pn-pax-utils = "02/2010"
-RECIPE_COMMENTS_pn-pax-utils = ""
+RECIPE_LATEST_RELEASE_DATE_pn-pax-utils = "12/2010"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-pax-utils = "10 months"
+RECIPE_LAST_UPDATE_pn-pax-utils = "Jan 4, 2011"
RECIPE_MAINTAINER_pn-pax-utils = "Scott Garman <scott.a.garman@intel.com>"
RECIPE_STATUS_pn-sudo = "green"
-DEPENDENCY_CHECK_pn-sudo = "not done"
-RECIPE_LATEST_VERSION_pn-sudo = "1.7.4p4"
+RECIPE_DEPENDENCY_CHECK_pn-sudo = "not done"
+RECIPE_LATEST_VERSION_pn-sudo = "1.7.4p6"
RECIPE_INTEL_SECTION_pn-sudo = "base utils"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-sudo = "1 month"
-RECIPE_LATEST_RELEASE_DATE_pn-sudo = "2010/09/07"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-sudo = "1 week"
+RECIPE_LATEST_RELEASE_DATE_pn-sudo = "2011/01/19"
RECIPE_COMMENTS_pn-sudo = ""
+RECIPE_LAST_UPDATE_pn-sudo = "Jan 23, 2011"
RECIPE_MAINTAINER_pn-sudo = "Scott Garman <scott.a.garman@intel.com>"
RECIPE_STATUS_pn-blktool = "green"
-DEPENDENCY_CHECK_pn-blktool = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-blktool = "not done"
RECIPE_LATEST_VERSION_pn-blktool = "4-6"
+RECIPE_NO_OF_PATCHES_pn-blktool = "0"
RECIPE_INTEL_SECTION_pn-blktool = "base utils"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-blktool = "3 years"
RECIPE_LATEST_RELEASE_DATE_pn-blktool = "02/2010"
-RECIPE_COMMENTS_pn-blktool = ""
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-blktool = "3 years"
+RECIPE_LAST_UPDATE_pn-blktool = "Jan 4, 2011"
RECIPE_MAINTAINER_pn-blktool = "Scott Garman <scott.a.garman@intel.com>"
DISTRO_PN_ALIAS_pn-blktool = "Debian=blktool Mandriva=blktool"
RECIPE_STATUS_pn-iproute2 = "green"
-DEPENDENCY_CHECK_pn-iproute2 = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-iproute2 = "not done"
RECIPE_LATEST_VERSION_pn-iproute2 = "2.6.34"
RECIPE_PATCH_pn-iproute2+configure-cross = "to be pushed upstream"
RECIPE_INTEL_SECTION_pn-iproute2 = "base utils"
@@ -808,21 +813,23 @@ RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-iproute2 = "3 months"
RECIPE_LATEST_RELEASE_DATE_pn-iproute2 = "05/2010"
RECIPE_COMMENTS_pn-iproute2 = ""
DISTRO_PN_ALIAS_pn-iproute2 = "OSPDT"
+RECIPE_LAST_UPDATE_pn-iproute2 = "Nov 10, 2010"
RECIPE_MAINTAINER_pn-iproute2 = "Qing He <qing.he@intel.com>"
RECIPE_STATUS_pn-netbase = "green"
-DEPENDENCY_CHECK_pn-netbase = "not done"
-RECIPE_LATEST_VERSION_pn-netbase = "4.43"
+RECIPE_DEPENDENCY_CHECK_pn-netbase = "not done"
+RECIPE_LATEST_VERSION_pn-netbase = "4.44"
RECIPE_PATCH_pn-netbase+busybox = "marked as REMOVAL"
RECIPE_PATCH_pn-many = "local scripts"
RECIPE_INTEL_SECTION_pn-netbase = "base utils"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-netbase = "2 years"
-RECIPE_LATEST_RELEASE_DATE_pn-netbase = "2010/10/23"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-netbase = "2 months"
+RECIPE_LATEST_RELEASE_DATE_pn-netbase = "2010/12/13"
RECIPE_COMMENTS_pn-netbase = ""
+RECIPE_LAST_UPDATE_pn-netbase = "Dec 30, 2010"
RECIPE_MAINTAINER_pn-netbase = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-busybox = "green"
-DEPENDENCY_CHECK_pn-busybox = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-busybox = "not done"
RECIPE_LATEST_VERSION_pn-busybox = "1.16.2"
RECIPE_PATCH_pn-busybox+udhcpscript = "added in 1.00-rc3; c9bb6478;2004;fix the deleting routers error message in case of no existing default routes;"
RECIPE_PATCH_pn-busybox+udhcpc-fix-nfsroot = "added in 1.13.2; ec4da6df;2009;fix nfsroot issues with resetting IP and deleting routes;to be pushed upstream"
@@ -834,10 +841,11 @@ RECIPE_INTEL_SECTION_pn-busybox = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-busybox = "3 months"
RECIPE_LATEST_RELEASE_DATE_pn-busybox = "0i6/2010"
RECIPE_COMMENTS_pn-busybox = "some special overrides/unsets for CFLAGS, etc. need to understand the tricks behind"
+RECIPE_LAST_UPDATE_pn-busybox = "Nov 17, 2010"
RECIPE_MAINTAINER_pn-busybox = "Qing He <qing.he@intel.com>"
RECIPE_STATUS_pn-module-init-tools = "green"
-DEPENDENCY_CHECK_pn-module-init-tools = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-module-init-tools = "not done"
RECIPE_LATEST_VERSION_pn-module-init-tools = "3.12"
RECIPE_PATCH_pn-module-init-tools+ignore_arch_directory = "added as 1st set of patches from bk to git in 2005; no exact commit; aim to ignore all files in /etc/modprobe.d/arch; not sure why"
RECIPE_PATCH_pn-module-init-tools+modutils_extension = "added as 1st set of patches from bk to git in 2005; no exact commit; aim to handle renaming of modutils; local patch"
@@ -849,30 +857,21 @@ RECIPE_INTEL_SECTION_pn-module-init-tools = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-module-init-tools = "3 months"
RECIPE_LATEST_RELEASE_DATE_pn-module-init-tools = "10/2009"
RECIPE_COMMENTS_pn-module-init-tools = "most tweaks about alternative handle and rename"
+RECIPE_LAST_UPDATE_pn-module-init-tools = "Jul 21, 2010"
RECIPE_MAINTAINER_pn-module-init-tools = "Kevin Tian <kevin.tian@intel.com>"
-RECIPE_STATUS_pn-fakeroot = "green"
-DEPENDENCY_CHECK_pn-fakeroot = "not done"
-RECIPE_LATEST_VERSION_pn-fakeroot = "1.14.4"
-RECIPE_PATCH_pn-fakeroot+configure-libtool = "mark for REMOVAL"
-RECIPE_PATCH_pn-fakeroot+absolutepaths = "added by RP in 2010; to avoid build system python linking to staging library; to be pushed upstream"
-RECIPE_INTEL_SECTION_pn-fakeroot = "base utils"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-fakeroot = "6 months"
-RECIPE_LATEST_RELEASE_DATE_pn-fakeroot = "11/2009"
-RECIPE_COMMENTS_pn-fakeroot = ""
-RECIPE_MAINTAINER_pn-fakeroot = "Qing He <qing.he@intel.com>"
-
RECIPE_STATUS_pn-base-files = "green"
-DEPENDENCY_CHECK_pn-base-files = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-base-files = "not done"
RECIPE_LATEST_VERSION_pn-base-files = "3.0.14"
RECIPE_INTEL_SECTION_pn-base-files = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-base-files = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-base-files = "n/a"
RECIPE_COMMENTS_pn-base-files = "licenses are pacakges here; all local files. RP said that the version 3.0.14 may come from debian. no need to upgrade it now"
+RECIPE_LAST_UPDATE_pn-base-files = "Jul 21, 2006"
RECIPE_MAINTAINER_pn-base-files = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-base-passwd = "green"
-DEPENDENCY_CHECK_pn-base-passwd = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-base-passwd = "not done"
RECIPE_LATEST_VERSION_pn-base-passwd = "3.5.22"
RECIPE_PATCH_pn-base-passwd+nobash = "change /bin/bash to /bin/sh in passwd.master; another specific poky tweak"
RECIPE_PATCH_pn-base-passwd+root-home = "change home for root user in passwd.master; perhaps a poky specific tweak; oe even has other root-home patch for different configurations"
@@ -880,98 +879,108 @@ RECIPE_INTEL_SECTION_pn-base-passwd = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-base-passwd = "1 year"
RECIPE_LATEST_RELEASE_DATE_pn-base-passwd = "09/2009"
RECIPE_COMMENTS_pn-base-passwd = ""
+RECIPE_LAST_UPDATE_pn-base-passwd = "Jul 6, 2010"
RECIPE_MAINTAINER_pn-base-passwd = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-apmd = "green"
-DEPENDENCY_CHECK_pn-apmd = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-apmd = "not done"
RECIPE_LATEST_VERSION_pn-apmd = "3.2.2-14"
+RECIPE_NO_OF_PATCHES_pn-apmd = "3"
RECIPE_PATCH_pn-apmd+debian = "in upstream"
-RECIPE_PATCH_pn-apmd+workaround = "unclear"
RECIPE_PATCH_pn-apmd+unlinux = "added in 3.2.2; 9456cdc1; 2007; to prevent build from interfering with host kernel headers. curious whether it's still required or any better way?"
RECIPE_PATCH_pn-apmd+libtool = "added in 3.2.2; 35de05e6; 2008; by RP; to solve compability with libtool 2.2.4. perhaps for upstream"
RECIPE_INTEL_SECTION_pn-apmd = "base utils"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-apmd = "1 year"
RECIPE_LATEST_RELEASE_DATE_pn-apmd = "07/2009"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-apmd = "1 year"
RECIPE_COMMENTS_pn-apmd = ""
+RECIPE_LAST_UPDATE_pn-apmd = "Jan 4, 2011"
RECIPE_MAINTAINER_pn-apmd = "Scott Garman <scott.a.garman@intel.com>"
RECIPE_STATUS_pn-gperf = "green"
-DEPENDENCY_CHECK_pn-gperf = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-gperf = "not done"
RECIPE_LATEST_VERSION_pn-gperf = "3.0.4"
RECIPE_PATCH_pn-gperf+autoreconf = "added in 2007; e02b1a6c; perhaps it's required if only purpose is to downgraded AC_PREREQ from 2.60 to 2.59; acinclude.m4 perhaps could be generated automatically"
RECIPE_INTEL_SECTION_pn-gperf = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gperf = "2 years"
RECIPE_LATEST_RELEASE_DATE_pn-gperf = "02/2009"
RECIPE_COMMENTS_pn-gperf = "3.0.4 is GPLv3, however we only require native version so far"
+RECIPE_LAST_UPDATE_pn-gperf = "Jul 19, 2010"
RECIPE_MAINTAINER_pn-gperf = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-valgrind = "green"
-DEPENDENCY_CHECK_pn-valgrind = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-valgrind = "not done"
RECIPE_LATEST_VERSION_pn-valgrind = "3.6.0"
RECIPE_INTEL_SECTION_pn-valgrind = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-valgrind = "6 months"
RECIPE_LATEST_RELEASE_DATE_pn-valgrind = "2010/10/21"
RECIPE_COMMENTS_pn-valgrind = ""
+RECIPE_LAST_UPDATE_pn-valgrind = "Nov 16, 2010"
RECIPE_MAINTAINER_pn-valgrind = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-formfactor = "green"
-DEPENDENCY_CHECK_pn-formfactor = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-formfactor = "not done"
RECIPE_LATEST_VERSION_pn-formfactor = "0.0"
RECIPE_INTEL_SECTION_pn-formfactor = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-formfactor = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-formfactor = "n/a"
RECIPE_COMMENTS_pn-formfactor = ""
+RECIPE_LAST_UPDATE_pn-formfactor = "May 23, 2007"
RECIPE_MAINTAINER_pn-formfactor = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-makedevs = "green"
-DEPENDENCY_CHECK_pn-makedevs = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-makedevs = "not done"
RECIPE_LATEST_VERSION_pn-makedevs = "1.0.0"
RECIPE_INTEL_SECTION_pn-makedevs = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-makedevs = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-makedevs = "n/a"
RECIPE_COMMENTS_pn-makedevs = ""
+RECIPE_LAST_UPDATE_pn-makedevs = "Jul 21, 2006"
RECIPE_MAINTAINER_pn-makedevs = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-cwautomacros = "green"
-DEPENDENCY_CHECK_pn-cwautomacros = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-cwautomacros = "not done"
RECIPE_LATEST_VERSION_pn-cwautomacros = "20090610"
RECIPE_INTEL_SECTION_pn-cwautomacros = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-cwautomacros = "6 months"
RECIPE_LATEST_RELEASE_DATE_pn-cwautomacros = "06/2009"
RECIPE_COMMENTS_pn-cwautomacros = ""
+RECIPE_LAST_UPDATE_pn-cwautomacros = "Aug 6, 2010"
RECIPE_MAINTAINER_pn-cwautomacros = "Dongxiao Xu <dongxiao.xu@intel.com>"
DISTRO_PN_ALIAS_pn-cwautomacros= "OSPDT upstream=http://cwautomacros.berlios.de/"
RECIPE_STATUS_pn-which = "green"
-DEPENDENCY_CHECK_pn-which = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-which = "not done"
RECIPE_LATEST_VERSION_pn-which = "2.20"
RECIPE_INTEL_SECTION_pn-which = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-which = "7 months"
RECIPE_LATEST_RELEASE_DATE_pn-which = "08/2008"
RECIPE_COMMENTS_pn-which = ""
+RECIPE_LAST_UPDATE_pn-which = "Aug 13, 2010"
RECIPE_MAINTAINER_pn-which = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-quota = "green"
-DEPENDENCY_CHECK_pn-quota = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-quota = "not done"
RECIPE_LATEST_VERSION_pn-quota = "4.00-pre1"
RECIPE_INTEL_SECTION_pn-quota = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-quota = "13 months"
RECIPE_LATEST_RELEASE_DATE_pn-quota = "2010/02/17"
RECIPE_COMMENTS_pn-quota = ""
+RECIPE_LAST_UPDATE_pn-quota = "Nov 15, 2010"
RECIPE_MAINTAINER_pn-quota = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-mdadm = "green"
-DEPENDENCY_CHECK_pn-mdadm = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-mdadm = "not done"
RECIPE_LATEST_VERSION_pn-mdadm = "3.1.4"
RECIPE_NO_OF_PATCHES_pn-mdadm = "0"
RECIPE_INTEL_SECTION_pn-mdadm = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-mdadm = "25 days"
RECIPE_LATEST_RELEASE_DATE_pn-mdadm = "Aug 31, 2010"
RECIPE_COMMENTS_pn-mdadm = ""
+RECIPE_LAST_UPDATE_pn-mdadm = "Aug 31, 2010"
RECIPE_MAINTAINER_pn-mdadm = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-screen = "green"
-DEPENDENCY_CHECK_pn-screen = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-screen = "not done"
RECIPE_LATEST_VERSION_pn-screen = "4.0.3"
RECIPE_NO_OF_PATCHES_pn-screen = "2"
RECIPE_PATCH_pn-screen+screen_4.0.3-11+lenny1.diff.gz = "Debian's enhancement"
@@ -980,26 +989,33 @@ RECIPE_INTEL_SECTION_pn-screen = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-screen = "4 years"
RECIPE_LATEST_RELEASE_DATE_pn-screen = "Aug 7, 2008"
RECIPE_COMMENTS_pn-screen = ""
+RECIPE_LAST_UPDATE_pn-screen = "Aug 31, 2010"
RECIPE_MAINTAINER_pn-screen = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-gzip = "green"
+RECIPE_LAST_UPDATE_pn-gzip = "Jul 23, 2010"
RECIPE_MAINTAINER_pn-gzip = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_LATEST_VERSION_pn-gzip = "1.4"
RECIPE_STATUS_pn-iptables = "green"
+RECIPE_LAST_UPDATE_pn-iptables = "Nov 10, 2010"
RECIPE_MAINTAINER_pn-iptables = "Qing He <qing.he@intel.com>"
RECIPE_LATEST_VERSION_pn-iptables = "1.4.8"
-RECIPE_STATUS_pn-ethtool = "red"
-RECIPE_MAINTAINER_pn-ethtool = "Edwin Zhai <edwin.zhai@intel.com>"
+RECIPE_STATUS_pn-ethtool = "green"
RECIPE_LATEST_VERSION_pn-ethtool = "2.6.36"
+RECIPE_LAST_UPDATE_pn-ethtool = "Nov 28, 2010"
+RECIPE_MAINTAINER_pn-ethtool = "Edwin Zhai <edwin.zhai@intel.com>"
-RECIPE_STATUS_pn-net-tools = "red"
+RECIPE_STATUS_pn-net-tools = "green"
+RECIPE_LAST_UPDATE_pn-net-tools = "Aug 16, 2010"
+RECIPE_LATEST_VERSION_pn-net-tools = "1.60-23"
RECIPE_MAINTAINER_pn-net-tools = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_LATEST_VERSION_pn-net-tools = "1.60-23"
RECIPE_STATUS_pn-shadow = "green"
-DEPENDENCY_CHECK_pn-shadow = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-shadow = "not done"
+RECIPE_LAST_UPDATE_pn-shadow = "Aug 6, 2010"
RECIPE_MAINTAINER_pn-shadow = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_LATEST_VERSION_pn-shadow = "4.1.4.2"
RECIPE_INTEL_SECTION_pn-shadow = "base utils"
@@ -1007,23 +1023,29 @@ RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-shadow = "2 months"
RECIPE_LATEST_RELEASE_DATE_pn-shadow = "07/2009"
RECIPE_COMMENTS_pn-formfactor = ""
-RECIPE_STATUS_pn-coreutils = "red"
+RECIPE_STATUS_pn-coreutils = "green"
+RECIPE_LAST_UPDATE_pn-coreutils = "Jan 20, 2011"
RECIPE_MAINTAINER_pn-coreutils = "Qing He <qing.he@intel.com>"
-RECIPE_LATEST_VERSION_pn-coreutils = "8.5"
+RECIPE_INTEL_SECTION_pn-coreutils = "base utils"
+RECIPE_LATEST_VERSION_pn-coreutils = "8.9"
+RECIPE_LATEST_RELEASE_DATE_pn-coreutils = "01/2011"
RECIPE_STATUS_pn-libuser = "green"
+RECIPE_LAST_UPDATE_pn-libuser = "Jan 26, 2011"
RECIPE_MAINTAINER_pn-libuser = "Edwin Zhai <edwin.zhai@intel.com>"
-DEPENDENCY_CHECK_pn-libuser = "not done"
-RECIPE_LATEST_VERSION_pn-libuser = "0.56.18"
+RECIPE_DEPENDENCY_CHECK_pn-libuser = "not done"
+RECIPE_LATEST_VERSION_pn-libuser = "0.57.1"
+RECIPE_MANUAL_CHECK_DATE_pn-libuser = "Jan 26, 2011"
RECIPE_NO_OF_PATCHES_pn-libuser = "1"
RECIPE_INTEL_SECTION_pn-libuser = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libuser = "1 month"
-RECIPE_LATEST_RELEASE_DATE_pn-libuser = "09/2010"
+RECIPE_LATEST_RELEASE_DATE_pn-libuser = "01/2011"
RECIPE_COMMENTS_pn-libuser = ""
RECIPE_STATUS_pn-xz = "green"
+RECIPE_LAST_UPDATE_pn-xz = "Nov 19, 2010"
RECIPE_MAINTAINER_pn-xz = "Edwin Zhai <edwin.zhai@intel.com>"
-DEPENDENCY_CHECK_pn-xz = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-xz = "not done"
RECIPE_LATEST_VERSION_pn-xz = "5.0.0"
RECIPE_NO_OF_PATCHES_pn-xz = "0"
RECIPE_INTEL_SECTION_pn-xz = "base utils"
@@ -1032,8 +1054,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-xz = "10/2010"
RECIPE_COMMENTS_pn-xz = ""
RECIPE_STATUS_pn-bc = "green"
+RECIPE_LAST_UPDATE_pn-bc = "Aug 6, 2010"
RECIPE_MAINTAINER_pn-bc = "Edwin Zhai <edwin.zhai@intel.com>"
-DEPENDENCY_CHECK_pn-bc = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-bc = "not done"
RECIPE_LATEST_VERSION_pn-bc = "1.06"
RECIPE_NO_OF_PATCHES_pn-bc = "0"
RECIPE_INTEL_SECTION_pn-bc = "base utils"
@@ -1042,8 +1065,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-bc = "11/2000"
RECIPE_COMMENTS_pn-bc = ""
RECIPE_STATUS_pn-ed = "green"
+RECIPE_LAST_UPDATE_pn-ed = "Nov 19, 2010"
RECIPE_MAINTAINER_pn-ed = "Edwin Zhai <edwin.zhai@intel.com>"
-DEPENDENCY_CHECK_pn-ed = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-ed = "not done"
RECIPE_LATEST_VERSION_pn-ed = "1.5"
RECIPE_NO_OF_PATCHES_pn-ed = "1"
RECIPE_INTEL_SECTION_pn-ed = "base utils"
@@ -1052,8 +1076,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-ed = "07/2010"
RECIPE_COMMENTS_pn-ed = "GPLv3 was used since ed 0.6"
RECIPE_STATUS_pn-pax = "green"
+RECIPE_LAST_UPDATE_pn-pax = "Aug 16, 2010"
RECIPE_MAINTAINER_pn-pax = "Edwin Zhai <edwin.zhai@intel.com>"
-DEPENDENCY_CHECK_pn-pax = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-pax = "not done"
RECIPE_LATEST_VERSION_pn-pax = "3.4"
RECIPE_NO_OF_PATCHES_pn-pax = "0"
RECIPE_INTEL_SECTION_pn-pax = "base utils"
@@ -1062,8 +1087,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-pax = "08/2005"
RECIPE_COMMENTS_pn-pax = ""
RECIPE_STATUS_pn-watchdog = "green"
+RECIPE_LAST_UPDATE_pn-watchdog = "Aug 20, 2010"
RECIPE_MAINTAINER_pn-watchdog = "Dexuan Cui <dexuan.cui@intel.com>"
-DEPENDENCY_CHECK_pn-watchdog = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-watchdog = "not done"
RECIPE_LATEST_VERSION_pn-watchdog = "5.9"
RECIPE_NO_OF_PATCHES_pn-watchdog = "0"
RECIPE_INTEL_SECTION_pn-watchdog = "base utils"
@@ -1073,61 +1099,78 @@ RECIPE_COMMENTS_pn-watchdog = ""
DISTRO_PN_ALIAS_pn-watchdog = "Debian=watchdog Ubuntu=watchdog Mandriva=watchdog"
RECIPE_STATUS_pn-libatomics-ops = "green"
-DEPENDENCY_CHECK_pn-libatomics-ops = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libatomics-ops = "not done"
RECIPE_LATEST_VERSION_pn-libatomics-ops = "1.2"
RECIPE_NO_OF_PATCHES_pn-libatomics-ops = "3"
RECIPE_INTEL_SECTION_pn-libatomics-ops = "optional"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libatomics-ops = "unknown"
RECIPE_LATEST_RELEASE_DATE_pn-libatomics-ops = "unknown"
DISTRO_PN_ALIAS_pn-libatomics-ops = "Meego=libatomic-ops Debian=libatomic-ops Ubuntu=libatomic-ops OpenSuSE=libatomic-ops Mandriva=libatomic-ops"
+RECIPE_LAST_UPDATE_pn-libatomics-ops = "Nov 22, 2010"
RECIPE_MAINTAINER_pn-libatomics-ops = "Scott Garman <scott.a.garman@intel.com>"
RECIPE_STATUS_pn-libffi = "red"
RECIPE_LATEST_VERSION_pn-libffi = "3.0.9"
+RECIPE_LAST_UPDATE_pn-libffi = "Oct 15, 2010"
RECIPE_MAINTAINER_pn-libffi = "Kevin Tian <kevin.tian@intel.com>"
-RECIPE_STATUS_pn-libgdbus = "red"
-RECIPE_LATEST_VERSION_pn-libgdbus = "Release-0.2"
-RECIPE_MAINTAINER_pn-libgdbus = "Kevin Tian <kevin.tian@intel.com>"
+RECIPE_STATUS_pn-libgdbus = "green"
+RECIPE_DEPENDENCY_CHECK_pn-libgdbus = "not done"
+RECIPE_LATEST_VERSION_pn-libgdbus = "0.2"
+RECIPE_NO_OF_PATCHES_pn-libgdbus = "0"
+RECIPE_LATEST_RELEASE_DATE_pn-libgdbus = "09/2008"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libgdbus = "unknown"
+RECIPE_LAST_UPDATE_pn-libgdbus = "Jan 4, 2011"
+RECIPE_MAINTAINER_pn-libgdbus = "Scott Garman <scott.a.garman@intel.com>"
-RECIPE_STATUS_pn-apr = "red"
+RECIPE_STATUS_pn-apr = "green"
RECIPE_LATEST_VERSION_pn-apr = "1.4.2"
+RECIPE_LAST_UPDATE_pn-apr = "Dec 17, 2010"
RECIPE_MAINTAINER_pn-apr = "Edwin Zhai <edwin.zhai@intel.com>"
-RECIPE_STATUS_pn-apr-util = "red"
-RECIPE_LATEST_VERSION_pn-apr-util = "1.3.9"
+RECIPE_STATUS_pn-apr-util = "green"
+RECIPE_LATEST_VERSION_pn-apr-util = "1.3.10"
+RECIPE_LAST_UPDATE_pn-apr-util = "Dec 29, 2010"
RECIPE_MAINTAINER_pn-apr-util = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-apt = "red"
RECIPE_LATEST_VERSION_pn-apt = "0.7.25.3"
+RECIPE_LAST_UPDATE_pn-apt = "Jun 19, 2008"
RECIPE_MAINTAINER_pn-apt = "Qing He <qing.he@intel.com>"
+RECIPE_NO_UPDATE_REASON_pn-apt="similar to zypper, defer the upgrading"
RECIPE_STATUS_pn-chrpath = "red"
RECIPE_LATEST_VERSION_pn-chrpath = "0.13-2"
+RECIPE_LAST_UPDATE_pn-chrpath = "Dec 15, 2009"
RECIPE_MAINTAINER_pn-chrpath = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-dosfstools = "red"
RECIPE_LATEST_VERSION_pn-dosfstools = "2.11"
+RECIPE_LAST_UPDATE_pn-dosfstools = "Oct 11, 2007"
RECIPE_MAINTAINER_pn-dosfstools = "Kevin Tian <kevin.tian@intel.com>"
-RECIPE_STATUS_pn-eee-acpi-scripts = "red"
-RECIPE_LATEST_VERSION_pn-eee-acpi-scripts = "1.1.10+eaaa266e8c3b91b19d8ac861334b41ce7530e8c5"
+RECIPE_STATUS_pn-eee-acpi-scripts = "green"
+RECIPE_LATEST_VERSION_pn-eee-acpi-scripts = "1.1.11+e224937ba51165e2a52252f9a113c8a82c01bb36"
+RECIPE_LAST_UPDATE_pn-eee-acpi-scripts = "Nov 28, 2010"
RECIPE_MAINTAINER_pn-eee-acpi-scripts = "Edwin Zhai <edwin.zhai@intel.com>"
DISTRO_PN_ALIAS_pn-eee-acpi-scripts = "Debian=eeepc-acpi-scripts Ubuntu=eeepc-acpi-scripts"
RECIPE_STATUS_pn-gssdp = "green"
-RECIPE_LATEST_VERSION_pn-gssdp = "0.9.0"
+RECIPE_LATEST_VERSION_pn-gssdp = "0.9.2"
RECIPE_NO_OF_PATCHES_pn-gssdp="0"
RECIPE_LATEST_RELEASE_DATE_pn-gssdp="2010/11/12"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gssdp="2 month"
+RECIPE_LAST_UPDATE_pn-gssdp = "Nov 25, 2010"
+RECIPE_MANUAL_CHECK_DATE_pn-gssdp = "Jan 30, 2011"
RECIPE_MAINTAINER_pn-gssdp = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-insserv = "green"
-DEPENDENCY_CHECK_pn-insserv = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-insserv = "not done"
RECIPE_LATEST_VERSION_pn-insserv = "1.14.0"
RECIPE_INTEL_SECTION_pn-insserv = "base"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-insserv = "unknown"
RECIPE_LATEST_RELEASE_DATE_pn-insserv = "unknown"
+RECIPE_LAST_UPDATE_pn-insserv = "Nov 28, 2010"
RECIPE_MAINTAINER_pn-insserv = "Scott Garman <scott.a.garman@intel.com>"
RECIPE_STATUS_pn-modutils-collateral = "red"
@@ -1135,130 +1178,130 @@ RECIPE_LATEST_VERSION_pn-modutils-collateral = "1.0"
RECIPE_MAINTAINER_pn-modutils-collateral = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-mtd-utils = "green"
-DEPENDENCY_CHECK_pn-mtd-utils = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-mtd-utils = "not done"
RECIPE_LATEST_VERSION_pn-mtd-utils = "1.4.1"
RECIPE_INTEL_SECTION_pn-mtd-utils = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-mtd-utils = "1 months"
RECIPE_LATEST_RELEASE_DATE_pn-mtd-utils = "2010/10/15"
RECIPE_COMMENTS_pn-mtd-utils = ""
+RECIPE_LAST_UPDATE_pn-mtd-utils = "Nov 18, 2010"
RECIPE_MAINTAINER_pn-mtd-utils = "Dongxiao Xu <dongxiao.xu@intel.com>"
-RECIPE_STATUS_pn-ohm = "red"
-RECIPE_LATEST_VERSION_pn-ohm = "3cb3496846508929b9f2d05683ec93523de7947c"
-RECIPE_MAINTAINER_pn-ohm = "Kevin Tian <kevin.tian@intel.com>"
-
RECIPE_STATUS_pn-procps = "red"
RECIPE_LATEST_VERSION_pn-procps = "3.2.8"
+RECIPE_LAST_UPDATE_pn-procps = "Nov 10, 2010"
RECIPE_MAINTAINER_pn-procps = "Qing He <qing.he@intel.com>"
RECIPE_STATUS_pn-iso-codes = "red"
RECIPE_LATEST_VERSION_pn-iso-codes = "3.16"
+RECIPE_LAST_UPDATE_pn-iso-codes = "Sep 23, 2008"
RECIPE_MAINTAINER_pn-iso-codes = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libgsf = "red"
RECIPE_LATEST_VERSION_pn-libgsf = "1.14.18"
+RECIPE_LAST_UPDATE_pn-libgsf = "Aug 20, 2007"
RECIPE_MAINTAINER_pn-libgsf = "Dexuan Cui <dexuan.cui@intel.com>"
-RECIPE_STATUS_pn-beecrypt = "red"
-RECIPE_LATEST_VERSION_pn-beecrypt = "4.1.2"
+RECIPE_STATUS_pn-beecrypt = "green"
+RECIPE_LATEST_VERSION_pn-beecrypt = "4.2.1"
+RECIPE_LAST_UPDATE_pn-beecrypt = "Nov 26, 2010"
RECIPE_MAINTAINER_pn-beecrypt = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-libacpi = "red"
RECIPE_LATEST_VERSION_pn-libacpi = "0.2"
+RECIPE_LAST_UPDATE_pn-libacpi = "Sep 30, 2008"
RECIPE_MAINTAINER_pn-libacpi = "Kevin Tian <kevin.tian@intel.com>"
DISTRO_PN_ALIAS_pn-libacpi="Ubuntu=libacpi Mandriva=libacpi"
-RECIPE_STATUS_pn-acpid = "red"
+RECIPE_STATUS_pn-acpid = "green"
RECIPE_LATEST_VERSION_pn-acpid = "1.0.10"
+RECIPE_LAST_UPDATE_pn-acpid = "Nov 26, 2010"
RECIPE_MAINTAINER_pn-acpid = "Edwin Zhai <edwin.zhai@intel.com>"
-RECIPE_STATUS_pn-consolekit = "red"
-RECIPE_LATEST_VERSION_pn-consolekit = "0.4.1"
+RECIPE_STATUS_pn-consolekit = "green"
+RECIPE_LATEST_VERSION_pn-consolekit = "0.4.3"
+RECIPE_LAST_UPDATE_pn-consolekit = "Nov 28, 2010"
RECIPE_MAINTAINER_pn-consolekit = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-console-tools = "red"
RECIPE_LATEST_VERSION_pn-console-tools = "0.3.2"
+RECIPE_LAST_UPDATE_pn-console-tools = "Jul 21, 2006"
RECIPE_MAINTAINER_pn-console-tools = "Kevin Tian <kevin.tian@intel.com>"
DISTRO_PN_ALIAS_pn-console-tools = "Debian=console-tools Ubuntu=console-tools"
-RECIPE_STATUS_pn-devicekit = "red"
-DISTRO_PN_ALIAS_pn-devicekit = "Fedora=DeviceKit Mandriva=devicekit"
-RECIPE_LATEST_VERSION_pn-devicekit = "3"
-RECIPE_MAINTAINER_pn-devicekit = "Kevin Tian <kevin.tian@intel.com>"
-
-RECIPE_STATUS_pn-devicekit-power = "red"
-RECIPE_LATEST_VERSION_pn-devicekit-power = "n/a"
-RECIPE_MAINTAINER_pn-devicekit-power = "Kevin Tian <kevin.tian@intel.com>"
-DISTRO_PN_ALIAS_pn-deviceKit-power = "Mandriva=devicekit-power Fedora=DeviceKit-power"
-
RECIPE_STATUS_pn-fuse = "red"
RECIPE_LATEST_VERSION_pn-fuse = "2.8.4"
+RECIPE_LAST_UPDATE_pn-fuse = "Nov 6, 2008"
RECIPE_MAINTAINER_pn-fuse = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-msynctool = "green"
-DEPENDENCY_CHECK_pn-msynctool = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-msynctool = "not done"
RECIPE_LATEST_VERSION_pn-msynctool = "0.38"
RECIPE_INTEL_SECTION_pn-msynctool = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-msynctool = "3 months"
RECIPE_LATEST_RELEASE_DATE_pn-msynctool = "2008/11/11"
RECIPE_COMMENTS_pn-msynctool = ""
+RECIPE_LAST_UPDATE_pn-msynctool = "Nov 18, 2010"
RECIPE_MAINTAINER_pn-msynctool = "Dongxiao Xu <dongxiao.xu@intel.com>"
DISTRO_PN_ALIAS_pn-msynctool = "OpenSuse=msynctool Mandriva=msynctool"
RECIPE_STATUS_pn-mtools = "green"
-DEPENDENCY_CHECK_pn-mtools = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-mtools = "not done"
RECIPE_LATEST_VERSION_pn-mtools = "4.0.15"
RECIPE_INTEL_SECTION_pn-mtools = "optional"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-mtools = "1 day"
RECIPE_LATEST_RELEASE_DATE_pn-mtools = "2010/10/17"
RECIPE_COMMENTS_pn-mtools = ""
RECIPE_LATEST_VERSION_pn-mtools = "4.0.15"
+RECIPE_LAST_UPDATE_pn-mtools = "Nov 23, 2010"
RECIPE_MAINTAINER_pn-mtools = "Scott Garman <scott.a.garman@intel.com>"
RECIPE_STATUS_pn-pm-utils = "green"
-DEPENDENCY_CHECK_pn-pm-utils = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-pm-utils = "not done"
RECIPE_LATEST_VERSION_pn-pm-utils = "1.4.1"
RECIPE_INTEL_SECTION_pn-pm-utils = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-pm-utils = "15 days"
RECIPE_LATEST_RELEASE_DATE_pn-pm-utils = "2010o/07/04"
RECIPE_COMMENTS_pn-pm-utils = ""
+RECIPE_LAST_UPDATE_pn-pm-utils = "Nov 18, 2010"
RECIPE_MAINTAINER_pn-pm-utils = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-psmisc = "red"
RECIPE_LATEST_VERSION_pn-psmisc = "22.13"
+RECIPE_LAST_UPDATE_pn-psmisc = "Jan 18, 2008"
RECIPE_MAINTAINER_pn-psmisc = "Kevin Tian <kevin.tian@intel.com>"
RECIPE_STATUS_pn-boost = "red"
RECIPE_LATEST_VERSION_pn-boost = "1.44.0"
+RECIPE_LAST_UPDATE_pn-boost = "Aug 19, 2010"
RECIPE_MAINTAINER_pn-boost = "Qing He <qing.he@intel.com>"
RECIPE_STATUS_pn-boost-jam-native = "red"
RECIPE_LATEST_VERSION_pn-boost-jam-native = "3.1.18"
+RECIPE_LAST_UPDATE_pn-boost-jam-native = "Aug 19, 2010"
RECIPE_MAINTAINER_pn-boost-jam-native = "Qing He <qing.he@intel.com>"
RECIPE_STATUS_pn-libfribidi = "red"
DISTRO_PN_ALIAS_pn-libfribidi = "OpenSuSE=fribidi Ubuntu=fribidi Mandriva=fribidi Debian=fribidi"
RECIPE_LATEST_VERSION_pn-libfribidi = "0.19.2"
+RECIPE_LAST_UPDATE_pn-libfribidi = "Jan 12, 2007"
RECIPE_MAINTAINER_pn-libfribidi = "Kevin Tian <kevin.tian@intel.com>"
-RECIPE_STATUS_pn-shasum-native = "red"
-RECIPE_LATEST_VERSION_pn-shasum-native = "1.0"
-DISTRO_PN_ALIAS_pn-cdrtools-native = "Poky"
-RECIPE_MAINTAINER_pn-shasum-native = "Kevin Tian <kevin.tian@intel.com>"
-
RECIPE_STATUS_pn-rpcbind = "green"
-DEPENDENCY_CHECK_pn-rpcbind = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-rpcbind = "not done"
RECIPE_LATEST_VERSION_pn-rpcbind = "0.2.0"
RECIPE_NO_OF_PATCHES_pn-rpcbind = "0"
RECIPE_INTEL_SECTION_pn-rpcbind = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-rpcbind = "6 months"
RECIPE_LATEST_RELEASE_DATE_pn-rpcbind = "05/2009"
RECIPE_COMMENTS_pn-rpcbind = ""
+RECIPE_LAST_UPDATE_pn-rpcbind = "Sep 1, 2010"
RECIPE_MAINTAINER_pn-rpcbind = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-time = "green"
+RECIPE_LAST_UPDATE_pn-time = "Dec 14, 2006"
RECIPE_MAINTAINER_pn-time = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-time = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-time = "not done"
RECIPE_LATEST_VERSION_pn-time = "1.7"
RECIPE_INTEL_SECTION_pn-time = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-time = "n/a"
@@ -1266,8 +1309,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-time = "07/1996"
RECIPE_COMMENTS_pn-time = ""
RECIPE_STATUS_pn-bzip2 = "yellow" # local config scripts
+RECIPE_LAST_UPDATE_pn-bzip2 = "Nov 3, 2010"
RECIPE_MAINTAINER_pn-bzip2 = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-bzip2 = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-bzip2 = "not done"
RECIPE_LATEST_VERSION_pn-bzip2 = "1.0.6"
RECIPE_PATCH_pn-bzip2+configure.ac = "override default build method"
RECIPE_PATCH_pn-bzip2+Makefile.am = "override default build method"
@@ -1277,8 +1321,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-bzip2 = "03/2008"
RECIPE_COMMENTS_pn-bzip2 = "bzip2 license is 3-clause BSD plus an renaming clause"
RECIPE_STATUS_pn-portmap = "yellow"
+RECIPE_LAST_UPDATE_pn-portmap = "Aug 27, 2007"
RECIPE_MAINTAINER_pn-portmap = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-portmap = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-portmap = "not done"
RECIPE_LATEST_VERSION_pn-portmap = "6.0"
RECIPE_PATCH_pn-portmap+dest-dir-no-strip = "override default build method"
RECIPE_PATCH_pn-portmap+no-libwrap = "override default build method"
@@ -1290,18 +1335,17 @@ RECIPE_COMMENTS_pn-portmap = "most part is under 4-clause BSD, Sun RPC code is u
however debian portmap package licenses RPC code under 3-clause BSD. This needs further investigation"
RECIPE_STATUS_pn-grub = "green"
+RECIPE_LAST_UPDATE_pn-grub = "Oct 8, 2008"
RECIPE_MAINTAINER_pn-grub = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-grub = "not done"
+RECIPE_NO_UPDATE_REASON_pn-grub="grub2 is a different thing"
RECIPE_LATEST_VERSION_pn-grub = "0.97"
-RECIPE_PATCH_pn-grub+autohell = "fix configure"
RECIPE_INTEL_SECTION_pn-grub = "base utils"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-grub = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-grub = "12/2005"
-RECIPE_COMMENTS_pn-grub = ""
RECIPE_STATUS_pn-update-rc.d = "green"
+RECIPE_LAST_UPDATE_pn-update-rc.d = "Jul 21, 2006"
RECIPE_MAINTAINER_pn-update-rc.d = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-update-rc.d = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-update-rc.d = "not done"
RECIPE_LATEST_VERSION_pn-update-rc.d = "0.7"
RECIPE_PATCH_pn-update-rc.d+add-verbose = "add verbosity"
RECIPE_INTEL_SECTION_pn-update-rc.d = "base utils"
@@ -1310,8 +1354,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-update-rc.d = "unknown"
RECIPE_COMMENTS_pn-update-rc.d = ""
RECIPE_STATUS_pn-update-modules = "green"
+RECIPE_LAST_UPDATE_pn-update-modules = "Jul 21, 2006"
RECIPE_MAINTAINER_pn-update-modules = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-update-modules = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-update-modules = "not done"
RECIPE_LATEST_VERSION_pn-update-modules = "1.0"
RECIPE_PATCH_pn-update-modules+update-modules = "local file"
RECIPE_INTEL_SECTION_pn-update-modules = "base utils"
@@ -1321,8 +1366,9 @@ DISTRO_PN_ALIAS_pn-update-modules = "Poky"
RECIPE_COMMENTS_pn-update-modules = ""
RECIPE_STATUS_pn-udev-extraconf = "green"
+RECIPE_LAST_UPDATE_pn-udev-extraconf = "Jul 19, 2008"
RECIPE_MAINTAINER_pn-udev-extraconf = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-udev-extraconf = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-udev-extraconf = "not done"
RECIPE_LATEST_VERSION_pn-udev-extraconf = "0.0"
RECIPE_PATCH_pn-udev-extraconf+mount.blacklist = "add mount blacklist"
RECIPE_INTEL_SECTION_pn-udev-extraconf = "base utils"
@@ -1332,8 +1378,9 @@ DISTRO_PN_ALIAS_pn-udev-extraconf = "Poky"
RECIPE_COMMENTS_pn-udev-extraconf = ""
RECIPE_STATUS_pn-bash = "green"
+RECIPE_LAST_UPDATE_pn-bash = "Jun 17, 2010"
RECIPE_MAINTAINER_pn-bash = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-bash = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-bash = "not done"
RECIPE_LATEST_VERSION_pn-bash = "4.1"
RECIPE_PATCH_pn-bash+upstream-patches = "upstream patches on source mirrors"
RECIPE_INTEL_SECTION_pn-bash = "base utils"
@@ -1342,8 +1389,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-bash = "12/2009"
RECIPE_COMMENTS_pn-bash = ""
RECIPE_STATUS_pn-syslinux = "yellow" # need mangling on LDFLAGS
+RECIPE_LAST_UPDATE_pn-syslinux = "Nov 16, 2010"
RECIPE_MAINTAINER_pn-syslinux = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-syslinux = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-syslinux = "not done"
RECIPE_LATEST_VERSION_pn-syslinux = "3.86"
RECIPE_PATCH_pn-syslinux+cross-build = "use poky toolchain instead of host"
RECIPE_INTEL_SECTION_pn-syslinux = "base utils"
@@ -1352,8 +1400,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-syslinux = "04/2010"
RECIPE_COMMENTS_pn-syslinux = ""
RECIPE_STATUS_pn-sysvinit = "green"
+RECIPE_LAST_UPDATE_pn-sysvinit = "Jun 18, 2010"
RECIPE_MAINTAINER_pn-sysvinit = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-sysvinit = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-sysvinit = "not done"
RECIPE_LATEST_VERSION_pn-sysvinit = "2.88dsf"
RECIPE_PATCH_pn-sysvinit+install = "use poky environment variables"
RECIPE_INTEL_SECTION_pn-sysvinit = "base utils"
@@ -1362,8 +1411,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-sysvinit = "04/2010"
RECIPE_COMMENTS_pn-sysvinit = ""
RECIPE_STATUS_pn-sysfsutils = "green"
+RECIPE_LAST_UPDATE_pn-sysfsutils = "Jun 18, 2010"
RECIPE_MAINTAINER_pn-sysfsutils = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-sysfsutils = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-sysfsutils = "not done"
RECIPE_LATEST_VERSION_pn-sysfsutils = "2.1.0"
RECIPE_INTEL_SECTION_pn-sysfsutils = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-sysfsutils = "n/a"
@@ -1371,8 +1421,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-sysfsutils = "08/2006"
RECIPE_COMMENTS_pn-sysfsutils = ""
RECIPE_STATUS_pn-curl = "green"
+RECIPE_LAST_UPDATE_pn-curl = "Nov 9, 2010"
RECIPE_MAINTAINER_pn-curl = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-curl = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-curl = "not done"
RECIPE_LATEST_VERSION_pn-curl = "7.21.0"
RECIPE_PATCH_pn-curl+noldlibpath = "no bother set LD_LIBRARY_PATH since we are cross compiling"
RECIPE_PATCH_pn-curl+pkgconfig-fix = "fix libcurl.pc"
@@ -1383,8 +1434,9 @@ RECIPE_COMMENTS_pn-curl = ""
RECIPE_STATUS_pn-gconf-dbus = "green"
DISTRO_PN_ALIAS_pn-gconf-dbus = "Meego=GConf-dbus"
+RECIPE_LAST_UPDATE_pn-gconf-dbus = "Jul 16, 2010"
RECIPE_MAINTAINER_pn-gconf-dbus = "Yu Ke <ke.yu@intel.com>"
-DEPENDENCY_CHECK_pn-gconf-dbus = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-gconf-dbus = "not done"
RECIPE_LATEST_VERSION_pn-gconf-dbus = "2.16.0+svnr705"
RECIPE_INTEL_SECTION_pn-gconf-dbus = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gconf-dbus = "n/a"
@@ -1392,8 +1444,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-gconf-dbus = "n/a"
RECIPE_COMMENTS_pn-gconf-dbus = "difficult to identify official site and current status"
RECIPE_STATUS_pn-elfutils ="green" # no update needed
+RECIPE_LAST_UPDATE_pn-elfutils = "Jul 16, 2010"
RECIPE_MAINTAINER_pn-elfutils = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-gconf-dbus = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-gconf-dbus = "not done"
RECIPE_LATEST_VERSION_pn-elfutils="0.148"
RECIPE_INTEL_SECTION_pn-gconf-dbus = "base utils"
RECIPE_NO_OF_PATCHES_pn-elfutils="9"
@@ -1401,8 +1454,9 @@ RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-elfutils="1 month"
RECIPE_LATEST_RELEASE_DATE_pn-elfutils="06/2010"
RECIPE_STATUS_pn-pkgconfig = "green"
+RECIPE_LAST_UPDATE_pn-pkgconfig = "Jul 13, 2010"
RECIPE_MAINTAINER_pn-pkgconfig = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-pkgconfig = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-pkgconfig = "not done"
RECIPE_LATEST_VERSION_pn-pkgconfig = "0.25"
RECIPE_INTEL_SECTION_pn-pkgconfig = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-pkgconfig = "n/a"
@@ -1410,8 +1464,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-pkgconfig = "05/2010"
RECIPE_COMMENTS_pn-pkgconfig = "git as candidate, 0.23: 01/2008, 0.24: 05/2010, 0.25: 05/2010"
RECIPE_STATUS_pn-less = "green"
+RECIPE_LAST_UPDATE_pn-less = "Jul 6, 2010"
RECIPE_MAINTAINER_pn-less = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-less = "done"
+RECIPE_DEPENDENCY_CHECK_pn-less = "done"
RECIPE_LATEST_VERSION_pn-less = "436"
RECIPE_INTEL_SECTION_pn-less = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-less = "1 month"
@@ -1419,8 +1474,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-less = "07/2009"
RECIPE_COMMENTS_pn-less = "also licensed under less, which is a 2-clause BSD-like permissive license"
RECIPE_STATUS_pn-genext2fs = "green"
+RECIPE_LAST_UPDATE_pn-genext2fs = "Jul 12, 2010"
RECIPE_MAINTAINER_pn-genext2fs = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-genext2fs = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-genext2fs = "not done"
RECIPE_LATEST_VERSION_pn-genext2fs = "1.4.1"
RECIPE_INTEL_SECTION_pn-genext2fs = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-genext2fs = "3 months"
@@ -1428,8 +1484,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-genext2fs = "04/2007"
RECIPE_COMMENTS_pn-genext2fs = ""
RECIPE_STATUS_pn-findutils = "green"
+RECIPE_LAST_UPDATE_pn-findutils = "Jul 8, 2010"
RECIPE_MAINTAINER_pn-findutils = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-findutils = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-findutils = "not done"
RECIPE_PATCH_pn-findutils_01-27017 = "upstream patch"
RECIPE_PATCH_pn-findutils_01-28824 = "upstream patch"
RECIPE_PATCH_pn-findutils_01-28872 = "upstream patch"
@@ -1440,8 +1497,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-findutils = "06/2009"
RECIPE_COMMENTS_pn-findutils = ""
RECIPE_STATUS_pn-file = "green"
+RECIPE_LAST_UPDATE_pn-file = "Jul 6, 2010"
RECIPE_MAINTAINER_pn-file = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-file = "done"
+RECIPE_DEPENDENCY_CHECK_pn-file = "done"
RECIPE_LATEST_VERSION_pn-file = "5.04"
RECIPE_PATCH_pn-file+dump = "some new magic data"
RECIPE_PATCH_pn-file+filesystems = "some other new magic data"
@@ -1451,8 +1509,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-file = "01/2010"
RECIPE_COMMENTS_pn-file = "2-clause BSD"
RECIPE_STATUS_pn-rsync = "green"
+RECIPE_LAST_UPDATE_pn-rsync = "Jul 6, 2010"
RECIPE_MAINTAINER_pn-rsync = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-rsync = "done"
+RECIPE_DEPENDENCY_CHECK_pn-rsync = "done"
RECIPE_LATEST_VERSION_pn-rsync = "3.0.7"
RECIPE_PATCH_pn-rsync+rsyncd.conf = "init script"
RECIPE_PATCH_pn-rsync+acinclude.m4 = "custom m4 macros"
@@ -1462,8 +1521,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-rsync = "12/2009"
RECIPE_COMMENTS_pn-rsync = ""
RECIPE_STATUS_pn-nfs-utils = "yellow" # no auto stage
+RECIPE_LAST_UPDATE_pn-nfs-utils = "Nov 9, 2010"
RECIPE_MAINTAINER_pn-nfs-utils = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-nfs-utils = "done" # still missing libwrap, libgss, libtirpc
+RECIPE_DEPENDENCY_CHECK_pn-nfs-utils = "done" # still missing libwrap, libgss, libtirpc
RECIPE_LATEST_VERSION_pn-nfs-utils = "1.2.3"
RECIPE_PATCH_pn-nfs-utils+nfs-utils-1.0.6-uclibc.patch = "uclibc missing some functions"
RECIPE_PATCH_pn-nfs-utils+nfsserver = "init script"
@@ -1473,8 +1533,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-nfs-utils = "02/2010"
RECIPE_COMMENTS_pn-nfs-utils = ""
RECIPE_STATUS_pn-dropbear = "green"
+RECIPE_LAST_UPDATE_pn-dropbear = "Jul 5, 2010"
RECIPE_MAINTAINER_pn-dropbear = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-dropbear = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-dropbear = "not done"
RECIPE_LATEST_VERSION_pn-dropbear = "0.52"
RECIPE_PATCH_pn-dropbear+urandom-xauth-changes-to-options.h = "xauth path change"
RECIPE_PATCH_pn-dropbear+configure = "use configure cache value for cross compiling"
@@ -1487,8 +1548,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-dropbear = "11/2008"
RECIPE_COMMENTS_pn-dropbear = ""
RECIPE_STATUS_pn-hal = "green"
+RECIPE_LAST_UPDATE_pn-hal = "Jul 20, 2010"
RECIPE_MAINTAINER_pn-hal = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-hal = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-hal = "not done"
RECIPE_LATEST_VERSION_pn-hal = "0.5.14"
RECIPE_INTEL_SECTION_pn-hal = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-hal = "4 months"
@@ -1497,8 +1559,9 @@ RECIPE_COMMENTS_pn-hal = "The licensing is very complicated, Most files are GPLv
with some borrowed code under LGPLv2.1, AFL itself is incompatible with GPL/LGPL"
RECIPE_STATUS_pn-hal-info = "green"
+RECIPE_LAST_UPDATE_pn-hal-info = "Jul 20, 2010"
RECIPE_MAINTAINER_pn-hal-info = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-hal-info = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-hal-info = "not done"
RECIPE_LATEST_VERSION_pn-hal-info = "20091130"
RECIPE_INTEL_SECTION_pn-hal-info = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-hal-info = "4 months"
@@ -1506,8 +1569,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-hal-info = "11/2009"
RECIPE_COMMENTS_pn-hal-info = ""
RECIPE_STATUS_pn-avahi = "green"
+RECIPE_LAST_UPDATE_pn-avahi = "Nov 19, 2010"
RECIPE_MAINTAINER_pn-avahi = "Edwin Zhai <edwin.zhai@intel.com>"
-DEPENDENCY_CHECK_pn-avahi = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-avahi = "not done"
RECIPE_LATEST_VERSION_pn-avahi = "0.6.28"
RECIPE_INTEL_SECTION_pn-avahi = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-avahi = "3 month"
@@ -1515,8 +1579,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-avahi = "10/2010"
RECIPE_COMMENTS_pn-avahi = ""
RECIPE_STATUS_pn-js = "yellow" # may not work for platforms other than 32bit x86
+RECIPE_LAST_UPDATE_pn-js = "Jul 5, 2010"
RECIPE_MAINTAINER_pn-js = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-js = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-js = "not done"
RECIPE_LATEST_VERSION_pn-js = "1.7.0+1.8.0rc1"
RECIPE_PATCH_pn-js+usepic = "get around broken PIC test for cross compiling"
RECIPE_PATCH_pn-js+link-with-gcc = "use $(CC) instead of $(LD) to link"
@@ -1527,8 +1592,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-js = "03/2009"
RECIPE_COMMENTS_pn-js = "1.7.0 is 10/2007, alternative java based packaged called Rhino"
RECIPE_STATUS_pn-pcmciautils = "green"
+RECIPE_LAST_UPDATE_pn-pcmciautils = "Jul 14, 2010"
RECIPE_MAINTAINER_pn-pcmciautils = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-pcmciautils = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-pcmciautils = "not done"
RECIPE_LATEST_VERSION_pn-pcmciautils = "017"
RECIPE_PATCH_pn-pcmciautils+makefile-fix = "fix absolute path"
RECIPE_PATCH_pn-pcmciautils+version-workaround = "avoid a macro"
@@ -1538,8 +1604,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-pcmciautils = "01/2010"
RECIPE_COMMENTS_pn-pcmciautils = ""
RECIPE_STATUS_pn-unzip = "green"
+RECIPE_LAST_UPDATE_pn-unzip = "Jul 5, 2010"
RECIPE_MAINTAINER_pn-unzip = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-unzip = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-unzip = "not done"
RECIPE_LATEST_VERSION_pn-unzip = "6.0"
RECIPE_INTEL_SECTION_pn-unzip = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-unzip = "49 months"
@@ -1547,8 +1614,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-unzip = "04/2009"
RECIPE_COMMENTS_pn-unzip = "5.52 has a race condition vulnerability for Unix version"
RECIPE_STATUS_pn-zip = "green"
+RECIPE_LAST_UPDATE_pn-zip = "Jul 6, 2010"
RECIPE_MAINTAINER_pn-zip = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-zip = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-zip = "not done"
RECIPE_LATEST_VERSION_pn-zip = "3.0"
RECIPE_INTEL_SECTION_pn-zip = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-zip = "21 months"
@@ -1556,8 +1624,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-zip = "09/2009"
RECIPE_COMMENTS_pn-zip = ""
RECIPE_STATUS_pn-strace = "green"
+RECIPE_LAST_UPDATE_pn-strace = "May 25, 2010"
RECIPE_MAINTAINER_pn-strace = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-strace = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-strace = "not done"
RECIPE_LATEST_VERSION_pn-strace = "4.5.20"
RECIPE_INTEL_SECTION_pn-strace = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-strace = "6 months"
@@ -1565,17 +1634,17 @@ RECIPE_LATEST_RELEASE_DATE_pn-strace = "04/2010"
RECIPE_COMMENTS_pn-strace = "3-clause BSD"
RECIPE_STATUS_pn-dhcp = "green"
+RECIPE_LAST_UPDATE_pn-dhcp = "Nov 17, 2010"
RECIPE_MAINTAINER_pn-dhcp = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-dhcp = "not done"
-RECIPE_LATEST_VERSION_pn-dhcp = "4.1.1-P1"
+RECIPE_LATEST_VERSION_pn-dhcp = "4.2.0-P2"
RECIPE_INTEL_SECTION_pn-dhcp = "base utils"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-dhcp = "n/a"
-RECIPE_LATEST_RELEASE_DATE_pn-dhcp = "06/2010"
+RECIPE_LATEST_RELEASE_DATE_pn-dhcp = "12/2010"
RECIPE_COMMENTS_pn-dhcp = "several major release, others are 3.1.3, 4.0.2-P1, need to identify"
RECIPE_STATUS_pn-v86d = "yellow" # self written configure
+RECIPE_LAST_UPDATE_pn-udev = "Jul 6, 2010"
RECIPE_MAINTAINER_pn-v86d = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-v86d = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-v86d = "not done"
RECIPE_LATEST_VERSION_pn-v86d = "0.1.9"
RECIPE_PATCH_pn-v86d+fbsetup = "init script"
RECIPE_INTEL_SECTION_pn-v86d = "base utils"
@@ -1585,8 +1654,9 @@ RECIPE_COMMENTS_pn-v86d = "contains code under other licenses"
DISTRO_PN_ALIAS_pn-v86d = "Debian=v86d Ubuntu=v86d"
RECIPE_STATUS_pn-udev = "yellow" # needs to delete old versions
+RECIPE_LAST_UPDATE_pn-udev = "Dec 7, 2010"
RECIPE_MAINTAINER_pn-udev = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-udev = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-udev = "not done"
RECIPE_LATEST_VERSION_pn-udev = "158"
RECIPE_INTEL_SECTION_pn-udev = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-udev = "<1 month"
@@ -1594,8 +1664,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-udev = "06/2010"
RECIPE_COMMENTS_pn-udev = "may need different versions for different kernels"
RECIPE_STATUS_pn-tzdata = "green"
+RECIPE_LAST_UPDATE_pn-tzdata = "Nov 9, 2010"
RECIPE_MAINTAINER_pn-tzdata = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-tzdata = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-tzdata = "not done"
RECIPE_LATEST_VERSION_pn-tzdata = "2010o"
RECIPE_INTEL_SECTION_pn-tzdata = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-tzdata = "1 month"
@@ -1603,8 +1674,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-tzdata = "05/2010"
RECIPE_COMMENTS_pn-tzdata = ""
RECIPE_STATUS_pn-tinylogin = "yellow" # replaced, place holder for tracking
+RECIPE_LAST_UPDATE_pn-tinylogin = "Jul 21, 2006"
RECIPE_MAINTAINER_pn-tinylogin = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-tinylogin = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-tinylogin = "not done"
RECIPE_LATEST_VERSION_pn-tinylogin = "1.4"
RECIPE_INTEL_SECTION_pn-tinylogin = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-tinylogin = "n/a"
@@ -1613,8 +1685,9 @@ RECIPE_COMMENTS_pn-tinylogin = "merged into busybox"
DISTRO_PN_ALIAS_pn-tinylogin = "Debian=busybox Ubuntu=busybox Mandriva=busybox"
RECIPE_STATUS_pn-rpm = "red" # need upgrade
+RECIPE_LAST_UPDATE_pn-rpm = "Aug 20, 2010"
RECIPE_MAINTAINER_pn-rpm = "Joshua Lock <joshua.lock@intel.com>"
-DEPENDENCY_CHECK_pn-rpm = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-rpm = "not done"
RECIPE_LATEST_VERSION_pn-rpm = "5.1.10"
RECIPE_INTEL_SECTION_pn-rpm = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-rpm = "2 months"
@@ -1622,26 +1695,23 @@ RECIPE_LATEST_RELEASE_DATE_pn-rpm = "01/2010"
RECIPE_COMMENTS_pn-rpm = "the library alone is under dual license"
RECIPE_STATUS_pn-shared-mime-info = "green"
+RECIPE_LAST_UPDATE_pn-shared-mime-info = "Nov 9, 2010"
RECIPE_MAINTAINER_pn-shared-mime-info = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-shared-mime-info = "not done"
-RECIPE_LATEST_VERSION_pn-shared-mime-info = "0.71"
+RECIPE_LATEST_VERSION_pn-shared-mime-info = "0.90"
RECIPE_INTEL_SECTION_pn-shared-mime-info = "base utils"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-shared-mime-info = "5 months"
RECIPE_LATEST_RELEASE_DATE_pn-shared-mime-info = "02/2010"
-RECIPE_COMMENTS_pn-shared-mime-info = ""
RECIPE_STATUS_pn-util-linux = "green"
+RECIPE_LAST_UPDATE_pn-util-linux = "Jul 21, 2010"
RECIPE_MAINTAINER_pn-util-linux = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-util-linux = "note done"
-RECIPE_LATEST_VERSION_pn-util-linux = "2.17.2"
+RECIPE_LATEST_VERSION_pn-util-linux = "2.18"
RECIPE_INTEL_SECTION_pn-util-linux = "base utils"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-util-linux = "2 months"
-RECIPE_LATEST_RELEASE_DATE_pn-util-linux = "03/2010"
-RECIPE_COMMENTS_pn-util-linux = ""
+RECIPE_LATEST_RELEASE_DATE_pn-util-linux = "06/2010"
RECIPE_STATUS_pn-usbutils = "green"
+RECIPE_LAST_UPDATE_pn-usbutils = "Jul 30, 2010"
RECIPE_MAINTAINER_pn-usbutils = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-usbutils = "done"
+RECIPE_DEPENDENCY_CHECK_pn-usbutils = "done"
RECIPE_LATEST_VERSION_pn-usbutils = "0.86"
RECIPE_INTEL_SECTION_pn-usbutils = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-usbutils = "2 months"
@@ -1649,8 +1719,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-usbutils = "08/2009"
RECIPE_COMMENTS_pn-usbutils = ""
RECIPE_STATUS_pn-pciutils = "yellow" # custom build system, several hacks
+RECIPE_LAST_UPDATE_pn-pciutils = "Nov 10, 2010"
RECIPE_MAINTAINER_pn-pciutils = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-pciutils = "done"
+RECIPE_DEPENDENCY_CHECK_pn-pciutils = "done"
RECIPE_LATEST_VERSION_pn-pciutils = "3.1.7"
RECIPE_PATCH_pn-pciutils+configure = "fix for a handwritten config"
RECIPE_PATCH_pn-pciutils+guess-fix = "fix arch guess algorithm"
@@ -1662,8 +1733,9 @@ RECIPE_LATEST_RELEASE_DATE_pn-pciutils = "01/2010"
RECIPE_COMMENTS_pn-pciutils = ""
RECIPE_STATUS_pn-gamin = "green"
+RECIPE_LAST_UPDATE_pn-gamin = "Aug 12, 2010"
RECIPE_MAINTAINER_pn-gamin = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-gamin = "done"
+RECIPE_DEPENDENCY_CHECK_pn-gamin = "done"
RECIPE_LATEST_VERSION_pn-gamin = "0.1.10"
RECIPE_PATCH_pn-gamin+no-abstract-socket = "disable abstract socket support"
RECIPE_INTEL_SECTION_pn-gamin = "base utils"
@@ -1672,47 +1744,57 @@ RECIPE_LATEST_RELEASE_DATE_pn-gamin = "11/2008"
RECIPE_COMMENTS_pn-gamin = ""
RECIPE_STATUS_pn-zypper = "green"
-DEPENDENCY_CHECK_pn-zypper = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-zypper = "not done"
+RECIPE_LAST_UPDATE_pn-zypper = "Aug 20, 2010"
RECIPE_MAINTAINER_pn-zypper = "Qing He <qing.he@intel.com>"
RECIPE_LATEST_VERSION_pn-zypper = "git"
RECIPE_INTEL_SECTION_pn-zypper = "base utils"
RECIPE_COMMENTS_pn-zypper = ""
-RECIPE_STATUS_pn-sysstat = "red" # need upgrade
+RECIPE_STATUS_pn-sysstat = "green"
+RECIPE_LAST_UPDATE_pn-sysstat = "Nov 17, 2010"
RECIPE_MAINTAINER_pn-sysstat = "Qing He <qing.he@intel.com>"
RECIPE_LATEST_VERSION_pn-sysstat = "9.1.6"
RECIPE_STATUS_pn-sysklogd = "red" # need upgrade
+RECIPE_LAST_UPDATE_pn-sysklogd = "Aug 27, 2010"
RECIPE_MAINTAINER_pn-sysklogd = "Qing He <qing.he@intel.com>"
RECIPE_LATEST_VERSION_pn-sysklogd = "1.5"
RECIPE_STATUS_pn-gawk = "red" # need upgrade
+RECIPE_LAST_UPDATE_pn-gawk = "Aug 27, 2010"
RECIPE_MAINTAINER_pn-gawk = "Qing He <qing.he@intel.com>"
RECIPE_LATEST_VERSION_pn-gawk = "3.1.7"
RECIPE_STATUS_pn-mktemp="red"
+RECIPE_LAST_UPDATE_pn-mktemp = "Jul 29, 2010"
RECIPE_MAINTAINER_pn-mktemp="Yu Ke <ke.yu@intel.com>"
RECIPE_LATEST_VERSION_pn-mktemp="1.7"
RECIPE_STATUS_pn-iputils="red"
+RECIPE_LAST_UPDATE_pn-iputils = "Jul 29, 2010"
RECIPE_MAINTAINER_pn-iputils="Yu Ke <ke.yu@intel.com>"
RECIPE_LATEST_VERSION_pn-iputils="s20100418"
RECIPE_STATUS_pn-xinetd="red"
+RECIPE_LAST_UPDATE_pn-xinetd = "Jul 28, 2010"
RECIPE_MAINTAINER_pn-xinetd="Yu Ke <ke.yu@intel.com>"
RECIPE_LATEST_VERSION_pn-xinetd="2.3.14"
RECIPE_STATUS_pn-cracklib="green"
+RECIPE_LAST_UPDATE_pn-cracklib = "Nov 13, 2010"
RECIPE_MAINTAINER_pn-cracklib="Yu Ke <ke.yu@intel.com>"
RECIPE_LATEST_VERSION_pn-cracklib="2.8.18"
RECIPE_STATUS_pn-openobex = "red"
RECIPE_LATEST_VERSION_pn-openobex = "1.5"
+RECIPE_LAST_UPDATE_pn-openobex = "Jul 31, 2009"
RECIPE_MAINTAINER_pn-openobex = "Qing He <qing.he@intel.com>"
RECIPE_STATUS_pn-sed = "green"
+RECIPE_LAST_UPDATE_pn-sed = "Sep 1, 2010"
RECIPE_MAINTAINER_pn-sed = "Qing He <qing.he@intel.com>"
-DEPENDENCY_CHECK_pn-sed = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-sed = "not done"
RECIPE_LATEST_VERSION_pn-sed = "4.2.1"
RECIPE_INTEL_SECTION_pn-sed = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-sed = "2 months"
@@ -1721,32 +1803,40 @@ RECIPE_COMMENTS_pn-sed = "Qing maintains GPLv2 sed, while Dongxiao maintains GPL
RECIPE_STATUS_pn-aspell = "red"
RECIPE_LATEST_VERSION_pn-aspell = "0.60.6"
+RECIPE_LAST_UPDATE_pn-aspell = "Aug 16, 2010"
RECIPE_MAINTAINER_pn-aspell = "Qing He <qing.he@intel.com>"
-RECIPE_STATUS_pn-parted = "red"
+RECIPE_STATUS_pn-parted = "green"
RECIPE_LATEST_VERSION_pn-parted = "2.3"
+RECIPE_LAST_UPDATE_pn-parted = "Dec 30, 2010"
RECIPE_MAINTAINER_pn-parted = "Qing He <qing.he@intel.com>"
-RECIPE_STATUS_pn-resolvconf = "red"
-RECIPE_LATEST_VERSION_pn-resolvconf = "1.45"
+RECIPE_STATUS_pn-resolvconf = "green"
+RECIPE_LATEST_VERSION_pn-resolvconf = "1.48"
+RECIPE_LAST_UPDATE_pn-resolvconf = "Jan 20, 2011"
RECIPE_MAINTAINER_pn-resolvconf = "Qing He <qing.he@intel.com>"
RECIPE_STATUS_pn-openswan = "red"
RECIPE_LATEST_VERSION_pn-openswan = "2.6.26"
+RECIPE_LAST_UPDATE_pn-openswan = "Apr 13, 2007"
RECIPE_MAINTAINER_pn-openswan = "Qing He <qing.he@intel.com>"
RECIPE_STATUS_pn-u-boot-mkimage = "red"
DISTRO_PN_ALIAS_pn-u-boot-mkimage = "Ubuntu=uboot-mkimage Debian=uboot-mkimage"
+RECIPE_NO_UPDATE_REASON_pn-u-boot-mkimage ="target version is not used"
RECIPE_LATEST_VERSION_pn-u-boot-mkimage = "2010.03"
+RECIPE_LAST_UPDATE_pn-u-boot-mkimage = "Dec 15, 2009"
RECIPE_MAINTAINER_pn-u-boot-mkimage = "Qing He <qing.he@intel.com>"
-RECIPE_STATUS_pn-zaurusd = "red"
-RECIPE_LATEST_VERSION_pn-zaurusd = "n/a"
+RECIPE_STATUS_pn-zaurusd = "green"
+RECIPE_LATEST_VERSION_pn-zaurusd = "0.0+svnr426"
DISTRO_PN_ALIAS_pn-zaurusd = "OpenedHand"
+RECIPE_LAST_UPDATE_pn-zaurusd = "Jan 20, 2011"
RECIPE_MAINTAINER_pn-zaurusd = "Qing He <qing.he@intel.com>"
RECIPE_STATUS_pn-yaffs2-utils = "red"
RECIPE_LATEST_VERSION_pn-yaffs2-utils = ""
+RECIPE_LAST_UPDATE_pn-yaffs2-utils = "Nov 7, 2007"
RECIPE_MAINTAINER_pn-yaffs2-utils = "Qing He <qing.he@intel.com>"
DISTRO_PN_ALIAS_pn-yaffs2-utils = "OSPDT upstream=http://www.yaffs.net"
@@ -1757,27 +1847,33 @@ RECIPE_MAINTAINER_pn-usbinit = "Qing He <qing.he@intel.com>"
RECIPE_STATUS_pn-ubootchart = "red"
RECIPE_LATEST_VERSION_pn-ubootchart = "0.0+r12"
+RECIPE_LAST_UPDATE_pn-ubootchart = "Nov 6, 2007"
RECIPE_MAINTAINER_pn-ubootchart = "Qing He <qing.he@intel.com>"
DISTRO_PN_ALIAS_pn-ubootchart = "OSPDT upstream=http://code.google.com/p/ubootchart"
RECIPE_STATUS_pn-tiff = "red"
RECIPE_LATEST_VERSION_pn-tiff = "3.9.4"
+RECIPE_LAST_UPDATE_pn-tiff = "Aug 25, 2008"
RECIPE_MAINTAINER_pn-tiff = "Qing He <qing.he@intel.com>"
RECIPE_STATUS_pn-libexif = "red"
RECIPE_LATEST_VERSION_pn-libexif = "0.6.19"
+RECIPE_LAST_UPDATE_pn-libexif = "Nov 22, 2010"
RECIPE_MAINTAINER_pn-libexif = "Qing He <qing.he@intel.com>"
RECIPE_STATUS_pn-setserial = "red"
RECIPE_LATEST_VERSION_pn-setserial = "2.17"
+RECIPE_LAST_UPDATE_pn-setserial = "Jul 21, 2006"
RECIPE_MAINTAINER_pn-setserial = "Qing He <qing.he@intel.com>"
RECIPE_STATUS_pn-hdparm = "red"
RECIPE_LATEST_VERSION_pn-hdparm = "6.3"
+RECIPE_LAST_UPDATE_pn-hdparm = "Jul 21, 2006"
RECIPE_MAINTAINER_pn-hdparm = "Qing He <qing.he@intel.com>"
RECIPE_STATUS_pn-wbxml2 = "red"
RECIPE_LATEST_VERSION_pn-wbxml2 = "0.10.8"
+RECIPE_LAST_UPDATE_pn-wbxml2 = "Jan 3, 2007"
RECIPE_MAINTAINER_pn-wbxml2 = "Qing He <qing.he@intel.com>"
RECIPE_STATUS_pn-qemu-config = "red"
@@ -1786,7 +1882,7 @@ DISTRO_PN_ALIAS_pn-qemu-config = "OpenedHand"
RECIPE_MAINTAINER_pn-qemu-config = "Qing He <qing.he@intel.com>"
RECIPE_STATUS_pn-qemu-helper-native = "green"
-DEPENDENCY_CHECK_pn-qemu-helper-native = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-qemu-helper-native = "not done"
RECIPE_LATEST_VERSION_pn-qemu-helper-native = "r0"
RECIPE_NO_OF_PATCHES_pn-qemu-helper-native = "0"
RECIPE_INTEL_SECTION_pn-qemu-helper-native = "base utils"
@@ -1794,20 +1890,22 @@ RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-qemu-helper-native = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-qemu-helper-native = "n/a"
RECIPE_COMMENTS_pn-qemu-helper-native = ""
DISTRO_PN_ALIAS_pn-qemu-helper-native = "OpenedHand"
+RECIPE_LAST_UPDATE_pn-qemu-helper-native = "Aug 5, 2010"
RECIPE_MAINTAINER_pn-qemu-helper-native = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-qemu = "green"
-DEPENDENCY_CHECK_pn-qemu = "not done"
-RECIPE_LATEST_VERSION_pn-qemu = "0.12.4"
+RECIPE_DEPENDENCY_CHECK_pn-qemu = "not done"
+RECIPE_LATEST_VERSION_pn-qemu = "0.13.0"
RECIPE_NO_OF_PATCHES_pn-qemu = "12"
RECIPE_INTEL_SECTION_pn-qemu = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-qemu = "3 months"
-RECIPE_LATEST_RELEASE_DATE_pn-qemu = "05/2010"
+RECIPE_LATEST_RELEASE_DATE_pn-qemu = "10/2010"
RECIPE_COMMENTS_pn-qemu = ""
+RECIPE_LAST_UPDATE_pn-qemu = "Jan 15, 2011"
RECIPE_MAINTAINER_pn-qemu = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-qemu-helper-nativesdk = "green"
-DEPENDENCY_CHECK_pn-qemu-helper-nativesdk = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-qemu-helper-nativesdk = "not done"
RECIPE_LATEST_VERSION_pn-qemu-helper-nativesdk = "r7"
RECIPE_NO_OF_PATCHES_pn-qemu-helper-nativesdk = "0"
RECIPE_INTEL_SECTION_pn-qemu-helper-nativesdk = "base utils"
@@ -1815,60 +1913,68 @@ RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-qemu-helper-nativesdk = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-qemu-helper-nativesdk = "n/a"
RECIPE_COMMENTS_pn-qemu-helper-nativesdk = ""
DISTRO_PN_ALIAS_pn-qemu-helper-nativesdk = "OpenedHand"
+RECIPE_LAST_UPDATE_pn-qemu-helper-nativesdk = "Sep 17, 2009"
RECIPE_MAINTAINER_pn-qemu-helper-nativesdk = "Scott Garman <scott.a.garman@intel.com>"
RECIPE_STATUS_pn-at = "green"
-DEPENDENCY_CHECK_pn-at = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-at = "not done"
RECIPE_LATEST_VERSION_pn-at = "3.1.12"
RECIPE_INTEL_SECTION_pn-at = "base"
RECIPE_NO_OF_PATCHES_pn-at = "3"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-at = "13 months"
RECIPE_LATEST_RELEASE_DATE_pn-at = "11/2009"
+RECIPE_LAST_UPDATE_pn-at = "Jul 23, 2010"
RECIPE_MAINTAINER_pn-at = "Scott Garman <scott.a.garman@intel.com>"
RECIPE_STATUS_pn-cpio = "green"
-DEPENDENCY_CHECK_pn-cpio = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-cpio = "not done"
RECIPE_LATEST_VERSION_pn-cpio = "2.11"
RECIPE_INTEL_SECTION_pn-cpio = "base"
RECIPE_NO_OF_PATCHES_pn-cpio = "0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-cpio = "9 months"
RECIPE_LATEST_RELEASE_DATE_pn-cpio = "03/2010"
+RECIPE_LAST_UPDATE_pn-cpio = "Sep 25, 2010"
RECIPE_MAINTAINER_pn-cpio = "Scott Garman <scott.a.garman@intel.com>"
RECIPE_STATUS_pn-cronie = "green"
-DEPENDENCY_CHECK_pn-cronie = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-cronie = "not done"
RECIPE_LATEST_VERSION_pn-cronie = "1.4.4"
+RECIPE_MANUAL_CHECK_DATE_pn-cronie = "Jan 28, 2011"
RECIPE_INTEL_SECTION_pn-cronie = "base"
RECIPE_NO_OF_PATCHES_pn-cronie = "0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-cronie = "3 months"
RECIPE_LATEST_RELEASE_DATE_pn-cronie = "02/2010"
+RECIPE_LAST_UPDATE_pn-cronie = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-cronie = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-grep = "green"
-DEPENDENCY_CHECK_pn-grep = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-grep = "not done"
RECIPE_LATEST_VERSION_pn-grep = "2.7"
RECIPE_INTEL_SECTION_pn-grep = "base"
RECIPE_NO_OF_PATCHES_pn-grep = "0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-grep = "5 months"
RECIPE_LATEST_RELEASE_DATE_pn-grep = "09/2010"
+RECIPE_LAST_UPDATE_pn-grep = "Sep 24, 2010"
RECIPE_MAINTAINER_pn-grep = "Scott Garman <scott.a.garman@intel.com>"
RECIPE_STATUS_pn-openssh = "red"
-DEPENDENCY_CHECK_pn-openssh = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-openssh = "not done"
RECIPE_LATEST_VERSION_pn-openssh = "5.6p1"
RECIPE_INTEL_SECTION_pn-openssh = "base"
RECIPE_NO_OF_PATCHES_pn-openssh = "1"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-openssh = "4 months"
RECIPE_LATEST_RELEASE_DATE_pn-openssh = "08/2010"
+RECIPE_LAST_UPDATE_pn-openssh = "Aug 31, 2010"
RECIPE_MAINTAINER_pn-openssh = "Scott Garman <scott.a.garman@intel.com>"
RECIPE_STATUS_pn-tar = "green"
-DEPENDENCY_CHECK_pn-tar = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-tar = "not done"
RECIPE_LATEST_VERSION_pn-tar = "1.25"
RECIPE_INTEL_SECTION_pn-tar = "base"
RECIPE_NO_OF_PATCHES_pn-tar = "2"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-tar = "2 weeks"
RECIPE_LATEST_RELEASE_DATE_pn-tar = "11/2010"
+RECIPE_LAST_UPDATE_pn-tar = "Nov 17, 2010"
RECIPE_MAINTAINER_pn-tar = "Scott Garman <scott.a.garman@intel.com>"
RECIPE_STATUS_pn-lrzsz="yellow" # patch investigation needed.
@@ -1876,6 +1982,8 @@ RECIPE_LATEST_VERSION_pn-lrzsz="0.12.20"
RECIPE_NO_OF_PATCHES_pn-lrzsz="3"
RECIPE_LATEST_RELEASE_DATE_pn-lrzsz="1998/12/31"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-lrzsz="12 months"
+RECIPE_LAST_UPDATE_pn-lrzsz = "Jul 21, 2006"
+RECIPE_MANUAL_CHECK_DATE_pn-lrzsz = "Jan 30, 2011"
RECIPE_MAINTAINER_pn-lrzsz = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-wireless-tools="yellow" # patch investigation needed
@@ -1883,6 +1991,8 @@ RECIPE_LATEST_VERSION_pn-wireless-tools="29"
RECIPE_NO_OF_PATCHES_pn-wireless-tools="3"
RECIPE_LATEST_RELEASE_DATE_pn-wireless-tools="2007/09/18"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-wireless-tools="18 months"
+RECIPE_LAST_UPDATE_pn-wireless-tools = "Oct 19, 2007"
+RECIPE_MANUAL_CHECK_DATE_pn-wireless-tools = "Jan 30, 2011"
RECIPE_MAINTAINER_pn-wireless-tools = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-bluez-dtl1-workaround="yellow" # LICENSE double check
@@ -1890,6 +2000,7 @@ RECIPE_LATEST_VERSION_pn-bluez-dtl1-workaround="1.0"
RECIPE_NO_OF_PATCHES_pn-bluez-dtl1-workaround="0"
RECIPE_LATEST_RELEASE_DATE_pn-bluez-dtl1-workaround="n/a"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-bluez-dtl1-workaround="n/a"
+RECIPE_LAST_UPDATE_pn-bluez-dtl1-workaround = "Aug 29, 2007"
RECIPE_MAINTAINER_pn-bluez-dtl1-workaround = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-irda-utils="green"
@@ -1897,15 +2008,17 @@ RECIPE_LATEST_VERSION_pn-irda-utils="0.9.18"
RECIPE_NO_OF_PATCHES_pn-irda-utils="0"
RECIPE_LATEST_RELEASE_DATE_pn-irda-utils="2006/07/10"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-irda-utils="4 months"
+RECIPE_LAST_UPDATE_pn-irda-utils = "Jun 25, 2010"
RECIPE_MAINTAINER_pn-irda-utils = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-bluez4="green"
DISTRO_PN_ALIAS_pn-bluez4="Meego=bluz Fedora=bluz Ubuntu=bluz OpenSuSE=bluz Mandriva=bluz"
-RECIPE_LATEST_VERSION_pn-bluez4="4.79"
+RECIPE_LATEST_VERSION_pn-bluez4="4.82"
RECIPE_NO_OF_PATCHES_pn-bluez4="2"
-RECIPE_LATEST_RELEASE_DATE_pn-bluez4="2010/11/08"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-bluez4="2 days"
+RECIPE_LATEST_RELEASE_DATE_pn-bluez4="2010/12/18"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-bluez4="20 days"
DISTRO_PN_ALIAS_pn-bluez4= "Fedora=bluez Ubuntu=bluez Debian=bluez-utils Opensuse=bluez"
+RECIPE_LAST_UPDATE_pn-bluez4 = "Dec 30, 2010"
RECIPE_MAINTAINER_pn-bluez4 = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libpcap="green"
@@ -1913,6 +2026,7 @@ RECIPE_LATEST_VERSION_pn-libpcap="1.1.1"
RECIPE_NO_OF_PATCHES_pn-libpcap="2"
RECIPE_LATEST_RELEASE_DATE_pn-libpcap="2010/04/05"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libpcap="2 months"
+RECIPE_LAST_UPDATE_pn-libpcap = "Jun 30, 2010"
RECIPE_MAINTAINER_pn-libpcap = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-wpa-supplicant="green"
@@ -1921,6 +2035,7 @@ RECIPE_LATEST_VERSION_pn-wpa-supplicant="0.7.3"
RECIPE_NO_OF_PATCHES_pn-wpa-supplicant="0"
RECIPE_LATEST_RELEASE_DATE_pn-wpa-supplicant="2010/09/07"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-wpa-supplicant="5 months"
+RECIPE_LAST_UPDATE_pn-wpa-supplicant = "Aug 26, 2010"
RECIPE_MAINTAINER_pn-wpa-supplicant = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-ppp="green"
@@ -1928,6 +2043,7 @@ RECIPE_LATEST_VERSION_pn-ppp="2.4.5"
RECIPE_NO_OF_PATCHES_pn-ppp="5"
RECIPE_LATEST_RELEASE_DATE_pn-ppp="2009/11/17"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-ppp="4 years"
+RECIPE_LAST_UPDATE_pn-ppp = "Jul 1, 2010"
RECIPE_MAINTAINER_pn-ppp = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libproxy="green"
@@ -1935,40 +2051,49 @@ RECIPE_LATEST_VERSION_pn-libproxy="0.4.6"
RECIPE_NO_OF_PATCHES_pn-libproxy="1"
RECIPE_LATEST_RELEASE_DATE_pn-libproxy="2010/09/01"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libproxy="10 days"
+RECIPE_LAST_UPDATE_pn-libproxy = "Nov 16, 2010"
+RECIPE_MANUAL_CHECK_DATE_pn-libproxy = "Jan 30, 2011"
RECIPE_MAINTAINER_pn-libproxy = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-connman = "green"
DISTRO_PN_ALIAS_pn-connman = "Meego=connman"
-RECIPE_LATEST_VERSION_pn-connman = "0.63"
+RECIPE_LATEST_VERSION_pn-connman = "0.65"
RECIPE_NO_OF_PATCHES_pn-connman="2"
-RECIPE_LATEST_RELEASE_DATE_pn-connman="2010/11/04"
+RECIPE_LATEST_RELEASE_DATE_pn-connman="2010/12/24"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-connman="1 month"
+RECIPE_LAST_UPDATE_pn-connman = "Dec 30, 2010"
RECIPE_MAINTAINER_pn-connman = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-connman-gnome = "green"
RECIPE_LATEST_VERSION_pn-connman-gnome = "0.5"
-RECIPE_NO_OF_PATCHES_pn-connman-gnome="1"
+RECIPE_NO_OF_PATCHES_pn-connman-gnome="3"
RECIPE_LATEST_RELEASE_DATE_pn-connman-gnome="n/a"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-connman-gnome="n/a"
+RECIPE_LAST_UPDATE_pn-connman-gnome = "Dec 30, 2010"
RECIPE_MAINTAINER_pn-connman-gnome = "Dongxiao Xu <dongxiao.xu@intel.com>"
DISTRO_PN_ALIAS_pn-connman-gnome = "Intel"
RECIPE_STATUS_pn-empathy = "red"
RECIPE_LATEST_VERSION_pn-empathy = "2.31.2"
+RECIPE_LAST_UPDATE_pn-empathy = "Aug 19, 2009"
RECIPE_MAINTAINER_pn-empathy = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-gupnp = "green"
-RECIPE_LATEST_VERSION_pn-gupnp = "0.14.0"
+RECIPE_LATEST_VERSION_pn-gupnp = "0.15.1"
RECIPE_NO_OF_PATCHES_pn-gupnp= "1"
RECIPE_LATEST_RELEASE_DATE_pn-gupnp= "2010/09/16"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gupnp= "1 month"
+RECIPE_LAST_UPDATE_pn-gupnp = "Dec 7, 2010"
+RECIPE_MANUAL_CHECK_DATE_pn-gupnp = "Jan 30, 2011"
RECIPE_MAINTAINER_pn-gupnp= "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-gupnp-av = "green"
-RECIPE_LATEST_VERSION_pn-gupnp-av = "0.7.0"
+RECIPE_LATEST_VERSION_pn-gupnp-av = "0.7.1"
RECIPE_NO_OF_PATCHES_pn-gupnp-av= "0"
RECIPE_LATEST_RELEASE_DATE_pn-gupnp-av= "2010/11/08"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gupnp-av= "15 days"
+RECIPE_LAST_UPDATE_pn-gupnp-av = "Nov 25, 2010"
+RECIPE_MANUAL_CHECK_DATE_pn-gupnp-av = "Jan 30, 2011"
RECIPE_MAINTAINER_pn-gupnp-av = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-gupnp-tools = "green"
@@ -1976,68 +2101,90 @@ RECIPE_LATEST_VERSION_pn-gupnp-tools = "0.8.1"
RECIPE_NO_OF_PATCHES_pn-gupnp-tools = "0"
RECIPE_LATEST_RELEASE_DATE_pn-gupnp-tools = "2010/09/16"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gupnp-tools = "3 month"
+RECIPE_LAST_UPDATE_pn-gupnp-tools = "Nov 25, 2010"
+RECIPE_MANUAL_CHECK_DATE_pn-gupnp-tools = "Jan 30, 2011"
RECIPE_MAINTAINER_pn-gupnp-tools = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libopensync = "red"
RECIPE_LATEST_VERSION_pn-libopensync = "0.39"
+RECIPE_LAST_UPDATE_pn-libopensync = "Oct 17, 2008"
RECIPE_MAINTAINER_pn-libopensync = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libopensync-plugin-evolution2 = "red"
RECIPE_LATEST_VERSION_pn-libopensync-plugin-evolution2 = "0.39"
+RECIPE_LAST_UPDATE_pn-libopensync-plugin-evolution2 = "Jun 18, 2008"
RECIPE_MAINTAINER_pn-libopensync-plugin-evolution2 = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libopensync-plugin-google-calendar = "red"
RECIPE_LATEST_VERSION_pn-libopensync-plugin-google-calendar = "0.39"
+RECIPE_LAST_UPDATE_pn-libopensync-plugin-google-calendar = "Jun 18, 2008"
RECIPE_MAINTAINER_pn-libopensync-plugin-google-calendar = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libopensync-plugin-irmc = "red"
RECIPE_LATEST_VERSION_pn-libopensync-plugin-irmc = "0.39"
+RECIPE_LAST_UPDATE_pn-libopensync-plugin-irmc = "Jun 18, 2008"
RECIPE_MAINTAINER_pn-libopensync-plugin-irmc = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libopensync-plugin-syncml = "red"
RECIPE_LATEST_VERSION_pn-libopensync-plugin-syncml = "0.39"
+RECIPE_LAST_UPDATE_pn-libopensync-plugin-syncml = "Jul 31, 2009"
RECIPE_MAINTAINER_pn-libopensync-plugin-syncml = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-ofono = "green"
-RECIPE_LATEST_VERSION_pn-ofono = "0.33"
+RECIPE_LATEST_VERSION_pn-ofono = "0.37"
RECIPE_NO_OF_PATCHES_pn-ofono="0"
-RECIPE_LATEST_RELEASE_DATE_pn-ofono="2010/10/25"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-ofono="5 days"
+RECIPE_LATEST_RELEASE_DATE_pn-ofono="2010/12/24"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-ofono="1 month"
+RECIPE_LAST_UPDATE_pn-ofono = "Dec 30, 2010"
RECIPE_MAINTAINER_pn-ofono = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libtelepathy = "red"
RECIPE_LATEST_VERSION_pn-libtelepathy = "0.3.3"
+RECIPE_LAST_UPDATE_pn-libtelepathy = "Jul 21, 2008"
RECIPE_MAINTAINER_pn-libtelepathy = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-telepathy-farsight = "red"
RECIPE_LATEST_VERSION_pn-telepathy-farsight = "0.0.14"
+RECIPE_LAST_UPDATE_pn-telepathy-farsight = "Aug 18, 2009"
RECIPE_MAINTAINER_pn-telepathy-farsight = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-telepathy-gabble = "red"
RECIPE_LATEST_VERSION_pn-telepathy-gabble = "0.9.11"
+RECIPE_LAST_UPDATE_pn-telepathy-gabble = "Aug 19, 2009"
RECIPE_MAINTAINER_pn-telepathy-gabble = "Dongxiao Xu <dongxiao.xu@intel.com>"
-RECIPE_STATUS_pn-telepathy-glib = "red"
-RECIPE_LATEST_VERSION_pn-telepathy-glib = "0.11.6"
+RECIPE_STATUS_pn-telepathy-glib = "green"
+RECIPE_NO_OF_PATCHES_pn-telepathy-glib ="0"
+RECIPE_LATEST_RELEASE_DATE_pn-telepathy-glib = "2010/11/17"
+RECIPE_LATEST_VERSION_pn-telepathy-glib = "0.13.6"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-telepathy-glib = "12 days"
+RECIPE_LAST_UPDATE_pn-telepathy-glib = "Dec 30, 2010"
RECIPE_MAINTAINER_pn-telepathy-glib = "Dongxiao Xu <dongxiao.xu@intel.com>"
-RECIPE_STATUS_pn-telepathy-idle = "red"
-RECIPE_LATEST_VERSION_pn-telepathy-idle = "0.1.6"
+RECIPE_STATUS_pn-telepathy-idle = "green"
+RECIPE_NO_OF_PATCHES_pn-telepathy-idle ="0"
+RECIPE_LATEST_RELEASE_DATE_pn-telepathy-glib ="2010/12/07"
+RECIPE_LATEST_VERSION_pn-telepathy-idle = "0.1.7"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-telepathy-idle = "10 months"
+RECIPE_LAST_UPDATE_pn-telepathy-idle = "Dec 30, 2010"
RECIPE_MAINTAINER_pn-telepathy-idle = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-telepathy-python = "green"
-RECIPE_LATEST_VERSION_pn-telepathy-python = "0.15.18"
+RECIPE_LATEST_VERSION_pn-telepathy-python = "0.15.19"
RECIPE_NO_OF_PATCHES_pn-telepathy-python="0"
-RECIPE_LATEST_RELEASE_DATE_pn-telepathy-python="2010/08/05"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-telepathy-python="5 months"
+RECIPE_LATEST_RELEASE_DATE_pn-telepathy-python="2010/12/03"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-telepathy-python="4 months"
+RECIPE_LAST_UPDATE_pn-telepathy-python = "Dec 30, 2010"
RECIPE_MAINTAINER_pn-telepathy-python = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-bluez-hcidump = "red"
RECIPE_LATEST_VERSION_pn-bluez-hcidump = "1.42"
+RECIPE_LAST_UPDATE_pn-bluez-hcidump = "Nov 7, 2008"
RECIPE_MAINTAINER_pn-bluez-hcidump = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-ppp-dialin = "red"
RECIPE_LATEST_VERSION_pn-ppp-dialin = "check"
+RECIPE_LAST_UPDATE_pn-ppp-dialin = "Jul 21, 2006"
RECIPE_MAINTAINER_pn-ppp-dialin = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libgsmd = "green"
@@ -2045,11 +2192,13 @@ RECIPE_LATEST_VERSION_pn-libgsmd = "5394"
RECIPE_LATEST_RELEASE_DATE_pn-libgsmd ="2009/08/06"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libgsmd="n/a"
DISTRO_PN_ALIAS_pn-libgsmd = "Fedora=gsm Ubuntu=libgsm Debian=libgsm Opensuse=libgsm"
+RECIPE_LAST_UPDATE_pn-libgsmd = "Nov 26, 2010"
RECIPE_MAINTAINER_pn-libgsmd = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-zeroconf = "red"
RECIPE_LATEST_VERSION_pn-zeroconf = "0.9"
DISTRO_PN_ALIAS_pn-zeroconf = "OSPDT upstream=http://www.progsoc.org/~wildfire/zeroconf/"
+RECIPE_LAST_UPDATE_pn-zeroconf = "Jul 21, 2006"
RECIPE_MAINTAINER_pn-zeroconf = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-gypsy="green"
@@ -2057,30 +2206,36 @@ RECIPE_LATEST_VERSION_pn-gypsy="0.8"
RECIPE_NO_OF_PATCHES_pn-gypsy="0"
RECIPE_LATEST_RELEASE_DATE_pn-gypsy="2010/06/09"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gypsy="10 months"
+RECIPE_LAST_UPDATE_pn-gypsy = "Nov 23, 2010"
RECIPE_MAINTAINER_pn-gypsy= "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libopensync-plugin-file = "red"
RECIPE_LATEST_VERSION_pn-libopensync-plugin-file = "0.39"
+RECIPE_LAST_UPDATE_pn-libopensync-plugin-file = "Oct 20, 2008"
RECIPE_MAINTAINER_pn-libopensync-plugin-file = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libopensync-plugin-vformat = "red"
RECIPE_LATEST_VERSION_pn-libopensync-plugin-vformat = "0.39"
+RECIPE_LAST_UPDATE_pn-libopensync-plugin-vformat = "Oct 20, 2008"
RECIPE_MAINTAINER_pn-libopensync-plugin-vformat = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libsyncml = "red"
RECIPE_LATEST_VERSION_pn-libsyncml = "0.5.4"
+RECIPE_LAST_UPDATE_pn-libsyncml = "Jul 31, 2009"
RECIPE_MAINTAINER_pn-libsyncml = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-telepathy-mission-control = "green"
-RECIPE_LATEST_VERSION_pn-telepathy-mission-control = "5.7.0"
+RECIPE_LATEST_VERSION_pn-telepathy-mission-control = "5.7.1"
RECIPE_NO_OF_PATCHES_pn-telepathy-mission-control ="0"
-RECIPE_LATEST_RELEASE_DATE_pn-telepathy-mission-control ="2010/11/18"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-telepathy-mission-control ="2 months"
+RECIPE_LATEST_RELEASE_DATE_pn-telepathy-mission-control ="2010/12/07"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-telepathy-mission-control ="20 days"
+RECIPE_LAST_UPDATE_pn-telepathy-mission-control = "Dec 30, 2010"
RECIPE_MAINTAINER_pn-telepathy-mission-control = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libetpan = "red"
RECIPE_LATEST_VERSION_pn-libetpan = "1.0"
+RECIPE_LAST_UPDATE_pn-libetpan = "May 13, 2008"
RECIPE_MAINTAINER_pn-libetpan = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-hostap-utils="yellow" # patch investigation needed; hostap-utils.inc is only included by one bb file.
@@ -2088,6 +2243,7 @@ RECIPE_LATEST_VERSION_pn-hostap-utils="0.4.7"
RECIPE_NO_OF_PATCHES_pn-hostap-utils="1"
RECIPE_LATEST_RELEASE_DATE_pn-hostap-utils="2008/12/03"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-hostap-utils="7 months"
+RECIPE_LAST_UPDATE_pn-hostap-utils = "Jun 28, 2007"
RECIPE_MAINTAINER_pn-hostap-utils = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-kexec-tools="green"
@@ -2095,14 +2251,17 @@ RECIPE_LATEST_VERSION_pn-kexec-tools="2.0.2"
RECIPE_NO_OF_PATCHES_pn-kexec-tools="1"
RECIPE_LATEST_RELEASE_DATE_pn-kexec-tools="2010/07/29"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-kexec-tools="1 year"
+RECIPE_LAST_UPDATE_pn-kexec-tools = "Nov 16, 2010"
RECIPE_MAINTAINER_pn-kexec-tools = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-hostap-conf = "red"
RECIPE_LATEST_VERSION_pn-hostap-conf = "1.0"
+RECIPE_LAST_UPDATE_pn-hostap-conf = "Jul 21, 2006"
RECIPE_MAINTAINER_pn-hostap-conf = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-orinoco-conf = "red"
RECIPE_LATEST_VERSION_pn-orinoco-conf = "1.0"
+RECIPE_LAST_UPDATE_pn-orinoco-conf = "Jul 21, 2006"
RECIPE_MAINTAINER_pn-orinoco-conf = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libical="green"
@@ -2110,6 +2269,7 @@ RECIPE_LATEST_VERSION_pn-libical="0.46"
RECIPE_NO_OF_PATCHES_pn-libical="0"
RECIPE_LATEST_RELEASE_DATE_pn-libical="2010/08/30"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libical="11 months"
+RECIPE_LAST_UPDATE_pn-libical = "Nov 16, 2010"
RECIPE_MAINTAINER_pn-libical = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-task-base="green"
@@ -2175,6 +2335,7 @@ RECIPE_LATEST_VERSION_pn-enchant="1.6.0"
RECIPE_NO_OF_PATCHES_pn-enchant="0"
RECIPE_LATEST_RELEASE_DATE_pn-enchant="2010/04/01"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-enchant="10 months"
+RECIPE_LAST_UPDATE_pn-enchant = "Aug 4, 2010"
RECIPE_MAINTAINER_pn-enchant = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-task-poky-sdk = "red"
@@ -2195,10 +2356,12 @@ RECIPE_MAINTAINER_pn-task-poky-standalone-sdk-target = "Dongxiao Xu <dongxiao.xu
RECIPE_STATUS_pn-xournal = "red"
RECIPE_LATEST_VERSION_pn-xournal = "0.4.5"
+RECIPE_LAST_UPDATE_pn-xournal = "May 27, 2006"
RECIPE_MAINTAINER_pn-xournal = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-wv = "red"
RECIPE_LATEST_VERSION_pn-wv = "1.2.1"
+RECIPE_LAST_UPDATE_pn-wv = "Jan 12, 2007"
RECIPE_MAINTAINER_pn-wv = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-poky-image-minimal = "green"
@@ -2241,9 +2404,10 @@ RECIPE_STATUS_pn-poky-image-lsb = "green"
RECIPE_LATEST_VERSION_pn-poky-image-lsb = "1.0"
RECIPE_MAINTAINER_pn-poky-image-lsb = "Dongxiao Xu <dongxiao.xu@intel.com>"
-RECIPE_STATUS_pn-poky-image-sdk = "green"
-RECIPE_LATEST_VERSION_pn-poky-image-sdk = "1.0"
-RECIPE_MAINTAINER_pn-poky-image-sdk = "Dongxiao Xu <dongxiao.xu@intel.com>"
+RECIPE_STATUS_pn-poky-sato-image-sdk = "green"
+RECIPE_LATEST_VERSION_pn-poky-image-sato-sdk = "1.0"
+RECIPE_MAINTAINER_pn-poky-image-sato-sdk = "Dongxiao Xu <dongxiao.xu@intel.com>"
+DISTRO_PN_ALIAS_pn-poky-image-sdk = "Poky"
RECIPE_STATUS_pn-task-poky = "green"
RECIPE_LATEST_VERSION_pn-task-poky = "1.0"
@@ -2273,13 +2437,15 @@ RECIPE_STATUS_pn-poky-image-core = "green"
RECIPE_LATEST_VERSION_pn-poky-image-core = "1.0"
RECIPE_MAINTAINER_pn-poky-image-core = "Dongxiao Xu <dongxiao.xu@intel.com>"
-RECIPE_STATUS_pn-poky-image-sdk-live = "green"
-RECIPE_LATEST_VERSION_pn-poky-image-sdk-live = "1.0"
-RECIPE_MAINTAINER_pn-poky-image-sdk-live = "Dongxiao Xu <dongxiao.xu@intel.com>"
+RECIPE_STATUS_pn-poky-image-sato-sdk-live = "green"
+RECIPE_LATEST_VERSION_pn-poky-image-sato-sdk-live = "1.0"
+RECIPE_MAINTAINER_pn-poky-image-sato-sdk-live = "Dongxiao Xu <dongxiao.xu@intel.com>"
+DISTRO_PN_ALIAS_pn-poky-image-sato-sdk-live = "Poky"
-RECIPE_STATUS_pn-poky-image-sdk-directdisk = "green"
-RECIPE_LATEST_VERSION_pn-poky-image-sdk-directdisk = "1.0"
-RECIPE_MAINTAINER_pn-poky-image-sdk-directdisk = "Dongxiao Xu <dongxiao.xu@intel.com>"
+RECIPE_STATUS_pn-poky-image-sato-sdk-directdisk = "green"
+RECIPE_LATEST_VERSION_pn-poky-image-sato-sdk-directdisk = "1.0"
+RECIPE_MAINTAINER_pn-poky-image-sato-sdk-directdisk = "Dongxiao Xu <dongxiao.xu@intel.com>"
+DISTRO_PN_ALIAS_pn-poky-image-sato-sdk-directdisk = "Poky"
RECIPE_STATUS_pn-liba52="yellow" # patch investigation needed
DISTRO_PN_ALIAS_pn-liba52 = "Mandriva=a52dec Debian=a52dec"
@@ -2287,6 +2453,8 @@ RECIPE_LATEST_VERSION_pn-liba52="0.7.4"
RECIPE_NO_OF_PATCHES_pn-liba52="1"
RECIPE_LATEST_RELEASE_DATE_pn-liba52="2002/07/27"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-liba52="5 months"
+RECIPE_LAST_UPDATE_pn-liba52 = "Sep 1, 2006"
+RECIPE_MANUAL_CHECK_DATE_pn-liba52 = "Jan 30, 2011"
RECIPE_MAINTAINER_pn-liba52 = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libid3tag="yellow" # patch investigation needed
@@ -2294,6 +2462,7 @@ RECIPE_LATEST_VERSION_pn-libid3tag="0.15.1b"
RECIPE_NO_OF_PATCHES_pn-libid3tag="1"
RECIPE_LATEST_RELEASE_DATE_pn-libid3tag="2004/02/18"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libid3tag="8 months"
+RECIPE_LAST_UPDATE_pn-libid3tag = "Oct 19, 2007"
RECIPE_MAINTAINER_pn-libid3tag = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-flac="green"
@@ -2301,6 +2470,7 @@ RECIPE_LATEST_VERSION_pn-flac="1.2.1"
RECIPE_NO_OF_PATCHES_pn-flac="3"
RECIPE_LATEST_RELEASE_DATE_pn-flac="2007/09/16"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-flac="2 months"
+RECIPE_LAST_UPDATE_pn-flac = "Jun 26, 2010"
RECIPE_MAINTAINER_pn-flac = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libvorbis="green"
@@ -2308,36 +2478,41 @@ RECIPE_LATEST_VERSION_pn-libvorbis="1.3.2"
RECIPE_NO_OF_PATCHES_pn-libvorbis="0"
RECIPE_LATEST_RELEASE_DATE_pn-libvorbis="2010/11/01"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libvorbis="7 months"
+RECIPE_LAST_UPDATE_pn-libvorbis = "Nov 15, 2010"
RECIPE_MAINTAINER_pn-libvorbis = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libogg="green"
-RECIPE_LATEST_VERSION_pn-libogg="1.2.1"
+RECIPE_LATEST_VERSION_pn-libogg="1.2.2"
RECIPE_NO_OF_PATCHES_pn-libogg="0"
-RECIPE_LATEST_RELEASE_DATE_pn-libogg="2010/11/02"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libogg="7 months"
+RECIPE_LATEST_RELEASE_DATE_pn-libogg="2010/12/07"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libogg="1 months"
+RECIPE_LAST_UPDATE_pn-libogg = "Dec 30, 2010"
RECIPE_MAINTAINER_pn-libogg = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-gstreamer="green"
-RECIPE_LATEST_VERSION_pn-gstreamer="0.10.30"
+RECIPE_LATEST_VERSION_pn-gstreamer="0.10.31"
RECIPE_NO_OF_PATCHES_pn-gstreamer="2"
-RECIPE_LATEST_RELEASE_DATE_pn-gstreamer="2010/07/15"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gstreamer="3 month"
+RECIPE_LATEST_RELEASE_DATE_pn-gstreamer="2010/11/30"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gstreamer="4 month"
+RECIPE_LAST_UPDATE_pn-gstreamer = "Dec 30, 2010"
RECIPE_MAINTAINER_pn-gstreamer = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-gst-plugins-base="green"
DISTRO_PN_ALIAS_pn-gst-plugins-base = "Meego=gst-plugins-base Fedora=gstreamer-plugins-base OpenSuSE=gstreamer-plugins-base Ubuntu=gst-plugins-base0.10 Mandriva=gstreamer0.10-plugins-base Debian=gst-plugins-base0.10"
-RECIPE_LATEST_VERSION_pn-gst-plugins-base="0.10.30"
+RECIPE_LATEST_VERSION_pn-gst-plugins-base="0.10.31"
RECIPE_NO_OF_PATCHES_pn-gst-plugins-base="0"
-RECIPE_LATEST_RELEASE_DATE_pn-gst-plugins-base="2010/07/15"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gst-plugins-base="3 months"
+RECIPE_LATEST_RELEASE_DATE_pn-gst-plugins-base="2010/11/30"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gst-plugins-base="4 months"
+RECIPE_LAST_UPDATE_pn-gst-plugins-base = "Dec 30, 2010"
RECIPE_MAINTAINER_pn-gst-plugins-base = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-gst-plugins-good="green"
DISTRO_PN_ALIAS_pn-gst-plugins-good = "Meego=gst-plugins-good Fedora=gstreamer-plugins-good OpenSuSE=gstreamer-plugins-good Ubuntu=gst-plugins-good0.10 Mandriva=gstreamer0.10-plugins-good Debian=gst-plugins-good0.10"
-RECIPE_LATEST_VERSION_pn-gst-plugins-good="0.10.25"
+RECIPE_LATEST_VERSION_pn-gst-plugins-good="0.10.26"
RECIPE_NO_OF_PATCHES_pn-gst-plugins-good="0"
-RECIPE_LATEST_RELEASE_DATE_pn-gst-plugins-good="2010/09/02"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gst-plugins-good="2 month"
+RECIPE_LATEST_RELEASE_DATE_pn-gst-plugins-good="2010/12/01"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gst-plugins-good="3 month"
+RECIPE_LAST_UPDATE_pn-gst-plugins-good = "Dec 30, 2010"
RECIPE_MAINTAINER_pn-gst-plugins-good = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-gst-plugins-ugly="green"
@@ -2346,6 +2521,7 @@ RECIPE_LATEST_VERSION_pn-gst-plugins-ugly="0.10.16"
RECIPE_NO_OF_PATCHES_pn-gst-plugins-ugly="0"
RECIPE_LATEST_RELEASE_DATE_pn-gst-plugins-ugly="2010/09/02"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gst-plugins-ugly="3 months"
+RECIPE_LAST_UPDATE_pn-gst-plugins-ugly = "Nov 12, 2010"
RECIPE_MAINTAINER_pn-gst-plugins-ugly = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-gst-plugins-bad="green"
@@ -2354,6 +2530,7 @@ RECIPE_LATEST_VERSION_pn-gst-plugins-bad="0.10.20"
RECIPE_NO_OF_PATCHES_pn-gst-plugins-bad="0"
RECIPE_LATEST_RELEASE_DATE_pn-gst-plugins-bad="2010/09/02"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gst-plugins-bad="3 months"
+RECIPE_LAST_UPDATE_pn-gst-plugins-bad = "Nov 12, 2010"
RECIPE_MAINTAINER_pn-gst-plugins-bad = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-alsa-utils="green"
@@ -2361,6 +2538,7 @@ RECIPE_LATEST_VERSION_pn-alsa-utils="1.0.23"
RECIPE_NO_OF_PATCHES_pn-alsa-utils="1"
RECIPE_LATEST_RELEASE_DATE_pn-alsa-utils="2010/04/16"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-alsa-utils="4 months"
+RECIPE_LAST_UPDATE_pn-alsa-utils = "Jun 26, 2010"
RECIPE_MAINTAINER_pn-alsa-utils = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-alsa-lib="green"
@@ -2368,13 +2546,15 @@ RECIPE_LATEST_VERSION_pn-alsa-lib="1.0.23"
RECIPE_NO_OF_PATCHES_pn-alsa-lib="1"
RECIPE_LATEST_RELEASE_DATE_pn-alsa-lib="2010/04/16"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-alsa-lib="4 months"
+RECIPE_LAST_UPDATE_pn-alsa-lib = "Jun 26, 2010"
RECIPE_MAINTAINER_pn-alsa-lib = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-tremor="green"
-RECIPE_LATEST_VERSION_pn-tremor="20101027"
+RECIPE_LATEST_VERSION_pn-tremor="20101121"
RECIPE_NO_OF_PATCHES_pn-tremor="0"
-RECIPE_LATEST_RELEASE_DATE_pn-tremor="2010/10/27"
+RECIPE_LATEST_RELEASE_DATE_pn-tremor="2010/11/21"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-tremor="n/a"
+RECIPE_LAST_UPDATE_pn-tremor = "Dec 30, 2010"
RECIPE_MAINTAINER_pn-tremor = "Dongxiao Xu <dongxiao.xu@intel.com>"
DISTRO_PN_ALIAS_pn-tremor = "OSPDT upstream=http://www.xiph.org/vorbis/"
@@ -2383,6 +2563,7 @@ RECIPE_LATEST_VERSION_pn-gaku="0.0+svnr399"
RECIPE_NO_OF_PATCHES_pn-gaku="0"
RECIPE_LATEST_RELEASE_DATE_pn-gaku="2008/07/03"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gaku="n/a"
+RECIPE_LAST_UPDATE_pn-gaku = "Jun 26, 2010"
RECIPE_MAINTAINER_pn-gaku = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-xvideo-tests="green"
@@ -2390,6 +2571,7 @@ RECIPE_LATEST_VERSION_pn-xvideo-tests="0.0+svnr270"
RECIPE_NO_OF_PATCHES_pn-xvideo-tests="0"
RECIPE_LATEST_RELEASE_DATE_pn-xvideo-tests="2007/06/22"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xvideo-tests="n/a"
+RECIPE_LAST_UPDATE_pn-xvideo-tests = "Jun 26, 2010"
RECIPE_MAINTAINER_pn-xvideo-tests = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-speex="green"
@@ -2397,6 +2579,7 @@ RECIPE_LATEST_VERSION_pn-speex="1.2rc1"
RECIPE_NO_OF_PATCHES_pn-speex="0"
RECIPE_LATEST_RELEASE_DATE_pn-speex="2008/07/24"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-speex="8 months"
+RECIPE_LAST_UPDATE_pn-speex = "Jun 29, 2010"
RECIPE_MAINTAINER_pn-speex = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libmusicbrainz="green"
@@ -2404,30 +2587,18 @@ RECIPE_LATEST_VERSION_pn-libmusicbrainz="3.0.3"
RECIPE_NO_OF_PATCHES_pn-libmusicbrainz="0"
RECIPE_LATEST_RELEASE_DATE_pn-libmusicbrainz="2010/09/27"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libmusicbrainz="2 years"
+RECIPE_LAST_UPDATE_pn-libmusicbrainz = "Nov 16, 2010"
RECIPE_MAINTAINER_pn-libmusicbrainz = "Dongxiao Xu <dongxiao.xu@intel.com>"
-RECIPE_STATUS_pn-clutter-gst-0.10 = "red"
-DISTRO_PN_ALIAS_pn-clutter-gst-0.10 = "OpenSuSE=clutter-gst Debian=clutter-gst"
-RECIPE_LATEST_VERSION_pn-clutter-gst-0.10 = "0.10.0+git0+8a087fabc888a6a4a939760c392109dbb610adbf"
-RECIPE_MAINTAINER_pn-clutter-gst-0.10 = "Dongxiao Xu <dongxiao.xu@intel.com>"
-
-RECIPE_STATUS_pn-clutter-gst-0.6 = "red"
-DISTRO_PN_ALIAS_pn-clutter-gst-0.6 = "OpenSuSE=clutter-gst Debian=clutter-gst"
-RECIPE_LATEST_VERSION_pn-clutter-gst-0.6 = "0.6.0+git0+1c3dc539057dbcd6dd75f2cb5b4ba39b741892bd"
-RECIPE_MAINTAINER_pn-clutter-gst-0.6 = "Dongxiao Xu <dongxiao.xu@intel.com>"
-
-RECIPE_STATUS_pn-clutter-gst-0.8 = "red"
-DISTRO_PN_ALIAS_pn-clutter-gst-0.8 = "OpenSuSE=clutter-gst Debian=clutter-gst"
-RECIPE_LATEST_VERSION_pn-clutter-gst-0.8 = "0.8.0+git0+7a60a435fb0930d911e26158928ab53bda090f3e"
-RECIPE_MAINTAINER_pn-clutter-gst-0.8 = "Dongxiao Xu <dongxiao.xu@intel.com>"
-
RECIPE_STATUS_pn-clutter-gst-1.0 = "red"
DISTRO_PN_ALIAS_pn-clutter-gst-1.0 = "OpenSuSE=clutter-gst Debian=clutter-gst"
RECIPE_LATEST_VERSION_pn-clutter-gst-1.0 = "0.11.0+git0+d48c6fc67b48304f90e51b520631c1ecc10410af"
+RECIPE_LAST_UPDATE_pn-clutter-gst = "Feb 4, 2010"
RECIPE_MAINTAINER_pn-clutter-gst-1.0 = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-farsight2 = "red"
RECIPE_LATEST_VERSION_pn-farsight2 = "0.0.20"
+RECIPE_LAST_UPDATE_pn-farsight2 = "Aug 19, 2009"
RECIPE_MAINTAINER_pn-farsight2 = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-gst-openmax = "green"
@@ -2435,6 +2606,7 @@ RECIPE_LATEST_VERSION_pn-gst-openmax = "0.10.1"
RECIPE_NO_OF_PATCHES_pn-gst-openmax = "0"
RECIPE_LATEST_RELEASE_DATE_pn-gst-openmax = "2010/10/01"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gst-openmax= "18 months"
+RECIPE_LAST_UPDATE_pn-gst-openmax = "Nov 25, 2010"
RECIPE_MAINTAINER_pn-gst-openmax = "Dongxiao Xu <dongxiao.xu@intel.com>"
DISTRO_PN_ALIAS_pn-gst-openmax="OSPDT upstream=http://cgit.freedesktop.org/gstreamer/gst-openmax"
@@ -2444,22 +2616,21 @@ RECIPE_LATEST_VERSION_pn-gst-ffmpeg = "0.10.11"
RECIPE_NO_OF_PATCHES_pn-gst-ffmpeg = "1"
RECIPE_LATEST_RELEASE_DATE_pn-gst-ffmpeg = "2010/07/15"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gst-ffmpeg = "4 months"
+RECIPE_LAST_UPDATE_pn-gst-ffmpeg = "Dec 14, 2010"
RECIPE_MAINTAINER_pn-gst-ffmpeg = "Dongxiao Xu <dongxiao.xu@intel.com>"
-RECIPE_STATUS_pn-alsa-oss = "red"
-RECIPE_LATEST_VERSION_pn-alsa-oss = "1.0.17"
-RECIPE_MAINTAINER_pn-alsa-oss = "Dongxiao Xu <dongxiao.xu@intel.com>"
-
RECIPE_STATUS_pn-libsndfile1 = "red"
DISTRO_PN_ALIAS_pn-libsndfile1 = "Meego=libsndfile Fedora=libsndfile OpenSuSE=libsndfile Ubuntu=libsndfile Mandriva=libsndfile Debian=libsndfile"
RECIPE_LATEST_VERSION_pn-libsndfile1 = "1.0.21 "
+RECIPE_LAST_UPDATE_pn-libsndfile1 = "Nov 11, 2010"
RECIPE_MAINTAINER_pn-libsndfile1 = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-pulseaudio = "green"
-RECIPE_LATEST_VERSION_pn-pulseaudio = "0.9.21"
+RECIPE_LATEST_VERSION_pn-pulseaudio = "0.9.22"
RECIPE_NO_OF_PATCHES_pn-pulseaudio = "5"
-RECIPE_LATEST_RELEASE_DATE_pn-pulseaudio = "2009/10/23"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-pulseaudio = "12 days"
+RECIPE_LATEST_RELEASE_DATE_pn-pulseaudio = "2010/11/26"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-pulseaudio = "1 year"
+RECIPE_LAST_UPDATE_pn-pulseaudio = "Dec 30, 2010"
RECIPE_MAINTAINER_pn-pulseaudio = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-taglib = "green"
@@ -2467,10 +2638,13 @@ RECIPE_LATEST_VERSION_pn-taglib = "1.6.3"
RECIPE_NO_OF_PATCHES_pn-taglib = "2"
RECIPE_LATEST_RELEASE_DATE_pn-taglib = "2010/04/19"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-taglib = "10 days"
+RECIPE_LAST_UPDATE_pn-taglib = "Nov 16, 2010"
+RECIPE_MANUAL_CHECK_DATE_pn-taglib = "Jan 30, 2011"
RECIPE_MAINTAINER_pn-taglib = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-libnice = "red"
RECIPE_LATEST_VERSION_pn-libnice = "0.0.12"
+RECIPE_LAST_UPDATE_pn-libnice = "Aug 19, 2009"
RECIPE_MAINTAINER_pn-libnice = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-gst-fluendo-mp3 = "green"
@@ -2478,6 +2652,7 @@ RECIPE_LATEST_VERSION_pn-gst-fluendo-mp3 = "0.10.15"
RECIPE_NO_OF_PATCHES_pn-gst-fluendo-mp3 = "1"
RECIPE_LATEST_RELEASE_DATE_pn-gst-fluendo-mp3 = "2010/10/21"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gst-fluendo-mp3 = "3 months"
+RECIPE_LAST_UPDATE_pn-gst-fluendo-mp3 = "Dec 7, 2010"
RECIPE_MAINTAINER_pn-gst-fluendo-mp3 = "Dongxiao Xu <dongxiao.xu@intel.com>"
DISTRO_PN_ALIAS_pn-gst-fluendo-mp3 = "Debian=gstreamer0.10-fluendo-mp3 Ubuntu=gstreamer0.10-fluendo-mp3"
@@ -2486,32 +2661,37 @@ RECIPE_LATEST_VERSION_pn-gst-fluendo-mpegdemux = "0.10.20"
RECIPE_NO_OF_PATCHES_pn-gst-fluendo-mpegdemux = "0"
RECIPE_LATEST_RELEASE_DATE_pn-gst-fluendo-mpegdemux = "2010/10/20"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gst-fluendo-mpegdemux = "1 months"
+RECIPE_LAST_UPDATE_pn-gst-fluendo-mpegdemux = "Dec 7, 2010"
RECIPE_MAINTAINER_pn-gst-fluendo-mpegdemux = "Dongxiao Xu <dongxiao.xu@intel.com>"
DISTRO_PN_ALIAS_pn-gst-fluendo-mpegdemux = "Ubuntu=gstreamer0.10-fluendo-mpegdemux Debian=gstreamer0.10-fluendo-mpegdemux"
RECIPE_STATUS_pn-libomxil = "red"
RECIPE_LATEST_VERSION_pn-libomxil = "0.9.2.1"
+RECIPE_LAST_UPDATE_pn-libomxil = "Jan 11, 2008"
RECIPE_MAINTAINER_pn-libomxil = "Dongxiao Xu <dongxiao.xu@intel.com>"
DISTRO_PN_ALIAS_pn-libomxil = "OSPDT upstream=http://omxil.sourceforge.net/"
RECIPE_STATUS_pn-libsamplerate0 = "red"
DISTRO_PN_ALIAS_pn-libsamplerate0 = "Meego=libsamplerate Fedora=libsamplerate OpenSuSE=libsamplerate Ubuntu=libsamplerate Mandriva=libsamplerate Debian=libsamplerate"
RECIPE_LATEST_VERSION_pn-libsamplerate0 = "0.1.7"
+RECIPE_LAST_UPDATE_pn-libsamplerate0 = "Nov 22, 2010"
+RECIPE_MANUAL_CHECK_DATE_pn-libsamplerate0 = "Jan 30, 2011"
RECIPE_MAINTAINER_pn-libsamplerate0 = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-oprofileui = "green"
DISTRO_PN_ALIAS_pn-oprofileui = "Fedora=oprofileui Ubuntu=oprofile-gui Debian=oprofile-gui"
-DEPENDENCY_CHECK_pn-oprofileui = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-oprofileui = "not done"
RECIPE_LATEST_VERSION_pn-oprofileui = "0.0+svnr197"
RECIPE_NO_OF_PATCHES_pn-oprofileui = "0"
RECIPE_INTEL_SECTION_pn-oprofileui = "sdk-tools"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-oprofileui = "13 days"
RECIPE_LATEST_RELEASE_DATE_pn-oprofileui = "07/2008"
RECIPE_COMMENTS_pn-oprofileui = ""
+RECIPE_LAST_UPDATE_pn-oprofileui = "Jul 20, 2010"
RECIPE_MAINTAINER_pn-oprofileui = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-oprofile = "green"
-DEPENDENCY_CHECK_pn-oprofile = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-oprofile = "not done"
RECIPE_LATEST_VERSION_pn-oprofile = "0.9.6"
RECIPE_NO_OF_PATCHES_pn-oprofile = "1"
RECIPE_PATCH_pn-oprofile+opstart = "The opstart/opstop programs"
@@ -2519,35 +2699,40 @@ RECIPE_INTEL_SECTION_pn-oprofile = "sdk-tools"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-oprofile = "4 months"
RECIPE_LATEST_RELEASE_DATE_pn-oprofile = "Nov 24, 2009"
RECIPE_COMMENTS_pn-oprofile = ""
+RECIPE_LAST_UPDATE_pn-oprofile = "Jun 22, 2010"
RECIPE_MAINTAINER_pn-oprofile = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-powertop = "green"
DISTRO_PN_ALIAS_pn-powertop ="Meego=powertop Fedora=powertop Debian=powertop OpenSuSE=powertop Mandriva=powertop"
-DEPENDENCY_CHECK_pn-powertop = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-powertop = "not done"
RECIPE_LATEST_VERSION_pn-powertop = "1.13"
+RECIPE_MANUAL_CHECK_DATE_pn-powertop = "Jan 28, 2011"
RECIPE_NO_OF_PATCHES_pn-powertop = "1"
RECIPE_PATCH_pn-powertop+stub_out_the_ncurses_calls_in_dump_mode = "stub out the ncurses calls in dump mode; this fixes a segfault"
RECIPE_INTEL_SECTION_pn-powertop = "sdk-tools"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-powertop = "11 months"
RECIPE_LATEST_RELEASE_DATE_pn-powertop = "07/2010"
RECIPE_COMMENTS_pn-powertop = ""
+RECIPE_LAST_UPDATE_pn-powertop = "Aug 27, 2010"
RECIPE_MAINTAINER_pn-powertop = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-latencytop = "green"
DISTRO_PN_ALIAS_pn-latencytop = "Meego=latencytop Fedora=latencytop Debian=latencytop OpenSuSE=latencytop"
-DEPENDENCY_CHECK_pn-latencytop = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-latencytop = "not done"
RECIPE_LATEST_VERSION_pn-latencytop = "0.5"
+RECIPE_MANUAL_CHECK_DATE_pn-latencytop = "Jan 28, 2011"
RECIPE_NO_OF_PATCHES_pn-latencytop = "1"
RECIPE_PATCH_pn-latencytop+latencytop-makefile = "-lncursesw ==> -lncurses; gcc ==> CC ?= gcc, and use $(CC); install:mkdir -p $(DESTDIR)/$(SBINDIR)"
RECIPE_INTEL_SECTION_pn-latencytop = "sdk-tools"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-latencytop = "1 year"
RECIPE_LATEST_RELEASE_DATE_pn-latencytop = "04/2009"
RECIPE_COMMENTS_pn-latencytop = ""
+RECIPE_LAST_UPDATE_pn-latencytop = "Jul 22, 2010"
RECIPE_MAINTAINER_pn-latencytop = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-tcf-agent = "green"
DISTRO_PN_ALIAS_pn-tcf-agent = "WindRiver upstream=http://www.eclipse.org/dsdp/tm/"
-DEPENDENCY_CHECK_pn-tcf-agent = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-tcf-agent = "not done"
RECIPE_LATEST_VERSION_pn-tcf-agent = "0.3.0+svnr1078"
RECIPE_NO_OF_PATCHES_pn-tcf-agent = "2"
RECIPE_PATCH_pn-tcf-agent+terminals_agent = "we might get the patch from git://git.pokylinux.org/eclipse-poky.git in future"
@@ -2556,122 +2741,161 @@ RECIPE_INTEL_SECTION_pn-tcf-agent = "sdk-tools"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-tcf-agent = "1+ years"
RECIPE_LATEST_RELEASE_DATE_pn-tcf-agent = "07/2010"
RECIPE_COMMENTS_pn-tcf-agent = ""
+RECIPE_LAST_UPDATE_pn-tcf-agent = "Jul 23, 2010"
RECIPE_MAINTAINER_pn-tcf-agent = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-liburcu = "green"
DISTRO_PN_ALIAS_pn-liburcu = "Fedora=userspace-rcu Ubuntu=liburcu0"
-DEPENDENCY_CHECK_pn-liburcu = "not done"
-RECIPE_LATEST_VERSION_pn-liburcu = "0.4.6"
+RECIPE_DEPENDENCY_CHECK_pn-liburcu = "not done"
+RECIPE_LATEST_VERSION_pn-liburcu = "0.5.2"
RECIPE_NO_OF_PATCHES_pn-liburcu = "0"
RECIPE_INTEL_SECTION_pn-liburcu = "libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-liburcu = "10 minutes"
-RECIPE_LATEST_RELEASE_DATE_pn-liburcu = "06/2010"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-liburcu = "29 minutes"
+RECIPE_LATEST_RELEASE_DATE_pn-liburcu = "Nov 18, 2010"
RECIPE_COMMENTS_pn-liburcu = ""
+RECIPE_LAST_UPDATE_pn-liburcu = "Jan 28, 2011"
RECIPE_MAINTAINER_pn-liburcu = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-lttng-ust = "green"
DISTRO_PN_ALIAS_pn-lttng-ust = "OSPDT upstream=http://lttng.org/"
-DEPENDENCY_CHECK_pn-lttng-ust = "not done"
-RECIPE_LATEST_VERSION_pn-lttng-ust = "0.7"
+RECIPE_DEPENDENCY_CHECK_pn-lttng-ust = "not done"
+RECIPE_LATEST_VERSION_pn-lttng-ust = "0.11"
RECIPE_NO_OF_PATCHES_pn-lttng-ust = "0"
RECIPE_INTEL_SECTION_pn-lttng-ust = "sdk-tools"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-lttng-ust = "4 days"
-RECIPE_LATEST_RELEASE_DATE_pn-lttng-ust = "Aug 20, 2010"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-lttng-ust = "12+ hours"
+RECIPE_LATEST_RELEASE_DATE_pn-lttng-ust = "Jan 14, 2011"
RECIPE_COMMENTS_pn-lttng-ust = ""
+RECIPE_LAST_UPDATE_pn-lttng-ust = "Jan 28, 2011"
RECIPE_MAINTAINER_pn-lttng-ust = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-lttng-control = "green"
DISTRO_PN_ALIAS_pn-lttng-control = "OSPDT upstream=http://lttng.org/"
-DEPENDENCY_CHECK_pn-lttng-control = "not done"
-RECIPE_LATEST_VERSION_pn-lttng-control = "0.87"
+RECIPE_DEPENDENCY_CHECK_pn-lttng-control = "not done"
+RECIPE_LATEST_VERSION_pn-lttng-control = "0.88-09242010"
RECIPE_NO_OF_PATCHES_pn-lttng-control = "0"
RECIPE_INTEL_SECTION_pn-lttng-control = "sdk-tools"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-lttng-control = "1 month"
-RECIPE_LATEST_RELEASE_DATE_pn-lttng-control = "06/2010"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-lttng-control = "3 months"
+RECIPE_LATEST_RELEASE_DATE_pn-lttng-control = "Sep 24, 2010"
RECIPE_COMMENTS_pn-lttng-control = ""
+RECIPE_LAST_UPDATE_pn-lttng-control = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-lttng-control = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-lttng-viewer = "green"
DISTRO_PN_ALIAS_pn-lttng-viewer = "OSPDT upstream=http://lttng.org/"
-DEPENDENCY_CHECK_pn-lttng-viewer = "not done"
-RECIPE_LATEST_VERSION_pn-lttng-viewer = "0.12.35"
+RECIPE_DEPENDENCY_CHECK_pn-lttng-viewer = "not done"
+RECIPE_LATEST_VERSION_pn-lttng-viewer = "0.12.36-18112010"
RECIPE_NO_OF_PATCHES_pn-lttng-viewer = "0"
RECIPE_INTEL_SECTION_pn-lttng-viewer = "sdk-tools"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-lttng-viewer = "6 days"
-RECIPE_LATEST_RELEASE_DATE_pn-lttng-viewer = "Aug 20, 2010"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-lttng-viewer = "3 months"
+RECIPE_LATEST_RELEASE_DATE_pn-lttng-viewer = "Nov 18, 2010"
RECIPE_COMMENTS_pn-lttng-viewer = ""
+RECIPE_LAST_UPDATE_pn-lttng-viewer = "Jan 28, 2011"
RECIPE_MAINTAINER_pn-lttng-viewer = "Dexuan Cui <dexuan.cui@intel.com>"
+RECIPE_STATUS_pn-blktrace = "red"
+RECIPE_LATEST_VERSION_pn-blktrace = "1.0.1"
+RECIPE_NO_OF_PATCHES_pn-blktrace = "1"
+RECIPE_PATCH_pn-blktrace+compile-fixes = "to be pushed upstream"
+RECIPE_INTEL_SECTION_pn-blktrace = "sdk-tools"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-blktrace = "n/a"
+RECIPE_LATEST_RELEASE_DATE_pn-blktrace = "12/2010"
+RECIPE_COMMENTS_pn-blktrace = ""
+RECIPE_LAST_UPDATE_pn-blktrace = "Dec 29, 2010"
+RECIPE_MAINTAINER_pn-blktrace = "Tom Zanussi <tom.zanussi@intel.com>"
+
+RECIPE_STATUS_pn-sysprof = "red"
+RECIPE_LATEST_VERSION_pn-sysprof = "1.1.6"
+RECIPE_NO_OF_PATCHES_pn-sysprof = "3"
+RECIPE_PATCH_pn-sysprof+ppc-macro-fix = "to be pushed upstream (from perf)"
+RECIPE_PATCH_pn-sysprof+rmb-arm = "to be pushed upstream (from perf)"
+RECIPE_PATCH_pn-sysprof+rmb-mips = "to be pushed upstream (from perf)"
+RECIPE_INTEL_SECTION_pn-sysprof = "sdk-tools"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-sysprof = "n/a"
+RECIPE_LATEST_RELEASE_DATE_pn-sysprof = "12/2010"
+RECIPE_COMMENTS_pn-sysprof = ""
+RECIPE_LAST_UPDATE_pn-sysprof = "Dec 8, 2010"
+RECIPE_MAINTAINER_pn-sysprof = "Tom Zanussi <tom.zanussi@intel.com>"
+
RECIPE_STATUS_pn-binutils="green"
RECIPE_LATEST_VERSION_pn-binutils="2.20.1"
+RECIPE_LAST_UPDATE_pn-binutils = "Jun 3, 2010"
RECIPE_MAINTAINER_pn-binutils = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-ldconfig-native = "red"
+RECIPE_LAST_UPDATE_pn-ldconfig-native = "Nov 23, 2007"
DISTRO_PN_ALIAS_pn-ldconfig-native = "Ubuntu=libc-bin Fedora=glibc"
-RECIPE_STATUS_pn-gcc="green"
-RECIPE_LATEST_VERSION_pn-gcc="4.5.1"
-RECIPE_NO_OF_PATCHES_pn-gcc="8"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gcc="5 months"
+RECIPE_STATUS_pn-gcc="red"
+RECIPE_LATEST_VERSION_pn-gcc="4.5.2"
RECIPE_LATEST_RELEASE_DATE_pn-gcc="2010/03/03"
+RECIPE_LAST_UPDATE_pn-gcc = "Nov 8, 2010"
RECIPE_MAINTAINER_pn-gcc = "Nitin A Kamble <nitin.a.kamble@intel.com>"
-RECIPE_STATUS_pn-autoconf="green"
+RECIPE_STATUS_pn-autoconf="red"
RECIPE_LATEST_VERSION_pn-autoconf="2.68"
+RECIPE_LAST_UPDATE_pn-autoconf = "Jan 29, 2010"
+RECIPE_NO_UPDATE_REASON_autoconf="seeing rpm issue with the 2.68 version, a bug is open"
RECIPE_MAINTAINER_pn-autoconf = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-automake="green"
RECIPE_LATEST_VERSION_pn-automake="1.11.1"
+RECIPE_LAST_UPDATE_pn-automake = "Jan 29, 2010"
RECIPE_MAINTAINER_pn-automake = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-bison="green"
RECIPE_LATEST_VERSION_pn-bison="2.4.3"
+RECIPE_LAST_UPDATE_pn-bison = "Nov 8, 2010"
RECIPE_MAINTAINER_pn-bison = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-diffstat="green"
RECIPE_LATEST_VERSION_pn-diffstat="1.54"
+RECIPE_LAST_UPDATE_pn-diffstat = "Nov 8, 2010"
RECIPE_MAINTAINER_pn-diffstat = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-distcc="green"
RECIPE_LATEST_VERSION_pn-distcc="2.18.3"
+RECIPE_LAST_UPDATE_pn-distcc = "Oct 28, 2006"
RECIPE_MAINTAINER_pn-distcc = "Nitin A Kamble <nitin.a.kamble@intel.com>"
-RECIPE_STATUS_pn-exmap-console="green" # o-hand code, website does not show any information
-RECIPE_LATEST_VERSION_pn-exmap-console="0.4.1"
-RECIPE_MAINTAINER_pn-exmap-console = "Nitin A Kamble <nitin.a.kamble@intel.com>"
-DISTRO_PN_ALIAS_pn-exmap-console = "OpenedHand"
-
RECIPE_STATUS_pn-flex="green"
RECIPE_LATEST_VERSION_pn-flex="2.5.35"
+RECIPE_LAST_UPDATE_pn-flex = "Jun 20, 2010"
RECIPE_MAINTAINER_pn-flex = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-fstests="green"
RECIPE_LATEST_VERSION_pn-fstests="0.0+svnr426"
DISTRO_PN_ALIAS_pn-fstests = "OpenedHand"
+RECIPE_LAST_UPDATE_pn-fstests = "Dec 7, 2010"
RECIPE_MAINTAINER_pn-fstests = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-gdb="green"
RECIPE_LATEST_VERSION_pn-gdb="7.2"
+RECIPE_LAST_UPDATE_pn-gdb = "Nov 8, 2010"
RECIPE_MAINTAINER_pn-gdb = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-intltool="green"
RECIPE_LATEST_VERSION_pn-intltool="0.40.6"
+RECIPE_LAST_UPDATE_pn-intltool = "Jun 21, 2010"
RECIPE_MAINTAINER_pn-intltool = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-libtool="green"
RECIPE_LATEST_VERSION_pn-libtool="2.4"
+RECIPE_LAST_UPDATE_pn-libtool = "Nov 8, 2010"
RECIPE_MAINTAINER_pn-libtool = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-linux-libc-headers="green"
RECIPE_LATEST_VERSION_pn-linux-libc-headers="2.6.36"
+RECIPE_LAST_UPDATE_pn-linux-libc-headers = "Nov 8, 2010"
RECIPE_MAINTAINER_pn-linux-libc-headers = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-lsof="green"
RECIPE_LATEST_VERSION_pn-lsof="4.84"
+RECIPE_LAST_UPDATE_pn-lsof = "Nov 8, 2010"
RECIPE_MAINTAINER_pn-lsof = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-make="green"
RECIPE_LATEST_VERSION_pn-make="3.82"
+RECIPE_LAST_UPDATE_pn-make = "Nov 8, 2010"
RECIPE_MAINTAINER_pn-make = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-run-postinsts="green" # all local code
@@ -2680,67 +2904,78 @@ RECIPE_MAINTAINER_pn-postinsts = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-nasm="green"
RECIPE_LATEST_VERSION_pn-nasm="2.07"
+RECIPE_MANUAL_CHECK_DATE_pn-nasm = "Jan 25, 2011"
RECIPE_MAINTAINER_pn-nasm = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-perl="red" # upgrade needed
RECIPE_LATEST_VERSION_pn-perl="5.12.1"
+RECIPE_LAST_UPDATE_pn-perl = "May 27, 2007"
RECIPE_MAINTAINER_pn-perl = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-prelink="red"
RECIPE_LATEST_VERSION_pn-prelink="1.0+git0+0x909470ee441237563d6236c505cb2d02ddc48704"
-RECIPE_MAINTAINER_pn-prelink = "Nitin A Kamble <nitin.a.kamble@intel.com>"
+RECIPE_LAST_UPDATE_pn-perl = "Jul 23, 2010"
+RECIPE_MAINTAINER_pn-prelink = "Mark Hatle <mark.hatle@windriver.com>"
-RECIPE_STATUS_pn-python-dbus="green"
+RECIPE_STATUS_pn-python-dbus="red"
RECIPE_LATEST_VERSION_pn-python-dbus="0.83.1"
+RECIPE_LAST_UPDATE_pn-python-dbus = "Jul 7, 2010"
RECIPE_MAINTAINER_pn-python-dbus = "Nitin A Kamble <nitin.a.kamble@intel.com>"
DISTRO_PN_ALIAS_pn-python-dbus = "Ubuntu=python-dbus Debian=python-dbus Mandriva=python-dbus"
-RECIPE_STATUS_pn-python-gst="green"
-RECIPE_LATEST_VERSION_pn-python-gst="0.10.19"
+RECIPE_STATUS_pn-python-gst="red"
+RECIPE_LATEST_VERSION_pn-python-gst="0.10.21"
DISTRO_PN_ALIAS_pn-python-gst = "OpenSuSE=python-gstreamer Ubuntu=gst0.10-python Debian=gst0.10-python"
+RECIPE_LAST_UPDATE_pn-python-gst = "Nov 8, 2010"
RECIPE_MAINTAINER_pn-python-gst = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-python-imaging="green"
RECIPE_LATEST_VERSION_pn-python-imaging="1.1.7"
-RECIPE_MAINTAINER_pnpython--imaging = "Nitin A Kamble <nitin.a.kamble@intel.com>"
+RECIPE_LAST_UPDATE_pn-python-imaging = "Jul 7, 2010"
+RECIPE_MAINTAINER_pnpython-imaging = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-python-pycurl="green"
RECIPE_LATEST_VERSION_pn-python-pycurl="7.19.0"
+RECIPE_LAST_UPDATE_pn-python-pycurl = "Mar 25, 2010"
RECIPE_MAINTAINER_pn-python-pycurl = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-python-pygobject="green"
DISTRO_PN_ALIAS_pn-python-pygobject = "Meego=pygobject2 Fedora=pygobject2 Ubuntu=pygobject Debian=pygobject"
RECIPE_LATEST_VERSION_pn-python-pygobject="2.27.0"
+RECIPE_LAST_UPDATE_pn-python-pygobject = "Dec 9, 2010"
RECIPE_MAINTAINER_pn-python-pygobject = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-python-pygtk="red"
DISTRO_PN_ALIAS_pn-python-pygtk = "Debian=python-gtk2 Fedora=pygtk2 OpenSuSE=python-gtk"
RECIPE_LATEST_VERSION_pn-python-pygtk="2.17.0"
+RECIPE_LAST_UPDATE_pn-python-pygtk = "Jul 7, 2010"
RECIPE_MAINTAINER_pn-python-pygtk = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-python-pyrex="green"
RECIPE_LATEST_VERSION_pn-python-pyrex="0.9.9"
+RECIPE_LAST_UPDATE_pn-python-pyrex = "Jul 7, 2010"
RECIPE_MAINTAINER_pn-python-pyrex = "Nitin A Kamble <nitin.a.kamble@intel.com>"
DISTRO_PN_ALIAS_pn-python-pyrex = "Mandriva=python-pyrex Ubuntu=python-pyrex"
RECIPE_STATUS_pn-python-scons="green"
RECIPE_LATEST_VERSION_pn-python-scons="2.0.1"
DISTRO_PN_ALIAS_pn-python-scons = "Fedora=scons OpenSuSE=scons Ubuntu=scons Mandriva=scons Debian=scons"
+RECIPE_LAST_UPDATE_pn-python-scons = "Nov 8, 2010"
RECIPE_MAINTAINER_pn-python-scons = "Nitin A Kamble <nitin.a.kamble@intel.com>"
-RECIPE_STATUS_pn-python="green"
-RECIPE_LATEST_VERSION_pn-python="2.6.6"
-RECIPE_NO_OF_PATCHES_pn-python="8"
-RECIPE_LATEST_RELEASE_DATE_pn-python="2010/03/18"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-python="5 months"
+RECIPE_STATUS_pn-python="red"
+RECIPE_LATEST_VERSION_pn-python="2.7.1"
+RECIPE_LAST_UPDATE_pn-python = "Nov 8, 2010"
RECIPE_MAINTAINER_pn-python = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-quilt="green"
RECIPE_LATEST_VERSION_pn-quilt="0.48"
+RECIPE_LAST_UPDATE_pn-quilt = "Jun 22, 2010"
RECIPE_MAINTAINER_pn-quilt = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-tcl="green"
RECIPE_LATEST_VERSION_pn-tcl="8.5.9"
+RECIPE_LAST_UPDATE_pn-tcl = "Dec 1, 2010"
RECIPE_MAINTAINER_pn-tcl = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-unifdef="green" # poky local source files
@@ -2750,46 +2985,56 @@ RECIPE_MAINTAINER_pn-unifdef = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-gnu-config="green"
RECIPE_LATEST_VERSION_pn-gnu-config="0.0+git3155524"
DISTRO_PN_ALIAS_pn-gnu-config = "OpenedHand"
+RECIPE_LAST_UPDATE_pn-gnu-config = "Jun 21, 2010"
RECIPE_MAINTAINER_pn-gnu-config = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-mpfr="green"
RECIPE_LATEST_VERSION_pn-mpfr="3.0.0"
+RECIPE_MANUAL_CHECK_DATE_pn-mpfr = "Jan 25, 2011"
RECIPE_MAINTAINER_pn-mpfr = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-gmp="green"
RECIPE_LATEST_VERSION_pn-gmp="5.0.1"
+RECIPE_LAST_UPDATE_pn-gmp = "Aug 27, 2010"
RECIPE_MAINTAINER_pn-gmp = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-libmpc="green"
RECIPE_LATEST_VERSION_pn-libmpc="0.8.2"
+RECIPE_MANUAL_CHECK_DATE_pn-libmpc = "Jan 25, 2011"
RECIPE_MAINTAINER_pn-libmpc = "Nitin A Kamble <nitin.a.kamble@intel.com>"
DISTRO_PN_ALIAS_pn-libmpc = "Fedora=libmpc OpenSuse=libmpc2"
-RECIPE_STATUS_pn-byacc="green"
-RECIPE_LATEST_VERSION_pn-byacc="20100610"
+RECIPE_STATUS_pn-byacc="red"
+RECIPE_LATEST_VERSION_pn-byacc="20101229"
RECIPE_MAINTAINER_pn-byacc = "Nitin A Kamble <nitin.a.kamble@intel.com>"
-RECIPE_STATUS_pn-libconvert-asn1-perl="green" # 0.22 version does not build, so created a recipe for version 0.21
+RECIPE_STATUS_pn-libconvert-asn1-perl="green"
+# 0.22 version does not build, so created a recipe for version 0.21
RECIPE_LATEST_VERSION_pn-libconvert-asn1-perl="0.22"
+RECIPE_NO_UPDATE_REASON_pn-libconvert-asn1-perl = "0.22 version does not build, so created a recipe for version 0.21"
+RECIPE_LAST_UPDATE_pn-libconvert-asn1-perl = "Aug 13, 2010"
RECIPE_MAINTAINER_pn-libconvert-asn1-perl = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-libxml-parser-perl="green"
RECIPE_LATEST_VERSION_pn-libxml-parser-perl="2.36"
+RECIPE_LAST_UPDATE_pn-libxml-parser-perl = "Nov 18, 2009"
RECIPE_MAINTAINER_pn-libxml-parser-perl = "Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_STATUS_pn-cmake-native="green"
RECIPE_LATEST_VERSION_pn-cmake-native="2.8.3"
RECIPE_LATEST_RELEASE_DATE_pn-cmake-native="2010/11/03"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-cmake-native="4 month"
+RECIPE_LAST_UPDATE_pn-cmake-native = "Nov 23, 2010"
RECIPE_MAINTAINER_pn-cmake-native = "Dongxiao Xu <dongxiao.xu@intel.com>"
RECIPE_STATUS_pn-m4="green"
RECIPE_LATEST_VERSION_pn-m4="1.4.15"
+RECIPE_LAST_UPDATE_pn-m4 = "Nov 23, 2010"
RECIPE_MAINTAINER_pn-m4="Nitin A Kamble <nitin.a.kamble@intel.com>"
RECIPE_COMMENTS_pn-m4= "Dongxiao Xu <dongxiao.xu@intel.com> will own GPLv2 m4"
RECIPE_STATUS_pn-owl-video = "green" # no update needed
-DEPENDENCY_CHECK_pn-owl-video = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-owl-video = "not done"
RECIPE_LATEST_VERSION_pn-owl-video = "0.0+svnr394"
RECIPE_NO_OF_PATCHES_pn-owl-video = "0"
RECIPE_INTEL_SECTION_pn-owl-video = "graphic apps"
@@ -2800,43 +3045,48 @@ RECIPE_MAINTAINER_pn-owl-video = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-xtscal = "green" # no update needed
DISTRO_PN_ALIAS_pn-xtscal = "OSPDT upstream=http://gpe.linuxtogo.org/download/source/"
-DEPENDENCY_CHECK_pn-xtscal = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-xtscal = "not done"
RECIPE_LATEST_VERSION_pn-xtscal = "0.6.3"
RECIPE_NO_OF_PATCHES_pn-xtscal = "2"
RECIPE_INTEL_SECTION_pn-xtscal = "graphic apps"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xtscal = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-xtscal = "06/2006"
RECIPE_COMMENTS_pn-xtscal = ""
+RECIPE_LAST_UPDATE_pn-xtscal = "Jul 21, 2006"
RECIPE_MAINTAINER_pn-xtscal = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-xrestop = "green" # no update needed
-DEPENDENCY_CHECK_pn-xrestop = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-xrestop = "not done"
RECIPE_LATEST_VERSION_pn-xrestop = "0.4"
+RECIPE_MANUAL_CHECK_DATE_pn-xrestop = "Nov 18, 2010"
RECIPE_NO_OF_PATCHES_pn-xrestop = "0"
RECIPE_INTEL_SECTION_pn-xrestop = "graphic apps"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xrestop = "18 months"
RECIPE_LATEST_RELEASE_DATE_pn-xrestop = "03/2006"
RECIPE_COMMENTS_pn-xrestop = ""
+RECIPE_LAST_UPDATE_pn-xrestop = "Dec 21, 2007"
RECIPE_MAINTAINER_pn-xrestop = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-pcmanfm = "green"
-DEPENDENCY_CHECK_pn-pcmanfm = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-pcmanfm = "not done"
RECIPE_LATEST_VERSION_pn-pcmanfm = "0.9.8"
RECIPE_NO_OF_PATCHES_pn-pcmanfm = "4"
RECIPE_INTEL_SECTION_pn-pcmanfm = "graphic apps"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-pcmanfm = "5 months"
RECIPE_LATEST_RELEASE_DATE_pn-pcmanfm = "10/2010"
RECIPE_COMMENTS_pn-pcmanfm = ""
+RECIPE_LAST_UPDATE_pn-pcmanfm = "Nov 19, 2010"
RECIPE_MAINTAINER_pn-pcmanfm = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-oh-puzzles = "green" # no update needed
-DEPENDENCY_CHECK_pn-oh-puzzles = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-oh-puzzles = "not done"
RECIPE_LATEST_VERSION_pn-oh-puzzles = "0.1+svnr23"
RECIPE_NO_OF_PATCHES_pn-oh-puzzles = "1"
RECIPE_INTEL_SECTION_pn-oh-puzzles = "graphic apps"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-oh-puzzles = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-oh-puzzles = "04/2008"
RECIPE_COMMENTS_pn-oh-puzzles = ""
+RECIPE_LAST_UPDATE_pn-oh-puzzles = "Apr 8, 2008"
RECIPE_MAINTAINER_pn-oh-puzzles = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-gnome-terminal = "red"
@@ -2845,75 +3095,85 @@ RECIPE_MAINTAINER_pn-gnome-terminal = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-puzzles = "red"
DISTRO_PN_ALIAS_pn-puzzles = "Debian=sgt-puzzles"
-RECIPE_LATEST_VERSION_pn-puzzles = "r9034"
+RECIPE_LATEST_VERSION_pn-puzzles = "r9076"
+RECIPE_MANUAL_CHECK_DATE_pn-puzzles = "Jan 06, 2011"
+RECIPE_LAST_UPDATE_pn-puzzles = "Jan 06, 2011"
RECIPE_MAINTAINER_pn-puzzles = "Edwin Zhai <edwin.zhai@intel.com>"
DISTRO_PN_ALIAS_pn-puzzles = "Debian=sgt-puzzles Fedora=puzzles"
-RECIPE_STATUS_pn-x11perf = "red"
-RECIPE_LATEST_VERSION_pn-x11perf = "1.5.1"
+RECIPE_STATUS_pn-x11perf = "green"
+RECIPE_LATEST_VERSION_pn-x11perf = "1.5.2"
+RECIPE_LAST_UPDATE_pn-x11perf = "Nov 30, 2010"
RECIPE_MAINTAINER_pn-x11perf = "Edwin Zhai <edwin.zhai@intel.com>"
DISTRO_PN_ALIAS_pn-x11perf = "Fedora=xorg-x11-apps Ubuntu=x11-apps"
RECIPE_STATUS_pn-xbacklight = "red"
RECIPE_LATEST_VERSION_pn-xbacklight = "1.1.1"
+RECIPE_LAST_UPDATE_pn-xbacklight = "Aug 24, 2009"
RECIPE_MAINTAINER_pn-xbacklight = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-xev = "red"
RECIPE_LATEST_VERSION_pn-xev = "1.0.4"
+RECIPE_LAST_UPDATE_pn-xev = "Mar 28, 2008"
RECIPE_MAINTAINER_pn-xev = "Edwin Zhai <edwin.zhai@intel.com>"
DISTRO_PN_ALIAS_pn-xev = "Fedora=xorg-x11-utils Ubuntu=x11-utils"
RECIPE_STATUS_pn-xeyes = "red"
RECIPE_LATEST_VERSION_pn-xeyes = "1.1.0"
+RECIPE_LAST_UPDATE_pn-xeyes = "Nov 5, 2008"
RECIPE_MAINTAINER_pn-xeyes = "Edwin Zhai <edwin.zhai@intel.com>"
DISTRO_PN_ALIAS_pn-xeyes = "Ubuntu=x11-apps Fedora=xorg-x11-apps"
RECIPE_STATUS_pn-xrdb = "red"
RECIPE_LATEST_VERSION_pn-xrdb = "1.0.6"
+RECIPE_LAST_UPDATE_pn-xrdb = "Mar 28, 2008"
RECIPE_MAINTAINER_pn-xrdb = "Edwin Zhai <edwin.zhai@intel.com>"
DISTRO_PN_ALIAS_pn-xrdb = "Ubuntu=x11-xserver-utils Fedora=xorg-x11-server-utils"
-RECIPE_STATUS_pn-xvinfo = "red"
-RECIPE_LATEST_VERSION_pn-xvinfo = "1.1.0"
+RECIPE_STATUS_pn-xvinfo = "green"
+RECIPE_LATEST_VERSION_pn-xvinfo = "1.1.1"
+RECIPE_LAST_UPDATE_pn-xvinfo = "Dec 31, 2010"
RECIPE_MAINTAINER_pn-xvinfo = "Edwin Zhai <edwin.zhai@intel.com>"
DISTRO_PN_ALIAS_pn-xvinfo = "Fedora=xorg-x11-utils Ubuntu=x11-utils"
RECIPE_STATUS_pn-claws-plugin-gtkhtml2-viewer = "red"
DISTRO_PN_ALIAS_pn-claws-plugin-gtkhtml2-viewer = "Fedora=claws-mail-plugins OpenSuSE=claws-mail-extra-plugins Debian=claws-mail-extra-plugins"
RECIPE_LATEST_VERSION_pn-claws-plugin-gtkhtml2-viewer = "0.27"
+RECIPE_LAST_UPDATE_pn-claws-plugin-gtkhtml2-viewer = "May 9, 2007"
RECIPE_MAINTAINER_pn-claws-plugin-gtkhtml2-viewer = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-claws-plugin-maildir = "red"
DISTRO_PN_ALIAS_pn-claws-plugin-maildir = "Fedora=claws-mail-plugins OpenSuSE=claws-mail-extra-plugins Debian=claws-mail-extra-plugins"
RECIPE_LATEST_VERSION_pn-claws-plugin-maildir = "0.24.4"
+RECIPE_LAST_UPDATE_pn-claws-plugin-maildir = "Apr 25, 2007"
RECIPE_MAINTAINER_pn-claws-plugin-maildir = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-claws-plugin-mailmbox = "red"
DISTRO_PN_ALIAS_pn-claws-plugin-mailmbox = "Fedora=claws-mail-plugins OpenSuSE=claws-mail-extra-plugins Debian=claws-mail-extra-plugins"
RECIPE_LATEST_VERSION_pn-claws-plugin-mailmbox = "1.14.4"
+RECIPE_LAST_UPDATE_pn-claws-plugin-mailmbox = "May 10, 2007"
RECIPE_MAINTAINER_pn-claws-plugin-mailmbox = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-claws-plugin-rssyl = "red"
DISTRO_PN_ALIAS_pn-claws-plugin-rssyl = "Fedora=claws-mail-plugins OpenSuSE=claws-mail-extra-plugins Debian=claws-mail-extra-plugins"
RECIPE_LATEST_VERSION_pn-claws-plugin-rssyl = "0.27"
+RECIPE_LAST_UPDATE_pn-claws-plugin-rssyl = "May 10, 2007"
RECIPE_MAINTAINER_pn-claws-plugin-rssyl = "Edwin Zhai <edwin.zhai@intel.com>"
-RECIPE_STATUS_pn-lndir = "red"
-RECIPE_LATEST_VERSION_pn-lndir = "n/a"
-RECIPE_MAINTAINER_pn-lndir = "Edwin Zhai <edwin.zhai@intel.com>"
-DISTRO_PN_ALIAS_pn-lndir = "Mandriva=lndir Ubuntu=xutils-dev Fedora=imake"
-
RECIPE_STATUS_pn-kf = "red"
RECIPE_LATEST_VERSION_pn-kf = "n/a"
+RECIPE_LAST_UPDATE_pn-kf = "Sep 29, 2005"
RECIPE_MAINTAINER_pn-kf = "Edwin Zhai <edwin.zhai@intel.com>"
DISTRO_PN_ALIAS_pn-kf = "OSPDT"
RECIPE_STATUS_pn-claws-mail = "red"
RECIPE_LATEST_VERSION_pn-claws-mail = "3.7.6"
+RECIPE_LAST_UPDATE_pn-kf = "Apr 25, 2007"
RECIPE_MAINTAINER_pn-claws-mail = "Edwin Zhai <edwin.zhai@intel.com>"
-RECIPE_STATUS_pn-x11vnc = "red"
+RECIPE_STATUS_pn-x11vnc = "green"
RECIPE_LATEST_VERSION_pn-x11vnc = "0.9.12"
+RECIPE_LAST_UPDATE_pn-x11vnc = "Nov 30, 2010"
RECIPE_MAINTAINER_pn-x11vnc = "Edwin Zhai <edwin.zhai@intel.com>"
DISTRO_PN_ALIAS_pn-x11vnc = "Fedora=x11vnc Ubuntu=x11vnc"
@@ -2923,6 +3183,7 @@ RECIPE_NO_OF_PATCHES_pn-mkfontdir="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-mkfontdir="2009/10/11"
RECIPE_LATEST_RELEASE_DATE_pn-mkfontdir="16 monthes"
RECIPE_INTEL_SECTION_pn-mkfontdir="graphic apps"
+RECIPE_LAST_UPDATE_pn-mkfontdir = "Jan 18, 2011"
RECIPE_MAINTAINER_pn-mkfontdir="Yu Ke <ke.yu@intel.com>"
DISTRO_PN_ALIAS_pn-mkfontdir = "Mandriva=mkfontdir Ubuntu=xfonts-utils Fedora=xorg-x11-font-utils"
@@ -2932,6 +3193,7 @@ RECIPE_NO_OF_PATCHES_pn-mkfontscale="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-mkfontscale="10 monthes"
RECIPE_LATEST_RELEASE_DATE_pn-mkfontscale="2009/10/11"
RECIPE_INTEL_SECTION_pn-mkfontscale="graphic apps"
+RECIPE_LAST_UPDATE_pn-mkfontscale = "Jan 18, 2011"
RECIPE_MAINTAINER_pn-mkfontscale="Yu Ke <ke.yu@intel.com>"
DISTRO_PN_ALIAS_pn-mkfontscale = "Mandriva=mkfontscale Ubuntu=xfonts-utils Fedora=xorg-x11-font-utils"
@@ -2941,6 +3203,7 @@ RECIPE_NO_OF_PATCHES_pn-xauth="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xauth="1 year"
RECIPE_LATEST_RELEASE_DATE_pn-xauth="2010/09/24"
RECIPE_INTEL_SECTION_pn-xauth="graphic app"
+RECIPE_LAST_UPDATE_pn-xauth = "Nov 12, 2010"
RECIPE_MAINTAINER_pn-xauth="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-xdpyinfo="green" # no update needed
@@ -2949,6 +3212,7 @@ RECIPE_NO_OF_PATCHES_pn-xdpyinfo="1"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xdpyinfo="1 year"
RECIPE_LATEST_RELEASE_DATE_pn-xdpyinfo="2009/10/16"
RECIPE_INTEL_SECTION_pn-xdpyinfo="graphic app"
+RECIPE_LAST_UPDATE_pn-xdpyinfo = "Jan 18, 2011"
RECIPE_MAINTAINER_pn-xdpyinfo="Yu Ke <ke.yu@intel.com>"
DISTRO_PN_ALIAS_pn-xdpyinfo = "Fedora=xorg-x11-utils Ubuntu=x11-utils"
@@ -2958,6 +3222,7 @@ RECIPE_NO_OF_PATCHES_pn-xhost="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xhost="2 years"
RECIPE_LATEST_RELEASE_DATE_pn-xhost="2009/10/14"
RECIPE_INTEL_SECTION_pn-xhost="graphic app"
+RECIPE_LAST_UPDATE_pn-xhost = "Jan 18, 2011"
RECIPE_MAINTAINER_pn-xhost="Yu Ke <ke.yu@intel.com>"
DISTRO_PN_ALIAS_pn-xhost = "Ubuntu=x11-xserver-utils Fedora=xorg-x11-server-utils"
@@ -2967,6 +3232,7 @@ RECIPE_NO_OF_PATCHES_pn-xinit="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xinit="4 monthes"
RECIPE_LATEST_RELEASE_DATE_pn-xinit="2010/03/16"
RECIPE_INTEL_SECTION_pn-xinit="graphic app"
+RECIPE_LAST_UPDATE_pn-xinit = "Jan 18, 2011"
RECIPE_MAINTAINER_pn-xinit="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-xkbcomp="green" # no update needed
@@ -2975,6 +3241,7 @@ RECIPE_NO_OF_PATCHES_pn-xkbcomp="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xkbcomp="2 monthes"
RECIPE_LATEST_RELEASE_DATE_pn-xkbcomp="2009/10/03"
RECIPE_INTEL_SECTION_pn-xkbcomp="graphic app"
+RECIPE_LAST_UPDATE_pn-xkbcomp = "Jan 18, 2011"
RECIPE_MAINTAINER_pn-xkbcomp="Yu Ke <ke.yu@intel.com>"
DISTRO_PN_ALIAS_pn-xkbcomp = "Ubuntu=x11-xkb-utils Fedora=xorg-x11-xkb-utils"
@@ -2984,6 +3251,7 @@ RECIPE_NO_OF_PATCHES_pn-xmodmap="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xmodmap="2 years"
RECIPE_LATEST_RELEASE_DATE_pn-xmodmap="2010/09/24"
RECIPE_INTEL_SECTION_pn-xmodmap="graphic app"
+RECIPE_LAST_UPDATE_pn-xmodmap = "Nov 12, 2010"
RECIPE_MAINTAINER_pn-xmodmap="Yu Ke <ke.yu@intel.com>"
DISTRO_PN_ALIAS_pn-xmodmap = "Meego=xorg-x11-utils-xmodmap Fedora=xorg-x11-server-utils Ubuntu=x11-xserver-utils"
@@ -2993,6 +3261,7 @@ RECIPE_NO_OF_PATCHES_pn-xprop="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xprop="1 year"
RECIPE_LATEST_RELEASE_DATE_pn-xprop="2009/10/12"
RECIPE_INTEL_SECTION_pn-xprop="graphic app"
+RECIPE_LAST_UPDATE_pn-xprop = "Jan 18, 2011"
RECIPE_MAINTAINER_pn-xprop="Yu Ke <ke.yu@intel.com>"
DISTRO_PN_ALIAS_pn-xprop = "Meego=xorg-x11-utils-xprop Fedora=xorg-x11-utils Ubuntu=x11-utils"
@@ -3003,6 +3272,7 @@ RECIPE_NO_OF_PATCHES_pn-xset="1"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xset="1 year"
RECIPE_LATEST_RELEASE_DATE_pn-xset="2010/11/11"
RECIPE_INTEL_SECTION_pn-xset="graphic app"
+RECIPE_LAST_UPDATE_pn-xset = "Nov 12, 2010"
RECIPE_MAINTAINER_pn-xset="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-xwininfo="green" # no update needed
@@ -3011,6 +3281,7 @@ RECIPE_NO_OF_PATCHES_pn-xwininfo="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xwininfo="1 year"
RECIPE_LATEST_RELEASE_DATE_pn-xwininfo="2010/10/30"
RECIPE_INTEL_SECTION_pn-xwininfo="graphic app"
+RECIPE_LAST_UPDATE_pn-xwininfo = "Jan 18, 2011"
RECIPE_MAINTAINER_pn-xwininfo="Yu Ke <ke.yu@intel.com>"
DISTRO_PN_ALIAS_pn-xwininfo = "Fedora=xorg-x11-utils Ubuntu=x11-utils"
@@ -3020,6 +3291,7 @@ RECIPE_NO_OF_PATCHES_pn-xrandr="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xrandr="1 month"
RECIPE_LATEST_RELEASE_DATE_pn-xrandr="2009/09/10"
RECIPE_INTEL_SECTION_pn-xrandr="graphic app"
+RECIPE_LAST_UPDATE_pn-xrandr = "Nov 16, 2010"
RECIPE_MAINTAINER_pn-xrandr="Yu Ke <ke.yu@intel.com>"
DISTRO_PN_ALIAS_pn-xrandr = "Ubuntu=x11-xserver-utils Fedora=xorg-x11-server-utils"
@@ -3029,6 +3301,7 @@ RECIPE_NO_OF_PATCHES_pn-vte="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-vte="3 monthes"
RECIPE_LATEST_RELEASE_DATE_pn-vte="2010/07/12"
RECIPE_INTEL_SECTION_pn-vte="graphic app"
+RECIPE_LAST_UPDATE_pn-vte = "Jul 19, 2010"
RECIPE_MAINTAINER_pn-vte="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-qemugl="green" # no update needed
@@ -3037,6 +3310,8 @@ RECIPE_NO_OF_PATCHES_pn-qemugl="1"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-qemugl="n/a"
RECIPE_LATEST_RELEASE_DATE_pn-qemugl="2009/05/30"
RECIPE_INTEL_SECTION_pn-qemugl="graphic app"
+RECIPE_LAST_UPDATE_pn-qemugl = "Nov 28, 2010"
+RECIPE_NO_UPDATE_REASON_pn-qemugl = "Do not upgrade to version: 33466cd8 because the upstream is broken in x86_64 build"
RECIPE_MAINTAINER_pn-qemugl="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-fotowall="green" # no update needed
@@ -3046,6 +3321,7 @@ RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-fotowall="2 monthes"
RECIPE_LATEST_RELEASE_DATE_pn-fotowall="2009/12/08"
RECIPE_INTEL_SECTION_pn-fotowall="graphic app"
RECIPE_LATEST_VERSION_pn-fotowall=""
+RECIPE_LAST_UPDATE_pn-fotowall = "Aug 25, 2010"
RECIPE_MAINTAINER_pn-fotowall="Yu Ke <ke.yu@intel.com>"
DISTRO_PN_ALIAS_pn-fotowall = "Fedora=fotowall Ubuntu=fotowall"
@@ -3055,6 +3331,7 @@ RECIPE_NO_OF_PATCHES_pn-imake = "0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-imake = "1 month"
RECIPE_LATEST_RELEASE_DATE_pn-imake = "2010/04/16"
RECIPE_INTEL_SECTION_pn-imake = "graphic app"
+RECIPE_LAST_UPDATE_pn-imake = "Nov 21, 2010"
RECIPE_MAINTAINER_pn-imake = "Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-qt4-tools-native = "green" # no update needed
@@ -3063,6 +3340,7 @@ RECIPE_NO_OF_PATCHES_pn-qt4-tools-native = "3"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-qt4-tools-native = "4 monthes"
RECIPE_LATEST_RELEASE_DATE_pn-qt4-tools-native = "2010/06/02"
RECIPE_INTEL_SECTION_pn-qt4-tools-native = "graphic app"
+RECIPE_LAST_UPDATE_pn-qt4-tools-native = "Aug 25, 2010"
RECIPE_MAINTAINER_pn-qt4-tools-native = "Yu Ke <ke.yu@intel.com>"
DISTRO_PN_ALIAS_pn-qt4-tools-native = "Mandriva=libqt4-devel Ubuntu=libqt4-dev"
@@ -3072,6 +3350,7 @@ RECIPE_NO_OF_PATCHES_pn-quicky = "0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-quicky = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-quicky = "2008/06/18"
RECIPE_INTEL_SECTION_pn-quicky = "graphic app"
+RECIPE_LAST_UPDATE_pn-quicky = "Aug 25, 2010"
RECIPE_MAINTAINER_pn-quicky = "Yu Ke <ke.yu@intel.com>"
DISTRO_PN_ALIAS_pn-quicky = "OSPDT"
#
@@ -3085,6 +3364,7 @@ RECIPE_NO_OF_PATCHES_pn-bigreqsproto="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-bigreqsproto="3 years"
RECIPE_LATEST_RELEASE_DATE_pn-bigreqsproto="2009/08/26"
RECIPE_INTEL_SECTION_pn-bigreqsproto="graphic core"
+RECIPE_LAST_UPDATE_pn-bigreqsproto = "Jan 18, 2011"
RECIPE_MAINTAINER_pn-bigreqsproto="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-evieext="green" # no update needed
@@ -3094,6 +3374,7 @@ RECIPE_NO_OF_PATCHES_pn-evieext="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-evieext="3 years"
RECIPE_LATEST_RELEASE_DATE_pn-evieext="2009/08/26"
RECIPE_INTEL_SECTION_pn-evieext="graphic core"
+RECIPE_LAST_UPDATE_pn-evieext = "Feb 3, 2010"
RECIPE_MAINTAINER_pn-evieext="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-libxxf86dga="green" # no update needed
@@ -3102,6 +3383,7 @@ RECIPE_NO_OF_PATCHES_pn-libxxf86dga="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxxf86dga="1 month"
RECIPE_LATEST_RELEASE_DATE_pn-libxxf86dga="2009/10/06"
RECIPE_INTEL_SECTION_pn-libxxf86dga="graphic core"
+RECIPE_LAST_UPDATE_pn-libxxf86dga = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxxf86dga="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-x11-common="green" # no update needed
@@ -3110,6 +3392,7 @@ RECIPE_NO_OF_PATCHES_pn-x11-common="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-x11-common="n/a" # local file without release
RECIPE_LATEST_RELEASE_DATE_pn-x11-common="2008/09/22" # per poky git log
RECIPE_INTEL_SECTION_pn-x11-common="graphic core"
+RECIPE_LAST_UPDATE_pn-x11-common = "Sep 22, 2008"
RECIPE_MAINTAINER_pn-x11-common="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-xf86-input-keyboard="green" # no update needed
@@ -3119,6 +3402,7 @@ RECIPE_NO_OF_PATCHES_pn-xf86-input-keyboard="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xf86-input-keyboard="9 monthes"
RECIPE_LATEST_RELEASE_DATE_pn-xf86-input-keyboard="2009/10/07"
RECIPE_INTEL_SECTION_pn-xf86-input-keyboard="graphic core"
+RECIPE_LAST_UPDATE_pn-xf86-input-keyboard = "Jan 18, 2011"
RECIPE_MAINTAINER_pn-xf86-input-keyboard="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-xf86-input-mouse="green" # no update needed
@@ -3128,6 +3412,7 @@ RECIPE_NO_OF_PATCHES_pn-xf86-input-mouse="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xf86-input-mouse="9 monthes"
RECIPE_LATEST_RELEASE_DATE_pn-xf86-input-mouse="2010/09/09"
RECIPE_INTEL_SECTION_pn-xf86-input-mouse="graphic core"
+RECIPE_LAST_UPDATE_pn-xf86-input-mouse = "Nov 12, 2010"
RECIPE_MAINTAINER_pn-xf86-input-mouse="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-xf86-input-vmmouse="green" # update needed
@@ -3137,6 +3422,7 @@ RECIPE_NO_OF_PATCHES_pn-xf86-input-vmmouse="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xf86-input-vmmouse="1 month"
RECIPE_LATEST_RELEASE_DATE_pn-xf86-input-vmmouse="2010/08/10"
RECIPE_INTEL_SECTION_pn-xf86-input-vmmouse="graphic core"
+RECIPE_LAST_UPDATE_pn-xf86-input-vmmouse = "Nov 12, 2010"
RECIPE_MAINTAINER_pn-xf86-input-vmmouse="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-libdrm="green" # no update needed
@@ -3145,6 +3431,7 @@ RECIPE_NO_OF_PATCHES_pn-libdrm="1"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libdrm="1 month"
RECIPE_LATEST_RELEASE_DATE_pn-libdrm="2010/06/10"
RECIPE_INTEL_SECTION_pn-libdrm="graphic core"
+RECIPE_LAST_UPDATE_pn-libdrm = "Jan 18, 2011"
RECIPE_MAINTAINER_pn-libdrm="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-python-pycairo="green" # no upgrade needed
@@ -3154,6 +3441,7 @@ RECIPE_NO_OF_PATCHES_pn-python-pycairo="0"
RECIPE_LATEST_RELEASE_DATE_pn-python-pycairo="2010/05/20"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-python-pycairo="9 months"
RECIPE_INTEL_SECTION_pn-python-pycairo="graphic core"
+RECIPE_LAST_UPDATE_pn-python-pycairo = "Aug 16, 2010"
RECIPE_MAINTAINER_pn-python-pycairo="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-libxfontcache="green" # no update neededd
@@ -3162,6 +3450,7 @@ RECIPE_NO_OF_PATCHES_pn-libxfontcache="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxfontcache="3 years"
RECIPE_LATEST_RELEASE_DATE_pn-libxfontcache="2009/10/08"
RECIPE_INTEL_SECTION_pn-libxfontcache="graphic core"
+RECIPE_LAST_UPDATE_pn-libxfontcache = "Jun 23, 2010"
RECIPE_MAINTAINER_pn-libxfontcache="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-xf86-input-evdev="green" # no update needed
@@ -3171,6 +3460,7 @@ RECIPE_NO_OF_PATCHES_pn-xf86-input-evdev="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xf86-input-evdev="1 monthes"
RECIPE_LATEST_RELEASE_DATE_pn-xf86-input-evdev="2010/08/23"
RECIPE_INTEL_SECTION_pn-xf86-input-evdev="graphic core"
+RECIPE_LAST_UPDATE_pn-xf86-input-evdev = "Jan 18, 2011"
RECIPE_MAINTAINER_pn-xf86-input-evdev="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-xf86-video-vmware="green" # no update needed
@@ -3180,6 +3470,7 @@ RECIPE_NO_OF_PATCHES_pn-xf86-video-vmware="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xf86-video-vmware="2 monthes"
RECIPE_LATEST_RELEASE_DATE_pn-xf86-video-vmware="2010/11/09"
RECIPE_INTEL_SECTION_pn-xf86-video-vmware="graphic core"
+RECIPE_LAST_UPDATE_pn-xf86-video-vmware = "Nov 12, 2010"
RECIPE_MAINTAINER_pn-xf86-video-vmware="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-xf86-video-vesa = "green" # no update needed
@@ -3188,6 +3479,7 @@ RECIPE_NO_OF_PATCHES_pn-xf86-video-vesa = "0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xf86-video-vesa = "6 monthes"
RECIPE_LATEST_RELEASE_DATE_pn-xf86-video-vesa = "2010/01/04"
RECIPE_INTEL_SECTION_pn-xf86-video-vesa = "graphic core"
+RECIPE_LAST_UPDATE_pn-xf86-video-vesa = "May 17, 2010"
RECIPE_MAINTAINER_pn-xf86-video-vesa = "Yu Ke <ke.yu@intel.com>"
DISTRO_PN_ALIAS_pn-xf86-video-vesa = "Debian=xserver-xorg-video-vesa Fedora=xorg-x11-drv-vesa Mandriva=x11-driver-video-vesa Ubuntu=xserver-xorg-video-vesa"
@@ -3198,6 +3490,7 @@ RECIPE_NO_OF_PATCHES_pn-cairo="1"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-cairo="1 monthes"
RECIPE_LATEST_RELEASE_DATE_pn-cairo="2010/02/20"
RECIPE_INTEL_SECTION_pn-cairo="graphic core"
+RECIPE_LAST_UPDATE_pn-cairo = "Jan 18, 2011"
RECIPE_MAINTAINER_pn-cairo="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-xserver-nodm-init="green" # no update needed
@@ -3214,6 +3507,7 @@ RECIPE_NO_OF_PATCHES_pn-xserver-xf86-config="0"
#RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xserver-xf86-config=""
#RECIPE_LATEST_RELEASE_DATE_pn-xserver-xf86-config=""
RECIPE_INTEL_SECTION_pn-xserver-xf86-config="graphic core"
+RECIPE_LAST_UPDATE_pn-xserver-xf86-config = "May 31, 2009"
RECIPE_MAINTAINER_pn-xserver-xf86-config="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-pango="green" # no update needed
@@ -3222,6 +3516,7 @@ RECIPE_NO_OF_PATCHES_pn-pango="1"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-pango="1 month"
RECIPE_LATEST_RELEASE_DATE_pn-pango="2010/03/10"
RECIPE_INTEL_SECTION_pn-pango="graphic core"
+RECIPE_LAST_UPDATE_pn-pango = "Nov 21, 2010"
RECIPE_MAINTAINER_pn-pango="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-mesa-dri="green" # no update needed
@@ -3230,6 +3525,7 @@ RECIPE_NO_OF_PATCHES_pn-mesa-dri="1"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-mesa-dri="2 monthes"
RECIPE_LATEST_RELEASE_DATE_pn-mesa-dri="2010/06/17"
RECIPE_INTEL_SECTION_pn-mesa-dri="graphic core"
+RECIPE_LAST_UPDATE_pn-mesa-dri = "Jan 18, 2011"
RECIPE_MAINTAINER_pn-mesa-dri="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-mesa-dri-glsl-native="green" # no update needed
@@ -3238,6 +3534,7 @@ RECIPE_NO_OF_PATCHES_pn-mesa-dri-glsl-native="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-mesa-dri-glsl-native="2 monthes"
RECIPE_LATEST_RELEASE_DATE_pn-mesa-dri-glsl-native="2010/06/17"
RECIPE_INTEL_SECTION_pn-mesa-dri-glsl-native="graphic core"
+RECIPE_LAST_UPDATE_pn-mesa-dri-glsl-native = "Jan 18, 2011"
RECIPE_MAINTAINER_pn-mesa-dri-glsl-native = "Yu Ke <ke.yu@intel.com>"
DISTRO_PN_ALIAS_pn-mesa-dri-glsl-native = "Fedora=mesa Ubuntu=libgl1-mesa-dri"
@@ -3247,6 +3544,7 @@ RECIPE_NO_OF_PATCHES_pn-mesa-xlib="0"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-mesa-xlib="2 monthes"
RECIPE_LATEST_RELEASE_DATE_pn-mesa-xlib="2010/06/17"
RECIPE_INTEL_SECTION_pn-mesa-xlib="graphic core"
+RECIPE_LAST_UPDATE_pn-mesa-xlib = "Nov 27, 2010"
RECIPE_MAINTAINER_pn-mesa-xlib="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-xserver-xf86-dri-lite="green" # no update needed
@@ -3255,39 +3553,39 @@ RECIPE_NO_OF_PATCHES_pn-xserver-xf86-dri-lite="2"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xserver-xf86-dri-lite="2 monthes"
RECIPE_LATEST_RELEASE_DATE_pn-xserver-xf86-dri-lite="2010/07/01"
RECIPE_INTEL_SECTION_pn-xserver-xf86-dri-lite="graphic core"
+RECIPE_LAST_UPDATE_pn-xserver-xf86-dri-lite = "Jan 18, 2011"
RECIPE_MAINTAINER_pn-xserver-xf86-dri-lite="Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-xf86-input-synaptics = "red"
DISTRO_PN_ALIAS_pn-xf86-input-synaptics = "Meego=xorg-x11-drv-synaptics Fedora=xorg-x11-drv-synaptics Ubuntu=xserver-xorg-input-synaptics Mandriva=x11-driver-input-synaptics Debian=xfree86-driver-synaptics"
RECIPE_LATEST_VERSION_pn-xf86-input-synaptics = "1.2.2"
+RECIPE_LAST_UPDATE_pn-xf86-input-synaptics = "Jan 18, 2011"
RECIPE_MAINTAINER_pn-xf86-input-synaptics = "Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-xf86-video-intel = "red"
DISTRO_PN_ALIAS_pn-xf86-video-intel = "Debian=xserver-xorg-video-intel Fedora=xorg-x11-drv-intel Mandriva=x11-driver-video-intel Meego=xorg-x11-drv-intel Ubuntu=xserver-xorg-video-intel"
RECIPE_LATEST_VERSION_pn-xf86-video-intel = "2.11.0"
+RECIPE_LAST_UPDATE_pn-xf86-video-intel = "Jan 18, 2011"
RECIPE_MAINTAINER_pn-xf86-video-intel = "Yu Ke <ke.yu@intel.com>"
RECIPE_STATUS_pn-xf86-video-omapfb = "red"
DISTRO_PN_ALIAS_pn-xf86-video-omapfb = "OSPDT"
RECIPE_LATEST_VERSION_pn-xf86-video-omapfb = "0.1.1+git_db636c8436265c3d86"
+RECIPE_LAST_UPDATE_pn-xf86-video-omapfb = "Mar 1, 2010"
RECIPE_MAINTAINER_pn-xf86-video-omapfb = "Yu Ke <ke.yu@intel.com>"
-RECIPE_STATUS_pn-xorg-cf-files = "red"
-RECIPE_LATEST_VERSION_pn-xorg-cf-files = "1.0.3"
-RECIPE_MAINTAINER_pn-xorg-cf-files = "Yu Ke <ke.yu@intel.com>"
-DISTRO_PN_ALIAS_pn-xorg-cf-files = "Fedora=imake Ubuntu=xutils-dev"
-
RECIPE_STATUS_pn-libdrm-poulsbo = "green" # no update needed
RECIPE_LATEST_VERSION_pn-libdrm-poulsbo = "2.3.0"
RECIPE_NO_OF_PATCHES_pn-libdrm-poulsbo = "1"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libdrm-poulsbo = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-libdrm-poulsbo = "n/a"
RECIPE_INTEL_SECTION_pn-libdrm-poulsbo = "graphic core"
+RECIPE_LAST_UPDATE_pn-libdrm-poulsbo = "Dec 20, 2010"
RECIPE_MAINTAINER_pn-libdrm-poulsbo = "Yu Ke <ke.yu@intel.com>"
DISTRO_PN_ALIAS_pn-libdrm-poulsbo = "Debian=libdrm-intel1 Ubuntu=libdrm-intel1"
RECIPE_STATUS_pn-libxsettings-client = "green"
-DEPENDENCY_CHECK_pn-libxsettings-client = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxsettings-client = "not done"
RECIPE_LATEST_VERSION_pn-libxsettings-client = "0.10"
RECIPE_NO_OF_PATCHES_pn-libxsettings-client = "1"
RECIPE_PATCH_pn-libxsettings-client+link-x11 = "add the linkage to X11"
@@ -3295,12 +3593,13 @@ RECIPE_INTEL_SECTION_pn-libxsettings-client = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxsettings-client = "stable"
RECIPE_LATEST_RELEASE_DATE_pn-libxsettings-client = "03/2007"
RECIPE_COMMENTS_pn-libxsettings-client = ""
+RECIPE_LAST_UPDATE_pn-libxsettings-client = "Sep 21, 2006"
RECIPE_MAINTAINER_pn-libxsettings-client = "Dexuan Cui <dexuan.cui@intel.com>"
DISTRO_PN_ALIAS_pn-libxsettings-client = "Debian=libxsettings-client0 Ubuntu=libxsettings-client0 Mandriva=libXsettings-client0"
RECIPE_STATUS_pn-settings-daemon = "green"
DISTRO_PN_ALIAS_pn-settings-daemon = "OpenedHand"
-DEPENDENCY_CHECK_pn-settings-daemon = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-settings-daemon = "not done"
RECIPE_LATEST_VERSION_pn-settings-daemon = "0.0+svnr2059"
RECIPE_NO_OF_PATCHES_pn-settings-daemon = "1"
RECIPE_PATCH_pn-settings-daemon+addsoundkeys = "add extra gnome/gconf schemas"
@@ -3308,21 +3607,23 @@ RECIPE_INTEL_SECTION_pn-settings-daemon = "x11"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-settings-daemon = "2 months"
RECIPE_LATEST_RELEASE_DATE_pn-settings-daemon = "06/2008"
RECIPE_COMMENTS_pn-settings-daemon = ""
+RECIPE_LAST_UPDATE_pn-settings-daemon = "Jan 18, 2008"
RECIPE_MAINTAINER_pn-settings-daemon = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-encodings = "green"
DISTRO_PN_ALIAS_pn-encodings = "Ubuntu=xfonts-encodings Mandriva=x11-font-encodings Debian=xfonts-encodings"
-DEPENDENCY_CHECK_pn-encodings = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-encodings = "not done"
RECIPE_LATEST_VERSION_pn-encodings = "1.0.3"
RECIPE_NO_OF_PATCHES_pn-encodings = "0"
RECIPE_INTEL_SECTION_pn-encodings = "x11/fonts"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-encodings = "3 years"
RECIPE_LATEST_RELEASE_DATE_pn-encodings = "10/2009"
RECIPE_COMMENTS_pn-encodings = ""
+RECIPE_LAST_UPDATE_pn-encodings = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-encodings = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-font-alias = "green"
-DEPENDENCY_CHECK_pn-font-alias = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-font-alias = "not done"
RECIPE_LATEST_VERSION_pn-font-alias = "1.0.2"
RECIPE_NO_OF_PATCHES_pn-font-alias = "1"
RECIPE_PATCH_pn-font-alias+fix_COPYING_1f8141a5e3b585dfccc748400b05c9c24b41e767 = "update the COPYING file"
@@ -3330,24 +3631,27 @@ RECIPE_INTEL_SECTION_pn-font-alias = "x11/fonts"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-font-alias = "3 years"
RECIPE_LATEST_RELEASE_DATE_pn-font-alias = "10/2009"
RECIPE_COMMENTS_pn-font-alias = ""
+RECIPE_LAST_UPDATE_pn-font-alias = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-font-alias = "Dexuan Cui <dexuan.cui@intel.com>"
DISTRO_PN_ALIAS_pn-font-alias = "Fedora=xorg-x11-fonts-base Mandriva=x11-font-alias Meego=xorg-x11-fonts"
RECIPE_STATUS_pn-font-util = "green"
DISTRO_PN_ALIAS_pn-font-util = "Meego=xorg-x11-font-utils Fedora=xorg-x11-font-utils Ubuntu=xfonts-utils Mandriva=x11-font-util Debian=xfonts-utils"
-DEPENDENCY_CHECK_pn-font-util = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-font-util = "not done"
RECIPE_LATEST_VERSION_pn-font-util = "1.1.1"
RECIPE_NO_OF_PATCHES_pn-font-util = "0"
RECIPE_INTEL_SECTION_pn-font-util = "x11/fonts"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-font-util = "relatively stable"
RECIPE_LATEST_RELEASE_DATE_pn-font-util = "10/12/2009"
RECIPE_COMMENTS_pn-font-util = "the 4th license in COPYING is Unicode License?"
+RECIPE_LAST_UPDATE_pn-font-util = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-font-util = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-xorg-minimal-fonts = "green"
DISTRO_PN_ALIAS_pn-xorg-minimal-fonts = "Ubuntu=xfonts-base Fedora=xorg-x11-fonts-base"
-DEPENDENCY_CHECK_pn-xorg-minimal-fonts = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-xorg-minimal-fonts = "not done"
RECIPE_LATEST_VERSION_pn-xorg-minimal-fonts = "1.0"
+RECIPE_MANUAL_CHECK_DATE_pn-xorg-minimal-fonts = "Jan 28, 2011"
RECIPE_NO_OF_PATCHES_pn-xorg-minimal-fonts = "0"
RECIPE_INTEL_SECTION_pn-xorg-minimal-fonts = "x11/fonts"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xorg-minimal-fonts = ""
@@ -3357,7 +3661,7 @@ RECIPE_MAINTAINER_pn-xorg-minimal-fonts = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-calibrateproto = "green"
DISTRO_PN_ALIAS_pn-calibrateproto = "OSPDT upstream=http://cgit.freedesktop.org/xorg/proto/calibrateproto"
-DEPENDENCY_CHECK_pn-calibrateproto = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-calibrateproto = "not done"
RECIPE_LATEST_VERSION_pn-calibrateproto = "0.0+git0+1da6fd1e2c7a49648245c98481fabea8b9690a8c"
RECIPE_NO_OF_PATCHES_pn-calibrateproto = "1"
RECIPE_PATCH_pn-calibrateproto+fix = "Add missing length fields to the replies. Without these, sanity checking in recent X breaks things. RP 11/2/10"
@@ -3366,440 +3670,482 @@ RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-calibrateproto = "1 month"
RECIPE_LATEST_RELEASE_DATE_pn-calibrateproto = "01/2008"
RECIPE_COMMENTS_pn-calibrateproto = ""
DISTRO_PN_ALIAS_pn-calibrateproto = "OSPDT upstream=http://cgit.freedesktop.org/xorg/lib/libXCalibrate/"
+RECIPE_LAST_UPDATE_pn-calibrateproto = "Feb 11, 2008"
RECIPE_MAINTAINER_pn-calibrateproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-compositeproto = "green"
DISTRO_PN_ALIAS_pn-compositeproto = "Meego=xorg-x11-proto-compositeproto"
-DEPENDENCY_CHECK_pn-compositeproto = "not done"
-RECIPE_LATEST_VERSION_pn-compositeproto = "0.4"
+RECIPE_DEPENDENCY_CHECK_pn-compositeproto = "not done"
+RECIPE_LATEST_VERSION_pn-compositeproto = "0.4.2"
RECIPE_NO_OF_PATCHES_pn-compositeproto = "0"
RECIPE_INTEL_SECTION_pn-compositeproto = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-compositeproto = "1 year"
-RECIPE_LATEST_RELEASE_DATE_pn-compositeproto = "07/2007"
+RECIPE_LATEST_RELEASE_DATE_pn-compositeproto = "Oct 29, 2010"
RECIPE_COMMENTS_pn-compositeproto = ""
+RECIPE_LAST_UPDATE_pn-compositeproto = "Jan 5, 2011"
RECIPE_MAINTAINER_pn-compositeproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-damageproto = "green"
DISTRO_PN_ALIAS_pn-damageproto = "Meego=xorg-x11-proto-damageproto"
-DEPENDENCY_CHECK_pn-damageproto = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-damageproto = "not done"
RECIPE_LATEST_VERSION_pn-damageproto = "1.2.1"
RECIPE_NO_OF_PATCHES_pn-damageproto = "0"
RECIPE_INTEL_SECTION_pn-damageproto = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-damageproto = "1+ years"
RECIPE_LATEST_RELEASE_DATE_pn-damageproto = "Oct 29, 2010"
RECIPE_COMMENTS_pn-damageproto = ""
+RECIPE_LAST_UPDATE_pn-damageproto = "Nov 16, 2010"
RECIPE_MAINTAINER_pn-damageproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-dmxproto = "green"
DISTRO_PN_ALIAS_pn-dmxproto = "Meego=xorg-x11-proto-dmxproto Ubuntu=x11proto-dmx Debian=x11proto-dmx"
-DEPENDENCY_CHECK_pn-dmxproto = "not done"
-RECIPE_LATEST_VERSION_pn-dmxproto = "2.3"
+RECIPE_DEPENDENCY_CHECK_pn-dmxproto = "not done"
+RECIPE_LATEST_VERSION_pn-dmxproto = "2.3.1"
RECIPE_NO_OF_PATCHES_pn-dmxproto = "0"
RECIPE_INTEL_SECTION_pn-dmxproto = "x11/libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-dmxproto = "2 months"
-RECIPE_LATEST_RELEASE_DATE_pn-dmxproto = "10/2009"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-dmxproto = "1+ years"
+RECIPE_LATEST_RELEASE_DATE_pn-dmxproto = "Jan 5, 2011"
RECIPE_COMMENTS_pn-dmxproto = ""
+RECIPE_LAST_UPDATE_pn-dmxproto = "Jan 28, 2011"
RECIPE_MAINTAINER_pn-dmxproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-fixesproto = "green"
DISTRO_PN_ALIAS_pn-fixesproto = "Meego=xorg-x11-proto-fixesproto"
-DEPENDENCY_CHECK_pn-fixesproto = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-fixesproto = "not done"
RECIPE_LATEST_VERSION_pn-fixesproto = "4.1.2"
RECIPE_NO_OF_PATCHES_pn-fixesproto = "0"
RECIPE_INTEL_SECTION_pn-fixesproto = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-fixesproto = "1 year"
RECIPE_LATEST_RELEASE_DATE_pn-fixesproto = "Oct 29, 2010"
RECIPE_COMMENTS_pn-fixesproto = ""
+RECIPE_LAST_UPDATE_pn-fixesproto = "Nov 16, 2010"
RECIPE_MAINTAINER_pn-fixesproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-fontcacheproto = "green"
DISTRO_PN_ALIAS_pn-fontcacheproto = "Meego=xorg-x11-proto-fontcacheproto"
-DEPENDENCY_CHECK_pn-fontcacheproto = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-fontcacheproto = "not done"
RECIPE_LATEST_VERSION_pn-fontcacheproto = "0.1.3"
RECIPE_NO_OF_PATCHES_pn-fontcacheproto = "0"
RECIPE_INTEL_SECTION_pn-fontcacheproto = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-fontcacheproto = "3 years"
RECIPE_LATEST_RELEASE_DATE_pn-fontcacheproto = "10/2009"
RECIPE_COMMENTS_pn-fontcacheproto = ""
+RECIPE_LAST_UPDATE_pn-fontcacheproto = "Feb 3, 2010"
RECIPE_MAINTAINER_pn-fontcacheproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-fontsproto = "green"
DISTRO_PN_ALIAS_pn-fontsproto = "Meego=xorg-x11-proto-fontsproto"
-DEPENDENCY_CHECK_pn-fontsproto = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-fontsproto = "not done"
RECIPE_LATEST_VERSION_pn-fontsproto = "2.1.1"
RECIPE_NO_OF_PATCHES_pn-fontsproto = "0"
RECIPE_INTEL_SECTION_pn-fontsproto = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-fontsproto = "1+ years"
RECIPE_LATEST_RELEASE_DATE_pn-fontsproto = "Oct 29, 2010"
RECIPE_COMMENTS_pn-fontsproto = ""
+RECIPE_LAST_UPDATE_pn-fontsproto = "Nov 16, 2010"
RECIPE_MAINTAINER_pn-fontsproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-glproto = "green"
DISTRO_PN_ALIAS_pn-glproto = "Meego=xorg-x11-proto-glproto"
-DEPENDENCY_CHECK_pn-glproto = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-glproto = "not done"
RECIPE_LATEST_VERSION_pn-glproto = "1.4.12"
RECIPE_NO_OF_PATCHES_pn-glproto = "0"
RECIPE_INTEL_SECTION_pn-glproto = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-glproto = "7 months"
RECIPE_LATEST_RELEASE_DATE_pn-glproto = "Aug 10, 2010"
RECIPE_COMMENTS_pn-glproto = ""
+RECIPE_LAST_UPDATE_pn-glproto = "Nov 16, 2010"
RECIPE_MAINTAINER_pn-glproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-inputproto = "green"
DISTRO_PN_ALIAS_pn-inputproto = "Meego=xorg-x11-proto-inputproto"
-DEPENDENCY_CHECK_pn-inputproto = "not done"
-RECIPE_LATEST_VERSION_pn-inputproto = "2.0"
+RECIPE_DEPENDENCY_CHECK_pn-inputproto = "not done"
+RECIPE_LATEST_VERSION_pn-inputproto = "2.0.1"
RECIPE_NO_OF_PATCHES_pn-inputproto = "0"
RECIPE_INTEL_SECTION_pn-inputproto = "x11/libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-inputproto = "2 months"
-RECIPE_LATEST_RELEASE_DATE_pn-inputproto = "10/2009"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-inputproto = "1 year"
+RECIPE_LATEST_RELEASE_DATE_pn-inputproto = "Nov 10, 2010"
RECIPE_COMMENTS_pn-inputproto = ""
+RECIPE_LAST_UPDATE_pn-inputproto = "Jan 5, 2011"
RECIPE_MAINTAINER_pn-inputproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-kbproto = "green"
DISTRO_PN_ALIAS_pn-kbproto = "Meego=xorg-x11-proto-kbproto Ubuntu=x11proto-kb-dev Debian=x11proto-kb-dev"
-DEPENDENCY_CHECK_pn-kbproto = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-kbproto = "not done"
RECIPE_LATEST_VERSION_pn-kbproto = "1.0.5"
RECIPE_NO_OF_PATCHES_pn-kbproto = "0"
RECIPE_INTEL_SECTION_pn-kbproto = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-kbproto = "10 months"
RECIPE_LATEST_RELEASE_DATE_pn-kbproto = "Aug 10, 2010"
RECIPE_COMMENTS_pn-kbproto = ""
+RECIPE_LAST_UPDATE_pn-kbproto = "Nov 16, 2010"
RECIPE_MAINTAINER_pn-kbproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libdmx = "green"
-DEPENDENCY_CHECK_pn-libdmx = "not done"
-RECIPE_LATEST_VERSION_pn-libdmx = "1.1.0"
+RECIPE_DEPENDENCY_CHECK_pn-libdmx = "not done"
+RECIPE_LATEST_VERSION_pn-libdmx = "1.1.1"
RECIPE_NO_OF_PATCHES_pn-libdmx = "0"
RECIPE_INTEL_SECTION_pn-libdmx = "x11/libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libdmx = "2 months"
-RECIPE_LATEST_RELEASE_DATE_pn-libdmx = "10/2009"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libdmx = "1 year"
+RECIPE_LATEST_RELEASE_DATE_pn-libdmx = "Oct 28, 2010"
RECIPE_COMMENTS_pn-libdmx = ""
+RECIPE_LAST_UPDATE_pn-libdmx = "Jan 5, 2011"
RECIPE_MAINTAINER_pn-libdmx = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxi = "green"
-DEPENDENCY_CHECK_pn-libxi = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxi = "not done"
RECIPE_LATEST_VERSION_pn-libxi = "1.3"
RECIPE_NO_OF_PATCHES_pn-libxi = "0"
RECIPE_INTEL_SECTION_pn-libxi = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxi = "2 months"
RECIPE_LATEST_RELEASE_DATE_pn-libxi = "10/2009"
RECIPE_COMMENTS_pn-libxi = ""
+RECIPE_LAST_UPDATE_pn-libxi = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxi = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxinerama = "green"
-DEPENDENCY_CHECK_pn-libxinerama = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxinerama = "not done"
RECIPE_LATEST_VERSION_pn-libxinerama = "1.1"
RECIPE_NO_OF_PATCHES_pn-libxinerama = "0"
RECIPE_INTEL_SECTION_pn-libxinerama = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxinerama = "2 months"
RECIPE_LATEST_RELEASE_DATE_pn-libxinerama = "10/2009"
RECIPE_COMMENTS_pn-libxinerama = ""
+RECIPE_LAST_UPDATE_pn-libxinerama = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxinerama = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxp = "green"
-DEPENDENCY_CHECK_pn-libxp = "not done"
-RECIPE_LATEST_VERSION_pn-libxp = "1.0.0"
+RECIPE_DEPENDENCY_CHECK_pn-libxp = "not done"
+RECIPE_LATEST_VERSION_pn-libxp = "1.0.1"
RECIPE_NO_OF_PATCHES_pn-libxp = "0"
RECIPE_INTEL_SECTION_pn-libxp = "x11/libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxp = "stable"
-RECIPE_LATEST_RELEASE_DATE_pn-libxp = "01/2006"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxp = "5 years"
+RECIPE_LATEST_RELEASE_DATE_pn-libxp = "Jan 13, 2011"
RECIPE_COMMENTS_pn-libxp = ""
+RECIPE_LAST_UPDATE_pn-libxp = "Jan 28, 2011"
RECIPE_MAINTAINER_pn-libxp = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxtst = "green"
-DEPENDENCY_CHECK_pn-libxtst = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxtst = "not done"
RECIPE_LATEST_VERSION_pn-libxtst = "1.1.0"
RECIPE_NO_OF_PATCHES_pn-libxtst = "0"
RECIPE_INTEL_SECTION_pn-libxtst = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxtst = "2 months"
RECIPE_LATEST_RELEASE_DATE_pn-libxtst = "10/2009"
RECIPE_COMMENTS_pn-libxtst = ""
+RECIPE_LAST_UPDATE_pn-libxtst = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxtst = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-printproto = "green"
DISTRO_PN_ALIAS_pn-printproto = "Debian=x11proto-print-dev Ubuntu=x11proto-print-dev Mandriva=x11-proto-devel"
-DEPENDENCY_CHECK_pn-printproto = "not done"
-RECIPE_LATEST_VERSION_pn-printproto = "1.0.4"
+RECIPE_DEPENDENCY_CHECK_pn-printproto = "not done"
+RECIPE_LATEST_VERSION_pn-printproto = "1.0.5"
RECIPE_NO_OF_PATCHES_pn-printproto = "0"
RECIPE_INTEL_SECTION_pn-printproto = "x11/libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-printproto = "2 years"
-RECIPE_LATEST_RELEASE_DATE_pn-printproto = "03/2008"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-printproto = "2+ years"
+RECIPE_LATEST_RELEASE_DATE_pn-printproto = "Jan 5, 2011"
RECIPE_COMMENTS_pn-printproto = ""
+RECIPE_LAST_UPDATE_pn-printproto = "Jan 28, 2011"
RECIPE_MAINTAINER_pn-printproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-randrproto = "green"
DISTRO_PN_ALIAS_pn-randrproto = "Meego=xorg-x11-proto-randrproto"
-DEPENDENCY_CHECK_pn-randrproto = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-randrproto = "not done"
RECIPE_LATEST_VERSION_pn-randrproto = "1.3.2"
RECIPE_NO_OF_PATCHES_pn-randrproto = "0"
RECIPE_INTEL_SECTION_pn-randrproto = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-randrproto = "1 year"
RECIPE_LATEST_RELEASE_DATE_pn-randrproto = "Oct 29, 2010"
RECIPE_COMMENTS_pn-randrproto = ""
+RECIPE_LAST_UPDATE_pn-randrproto = "Nov 16, 2010"
RECIPE_MAINTAINER_pn-randrproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-recordproto = "green"
DISTRO_PN_ALIAS_pn-recordproto = "Meego=xorg-x11-proto-recordproto"
-DEPENDENCY_CHECK_pn-recordproto = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-recordproto = "not done"
RECIPE_LATEST_VERSION_pn-recordproto = "1.14.1"
RECIPE_NO_OF_PATCHES_pn-recordproto = "0"
RECIPE_INTEL_SECTION_pn-recordproto = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-recordproto = "1 year"
RECIPE_LATEST_RELEASE_DATE_pn-recordproto = "Oct 29, 2010"
RECIPE_COMMENTS_pn-recordproto = ""
+RECIPE_LAST_UPDATE_pn-recordproto = "Nov 16, 2010"
RECIPE_MAINTAINER_pn-recordproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-renderproto = "green"
DISTRO_PN_ALIAS_pn-renderproto = "Meego=xorg-x11-proto-renderproto"
-DEPENDENCY_CHECK_pn-renderproto = "not done"
-RECIPE_LATEST_VERSION_pn-renderproto = "0.11"
+RECIPE_DEPENDENCY_CHECK_pn-renderproto = "not done"
+RECIPE_LATEST_VERSION_pn-renderproto = "0.11.1"
RECIPE_NO_OF_PATCHES_pn-renderproto = "0"
RECIPE_INTEL_SECTION_pn-renderproto = "x11/libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-renderproto = "2 years"
-RECIPE_LATEST_RELEASE_DATE_pn-renderproto = "07/2009"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-renderproto = "1 year"
+RECIPE_LATEST_RELEASE_DATE_pn-renderproto = "Aug 10, 2010"
RECIPE_COMMENTS_pn-renderproto = ""
+RECIPE_LAST_UPDATE_pn-renderproto = "Jan 5, 2011"
RECIPE_MAINTAINER_pn-renderproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-resourceproto = "green"
DISTRO_PN_ALIAS_pn-resourceproto = "Meego=xorg-x11-proto-resourceproto"
-DEPENDENCY_CHECK_pn-resourceproto = "not done"
-RECIPE_LATEST_VERSION_pn-resourceproto = "1.1.0"
+RECIPE_DEPENDENCY_CHECK_pn-resourceproto = "not done"
+RECIPE_LATEST_VERSION_pn-resourceproto = "1.1.1"
RECIPE_NO_OF_PATCHES_pn-resourceproto = "0"
RECIPE_INTEL_SECTION_pn-resourceproto = "x11/libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-resourceproto = "3 years"
-RECIPE_LATEST_RELEASE_DATE_pn-resourceproto = "08/2009"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-resourceproto = "1+ years"
+RECIPE_LATEST_RELEASE_DATE_pn-resourceproto = "Dec 8, 2010"
RECIPE_COMMENTS_pn-resourceproto = ""
+RECIPE_LAST_UPDATE_pn-resourceproto = "Jan 5, 2011"
RECIPE_MAINTAINER_pn-resourceproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-scrnsaverproto = "green"
DISTRO_PN_ALIAS_pn-scrnsaverproto = "Meego=xorg-x11-proto-scrnsaverproto Ubuntu=x11proto-scrnsaver-dev Debian=x11proto-scrnsaver-dev"
-DEPENDENCY_CHECK_pn-scrnsaverproto = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-scrnsaverproto = "not done"
RECIPE_LATEST_VERSION_pn-scrnsaverproto = "1.2.1"
RECIPE_NO_OF_PATCHES_pn-scrnsaverproto = "0"
RECIPE_INTEL_SECTION_pn-scrnsaverproto = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-scrnsaverproto = "1+ years"
RECIPE_LATEST_RELEASE_DATE_pn-scrnsaverproto = "Oct 29, 2010"
RECIPE_COMMENTS_pn-scrnsaverproto = ""
+RECIPE_LAST_UPDATE_pn-scrnsaverproto = "Jan 5, 2011"
RECIPE_MAINTAINER_pn-scrnsaverproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-trapproto = "green"
DISTRO_PN_ALIAS_pn-trapproto = "Meego=xorg-x11-proto-trapproto"
-DEPENDENCY_CHECK_pn-trapproto = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-trapproto = "not done"
RECIPE_LATEST_VERSION_pn-trapproto = "3.4.3"
RECIPE_NO_OF_PATCHES_pn-trapproto = "0"
RECIPE_INTEL_SECTION_pn-trapproto = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-trapproto = "stable"
RECIPE_LATEST_RELEASE_DATE_pn-trapproto = "01/2006"
RECIPE_COMMENTS_pn-trapproto = ""
+RECIPE_LAST_UPDATE_pn-trapproto = "Jul 3, 2007"
RECIPE_MAINTAINER_pn-trapproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-videoproto = "green"
DISTRO_PN_ALIAS_pn-videoproto = "Meego=xorg-x11-proto-videoproto"
-DEPENDENCY_CHECK_pn-videoproto = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-videoproto = "not done"
RECIPE_LATEST_VERSION_pn-videoproto = "2.3.1"
RECIPE_NO_OF_PATCHES_pn-videoproto = "0"
RECIPE_INTEL_SECTION_pn-videoproto = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-videoproto = "1 year"
RECIPE_LATEST_RELEASE_DATE_pn-videoproto = "Aug 10, 2010"
RECIPE_COMMENTS_pn-videoproto = ""
+RECIPE_LAST_UPDATE_pn-videoproto = "Nov 16, 2010"
RECIPE_MAINTAINER_pn-videoproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-xcmiscproto = "green"
DISTRO_PN_ALIAS_pn-xcmiscproto = "Meego=xorg-x11-proto-xcmiscproto"
-DEPENDENCY_CHECK_pn-xcmiscproto = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-xcmiscproto = "not done"
RECIPE_LATEST_VERSION_pn-xcmiscproto = "1.2.1"
RECIPE_NO_OF_PATCHES_pn-xcmiscproto = "0"
RECIPE_INTEL_SECTION_pn-xcmiscproto = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xcmiscproto = "1+ years"
RECIPE_LATEST_RELEASE_DATE_pn-xcmiscproto = "Oct 30, 2010"
RECIPE_COMMENTS_pn-xcmiscproto = ""
+RECIPE_LAST_UPDATE_pn-xcmiscproto = "Nov 16, 2010"
RECIPE_MAINTAINER_pn-xcmiscproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-xf86bigfontproto = "green"
DISTRO_PN_ALIAS_pn-xf86bigfontproto = "Meego=xorg-x11-proto-xf86bigfontproto"
-DEPENDENCY_CHECK_pn-xf86bigfontproto = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-xf86bigfontproto = "not done"
RECIPE_LATEST_VERSION_pn-xf86bigfontproto = "1.2.0"
RECIPE_NO_OF_PATCHES_pn-xf86bigfontproto = "0"
RECIPE_INTEL_SECTION_pn-xf86bigfontproto = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xf86bigfontproto = "3 years"
RECIPE_LATEST_RELEASE_DATE_pn-xf86bigfontproto = "08/2009"
RECIPE_COMMENTS_pn-xf86bigfontproto = ""
+RECIPE_LAST_UPDATE_pn-xf86bigfontproto = "Feb 3, 2010"
RECIPE_MAINTAINER_pn-xf86bigfontproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-xf86dgaproto = "green"
DISTRO_PN_ALIAS_pn-xf86dgaproto = "Meego=xorg-x11-proto-xf86dgaproto"
-DEPENDENCY_CHECK_pn-xf86dgaproto = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-xf86dgaproto = "not done"
RECIPE_LATEST_VERSION_pn-xf86dgaproto = "2.1"
RECIPE_NO_OF_PATCHES_pn-xf86dgaproto = "0"
RECIPE_INTEL_SECTION_pn-xf86dgaproto = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xf86dgaproto = "1 month"
RECIPE_LATEST_RELEASE_DATE_pn-xf86dgaproto = "10/2009"
RECIPE_COMMENTS_pn-xf86dgaproto = ""
+RECIPE_LAST_UPDATE_pn-xf86dgaproto = "Feb 3, 2010"
RECIPE_MAINTAINER_pn-xf86dgaproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-xf86driproto = "green"
DISTRO_PN_ALIAS_pn-xf86driproto = "Meego=xorg-x11-proto-xf86driproto"
-DEPENDENCY_CHECK_pn-xf86driproto = "not done"
-RECIPE_LATEST_VERSION_pn-xf86driproto = "2.1.0"
+RECIPE_DEPENDENCY_CHECK_pn-xf86driproto = "not done"
+RECIPE_LATEST_VERSION_pn-xf86driproto = "2.1.1"
RECIPE_NO_OF_PATCHES_pn-xf86driproto = "0"
RECIPE_INTEL_SECTION_pn-xf86driproto = "x11/libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xf86driproto = "1 year"
-RECIPE_LATEST_RELEASE_DATE_pn-xf86driproto = "08/2009"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xf86driproto = "1+ year"
+RECIPE_LATEST_RELEASE_DATE_pn-xf86driproto = "Jan 5, 2011"
RECIPE_COMMENTS_pn-xf86driproto = ""
+RECIPE_LAST_UPDATE_pn-xf86driproto = "Jan 28, 2011"
RECIPE_MAINTAINER_pn-xf86driproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-xf86miscproto = "green"
DISTRO_PN_ALIAS_pn-xf86miscproto = "Meego=xorg-x11-proto-xf86miscproto"
-DEPENDENCY_CHECK_pn-xf86miscproto = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-xf86miscproto = "not done"
RECIPE_LATEST_VERSION_pn-xf86miscproto = "0.9.3"
RECIPE_NO_OF_PATCHES_pn-xf86miscproto = "0"
RECIPE_INTEL_SECTION_pn-xf86miscproto = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xf86miscproto = "3 years"
RECIPE_LATEST_RELEASE_DATE_pn-xf86miscproto = "10/2009"
RECIPE_COMMENTS_pn-xf86miscproto = ""
+RECIPE_LAST_UPDATE_pn-xf86miscproto = "Feb 3, 2010"
RECIPE_MAINTAINER_pn-xf86miscproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-xf86rushproto = "green"
DISTRO_PN_ALIAS_pn-xf86rushproto = "Meego=xorg-x11-proto-xf86rushproto"
-DEPENDENCY_CHECK_pn-xf86rushproto = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-xf86rushproto = "not done"
RECIPE_LATEST_VERSION_pn-xf86rushproto = "1.1.2"
RECIPE_NO_OF_PATCHES_pn-xf86rushproto = "0"
RECIPE_INTEL_SECTION_pn-xf86rushproto = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xf86rushproto = "stable"
RECIPE_LATEST_RELEASE_DATE_pn-xf86rushproto = "01/2006"
RECIPE_COMMENTS_pn-xf86rushproto = ""
+RECIPE_LAST_UPDATE_pn-xf86rushproto = "Jul 3, 2007"
RECIPE_MAINTAINER_pn-xf86rushproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-xineramaproto = "green"
DISTRO_PN_ALIAS_pn-xineramaproto = "Meego=xorg-x11-proto-xineramaproto Ubuntu=x11proto-xinerama Debian=x11proto-xinerama"
-DEPENDENCY_CHECK_pn-xineramaproto = "not done"
-RECIPE_LATEST_VERSION_pn-xineramaproto = "1.2"
+RECIPE_DEPENDENCY_CHECK_pn-xineramaproto = "not done"
+RECIPE_LATEST_VERSION_pn-xineramaproto = "1.2.1"
RECIPE_NO_OF_PATCHES_pn-xineramaproto = "0"
RECIPE_INTEL_SECTION_pn-xineramaproto = "x11/libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xineramaproto = "2 months"
-RECIPE_LATEST_RELEASE_DATE_pn-xineramaproto = "10/2009"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xineramaproto = "1+ years"
+RECIPE_LATEST_RELEASE_DATE_pn-xineramaproto = "Jan 5, 2011"
RECIPE_COMMENTS_pn-xineramaproto = ""
+RECIPE_LAST_UPDATE_pn-xineramaproto = "Jan 28, 2011"
RECIPE_MAINTAINER_pn-xineramaproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-dri2proto = "green"
DISTRO_PN_ALIAS_pn-dri2proto = "Meego=xorg-x11-proto-dri2proto"
-DEPENDENCY_CHECK_pn-dri2proto = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-dri2proto = "not done"
RECIPE_LATEST_VERSION_pn-dri2proto = "2.3"
RECIPE_NO_OF_PATCHES_pn-dri2proto = "0"
RECIPE_INTEL_SECTION_pn-dri2proto = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-dri2proto = "1 month"
RECIPE_LATEST_RELEASE_DATE_pn-dri2proto = "02/2010"
RECIPE_COMMENTS_pn-dri2proto = ""
+RECIPE_LAST_UPDATE_pn-dri2proto = "Jun 29, 2010"
RECIPE_MAINTAINER_pn-dri2proto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-xcb-proto = "green"
-DEPENDENCY_CHECK_pn-xcb-proto = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-xcb-proto = "not done"
RECIPE_LATEST_VERSION_pn-xcb-proto = "1.6"
RECIPE_NO_OF_PATCHES_pn-xcb-proto = "0"
RECIPE_INTEL_SECTION_pn-xcb-proto = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xcb-proto = "5 months"
RECIPE_LATEST_RELEASE_DATE_pn-xcb-proto = "12/2009"
RECIPE_COMMENTS_pn-xcb-proto = ""
+RECIPE_LAST_UPDATE_pn-xcb-proto = "Jun 29, 2010"
RECIPE_MAINTAINER_pn-xcb-proto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-xextproto = "green"
DISTRO_PN_ALIAS_pn-xextproto = "Meego=xorg-x11-proto-xextproto"
-DEPENDENCY_CHECK_pn-xextproto = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-xextproto = "not done"
RECIPE_LATEST_VERSION_pn-xextproto = "7.1.2"
RECIPE_NO_OF_PATCHES_pn-xextproto = "0"
RECIPE_INTEL_SECTION_pn-xextproto = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xextproto = "1 year"
RECIPE_LATEST_RELEASE_DATE_pn-xextproto = "Aug 10, 2010"
RECIPE_COMMENTS_pn-xextproto = ""
+RECIPE_LAST_UPDATE_pn-xextproto = "Nov 16, 2010"
RECIPE_MAINTAINER_pn-xextproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-xf86vidmodeproto = "green"
DISTRO_PN_ALIAS_pn-xf86vidmodeproto = "Meego=xorg-x11-proto-xf86vidmodeproto Ubuntu=x11proto-xf86vidmode Debian=x11proto-xf86vidmode"
-DEPENDENCY_CHECK_pn-xf86vidmodeproto = "not done"
-RECIPE_LATEST_VERSION_pn-xf86vidmodeproto = "2.3"
+RECIPE_DEPENDENCY_CHECK_pn-xf86vidmodeproto = "not done"
+RECIPE_LATEST_VERSION_pn-xf86vidmodeproto = "2.3.1"
RECIPE_NO_OF_PATCHES_pn-xf86vidmodeproto = "0"
RECIPE_INTEL_SECTION_pn-xf86vidmodeproto = "x11/libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xf86vidmodeproto = "2 months"
-RECIPE_LATEST_RELEASE_DATE_pn-xf86vidmodeproto = "10/2009"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xf86vidmodeproto = "1+ years"
+RECIPE_LATEST_RELEASE_DATE_pn-xf86vidmodeproto = "Jan 5, 2011"
RECIPE_COMMENTS_pn-xf86vidmodeproto = ""
+RECIPE_LAST_UPDATE_pn-xf86vidmodeproto = "Jan 28, 2011"
RECIPE_MAINTAINER_pn-xf86vidmodeproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-xproto = "green"
DISTRO_PN_ALIAS_pn-xproto = "Meego=xorg-x11-proto-xproto Fedora=xorg-x11-proto-devel Ubuntu=x11proto-core-dev Debian=x11proto-core-dev Opensuse=xorg-x11-proto-devel Mandriva=x11-proto-devel"
-DEPENDENCY_CHECK_pn-xproto = "not done"
-RECIPE_LATEST_VERSION_pn-xproto = "7.0.17"
+RECIPE_DEPENDENCY_CHECK_pn-xproto = "not done"
+RECIPE_LATEST_VERSION_pn-xproto = "7.0.20"
RECIPE_NO_OF_PATCHES_pn-xproto = "0"
RECIPE_INTEL_SECTION_pn-xproto = "x11/libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xproto = "8 months"
-RECIPE_LATEST_RELEASE_DATE_pn-xproto = "05/2010"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xproto = "1 month"
+RECIPE_LATEST_RELEASE_DATE_pn-xproto = "Dec 7, 2010"
RECIPE_COMMENTS_pn-xproto = ""
+RECIPE_LAST_UPDATE_pn-xproto = "Jan 5, 2011"
RECIPE_MAINTAINER_pn-xproto = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-liberation-fonts = "green"
-DEPENDENCY_CHECK_pn-liberation-fonts = "not done"
-RECIPE_LATEST_VERSION_pn-liberation-fonts = "1.05.2.20091019"
-RECIPE_NO_UPDATE_REASON_pn-liberation-fonts = "1.05.2.20091019 doesn't have big differences from current version 1.04; 1.05.2.20091019 needs adding new native packages like libungif_4.1.3, libspiro and fontforge that have stability concerns"
+RECIPE_DEPENDENCY_CHECK_pn-liberation-fonts = "not done"
+RECIPE_LATEST_VERSION_pn-liberation-fonts = "1.06.0.20100721"
+RECIPE_MANUAL_CHECK_DATE_pn-liberation-fonts = "Jan 28, 2011"
+RECIPE_NO_UPDATE_REASON_pn-liberation-fonts = "Do not upgrade to version: 1.06.0.20100721 because before doing that, we need adding new native packages like libungif_4.1.3, libspiro and fontforge first"
RECIPE_NO_OF_PATCHES_pn-liberation-fonts = "0"
RECIPE_INTEL_SECTION_pn-liberation-fonts = "x11/fonts"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-liberation-fonts = "5 months"
-RECIPE_LATEST_RELEASE_DATE_pn-liberation-fonts = "12/26/2009"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-liberation-fonts = "1 month"
+RECIPE_LATEST_RELEASE_DATE_pn-liberation-fonts = "Jul 21, 2010"
RECIPE_COMMENTS_pn-liberation-fonts = "current version 1.04 released open source under GPLv2 with exceptions"
+RECIPE_LAST_UPDATE_pn-liberation-fonts = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-liberation-fonts = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libfontenc = "green"
-DEPENDENCY_CHECK_pn-libfontenc = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libfontenc = "not done"
RECIPE_LATEST_VERSION_pn-libfontenc = "1.0.5"
RECIPE_NO_OF_PATCHES_pn-libfontenc = "0"
RECIPE_INTEL_SECTION_pn-libfontenc = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libfontenc = "3 years"
RECIPE_LATEST_RELEASE_DATE_pn-libfontenc = "08/2009"
RECIPE_COMMENTS_pn-libfontenc = ""
+RECIPE_LAST_UPDATE_pn-libfontenc = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libfontenc = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxfont = "green"
-DEPENDENCY_CHECK_pn-libxfont = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxfont = "not done"
RECIPE_LATEST_VERSION_pn-libxfont = "1.4.2"
RECIPE_NO_OF_PATCHES_pn-libxfont = "0"
RECIPE_INTEL_SECTION_pn-libxfont = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxfont = "8 months"
RECIPE_LATEST_RELEASE_DATE_pn-libxfont = "10/2009"
RECIPE_COMMENTS_pn-libxfont = "the recipe file has a commented-out no-scalable-crash.patch"
+RECIPE_LAST_UPDATE_pn-libxfont = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxfont = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libice = "green"
-DEPENDENCY_CHECK_pn-libice = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libice = "not done"
RECIPE_LATEST_VERSION_pn-libice = "1.0.6"
RECIPE_NO_OF_PATCHES_pn-libice = "0"
RECIPE_INTEL_SECTION_pn-libice = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libice = "7 months"
RECIPE_LATEST_RELEASE_DATE_pn-libice = "08/2009"
RECIPE_COMMENTS_pn-libice = ""
+RECIPE_LAST_UPDATE_pn-libice = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libice = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libsm = "green"
-DEPENDENCY_CHECK_pn-libsm = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libsm = "not done"
RECIPE_LATEST_VERSION_pn-libsm = "1.1.1"
RECIPE_NO_OF_PATCHES_pn-libsm = "0"
RECIPE_INTEL_SECTION_pn-libsm = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libsm = "1 year"
RECIPE_LATEST_RELEASE_DATE_pn-libsm = "08/2009"
RECIPE_COMMENTS_pn-libsm = ""
+RECIPE_LAST_UPDATE_pn-libsm = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libsm = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxau = "green"
-DEPENDENCY_CHECK_pn-libxau = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxau = "not done"
RECIPE_LATEST_VERSION_pn-libxau = "1.0.5"
RECIPE_NO_OF_PATCHES_pn-libxau = "0"
RECIPE_INTEL_SECTION_pn-libxau = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxau = "1 year"
RECIPE_LATEST_RELEASE_DATE_pn-libxau = "08/2009"
RECIPE_COMMENTS_pn-libxau = ""
+RECIPE_LAST_UPDATE_pn-libxau = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxau = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxcalibrate = "green"
DISTRO_PN_ALIAS_pn-libxcalibrate = "OSPDT upstream=http://cgit.freedesktop.org/xorg/lib/libXCalibrate/"
-DEPENDENCY_CHECK_pn-libxcalibrate = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxcalibrate = "not done"
RECIPE_LATEST_VERSION_pn-libxcalibrate = "0.0+git0+209d83af61ed38a002c8096377deac292b3e396c"
RECIPE_NO_OF_PATCHES_pn-libxcalibrate = "1"
RECIPE_PATCH_pn-libxcalibrate+fix-xcb = "There is no extra reply data and if we say not to disgard it, xcb throws fatal asserts. RP - 26/11/09"
@@ -3807,20 +4153,22 @@ RECIPE_INTEL_SECTION_pn-libxcalibrate = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxcalibrate = "1 month"
RECIPE_LATEST_RELEASE_DATE_pn-libxcalibrate = "03/2008"
RECIPE_COMMENTS_pn-libxcalibrate = ""
+RECIPE_LAST_UPDATE_pn-libxcalibrate = "Jun 29, 2010"
RECIPE_MAINTAINER_pn-libxcalibrate = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxcb = "green"
-DEPENDENCY_CHECK_pn-libxcb = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxcb = "not done"
RECIPE_LATEST_VERSION_pn-libxcb = "1.6"
RECIPE_NO_OF_PATCHES_pn-libxcb = "0"
RECIPE_INTEL_SECTION_pn-libxcb = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxcb = "5 months"
RECIPE_LATEST_RELEASE_DATE_pn-libxcb = "04/2010"
RECIPE_COMMENTS_pn-libxcb = ""
+RECIPE_LAST_UPDATE_pn-libxcb = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxcb = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxcomposite = "green"
-DEPENDENCY_CHECK_pn-libxcomposite = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxcomposite = "not done"
RECIPE_LATEST_VERSION_pn-libxcomposite = "0.4.1"
RECIPE_NO_OF_PATCHES_pn-libxcomposite = "1"
RECIPE_PATCH_pn-libxcomposite+change-include-order = "This patch makes the build use its own Xcomposite.h over rather than an older Xcomposite.h that might already be installed in the staging dir."
@@ -3828,212 +4176,234 @@ RECIPE_INTEL_SECTION_pn-libxcomposite = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxcomposite = "2 years"
RECIPE_LATEST_RELEASE_DATE_pn-libxcomposite = "10/2009"
RECIPE_COMMENTS_pn-libxcomposite = ""
+RECIPE_LAST_UPDATE_pn-libxcomposite = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxcomposite = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxrandr = "green"
-DEPENDENCY_CHECK_pn-libxrandr = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxrandr = "not done"
RECIPE_LATEST_VERSION_pn-libxrandr = "1.3.0"
RECIPE_NO_OF_PATCHES_pn-libxrandr = "0"
RECIPE_INTEL_SECTION_pn-libxrandr = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxrandr = "4 months"
RECIPE_LATEST_RELEASE_DATE_pn-libxrandr = "03/2009"
RECIPE_COMMENTS_pn-libxrandr = ""
+RECIPE_LAST_UPDATE_pn-libxrandr = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxrandr = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxrender = "green"
-DEPENDENCY_CHECK_pn-libxrender = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxrender = "not done"
RECIPE_LATEST_VERSION_pn-libxrender = "0.9.5"
RECIPE_NO_OF_PATCHES_pn-libxrender = "0"
RECIPE_INTEL_SECTION_pn-libxrender = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxrender = "2 years"
RECIPE_LATEST_RELEASE_DATE_pn-libxrender = "10/2009"
RECIPE_COMMENTS_pn-libxrender = ""
+RECIPE_LAST_UPDATE_pn-libxrender = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxrender = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxres = "green"
-DEPENDENCY_CHECK_pn-libxres = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxres = "not done"
RECIPE_LATEST_VERSION_pn-libxres = "1.0.4"
RECIPE_NO_OF_PATCHES_pn-libxres = "0"
RECIPE_INTEL_SECTION_pn-libxres = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxres = "3 years"
RECIPE_LATEST_RELEASE_DATE_pn-libxres = "10/2009"
RECIPE_COMMENTS_pn-libxres = ""
+RECIPE_LAST_UPDATE_pn-libxres = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxres = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxt = "green"
-DEPENDENCY_CHECK_pn-libxt = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxt = "not done"
RECIPE_LATEST_VERSION_pn-libxt = "1.0.8"
RECIPE_NO_OF_PATCHES_pn-libxt = "0"
RECIPE_INTEL_SECTION_pn-libxt = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxt = "5 months"
RECIPE_LATEST_RELEASE_DATE_pn-libxt = "03/2010"
RECIPE_COMMENTS_pn-libxt = ""
+RECIPE_LAST_UPDATE_pn-libxt = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxt = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxv = "green"
-DEPENDENCY_CHECK_pn-libxv = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxv = "not done"
RECIPE_LATEST_VERSION_pn-libxv = "1.0.5"
RECIPE_NO_OF_PATCHES_pn-libxv = "0"
RECIPE_INTEL_SECTION_pn-libxv = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxv = "1+ years"
RECIPE_LATEST_RELEASE_DATE_pn-libxv = "10/2009"
RECIPE_COMMENTS_pn-libxv = ""
+RECIPE_LAST_UPDATE_pn-libxv = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxv = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxvmc = "green"
-DEPENDENCY_CHECK_pn-libxvmc = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxvmc = "not done"
RECIPE_LATEST_VERSION_pn-libxvmc = "1.0.5"
RECIPE_NO_OF_PATCHES_pn-libxvmc = "0"
RECIPE_INTEL_SECTION_pn-libxvmc = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxvmc = "3 years"
RECIPE_LATEST_RELEASE_DATE_pn-libxvmc = "10/2009"
RECIPE_COMMENTS_pn-libxvmc = ""
+RECIPE_LAST_UPDATE_pn-libxvmc = "Nov 17, 2010"
RECIPE_MAINTAINER_pn-libxvmc = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxxf86misc = "green"
-DEPENDENCY_CHECK_pn-libxxf86misc = "not done"
-RECIPE_LATEST_VERSION_pn-libxxf86misc = "1.0.2"
+RECIPE_DEPENDENCY_CHECK_pn-libxxf86misc = "not done"
+RECIPE_LATEST_VERSION_pn-libxxf86misc = "1.0.3"
RECIPE_NO_OF_PATCHES_pn-libxxf86misc = "0"
RECIPE_INTEL_SECTION_pn-libxxf86misc = "x11/libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxxf86misc = "3 years"
-RECIPE_LATEST_RELEASE_DATE_pn-libxxf86misc = "10/2009"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxxf86misc = "1+ years"
+RECIPE_LATEST_RELEASE_DATE_pn-libxxf86misc = "Nov 21, 2010"
RECIPE_COMMENTS_pn-libxxf86misc = ""
+RECIPE_LAST_UPDATE_pn-libxxf86misc = "Jan 5, 2011"
RECIPE_MAINTAINER_pn-libxxf86misc = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxxf86vm = "green"
-DEPENDENCY_CHECK_pn-libxxf86vm = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxxf86vm = "not done"
RECIPE_LATEST_VERSION_pn-libxxf86vm = "1.1.0"
RECIPE_NO_OF_PATCHES_pn-libxxf86vm = "0"
RECIPE_INTEL_SECTION_pn-libxxf86vm = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxxf86vm = "2 months"
RECIPE_LATEST_RELEASE_DATE_pn-libxxf86vm = "10/2009"
RECIPE_COMMENTS_pn-libxxf86vm = ""
+RECIPE_LAST_UPDATE_pn-libxxf86vm = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxxf86vm = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxcursor = "green"
-DEPENDENCY_CHECK_pn-libxcursor = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxcursor = "not done"
RECIPE_LATEST_VERSION_pn-libxcursor = "1.1.10"
RECIPE_NO_OF_PATCHES_pn-libxcursor = "0"
RECIPE_INTEL_SECTION_pn-libxcursor = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxcursor = "2 years"
RECIPE_LATEST_RELEASE_DATE_pn-libxcursor = "08/2009"
RECIPE_COMMENTS_pn-libxcursor = ""
+RECIPE_LAST_UPDATE_pn-libxcursor = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxcursor = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxdamage = "green"
-DEPENDENCY_CHECK_pn-libxdamage = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxdamage = "not done"
RECIPE_LATEST_VERSION_pn-libxdamage = "1.1.2"
RECIPE_NO_OF_PATCHES_pn-libxdamage = "0"
RECIPE_INTEL_SECTION_pn-libxdamage = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxdamage = "2 years"
RECIPE_LATEST_RELEASE_DATE_pn-libxdamage = "10/2009"
RECIPE_COMMENTS_pn-libxdamage = ""
+RECIPE_LAST_UPDATE_pn-libxdamage = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxdamage = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxdmcp = "green"
-DEPENDENCY_CHECK_pn-libxdmcp = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxdmcp = "not done"
RECIPE_LATEST_VERSION_pn-libxdmcp = "1.0.3"
RECIPE_NO_OF_PATCHES_pn-libxdmcp = "0"
RECIPE_INTEL_SECTION_pn-libxdmcp = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxdmcp = "3 years"
RECIPE_LATEST_RELEASE_DATE_pn-libxdmcp = "09/2009"
RECIPE_COMMENTS_pn-libxdmcp = ""
+RECIPE_LAST_UPDATE_pn-libxdmcp = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxdmcp = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxext = "green"
-DEPENDENCY_CHECK_pn-libxext = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxext = "not done"
RECIPE_LATEST_VERSION_pn-libxext = "1.1.2"
RECIPE_NO_OF_PATCHES_pn-libxext = "0"
RECIPE_INTEL_SECTION_pn-libxext = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxext = "1 year"
RECIPE_LATEST_RELEASE_DATE_pn-libxext = "06/2009"
RECIPE_COMMENTS_pn-libxext = ""
+RECIPE_LAST_UPDATE_pn-libxext = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxext = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxfixes = "green"
-DEPENDENCY_CHECK_pn-libxfixes = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxfixes = "not done"
RECIPE_LATEST_VERSION_pn-libxfixes = "4.0.4"
RECIPE_NO_OF_PATCHES_pn-libxfixes = "0"
RECIPE_INTEL_SECTION_pn-libxfixes = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxfixes = "3 years"
RECIPE_LATEST_RELEASE_DATE_pn-libxfixes = "10/2009"
RECIPE_COMMENTS_pn-libxfixes = ""
+RECIPE_LAST_UPDATE_pn-libxfixes = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxfixes = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxft = "green"
-DEPENDENCY_CHECK_pn-libxft = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxft = "not done"
RECIPE_LATEST_VERSION_pn-libxft = "2.1.14"
RECIPE_NO_OF_PATCHES_pn-libxft = "0"
RECIPE_INTEL_SECTION_pn-libxft = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxft = "1 year"
RECIPE_LATEST_RELEASE_DATE_pn-libxft = "10/2009"
RECIPE_COMMENTS_pn-libxft = ""
+RECIPE_LAST_UPDATE_pn-libxft = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxft = "Dexuan Cui <dexuan.cui@intel.com>"
DISTRO_PN_ALIAS_pn-libxft = "Mandriva=libxft Debian=libxft2 Ubuntu=libxft2"
RECIPE_STATUS_pn-libxkbfile = "green"
-DEPENDENCY_CHECK_pn-libxkbfile = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxkbfile = "not done"
RECIPE_LATEST_VERSION_pn-libxkbfile = "1.0.6"
RECIPE_NO_OF_PATCHES_pn-libxkbfile = "0"
RECIPE_INTEL_SECTION_pn-libxkbfile = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxkbfile = "1+ years"
RECIPE_LATEST_RELEASE_DATE_pn-libxkbfile = "10/2009"
RECIPE_COMMENTS_pn-libxkbfile = ""
+RECIPE_LAST_UPDATE_pn-libxkbfile = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxkbfile = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-pixman = "green"
-DEPENDENCY_CHECK_pn-pixman = "not done"
-RECIPE_LATEST_VERSION_pn-pixman = "0.18.2"
+RECIPE_DEPENDENCY_CHECK_pn-pixman = "not done"
+RECIPE_LATEST_VERSION_pn-pixman = "0.21.4"
+RECIPE_NO_UPDATE_REASON_pn-pixman = "Do not upgrade to version: 0.21.4 because it's a development snapshot. pixman's stable releases have even minor version numbers."
RECIPE_NO_OF_PATCHES_pn-pixman = "0"
RECIPE_INTEL_SECTION_pn-pixman = "x11/libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-pixman = "1 month"
-RECIPE_LATEST_RELEASE_DATE_pn-pixman = "05/2010"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-pixman = "2 months"
+RECIPE_LATEST_RELEASE_DATE_pn-pixman = "Jan 19, 2011"
RECIPE_COMMENTS_pn-pixman = ""
+RECIPE_LAST_UPDATE_pn-pixman = "Jan 31, 2011"
RECIPE_MAINTAINER_pn-pixman = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-xtrans = "green"
-DEPENDENCY_CHECK_pn-xtrans = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-xtrans = "not done"
RECIPE_LATEST_VERSION_pn-xtrans = "1.2.5"
RECIPE_NO_OF_PATCHES_pn-xtrans = "0"
RECIPE_INTEL_SECTION_pn-xtrans = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xtrans = "3 months"
RECIPE_LATEST_RELEASE_DATE_pn-xtrans = "10/2009"
RECIPE_COMMENTS_pn-xtrans = ""
+RECIPE_LAST_UPDATE_pn-xtrans = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-xtrans = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxmu = "green"
-DEPENDENCY_CHECK_pn-libxmu = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxmu = "not done"
RECIPE_LATEST_VERSION_pn-libxmu = "1.0.5"
RECIPE_NO_OF_PATCHES_pn-libxmu = "0"
RECIPE_INTEL_SECTION_pn-libxmu = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxmu = "1+ years"
RECIPE_LATEST_RELEASE_DATE_pn-libxmu = "09/2009"
RECIPE_COMMENTS_pn-libxmu = ""
+RECIPE_LAST_UPDATE_pn-libxmu = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxmu = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libpciaccess = "green"
-DEPENDENCY_CHECK_pn-libpciaccess = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libpciaccess = "not done"
RECIPE_LATEST_VERSION_pn-libpciaccess = "0.11.0"
RECIPE_NO_OF_PATCHES_pn-libpciaccess = "0"
RECIPE_INTEL_SECTION_pn-libpciaccess = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libpciaccess = "1+ years"
RECIPE_LATEST_RELEASE_DATE_pn-libpciaccess = "12/2009"
RECIPE_COMMENTS_pn-libpciaccess = ""
+RECIPE_LAST_UPDATE_pn-libpciaccess = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libpciaccess = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-xkeyboard-config = "green"
-DEPENDENCY_CHECK_pn-xkeyboard-config = "not done"
-RECIPE_LATEST_VERSION_pn-xkeyboard-config = "1.9"
+RECIPE_DEPENDENCY_CHECK_pn-xkeyboard-config = "not done"
+RECIPE_LATEST_VERSION_pn-xkeyboard-config = "2.1"
RECIPE_NO_OF_PATCHES_pn-xkeyboard-config = "0"
RECIPE_INTEL_SECTION_pn-xkeyboard-config = "x11/libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xkeyboard-config = "4 months"
-RECIPE_LATEST_RELEASE_DATE_pn-xkeyboard-config = "05/2010"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xkeyboard-config = "3+ months"
+RECIPE_LATEST_RELEASE_DATE_pn-xkeyboard-config = "Jan 11, 2011"
RECIPE_COMMENTS_pn-xkeyboard-config = ""
+RECIPE_LAST_UPDATE_pn-xkeyboard-config = "Jan 28, 2011"
RECIPE_MAINTAINER_pn-xkeyboard-config = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-util-macros = "green"
DISTRO_PN_ALIAS_pn-util-macros = "Meego=xorg-x11-util-macros Fedora=xorg-x11-util-macros Mandriva=x11-util-macros"
-DEPENDENCY_CHECK_pn-util-macros = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-util-macros = "not done"
RECIPE_LATEST_VERSION_pn-util-macros = "1.10.0"
RECIPE_NO_OF_PATCHES_pn-util-macros = "1"
RECIPE_PATCH_pn-util-macros+unbreak_cross_compile = "the patch isn't needed any longer since the upstream has fixed the cross-compile issue, so is removed from the recipe file"
@@ -4041,10 +4411,11 @@ RECIPE_INTEL_SECTION_pn-util-macros = "x11/utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-util-macros = "2 days"
RECIPE_LATEST_RELEASE_DATE_pn-util-macros = "06/2010"
RECIPE_COMMENTS_pn-util-macros = ""
+RECIPE_LAST_UPDATE_pn-util-macros = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-util-macros = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-fontconfig = "green"
-DEPENDENCY_CHECK_pn-fontconfig = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-fontconfig = "not done"
RECIPE_LATEST_VERSION_pn-fontconfig = "2.8.0"
RECIPE_NO_OF_PATCHES_pn-fontconfig = "1"
RECIPE_PATCH_pn-fontconfig+fix-pkgconfig = "an one-line patch; fix the linkage to freetype in fontconfig.pc.in"
@@ -4052,32 +4423,34 @@ RECIPE_INTEL_SECTION_pn-fontconfig = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-fontconfig = "2 months"
RECIPE_LATEST_RELEASE_DATE_pn-fontconfig = "11/2009"
RECIPE_COMMENTS_pn-fontconfig = ""
+RECIPE_LAST_UPDATE_pn-fontconfig = "Jul 2, 2010"
RECIPE_MAINTAINER_pn-fontconfig = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-freetype = "green"
-DEPENDENCY_CHECK_pn-freetype = "not done"
-RECIPE_LATEST_VERSION_pn-freetype = "2.4.3"
-RECIPE_NO_OF_PATCHES_pn-freetype = "2"
-RECIPE_PATCH_pn-freetype+fix-x86_64-build = "a two-line simple fix to builds/unix/configure.{raw,ac}; 2.3.12 has integrated it; so removed the patch in the new recipe file"
-RECIPE_PATCH_pn-freetype+fix-x86_64-build = "a two-line simple fix to builds/unix/freetype-config.in; 2.3.12 has integrated it; so removed the patch in the new recipe file"
+RECIPE_DEPENDENCY_CHECK_pn-freetype = "not done"
+RECIPE_LATEST_VERSION_pn-freetype = "2.4.4"
+RECIPE_NO_OF_PATCHES_pn-freetype = "1"
+RECIPE_PATCH_pn-freetype+no-hardcode = "fix freetype-config.in"
RECIPE_INTEL_SECTION_pn-freetype = "libs"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-freetype = "4 months"
-RECIPE_LATEST_RELEASE_DATE_pn-freetype = "02/2010"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-freetype = "1+ months"
+RECIPE_LATEST_RELEASE_DATE_pn-freetype = "Nov 28, 2010"
RECIPE_COMMENTS_pn-freetype = ""
+RECIPE_LAST_UPDATE_pn-freetype = "Jan 28, 2011"
RECIPE_MAINTAINER_pn-freetype = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-librsvg = "green"
-DEPENDENCY_CHECK_pn-librsvg = "not done"
-RECIPE_LATEST_VERSION_pn-librsvg = "2.26.3"
+RECIPE_DEPENDENCY_CHECK_pn-librsvg = "not done"
+RECIPE_LATEST_VERSION_pn-librsvg = "2.32.1"
RECIPE_NO_OF_PATCHES_pn-librsvg = "0"
RECIPE_INTEL_SECTION_pn-librsvg = "x11/utils"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-librsvg = "10 months"
-RECIPE_LATEST_RELEASE_DATE_pn-librsvg = "05/2010"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-librsvg = "1+ months"
+RECIPE_LATEST_RELEASE_DATE_pn-librsvg = "Nov 13, 2010"
RECIPE_COMMENTS_pn-librsvg = ""
+RECIPE_LAST_UPDATE_pn-librsvg = "Jan 5, 2011"
RECIPE_MAINTAINER_pn-librsvg = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libx11 = "green"
-DEPENDENCY_CHECK_pn-libx11 = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libx11 = "not done"
RECIPE_LATEST_VERSION_pn-libx11 = "1.3.4"
RECIPE_NO_OF_PATCHES_pn-libx11 = "3"
RECIPE_PATCH_pn-libx11+x11_disable_makekeys = "fix to src/util/Makefile.am"
@@ -4087,10 +4460,11 @@ RECIPE_INTEL_SECTION_pn-libx11 = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libx11 = "5 months"
RECIPE_LATEST_RELEASE_DATE_pn-libx11 = "06/2010"
RECIPE_COMMENTS_pn-libx11 = ""
+RECIPE_LAST_UPDATE_pn-libx11 = "Jul 9, 2010"
RECIPE_MAINTAINER_pn-libx11 = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libx11-trim = "green"
-DEPENDENCY_CHECK_pn-libx11-trim = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libx11-trim = "not done"
RECIPE_LATEST_VERSION_pn-libx11-trim = "1.3.4"
RECIPE_NO_OF_PATCHES_pn-libx11-trim = "3"
RECIPE_PATCH_pn-libx11-trim+x11_disable_makekeys = "fix to src/util/Makefile.am"
@@ -4100,185 +4474,252 @@ RECIPE_INTEL_SECTION_pn-libx11-trim = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libx11-trim = "5 months"
RECIPE_LATEST_RELEASE_DATE_pn-libx11-trim = "06/2010"
RECIPE_COMMENTS_pn-libx11-trim = ""
+RECIPE_LAST_UPDATE_pn-libx11-trim = "Jul 9, 2010"
RECIPE_MAINTAINER_pn-libx11-trim = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-gnome-vfs = "green"
-DEPENDENCY_CHECK_pn-gnome-vfs = "not done"
-RECIPE_LATEST_VERSION_pn-gnome-vfs = "2.24.3"
+RECIPE_DEPENDENCY_CHECK_pn-gnome-vfs = "not done"
+RECIPE_LATEST_VERSION_pn-gnome-vfs = "2.24.4"
RECIPE_NO_OF_PATCHES_pn-gnome-vfs = "2"
-RECIPE_INTEL_SECTION_pn-gnome-vfs = "graphic lib"
-RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gnome-vfs = "5 months"
-RECIPE_LATEST_RELEASE_DATE_pn-gnome-vfs = "03/2010"
+RECIPE_INTEL_SECTION_pn-gnome-vfs = "gnome/lib"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gnome-vfs = "6 months"
+RECIPE_LATEST_RELEASE_DATE_pn-gnome-vfs = "Sep 28, 2010"
RECIPE_COMMENTS_pn-gnome-vfs = ""
+RECIPE_LAST_UPDATE_pn-gnome-vfs = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-gnome-vfs = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-xcb-util = "green"
-DEPENDENCY_CHECK_pn-xcb-util = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-xcb-util = "not done"
RECIPE_LATEST_VERSION_pn-xcb-util = "0.3.6"
RECIPE_NO_OF_PATCHES_pn-xcb-util = "0"
RECIPE_INTEL_SECTION_pn-xcb-util = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xcb-util = "3 months"
RECIPE_LATEST_RELEASE_DATE_pn-xcb-util = "08/24/2009"
RECIPE_COMMENTS_pn-xcb-util = ""
+RECIPE_LAST_UPDATE_pn-xcb-util = "Jul 22, 2010"
RECIPE_MAINTAINER_pn-xcb-util = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-startup-notification = "green"
-DEPENDENCY_CHECK_pn-startup-notification = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-startup-notification = "not done"
RECIPE_LATEST_VERSION_pn-startup-notification = "0.10"
RECIPE_NO_OF_PATCHES_pn-startup-notification = "0"
RECIPE_INTEL_SECTION_pn-startup-notification = "x11/libs"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-startup-notification = "2 years"
RECIPE_LATEST_RELEASE_DATE_pn-startup-notification = "04/13/2009"
RECIPE_COMMENTS_pn-startup-notification = "in recipe, SECTION is libs but to be more accurate it should be x11/libs"
+RECIPE_LAST_UPDATE_pn-startup-notification = "Jul 22, 2010"
RECIPE_MAINTAINER_pn-startup-notification = "Dexuan Cui <dexuan.cui@intel.com>"
-RECIPE_STATUS_pn-galago-daemon = "red"
+RECIPE_STATUS_pn-galago-daemon = "green"
+RECIPE_DEPENDENCY_CHECK_pn-galago-daemon = "not done"
RECIPE_LATEST_VERSION_pn-galago-daemon = "0.5.1"
+RECIPE_NO_OF_PATCHES_pn-galago-daemon = "0"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-galago-daemon = "5+ months"
+RECIPE_LATEST_RELEASE_DATE_pn-galago-daemon = "Oct 7, 2006"
+RECIPE_COMMENTS_pn-galago-daemon = ""
+RECIPE_LAST_UPDATE_pn-galago-daemon = "Apr 11, 2007"
RECIPE_MAINTAINER_pn-galago-daemon = "Dexuan Cui <dexuan.cui@intel.com>"
-RECIPE_STATUS_pn-gnome-doc-utils = "red"
-RECIPE_LATEST_VERSION_pn-gnome-doc-utils = "0.20.1"
+RECIPE_STATUS_pn-gnome-doc-utils = "green"
+RECIPE_DEPENDENCY_CHECK_pn-gnome-doc-utils = "not done"
+RECIPE_LATEST_VERSION_pn-gnome-doc-utils = "0.20.4"
+RECIPE_NO_OF_PATCHES_pn-gnome-doc-utils = "0"
+RECIPE_INTEL_SECTION_pn-gnome-doc-utils = "utils"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gnome-doc-utils = "less than 1 month"
+RECIPE_LATEST_RELEASE_DATE_pn-gnome-doc-utils = "Jan 10, 2011"
+RECIPE_COMMENTS_pn-gnome-doc-utils = ""
+RECIPE_LAST_UPDATE_pn-gnome-doc-utils = "Jan 28, 2011"
RECIPE_MAINTAINER_pn-gnome-doc-utils = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-gnome-settings-daemon = "red"
RECIPE_LATEST_VERSION_pn-gnome-settings-daemon = "2.31.2"
RECIPE_MAINTAINER_pn-gnome-settings-daemon = "Dexuan Cui <dexuan.cui@intel.com>"
-RECIPE_STATUS_pn-libunique = "red"
-RECIPE_LATEST_VERSION_pn-libunique = "1.1.6"
+RECIPE_STATUS_pn-libunique = "green"
+RECIPE_DEPENDENCY_CHECK_pn-libunique = "not done"
+RECIPE_LATEST_VERSION_pn-libunique = "2.91.4"
+RECIPE_NO_OF_PATCHES_pn-libunique = "0"
+RECIPE_INTEL_SECTION_pn-libunique = "x11/libs"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libunique = "6 months"
+RECIPE_LATEST_RELEASE_DATE_pn-libunique = "Dec 7, 2010"
+RECIPE_COMMENTS_pn-libunique = ""
+RECIPE_LAST_UPDATE_pn-libunique = "Jan 28, 2011"
+RECIPE_NO_UPDATE_REASON_pn-libunique = "Do not upgrade to version: 2.91.4 because it requires gtk+ >= 2.90.0 and the stable version of gtk+ used by poky is 2.20.1"
RECIPE_MAINTAINER_pn-libunique = "Dexuan Cui <dexuan.cui@intel.com>"
-RECIPE_STATUS_pn-ttf-bitstream-vera = "red"
+RECIPE_STATUS_pn-ttf-bitstream-vera = "green"
+DISTRO_PN_ALIAS_pn-ttf-bitstream-vera = "Debian=ttf-bitstream-vera Ubuntu=ttf-bitstream-vera"
+RECIPE_DEPENDENCY_CHECK_pn-ttf-bitstream-vera = "not done"
RECIPE_LATEST_VERSION_pn-ttf-bitstream-vera = "1.10"
+RECIPE_NO_OF_PATCHES_pn-ttf-bitstream-vera = "0"
+RECIPE_INTEL_SECTION_pn-ttf-bitstream-vera = "x11/fonts"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-ttf-bitstream-vera = "n/a"
+RECIPE_LATEST_RELEASE_DATE_pn-ttf-bitstream-vera = "Apr 16, 2003"
+RECIPE_COMMENTS_pn-ttf-bitstream-vera = "can't find the release date of any older version in the SRC_URI link"
+RECIPE_LAST_UPDATE_pn-ttf-bitstream-vera = "Jun 26, 2007"
RECIPE_MAINTAINER_pn-ttf-bitstream-vera = "Dexuan Cui <dexuan.cui@intel.com>"
-DISTRO_PN_ALIAS_pn-ttf-bitstream-vera = "Debian=ttf-bitstream-vera Ubuntu=ttf-bitstream-vera"
-RECIPE_STATUS_pn-libart-lgpl = "red"
+RECIPE_STATUS_pn-libart-lgpl = "green"
+RECIPE_DEPENDENCY_CHECK_pn-libart-lgpl = "not done"
RECIPE_LATEST_VERSION_pn-libart-lgpl = "2.3.21"
+RECIPE_NO_OF_PATCHES_pn-libart-lgpl = "0"
+RECIPE_INTEL_SECTION_pn-libart-lgpl = "x11/libs"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libart-lgpl = "2+ years"
+RECIPE_LATEST_RELEASE_DATE_pn-libart-lgpl = "Apr 1, 2010"
+RECIPE_COMMENTS_pn-libart-lgpl = ""
+RECIPE_LAST_UPDATE_pn-libart-lgpl = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libart-lgpl = "Dexuan Cui <dexuan.cui@intel.com>"
-RECIPE_STATUS_pn-applewmproto = "red"
-DISTRO_PN_ALIAS_pn-applewmproto = ""
-RECIPE_LATEST_VERSION_pn-applewmproto = "1.4.1"
-RECIPE_MAINTAINER_pn-applewmproto = "Dexuan Cui <dexuan.cui@intel.com>"
-DISTRO_PN_ALIAS_pn-applewmproto = "Mandriva=x11-proto-devel OpenSuSE=xorg-x11-proto-devel"
-
-RECIPE_STATUS_pn-libapplewm = "red"
-RECIPE_LATEST_VERSION_pn-libapplewm = "1.4.0"
-RECIPE_MAINTAINER_pn-libapplewm = "Dexuan Cui <dexuan.cui@intel.com>"
-DISTRO_PN_ALIAS_pn-libapplewm = "upstream=http://cgit.freedesktop.org/xorg/lib/libAppleWM/ Mandriva=libapplewm"
-
-RECIPE_STATUS_pn-libfs = "red"
-RECIPE_LATEST_VERSION_pn-libfs = "1.0.2"
-RECIPE_MAINTAINER_pn-libfs = "Dexuan Cui <dexuan.cui@intel.com>"
-
RECIPE_STATUS_pn-poppler = "red"
RECIPE_LATEST_VERSION_pn-poppler = "0.12.4"
+RECIPE_LAST_UPDATE_pn-poppler = "Dec 31, 2008"
RECIPE_MAINTAINER_pn-poppler = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-poppler-data = "red"
RECIPE_LATEST_VERSION_pn-poppler-data = "0.4.2"
+RECIPE_LAST_UPDATE_pn-poppler-data = "May 4, 2007"
RECIPE_MAINTAINER_pn-poppler-data = "Dexuan Cui <dexuan.cui@intel.com>"
-RECIPE_STATUS_pn-liblbxutil = "red"
+RECIPE_STATUS_pn-liblbxutil = "green"
+DISTRO_PN_ALIAS_pn-liblbxutil = "Mandriva=liblbxutil OpenSuse=xorg-x11-devel"
+RECIPE_DEPENDENCY_CHECK_pn-liblbxutil = "not done"
RECIPE_LATEST_VERSION_pn-liblbxutil = "1.1.0"
+RECIPE_NO_OF_PATCHES_pn-liblbxutil = "0"
+RECIPE_INTEL_SECTION_pn-liblbxutil = "x11/libs"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-liblbxutil = "3+ years"
+RECIPE_LATEST_RELEASE_DATE_pn-liblbxutil = "Dec 4, 2009"
+RECIPE_COMMENTS_pn-liblbxutil = ""
+RECIPE_LAST_UPDATE_pn-liblbxutil = "Jul 6, 2010"
RECIPE_MAINTAINER_pn-liblbxutil = "Dexuan Cui <dexuan.cui@intel.com>"
-DISTRO_PN_ALIAS_pn-liblbxutil = "Mandriva=liblbxutil OpenSuse=xorg-x11-devel"
-
-RECIPE_STATUS_pn-liboldx = "red"
-RECIPE_LATEST_VERSION_pn-liboldx = "1.0.1"
-RECIPE_MAINTAINER_pn-liboldx = "Dexuan Cui <dexuan.cui@intel.com>"
-DISTRO_PN_ALIAS_pn-liboldX = "OSPDT Mandriva=liboldx"
-
-RECIPE_STATUS_pn-libwindowswm = "red"
-RECIPE_LATEST_VERSION_pn-libwindowswm = "1.0.1"
-RECIPE_MAINTAINER_pn-libwindowswm = "Dexuan Cui <dexuan.cui@intel.com>"
-DISTRO_PN_ALIAS_pn-libwindowswm = "Mandriva=libwindowswm OpenSuse=xorg-x11-devel"
RECIPE_STATUS_pn-libxaw = "red"
RECIPE_LATEST_VERSION_pn-libxaw = "1.0.7"
+RECIPE_LAST_UPDATE_pn-libxaw = "Dec 31, 2008"
RECIPE_MAINTAINER_pn-libxaw = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxevie = "red"
RECIPE_LATEST_VERSION_pn-libxevie = "1.0.2"
+RECIPE_LAST_UPDATE_pn-libxevie = "May 9, 2007"
RECIPE_MAINTAINER_pn-libxevie = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxkbui = "red"
RECIPE_LATEST_VERSION_pn-libxkbui = "1.0.2"
+RECIPE_LAST_UPDATE_pn-libxkbui = "Jul 3, 2007"
RECIPE_MAINTAINER_pn-libxkbui = "Dexuan Cui <dexuan.cui@intel.com>"
-RECIPE_STATUS_pn-libxpm = "red"
-RECIPE_LATEST_VERSION_pn-libxpm = "3.5.8"
+RECIPE_STATUS_pn-libxpm = "green"
+RECIPE_DEPENDENCY_CHECK_pn-libxpm = "not done"
+RECIPE_LATEST_VERSION_pn-libxpm = "3.5.9"
+RECIPE_NO_OF_PATCHES_pn-libxpm = "0"
+RECIPE_INTEL_SECTION_pn-libxpm = "x11/libs"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxpm = "1 year"
+RECIPE_LATEST_RELEASE_DATE_pn-libxpm = "Oct 29, 2010"
+RECIPE_COMMENTS_pn-libxpm = ""
+RECIPE_LAST_UPDATE_pn-libxpm = "Nov 24, 2010"
RECIPE_MAINTAINER_pn-libxpm = "Dexuan Cui <dexuan.cui@intel.com>"
-RECIPE_STATUS_pn-libxprintapputil = "red"
+RECIPE_STATUS_pn-libxprintapputil = "green"
+DISTRO_PN_ALIAS_pn-libxprintapputil1 = "Debian=libxprintapputil1 Ubuntu=libxprintapputil1 Mandriva=libxprintapputil"
+RECIPE_DEPENDENCY_CHECK_pn-libxprintapputil = "not done"
RECIPE_LATEST_VERSION_pn-libxprintapputil = "1.0.1"
+RECIPE_NO_OF_PATCHES_pn-libxprintapputil = "0"
+RECIPE_INTEL_SECTION_pn-libxprintapputil = "x11/libs"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxprintapputil = "n/a"
+RECIPE_LATEST_RELEASE_DATE_pn-libxprintapputil = "Jan 18, 2006"
+RECIPE_COMMENTS_pn-libxprintapputil = "can't find the release date of any older version in the SRC_URI link"
+RECIPE_LAST_UPDATE_pn-libxprintapputil = ""Jul 3, 2007"
RECIPE_MAINTAINER_pn-libxprintapputil = "Dexuan Cui <dexuan.cui@intel.com>"
-DISTRO_PN_ALIAS_pn-libxprintapputil1 = "Debian=libxprintapputil1 Ubuntu=libxprintapputil1 Mandriva=libxprintapputil"
-RECIPE_STATUS_pn-libxprintutil = "red"
+RECIPE_STATUS_pn-libxprintutil = "green"
+RECIPE_DEPENDENCY_CHECK_pn-libxprintutil = "not done"
RECIPE_LATEST_VERSION_pn-libxprintutil = "1.0.1"
+RECIPE_NO_OF_PATCHES_pn-libxprintutil = "0"
+RECIPE_INTEL_SECTION_pn-libxprintutil = "x11/libs"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxprintutil = "n/a"
+RECIPE_LATEST_RELEASE_DATE_pn-libxprintutil = "Jan 18, 2006"
+RECIPE_COMMENTS_pn-libxprintutil = "can't find the release date of any older version in the SRC_URI link"
+RECIPE_LAST_UPDATE_pn-libxprintutil = ""Jul 3, 2007"
RECIPE_MAINTAINER_pn-libxprintutil = "Dexuan Cui <dexuan.cui@intel.com>"
-RECIPE_STATUS_pn-libxscrnsaver = "red"
-RECIPE_LATEST_VERSION_pn-libxscrnsaver = "1.2.0"
-RECIPE_MAINTAINER_pn-libxscrnsaver = "Dexuan Cui <dexuan.cui@intel.com>"
+RECIPE_STATUS_pn-libxscrnsaver = "green"
DISTRO_PN_ALIAS_pn-libxscrnsaver = "Fedora=libXScrnSaver Ubuntu=libxss1 Mandriva=libxscrnsaver"
+DEPENDENCY_CHECK_pn-libxscrnsaver = "not done"
+RECIPE_LATEST_VERSION_pn-libxscrnsaver = "1.2.1"
+RECIPE_NO_OF_PATCHES_pn-libxscrnsaver = "0"
+RECIPE_INTEL_SECTION_pn-libxscrnsaver = "x11/libs"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxscrnsaver = "1+ years"
+RECIPE_LATEST_RELEASE_DATE_pn-libxscrnsaver = "Oct 29, 2010"
+RECIPE_COMMENTS_pn-libxscrnsaver = ""
+RECIPE_LAST_UPDATE_pn-libxscrnsaver = "Nov 16, 2010"
+RECIPE_MAINTAINER_pn-libxscrnsaver = "Dexuan Cui <dexuan.cui@intel.com>"
-RECIPE_STATUS_pn-libxtrap = "red"
+RECIPE_STATUS_pn-libxtrap = "green"
+RECIPE_DEPENDENCY_CHECK_pn-libxtrap = "not done"
RECIPE_LATEST_VERSION_pn-libxtrap = "1.0.0"
+RECIPE_NO_OF_PATCHES_pn-libxtrap = "0"
+RECIPE_INTEL_SECTION_pn-libxtrap = "x11/libs"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxtrap = "n/a"
+RECIPE_LATEST_RELEASE_DATE_pn-libxtrap = "Jan 18, 2006"
+RECIPE_COMMENTS_pn-libxtrap = "can't find the release date of any older version in the SRC_URI link"
+RECIPE_LAST_UPDATE_pn-libxtrap = ""Jul 3, 2007"
RECIPE_MAINTAINER_pn-libxtrap = "Dexuan Cui <dexuan.cui@intel.com>"
-RECIPE_STATUS_pn-windowswmproto = "red"
-RECIPE_LATEST_VERSION_pn-windowswmproto = "1.0.4"
-RECIPE_MAINTAINER_pn-windowswmproto = "Dexuan Cui <dexuan.cui@intel.com>"
-DISTRO_PN_ALIAS_pn-windowswmproto = "Mandriva=x11-proto-devel OpenSuSE=xorg-x11-proto-devel"
-
-RECIPE_STATUS_pn-xproxymanagementprotocol = "red"
+RECIPE_STATUS_pn-xproxymanagementprotocol = "green"
DISTRO_PN_ALIAS_pn-xproxymanagementprotocol = "Meego=xorg-x11-proto-xproxymanagementprotocol"
+DEPENDENCY_CHECK_pn-xproxymanagementprotocol = "not done"
RECIPE_LATEST_VERSION_pn-xproxymanagementprotocol = "1.0.3"
+RECIPE_NO_OF_PATCHES_pn-xproxymanagementprotocol = "0"
+RECIPE_INTEL_SECTION_pn-xproxymanagementprotocol = "x11/libs"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xproxymanagementprotocol = "3+ years"
+RECIPE_LATEST_RELEASE_DATE_pn-xproxymanagementprotocol = "Oct 12, 2009"
+RECIPE_COMMENTS_pn-xproxymanagementprotocol = ""
+RECIPE_LAST_UPDATE_pn-xproxymanagementprotocol = "Feb 3, 2010"
RECIPE_MAINTAINER_pn-xproxymanagementprotocol = "Dexuan Cui <dexuan.cui@intel.com>"
RECIPE_STATUS_pn-libxklavier = "red"
RECIPE_LATEST_VERSION_pn-libxklavier = "5.0"
+RECIPE_LAST_UPDATE_pn-libxklavier = "Jun 10, 2009"
RECIPE_MAINTAINER_pn-libxklavier = "Dexuan Cui <dexuan.cui@intel.com>"
#
# distro tracking fields for X11 UX
#
RECIPE_STATUS_pn-gnome-mime-data = "green" # no update needed
-DEPENDENCY_CHECK_pn-gnome-mime-data = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-gnome-mime-data = "not done"
RECIPE_LATEST_VERSION_pn-gnome-mime-data = "2.18.0"
RECIPE_NO_OF_PATCHES_pn-gnome-mime-data = "1"
RECIPE_INTEL_SECTION_pn-gnome-mime-data = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gnome-mime-data = "5 months"
RECIPE_LATEST_RELEASE_DATE_pn-gnome-mime-data = "04/2007"
RECIPE_COMMENTS_pn-gnome-mime-data = ""
+RECIPE_LAST_UPDATE_pn-gnome-mime-data = "Aug 2, 2007"
RECIPE_MAINTAINER_pn-gnome-mime-data = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-libmatchbox = "green" # no update needed
-DEPENDENCY_CHECK_pn-libmatchbox = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libmatchbox = "not done"
RECIPE_LATEST_VERSION_pn-libmatchbox = "1.9"
RECIPE_NO_OF_PATCHES_pn-libmatchbox = "2"
RECIPE_INTEL_SECTION_pn-libmatchbox = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libmatchbox = "5 months"
RECIPE_LATEST_RELEASE_DATE_pn-libmatchbox = "08/2006"
RECIPE_COMMENTS_pn-libmatchbox = ""
+RECIPE_LAST_UPDATE_pn-libmatchbox = "Aug 7, 2006"
RECIPE_MAINTAINER_pn-libmatchbox = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-libowl = "green" # no update needed
DISTRO_PN_ALIAS_pn-libowl = "Debian=owl OpenedHand"
-DEPENDENCY_CHECK_pn-libowl = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libowl = "not done"
RECIPE_LATEST_VERSION_pn-libowl = "0.0+svnr408"
RECIPE_NO_OF_PATCHES_pn-libowl = "0"
RECIPE_INTEL_SECTION_pn-libowl = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libowl = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-libowl = "09/2008"
RECIPE_COMMENTS_pn-libowl = ""
+RECIPE_LAST_UPDATE_pn-libowl= "Sep 16, 2008"
RECIPE_MAINTAINER_pn-libowl = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-libowl-av = "green" # no update needed
-DEPENDENCY_CHECK_pn-libowl-av = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libowl-av = "not done"
RECIPE_LATEST_VERSION_pn-libowl-av = "0.0+svnr416"
RECIPE_NO_OF_PATCHES_pn-libowl-av = "0"
RECIPE_INTEL_SECTION_pn-libowl-av = "graphic UX"
@@ -4286,226 +4727,266 @@ RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libowl-av = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-libowl-av = "12/2008"
RECIPE_COMMENTS_pn-libowl-av = ""
RECIPE_MAINTAINER_pn-libowl-av = "Zhai Edwin <edwin.zhai@intel.com>"
+RECIPE_LAST_UPDATE_pn-libowl-av = "Nov 19, 2010"
DISTRO_PN_ALIAS_pn-libowl-av = "OpenedHand"
RECIPE_STATUS_pn-matchbox-desktop = "green" # no update needed
-DEPENDENCY_CHECK_pn-matchbox-desktop = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-matchbox-desktop = "not done"
RECIPE_LATEST_VERSION_pn-matchbox-desktop = "2.0+svnr2096"
RECIPE_NO_OF_PATCHES_pn-matchbox-desktop = "0"
RECIPE_INTEL_SECTION_pn-matchbox-desktop = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-matchbox-desktop = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-matchbox-desktop = "12/2008"
RECIPE_COMMENTS_pn-matchbox-desktop = ""
+RECIPE_LAST_UPDATE_pn-matchbox-desktop = "Dec 4, 2008"
RECIPE_MAINTAINER_pn-matchbox-desktop = "Zhai Edwin <edwin.zhai@intel.com>"
DISTRO_PN_ALIAS_pn-matchbox-desktop = "Mandriva=matchbox-desktop Ubuntu=matchbox-desktop"
RECIPE_STATUS_pn-matchbox-desktop-sato = "green" # no update needed
-DEPENDENCY_CHECK_pn-matchbox-desktop-sato = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-matchbox-desktop-sato = "not done"
RECIPE_LATEST_VERSION_pn-matchbox-desktop-sato = "0.0+svnr76"
RECIPE_NO_OF_PATCHES_pn-matchbox-desktop-sato = "0"
RECIPE_INTEL_SECTION_pn-matchbox-desktop-sato = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-matchbox-desktop-sato = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-matchbox-desktop-sato = "07/2007"
RECIPE_COMMENTS_pn-matchbox-desktop-sato = ""
+RECIPE_LAST_UPDATE_pn-matchbox-desktop-sato = "Jul 5, 2007"
RECIPE_MAINTAINER_pn-matchbox-desktop-sato = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-matchbox-session = "green" # no update needed
-DEPENDENCY_CHECK_pn-matchbox-session = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-matchbox-session = "not done"
RECIPE_LATEST_VERSION_pn-matchbox-session = "0.1"
RECIPE_NO_OF_PATCHES_pn-matchbox-session = "0"
RECIPE_INTEL_SECTION_pn-matchbox-session = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-matchbox-session = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-matchbox-session = "02/2004"
RECIPE_COMMENTS_pn-matchbox-session = ""
+RECIPE_LAST_UPDATE_pn-matchbox-session = "Apr 9, 2008"
RECIPE_MAINTAINER_pn-matchbox-session = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-matchbox-session-sato = "green" # no update needed
-DEPENDENCY_CHECK_pn-matchbox-session-sato = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-matchbox-session-sato = "not done"
RECIPE_LATEST_VERSION_pn-matchbox-session-sato = "0.1"
RECIPE_NO_OF_PATCHES_pn-matchbox-session-sato = "0"
RECIPE_INTEL_SECTION_pn-matchbox-session-sato = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-matchbox-session-sato = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-matchbox-session-sato = "06/2007"
RECIPE_COMMENTS_pn-matchbox-session-sato = ""
+RECIPE_LAST_UPDATE_pn-matchbox-session-sato = "Apr 9, 2008"
RECIPE_MAINTAINER_pn-matchbox-session-sato = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-matchbox-terminal = "green" # no update needed
-DEPENDENCY_CHECK_pn-matchbox-terminal = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-matchbox-terminal = "not done"
RECIPE_LATEST_VERSION_pn-matchbox-terminal = "0.0+svnr1816"
RECIPE_NO_OF_PATCHES_pn-matchbox-terminal = "0"
RECIPE_INTEL_SECTION_pn-matchbox-terminal = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-matchbox-terminal = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-matchbox-terminal = "11/2007"
RECIPE_COMMENTS_pn-matchbox-terminal = ""
+RECIPE_LAST_UPDATE_pn-matchbox-terminal = "Aug 18, 2009"
RECIPE_MAINTAINER_pn-matchbox-terminal = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-matchbox-theme-sato = "green" # no update needed
-DEPENDENCY_CHECK_pn-matchbox-theme-sato = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-matchbox-theme-sato = "not done"
RECIPE_LATEST_VERSION_pn-matchbox-theme-sato = "0.1"
RECIPE_NO_OF_PATCHES_pn-matchbox-theme-sato = "0"
RECIPE_INTEL_SECTION_pn-matchbox-theme-sato = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-matchbox-theme-sato = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-matchbox-theme-sato = "07/2007"
RECIPE_COMMENTS_pn-matchbox-theme-sato = ""
+RECIPE_LAST_UPDATE_pn-matchbox-theme-sato = "Jul 31, 2007"
RECIPE_MAINTAINER_pn-matchbox-theme-sato = "Zhai Edwin <edwin.zhai@intel.com>"
+RECIPE_STATUS_pn-matchbox-theme-sato-2 = "green" # no update needed
+RECIPE_DEPENDENCY_CHECK_pn-matchbox-theme-sato-2 = "not done"
+RECIPE_LATEST_VERSION_pn-matchbox-theme-sato-2 = "0.1"
+RECIPE_NO_OF_PATCHES_pn-matchbox-theme-sato-2 = "0"
+RECIPE_INTEL_SECTION_pn-matchbox-theme-sato-2 = "graphic UX"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-matchbox-theme-sato-2 = "n/a"
+RECIPE_LATEST_RELEASE_DATE_pn-matchbox-theme-sato-2 = "07/2007"
+RECIPE_COMMENTS_pn-matchbox-theme-sato-2 = ""
+RECIPE_LAST_UPDATE_pn-matchbox-theme-sato-2 = "Jul 31, 2007"
+RECIPE_MAINTAINER_pn-matchbox-theme-sato-2 = "Zhai Edwin <edwin.zhai@intel.com>"
+
RECIPE_STATUS_pn-sato-icon-theme = "green" # no update needed
-DEPENDENCY_CHECK_pn-sato-icon-theme = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-sato-icon-theme = "not done"
RECIPE_LATEST_VERSION_pn-sato-icon-theme = "0.4.1"
RECIPE_NO_OF_PATCHES_pn-sato-icon-theme = "0"
RECIPE_INTEL_SECTION_pn-sato-icon-theme = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-sato-icon-theme = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-sato-icon-theme = "02/2008"
RECIPE_COMMENTS_pn-sato-icon-theme = ""
+RECIPE_LAST_UPDATE_pn-sato-icon-theme = "Feb 25, 2008"
RECIPE_MAINTAINER_pn-sato-icon-theme = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-tslib = "green" # no update needed
-DEPENDENCY_CHECK_pn-tslib = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-tslib = "not done"
RECIPE_LATEST_VERSION_pn-tslib = "1.0"
RECIPE_NO_OF_PATCHES_pn-tslib = "3"
RECIPE_INTEL_SECTION_pn-tslib = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-tslib = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-tslib = "08/2006"
RECIPE_COMMENTS_pn-tslib = ""
+RECIPE_LAST_UPDATE_pn-tslib = "Aug 17, 2006"
RECIPE_MAINTAINER_pn-tslib = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-xcursor-transparent-theme = "green" # no update needed
-DEPENDENCY_CHECK_pn-xcursor-transparent-theme = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-xcursor-transparent-theme = "not done"
RECIPE_LATEST_VERSION_pn-xcursor-transparent-theme = "0.1.1"
RECIPE_NO_OF_PATCHES_pn-xcursor-transparent-theme = "2"
RECIPE_INTEL_SECTION_pn-xcursor-transparent-theme = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-xcursor-transparent-theme = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-xcursor-transparent-theme = "12/2004"
RECIPE_COMMENTS_pn-xcursor-transparent-theme = ""
+RECIPE_LAST_UPDATE_pn-xcursor-transparent-theme = "Jul 21, 2006"
RECIPE_MAINTAINER_pn-xcursor-transparent-theme = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-screenshot = "green"
-DEPENDENCY_CHECK_pn-screenshot = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-screenshot = "not done"
RECIPE_LATEST_VERSION_pn-screenshot = "0.0+svnr292"
RECIPE_NO_OF_PATCHES_pn-screenshot = "0"
RECIPE_INTEL_SECTION_pn-screenshot = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-screenshot = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-screenshot = "09/2007"
RECIPE_COMMENTS_pn-screenshot = ""
+RECIPE_LAST_UPDATE_pn-screenshot = "Jun 25, 2010"
RECIPE_MAINTAINER_pn-screenshot = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-tasks = "green"
-DEPENDENCY_CHECK_pn-tasks = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-tasks = "not done"
RECIPE_LATEST_VERSION_pn-tasks = "0.18"
RECIPE_NO_OF_PATCHES_pn-tasks = "1"
RECIPE_INTEL_SECTION_pn-tasks = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-tasks = "12 months"
RECIPE_LATEST_RELEASE_DATE_pn-tasks = "07/2010"
RECIPE_COMMENTS_pn-tasks = ""
+RECIPE_LAST_UPDATE_pn-tasks = "Nov 19, 2010"
RECIPE_MAINTAINER_pn-tasks = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-contacts = "green"
-DEPENDENCY_CHECK_pn-contacts = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-contacts = "not done"
RECIPE_LATEST_VERSION_pn-contacts = "0.12+git0+19853893fdb595de6aa59db0d9dc2f9451ed2933"
RECIPE_NO_OF_PATCHES_pn-contacts = "1"
RECIPE_INTEL_SECTION_pn-contacts = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-contacts = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-contacts = "11/2009"
RECIPE_COMMENTS_pn-contacts = ""
+RECIPE_LAST_UPDATE_pn-contacts = "Jun 25, 2010"
RECIPE_MAINTAINER_pn-contacts = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-dates = "green"
-DEPENDENCY_CHECK_pn-dates = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-dates = "not done"
RECIPE_LATEST_VERSION_pn-dates = "0.4.11+git0+514185dc1f6588085fda41eb59898b93d0487dd4"
RECIPE_NO_OF_PATCHES_pn-dates = "1"
RECIPE_INTEL_SECTION_pn-dates = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-dates = "1 month"
RECIPE_LATEST_RELEASE_DATE_pn-dates = "10/2009"
RECIPE_COMMENTS_pn-dates = ""
+RECIPE_LAST_UPDATE_pn-dates = "Jun 25, 2010"
RECIPE_MAINTAINER_pn-dates = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-libcroco = "green"
-DEPENDENCY_CHECK_pn-libcroco = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libcroco = "not done"
RECIPE_LATEST_VERSION_pn-libcroco = "0.6.2"
RECIPE_NO_OF_PATCHES_pn-libcroco = "1"
RECIPE_INTEL_SECTION_pn-libcroco = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libcroco = "35 months"
RECIPE_LATEST_RELEASE_DATE_pn-libcroco = "02/2009"
RECIPE_COMMENTS_pn-libcroco = ""
+RECIPE_LAST_UPDATE_pn-libcroco = "Jun 25, 2010"
RECIPE_MAINTAINER_pn-libcroco = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-leafpad = "green"
-DEPENDENCY_CHECK_pn-leafpad = "not done"
-RECIPE_LATEST_VERSION_pn-leafpad = "0.8.17"
+RECIPE_DEPENDENCY_CHECK_pn-leafpad = "not done"
+RECIPE_LATEST_VERSION_pn-leafpad = "0.8.18.1"
RECIPE_NO_OF_PATCHES_pn-leafpad = "1"
RECIPE_INTEL_SECTION_pn-leafpad = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-leafpad = "10 months"
-RECIPE_LATEST_RELEASE_DATE_pn-leafpad = "10/2009"
+RECIPE_LATEST_RELEASE_DATE_pn-leafpad = "12/2010"
RECIPE_COMMENTS_pn-leafpad = ""
+RECIPE_LAST_UPDATE_pn-leafpad = "Jan 26, 2011"
RECIPE_MAINTAINER_pn-leafpad = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-atk = "green"
-DEPENDENCY_CHECK_pn-atk = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-atk = "not done"
RECIPE_LATEST_VERSION_pn-atk = "1.32.0"
RECIPE_NO_OF_PATCHES_pn-atk = "0"
RECIPE_INTEL_SECTION_pn-atk = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-atk = "6 month"
RECIPE_LATEST_RELEASE_DATE_pn-atk = "09/2010"
RECIPE_COMMENTS_pn-atk = ""
+RECIPE_LAST_UPDATE_pn-atk = "Nov 19, 2010"
RECIPE_MAINTAINER_pn-atk = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-gtk+ = "green"
DISTRO_PN_ALIAS_pn-gtk+ = "Meego=gtk2 Fedora=gtk2 OpenSuSE=gtk2 Ubuntu=gtk+2.0 Mandriva=gtk+2.0 Debian=gtk+2.0"
-DEPENDENCY_CHECK_pn-gtk+ = "not done"
-RECIPE_LATEST_VERSION_pn-gtk+ = "2.20.1"
+RECIPE_DEPENDENCY_CHECK_pn-gtk+ = "not done"
+RECIPE_LATEST_VERSION_pn-gtk+ = "2.22.1"
RECIPE_NO_OF_PATCHES_pn-gtk+ = "0"
RECIPE_INTEL_SECTION_pn-gtk+ = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gtk+ = "2 months"
-RECIPE_LATEST_RELEASE_DATE_pn-gtk+ = "05/2010"
+RECIPE_LATEST_RELEASE_DATE_pn-gtk+ = "11/2010"
RECIPE_COMMENTS_pn-gtk+ = ""
+RECIPE_LAST_UPDATE_pn-gtk+ = "Jan 24, 2011"
+RECIPE_NO_UPDATE_REASON_pn-gtk+ = "Do not upgrade to version: 2.99.2 because prefer stable tree"
RECIPE_MAINTAINER_pn-gtk+ = "Zhai Edwin <edwin.zhai@intel.com>"
+RECIPE_STATUS_pn-gdk-pixbuf = "green"
+RECIPE_LATEST_VERSION_pn-gdk-pixbuf = "2.22.1"
+RECIPE_LAST_UPDATE_pn-gdk-pixbuf = "Nov 25, 2010"
+RECIPE_MAINTAINER_pn-gdk-pixbuf = "Edwin Zhai <edwin.zhai@intel.com>"
+
RECIPE_STATUS_pn-gdk-pixbuf-csource-native = "red" # update needed
-DEPENDENCY_CHECK_pn-gdk-pixbuf-csource-native = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-gdk-pixbuf-csource-native = "not done"
RECIPE_LATEST_VERSION_pn-gdk-pixbuf-csource-native = "2.20.1"
RECIPE_NO_OF_PATCHES_pn-gdk-pixbuf-csource-native = "1"
RECIPE_INTEL_SECTION_pn-gdk-pixbuf-csource-native = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gdk-pixbuf-csource-native = "2 months"
RECIPE_LATEST_RELEASE_DATE_pn-gdk-pixbuf-csource-native = "05/2010"
RECIPE_COMMENTS_pn-gdk-pixbuf-csource-native = "It is sub-package of gtk+"
+RECIPE_LAST_UPDATE_pn-gdk-pixbuf-csource-native = "Sep 24, 2008"
RECIPE_MAINTAINER_pn-gdk-pixbuf-csource-native = "Zhai Edwin <edwin.zhai@intel.com>"
DISTRO_PN_ALIAS_pn-gdk-pixbuf-csource-native = "Debian=libgdk-pixbuf2.0-0 Fedora=gdk-pixbuf2"
RECIPE_STATUS_pn-gobject-introspection = "red" # update needed
-DEPENDENCY_CHECK_pn-gobject-introspection = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-gobject-introspection = "not done"
RECIPE_LATEST_VERSION_pn-gobject-introspection = "0.9.5"
RECIPE_NO_OF_PATCHES_pn-gobject-introspection = "3"
RECIPE_INTEL_SECTION_pn-gobject-introspection = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gobject-introspection = "1 months"
RECIPE_LATEST_RELEASE_DATE_pn-gobject-introspection = "09/2010"
RECIPE_COMMENTS_pn-gobject-introspection = ""
+RECIPE_LAST_UPDATE_pn-gnome-common = "Jul 7, 2010"
RECIPE_MAINTAINER_pn-gnome-common = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-gnome-common = "green"
-DEPENDENCY_CHECK_pn-gnome-common = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-gnome-common = "not done"
RECIPE_LATEST_VERSION_pn-gnome-common = "2.28.0"
RECIPE_NO_OF_PATCHES_pn-gnome-common = "0"
RECIPE_INTEL_SECTION_pn-gnome-common = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gnome-common = "6 months"
RECIPE_LATEST_RELEASE_DATE_pn-gnome-common = "09/2009"
RECIPE_COMMENTS_pn-gnome-common = ""
+RECIPE_LAST_UPDATE_pn-gnome-common = "Jul 7, 2010"
RECIPE_MAINTAINER_pn-gnome-common = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-webkit-gtk = "green"
DISTRO_PN_ALIAS_pn-webkit-gtk = "Fedora=webkitgtk"
-DEPENDENCY_CHECK_pn-webkit-gtk = "not done"
-RECIPE_LATEST_VERSION_pn-webkit-gtk = "1.3.2+svnr62027"
-RECIPE_NO_OF_PATCHES_pn-webkit-gtk = "0"
+RECIPE_DEPENDENCY_CHECK_pn-webkit-gtk = "not done"
+RECIPE_LATEST_VERSION_pn-webkit-gtk = "1.3.7+svnr72836"
+RECIPE_MANUAL_CHECK_DATE_pn-webkit-gtk = "Nov 19, 2010"
+RECIPE_NO_OF_PATCHES_pn-webkit-gtk = "1"
RECIPE_INTEL_SECTION_pn-webkit-gtk = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-webkit-gtk = "1 month"
-RECIPE_LATEST_RELEASE_DATE_pn-webkit-gtk = "06/2010"
+RECIPE_LATEST_RELEASE_DATE_pn-webkit-gtk = "11/2011"
RECIPE_COMMENTS_pn-webkit-gtk = ""
+RECIPE_LAST_UPDATE_pn-webkit-gtk = "Nov 30, 2011"
RECIPE_MAINTAINER_pn-webkit-gtk = "Zhai Edwin <edwin.zhai@intel.com>"
DISTRO_PN_ALIAS_pn-webkit-gtk = "Fedora=webkitgtk Ubuntu=libwebkit"
RECIPE_STATUS_pn-eds-dbus = "green"
DISTRO_PN_ALIAS_pn-eds-dbus = "Debian=evolution-data-server Fedora=evolution-data-server Mandriva=evolution-data-server OpenSuSE=evolution-data-server Ubuntu=evolution-data-server"
-DEPENDENCY_CHECK_pn-eds-dbus = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-eds-dbus = "not done"
RECIPE_LATEST_VERSION_pn-eds-dbus = "2.31.4"
RECIPE_NO_UPDATE_REASON_pn-eds-dbus = "2.30.2 is latest stable release, while 2.31 branch acts as development branch."
RECIPE_NO_OF_PATCHES_pn-eds-dbus = "0"
@@ -4513,208 +4994,228 @@ RECIPE_INTEL_SECTION_pn-eds-dbus = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-eds-dbus = "1 month"
RECIPE_LATEST_RELEASE_DATE_pn-eds-dbus = "06/2010"
RECIPE_COMMENTS_pn-eds-dbus = "Update to 2.30.2 because of stability and dependency"
+RECIPE_LAST_UPDATE_pn-eds-dbus = "Jul 16, 2010"
RECIPE_MAINTAINER_pn-eds-dbus = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-gnome-keyring = "green"
-DEPENDENCY_CHECK_pn-gnome-keyring = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-gnome-keyring = "not done"
RECIPE_LATEST_VERSION_pn-gnome-keyring = "2.32.1"
RECIPE_NO_OF_PATCHES_pn-gnome-keyring = "0"
RECIPE_INTEL_SECTION_pn-gnome-keyring = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gnome-keyring = "1 month"
RECIPE_LATEST_RELEASE_DATE_pn-gnome-keyring = "10/2010"
RECIPE_COMMENTS_pn-gnome-keyring = ""
+RECIPE_LAST_UPDATE_pn-gnome-keyring = "Nov 19, 2010"
+RECIPE_NO_UPDATE_REASON_pn-gnome-keyring = "Do not upgrade to version: 2.91.4 because prefer stable tree"
RECIPE_MAINTAINER_pn-gnome-keyring = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-gtk-sato-engine = "green"
-DEPENDENCY_CHECK_pn-gtk-sato-engine = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-gtk-sato-engine = "not done"
RECIPE_LATEST_VERSION_pn-gtk-sato-engine = "0.3.2+svnr163"
RECIPE_NO_OF_PATCHES_pn-gtk-sato-engine = "0"
RECIPE_INTEL_SECTION_pn-gtk-sato-engine = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-gtk-sato-engine = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-gtk-sato-engine = "02/2008"
RECIPE_COMMENTS_pn-gtk-sato-engine = ""
+RECIPE_LAST_UPDATE_pn-gtk-sato-engine = "Jul 6, 2010"
RECIPE_MAINTAINER_pn-gtk-sato-engine = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-hicolor-icon-theme = "green"
-DEPENDENCY_CHECK_pn-hicolor-icon-theme = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-hicolor-icon-theme = "not done"
RECIPE_LATEST_VERSION_pn-hicolor-icon-theme = "0.12"
RECIPE_NO_OF_PATCHES_pn-hicolor-icon-theme = "0"
RECIPE_INTEL_SECTION_pn-hicolor-icon-theme = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-hicolor-icon-theme = "4 months"
RECIPE_LATEST_RELEASE_DATE_pn-hicolor-icon-theme = "09/2009"
RECIPE_COMMENTS_pn-hicolor-icon-theme = ""
+RECIPE_LAST_UPDATE_pn-hicolor-icon-theme = "Jul 7, 2010"
RECIPE_MAINTAINER_pn-hicolor-icon-theme = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-jpeg = "green"
-DEPENDENCY_CHECK_pn-jpeg = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-jpeg = "not done"
RECIPE_LATEST_VERSION_pn-jpeg = "8b"
+RECIPE_MANUAL_CHECK_DATE_pn-jpeg = "Dec 30, 2010"
RECIPE_NO_OF_PATCHES_pn-jpeg = "0"
RECIPE_INTEL_SECTION_pn-jpeg = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-jpeg = "12 months"
RECIPE_LATEST_RELEASE_DATE_pn-jpeg = "05/2010"
RECIPE_COMMENTS_pn-jpeg = ""
+RECIPE_LAST_UPDATE_pn-jpeg = "Jul 15, 2010"
RECIPE_MAINTAINER_pn-jpeg = "Zhai Edwin <edwin.zhai@intel.com>"
DISTRO_PN_ALIAS_pn-jpeg="OpenSuSE=libjpeg Ubuntu=libjpeg62"
RECIPE_STATUS_pn-libfakekey = "green" # no update needed
-DEPENDENCY_CHECK_pn-libfakekey = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libfakekey = "not done"
RECIPE_LATEST_VERSION_pn-libfakekey = "0.0+svnr2031"
RECIPE_NO_OF_PATCHES_pn-libfakekey = "0"
RECIPE_INTEL_SECTION_pn-libfakekey = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libfakekey = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-libfakekey = "07/2006"
RECIPE_COMMENTS_pn-libfakekey = ""
+RECIPE_LAST_UPDATE_pn-libfakekey = "Apr 15, 2008"
RECIPE_MAINTAINER_pn-libfakekey = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-libglade = "green"
DISTRO_PN_ALIAS_pn-libglade = "Meego=libglade2 Fedora=libglade2 OpenSuSE=libglade2 Ubuntu=libglade2 Mandriva=libglade2.0 Debian=libglade2"
-DEPENDENCY_CHECK_pn-libglade = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libglade = "not done"
RECIPE_LATEST_VERSION_pn-libglade = "2.6.4"
RECIPE_NO_OF_PATCHES_pn-libglade = "0"
RECIPE_INTEL_SECTION_pn-libglade = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libglade = "7 months"
RECIPE_LATEST_RELEASE_DATE_pn-libglade = "03/2009"
RECIPE_COMMENTS_pn-libglade = ""
+RECIPE_LAST_UPDATE_pn-libglade = "Jul 7, 2010"
RECIPE_MAINTAINER_pn-libglade = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-libsoup-2.4 = "green"
DISTRO_PN_ALIAS_pn-libsoup-2.4 = "Meego=libsoup Fedora=libsoup OpenSuSE=libsoup Ubuntu=libsoup2.4 Mandriva=libsoup Debian=libsoup2.4"
-DEPENDENCY_CHECK_pn-libsoup-2.4 = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libsoup-2.4 = "not done"
RECIPE_LATEST_VERSION_pn-libsoup-2.4 = "2.32.1"
RECIPE_NO_OF_PATCHES_pn-libsoup-2.4 = "0"
RECIPE_INTEL_SECTION_pn-libsoup-2.4 = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libsoup-2.4 = "2 month"
RECIPE_LATEST_RELEASE_DATE_pn-libsoup-2.4 = "11/2010"
RECIPE_COMMENTS_pn-libsoup-2.4 = ""
+RECIPE_LAST_UPDATE_pn-libsoup-2.4 = "Nov 19, 2010"
RECIPE_MAINTAINER_pn-libsoup-2.4 = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-libxslt = "green"
-DEPENDENCY_CHECK_pn-libxslt = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libxslt = "not done"
RECIPE_LATEST_VERSION_pn-libxslt = "1.1.26"
RECIPE_NO_OF_PATCHES_pn-libxslt = "0"
RECIPE_INTEL_SECTION_pn-libxslt = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libxslt = "1 month"
RECIPE_LATEST_RELEASE_DATE_pn-libxslt = "09/2009"
RECIPE_COMMENTS_pn-libxslt = ""
+RECIPE_LAST_UPDATE_pn-libxslt = "Jul 8, 2010"
RECIPE_MAINTAINER_pn-libxslt = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-matchbox-config-gtk = "green"
-DEPENDENCY_CHECK_pn-matchbox-config-gtk = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-matchbox-config-gtk = "not done"
RECIPE_LATEST_VERSION_pn-matchbox-config-gtk = "0.0+svnr2081"
RECIPE_NO_OF_PATCHES_pn-matchbox-config-gtk = "0"
RECIPE_INTEL_SECTION_pn-matchbox-config-gtk = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-matchbox-config-gtk = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-matchbox-config-gtk = "09/2008"
RECIPE_COMMENTS_pn-matchbox-config-gtk = ""
+RECIPE_LAST_UPDATE_pn-matchbox-config-gtk = "Jul 6, 2010"
RECIPE_MAINTAINER_pn-matchbox-config-gtk = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-matchbox-keyboard = "green"
-DEPENDENCY_CHECK_pn-matchbox-keyboard = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-matchbox-keyboard = "not done"
RECIPE_LATEST_VERSION_pn-matchbox-keyboard = "0.0+svnr2075"
RECIPE_NO_OF_PATCHES_pn-matchbox-keyboard = "0"
RECIPE_INTEL_SECTION_pn-matchbox-keyboard = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-matchbox-keyboard = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-matchbox-keyboard = "09/2008"
RECIPE_COMMENTS_pn-matchbox-keyboard = ""
+RECIPE_LAST_UPDATE_pn-matchbox-keyboard = "Jul 6, 2010"
RECIPE_MAINTAINER_pn-matchbox-keyboard = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-matchbox-panel-2 = "green"
DISTRO_PN_ALIAS_pn-matchbox-panel-2 = "Debian=matchbox-panel Mandriva=matchbox-panel Ubuntu=matchbox-panel"
-DEPENDENCY_CHECK_pn-matchbox-panel-2 = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-matchbox-panel-2 = "not done"
RECIPE_LATEST_VERSION_pn-matchbox-panel-2 = "0.0+svnr2111"
RECIPE_NO_OF_PATCHES_pn-matchbox-panel-2 = "1"
RECIPE_INTEL_SECTION_pn-matchbox-panel-2 = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-matchbox-panel-2 = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-matchbox-panel-2 = "08/2010"
RECIPE_COMMENTS_pn-matchbox-panel-2 = ""
+RECIPE_LAST_UPDATE_pn-matchbox-panel = "Nov 19, 2010"
RECIPE_MAINTAINER_pn-matchbox-panel-2 = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-matchbox-stroke = "green"
-DEPENDENCY_CHECK_pn-matchbox-stroke = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-matchbox-stroke = "not done"
RECIPE_LATEST_VERSION_pn-matchbox-stroke = "0.0+svnr1820"
RECIPE_NO_OF_PATCHES_pn-matchbox-stroke = "0"
RECIPE_INTEL_SECTION_pn-matchbox-stroke = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-matchbox-stroke = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-matchbox-stroke = "11/2007"
RECIPE_COMMENTS_pn-matchbox-stroke = ""
+RECIPE_LAST_UPDATE_pn-matchbox-stroke = "Jul 6, 2010"
RECIPE_MAINTAINER_pn-matchbox-stroke = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-matchbox-wm = "green"
DISTRO_PN_ALIAS_pn-matchbox-wm-2 = "Mandriva=matchbox-window-manager Debian=matchbox-window-manager"
-DEPENDENCY_CHECK_pn-matchbox-wm = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-matchbox-wm = "not done"
RECIPE_LATEST_VERSION_pn-matchbox-wm = "1.2+svnr1819"
RECIPE_NO_OF_PATCHES_pn-matchbox-wm = "0"
RECIPE_INTEL_SECTION_pn-matchbox-wm = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-matchbox-wm = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-matchbox-wm = "11/2007"
RECIPE_COMMENTS_pn-matchbox-wm = ""
+RECIPE_LAST_UPDATE_pn-matchbox-wm = "Jul 6, 2010"
RECIPE_MAINTAINER_pn-matchbox-wm = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-pointercal = "green"
-DEPENDENCY_CHECK_pn-pointercal = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-pointercal = "not done"
RECIPE_LATEST_VERSION_pn-pointercal = "0.0"
RECIPE_NO_OF_PATCHES_pn-pointercal = "0"
RECIPE_INTEL_SECTION_pn-pointercal = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-pointercal = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-pointercal = "n/a"
RECIPE_COMMENTS_pn-pointercal = "Just a data file"
+RECIPE_LAST_UPDATE_pn-pointercal = "Jan 30, 2007"
RECIPE_MAINTAINER_pn-pointercal = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-libgnome-keyring = "green"
-DEPENDENCY_CHECK_pn-libgnome-keyring = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libgnome-keyring = "not done"
RECIPE_LATEST_VERSION_pn-libgnome-keyring = "2.32.0"
RECIPE_NO_OF_PATCHES_pn-libgnome-keyring = "0"
RECIPE_INTEL_SECTION_pn-libgnome-keyring = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libgnome-keyring = "1 month"
RECIPE_LATEST_RELEASE_DATE_pn-libgnome-keyring = "09/2010"
RECIPE_COMMENTS_pn-libgnome-keyring = "New recipe separated from gnome-keyring"
+RECIPE_LAST_UPDATE_pn-libgnome-keyring = "Nov 19, 2010"
RECIPE_MAINTAINER_pn-libgnome-keyring = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-web-webkit = "green"
-DEPENDENCY_CHECK_pn-web-webkit = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-web-webkit = "not done"
RECIPE_LATEST_VERSION_pn-web-webkit = "0.0+svnr110"
RECIPE_NO_OF_PATCHES_pn-web-webkit = "1"
RECIPE_INTEL_SECTION_pn-web-webkit = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-web-webkit = "n/a"
RECIPE_LATEST_RELEASE_DATE_pn-web-webkit = "08/2008"
RECIPE_COMMENTS_pn-web-webkit = ""
+RECIPE_LAST_UPDATE_pn-web-webkit = "Dec 20, 2010"
RECIPE_MAINTAINER_pn-web-webkit = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-libfm = "green"
-DEPENDENCY_CHECK_pn-libfm = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-libfm = "not done"
RECIPE_LATEST_VERSION_pn-libfm = "0.1.14"
+RECIPE_MANUAL_CHECK_DATE_pn-libfm = "Nov 19, 2010"
RECIPE_NO_OF_PATCHES_pn-libfm = "0"
RECIPE_INTEL_SECTION_pn-libfm = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-libfm = "5 months"
RECIPE_LATEST_RELEASE_DATE_pn-libfm = "10/2010"
RECIPE_COMMENTS_pn-libfm = "Add as required when updating pcmanfm"
+RECIPE_LAST_UPDATE_pn-libfm = "Nov 19, 2010"
RECIPE_MAINTAINER_pn-libfm = "Zhai Edwin <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-menu-cache = "green"
-DEPENDENCY_CHECK_pn-menu-cache = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-menu-cache = "not done"
RECIPE_LATEST_VERSION_pn-menu-cache = "0.3.2"
+RECIPE_MANUAL_CHECK_DATE_pn-menu-cache = "Nov 22, 2010"
RECIPE_NO_OF_PATCHES_pn-menu-cache = "0"
RECIPE_INTEL_SECTION_pn-menu-cache = "graphic UX"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-menu-cache = "1 month"
RECIPE_LATEST_RELEASE_DATE_pn-menu-cache = "02/2010"
RECIPE_COMMENTS_pn-menu-cache = "Add as required when adding libfm"
DISTRO_PN_ALIAS_pn-menu-cache = "OSPDT"
+RECIPE_LAST_UPDATE_pn-menu-cache = "Jul 22, 2010"
RECIPE_MAINTAINER_pn-menu-cache = "Zhai Edwin <edwin.zhai@intel.com>"
-RECIPE_STATUS_pn-gtk-engines = "red"
+RECIPE_STATUS_pn-gtk-engines = "green"
DISTRO_PN_ALIAS_pn-gtk-engines = "Fedora=gtk2-engines OpenSuSE=gtk2-engines Ubuntu=gtk2-engines Mandriva=gtk-engines2 Debian=gtk2-engines"
-RECIPE_LATEST_VERSION_pn-gtk-engines = "2.18"
+RECIPE_LATEST_VERSION_pn-gtk-engines = "2.20.2"
+RECIPE_LAST_UPDATE_pn-gtk-engines = "Dec 1, 2010"
+RECIPE_NO_UPDATE_REASON_pn-gtk-engines = "Do not upgrade to version: 2.91.1 because prefer stable tree"
RECIPE_MAINTAINER_pn-gtk-engines = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-clutter-box2d = "red"
RECIPE_LATEST_VERSION_pn-clutter-box2d = "0.10.0"
RECIPE_MAINTAINER_pn-clutter-box2d = "Edwin Zhai <edwin.zhai@intel.com>"
-RECIPE_STATUS_pn-clutter-gtk-0.10 = "red"
-DISTRO_PN_ALIAS_pn-clutter-gtk-0.10 = "Fedora=clutter-gtk OpenSuSE=clutter-gtk Ubuntu=clutter-gtk-0.10 Mandriva=clutter-gtk Debian=clutter-gtk"
-RECIPE_LATEST_VERSION_pn-clutter-gtk-0.10 = "0.10.3+git0+b92329c4c1288019e2dea6567e2b5e98eb0a9992"
-RECIPE_MAINTAINER_pn-clutter-gtk-0.10 = "Edwin Zhai <edwin.zhai@intel.com>"
-
RECIPE_STATUS_pn-clutter-gtk-1.0 = "red"
DISTRO_PN_ALIAS_pn-clutter-gtk-1.0 = "Fedora=clutter-gtk OpenSuSE=clutter-gtk Ubuntu=clutter-gtk-0.10 Mandriva=clutter-gtk Debian=clutter-gtk"
RECIPE_LATEST_VERSION_pn-clutter-gtk-1.0 = "0.90.0+git0+e8d828ba1d87937baa571e68fdff22f3e2d79ca8"
@@ -4722,49 +5223,23 @@ RECIPE_MAINTAINER_pn-clutter-gtk-1.0 = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-tidy = "red"
RECIPE_LATEST_VERSION_pn-tidy = "0.1.0+git0+e25416e1293e1074bfa6727c80527dcff5b1f3cb"
+RECIPE_LAST_UPDATE_pn-tidy = "Dec 18, 2008"
RECIPE_MAINTAINER_pn-tidy = "Edwin Zhai <edwin.zhai@intel.com>"
-RECIPE_STATUS_pn-libcanberra = "red"
-RECIPE_LATEST_VERSION_pn-libcanberra = "0.24"
+RECIPE_STATUS_pn-libcanberra = "green"
+RECIPE_LATEST_VERSION_pn-libcanberra = "0.26"
+RECIPE_LAST_UPDATE_pn-libcanberra = "Dec 31, 2010"
RECIPE_MAINTAINER_pn-libcanberra = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-libgalago = "red"
RECIPE_LATEST_VERSION_pn-libgalago = "0.5.2"
+RECIPE_LAST_UPDATE_pn-libgalago = "Apr 11, 2007"
RECIPE_MAINTAINER_pn-libgalago = "Edwin Zhai <edwin.zhai@intel.com>"
-RECIPE_STATUS_pn-clutter-cairo-0.6 = "red"
-DISTRO_PN_ALIAS_pn-clutter-cairo-0.6 = "Debian=clutter-cairo Ubuntu=clutter-cairo Fedora=clutter-cairo"
-RECIPE_LATEST_VERSION_pn-clutter-cairo-0.6 = "0.6"
-RECIPE_MAINTAINER_pn-clutter-cairo-0.6 = "Edwin Zhai <edwin.zhai@intel.com>"
-
-RECIPE_STATUS_pn-clutter-0.6 = "red"
-DISTRO_PN_ALIAS_pn-clutter-0.6 = "Debian=clutter Fedora=clutter Mandriva=clutter Meego=clutter-0.6 OpenSuSE=clutter Ubuntu=clutter"
-RECIPE_LATEST_VERSION_pn-clutter-0.6 = "0.6.0+gitr0+62e852a51e29dd42c84d6b34fe23b80b2542be59"
-RECIPE_MAINTAINER_pn-clutter-0.6 = "Edwin Zhai <edwin.zhai@intel.com>"
-
-RECIPE_STATUS_pn-clutter-gtk-0.6 = "red"
-DISTRO_PN_ALIAS_pn-clutter-gtk-0.6 = "Fedora=clutter-gtk OpenSuSE=clutter-gtk Ubuntu=clutter-gtk-0.10 Mandriva=clutter-gtk Debian=clutter-gtk"
-RECIPE_LATEST_VERSION_pn-clutter-gtk-0.6 = "0.6.0+git0+2ba362a1a223c2b28541030a80aa11191615340a"
-RECIPE_MAINTAINER_pn-clutter-gtk-0.6 = "Edwin Zhai <edwin.zhai@intel.com>"
-
-RECIPE_STATUS_pn-clutter-cairo-0.8 = "red"
-DISTRO_PN_ALIAS_pn-clutter-cairo-0.8 = "Debian=clutter-cairo Ubuntu=clutter-cairo Fedora=clutter-cairo"
-RECIPE_LATEST_VERSION_pn-clutter-cairo-0.8 = "0.8.2"
-RECIPE_MAINTAINER_pn-clutter-cairo-0.8 = "Edwin Zhai <edwin.zhai@intel.com>"
-
-RECIPE_STATUS_pn-clutter-gtk-0.8 = "red"
-DISTRO_PN_ALIAS_pn-clutter-gtk-0.8 = "Fedora=clutter-gtk OpenSuSE=clutter-gtk Ubuntu=clutter-gtk-0.10 Mandriva=clutter-gtk Debian=clutter-gtk"
-RECIPE_LATEST_VERSION_pn-clutter-gtk-0.8 = "0.8.0+git0+7d3c3230376e731c06c21afa9d8c1d44dbea27cd"
-RECIPE_MAINTAINER_pn-clutter-gtk-0.8 = "Edwin Zhai <edwin.zhai@intel.com>"
-
-RECIPE_STATUS_pn-clutter-0.8 = "red"
-DISTRO_PN_ALIAS_pn-clutter-0.8 = "Fedora=clutter OpenSuSE=clutter Ubuntu=clutter-1.0 Mandriva=clutter Debian=clutter"
-RECIPE_LATEST_VERSION_pn-clutter-0.8 = "0.8.0+gitr3ba37ff115ed3fbe6c94195775941091a3ac2b30"
-RECIPE_MAINTAINER_pn-clutter-0.8 = "Edwin Zhai <edwin.zhai@intel.com>"
-
RECIPE_STATUS_pn-clutter-1.0 = "red"
DISTRO_PN_ALIAS_pn-clutter-1.0 = "Fedora=clutter OpenSuse=clutter Ubuntu=clutter-1.0 Mandriva=clutter Debian=clutter"
RECIPE_LATEST_VERSION_pn-clutter-1.0 = "1.0+git0+ce5025d0a2b701541ca9343686f9dac858905da4"
+RECIPE_LAST_UPDATE_pn-clutter-1.0 = "Jan 29, 2010"
RECIPE_MAINTAINER_pn-clutter-1.0 = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-clutter = "red"
@@ -4774,49 +5249,51 @@ RECIPE_MAINTAINER_pn-clutter = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-libgnomekbd = "red"
RECIPE_LATEST_VERSION_pn-libgnomekbd = "2.31.1"
+RECIPE_LAST_UPDATE_pn-libgnomekbd = "Jun 10, 2009"
RECIPE_MAINTAINER_pn-libgnomekbd = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-clipboard-manager = "red"
DISTRO_PN_ALIAS_pn-clipboard-manager = "OpenedHand"
RECIPE_LATEST_VERSION_pn-clipboard-manager = "0.6.8"
+RECIPE_LAST_UPDATE_pn-clipboard-manager = "Dec 24, 2007"
RECIPE_MAINTAINER_pn-clipboard-manager = "Edwin Zhai <edwin.zhai@intel.com>"
-RECIPE_STATUS_pn-gnome-desktop = "red"
-RECIPE_LATEST_VERSION_pn-gnome-desktop = "2.31.2"
+RECIPE_STATUS_pn-gnome-desktop = "green"
+RECIPE_LATEST_VERSION_pn-gnome-desktop = "2.32.1"
+RECIPE_LAST_UPDATE_pn-gnome-desktop = "Dec 1, 2010"
+RECIPE_NO_UPDATE_REASON_pn-gnome-desktop = "Do not upgrade to version: 2.91.6 because prefer stable tree"
RECIPE_MAINTAINER_pn-gnome-desktop = "Edwin Zhai <edwin.zhai@intel.com>"
-RECIPE_STATUS_pn-gnome-icon-theme = "red"
-RECIPE_LATEST_VERSION_pn-gnome-icon-theme = "2.30.2"
+RECIPE_STATUS_pn-gnome-icon-theme = "green"
+RECIPE_LATEST_VERSION_pn-gnome-icon-theme = "2.31.0"
+RECIPE_LAST_UPDATE_pn-gnome-icon-theme = "Dec 1, 2010"
+RECIPE_NO_UPDATE_REASON_pn-gnome-icon-theme = "Do not upgrade to version: 2.91.0 because prefer stable tree"
RECIPE_MAINTAINER_pn-gnome-icon-theme = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-gtk-doc = "red"
RECIPE_LATEST_VERSION_pn-gtk-doc = "1.15"
+RECIPE_LAST_UPDATE_pn-gtk-doc = "Jun 10, 2009"
RECIPE_MAINTAINER_pn-gtk-doc = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-gtkhtml2 = "red"
RECIPE_LATEST_VERSION_pn-gtkhtml2 = "2.11.1"
+RECIPE_LAST_UPDATE_pn-gtkhtml2 = "Aug 9, 2007"
RECIPE_MAINTAINER_pn-gtkhtml2 = "Edwin Zhai <edwin.zhai@intel.com>"
-RECIPE_STATUS_pn-gtk-theme-darkilouche = "red"
-DISTRO_PN_ALIAS_pn-gtk-theme-darkilouche = "OSPDT upstream=git://people.freedesktop.org/~jimmac/Darkilouche.git"
-RECIPE_LATEST_VERSION_pn-gtk-theme-darkilouche = "1.0"
-RECIPE_MAINTAINER_pn-gtk-theme-darkilouche = "Edwin Zhai <edwin.zhai@intel.com>"
-
RECIPE_STATUS_pn-libgnomecanvas = "red"
RECIPE_LATEST_VERSION_pn-libgnomecanvas = "2.30.1"
+RECIPE_LAST_UPDATE_pn-libgnomecanvas = "Jun 10, 2009"
RECIPE_MAINTAINER_pn-libgnomecanvas = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-libgtkstylus = "red"
RECIPE_LATEST_VERSION_pn-libgtkstylus = "0.5"
+RECIPE_LAST_UPDATE_pn-libgtkstylus = "Jul 21, 2006"
RECIPE_MAINTAINER_pn-libgtkstylus = "Edwin Zhai <edwin.zhai@intel.com>"
DISTRO_PN_ALIAS_pn-libgtkstylus = "Debian=libgtkstylus Ubuntu=libgtkstylus"
-RECIPE_STATUS_pn-matchbox-theme-sato-2 = "red"
-RECIPE_LATEST_VERSION_pn-matchbox-theme-sato-2 = "0.1+svnr164"
-RECIPE_MAINTAINER_pn-matchbox-theme-sato-2 = "Edwin Zhai <edwin.zhai@intel.com>"
-
RECIPE_STATUS_pn-matchbox-themes-extra = "red"
RECIPE_LATEST_VERSION_pn-matchbox-themes-extra = "0.3+svnr1247"
+RECIPE_LAST_UPDATE_pn-matchbox-themes-extra = "Aug 9, 2007"
RECIPE_MAINTAINER_pn-matchbox-themes-extra = "Edwin Zhai <edwin.zhai@intel.com>"
DISTRO_PN_ALIAS_pn-matchbox-themes-extra = "Ubuntu=matchbox-themes-extra Mandriva=matchbox-themes-extra"
@@ -4824,36 +5301,42 @@ RECIPE_STATUS_pn-matchbox-themes-gtk = "red"
RECIPE_LATEST_VERSION_pn-matchbox-themes-gtk = "1.0"
RECIPE_MAINTAINER_pn-matchbox-themes-gtk = "Edwin Zhai <edwin.zhai@intel.com>"
-RECIPE_STATUS_pn-matchbox-wm-2 = "red"
+RECIPE_STATUS_pn-matchbox-wm-2 = "green"
DISTRO_PN_ALIAS_pn-matchbox-wm-2 = "Mandriva=matchbox-window-manager Debian=matchbox-window-manager"
RECIPE_LATEST_VERSION_pn-matchbox-wm-2 = "0.0+svnr2106"
+RECIPE_LAST_UPDATE_pn-matchbox-wm-2= "Dec 31, 2010"
RECIPE_MAINTAINER_pn-matchbox-wm-2 = "Edwin Zhai <edwin.zhai@intel.com>"
-RECIPE_STATUS_pn-metacity = "red"
-RECIPE_LATEST_VERSION_pn-metacity = "2.30.1"
+RECIPE_STATUS_pn-metacity = "green"
+RECIPE_LATEST_VERSION_pn-metacity = "2.30.3"
+RECIPE_LAST_UPDATE_pn-metacity = "Dec 30, 2010"
RECIPE_MAINTAINER_pn-metacity = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-polkit-gnome = "green"
-DEPENDENCY_CHECK_pn-polkit-gnome = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-polkit-gnome = "not done"
RECIPE_LATEST_VERSION_pn-polkit-gnome = "0.99"
RECIPE_INTEL_SECTION_pn-polkit-gnome = "base utils"
RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-polkit-gnome = "1 months"
RECIPE_LATEST_RELEASE_DATE_pn-polkit-gnome = "2010/09/15"
RECIPE_COMMENTS_pn-polkit-gnome = ""
+RECIPE_LAST_UPDATE_pn-polkit-gnome = "Nov 18, 2010"
RECIPE_MAINTAINER_pn-polkit-gnome = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-pong-clock = "red"
DISTRO_PN_ALIAS_pn-pong-clock = "OpenedHand"
RECIPE_LATEST_VERSION_pn-pong-clock = "1.0"
+RECIPE_LAST_UPDATE_pn-pong-clock = "Jul 5, 2007"
RECIPE_MAINTAINER_pn-pong-clock = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-mutter = "red"
RECIPE_LATEST_VERSION_pn-mutter = "2.29.1_0.4"
+RECIPE_LAST_UPDATE_pn-mutter = "Jan 13, 2010"
RECIPE_MAINTAINER_pn-mutter = "Edwin Zhai <edwin.zhai@intel.com>"
RECIPE_STATUS_pn-qt4-x11-free = "green"
DISTRO_PN_ALIAS_pn-qt4-x11-free = "Ubuntu=qt-x11-free Debian=qt-x11-free"
RECIPE_LATEST_VERSION_pn-qt4-x11-free = "4.6.3"
+RECIPE_LAST_UPDATE_pn-qt4-x11-free = "Aug 25, 2010"
RECIPE_MAINTAINER_pn-qt4-x11-free = "Yu Ke <ke.yu@intel.com>"
DISTRO_PN_ALIAS_pn-poky-feed-config-opkg = "Poky"
DISTRO_PN_ALIAS_pn-poky-image-base = "Poky"
@@ -4868,9 +5351,6 @@ DISTRO_PN_ALIAS_pn-poky-image-minimal-mtdutils = "Poky"
DISTRO_PN_ALIAS_pn-poky-image-sato = "Poky"
DISTRO_PN_ALIAS_pn-poky-image-sato-directdisk = "Poky"
DISTRO_PN_ALIAS_pn-poky-image-sato-live = "Poky"
-DISTRO_PN_ALIAS_pn-poky-image-sdk = "Poky"
-DISTRO_PN_ALIAS_pn-poky-image-sdk-live = "Poky"
-DISTRO_PN_ALIAS_pn-poky-image-sdk-directdisk = "Poky"
DISTRO_PN_ALIAS_pn-task-poky = "Poky"
DISTRO_PN_ALIAS_pn-task-poky-apps-x11-pimlico = "Poky"
DISTRO_PN_ALIAS_pn-task-poky-basic = "Poky"
@@ -4930,11 +5410,13 @@ DISTRO_PN_ALIAS_pn-xvideo-tests = "OpenedHand"
RECIPE_STATUS_pn-kern-tools-native = "red"
RECIPE_LATEST_VERSION_pn-kern-tools-native = "check"
DISTRO_PN_ALIAS_pn-kern-tools-native = "WindRiver"
+RECIPE_LAST_UPDATE_pn-kern-tools-native = "Nov 11, 2010"
RECIPE_MAINTAINER_pn-kern-tools-native = "Bruce Ashfield <bruce.ashfield@windriver.com>"
RECIPE_STATUS_pn-kern-tools-native = "red"
RECIPE_LATEST_VERSION_pn-kern-tools-native = "check"
DISTRO_PN_ALIAS_pn-kern-tools-native = "OpenedHand"
+RECIPE_LAST_UPDATE_pn-kern-tools-native = "Nov 11, 2010"
RECIPE_MAINTAINER_pn-kern-tools-native = "Bruce Ashfield <bruce.ashfield@windriver.com>"
RECIPE_STATUS_pn-signgp-native = "red"
@@ -4990,11 +5472,15 @@ RECIPE_STATUS_pn-gthumb = "red"
RECIPE_STATUS_pn-guilt-native = "red"
RECIPE_STATUS_pn-icon-naming-utils = "red"
RECIPE_STATUS_pn-groff = "red"
+RECIPE_LATEST_VERSION_pn-groff = "1.21"
+RECIPE_NO_UPDATE_REASON_pn-texinfo = "1.18.1.4 is latest GPLv2 Version no 1.21"
+
RECIPE_STATUS_pn-eglibc = "red"
RECIPE_STATUS_pn-lighttpd = "red"
+RECIPE_LAST_UPDATE_pn-lighttpd = "Sep 28, 2010"
RECIPE_MAINTAINER_pn-lighttpd = "Edwin Zhai <edwin.zhai@intel.com>"
-DEPENDENCY_CHECK_pn-lighttpd = "not done"
+RECIPE_DEPENDENCY_CHECK_pn-lighttpd = "not done"
RECIPE_LATEST_VERSION_pn-lighttpd = "1.4.28"
RECIPE_NO_OF_PATCHES_pn-lighttpd = "0"
RECIPE_INTEL_SECTION_pn-lighttpd = "base utils"
@@ -5002,30 +5488,113 @@ RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-lighttpd = "10 days"
RECIPE_LATEST_RELEASE_DATE_pn-lighttpd = "08/2010"
RECIPE_COMMENTS_pn-lighttpd = ""
+RECIPE_LATEST_VERSION_pn-adt-installer = "1.0"
+RECIPE_MANUAL_CHECK_DATE_adt-installer-mpeg2dec = "Jan 17, 2011"
+RECIPE_LATEST_VERSION_pn-glew = "1.5.7"
RECIPE_LATEST_VERSION_pn-mpeg2dec = "0.4.1"
+RECIPE_MANUAL_CHECK_DATE_pn-mpeg2dec = "Jan 17, 2011"
RECIPE_LATEST_VERSION_pn-lame = "3.98.4"
RECIPE_LATEST_VERSION_pn-libmad = "0.15.1b"
-RECIPE_LATEST_VERSION_pn-glew = "1.5.7"
-RECIPE_LATEST_VERSION_pn-lsb = "1.4"
+RECIPE_MANUAL_CHECK_DATE_pn-libmad = "Jan 17, 2011"
RECIPE_LATEST_VERSION_pn-libxml-perl = "0.08"
-RECIPE_LATEST_VERSION_pn-lsbsetup = "INVALID"
+RECIPE_LATEST_VERSION_pn-lsb = "1.4"
+RECIPE_MANUAL_CHECK_DATE_pn-lsb = "Jan 17, 2011"
+RECIPE_LATEST_VERSION_pn-lsbsetup = "0.9"
+RECIPE_MANUAL_CHECK_DATE_pn-lsbsetup = "Jan 17, 2011"
RECIPE_LATEST_VERSION_pn-libxml-simple-perl = "2.18"
-RECIPE_LATEST_VERSION_pn-talloc = "2.0.1"
+RECIPE_LATEST_VERSION_pn-talloc = "2.0.5"
RECIPE_LATEST_VERSION_pn-mesa-demos = "8.0.1"
RECIPE_LATEST_VERSION_pn-libtool-cross = "2.4"
-RECIPE_LATEST_VERSION_pn-gthumb = "2.12.1"
-RECIPE_LATEST_VERSION_pn-groff = "1.20.1"
+RECIPE_LATEST_VERSION_pn-gthumb = "2.12.2"
RECIPE_LATEST_VERSION_pn-libtheora = "1.2.0"
-RECIPE_LATEST_VERSION_pn-libgdata = "0.7.1"
+RECIPE_NO_UPDATE_REASON_pn-libtheora = "1.1.1 is latest stable release not 1.2.0alpha1"
+
+RECIPE_STATUS_pn-libgdata = "red"
+RECIPE_LATEST_VERSION_pn-libgdata = "0.8.0"
+RECIPE_LAST_UPDATE_pn-libgdata = "Dec 29, 2010"
+RECIPE_MAINTAINER_pn-libgdata = "Edwin Zhai <edwin.zhai@intel.com>"
+
RECIPE_LATEST_VERSION_pn-man-pages = "3.32"
RECIPE_LATEST_VERSION_pn-qmmp = "0.4.3"
-RECIPE_LATEST_VERSION_pn-texinfo = "4.13"
RECIPE_LATEST_VERSION_pn-sysprof = "6b5b8432711ef5c747f8375073cd9af88922d3c6"
RECIPE_LATEST_VERSION_pn-table = "d42a44938699ee30a998fc42bc149aebf69389db"
+RECIPE_LATEST_VERSION_pn-texinfo = "4.13a"
+RECIPE_NO_UPDATE_REASON_pn-texinfo = "Checking script parse directory wrong"
RECIPE_LATEST_VERSION_pn-yaffs2-utils = "HEAD"
RECIPE_LATEST_VERSION_pn-blktrace = "a788dfde86dfaff8f1c277a233f92c1822e06b76"
RECIPE_LATEST_VERSION_pn-dtc = "37c0b6a0916c31a5eae0a9ddfcc5d0b8fb4569c6"
-RECIPE_LATEST_VERSION_pn-bind = "9.7.2"
-RECIPE_LATEST_VERSION_pn-man = "1.6"
-RECIPE_LATEST_VERSION_pn-mc = "4.7.5"
-
+RECIPE_LATEST_VERSION_pn-bind = "9.7.2-P3"
+RECIPE_NO_UPDATE_REASON_pn-bind = "Latest Stable version, newer versions are Alpha/Beta"
+RECIPE_LATEST_VERSION_pn-man = "1.6f"
+RECIPE_LATEST_VERSION_pn-mc = "4.7.5pre1"
+RECIPE_NO_UPDATE_REASON_pn-bind = "Latest Stable version, 4.7.5pre1 is Alpha/Beta"
+
+RECIPE_STATUS_pn-sgml-common = "green"
+RECIPE_DEPENDENCY_CHECK_pn-sgml-common = "not done"
+RECIPE_LATEST_VERSION_pn-sgml-common = "0.6.3"
+RECIPE_NO_OF_PATCHES_pn-sgml-common = "2"
+RECIPE_LATEST_RELEASE_DATE_pn-sgml-common = "2001/05/25"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-sgml-common = "unknown"
+RECIPE_COMMENTS_pn-sgml-common = ""
+RECIPE_LAST_UPDATE_pn-sgml-common = "Jan 28, 2011"
+RECIPE_MAINTAINER_pn-sgml-common = "Scott Garman <scott.a.garman@intel.com>"
+
+RECIPE_STATUS_pn-docbook-sgml-dtd = "green"
+RECIPE_DEPENDENCY_CHECK_pn-docbook-sgml-dtd = "not done"
+RECIPE_LATEST_VERSION_pn-docbook-sgml-dtd = "4.5"
+RECIPE_NO_OF_PATCHES_pn-docbook-sgml-dtd = "1"
+RECIPE_LATEST_RELEASE_DATE_pn-docbook-sgml-dtd = "2010/05/21"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-docbook-sgml-dtd = "unknown"
+RECIPE_COMMENTS_pn-docbook-sgml-dtd = ""
+RECIPE_LAST_UPDATE_pn-docbook-sgml-dtd = "Jan 28, 2011"
+RECIPE_MAINTAINER_pn-docbook-sgml-dtd = "Scott Garman <scott.a.garman@intel.com>"
+
+RECIPE_STATUS_pn-docbook-dsssl-stylesheet = "green"
+RECIPE_DEPENDENCY_CHECK_pn-docbook-dsssl-stylesheet = "not done"
+RECIPE_LATEST_VERSION_pn-docbook-dsssl-stylesheet = "1.79"
+RECIPE_NO_OF_PATCHES_pn-docbook-dsssl-stylesheet = "0"
+RECIPE_LATEST_RELEASE_DATE_pn-docbook-dsssl-stylesheet = "2008/08/12"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-docbook-dsssl-stylesheet = "unknown"
+RECIPE_COMMENTS_pn-docbook-dsssl-stylesheet = ""
+RECIPE_LAST_UPDATE_pn-docbook-dsssl-stylesheet = "Jan 26, 2011"
+RECIPE_MAINTAINER_pn-docbook-dsssl-stylesheet = "Scott Garman <scott.a.garman@intel.com>"
+
+RECIPE_STATUS_pn-sgmlspl = "green"
+RECIPE_DEPENDENCY_CHECK_pn-sgmlspl = "not done"
+RECIPE_LATEST_VERSION_pn-sgmlspl = "1.03ii"
+RECIPE_NO_OF_PATCHES_pn-sgmlspl = "1"
+RECIPE_LATEST_RELEASE_DATE_pn-sgmlspl = "1995/12/07"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-sgmlspl = "5 days"
+RECIPE_COMMENTS_pn-sgmlspl = ""
+RECIPE_LAST_UPDATE_pn-sgmlspl = "Jan 26, 2011"
+RECIPE_MAINTAINER_pn-sgmlspl = "Scott Garman <scott.a.garman@intel.com>"
+
+RECIPE_STATUS_pn-opensp = "green"
+RECIPE_DEPENDENCY_CHECK_pn-opensp = "not done"
+RECIPE_LATEST_VERSION_pn-opensp = ""
+RECIPE_NO_OF_PATCHES_pn-opensp = "4"
+RECIPE_LATEST_RELEASE_DATE_pn-opensp = "2002/11/24"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-opensp = "2 years"
+RECIPE_COMMENTS_pn-opensp = ""
+RECIPE_LAST_UPDATE_pn-opensp = "Jan 26, 2011"
+RECIPE_MAINTAINER_pn-opensp = "Scott Garman <scott.a.garman@intel.com>"
+
+RECIPE_STATUS_pn-openjade = "green"
+RECIPE_DEPENDENCY_CHECK_pn-openjade = "not done"
+RECIPE_LATEST_VERSION_pn-openjade = "1.3.2"
+RECIPE_NO_OF_PATCHES_pn-openjade = "3"
+RECIPE_LATEST_RELEASE_DATE_pn-openjade = "2002/12/01"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-openjade = "8 months"
+RECIPE_COMMENTS_pn-openjade = ""
+RECIPE_LAST_UPDATE_pn-openjade = "Jan 26, 2011"
+RECIPE_MAINTAINER_pn-openjade = "Scott Garman <scott.a.garman@intel.com>"
+
+RECIPE_STATUS_pn-docbook-utils = "green"
+RECIPE_DEPENDENCY_CHECK_pn-docbook-utils = "not done"
+RECIPE_LATEST_VERSION_pn-docbook-utils = "0.6.14"
+RECIPE_NO_OF_PATCHES_pn-docbook-utils = "0"
+RECIPE_LATEST_RELEASE_DATE_pn-docbook-utils = "2004/02/11"
+RECIPE_TIME_BETWEEN_LAST_TWO_RELEASES_pn-docbook-utils = "1 month"
+RECIPE_COMMENTS_pn-docbook-utils = ""
+RECIPE_LAST_UPDATE_pn-docbook-utils = "Jan 26, 2011"
+RECIPE_MAINTAINER_pn-docbook-utils = "Scott Garman <scott.a.garman@intel.com>"
diff --git a/meta/conf/distro/include/poky-default-revisions.inc b/meta/conf/distro/include/poky-default-revisions.inc
index 957f873718..a04fa9e047 100644
--- a/meta/conf/distro/include/poky-default-revisions.inc
+++ b/meta/conf/distro/include/poky-default-revisions.inc
@@ -7,7 +7,7 @@ SRCREV_pn-clutter ??= "e957e277b8a4893ce8c99e94402036d42a8b3748"
SRCREV_pn-clutter-0.6 ??= "62e852a51e29dd42c84d6b34fe23b80b2542be59"
SRCREV_pn-clutter-0.8 ??= "3ba37ff115ed3fbe6c94195775941091a3ac2b30"
SRCREV_pn-clutter-1.0 ??= "ce5025d0a2b701541ca9343686f9dac858905da4"
-SRCREV_pn-clutter-box2d ??= "2bcf5b836548dc4909e13b8ae7f60dc64c93d559"
+SRCREV_pn-clutter-box2d ??= "92b44f79a8667a31b46b861236392bdf32b7d6c2"
SRCREV_pn-clutter-gst-0.10 ??= "8a087fabc888a6a4a939760c392109dbb610adbf"
SRCREV_pn-clutter-gtk-0.10 ??= "b92329c4c1288019e2dea6567e2b5e98eb0a9992"
SRCREV_pn-clutter-imcontext ??= "2cb6f0ff153db639a489e58e36802e0e928b1968"
@@ -19,11 +19,13 @@ SRCREV_pn-clutter-gst-0.6 ??= "1c3dc539057dbcd6dd75f2cb5b4ba39b741892bd"
SRCREV_pn-clutter-gst-0.8 ??= "7a60a435fb0930d911e26158928ab53bda090f3e"
SRCREV_pn-clutter-gst-0.10 ??= "8a087fabc888a6a4a939760c392109dbb610adbf"
SRCREV_pn-clutter-gst-1.0 ??= "d48c6fc67b48304f90e51b520631c1ecc10410af"
+SRCREV_pn-clutter-gst-1.4 ??= "855826ce1111d9a2439b14b61abdbfae72c47132"
SRCREV_pn-clutter-helix ??= "b4514a7bae2a059f4e63de64245238a246ed10bd"
SRCREV_pn-clutter-gtk-0.6 ??= "2ba362a1a223c2b28541030a80aa11191615340a"
SRCREV_pn-clutter-gtk-0.8 ??= "7d3c3230376e731c06c21afa9d8c1d44dbea27cd"
SRCREV_pn-clutter-gtk-0.10 ??= "b92329c4c1288019e2dea6567e2b5e98eb0a9992"
SRCREV_pn-clutter-gtk-1.0 ??= "e8d828ba1d87937baa571e68fdff22f3e2d79ca8"
+SRCREV_pn-clutter-gtk-1.4 ??= "1d19fc17674175f4338c8e2526e911157801e754"
SRCREV_pn-clutter-mozembed ??= "738d017beb5579b2ff6e4d992d4889b61c974751"
SRCREV_pn-connman ??= "36e877dece72577a3ae6197eafd505d0e6e0c1d2"
SRCREV_pn-connman-gnome ??= "b589f4f89bff20d54682cc6b49efa86feac8adb4"
@@ -57,12 +59,12 @@ SRCREV_pn-gypsy ??= "147"
SRCREV_pn-inputproto ??= "7203036522ba9d4b224d282d6afc2d0b947711ee"
SRCREV_pn-inputproto-native ??= "7203036522ba9d4b224d282d6afc2d0b947711ee"
SRCREV_pn-inputproto-nativesdk ??= "7203036522ba9d4b224d282d6afc2d0b947711ee"
-SRCREV_pn-kern-tools-native ??= "c85dcdd2dc50d71476a11c2960bf14c2b144b3c7"
+SRCREV_pn-kern-tools-native ??= "4f13a46499261ea181fdc13db5459067df08aca7"
SRCREV_pn-libdrm ??= "3f3c5be6f908272199ccf53f108b1124bfe0a00e"
-SRCREV_pn-libfakekey ??= "2031"
+SRCREV_pn-libfakekey ??= "e8c2e412ea4a417afc1f30e32cb7bdc508b1dccc"
SRCREV_pn-libgdbus ??= "aeab6e3c0185b271ca343b439470491b99cc587f"
SRCREV_pn-libgsmd ??= "5394"
-SRCREV_pn-libmatchbox ??= "1531"
+SRCREV_pn-libmatchbox ??= "c81f8f444b83b187727f046432b186d67a42c732"
SRCREV_pn-libowl ??= "408"
SRCREV_pn-libowl-av ??= "416"
SRCREV_pn-libx11 ??= "d23aad31338e7d869d878d5aa1b6b91d20287005"
@@ -76,64 +78,66 @@ SRCREV_pn-libxcb-nativesdk ??= "625ed596cae6dd8175aeb6cb6f26784928042f22"
SRCREV_pn-libxext ??= "d1f3bc77a48c8e42771579e3fdf3370b35d3209d"
SRCREV_pn-libxext-nativesdk ??= "d1f3bc77a48c8e42771579e3fdf3370b35d3209d"
SRCREV_pn-libxi ??= "d0326fe8cdbb08d4f52d79fd3fd4e1b2a0951d5e"
-SRCREV_pn-libzypp = "4494797d5b0369365b1af63921de45b197ead64f"
-SRCREV_pn-linux-firmware ??= "85212bf6501da865e570f6b2f6fbd6f212850609"
+SRCREV_pn-libzypp = "15b6c52260bbc52b3d8e585e271b67e10cc7c433"
+SRCREV_pn-linux-firmware ??= "40c0f950be7040614dc45df54e25e54d00e3b73b"
SRCREV_pn-linux-openmoko ??= "5ccaca2adb1c37b5955a4733f68ae08a755e3d78"
SRCREV_pn-linux-omap ??= "58cf2f1425abfd3a449f9fe985e48be2d2555022"
SRCREV_pn-linux-omap-zoomsync ??= "015cbaf1035cd9a61d33a27de2a22902555db3c5"
SRCREV_pn-linux-omap2 ??= "d3b3ae0fe6c71641da19c8de466ec366d39847e3"
SRCREV_pn-linux-omap3 ??= "de1121fdb899f762b9e717f44eaf3fae7c00cd3e"
SRCREV_pn-linux-omap3-pm ??= "totallybroken"
-SRCREV_machine_pn-linux-yocto-stable_qemuarm ?= "4f4177b4bea5b8858acc1eeb788d80b7af0df962"
-SRCREV_machine_pn-linux-yocto-stable_qemumips ?= "81f3cd467b9d51fa1dfa2d5939337cc756ae8061"
-SRCREV_machine_pn-linux-yocto-stable_qemuppc ?= "9ac0daee43dd19d8bea828cf79450c9748ae0daa"
-SRCREV_machine_pn-linux-yocto-stable_qemux86 ?= "0431115c9d720fee5bb105f6a7411efb4f851d26"
-SRCREV_machine_pn-linux-yocto-stable_qemux86-64 ?= "0431115c9d720fee5bb105f6a7411efb4f851d26"
-SRCREV_machine_pn-linux-yocto-stable_emenlow ?= "aae69fdf104b0a9d7b3710f808aac6ab303490f7"
-SRCREV_machine_pn-linux-yocto-stable_atom-pc ?= "0431115c9d720fee5bb105f6a7411efb4f851d26"
-SRCREV_machine_pn-linux-yocto-stable_routerstationpro ?= "2ec2edaf256dd8500ee3d4763fee6ca3ecd6da4b"
-SRCREV_machine_pn-linux-yocto-stable_mpc8315e-rdb ?= "986e6eb66c26007cee7916d5d12f4756e6b5436f"
-SRCREV_machine_pn-linux-yocto-stable_beagleboard ?= "0431115c9d720fee5bb105f6a7411efb4f851d26"
-SRCREV_meta_pn-linux-yocto-stable ?= "50ccd2b3213b6a1bacb3f898c035119802dac420"
+SRCREV_machine_pn-linux-yocto-stable_qemuarm ?= "a2fb081b44d6368eff8d28e2fdb991c61b1f428e"
+SRCREV_machine_pn-linux-yocto-stable_qemumips ?= "c32d40f960e3c89d07f079bec4c96dcbfc749f0b"
+SRCREV_machine_pn-linux-yocto-stable_qemuppc ?= "96d6bc31d3caaf62a966255479cc5cee0e76b1e9"
+SRCREV_machine_pn-linux-yocto-stable_qemux86 ?= "72ca49ab08b8eb475cec82a10049503602325791"
+SRCREV_machine_pn-linux-yocto-stable_qemux86-64 ?= "72ca49ab08b8eb475cec82a10049503602325791"
+SRCREV_machine_pn-linux-yocto-stable_atom-pc ?= "72ca49ab08b8eb475cec82a10049503602325791"
+SRCREV_machine_pn-linux-yocto-stable_routerstationpro ?= "49745cd45c92a89e70c6e2334caa80818c134562"
+SRCREV_machine_pn-linux-yocto-stable_mpc8315e-rdb ?= "a1c0ed6bf4060c10874b2a8547d81b3169dcf16a"
+SRCREV_machine_pn-linux-yocto-stable_beagleboard ?= "ef7f944e773950d4016b7643f9ecf052bbe250cd"
+SRCREV_machine_pn-linux-yocto-stable ?= "72ca49ab08b8eb475cec82a10049503602325791"
+SRCREV_meta_pn-linux-yocto-stable ?= "e1f85a470934a0cf6abde5d95533e74501822c6b"
# development SRCREVs
-SRCREV_machine_pn-linux-yocto_qemuarm = "87e00a2d47ba80b4ad1f9170cb3f6cf81f21d739"
-SRCREV_machine_pn-linux-yocto_qemumips = "7231e473dd981a28e3cea9f677ed60583e731550"
-SRCREV_machine_pn-linux-yocto_qemuppc = "e2b529d7d74a9b21e1d1715f0c4062a4fd92a3ed"
-SRCREV_machine_pn-linux-yocto_qemux86 = "87aacc373557f8849dde8618fbe1f7f8f2af6038"
-SRCREV_machine_pn-linux-yocto_qemux86-64 = "87aacc373557f8849dde8618fbe1f7f8f2af6038"
-SRCREV_machine_pn-linux-yocto_emenlow = "87aacc373557f8849dde8618fbe1f7f8f2af6038"
-SRCREV_machine_pn-linux-yocto_atom-pc = "87aacc373557f8849dde8618fbe1f7f8f2af6038"
-SRCREV_machine_pn-linux-yocto_routerstationpro = "773d3a1c8eba563ffcdbf61057ef6e39cee0c88b"
-SRCREV_machine_pn-linux-yocto_mpc8315e-rdb = "5ff609967ffe87c49d534d7861a7e0b150517726"
-SRCREV_machine_pn-linux-yocto_beagleboard = "87aacc373557f8849dde8618fbe1f7f8f2af6038"
-SRCREV_meta_pn-linux-yocto ?= "ee0a10ab687b29c4d22d47e5b28bc8b3ebb7a8d9"
-SRCREV_pn-linux-libc-headers-yocto ??= "09a39c638dd65dc27c549c119abe1af2631b2ae0"
-SRCREV_pn-matchbox-config-gtk ??= "2081"
+SRCREV_machine_pn-linux-yocto_qemuarm ?= "c6d1949b479118d027a6c0f0841247cc0ea697b2"
+SRCREV_machine_pn-linux-yocto_qemumips ?= "cab9f6666b9913136549cee2f5db07134f4d9780"
+SRCREV_machine_pn-linux-yocto_qemuppc ?= "4ab4b22d4768f65cfadccae6d749e4f3769b0afa"
+SRCREV_machine_pn-linux-yocto_qemux86 ?= "cb4faf3af527e25feee584f39c3956ca0c9448c8"
+SRCREV_machine_pn-linux-yocto_qemux86-64 ?= "343c06b25b221aa7f7019aee83b2d976041fddce"
+SRCREV_machine_pn-linux-yocto_emenlow ?= "30a8b903be9cb18ba1fc11242159fa5d7bfdb1cc"
+SRCREV_machine_pn-linux-yocto_atom-pc ?= "343c06b25b221aa7f7019aee83b2d976041fddce"
+SRCREV_machine_pn-linux-yocto_routerstationpro ?= "4f1adb92fd08001ec76185c7febea7504c84f082"
+SRCREV_machine_pn-linux-yocto_mpc8315e-rdb ?= "68fb0b8d73bbb336ffa4a47bc70ec1eab021b7f6"
+SRCREV_machine_pn-linux-yocto_beagleboard ?= "343c06b25b221aa7f7019aee83b2d976041fddce"
+SRCREV_machine_pn-linux-yocto ?= "cb4faf3af527e25feee584f39c3956ca0c9448c8"
+SRCREV_meta_pn-linux-yocto ?= "5a32d7fe3b817868ebb697d2d883d743903685ae"
+SRCREV_machine_pn-linux-yocto ?= "cb4faf3af527e25feee584f39c3956ca0c9448c8"
+SRCREV_pn-linux-libc-headers-yocto ??= "343c06b25b221aa7f7019aee83b2d976041fddce"
+SRCREV_pn-matchbox-config-gtk ??= "3ed74dfb7c57be088a5ab36e446c0ccde9fa1028"
SRCREV_pn-matchbox-desktop-sato ??= "76"
-SRCREV_pn-matchbox-desktop ??= "2096"
-SRCREV_pn-matchbox-keyboard ??= "2075"
-SRCREV_pn-matchbox-panel-2 ??= "2111"
+SRCREV_pn-matchbox-desktop ??= "af7ed6775487380be73160aa0298bf6019765fad"
+SRCREV_pn-matchbox-keyboard ??= "b38f24036cff3be6c2fbcf9ca9881803e69003ac"
+SRCREV_pn-matchbox-panel-2 ??= "982d9ea173dc87a84db2303d1a6a12607fc4d539"
SRCREV_pn-matchbox-panel ??= "1364"
-SRCREV_pn-matchbox-stroke ??= "1820"
-SRCREV_pn-matchbox-terminal ??= "1816"
-SRCREV_pn-matchbox-theme-sato-2 ??= "94"
+SRCREV_pn-matchbox-stroke ??= "8edfd9a2bf1f0d6b28d4afee4bda9d3635f26a0b"
+SRCREV_pn-matchbox-terminal ??= "3fc25cb811a8ed306de897edf9b930f4402f3852"
+SRCREV_pn-matchbox-theme-sato-2 ??= "164"
SRCREV_pn-matchbox-theme-sato ??= "90"
-SRCREV_pn-matchbox-themes-extra ??= "1524"
-SRCREV_pn-matchbox-wm-2 ??= "2083"
-SRCREV_pn-matchbox-wm ??= "1819"
+SRCREV_pn-matchbox-themes-extra ??= "f848f9e4e577d5b9719f05b5152df1ce59399f5c"
+SRCREV_pn-matchbox-wm-2 ??= "2106"
+SRCREV_pn-matchbox-wm ??= "e8236c9ab44a8af8137cac2a35fb87f9146a9656"
SRCREV_pn-mesa-dri ??= "1bf94d419805538ac23a4d0b04d31ac5e4487aca"
SRCREV_pn-mesa-xlib ??= "1bf94d419805538ac23a4d0b04d31ac5e4487aca"
SRCDATE_minimo ??= "20070510"
SRCREV_pn-moblin-proto ??= "8f2cb524fe06555182c25b4ba3202d7b368ac0ce"
SRCREV_pn-mozilla-headless ??= "177d8b8bda61"
SRCREV_pn-mozilla-headless-services ??= "c679b95dd8c2807b70186d233b3833861a499315"
-SRCREV_pn-mutter ??= "c96345dd81176f171c2d15dd9d5c5b20f334f842"
+SRCREV_pn-mutter ??= "01d3bebe24d2a56bdf2d82c4a71923e1573f7b7c"
SRCREV_pn-networkmanager-applet ??= "263"
SRCREV_pn-networkmanager ??= "2984"
SRCREV_pn-ofono ??= "14544d5996836f628613c2ce544380ee6fc8f514"
SRCREV_pn-oh-puzzles ??= "23"
SRCREV_pn-ohm ??= "edfe25d49d67884bf004de7ae0724c162bb5e65e"
-OPKGSRCREV = "524"
+OPKGSRCREV = "596"
SRCREV_pn-opkg ??= "${OPKGSRCREV}"
SRCREV_pn-opkg-native ??= "${OPKGSRCREV}"
SRCREV_pn-opkg-nativesdk ??= "${OPKGSRCREV}"
@@ -151,7 +155,7 @@ PRELINKSRCREV ??= "909470ee441237563d6236c505cb2d02ddc48704"
SRCREV_pn-prelink ??= "${PRELINKSRCREV}"
SRCREV_pn-prelink-native ??= "${PRELINKSRCREV}"
SRCREV_pn-psplash ??= "424"
-PSEUDOSRCREV ??= "c9792c7acdb1cac90549ff08db12a8bf0c53cdcf"
+PSEUDOSRCREV ??= "5434325fc887817ebb2bad36313d8277992cef1d"
SRCREV_pn-pseudo ??= "${PSEUDOSRCREV}"
SRCREV_pn-pseudo-native ??= "${PSEUDOSRCREV}"
SRCREV_pn-pseudo-nativesdk ??= "${PSEUDOSRCREV}"
@@ -161,25 +165,29 @@ SRCREV_pn-qemu-nativesdk ??= "${QEMUSRCREV}"
SRCREV_pn-qemu ??= "${QEMUSRCREV}"
SRCREV_pn-qemugl ??= "d888bbc723c00d197d34a39b5b7448660ec1b1c0"
SRCREV_pn-qemugl-nativesdk ??= "d888bbc723c00d197d34a39b5b7448660ec1b1c0"
-SRCREV_pn-sat-solver = "aa799f7bae0ec055e0e527203635001bb7346dbc"
+SRCREV_pn-sat-solver = "9e1f2a097965debebc69cebf8ed73c6ff31a5220"
SRCREV_pn-screenshot ??= "292"
-SRCREV_pn-settings-daemon ??= "2059"
+SRCREV_pn-settings-daemon ??= "0f174f463dfed500b65533e249cd22942e439c77"
SRCREV_pn-swabber-native ??= "a0792390c5d6d5a5bade7ab155c80eef3f30fa52"
SRCREV_pn-sysprof ??= "38a6af1f0a45e528fd2842983da71e0f23c70d6a"
+SRCREV_pn-systemtap ??= "4ab3a1863bf4f472acae7a809bf2b38d91658aa8"
SRCREV_pn-table ??= "4b267533ce16656cba4104fc39dc12709c1bdddf"
SRCREV_pn-tasks ??= "ea52d46d691c5fce4473ea4e24a35411381f3a65"
-SRCREV_pn-trace-cmd ??= "0d252224626bd6926324f023a65f20c165232891"
+TRACECMDREV ?= "6c696cec3f264a9399241b6e648f58bc97117d49"
+SRCREV_pn-trace-cmd ??= ${TRACECMDREV}
+SRCREV_pn-kernelshark ??= ${TRACECMDREV}
SRCREV_pn-tidy ??= "e25416e1293e1074bfa6727c80527dcff5b1f3cb"
SRCREV_pn-u-boot-omap3 ??= "f40f6db278f602b55820693634a7256b0b4e4b80"
+SRCREV_pn-u-boot ??= "v2010.12"
SRCREV_pn-ubootchart ??= "10"
-SRCREV_pn-webkit-gtk ??= "62027"
-SRCREV_pn-web-webkit ??= "110"
+SRCREV_pn-webkit-gtk ??= "72836"
+SRCREV_pn-web-webkit ??= "130"
SRCREV_pn-web ??= "129"
SRCREV_pn-xcb-proto ??= "d81ca233e98be8fa59e8c90d262c0516944c5a66"
SRCREV_pn-xcb-proto-native ??= "d81ca233e98be8fa59e8c90d262c0516944c5a66"
SRCREV_pn-xf86-video-intel ??= "87ea531c5dc5b39809395b277c330854aaaaf019"
SRCREV_pn-xf86-video-intel-dri2 ??= "3dd7f0f9423bb891bc99cd3b77dc3d57e057a7ef"
-SRCREV_pn-xf86-video-omapfb ??= "6cff996abcb305460e9fa2c75569b776f099c9d5"
+SRCREV_pn-xf86-video-omapfb ??= "044617665d6737f4909aab96f91b06261dff05d2"
SRCREV_pn-xf86-input-keyboard ??= "3e28d68b50d291938734e9684b8296ca864f3892"
SRCREV_pn-xf86-input-mouse ??= "ea5cfe804e112f320f14ad896c7802d53551d3e6"
SRCREV_pn-xf86-input-synaptics ??= "934bc0012f948c52aadc8eda912f7728fb7394a2"
@@ -187,9 +195,9 @@ SRCREV_pn-xserver-kdrive-glamo ??= "a51364e2f23d4b6331c5ed613ce3f7e15f8e540f"
SRCREV_pn-xserver-xf86-dri-lite ??= "251d0d8090322b2c9dc0c8b7bef001f338d19433"
SRCREV_pn-xserver-xf86-dri2-lite ??= "251d0d8090322b2c9dc0c8b7bef001f338d19433"
SRCREV_pn-xvideo-tests ??= "270"
-SRCREV_pn-x-load ??= "65ed00323f3807197a83abc75d62ed2a8d3f60de"
+SRCREV_pn-x-load ??= "6f3a26101303051e0f91b6213735b68ce804e94e"
SRCDATE_yaffs2-utils-native ??= "20071107"
SRCDATE_yaffs2-utils ??= "20071107"
-SRCREV_pn-zaurusd ??= "358"
-SRCREV_pn-zypper ??= "9eb0e248e06c8d20ad054be2439149d9ede37531"
+SRCREV_pn-zaurusd ??= "426"
+SRCREV_pn-zypper ??= "2c5bb6ceb99ecd950ef993e43d77bf0569ea0582"
diff --git a/meta/conf/distro/include/poky-default.inc b/meta/conf/distro/include/poky-default.inc
index e5dd647ed7..ef9f5cffa4 100644
--- a/meta/conf/distro/include/poky-default.inc
+++ b/meta/conf/distro/include/poky-default.inc
@@ -17,7 +17,7 @@ PREFERRED_PROVIDER_virtual/${SDK_PREFIX}libc-for-gcc-nativesdk ?= "${POKYLIBC}-n
GCCVERSION ?= "4.5.1"
SDKGCCVERSION ?= "4.5.1"
-BINUVERSION ?= "2.20.1"
+BINUVERSION ?= "2.21"
GLIBCVERSION ?= "2.10.1"
LINUXLIBCVERSION ?= "2.6.36"
diff --git a/meta/conf/distro/include/poky-fixed-revisions.inc b/meta/conf/distro/include/poky-fixed-revisions.inc
index cc47610a3e..b7bd6f9fbb 100644
--- a/meta/conf/distro/include/poky-fixed-revisions.inc
+++ b/meta/conf/distro/include/poky-fixed-revisions.inc
@@ -8,7 +8,7 @@ PREFERRED_VERSION_hal-info ?= "20091130"
PREFERRED_VERSION_udev ?= "164"
PREFERRED_VERSION_wpa-supplicant ?= "0.7.3"
-PULSEAUDIOVERSION ?= "0.9.21"
+PULSEAUDIOVERSION ?= "0.9.22"
PULSEAUDIOVERSION_arm ?= "0.9.15"
PREFERRED_VERSION_pulseaudio ?= "${PULSEAUDIOVERSION}"
diff --git a/meta/conf/distro/include/poky-glibc.inc b/meta/conf/distro/include/poky-glibc.inc
index 35c6fc1627..4be712271a 100644
--- a/meta/conf/distro/include/poky-glibc.inc
+++ b/meta/conf/distro/include/poky-glibc.inc
@@ -2,6 +2,9 @@
# glibc specific configuration
#
+# Add glibc to the overrides.
+OVERRIDES =. "libc-glibc:"
+
#glibc
PREFERRED_PROVIDER_virtual/libiconv ?= "glibc"
PREFERRED_PROVIDER_virtual/libintl ?= "glibc"
diff --git a/meta/conf/distro/include/poky-uclibc.inc b/meta/conf/distro/include/poky-uclibc.inc
index edbcc4aa6d..def9dfe447 100644
--- a/meta/conf/distro/include/poky-uclibc.inc
+++ b/meta/conf/distro/include/poky-uclibc.inc
@@ -2,6 +2,9 @@
# uclibc specific configuration
#
+# Add uclibc overrides to the overrides.
+OVERRIDES =. "libc-uclibc:"
+
PREFERRED_PROVIDER_virtual/libc = "uclibc"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc = "uclibc"
PREFERRED_PROVIDER_virtual/libiconv ?= "libiconv"
diff --git a/meta/conf/distro/include/preferred-xorg-versions.inc b/meta/conf/distro/include/preferred-xorg-versions.inc
index a47b08fc0b..3a4bd335f7 100644
--- a/meta/conf/distro/include/preferred-xorg-versions.inc
+++ b/meta/conf/distro/include/preferred-xorg-versions.inc
@@ -3,12 +3,12 @@
#
PREFERRED_VERSION_applewmproto ?= "1.4.1"
-PREFERRED_VERSION_bigreqsproto ?= "1.1.0"
-PREFERRED_VERSION_bigreqsproto-native ?= "1.1.0"
-PREFERRED_VERSION_bigreqsproto-nativesdk ?= "1.1.0"
-PREFERRED_VERSION_compositeproto ?= "0.4"
+PREFERRED_VERSION_bigreqsproto ?= "1.1.1"
+PREFERRED_VERSION_bigreqsproto-native ?= "1.1.1"
+PREFERRED_VERSION_bigreqsproto-nativesdk ?= "1.1.1"
+PREFERRED_VERSION_compositeproto ?= "0.4.2"
PREFERRED_VERSION_damageproto ?= "1.2.1"
-PREFERRED_VERSION_dmxproto ?= "2.3"
+PREFERRED_VERSION_dmxproto ?= "2.3.1"
PREFERRED_VERSION_evieext ?= "1.1.0"
PREFERRED_VERSION_fixesproto ?= "4.1.2"
PREFERRED_VERSION_fontcacheproto ?= "0.1.3"
@@ -18,17 +18,16 @@ PREFERRED_VERSION_fontsproto-native ?= "2.1.1"
PREFERRED_VERSION_gccmakedep ?= "1.0.2"
PREFERRED_VERSION_glproto ?= "1.4.12"
PREFERRED_VERSION_imake ?= "1.0.4"
-#PREFERRED_VERSION_inputproto ?= "2.0"
-#PREFERRED_VERSION_inputproto-native ?= "2.0"
-#PREFERRED_VERSION_inputproto-nativesdk ?= "2.0"
+PREFERRED_VERSION_inputproto ?= "2.0.1"
+PREFERRED_VERSION_inputproto-native ?= "2.0.1"
+PREFERRED_VERSION_inputproto-nativesdk ?= "2.0.1"
PREFERRED_VERSION_kbproto ?= "1.0.5"
PREFERRED_VERSION_kbproto-native ?= "1.0.5"
PREFERRED_VERSION_kbproto-nativesdk ?= "1.0.5"
PREFERRED_VERSION_libapplewm ?= "1.0.0"
-PREFERRED_VERSION_libdmx ?= "1.1.0"
+PREFERRED_VERSION_libdmx ?= "1.1.1"
PREFERRED_VERSION_libfontenc ?= "1.1.0"
PREFERRED_VERSION_libfontenc-native ?= "1.1.0"
-PREFERRED_VERSION_libfs ?= "1.0.1"
PREFERRED_VERSION_libice ?= "1.0.7"
PREFERRED_VERSION_liblbxutil ?= "1.1.0"
PREFERRED_VERSION_liboldx ?= "1.0.1"
@@ -62,7 +61,7 @@ PREFERRED_VERSION_libxinerama ?= "1.1.1"
PREFERRED_VERSION_libxkbfile ?= "1.0.7"
PREFERRED_VERSION_libxkbui ?= "1.0.2"
PREFERRED_VERSION_libxmu ?= "1.1.0"
-PREFERRED_VERSION_libxp ?= "1.0.0"
+PREFERRED_VERSION_libxp ?= "1.0.1"
PREFERRED_VERSION_libxpm ?= "3.5.9"
PREFERRED_VERSION_libxprintapputil ?= "1.0.1"
PREFERRED_VERSION_libxprintutil ?= "1.0.1"
@@ -78,20 +77,20 @@ PREFERRED_VERSION_libxtst ?= "1.2.0"
PREFERRED_VERSION_libxv ?= "1.0.6"
PREFERRED_VERSION_libxvmc ?= "1.0.6"
PREFERRED_VERSION_libxxf86dga ?= "1.1.2"
-PREFERRED_VERSION_libxxf86misc ?= "1.0.2"
+PREFERRED_VERSION_libxxf86misc ?= "1.0.3"
PREFERRED_VERSION_libxxf86vm ?= "1.1.1"
PREFERRED_VERSION_lndir ?= "1.0.1"
PREFERRED_VERSION_makedepend ?= "1.0.3"
PREFERRED_VERSION_makedepend-native ?= "1.0.3"
-PREFERRED_VERSION_pixman ?= "0.20.0"
-PREFERRED_VERSION_printproto ?= "1.0.4"
+PREFERRED_VERSION_pixman ?= "0.20.2"
+PREFERRED_VERSION_printproto ?= "1.0.5"
PREFERRED_VERSION_randrproto ?= "1.3.2"
PREFERRED_VERSION_randrproto-nativesdk ?= "1.3.2"
PREFERRED_VERSION_recordproto ?= "1.14.1"
-PREFERRED_VERSION_renderproto ?= "0.11"
-PREFERRED_VERSION_renderproto-nativesdk ?= "0.11"
-PREFERRED_VERSION_resourceproto ?= "1.1.0"
-PREFERRED_VERSION_scrnsaverproto ?= "1.2.0"
+PREFERRED_VERSION_renderproto ?= "0.11.1"
+PREFERRED_VERSION_renderproto-nativesdk ?= "0.11.1"
+PREFERRED_VERSION_resourceproto ?= "1.1.1"
+PREFERRED_VERSION_scrnsaverproto ?= "1.2.1"
PREFERRED_VERSION_trapproto ?= "3.4.3"
PREFERRED_VERSION_util-macros ?= "1.11.0"
PREFERRED_VERSION_util-macros-native ?= "1.11.0"
@@ -102,7 +101,7 @@ PREFERRED_VERSION_xauth ?= "1.0.5"
PREFERRED_VERSION_xcmiscproto ?= "1.2.1"
PREFERRED_VERSION_xcmiscproto-native ?= "1.2.1"
PREFERRED_VERSION_xcmiscproto-nativesdk ?= "1.2.1"
-PREFERRED_VERSION_xdpyinfo ?= "1.1.0"
+PREFERRED_VERSION_xdpyinfo ?= "1.2.0"
PREFERRED_VERSION_xev ?= "1.0.3"
PREFERRED_VERSION_xextproto ?= "7.1.2"
PREFERRED_VERSION_xextproto-native ?= "7.1.2"
@@ -111,41 +110,41 @@ PREFERRED_VERSION_xf86bigfontproto ?= "1.2.0"
PREFERRED_VERSION_xf86bigfontproto-native ?= "1.2.0"
PREFERRED_VERSION_xf86bigfontproto-nativesdk ?= "1.2.0"
PREFERRED_VERSION_xf86dgaproto ?= "2.1"
-PREFERRED_VERSION_xf86driproto ?= "2.1.0"
+PREFERRED_VERSION_xf86driproto ?= "2.1.1"
PREFERRED_VERSION_dri2proto ?= "2.3"
PREFERRED_VERSION_xf86miscproto ?= "0.9.3"
PREFERRED_VERSION_xf86rushproto ?= "1.1.2"
-PREFERRED_VERSION_xf86vidmodeproto ?= "2.3"
-PREFERRED_VERSION_xhost ?= "1.0.3"
-PREFERRED_VERSION_xinit ?= "1.2.1"
-PREFERRED_VERSION_xineramaproto ?= "1.2"
+PREFERRED_VERSION_xf86vidmodeproto ?= "2.3.1"
+PREFERRED_VERSION_xhost ?= "1.0.4"
+PREFERRED_VERSION_xinit ?= "1.3.0"
+PREFERRED_VERSION_xineramaproto ?= "1.2.1"
PREFERRED_VERSION_xmodmap ?= "1.0.5"
PREFERRED_VERSION_xorg-cf-files ?= "1.0.3"
-PREFERRED_VERSION_xprop ?= "1.1.0"
-PREFERRED_VERSION_xproto ?= "7.0.19"
-PREFERRED_VERSION_xproto-native ?= "7.0.19"
-PREFERRED_VERSION_xproto-nativesdk ?= "7.0.19"
+PREFERRED_VERSION_xprop ?= "1.2.0"
+PREFERRED_VERSION_xproto ?= "7.0.20"
+PREFERRED_VERSION_xproto-native ?= "7.0.20"
+PREFERRED_VERSION_xproto-nativesdk ?= "7.0.20"
PREFERRED_VERSION_xproxymanagementprotocol ?= "1.0.3"
PREFERRED_VERSION_xrandr ?= "1.3.4"
PREFERRED_VERSION_xrdb ?= "1.0.5"
PREFERRED_VERSION_xserver-kdrive ?= "1.7.99.2"
-PREFERRED_VERSION_xserver-xf86-dri-lite ?= "1.9.2"
+PREFERRED_VERSION_xserver-xf86-dri-lite ?= "1.9.3"
PREFERRED_VERSION_xset ?= "1.2.1"
PREFERRED_VERSION_xtrans ?= "1.2.6"
PREFERRED_VERSION_xtrans-native ?= "1.2.6"
PREFERRED_VERSION_xtrans-nativesdk ?= "1.2.6"
-PREFERRED_VERSION_xvinfo ?= "1.0.2"
-PREFERRED_VERSION_xwininfo ?= "1.1.0"
-PREFERRED_VERSION_mesa-dri ?= "7.9"
-PREFERRED_VERSION_libdrm ?= "2.4.22"
+PREFERRED_VERSION_xvinfo ?= "1.1.1"
+PREFERRED_VERSION_xwininfo ?= "1.1.1"
+PREFERRED_VERSION_mesa-dri ?= "7.8.2"
+PREFERRED_VERSION_libdrm ?= "2.4.23"
PREFERRED_VERSION_xcb-proto ?= "1.6"
PREFERRED_VERSION_libxcb ?= "1.7"
PREFERRED_VERSION_libxcb-nativesdk ?= "1.7"
PREFERRED_VERSION_libpciaccess ?= "0.12.0"
-PREFERRED_VERSION_xf86-input-evdev ?= "2.5.0"
+PREFERRED_VERSION_xf86-input-evdev ?= "2.6.0"
PREFERRED_VERSION_xf86-input-mouse ?= "1.6.0"
-PREFERRED_VERSION_xf86-input-keyboard ?= "1.4.0"
-PREFERRED_VERSION_xf86-input-synaptics ?= "1.2.1"
-PREFERRED_VERSION_xf86-video-intel ?= "2.13.0"
+PREFERRED_VERSION_xf86-input-keyboard ?= "1.5.0"
+PREFERRED_VERSION_xf86-input-synaptics ?= "1.3.0"
+PREFERRED_VERSION_xf86-video-intel ?= "2.14.0"
diff --git a/meta/conf/distro/poky-lsb.conf b/meta/conf/distro/poky-lsb.conf
new file mode 100644
index 0000000000..86514d3ae6
--- /dev/null
+++ b/meta/conf/distro/poky-lsb.conf
@@ -0,0 +1,6 @@
+require conf/distro/poky.conf
+
+DISTRO = "poky-lsb"
+
+DISTRO_FEATURES += "pam"
+PREFERRED_PROVIDER_virtual/libx11 = "libx11"
diff --git a/meta/conf/distro/poky.conf b/meta/conf/distro/poky.conf
index ee390dca85..5e560fa5e1 100644
--- a/meta/conf/distro/poky.conf
+++ b/meta/conf/distro/poky.conf
@@ -12,7 +12,7 @@ USER_CLASSES ?= ""
PACKAGE_CLASSES ?= "package_ipk"
INHERIT_INSANE ?= "insane"
-INHERIT += "${PACKAGE_CLASSES} ${USER_CLASSES} debian poky devshell ${INHERIT_INSANE} sstate"
+INHERIT += "${PACKAGE_CLASSES} ${USER_CLASSES} debian devshell ${INHERIT_INSANE} sstate license"
# For some reason, this doesn't work
# TARGET_OS ?= "linux"
# TARGET_VENDOR ?= "-poky"
@@ -22,6 +22,8 @@ TARGET_FPU_arm ?= "soft"
TARGET_FPU_armeb ?= "soft"
TARGET_FPU_nokia800 = "hard"
+TARGET_LINK_HASH_STYLE ?= "${@['-Wl,--hash-style=gnu',''][bb.data.getVar('TARGET_ARCH', d, True) in ['mips', 'mipsel', 'mips64', 'mips64el']]}"
+
QA_LOGFILE = "${TMPDIR}/qa.log"
IMAGE_ROOTFS_SIZE_ext2 ?= "131072"
@@ -85,6 +87,8 @@ VIRTUAL-RUNTIME_update-alternatives ?= "update-alternatives-cworth"
# Others:
PREFERRED_PROVIDER_linux-libc-headers ?= "linux-libc-headers"
PREFERRED_PROVIDER_linux-libc-headers-nativesdk ?= "linux-libc-headers-nativesdk"
+PREFERRED_PROVIDER_libgcc ?= "libgcc"
+PREFERRED_PROVIDER_libgcc-nativesdk ?= "libgcc-nativesdk"
PREFERRED_PROVIDER_dbus-glib ?= "dbus-glib"
PREFERRED_PROVIDER_dbus-glib-native ?= "dbus-glib-native"
PREFERRED_PROVIDER_gconf ?= "gconf-dbus"
@@ -93,6 +97,8 @@ PREFERRED_PROVIDER_opkg ?= "opkg"
PREFERRED_PROVIDER_opkg-native ?= "opkg-native"
PREFERRED_PROVIDER_opkg-nativesdk ?= "opkg-nativesdk"
+PREFERRED_PROVIDER_gdk-pixbuf ?= "gdk-pixbuf"
+
require conf/distro/include/poky-fixed-revisions.inc
require conf/distro/include/preferred-xorg-versions.inc
@@ -137,12 +143,36 @@ COMMERCIAL_VIDEO_PLUGINS ?= ""
# COMMERCIAL_VIDEO_PLUGINS ?= "gst-plugins-ugly-mpeg2dec gst-plugins-ugly-mpegstream gst-plugins-bad-mpegvideoparse"
COMMERCIAL_QT ?= ""
# COMMERCIAL_QT ?= "qmmp"
+# Set of common licenses used for license.bbclass
+COMMON_LICENSE_DIR ??= "${POKYBASE}/meta/files/common-licenses"
+BB_GENERATE_MIRROR_TARBALLS ??= "0"
require conf/distro/include/world-broken.inc
-# Setup our hash policy
-BB_SIGNATURE_HANDLER = "basic"
-BB_HASHTASK_WHITELIST = "(.*-cross$|.*-native$|.*-cross-initial$|.*-cross-intermediate$|^virtual:native:.*|^virtual:nativesdk:.*)"
-BB_HASHBASE_WHITELIST = "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH DL_DIR SSTATE_DIR THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL TERM USER"
-patch_do_patch[vardepsexclude] = "DATE SRCDATE"
+PREMIRRORS_append = "\
+bzr://.*/.* http://pokylinux.org/sources/ \n \
+cvs://.*/.* http://pokylinux.org/sources/ \n \
+git://.*/.* http://pokylinux.org/sources/ \n \
+hg://.*/.* http://pokylinux.org/sources/ \n \
+osc://.*/.* http://pokylinux.org/sources/ \n \
+p4://.*/.* http://pokylinux.org/sources/ \n \
+svk://.*/.* http://pokylinux.org/sources/ \n \
+svn://.*/.* http://pokylinux.org/sources/ \n \
+bzr://.*/.* http://autobuilder.pokylinux.org/sources/ \n \
+cvs://.*/.* http://autobuilder.pokylinux.org/sources/ \n \
+git://.*/.* http://autobuilder.pokylinux.org/sources/ \n \
+hg://.*/.* http://autobuilder.pokylinux.org/sources/ \n \
+osc://.*/.* http://autobuilder.pokylinux.org/sources/ \n \
+p4://.*/.* http://autobuilder.pokylinux.org/sources/ \n \
+svk://.*/.* http://autobuilder.pokylinux.org/sources/ \n \
+svn://.*/.* http://autobuilder.pokylinux.org/sources/ \n"
+
+MIRRORS_append = "\
+ftp://.*/.* http://pokylinux.org/sources/ \n \
+http://.*/.* http://pokylinux.org/sources/ \n \
+https://.*/.* http://pokylinux.org/sources/ \n \
+ftp://.*/.* http://autobuilder.pokylinux.org/sources/ \n \
+http://.*/.* http://autobuilder.pokylinux.org/sources/ \n \
+https://.*/.* http://autobuilder.pokylinux.org/sources/ \n"
+
diff --git a/meta/conf/local.conf.sample b/meta/conf/local.conf.sample
index 43f6f34f47..d9f7098f0c 100644
--- a/meta/conf/local.conf.sample
+++ b/meta/conf/local.conf.sample
@@ -25,10 +25,6 @@ MACHINE ?= "qemux86"
#MACHINE ?= "c7x0"
#MACHINE ?= "akita"
#MACHINE ?= "spitz"
-#MACHINE ?= "nokia770"
-#MACHINE ?= "nokia800"
-#MACHINE ?= "fic-gta01"
-#MACHINE ?= "bootcdx86"
#MACHINE ?= "cm-x270"
#MACHINE ?= "em-x270"
#MACHINE ?= "htcuniversal"
@@ -156,6 +152,14 @@ ENABLE_BINARY_LOCALE_GENERATION = "1"
# list them like following.
#TEST_SCEN = "sanity bat sanity:boot"
+#Because of the QEMU booting slowness issue(see bug #646 and #618), autobuilder
+#may suffer a timeout issue when running sanity test. We introduce variable
+#TEST_SERIALIZE here to reduce the time on sanity test. It is by default set
+#to 1. Poky will start image and run cases in the same image without reboot
+#or kill. If it is set to 0, the image will be copied and tested for each
+#case, which will take much time.
+#TEST_SERIALIZE = "1"
+
# Set GLIBC_GENERATE_LOCALES to the locales you wish to generate should you not
# wish to perform the time-consuming step of generating all LIBC locales.
# NOTE: If removing en_US.UTF-8 you will also need to uncomment, and set
@@ -166,6 +170,15 @@ ENABLE_BINARY_LOCALE_GENERATION = "1"
#IMAGE_LINGUAS ?= "en-gb"
#LIMIT_BUILT_LOCALES ?= "POSIX en_GB"
+# This value is currently used by PSEUDO to determine if the recipe should
+# build both the 32-bit and 64-bit wrapper libraries on a 64-bit build system.
+#
+# PSEUDO will attempt to determine if a 32-bit wrapper is necessary, but
+# it doesn't always guess properly. If you have 32-bit executables on
+# your 64-bit build system, you likely want to set this to "0",
+# otherwise you could end up with incorrect file attributes on the
+# target filesystem.
+#
# Default to not build 32 bit libs on 64 bit systems, comment this
# out if that is desired
NO32LIBS = "1"
diff --git a/meta/conf/machine/akita.conf b/meta/conf/machine/akita.conf
index 0f5eaca9cc..cdd465200c 100644
--- a/meta/conf/machine/akita.conf
+++ b/meta/conf/machine/akita.conf
@@ -5,7 +5,6 @@
require conf/machine/include/zaurus-2.6.inc
require conf/machine/include/zaurus-clamshell.inc
-PACKAGE_EXTRA_ARCHS += "iwmmxt"
MACHINE_FEATURES += "iwmmxt"
IMAGE_FSTYPES ?= "jffs2"
diff --git a/meta/conf/machine/atom-pc.conf b/meta/conf/machine/atom-pc.conf
index 8cf09b811e..58c9b0da65 100644
--- a/meta/conf/machine/atom-pc.conf
+++ b/meta/conf/machine/atom-pc.conf
@@ -4,7 +4,6 @@
#@DESCRIPTION: Machine configuration for Intel Atom based PCs. Currently supported machines are the Asus eee901, Acer Aspire One, Toshiba NB305, and Intel BlackSand development board.
TARGET_ARCH = "i586"
-PACKAGE_EXTRA_ARCHS = "x86 core2"
include conf/machine/include/tune-atom.inc
diff --git a/meta/conf/machine/beagleboard.conf b/meta/conf/machine/beagleboard.conf
index 1b73250c24..41351e7bf4 100644
--- a/meta/conf/machine/beagleboard.conf
+++ b/meta/conf/machine/beagleboard.conf
@@ -2,7 +2,6 @@
#@NAME: Beagleboard machine
#@DESCRIPTION: Machine configuration for the http://beagleboard.org/ board
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te armv6 armv7 armv7a"
PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive"
XSERVER = "xserver-kdrive-fbdev"
@@ -13,6 +12,9 @@ GUI_MACHINE_CLASS = "bigscreen"
#Ship all kernel modules till the board support has matured enough
MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
+# Allow for MMC booting (required by the NAND-less Beagleboard XM)
+EXTRA_IMAGEDEPENDS += "u-boot x-load"
+
#include conf/machine/include/tune-arm1136jf-s.inc
include conf/machine/include/tune-cortexa8.inc
@@ -20,10 +22,10 @@ IMAGE_FSTYPES += "tar.bz2 jffs2"
EXTRA_IMAGECMD_jffs2 = "-lnp "
# Guesswork
-SERIAL_CONSOLE = "115200 ttyS2"
+SERIAL_CONSOLE = "115200 ttyO2"
-PREFERRED_PROVIDER_virtual/kernel = "linux-yocto-stable"
-#PREFERRED_PROVIDER_linux-libc-headers ?= "linux-libc-headers-yocto"
+PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
+PREFERRED_PROVIDER_linux-libc-headers ?= "linux-libc-headers-yocto"
KERNEL_IMAGETYPE = "uImage"
diff --git a/meta/conf/machine/cm-x270.conf b/meta/conf/machine/cm-x270.conf
index 226942de73..9bf7d8f6ae 100644
--- a/meta/conf/machine/cm-x270.conf
+++ b/meta/conf/machine/cm-x270.conf
@@ -8,9 +8,9 @@ GUI_MACHINE_CLASS ?= "bigscreen"
PREFERRED_PROVIDER_virtual/kernel = "linux"
PREFERRED_VERSION_linux ?= "2.6.23"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te iwmmxt"
require conf/machine/include/tune-xscale.inc
+PACKAGE_EXTRA_ARCHS += "iwmmxt"
# Console serial port.
# If you have a W module, add the following line to your local.conf:
diff --git a/meta/conf/machine/depicture.conf b/meta/conf/machine/depicture.conf
index 333af4f2f2..f72ab2939e 100644
--- a/meta/conf/machine/depicture.conf
+++ b/meta/conf/machine/depicture.conf
@@ -3,7 +3,6 @@
#@DESCRIPTION: Machine configuration for running an ARM 920t in the BBD20EUROU board.
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t"
require conf/machine/include/qemu.inc
require conf/machine/include/tune-arm920t.inc
diff --git a/meta/conf/machine/em-x270.conf b/meta/conf/machine/em-x270.conf
index 47fb8ca533..9bcec5b742 100644
--- a/meta/conf/machine/em-x270.conf
+++ b/meta/conf/machine/em-x270.conf
@@ -8,7 +8,6 @@
TARGET_ARCH = "arm"
GUI_MACHINE_CLASS ?= "bigscreen"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te iwmmxt "
PREFERRED_PROVIDER_virtual/kernel = "linux"
require conf/machine/include/tune-xscale.inc
diff --git a/meta/conf/machine/htcuniversal.conf b/meta/conf/machine/htcuniversal.conf
index 2f5b798bff..72f3bc4aad 100644
--- a/meta/conf/machine/htcuniversal.conf
+++ b/meta/conf/machine/htcuniversal.conf
@@ -4,9 +4,9 @@
#include conf/machine/include/tune-iwmmxt.inc
include conf/machine/include/tune-xscale.inc
+PACKAGE_EXTRA_ARCHS += "iwmmxt"
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4t armv5te iwmmxt"
PREFERRED_PROVIDER_virtual/kernel = "linux-rp"
diff --git a/meta/conf/machine/hx2000.conf b/meta/conf/machine/hx2000.conf
index 8b4c39f805..a6775f2c3a 100644
--- a/meta/conf/machine/hx2000.conf
+++ b/meta/conf/machine/hx2000.conf
@@ -3,7 +3,7 @@
#@DESCRIPTION: Machine configuration for the hx2000 iPAQs with a pxa27x CPU
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te iwmmxt "
+PACKAGE_EXTRA_ARCHS += "iwmmxt"
PREFERRED_PROVIDER_virtual/kernel = "linux-rp"
diff --git a/meta/conf/machine/igep0020.conf b/meta/conf/machine/igep0020.conf
index 9ddbad65b3..86adfcf1a0 100644
--- a/meta/conf/machine/igep0020.conf
+++ b/meta/conf/machine/igep0020.conf
@@ -2,7 +2,6 @@
#@NAME: IGEP v2 machine
#@DESCRIPTION: Machine configuration for the IGEP v2 board (http://www.myigep.com)
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te armv6 armv7 armv7a"
# Floating point option
TARGET_FPU_arm = "hard"
diff --git a/meta/conf/machine/igep0030.conf b/meta/conf/machine/igep0030.conf
index 7ebfaa0ca5..af36982a6a 100644
--- a/meta/conf/machine/igep0030.conf
+++ b/meta/conf/machine/igep0030.conf
@@ -2,7 +2,6 @@
#@NAME: OMAP3 IGEP module
#@DESCRIPTION: Machine configuration for the OMAP3 IGEP module (http://www.myigep.com)
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te armv6 armv7 armv7a"
# Floating point option
TARGET_FPU_arm = "hard"
diff --git a/meta/conf/machine/include/qemu.inc b/meta/conf/machine/include/qemu.inc
index 502e24f770..225906b471 100644
--- a/meta/conf/machine/include/qemu.inc
+++ b/meta/conf/machine/include/qemu.inc
@@ -15,7 +15,7 @@ IMAGE_ROOTFS_SIZE_ext3 ?= "280000"
RDEPENDS_kernel-base = ""
# Use a common kernel recipe for all QEMU machines
-PREFERRED_PROVIDER_virtual/kernel = "linux-yocto"
-#PREFERRED_PROVIDER_linux-libc-headers ?= "linux-libc-headers-yocto"
+PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
+PREFERRED_PROVIDER_linux-libc-headers ?= "linux-libc-headers-yocto"
EXTRA_IMAGEDEPENDS += "qemu-native qemu-helper-native"
diff --git a/meta/conf/machine/include/tune-arm1136jf-s.inc b/meta/conf/machine/include/tune-arm1136jf-s.inc
index be5aedc509..a7717510e6 100644
--- a/meta/conf/machine/include/tune-arm1136jf-s.inc
+++ b/meta/conf/machine/include/tune-arm1136jf-s.inc
@@ -4,5 +4,6 @@ FEED_ARCH = "armv6"
BASE_PACKAGE_ARCH = "armv6"
ARM_INSTRUCTION_SET = "${@['thumb','arm'][bb.data.getVar('CPU_FEATURES', d, 1).find('thumb') == -1]}"
+PACKAGE_EXTRA_ARCHS += "armv4 armv4t armv5te armv6"
require conf/machine/include/tune-thumb.inc
diff --git a/meta/conf/machine/include/tune-arm920t.inc b/meta/conf/machine/include/tune-arm920t.inc
index 1f7a04bb3b..fee5c586c9 100644
--- a/meta/conf/machine/include/tune-arm920t.inc
+++ b/meta/conf/machine/include/tune-arm920t.inc
@@ -1,4 +1,4 @@
FEED_ARCH = "armv4t"
BASE_PACKAGE_ARCH = "armv4t"
TARGET_CC_ARCH = "-march=armv4t -mtune=arm920t"
-
+PACKAGE_EXTRA_ARCHS += "armv4 armv4t"
diff --git a/meta/conf/machine/include/tune-arm926ejs.inc b/meta/conf/machine/include/tune-arm926ejs.inc
index e80ef10490..f41e460999 100644
--- a/meta/conf/machine/include/tune-arm926ejs.inc
+++ b/meta/conf/machine/include/tune-arm926ejs.inc
@@ -1,5 +1,5 @@
FEED_ARCH = "armv5te"
-
+PACKAGE_EXTRA_ARCHS += "armv4 armv4t armv5te"
# For gcc 3.x you need:
#TARGET_CC_ARCH = "-march=armv5te -mtune=arm926ejs"
# For gcc 4.x you need:
diff --git a/meta/conf/machine/include/tune-arm9tdmi.inc b/meta/conf/machine/include/tune-arm9tdmi.inc
index 39e4493014..d788b5304f 100644
--- a/meta/conf/machine/include/tune-arm9tdmi.inc
+++ b/meta/conf/machine/include/tune-arm9tdmi.inc
@@ -1,2 +1,4 @@
+FEED_ARCH = "armv4t"
BASE_PACKAGE_ARCH = "armv4t"
+PACKAGE_EXTRA_ARCHS += "armv4 armv4t"
TARGET_CC_ARCH = "-mcpu=arm9tdmi -mtune=arm9tdmi"
diff --git a/meta/conf/machine/include/tune-armv7.inc b/meta/conf/machine/include/tune-armv7.inc
index 96c8c64904..379a3eb011 100644
--- a/meta/conf/machine/include/tune-armv7.inc
+++ b/meta/conf/machine/include/tune-armv7.inc
@@ -3,4 +3,5 @@
# This will NOT compile programs in 'ARM' mode, which is what you really want
TARGET_CC_ARCH = "-march=armv7 -mfpu=vfp -mfloat-abi=softfp"
FEED_ARCH = "armv7"
+PACKAGE_EXTRA_ARCHS += "armv4 armv4t armv5te armv6 armv7"
BASE_PACKAGE_ARCH = "armv7"
diff --git a/meta/conf/machine/include/tune-atom.inc b/meta/conf/machine/include/tune-atom.inc
index 0f09e8d56f..a401856c8b 100644
--- a/meta/conf/machine/include/tune-atom.inc
+++ b/meta/conf/machine/include/tune-atom.inc
@@ -2,3 +2,4 @@ BASE_PACKAGE_ARCH = "core2"
TARGET_CC_ARCH = "-m32 -march=core2 -msse3 -mtune=generic -mfpmath=sse"
#MOBLIN_CFLAGS = "-Os -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -fasynchronous-unwind-tables"
+PACKAGE_EXTRA_ARCHS += "x86 i386 i486 i586 core2"
diff --git a/meta/conf/machine/include/tune-c3.inc b/meta/conf/machine/include/tune-c3.inc
index 107341eb62..1d636e89c6 100644
--- a/meta/conf/machine/include/tune-c3.inc
+++ b/meta/conf/machine/include/tune-c3.inc
@@ -1,3 +1,4 @@
TARGET_CC_ARCH = "-march=c3 -mtune=c3"
+PACKAGE_EXTRA_ARCHS += "i386 i486 i586"
BASE_PACKAGE_ARCH = "i586"
-
+FEED_ARCH = "i586"
diff --git a/meta/conf/machine/include/tune-cortexa8.inc b/meta/conf/machine/include/tune-cortexa8.inc
index 2c40b70560..3ec1c03500 100644
--- a/meta/conf/machine/include/tune-cortexa8.inc
+++ b/meta/conf/machine/include/tune-cortexa8.inc
@@ -10,3 +10,4 @@ TARGET_CC_ARCH = "-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
FEED_ARCH = "armv7a"
BASE_PACKAGE_ARCH = "armv7a"
+PACKAGE_EXTRA_ARCHS += "armv4 armv4t armv5te armv6 armv7 armv7a"
diff --git a/meta/conf/machine/include/tune-ep9312.inc b/meta/conf/machine/include/tune-ep9312.inc
index 2cfdf5270f..d0c5bb2e98 100644
--- a/meta/conf/machine/include/tune-ep9312.inc
+++ b/meta/conf/machine/include/tune-ep9312.inc
@@ -2,5 +2,7 @@ TARGET_CC_ARCH = "-march=ep9312 -mtune=ep9312 -mcpu=ep9312"
# add "-mfp=maverick" for newer gcc versions > 4.0
#set arch to ep9312 for all generated packages
+PACKAGE_EXTRA_ARCHS += "armv4t ep9312"
BASE_PACKAGE_ARCH = "ep9312"
+FEED_ARCH = "ep9312"
diff --git a/meta/conf/machine/include/tune-iwmmxt.inc b/meta/conf/machine/include/tune-iwmmxt.inc
index 49e560ea1a..f7291be805 100644
--- a/meta/conf/machine/include/tune-iwmmxt.inc
+++ b/meta/conf/machine/include/tune-iwmmxt.inc
@@ -2,5 +2,6 @@
# Please use tune-xscale for PXA255/PXA26x based processors.
TARGET_CC_ARCH = "-march=iwmmxt -mcpu=iwmmxt -mtune=iwmmxt"
BASE_PACKAGE_ARCH = "iwmmxt"
-PACKAGE_EXTRA_ARCHS += "iwmmxt"
+PACKAGE_EXTRA_ARCHS += "armv4 armv4t armv5te iwmmxt"
+FEED_ARCH = "iwmmxt"
diff --git a/meta/conf/machine/include/tune-mips32.inc b/meta/conf/machine/include/tune-mips32.inc
index 93da66b158..67edca2530 100644
--- a/meta/conf/machine/include/tune-mips32.inc
+++ b/meta/conf/machine/include/tune-mips32.inc
@@ -1 +1,3 @@
TARGET_CC_ARCH = "-march=mips32"
+FEED_ARCH = "${TARGET_ARCH}"
+BASE_PACKAGE_ARCH = "${TARGET_ARCH}"
diff --git a/meta/conf/machine/include/tune-ppc603e.inc b/meta/conf/machine/include/tune-ppc603e.inc
index a4a68d60e3..15a72d10a1 100644
--- a/meta/conf/machine/include/tune-ppc603e.inc
+++ b/meta/conf/machine/include/tune-ppc603e.inc
@@ -1,2 +1,4 @@
-TARGET_CC_ARCH = "-mcpu=603e -mhard-float"
+TARGET_CC_ARCH = "-mcpu=603e -mhard-float"
BASE_PACKAGE_ARCH = "ppc603e"
+FEED_ARCH = "ppc603e"
+PACKAGE_EXTRA_ARCHS += "ppc603e"
diff --git a/meta/conf/machine/include/tune-ppce300c2.inc b/meta/conf/machine/include/tune-ppce300c2.inc
index 067a7b100c..2956875186 100644
--- a/meta/conf/machine/include/tune-ppce300c2.inc
+++ b/meta/conf/machine/include/tune-ppce300c2.inc
@@ -1,2 +1,3 @@
TARGET_CC_ARCH = "-mcpu=e300c2 -msoft-float"
BASE_PACKAGE_ARCH = "ppce300"
+PACKAGE_EXTRA_ARCHS += "ppce300"
diff --git a/meta/conf/machine/include/tune-ppce500.inc b/meta/conf/machine/include/tune-ppce500.inc
index 2482196424..44f8742f9f 100644
--- a/meta/conf/machine/include/tune-ppce500.inc
+++ b/meta/conf/machine/include/tune-ppce500.inc
@@ -1,2 +1,4 @@
TARGET_CC_ARCH = "-mcpu=8540"
BASE_PACKAGE_ARCH = "ppce500"
+FEED_ARCH = "ppce500"
+PACKAGE_EXTRA_ARCHS += "ppce500"
diff --git a/meta/conf/machine/include/tune-sh3.inc b/meta/conf/machine/include/tune-sh3.inc
index 192dd8fd22..32801a61c3 100644
--- a/meta/conf/machine/include/tune-sh3.inc
+++ b/meta/conf/machine/include/tune-sh3.inc
@@ -1 +1,3 @@
TARGET_CC_ARCH = "-ml -m3"
+FEED_ARCH = "sh3"
+BASE_PACKAGE_ARCH = "sh3"
diff --git a/meta/conf/machine/include/tune-sh4.inc b/meta/conf/machine/include/tune-sh4.inc
index 866f7f89d5..51b40691bc 100644
--- a/meta/conf/machine/include/tune-sh4.inc
+++ b/meta/conf/machine/include/tune-sh4.inc
@@ -1 +1,7 @@
+# NOTE: If you want to optimize to sh4a, conf/machine/include/tune-sh4a.inc.
+# But it is not compatible for sh4.
+# The binary optimized by m4a doesn't operate on sh4. It works on sh4a only.
+
TARGET_CC_ARCH = "-ml -m4"
+FEED_ARCH = "sh4"
+BASE_PACKAGE_ARCH = "sh4"
diff --git a/meta/conf/machine/include/tune-supersparc.inc b/meta/conf/machine/include/tune-supersparc.inc
index 10133c6c21..a402e7cd2b 100644
--- a/meta/conf/machine/include/tune-supersparc.inc
+++ b/meta/conf/machine/include/tune-supersparc.inc
@@ -1,2 +1,3 @@
TARGET_CC_ARCH = "-mcpu=supersparc"
-BASE_PACKAGE_ARCH = "supersparc"
+BASE_PACKAGE_ARCH = "supersparc"
+FEED_ARCH = "supersparc"
diff --git a/meta/conf/machine/include/tune-xscale.inc b/meta/conf/machine/include/tune-xscale.inc
index 4f96814a72..f1ef3d46af 100644
--- a/meta/conf/machine/include/tune-xscale.inc
+++ b/meta/conf/machine/include/tune-xscale.inc
@@ -5,6 +5,7 @@ INHERIT += "siteinfo"
TARGET_CC_ARCH = "-march=armv5te -mtune=xscale"
TARGET_CC_KERNEL_ARCH = "-march=armv5te -mtune=xscale"
BASE_PACKAGE_ARCH = "${@['armv5teb', 'armv5te'][bb.data.getVar('SITEINFO_ENDIANESS', d, 1) == 'le']}"
+PACKAGE_EXTRA_ARCHS += "${@['armv4b armv4tb armv5teb', 'armv4 armv4t armv5te'][bb.data.getVar('SITEINFO_ENDIANESS', d, 1) == 'le']}"
# webkit-gtk has alignment issues with double instructions on armv5 so
# disable them here
diff --git a/meta/conf/machine/mpc8315e-rdb.conf b/meta/conf/machine/mpc8315e-rdb.conf
index 1b7982a5dd..578751c57f 100644
--- a/meta/conf/machine/mpc8315e-rdb.conf
+++ b/meta/conf/machine/mpc8315e-rdb.conf
@@ -2,7 +2,6 @@
#@DESCRIPTION: Machine configuration for running
TARGET_ARCH = "powerpc"
-PACKAGE_EXTRA_ARCHS = "ppc603e"
TARGET_FPU = "spe"
require conf/machine/include/tune-ppc603e.inc
@@ -13,5 +12,9 @@ SERIAL_CONSOLE = "115200 ttyS0"
MACHINE_FEATURES = "kernel26 keyboard pci ext2 ext3 serial"
-PREFERRED_PROVIDER_virtual/kernel = "linux-yocto-stable"
-#PREFERRED_PROVIDER_linux-libc-headers ?= "linux-libc-headers-yocto"
+PREFERRED_PROVIDER_virtual/kernel = "linux-yocto"
+PREFERRED_PROVIDER_linux-libc-headers ?= "linux-libc-headers-yocto"
+
+UBOOT_ENTRYPOINT = "0x00000000"
+
+KERNEL_DEVICETREE = "${S}/arch/powerpc/boot/dts/mpc8315erdb.dts"
diff --git a/meta/conf/machine/mx31ads.conf b/meta/conf/machine/mx31ads.conf
index 04a238d600..8b3e3dbc1a 100644
--- a/meta/conf/machine/mx31ads.conf
+++ b/meta/conf/machine/mx31ads.conf
@@ -2,7 +2,6 @@
#@NAME: Freescale imx31 ADS Board
#@DESCRIPTION: Machine configuration for the imx31 based Freescale ADS Board
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te armv6"
PREFERRED_PROVIDER_virtual/kernel = "linux-mx31"
diff --git a/meta/conf/machine/mx31phy.conf b/meta/conf/machine/mx31phy.conf
index 28b255ccec..eea673ab16 100644
--- a/meta/conf/machine/mx31phy.conf
+++ b/meta/conf/machine/mx31phy.conf
@@ -2,7 +2,6 @@
#@NAME: Phytec phyCORE-iMX31 Board
#@DESCRIPTION: Machine configuration for the imx31 based Phytec phyCORE-iMX31
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te armv6"
PREFERRED_PROVIDER_virtual/kernel = "linux-mx31"
diff --git a/meta/conf/machine/omap-3430ldp.conf b/meta/conf/machine/omap-3430ldp.conf
index 0be0546b80..759d58f015 100644
--- a/meta/conf/machine/omap-3430ldp.conf
+++ b/meta/conf/machine/omap-3430ldp.conf
@@ -2,7 +2,6 @@
#@NAME: TI OMAP 3430 LDP
#@DESCRIPTION: Machine configuration for the TI OMAP 3430 LDP (aka OMAP Zoom)
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te armv6 armv7a"
PREFERRED_PROVIDER_virtual/kernel = "linux-omap"
diff --git a/meta/conf/machine/omap-3430sdp.conf b/meta/conf/machine/omap-3430sdp.conf
index 5d87bd1483..651d6a9968 100644
--- a/meta/conf/machine/omap-3430sdp.conf
+++ b/meta/conf/machine/omap-3430sdp.conf
@@ -2,7 +2,6 @@
#@NAME: TI OMAP 3430 SDP
#@DESCRIPTION: Machine configuration for the TI OMAP 3430 SDP
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te armv6 armv7a"
PREFERRED_PROVIDER_virtual/kernel = "linux-omap"
diff --git a/meta/conf/machine/overo.conf b/meta/conf/machine/overo.conf
index dde4bff476..5271db627b 100644
--- a/meta/conf/machine/overo.conf
+++ b/meta/conf/machine/overo.conf
@@ -5,7 +5,6 @@
include conf/machine/include/tune-cortexa8.inc
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te armv6 armv7 armv7a"
MACHINE_FEATURES = "kernel26 apm usbgadget usbhost vfat alsa"
PREFERRED_VERSION_u-boot = "git"
@@ -19,7 +18,7 @@ SERIAL_CONSOLE = "115200 ttyS2"
IMAGE_FSTYPES += "tar.bz2 jffs2"
EXTRA_IMAGECMD_jffs2 = "-lnp "
-EXTRA_IMAGEDEPENDS += "u-boot-omap3 x-load"
+EXTRA_IMAGEDEPENDS += "u-boot x-load"
PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive"
#XSERVER = "xserver-xorg \
diff --git a/meta/conf/machine/qemuarm.conf b/meta/conf/machine/qemuarm.conf
index 400ecc8245..9fb18932ca 100644
--- a/meta/conf/machine/qemuarm.conf
+++ b/meta/conf/machine/qemuarm.conf
@@ -3,7 +3,6 @@
#@DESCRIPTION: arm_versaile_926ejs
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te"
require conf/machine/include/qemu.inc
require conf/machine/include/tune-arm926ejs.inc
diff --git a/meta/conf/machine/qemuppc.conf b/meta/conf/machine/qemuppc.conf
index 0bbeac7da6..83d0841159 100644
--- a/meta/conf/machine/qemuppc.conf
+++ b/meta/conf/machine/qemuppc.conf
@@ -3,7 +3,6 @@
#@DESCRIPTION: Machine configuration for running an PPC system under qemu emulation
TARGET_ARCH = "powerpc"
-PACKAGE_EXTRA_ARCHS = "ppc603e"
require conf/machine/include/qemu.inc
require conf/machine/include/tune-ppc603e.inc
diff --git a/meta/conf/machine/qemux86-64.conf b/meta/conf/machine/qemux86-64.conf
index fd34709b78..182759adfe 100644
--- a/meta/conf/machine/qemux86-64.conf
+++ b/meta/conf/machine/qemux86-64.conf
@@ -4,7 +4,6 @@
TARGET_ARCH = "x86_64"
TRANSLATED_TARGET_ARCH = "x86-64"
-PACKAGE_EXTRA_ARCHS = "x86"
PREFERRED_PROVIDER_virtual/libgl = "mesa-dri"
PREFERRED_PROVIDER_virtual/libx11 ?= "libx11-trim"
diff --git a/meta/conf/machine/qemux86.conf b/meta/conf/machine/qemux86.conf
index cb2a32d7bd..f1a0939ebc 100644
--- a/meta/conf/machine/qemux86.conf
+++ b/meta/conf/machine/qemux86.conf
@@ -3,7 +3,6 @@
#@DESCRIPTION: Machine configuration for running a common x86
TARGET_ARCH = "i586"
-PACKAGE_EXTRA_ARCHS = "x86"
PREFERRED_PROVIDER_virtual/libgl = "mesa-dri"
PREFERRED_PROVIDER_virtual/libx11 ?= "libx11-trim"
diff --git a/meta/conf/machine/routerstationpro.conf b/meta/conf/machine/routerstationpro.conf
index 4f1bbbb2c7..9e5036d86c 100644
--- a/meta/conf/machine/routerstationpro.conf
+++ b/meta/conf/machine/routerstationpro.conf
@@ -12,8 +12,8 @@ MACHINE_FEATURES = "kernel26 screen keyboard pci usbhost ext2 ext3 \
KERNEL_IMAGETYPE = "vmlinux"
KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
-PREFERRED_PROVIDER_virtual/kernel = "linux-yocto-stable"
-#PREFERRED_PROVIDER_linux-libc-headers ?= "linux-libc-headers-yocto"
+PREFERRED_PROVIDER_virtual/kernel = "linux-yocto"
+PREFERRED_PROVIDER_linux-libc-headers ?= "linux-libc-headers-yocto"
SERIAL_CONSOLE = "115200 ttyS0"
diff --git a/meta/conf/machine/spitz.conf b/meta/conf/machine/spitz.conf
index 4a794331e8..faa00e991f 100644
--- a/meta/conf/machine/spitz.conf
+++ b/meta/conf/machine/spitz.conf
@@ -9,7 +9,6 @@ MACHINE_FEATURES += "iwmmxt"
PIVOTBOOT_EXTRA_RDEPENDS += "pivotinit ${PCMCIA_MANAGER}"
-PACKAGE_EXTRA_ARCHS += "iwmmxt"
IMAGE_FSTYPES ?= "tar.gz ext3"
IMAGE_ROOTFS_SIZE_ext3 = "250000"
diff --git a/meta/conf/machine/zoom2.conf b/meta/conf/machine/zoom2.conf
index 142a40c5a1..dec90c2c7b 100644
--- a/meta/conf/machine/zoom2.conf
+++ b/meta/conf/machine/zoom2.conf
@@ -2,7 +2,6 @@
#@NAME: Logic PD Zoom2
#@DESCRIPTION: Machine configuration for the OMAP3-powered Logic PD Zoom2
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te armv6 armv7a"
PREFERRED_PROVIDER_virtual/kernel = "linux-omap-zoomsync"
diff --git a/meta/conf/machine/zylonite.conf b/meta/conf/machine/zylonite.conf
index 644675e849..e82f041ff2 100644
--- a/meta/conf/machine/zylonite.conf
+++ b/meta/conf/machine/zylonite.conf
@@ -4,8 +4,9 @@
require conf/machine/include/tune-xscale.inc
+PACKAGE_EXTRA_ARCHS += "iwmmxt"
+
TARGET_ARCH = "arm"
-PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te iwmmxt"
EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x20000 -n -x lzo -p"
diff --git a/meta/files/common-licenses/Apache-2.0 b/meta/files/common-licenses/Apache-2.0
new file mode 100644
index 0000000000..d645695673
--- /dev/null
+++ b/meta/files/common-licenses/Apache-2.0
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/meta/files/common-licenses/Artistic b/meta/files/common-licenses/Artistic
new file mode 100644
index 0000000000..5f221241e8
--- /dev/null
+++ b/meta/files/common-licenses/Artistic
@@ -0,0 +1,131 @@
+
+
+
+
+ The "Artistic License"
+
+ Preamble
+
+The intent of this document is to state the conditions under which a
+Package may be copied, such that the Copyright Holder maintains some
+semblance of artistic control over the development of the package,
+while giving the users of the package the right to use and distribute
+the Package in a more-or-less customary fashion, plus the right to make
+reasonable modifications.
+
+Definitions:
+
+ "Package" refers to the collection of files distributed by the
+ Copyright Holder, and derivatives of that collection of files
+ created through textual modification.
+
+ "Standard Version" refers to such a Package if it has not been
+ modified, or has been modified in accordance with the wishes
+ of the Copyright Holder as specified below.
+
+ "Copyright Holder" is whoever is named in the copyright or
+ copyrights for the package.
+
+ "You" is you, if you're thinking about copying or distributing
+ this Package.
+
+ "Reasonable copying fee" is whatever you can justify on the
+ basis of media cost, duplication charges, time of people involved,
+ and so on. (You will not be required to justify it to the
+ Copyright Holder, but only to the computing community at large
+ as a market that must bear the fee.)
+
+ "Freely Available" means that no fee is charged for the item
+ itself, though there may be fees involved in handling the item.
+ It also means that recipients of the item may redistribute it
+ under the same conditions they received it.
+
+1. You may make and give away verbatim copies of the source form of the
+Standard Version of this Package without restriction, provided that you
+duplicate all of the original copyright notices and associated disclaimers.
+
+2. You may apply bug fixes, portability fixes and other modifications
+derived from the Public Domain or from the Copyright Holder. A Package
+modified in such a way shall still be considered the Standard Version.
+
+3. You may otherwise modify your copy of this Package in any way, provided
+that you insert a prominent notice in each changed file stating how and
+when you changed that file, and provided that you do at least ONE of the
+following:
+
+ a) place your modifications in the Public Domain or otherwise make them
+ Freely Available, such as by posting said modifications to Usenet or
+ an equivalent medium, or placing the modifications on a major archive
+ site such as uunet.uu.net, or by allowing the Copyright Holder to include
+ your modifications in the Standard Version of the Package.
+
+ b) use the modified Package only within your corporation or organization.
+
+ c) rename any non-standard executables so the names do not conflict
+ with standard executables, which must also be provided, and provide
+ a separate manual page for each non-standard executable that clearly
+ documents how it differs from the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+4. You may distribute the programs of this Package in object code or
+executable form, provided that you do at least ONE of the following:
+
+ a) distribute a Standard Version of the executables and library files,
+ together with instructions (in the manual page or equivalent) on where
+ to get the Standard Version.
+
+ b) accompany the distribution with the machine-readable source of
+ the Package with your modifications.
+
+ c) give non-standard executables non-standard names, and clearly
+ document the differences in manual pages (or equivalent), together
+ with instructions on where to get the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+5. You may charge a reasonable copying fee for any distribution of this
+Package. You may charge any fee you choose for support of this
+Package. You may not charge a fee for this Package itself. However,
+you may distribute this Package in aggregate with other (possibly
+commercial) programs as part of a larger (possibly commercial) software
+distribution provided that you do not advertise this Package as a
+product of your own. You may embed this Package's interpreter within
+an executable of yours (by linking); this shall be construed as a mere
+form of aggregation, provided that the complete Standard Version of the
+interpreter is so embedded.
+
+6. The scripts and library files supplied as input to or produced as
+output from the programs of this Package do not automatically fall
+under the copyright of this Package, but belong to whoever generated
+them, and may be sold commercially, and may be aggregated with this
+Package. If such scripts or library files are aggregated with this
+Package via the so-called "undump" or "unexec" methods of producing a
+binary executable image, then distribution of such an image shall
+neither be construed as a distribution of this Package nor shall it
+fall under the restrictions of Paragraphs 3 and 4, provided that you do
+not represent such an executable image as a Standard Version of this
+Package.
+
+7. C subroutines (or comparably compiled subroutines in other
+languages) supplied by you and linked into this Package in order to
+emulate subroutines and variables of the language defined by this
+Package shall not be considered part of this Package, but are the
+equivalent of input as in Paragraph 6, provided these subroutines do
+not change the language in any way that would cause it to fail the
+regression tests for the language.
+
+8. Aggregation of this Package with a commercial distribution is always
+permitted provided that the use of this Package is embedded; that is,
+when no overt attempt is made to make this Package's interfaces visible
+to the end user of the commercial distribution. Such use shall not be
+construed as a distribution of this Package.
+
+9. The name of the Copyright Holder may not be used to endorse or promote
+products derived from this software without specific prior written permission.
+
+10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+ The End
diff --git a/meta/files/common-licenses/BSD b/meta/files/common-licenses/BSD
new file mode 100644
index 0000000000..c7a0aa4f94
--- /dev/null
+++ b/meta/files/common-licenses/BSD
@@ -0,0 +1,26 @@
+Copyright (c) The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
diff --git a/meta/files/common-licenses/GFDL b/meta/files/common-licenses/GFDL
new file mode 100644
index 0000000000..2f7e03ca51
--- /dev/null
+++ b/meta/files/common-licenses/GFDL
@@ -0,0 +1,451 @@
+
+ GNU Free Documentation License
+ Version 1.3, 3 November 2008
+
+
+ Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+ <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document "free" in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The "Document", below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as "you". You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification. Examples of
+transparent image formats include PNG, XCF and JPG. Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+The "publisher" means any person or entity that distributes copies of
+the Document to the public.
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".) To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no
+other conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to
+give them a chance to provide you with an updated version of the
+Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has fewer than five),
+ unless they release you from this requirement.
+C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section Entitled "History", Preserve its Title, and add
+ to it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section Entitled "History" in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the "History" section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the section all
+ the substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+N. Do not retitle any existing section to be Entitled "Endorsements"
+ or to conflict in title with any Invariant Section.
+O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications". You must delete all sections
+Entitled "Endorsements".
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other
+documents released under this License, and replace the individual
+copies of this License in the various documents with a single copy
+that is included in the collection, provided that you follow the rules
+of this License for verbatim copying of each of the documents in all
+other respects.
+
+You may extract a single document from such a collection, and
+distribute it individually under this License, provided you insert a
+copy of this License into the extracted document, and follow this
+License in all other respects regarding verbatim copying of that
+document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the
+GNU Free Documentation License from time to time. Such new versions
+will be similar in spirit to the present version, but may differ in
+detail to address new problems or concerns. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation. If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+
+11. RELICENSING
+
+"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works. A
+public wiki that anybody can edit is an example of such a server. A
+"Massive Multiauthor Collaboration" (or "MMC") contained in the site
+means any set of copyrightable works thus published on the MMC site.
+
+"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+"Incorporate" means to publish or republish a Document, in whole or in
+part, as part of another Document.
+
+An MMC is "eligible for relicensing" if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole or
+in part into the MMC, (1) had no cover texts or invariant sections, and
+(2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled "GNU
+ Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
diff --git a/meta/files/common-licenses/GFDL-1.2 b/meta/files/common-licenses/GFDL-1.2
new file mode 100644
index 0000000000..4a0fe1c8de
--- /dev/null
+++ b/meta/files/common-licenses/GFDL-1.2
@@ -0,0 +1,397 @@
+ GNU Free Documentation License
+ Version 1.2, November 2002
+
+
+ Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document "free" in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The "Document", below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as "you". You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject. (Thus, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification. Examples of
+transparent image formats include PNG, XCF and JPG. Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".) To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has fewer than five),
+ unless they release you from this requirement.
+C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section Entitled "History", Preserve its Title, and add
+ to it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section Entitled "History" in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the "History" section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the section all
+ the substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+N. Do not retitle any existing section to be Entitled "Endorsements"
+ or to conflict in title with any Invariant Section.
+O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications". You must delete all sections
+Entitled "Endorsements".
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled "GNU
+ Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
diff --git a/meta/files/common-licenses/GFDL-1.3 b/meta/files/common-licenses/GFDL-1.3
new file mode 100644
index 0000000000..2f7e03ca51
--- /dev/null
+++ b/meta/files/common-licenses/GFDL-1.3
@@ -0,0 +1,451 @@
+
+ GNU Free Documentation License
+ Version 1.3, 3 November 2008
+
+
+ Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+ <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document "free" in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The "Document", below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as "you". You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification. Examples of
+transparent image formats include PNG, XCF and JPG. Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+The "publisher" means any person or entity that distributes copies of
+the Document to the public.
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".) To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no
+other conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to
+give them a chance to provide you with an updated version of the
+Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has fewer than five),
+ unless they release you from this requirement.
+C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section Entitled "History", Preserve its Title, and add
+ to it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section Entitled "History" in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the "History" section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the section all
+ the substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+N. Do not retitle any existing section to be Entitled "Endorsements"
+ or to conflict in title with any Invariant Section.
+O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications". You must delete all sections
+Entitled "Endorsements".
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other
+documents released under this License, and replace the individual
+copies of this License in the various documents with a single copy
+that is included in the collection, provided that you follow the rules
+of this License for verbatim copying of each of the documents in all
+other respects.
+
+You may extract a single document from such a collection, and
+distribute it individually under this License, provided you insert a
+copy of this License into the extracted document, and follow this
+License in all other respects regarding verbatim copying of that
+document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the
+GNU Free Documentation License from time to time. Such new versions
+will be similar in spirit to the present version, but may differ in
+detail to address new problems or concerns. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation. If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+
+11. RELICENSING
+
+"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works. A
+public wiki that anybody can edit is an example of such a server. A
+"Massive Multiauthor Collaboration" (or "MMC") contained in the site
+means any set of copyrightable works thus published on the MMC site.
+
+"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+"Incorporate" means to publish or republish a Document, in whole or in
+part, as part of another Document.
+
+An MMC is "eligible for relicensing" if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole or
+in part into the MMC, (1) had no cover texts or invariant sections, and
+(2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled "GNU
+ Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
diff --git a/meta/files/common-licenses/GPL b/meta/files/common-licenses/GPL
new file mode 100644
index 0000000000..4432540474
--- /dev/null
+++ b/meta/files/common-licenses/GPL
@@ -0,0 +1,676 @@
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program 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 3 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, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+
diff --git a/meta/files/common-licenses/GPLv2 b/meta/files/common-licenses/GPLv2
new file mode 100644
index 0000000000..d511905c16
--- /dev/null
+++ b/meta/files/common-licenses/GPLv2
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program 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.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/meta/files/common-licenses/GPLv3 b/meta/files/common-licenses/GPLv3
new file mode 100644
index 0000000000..4432540474
--- /dev/null
+++ b/meta/files/common-licenses/GPLv3
@@ -0,0 +1,676 @@
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program 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 3 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, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+
diff --git a/meta/files/common-licenses/LGPL b/meta/files/common-licenses/LGPL
new file mode 100644
index 0000000000..fc8a5de7ed
--- /dev/null
+++ b/meta/files/common-licenses/LGPL
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/meta/files/common-licenses/LGPLv2 b/meta/files/common-licenses/LGPLv2
new file mode 100644
index 0000000000..2676d08aec
--- /dev/null
+++ b/meta/files/common-licenses/LGPLv2
@@ -0,0 +1,481 @@
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL. It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it. You can use it for
+your libraries, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library. If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software. To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+ Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs. This
+license, the GNU Library General Public License, applies to certain
+designated libraries. This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+ The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it. Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program. However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+ Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries. We
+concluded that weaker conditions might promote sharing better.
+
+ However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves. This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them. (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.) The hope is that this
+will lead to faster development of free libraries.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+ Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License"). Each licensee is
+addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ c) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ d) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/meta/files/common-licenses/LGPLv2.1 b/meta/files/common-licenses/LGPLv2.1
new file mode 100644
index 0000000000..2d2d780e60
--- /dev/null
+++ b/meta/files/common-licenses/LGPLv2.1
@@ -0,0 +1,510 @@
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes a de-facto standard. To achieve this, non-free programs must
+be allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control
+compilation and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at least
+ three years, to give the same user the materials specified in
+ Subsection 6a, above, for a charge no more than the cost of
+ performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply, and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License
+may add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms
+of the ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library.
+It is safest to attach them to the start of each source file to most
+effectively convey the exclusion of warranty; and each file should
+have at least the "copyright" line and a pointer to where the full
+notice is found.
+
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or
+your school, if any, to sign a "copyright disclaimer" for the library,
+if necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James
+ Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/meta/files/common-licenses/LGPLv3 b/meta/files/common-licenses/LGPLv3
new file mode 100644
index 0000000000..fc8a5de7ed
--- /dev/null
+++ b/meta/files/common-licenses/LGPLv3
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py
index f203d683da..c8eeb8bc4c 100644
--- a/meta/lib/oe/patch.py
+++ b/meta/lib/oe/patch.py
@@ -72,14 +72,14 @@ class PatchSet(object):
if not patch.get("remote"):
raise PatchError("Patch file must be specified in patch import.")
else:
- patch["file"] = bb.fetch.localpath(patch["remote"], self.d)
+ patch["file"] = bb.fetch2.localpath(patch["remote"], self.d)
for param in PatchSet.defaults:
if not patch.get(param):
patch[param] = PatchSet.defaults[param]
if patch.get("remote"):
- patch["file"] = bb.data.expand(bb.fetch.localpath(patch["remote"], self.d), self.d)
+ patch["file"] = bb.data.expand(bb.fetch2.localpath(patch["remote"], self.d), self.d)
patch["filemd5"] = bb.utils.md5_file(patch["file"])
@@ -293,7 +293,7 @@ class QuiltTree(PatchSet):
if type == "file":
import shutil
if not patch.get("file") and patch.get("remote"):
- patch["file"] = bb.fetch.localpath(patch["remote"], self.d)
+ patch["file"] = bb.fetch2.localpath(patch["remote"], self.d)
shutil.copyfile(patch["quiltfile"], patch["file"])
else:
diff --git a/meta/recipes-bsp/apmd/apmd-3.2.2-14/workaround.patch b/meta/recipes-bsp/apmd/apmd-3.2.2-14/workaround.patch
deleted file mode 100644
index d37380397c..0000000000
--- a/meta/recipes-bsp/apmd/apmd-3.2.2-14/workaround.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-# this workaround is there in OE since 2003. It looks to provide a workaround
-# allowing others sending SIGUSR1 to cause an apm suspend event. Disable it for
-# now.
-#
-# comment added by Kevin Tian <kevin.tian@intel.com>, 2010-07-13
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- apmd-3.2.2.orig/apmd.c~workaround.patch
-+++ apmd-3.2.2.orig/apmd.c
-@@ -158,6 +158,7 @@
- static int quiet_bios_batlow; /* = 0 */
- static int verbosity = DEFAULT_VERBOSITY;
- static int warn_level = 10;
-+static int sleep_now = 0; /* ntp */
-
- static uid_t apmd_uid = 0;
- static int apmd_fd = -1;
-@@ -942,6 +943,12 @@
- exit(0);
- }
-
-+/* ntp */
-+static void sig_usr1(int sig)
-+{
-+ sleep_now = 1;
-+}
-+
- int main(int argc, char **argv)
- {
- int c;
-@@ -1151,6 +1158,8 @@
- openlog("apmd", (verbosity>=LOG_DEBUG)?LOG_PERROR:0 | LOG_PID | LOG_CONS, LOG_DAEMON);
-
- /* Set up signal handler */
-+ if (signal(SIGUSR1, SIG_IGN) != SIG_IGN)
-+ signal(SIGUSR1, sig_usr1); /* ntp */
- if (signal(SIGINT, SIG_IGN) != SIG_IGN)
- signal(SIGINT, sig_handler);
- if (signal(SIGQUIT, SIG_IGN) != SIG_IGN)
-@@ -1230,9 +1239,16 @@
-
- for (;;)
- {
-- int num_events = apm_get_events(apmd_fd, check_interval, events, MAX_EVENTS);
-+ int num_events;
- int e, a;
-
-+ /* ntp */
-+ if (sleep_now) {
-+ sleep_now = 0;
-+ handle_event(APM_USER_SUSPEND, &apminfo);
-+ }
-+
-+ num_events = apm_get_events(apmd_fd, check_interval, events, MAX_EVENTS);
- apm_read(&apminfo);
-
- if (num_events == 0) {
diff --git a/meta/recipes-bsp/apmd/apmd_3.2.2-14.bb b/meta/recipes-bsp/apmd/apmd_3.2.2-14.bb
index 5f6fce433f..50d84ec39a 100644
--- a/meta/recipes-bsp/apmd/apmd_3.2.2-14.bb
+++ b/meta/recipes-bsp/apmd/apmd_3.2.2-14.bb
@@ -1,12 +1,13 @@
SUMMARY = "Utilities for Advanced Power Management"
-DESCRIPTION = "The Advanced Power Management (APM) support provides access to \
-battery status information and a set of tools for managing notebook power \
-consumption."
+DESCRIPTION = "The Advanced Power Management (APM) support provides \
+access to battery status information and a set of tools for managing \
+notebook power consumption."
+HOMEPAGE = "http://apenwarr.ca/apmd/"
SECTION = "base"
PRIORITY = "required"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
- file://apm.h;firstline=6;endline=18;md5=c9a1f79036ab14aa157e15ed75ffd769"
+ file://apm.h;firstline=6;endline=18;md5=c9a1f79036ab14aa157e15ed75ffd769"
DEPENDS = "libtool-cross"
PR = "r1"
diff --git a/meta/recipes-bsp/eee-acpi-scripts/eee-acpi-scripts_git.bb b/meta/recipes-bsp/eee-acpi-scripts/eee-acpi-scripts_git.bb
index d186727886..855da11cea 100644
--- a/meta/recipes-bsp/eee-acpi-scripts/eee-acpi-scripts_git.bb
+++ b/meta/recipes-bsp/eee-acpi-scripts/eee-acpi-scripts_git.bb
@@ -5,10 +5,10 @@ SECTION = "base"
LICENSE="GPL"
LIC_FILES_CHKSUM = "file://debian/copyright;md5=77ef83ab5f4af938a93edb61f7b74f2c"
-PV = "1.1.11+git${SRCREV}"
-PR = "r3"
+PV = "1.1.11+git${SRCPV}"
+PR = "r4"
-RDEPENDS = "pm-utils"
+RDEPENDS_${PN} = "pm-utils"
SRC_URI = "git://git.debian.org/git/debian-eeepc/eeepc-acpi-scripts.git;protocol=git \
file://remove-doc-check.patch;patch=1 \
diff --git a/meta/recipes-bsp/grub/grub_0.97.bb b/meta/recipes-bsp/grub/grub_0.97.bb
index 503dac07ea..131d942cc7 100644
--- a/meta/recipes-bsp/grub/grub_0.97.bb
+++ b/meta/recipes-bsp/grub/grub_0.97.bb
@@ -10,8 +10,8 @@ LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b \
file://grub/main.c;beginline=3;endline=9;md5=22a5f28d2130fff9f2a17ed54be90ed6"
-RDEPENDS = "diffutils"
-PR = "r2"
+RDEPENDS_${PN} = "diffutils"
+PR = "r3"
SRC_URI = "ftp://alpha.gnu.org/gnu/grub/grub-${PV}.tar.gz; \
file://autohell.patch;apply=yes "
diff --git a/meta/recipes-bsp/hostap/hostap-conf_1.0.bb b/meta/recipes-bsp/hostap/hostap-conf_1.0.bb
index ef004e60e5..fa29470485 100644
--- a/meta/recipes-bsp/hostap/hostap-conf_1.0.bb
+++ b/meta/recipes-bsp/hostap/hostap-conf_1.0.bb
@@ -3,9 +3,9 @@ SECTION = "kernel/modules"
PRIORITY = "optional"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
-RDEPENDS = "update-modules"
+RDEPENDS_${PN} = "update-modules"
PACKAGE_ARCH = "all"
-PR = "r11"
+PR = "r12"
SRC_URI = "file://hostap_cs.modalias \
file://COPYING.patch"
diff --git a/meta/recipes-bsp/libacpi/libacpi_0.2.bb b/meta/recipes-bsp/libacpi/libacpi_0.2.bb
index 83d7cba71c..b182864516 100644
--- a/meta/recipes-bsp/libacpi/libacpi_0.2.bb
+++ b/meta/recipes-bsp/libacpi/libacpi_0.2.bb
@@ -5,7 +5,7 @@ SECTION = "base"
HOMEPAGE = "http://www.ngolde.de/libacpi.html"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=fec17f82f16630adf2dfb7d2a46f21c5"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://www.ngolde.de/download/libacpi-${PV}.tar.gz \
file://makefile-fix.patch;patch=1 "
@@ -20,6 +20,8 @@ FILES_${PN}-bin = "${bindir}"
COMPATIBLE_HOST = '(x86_64|i.86).*-(linux|freebsd.*)'
+CFLAGS += "-fPIC"
+
do_install() {
oe_runmake install DESTDIR=${D} PREFIX=${exec_prefix}
}
diff --git a/meta/recipes-bsp/orinoco/orinoco-conf_1.0.bb b/meta/recipes-bsp/orinoco/orinoco-conf_1.0.bb
index bc22f6f871..a24d004adb 100644
--- a/meta/recipes-bsp/orinoco/orinoco-conf_1.0.bb
+++ b/meta/recipes-bsp/orinoco/orinoco-conf_1.0.bb
@@ -3,9 +3,9 @@ SECTION = "kernel/modules"
PRIORITY = "optional"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
-RDEPENDS = "update-modules"
+RDEPENDS_${PN} = "update-modules"
PACKAGE_ARCH = "all"
-PR = "r5"
+PR = "r6"
SRC_URI = "file://orinoco_cs.conf \
file://COPYING.patch"
diff --git a/meta/recipes-bsp/pciutils/pciutils_3.1.7.bb b/meta/recipes-bsp/pciutils/pciutils_3.1.7.bb
index a48a29326e..6f13ada43d 100644
--- a/meta/recipes-bsp/pciutils/pciutils_3.1.7.bb
+++ b/meta/recipes-bsp/pciutils/pciutils_3.1.7.bb
@@ -9,7 +9,7 @@ LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
DEPENDS = "zlib"
RDEPENDS_${PN} = "${PN}-ids"
-PR = "r0"
+PR = "r1"
SRC_URI = "ftp://ftp.kernel.org/pub/software/utils/pciutils/pciutils-${PV}.tar.bz2 \
file://configure.patch \
@@ -47,9 +47,6 @@ do_install () {
install -d ${D}${bindir}
ln -s ../sbin/lspci ${D}${bindir}/lspci
-
- install -d ${D}${datadir}
- install -m 644 ${S}/pci.ids ${D}${datadir}
}
PACKAGES =+ "pciutils-ids libpci libpci-dev libpci-dbg"
diff --git a/meta/recipes-bsp/qemu-config/qemu-config.bb b/meta/recipes-bsp/qemu-config/qemu-config.bb
index dbe5d83b09..0792670463 100644
--- a/meta/recipes-bsp/qemu-config/qemu-config.bb
+++ b/meta/recipes-bsp/qemu-config/qemu-config.bb
@@ -3,8 +3,8 @@ DESCRIPTION = "Adds scripts to use distcc on the host system under qemu"
LICENSE = "GPL"
LIC_FILES_CHKSUM = "file://${WORKDIR}/COPYING.GPL;md5=751419260aa954499f7abaabaa882bbe"
-RDEPENDS = "distcc task-poky-nfs-server oprofileui-server rsync bash"
-PR = "r18"
+RDEPENDS_${PN} = "distcc task-poky-nfs-server oprofileui-server rsync bash"
+PR = "r19"
SRC_URI = "file://distcc.sh \
file://anjuta-remote-run \
diff --git a/meta/recipes-bsp/uboot/u-boot-mkimage-native_1.3.2.bb b/meta/recipes-bsp/uboot/u-boot-mkimage-native_1.3.2.bb
index fcba0d5662..eab286c272 100644
--- a/meta/recipes-bsp/uboot/u-boot-mkimage-native_1.3.2.bb
+++ b/meta/recipes-bsp/uboot/u-boot-mkimage-native_1.3.2.bb
@@ -5,6 +5,8 @@ SECTION = "bootloader"
SRC_URI = "ftp://ftp.denx.de/pub/u-boot/u-boot-${PV}.tar.bz2 \
file://fix-arm920t-eabi.patch;patch=1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4c6cde5df68eff615d36789dc18edd3b"
+
S = "${WORKDIR}/u-boot-${PV}"
inherit native
diff --git a/meta/recipes-bsp/uboot/u-boot-omap3-git/beagleboard/name.patch b/meta/recipes-bsp/uboot/u-boot-omap3-git/beagleboard/name.patch
deleted file mode 100644
index ac03e47774..0000000000
--- a/meta/recipes-bsp/uboot/u-boot-omap3-git/beagleboard/name.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- git/Makefile.orig 2008-07-25 16:21:22.000000000 -0700
-+++ git/Makefile 2008-07-27 06:49:08.000000000 -0700
-@@ -2582,8 +2582,8 @@ SMN42_config : unconfig
- #########################################################################
- ## ARM CORTEX Systems
- #########################################################################
--omap3530beagle_config : unconfig
-- @$(MKCONFIG) $(@:_config=) arm omap3 omap3530beagle
-+beagleboard_config : unconfig
-+ @$(MKCONFIG) omap3530beagle arm omap3 omap3530beagle
-
- overo_config : unconfig
- @$(MKCONFIG) $(@:_config=) arm omap3 overo
-
diff --git a/meta/recipes-bsp/uboot/u-boot-omap3_git.bb b/meta/recipes-bsp/uboot/u-boot-omap3_git.bb
deleted file mode 100644
index a083b16e95..0000000000
--- a/meta/recipes-bsp/uboot/u-boot-omap3_git.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-require u-boot.inc
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/u-boot-omap3-git/${MACHINE}"
-
-PV = "2008.10-rc2+${PR}+git${SRCREV}"
-PR="r2"
-
-SRC_URI = "git://gitorious.org/u-boot-omap3/mainline.git;branch=master;protocol=git"
-
-UBOOT_MACHINE_beagleboard = "omap3_beagle_config"
-UBOOT_MACHINE_omap3evm = "omap3_evm_config"
-UBOOT_MACHINE_overo = "omap3_overo_config"
-
-S = "${WORKDIR}/git"
-
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-
-COMPATIBLE_MACHINE = "(beagleboard|omap3evm|overo)"
diff --git a/meta/recipes-bsp/uboot/u-boot.inc b/meta/recipes-bsp/uboot/u-boot.inc
index 889f6215ed..6363474e53 100644
--- a/meta/recipes-bsp/uboot/u-boot.inc
+++ b/meta/recipes-bsp/uboot/u-boot.inc
@@ -9,7 +9,8 @@ inherit deploy
PARALLEL_MAKE=""
-EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}"
+# GCC 4.5.1 builds unusable binaries using -Os, remove it from OPTFLAGS
+EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX} OPTFLAGS=''"
UBOOT_MACHINE ?= "${MACHINE}_config"
UBOOT_IMAGE ?= "u-boot-${MACHINE}-${PV}-${PR}.bin"
diff --git a/meta/recipes-bsp/uboot/u-boot_git.bb b/meta/recipes-bsp/uboot/u-boot_git.bb
new file mode 100644
index 0000000000..16a1dbefae
--- /dev/null
+++ b/meta/recipes-bsp/uboot/u-boot_git.bb
@@ -0,0 +1,21 @@
+require u-boot.inc
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4c6cde5df68eff615d36789dc18edd3b \
+ file://README;beginline=1;endline=22;md5=3a00ef51d3fc96e9d6c1bc4708ccd3b5"
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/u-boot-git/${MACHINE}"
+
+PV = "v2010.12+${PR}+git${SRCPV}"
+PR="r0"
+
+SRC_URI = "git://git.denx.de/u-boot.git;branch=master;protocol=git"
+
+UBOOT_MACHINE_beagleboard = "omap3_beagle_config"
+UBOOT_MACHINE_overo = "omap3_overo_config"
+
+S = "${WORKDIR}/git"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+COMPATIBLE_MACHINE = "(beagleboard|overo)"
diff --git a/meta/recipes-bsp/usbutils/usbutils_0.86.bb b/meta/recipes-bsp/usbutils/usbutils_0.86.bb
index 4e8d0b3d7f..239de2488b 100644
--- a/meta/recipes-bsp/usbutils/usbutils_0.86.bb
+++ b/meta/recipes-bsp/usbutils/usbutils_0.86.bb
@@ -9,7 +9,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
DEPENDS = "libusb zlib"
RDEPENDS_${PN} = "${PN}-ids"
-PR = "r0"
+PR = "r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/linux-usb/usbutils-${PV}.tar.gz"
@@ -20,9 +20,10 @@ inherit autotools
do_install_append() {
ln -s ../sbin/lsusb ${D}${bindir}/lsusb
+ # We only need the compressed copy, remove the uncompressed version
+ rm -f ${D}${datadir}/usb.ids
}
PACKAGES += "${PN}-ids"
-
FILES_${PN} += "${datadir}/pkgconfig"
FILES_${PN}-ids = "${datadir}/usb*"
diff --git a/meta/recipes-bsp/v86d/v86d_0.1.9.bb b/meta/recipes-bsp/v86d/v86d_0.1.9.bb
index 808dd4e1e2..d9925d8b1b 100644
--- a/meta/recipes-bsp/v86d/v86d_0.1.9.bb
+++ b/meta/recipes-bsp/v86d/v86d_0.1.9.bb
@@ -16,7 +16,7 @@ SRC_URI[md5sum] = "ebbbc8e7013c9544b6ba6981add43831"
SRC_URI[sha256sum] = "8167dec4ff919cfd73f854bbd3244f05c2b867e014fa8298044ea7cfd66d18a8"
PACKAGE_ARCH = "${MACHINE_ARCH}"
-COMPATIBLE_MACHINE = "(qemux86|bootcdx86)"
+COMPATIBLE_MACHINE = "(qemux86)"
INITSCRIPT_NAME = "fbsetup"
INITSCRIPT_PARAMS = "start 0 S ."
diff --git a/meta/recipes-bsp/x-load/files/signGP.c b/meta/recipes-bsp/x-load/files/signGP.c
deleted file mode 100644
index 9325064013..0000000000
--- a/meta/recipes-bsp/x-load/files/signGP.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 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.
- *
- * Neither the name of Texas Instruments Incorporated 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.
- *
-*/
-
-
-//
-// signGP.c
-// Read the x-load.bin file and write out the x-load.bin.ift file.
-// The signed image is the original pre-pended with the size of the image
-// and the load address. If not entered on command line, file name is
-// assumed to be x-load.bin in current directory and load address is
-// 0x40200800.
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <string.h>
-#include <malloc.h>
-
-
-main(int argc, char *argv[])
-{
- int i;
- char ifname[FILENAME_MAX], ofname[FILENAME_MAX], ch;
- FILE *ifile, *ofile;
- unsigned long loadaddr, len;
- struct stat sinfo;
-
-
- // Default to x-load.bin and 0x40200800.
- strcpy(ifname, "x-load.bin");
- loadaddr = 0x40200800;
-
- if ((argc == 2) || (argc == 3))
- strcpy(ifname, argv[1]);
-
- if (argc == 3)
- loadaddr = strtol(argv[2], NULL, 16);
-
- // Form the output file name.
- strcpy(ofname, ifname);
- strcat(ofname, ".ift");
-
- // Open the input file.
- ifile = fopen(ifname, "rb");
- if (ifile == NULL) {
- printf("Cannot open %s\n", ifname);
- exit(0);
- }
-
- // Get file length.
- stat(ifname, &sinfo);
- len = sinfo.st_size;
-
- // Open the output file and write it.
- ofile = fopen(ofname, "wb");
- if (ofile == NULL) {
- printf("Cannot open %s\n", ofname);
- fclose(ifile);
- exit(0);
- }
-
- // Pad 1 sector of zeroes.
- //ch = 0x00;
- //for (i=0; i<0x200; i++)
- // fwrite(&ch, 1, 1, ofile);
-
- fwrite(&len, 1, 4, ofile);
- fwrite(&loadaddr, 1, 4, ofile);
- for (i=0; i<len; i++) {
- fread(&ch, 1, 1, ifile);
- fwrite(&ch, 1, 1, ofile);
- }
-
- fclose(ifile);
- fclose(ofile);
-}
diff --git a/meta/recipes-bsp/x-load/signgp-native.bb b/meta/recipes-bsp/x-load/signgp-native.bb
deleted file mode 100644
index ae8c8f9dcb..0000000000
--- a/meta/recipes-bsp/x-load/signgp-native.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-LICENSE = "BSD"
-DESCRIPTION = "Tool to sign omap3 x-loader images"
-
-inherit native
-SRC_URI = "file://signGP.c"
-
-do_compile() {
- ${CC} ${CFLAGS} ${LDFLAGS} ${WORKDIR}/signGP.c -o signGP
-}
-
-do_install() {
- install -d ${D}${bindir}/
- install -m 0755 signGP ${D}${bindir}/
-}
diff --git a/meta/recipes-bsp/x-load/x-load-git/beagleboard/armv7-a.patch b/meta/recipes-bsp/x-load/x-load-git/beagleboard/armv7-a.patch
deleted file mode 100644
index 3131cda6bb..0000000000
--- a/meta/recipes-bsp/x-load/x-load-git/beagleboard/armv7-a.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- git/cpu/omap3/config.mk-orig 2008-05-27 16:46:45.000000000 -0700
-+++ git/cpu/omap3/config.mk 2008-05-29 12:50:49.000000000 -0700
-@@ -23,7 +23,7 @@
- PLATFORM_RELFLAGS += -fno-strict-aliasing -fno-common -ffixed-r8 \
- -msoft-float
-
--PLATFORM_CPPFLAGS += -march=armv7a
-+PLATFORM_CPPFLAGS += -march=armv7-a
- # =========================================================================
- #
- # Supply options according to compiler version
diff --git a/meta/recipes-bsp/x-load/x-load-git/beagleboard/name.patch b/meta/recipes-bsp/x-load/x-load-git/beagleboard/name.patch
index 98dcbae497..d0fb99699d 100644
--- a/meta/recipes-bsp/x-load/x-load-git/beagleboard/name.patch
+++ b/meta/recipes-bsp/x-load/x-load-git/beagleboard/name.patch
@@ -1,14 +1,16 @@
---- git/Makefile-orig 2008-07-29 22:31:03.000000000 -0700
-+++ git/Makefile 2008-07-29 22:34:36.000000000 -0700
-@@ -152,9 +152,9 @@ omap3evm_config : unconfig
+Index: git/Makefile
+===================================================================
+--- git.orig/Makefile
++++ git/Makefile
+@@ -225,8 +225,9 @@ omap3evm_config : unconfig
overo_config : unconfig
- @./mkconfig $(@:_config=) arm omap3 overo
+ @$(MKCONFIG) $(@:_config=) arm omap3 overo
-omap3530beagle_config : unconfig
+- @$(MKCONFIG) $(@:_config=) arm omap3 omap3530beagle
+beagleboard_config : unconfig
-
-- @./mkconfig $(@:_config=) arm omap3 omap3530beagle
++ @$(MKCONFIG) omap3530beagle arm omap3 omap3530beagle
+ @./mkconfig omap3530beagle arm omap3 omap3530beagle
#########################################################################
-
+ ## OMAP4 (ARM-CortexA9) Systems
diff --git a/meta/recipes-bsp/x-load/x-load-git/omap3evm/armv7-a.patch b/meta/recipes-bsp/x-load/x-load-git/omap3evm/armv7-a.patch
deleted file mode 100644
index 3131cda6bb..0000000000
--- a/meta/recipes-bsp/x-load/x-load-git/omap3evm/armv7-a.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- git/cpu/omap3/config.mk-orig 2008-05-27 16:46:45.000000000 -0700
-+++ git/cpu/omap3/config.mk 2008-05-29 12:50:49.000000000 -0700
-@@ -23,7 +23,7 @@
- PLATFORM_RELFLAGS += -fno-strict-aliasing -fno-common -ffixed-r8 \
- -msoft-float
-
--PLATFORM_CPPFLAGS += -march=armv7a
-+PLATFORM_CPPFLAGS += -march=armv7-a
- # =========================================================================
- #
- # Supply options according to compiler version
diff --git a/meta/recipes-bsp/x-load/x-load-git/overo/armv7-a.patch b/meta/recipes-bsp/x-load/x-load-git/overo/armv7-a.patch
deleted file mode 100644
index 3131cda6bb..0000000000
--- a/meta/recipes-bsp/x-load/x-load-git/overo/armv7-a.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- git/cpu/omap3/config.mk-orig 2008-05-27 16:46:45.000000000 -0700
-+++ git/cpu/omap3/config.mk 2008-05-29 12:50:49.000000000 -0700
-@@ -23,7 +23,7 @@
- PLATFORM_RELFLAGS += -fno-strict-aliasing -fno-common -ffixed-r8 \
- -msoft-float
-
--PLATFORM_CPPFLAGS += -march=armv7a
-+PLATFORM_CPPFLAGS += -march=armv7-a
- # =========================================================================
- #
- # Supply options according to compiler version
diff --git a/meta/recipes-bsp/x-load/x-load.inc b/meta/recipes-bsp/x-load/x-load.inc
index 7073b13fe7..a98ec8fb7c 100644
--- a/meta/recipes-bsp/x-load/x-load.inc
+++ b/meta/recipes-bsp/x-load/x-load.inc
@@ -5,7 +5,7 @@ LICENSE = "GPL"
inherit deploy
-DEPENDS = "signgp-native"
+DEPENDS = ""
PARALLEL_MAKE=""
@@ -24,11 +24,10 @@ do_compile () {
unset CPPFLAGS
oe_runmake distclean
oe_runmake ${XLOAD_MACHINE}
- oe_runmake
+ oe_runmake ift
}
do_deploy () {
- signGP ${S}/x-load.bin
install ${S}/x-load.bin.ift ${DEPLOYDIR}/${XLOAD_IMAGE}
install ${S}/x-load.bin.ift ${DEPLOYDIR}/${MLO_IMAGE}
diff --git a/meta/recipes-bsp/x-load/x-load_git.bb b/meta/recipes-bsp/x-load/x-load_git.bb
index 49f867e1ba..fc2927ef02 100644
--- a/meta/recipes-bsp/x-load/x-load_git.bb
+++ b/meta/recipes-bsp/x-load/x-load_git.bb
@@ -2,24 +2,19 @@ require x-load.inc
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/x-load-git/${MACHINE}"
-PV = "1.42+${PR}+git${SRCREV}"
-PR="r12"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://README;beginline=1;endline=25;md5=ef08d08cb99057bbb5b9d6d0c5a4396f"
-SRC_URI = "git://www.sakoman.net/git/x-load-omap3.git;branch=master;protocol=git"
+PV = "1.42+${PR}+git${SRCPV}"
+PR="r13"
+
+#SRC_URI = "git://www.sakoman.net/git/x-load-omap3.git;branch=master;protocol=git"
+#SRC_URI = "git://gitorious.org/x-load-omap3/mainline.git;branch=master;protocol=git"
+SRC_URI = "git://gitorious.org/x-loader/x-loader.git;branch=master;protocol=git"
SRC_URI_append_beagleboard = " \
file://name.patch;patch=1 \
- file://armv7-a.patch;patch=1 \
- "
-
-SRC_URI_append_omap3evm = " \
- file://armv7-a.patch;patch=1 \
"
-
-SRC_URI_append_overo = " \
- file://armv7-a.patch;patch=1 \
- "
-
S = "${WORKDIR}/git"
PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/meta/recipes-bsp/zaurusd/zaurusd_svn.bb b/meta/recipes-bsp/zaurusd/zaurusd_svn.bb
index 523f72dbd4..455a29fa9e 100644
--- a/meta/recipes-bsp/zaurusd/zaurusd_svn.bb
+++ b/meta/recipes-bsp/zaurusd/zaurusd_svn.bb
@@ -3,8 +3,9 @@ SECTION = "base"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
DEPENDS = "tslib"
-RDEPENDS = "xrandr"
-PV = "0.0+svnr${SRCREV}"
+RDEPENDS_${PN} = "xrandr"
+PV = "0.0+svnr${SRCPV}"
+PR = "r2"
SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=zaurusd;proto=http"
diff --git a/meta/recipes-connectivity/avahi/avahi.inc b/meta/recipes-connectivity/avahi/avahi.inc
index b266ea4141..9f83d8dadc 100644
--- a/meta/recipes-connectivity/avahi/avahi.inc
+++ b/meta/recipes-connectivity/avahi/avahi.inc
@@ -16,7 +16,7 @@ PRIORITY = "optional"
LICENSE = "GPLv2+ & LGPLv2.1+"
DEPENDS = "expat libcap libdaemon dbus glib-2.0 gtk+ libglade"
-RRECOMMENDS = "libnss-mdns"
+RRECOMMENDS_${PN} = "libnss-mdns"
RRECOMMENDS_avahi-daemon = "libnss-mdns"
SRC_URI = "http://avahi.org/download/avahi-${PV}.tar.gz \
@@ -37,11 +37,14 @@ EXTRA_OECONF = "--with-distro=debian \
--disable-python \
--disable-doxygen-doc"
-PACKAGES =+ "avahi-daemon libavahi-common libavahi-core libavahi-client avahi-dnsconfd libavahi-glib libavahi-gobject avahi-autoipd avahi-utils libavahi-ui avahi-ui-utils"
+PACKAGES =+ "avahi-daemon libavahi-common libavahi-core libavahi-client avahi-dnsconfd libavahi-glib libavahi-gobject avahi-autoipd avahi-ui-utils avahi-utils libavahi-ui libavahi-ui-dev"
FILES_libavahi-common = "${libdir}/libavahi-common.so.*"
FILES_libavahi-core = "${libdir}/libavahi-core.so.*"
FILES_libavahi-ui = "${libdir}/libavahi-ui.so.*"
+FILES_libavahi-ui-dev = "${libdir}/libavahi-ui.* \
+ ${includedir}/avahi-ui/* \
+ ${libdir}/pkgconfig/avahi-ui.pc"
FILES_avahi-daemon = "${sbindir}/avahi-daemon \
${sysconfdir}/avahi/avahi-daemon.conf \
${sysconfdir}/avahi/hosts \
@@ -59,9 +62,13 @@ FILES_libavahi-glib = "${libdir}/libavahi-glib.so.*"
FILES_libavahi-gobject = "${libdir}/libavahi-gobject.so.*"
FILES_avahi-utils = "${bindir}/avahi-*"
FILES_avahi-ui-utils = "${bindir}/bssh ${bindir}/bvnc ${bindir}/bshell \
+ ${bindir}/avahi-discover-standalone \
${datadir}/applications \
${datadir}/avahi/interfaces"
+RRECOMMENDS_avahi-dev = "gettext-dev expat-dev libcap-dev libdaemon-dev dbus-dev glib-2.0-dev update-rc.d-dev"
+RRECOMMENDS_avahi-dev[nodeprrecs] = 1
+
CONFFILES_avahi-daemon = "${sysconfdir}/avahi/avahi-daemon.conf"
INITSCRIPT_PACKAGES = "avahi-daemon avahi-dnsconfd"
diff --git a/meta/recipes-connectivity/avahi/avahi_0.6.28.bb b/meta/recipes-connectivity/avahi/avahi_0.6.28.bb
index b2e9efb7f9..6e034b0508 100644
--- a/meta/recipes-connectivity/avahi/avahi_0.6.28.bb
+++ b/meta/recipes-connectivity/avahi/avahi_0.6.28.bb
@@ -7,7 +7,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1 \
file://avahi-client/client.h;endline=23;md5=f4ac741a25c4f434039ba3e18c8674cf"
RDEPENDS_avahi-daemon = "sysvinit-pidof"
-PR = "r0"
+PR = "r2"
EXTRA_OECONF += "--disable-gtk3"
diff --git a/meta/recipes-connectivity/bind/bind-9.7.2-P2/conf.patch b/meta/recipes-connectivity/bind/bind-9.7.2-P3/conf.patch
index deeb437290..deeb437290 100644
--- a/meta/recipes-connectivity/bind/bind-9.7.2-P2/conf.patch
+++ b/meta/recipes-connectivity/bind/bind-9.7.2-P3/conf.patch
diff --git a/meta/recipes-connectivity/bind/bind-9.7.2-P2/cross-build-fix.patch b/meta/recipes-connectivity/bind/bind-9.7.2-P3/cross-build-fix.patch
index 4978379bff..4978379bff 100644
--- a/meta/recipes-connectivity/bind/bind-9.7.2-P2/cross-build-fix.patch
+++ b/meta/recipes-connectivity/bind/bind-9.7.2-P3/cross-build-fix.patch
diff --git a/meta/recipes-connectivity/bind/bind_9.7.2-P2.bb b/meta/recipes-connectivity/bind/bind_9.7.2-P2.bb
deleted file mode 100644
index 6aaa6ffdca..0000000000
--- a/meta/recipes-connectivity/bind/bind_9.7.2-P2.bb
+++ /dev/null
@@ -1,54 +0,0 @@
-DESCRIPTION = "ISC Internet Domain Name Server"
-HOMEPAGE = "http://www.isc.org/sw/bind/"
-SECTION = "console/network"
-
-LICENSE = "ISC"
-LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=fe11ac92dcbd84134d91b6e2c2eccab5"
-
-DEPENDS = "openssl"
-PR = "r0"
-
-SRC_URI = "ftp://ftp.isc.org/isc/bind9/${PV}/${PN}-${PV}.tar.gz \
- file://conf.patch \
- file://cross-build-fix.patch \
- "
-
-# --enable-exportlib is necessary for building dhcp
-EXTRA_OECONF = " --enable-ipv6=no --with-randomdev=/dev/random --disable-threads \
- --disable-devpoll --disable-epoll \
- --sysconfdir=${sysconfdir}/bind \
- --with-openssl=${STAGING_LIBDIR}/.. --with-libxml2=${STAGING_LIBDIR}/.. \
- --enable-exportlib --with-export-includedir=${includedir} --with-export-libdir=${libdir} \
- "
-inherit autotools update-rc.d
-
-INITSCRIPT_NAME = "bind"
-INITSCRIPT_PARAMS = "defaults"
-
-PARALLEL_MAKE = ""
-
-PACKAGES_prepend = "${PN}-utils "
-FILES_${PN}-utils = "${bindir}/host ${bindir}/dig ${bindir}/nslookup"
-FILES_${PN}-dev += "${bindir}/isc-config.h"
-
-do_install_append() {
- rm "${D}/usr/bin/nslookup"
- install -d "${D}/etc/bind"
- install -d "${D}/etc/init.d"
- install -m 644 ${S}/conf/* "${D}/etc/bind"
- install -m 755 "${S}/init.d" "${D}/etc/init.d/bind"
-}
-
-CONFFILES_${PN} = " \
- ${sysconfdir}/bind/named.conf \
- ${sysconfdir}/bind/named.conf.local \
- ${sysconfdir}/bind/named.conf.options \
- ${sysconfdir}/bind/db.0 \
- ${sysconfdir}/bind/db.127 \
- ${sysconfdir}/bind/db.empty \
- ${sysconfdir}/bind/db.local \
- ${sysconfdir}/bind/db.root \
- "
-
-SRC_URI[md5sum] = "e74de6ec9c2cd27576794c873bd85f4a"
-SRC_URI[sha256sum] = "e6d5938184066fc793c28ff975e09e9721116aede2a2d6d93b1be5e8654a5c8a"
diff --git a/meta/recipes-connectivity/bind/bind_9.7.2-P3.bb b/meta/recipes-connectivity/bind/bind_9.7.2-P3.bb
new file mode 100644
index 0000000000..675ab1798a
--- /dev/null
+++ b/meta/recipes-connectivity/bind/bind_9.7.2-P3.bb
@@ -0,0 +1,55 @@
+DESCRIPTION = "ISC Internet Domain Name Server"
+HOMEPAGE = "http://www.isc.org/sw/bind/"
+SECTION = "console/network"
+
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=fe11ac92dcbd84134d91b6e2c2eccab5"
+
+DEPENDS = "openssl"
+PR = "r0"
+
+SRC_URI = "ftp://ftp.isc.org/isc/bind9/${PV}/${PN}-${PV}.tar.gz \
+ file://conf.patch \
+ file://cross-build-fix.patch \
+ "
+
+SRC_URI[md5sum] = "b4537cbae38b2daef36775bf49f33db9"
+SRC_URI[sha256sum] = "cd945f4766be664f4528ec065df626ad3624481695316ec8e13ad272f4abfb7e"
+
+# --enable-exportlib is necessary for building dhcp
+EXTRA_OECONF = " --enable-ipv6=no --with-randomdev=/dev/random --disable-threads \
+ --disable-devpoll --disable-epoll \
+ --sysconfdir=${sysconfdir}/bind \
+ --with-openssl=${STAGING_LIBDIR}/.. --with-libxml2=${STAGING_LIBDIR}/.. \
+ --enable-exportlib --with-export-includedir=${includedir} --with-export-libdir=${libdir} \
+ "
+inherit autotools update-rc.d
+
+INITSCRIPT_NAME = "bind"
+INITSCRIPT_PARAMS = "defaults"
+
+PARALLEL_MAKE = ""
+
+PACKAGES_prepend = "${PN}-utils "
+FILES_${PN}-utils = "${bindir}/host ${bindir}/dig ${bindir}/nslookup"
+FILES_${PN}-dev += "${bindir}/isc-config.h"
+
+do_install_append() {
+ rm "${D}/usr/bin/nslookup"
+ install -d "${D}/etc/bind"
+ install -d "${D}/etc/init.d"
+ install -m 644 ${S}/conf/* "${D}/etc/bind"
+ install -m 755 "${S}/init.d" "${D}/etc/init.d/bind"
+}
+
+CONFFILES_${PN} = " \
+ ${sysconfdir}/bind/named.conf \
+ ${sysconfdir}/bind/named.conf.local \
+ ${sysconfdir}/bind/named.conf.options \
+ ${sysconfdir}/bind/db.0 \
+ ${sysconfdir}/bind/db.127 \
+ ${sysconfdir}/bind/db.empty \
+ ${sysconfdir}/bind/db.local \
+ ${sysconfdir}/bind/db.root \
+ "
+
diff --git a/meta/recipes-connectivity/bluez/bluez4-4.79/bluetooth.conf b/meta/recipes-connectivity/bluez/bluez4-4.82/bluetooth.conf
index ca5e9e4f2f..ca5e9e4f2f 100644
--- a/meta/recipes-connectivity/bluez/bluez4-4.79/bluetooth.conf
+++ b/meta/recipes-connectivity/bluez/bluez4-4.82/bluetooth.conf
diff --git a/meta/recipes-connectivity/bluez/bluez4-4.79/fix-dfutool-usb-declaration-mismatch.patch b/meta/recipes-connectivity/bluez/bluez4-4.82/fix-dfutool-usb-declaration-mismatch.patch
index 91c802bc41..91c802bc41 100644
--- a/meta/recipes-connectivity/bluez/bluez4-4.79/fix-dfutool-usb-declaration-mismatch.patch
+++ b/meta/recipes-connectivity/bluez/bluez4-4.82/fix-dfutool-usb-declaration-mismatch.patch
diff --git a/meta/recipes-connectivity/bluez/bluez4-4.79/hid2hci_usb_init.patch b/meta/recipes-connectivity/bluez/bluez4-4.82/hid2hci_usb_init.patch
index ed15fd5a1b..ed15fd5a1b 100644
--- a/meta/recipes-connectivity/bluez/bluez4-4.79/hid2hci_usb_init.patch
+++ b/meta/recipes-connectivity/bluez/bluez4-4.82/hid2hci_usb_init.patch
diff --git a/meta/recipes-connectivity/bluez/bluez4-4.79/sbc-thumb.patch b/meta/recipes-connectivity/bluez/bluez4-4.82/sbc-thumb.patch
index 474423670b..474423670b 100644
--- a/meta/recipes-connectivity/bluez/bluez4-4.79/sbc-thumb.patch
+++ b/meta/recipes-connectivity/bluez/bluez4-4.82/sbc-thumb.patch
diff --git a/meta/recipes-connectivity/bluez/bluez4_4.79.bb b/meta/recipes-connectivity/bluez/bluez4_4.79.bb
deleted file mode 100644
index 54b9fc18aa..0000000000
--- a/meta/recipes-connectivity/bluez/bluez4_4.79.bb
+++ /dev/null
@@ -1,76 +0,0 @@
-SUMMARY = "Linux Bluetooth Stack Userland V4"
-DESCRIPTION = "Linux Bluetooth stack V4 userland components. These include a system configurations, daemons, tools and system libraries."
-HOMEPAGE = "http://www.bluez.org"
-SECTION = "libs"
-PRIORITY = "optional"
-LICENSE = "GPLv2+ & LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \
- file://COPYING.LIB;md5=fb504b67c50331fc78734fed90fb0e09 \
- file://src/main.c;beginline=1;endline=24;md5=9bc54b93cd7e17bf03f52513f39f926e \
- file://sbc/sbc.c;beginline=1;endline=25;md5=1a40781ed30d50d8639323a184aeb191"
-DEPENDS = "gst-plugins-base alsa-lib libusb dbus-glib libnl"
-RDEPENDS_${PN}-dev = "bluez-hcidump"
-
-# For angstrom we want this to replace at least bluez-libs
-PROVIDES_append_angstrom = " bluez-utils bluez-libs"
-
-ASNEEDED = ""
-
-PR = "r0"
-
-SRC_URI = "\
- http://www.kernel.org/pub/linux/bluetooth/bluez-${PV}.tar.gz \
- file://fix-dfutool-usb-declaration-mismatch.patch;patch=1 \
- file://sbc-thumb.patch;patch=1 \
- file://bluetooth.conf \
-"
-
-SRC_URI[md5sum] = "b3afea97981c1c6be04438930c57d891"
-SRC_URI[sha256sum] = "1b486824e486e7a7a17ebcbce99a417e724f42ebb17f9fe574bc4737fda6b7db"
-S = "${WORKDIR}/bluez-${PV}"
-
-inherit autotools
-
-EXTRA_OECONF = "\
- --enable-gstreamer \
- --enable-alsa \
- --enable-usb \
- --enable-netlink \
- --enable-tools \
- --enable-bccmd \
- --enable-hid2hci \
- --enable-dfutool \
- --enable-hidd \
- --enable-pandd \
- --enable-dund \
- --disable-cups \
- --enable-test \
- --enable-manpages \
- --enable-configfiles \
- --enable-initscripts \
- --disable-pcmciarules \
-"
-
-do_install_append() {
- install -m 0644 ${S}/audio/audio.conf ${D}/${sysconfdir}/bluetooth/
- install -m 0644 ${S}/network/network.conf ${D}/${sysconfdir}/bluetooth/
- install -m 0644 ${S}/input/input.conf ${D}/${sysconfdir}/bluetooth/
- # at_console doesn't really work with the current state of OE, so punch some more holes so people can actually use BT
- install -m 0644 ${WORKDIR}/bluetooth.conf ${D}/${sysconfdir}/dbus-1/system.d/
-}
-
-PACKAGES =+ "gst-plugin-bluez libasound-module-bluez"
-
-FILES_gst-plugin-bluez = "${libdir}/gstreamer-0.10/lib*.so"
-FILES_libasound-module-bluez = "${libdir}/alsa-lib/lib*.so"
-FILES_${PN} += "${libdir}/bluetooth/plugins/*.so"
-FILES_${PN}-dev += "\
- ${libdir}/bluetooth/plugins/*.la \
- ${libdir}/alsa-lib/*.la \
- ${libdir}/gstreamer-0.10/*.la \
-"
-
-FILES_${PN}-dbg += "\
- ${libdir}/bluetooth/plugins/.debug \
- ${libdir}/*/.debug \
-"
diff --git a/meta/recipes-connectivity/bluez/bluez4_4.82.bb b/meta/recipes-connectivity/bluez/bluez4_4.82.bb
new file mode 100644
index 0000000000..9189a585f4
--- /dev/null
+++ b/meta/recipes-connectivity/bluez/bluez4_4.82.bb
@@ -0,0 +1,76 @@
+SUMMARY = "Linux Bluetooth Stack Userland V4"
+DESCRIPTION = "Linux Bluetooth stack V4 userland components. These include a system configurations, daemons, tools and system libraries."
+HOMEPAGE = "http://www.bluez.org"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "GPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \
+ file://COPYING.LIB;md5=fb504b67c50331fc78734fed90fb0e09 \
+ file://src/main.c;beginline=1;endline=24;md5=9bc54b93cd7e17bf03f52513f39f926e \
+ file://sbc/sbc.c;beginline=1;endline=25;md5=1a40781ed30d50d8639323a184aeb191"
+DEPENDS = "gst-plugins-base alsa-lib libusb dbus-glib libnl"
+RDEPENDS_${PN}-dev = "bluez-hcidump"
+
+# For angstrom we want this to replace at least bluez-libs
+PROVIDES_append_angstrom = " bluez-utils bluez-libs"
+
+ASNEEDED = ""
+
+PR = "r0"
+
+SRC_URI = "\
+ http://www.kernel.org/pub/linux/bluetooth/bluez-${PV}.tar.gz \
+ file://fix-dfutool-usb-declaration-mismatch.patch;patch=1 \
+ file://sbc-thumb.patch;patch=1 \
+ file://bluetooth.conf \
+"
+
+SRC_URI[md5sum] = "b9e5de607e5e43c868c35c68fe6f189f"
+SRC_URI[sha256sum] = "75dc506f5346e1eb803f44294ae02406e806e309d9c9bda1de7ed235ff794b6d"
+S = "${WORKDIR}/bluez-${PV}"
+
+inherit autotools
+
+EXTRA_OECONF = "\
+ --enable-gstreamer \
+ --enable-alsa \
+ --enable-usb \
+ --enable-netlink \
+ --enable-tools \
+ --enable-bccmd \
+ --enable-hid2hci \
+ --enable-dfutool \
+ --enable-hidd \
+ --enable-pandd \
+ --enable-dund \
+ --disable-cups \
+ --enable-test \
+ --enable-manpages \
+ --enable-configfiles \
+ --enable-initscripts \
+ --disable-pcmciarules \
+"
+
+do_install_append() {
+ install -m 0644 ${S}/audio/audio.conf ${D}/${sysconfdir}/bluetooth/
+ install -m 0644 ${S}/network/network.conf ${D}/${sysconfdir}/bluetooth/
+ install -m 0644 ${S}/input/input.conf ${D}/${sysconfdir}/bluetooth/
+ # at_console doesn't really work with the current state of OE, so punch some more holes so people can actually use BT
+ install -m 0644 ${WORKDIR}/bluetooth.conf ${D}/${sysconfdir}/dbus-1/system.d/
+}
+
+PACKAGES =+ "gst-plugin-bluez libasound-module-bluez"
+
+FILES_gst-plugin-bluez = "${libdir}/gstreamer-0.10/lib*.so"
+FILES_libasound-module-bluez = "${libdir}/alsa-lib/lib*.so"
+FILES_${PN} += "${libdir}/bluetooth/plugins/*.so"
+FILES_${PN}-dev += "\
+ ${libdir}/bluetooth/plugins/*.la \
+ ${libdir}/alsa-lib/*.la \
+ ${libdir}/gstreamer-0.10/*.la \
+"
+
+FILES_${PN}-dbg += "\
+ ${libdir}/bluetooth/plugins/.debug \
+ ${libdir}/*/.debug \
+"
diff --git a/meta/recipes-connectivity/connman/connman-0.63/connman b/meta/recipes-connectivity/connman/connman-0.65/connman
index f01bf371c2..f01bf371c2 100644
--- a/meta/recipes-connectivity/connman/connman-0.63/connman
+++ b/meta/recipes-connectivity/connman/connman-0.65/connman
diff --git a/meta/recipes-connectivity/connman/connman-0.63/dbusperms.patch b/meta/recipes-connectivity/connman/connman-0.65/dbusperms.patch
index 100af0367b..100af0367b 100644
--- a/meta/recipes-connectivity/connman/connman-0.63/dbusperms.patch
+++ b/meta/recipes-connectivity/connman/connman-0.65/dbusperms.patch
diff --git a/meta/recipes-connectivity/connman/connman-0.63/fix-shutdown-ap-disconnect.patch b/meta/recipes-connectivity/connman/connman-0.65/fix-shutdown-ap-disconnect.patch
index a0ad0991df..a0ad0991df 100644
--- a/meta/recipes-connectivity/connman/connman-0.63/fix-shutdown-ap-disconnect.patch
+++ b/meta/recipes-connectivity/connman/connman-0.65/fix-shutdown-ap-disconnect.patch
diff --git a/meta/recipes-connectivity/connman/connman-gnome/connman-applet.desktop b/meta/recipes-connectivity/connman/connman-gnome/connman-applet.desktop
deleted file mode 100644
index 83d96ee67d..0000000000
--- a/meta/recipes-connectivity/connman/connman-gnome/connman-applet.desktop
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-Name=Connection Manager
-Comment=Connection Manager applet
-Icon=stock_internet
-Exec=connman-applet
-Terminal=false
-Type=Application
-Categories=Network;GTK;
-
diff --git a/meta/recipes-connectivity/connman/connman-gnome/remove-connman-property-desktop-file.patch b/meta/recipes-connectivity/connman/connman-gnome/remove-connman-property-desktop-file.patch
new file mode 100644
index 0000000000..2a8cff3593
--- /dev/null
+++ b/meta/recipes-connectivity/connman/connman-gnome/remove-connman-property-desktop-file.patch
@@ -0,0 +1,42 @@
+diff -ruN connman-gnome-0.5-orig/po/POTFILES.in connman-gnome-0.5/po/POTFILES.in
+--- connman-gnome-0.5-orig/po/POTFILES.in 2010-12-16 16:03:29.000000000 +0800
++++ connman-gnome-0.5/po/POTFILES.in 2010-12-17 10:27:17.000000000 +0800
+@@ -4,4 +4,3 @@
+ properties/advanced.c
+ properties/ethernet.c
+ properties/wifi.c
+-properties/connman-properties.desktop.in
+diff -ruN connman-gnome-0.5-orig/properties/Makefile.am connman-gnome-0.5/properties/Makefile.am
+--- connman-gnome-0.5-orig/properties/Makefile.am 2010-12-16 16:03:29.000000000 +0800
++++ connman-gnome-0.5/properties/Makefile.am 2010-12-17 10:27:09.000000000 +0800
+@@ -17,16 +17,6 @@
+
+ INCLUDES = -I$(top_srcdir)/common
+
+-desktopdir = $(datadir)/applications
+-
+-desktop_in_files = connman-properties.desktop.in
+-
+-desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
+-
+ @INTLTOOL_DESKTOP_RULE@
+
+-CLEANFILES = $(desktop_DATA)
+-
+-EXTRA_DIST = $(desktop_in_files)
+-
+ MAINTAINERCLEANFILES = Makefile.in
+diff -ruN connman-gnome-0.5-orig/properties/connman-properties.desktop.in connman-gnome-0.5/properties/connman-properties.desktop.in
+--- connman-gnome-0.5-orig/properties/connman-properties.desktop.in 2010-12-16 16:03:29.000000000 +0800
++++ connman-gnome-0.5/properties/connman-properties.desktop.in 1970-01-01 08:00:00.000000000 +0800
+@@ -1,10 +0,0 @@
+-[Desktop Entry]
+-Encoding=UTF-8
+-_Name=Connection Management
+-_Comment=Configure connection management
+-Icon=stock_internet
+-Exec=connman-properties
+-Terminal=false
+-Type=Application
+-Categories=Settings;
+-OnlyShowIn=GNOME;
diff --git a/meta/recipes-connectivity/connman/connman-gnome/service_name_update.patch b/meta/recipes-connectivity/connman/connman-gnome/service_name_update.patch
new file mode 100644
index 0000000000..942cfc883c
--- /dev/null
+++ b/meta/recipes-connectivity/connman/connman-gnome/service_name_update.patch
@@ -0,0 +1,36 @@
+diff -ruN connman-gnome-0.5-orig/common/connman-dbus.h connman-gnome-0.5/common/connman-dbus.h
+--- connman-gnome-0.5-orig/common/connman-dbus.h 2010-12-30 09:45:03.312043457 +0800
++++ connman-gnome-0.5/common/connman-dbus.h 2010-12-30 09:45:33.978499439 +0800
+@@ -22,7 +22,7 @@
+ #include <dbus/dbus-glib.h>
+ #include <gtk/gtk.h>
+
+-#define CONNMAN_SERVICE "org.moblin.connman"
++#define CONNMAN_SERVICE "net.connman"
+
+ #define CONNMAN_ERROR_INTERFACE CONNMAN_SERVICE ".Error"
+ #define CONNMAN_AGENT_INTERFACE CONNMAN_SERVICE ".Agent"
+diff -ruN connman-gnome-0.5-orig/common/instance.c connman-gnome-0.5/common/instance.c
+--- connman-gnome-0.5-orig/common/instance.c 2010-12-30 09:45:03.316085542 +0800
++++ connman-gnome-0.5/common/instance.c 2010-12-30 09:46:01.654479049 +0800
+@@ -29,7 +29,7 @@
+
+ #include "instance.h"
+
+-#define CONNMAN_SERVICE "org.moblin.connman"
++#define CONNMAN_SERVICE "net.connman"
+ #define CONNMAN_INSTANCE CONNMAN_SERVICE ".Instance"
+
+ static DBusGConnection *connection;
+diff -ruN connman-gnome-0.5-orig/common/instance.xml connman-gnome-0.5/common/instance.xml
+--- connman-gnome-0.5-orig/common/instance.xml 2010-12-30 09:45:03.312043457 +0800
++++ connman-gnome-0.5/common/instance.xml 2010-12-30 09:45:49.868372780 +0800
+@@ -1,7 +1,7 @@
+ <?xml version="1.0" encoding="UTF-8" ?>
+
+ <node name="/">
+- <interface name="org.moblin.connman.Instance">
++ <interface name="net.connman.Instance">
+ <method name="Present">
+ </method>
+ </interface>
diff --git a/meta/recipes-connectivity/connman/connman-gnome_0.5.bb b/meta/recipes-connectivity/connman/connman-gnome_0.5.bb
index 4729c5dfde..3b7d1b8f58 100644
--- a/meta/recipes-connectivity/connman/connman-gnome_0.5.bb
+++ b/meta/recipes-connectivity/connman/connman-gnome_0.5.bb
@@ -6,20 +6,16 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a \
file://properties/main.c;beginline=1;endline=20;md5=50c77c81871308b033ab7a1504626afb \
file://common/connman-dbus.c;beginline=1;endline=20;md5=de6b485c0e717a0236402d220187717a"
DEPENDS = "gtk+ dbus"
-PR = "r1"
+PR = "r3"
RRECOMMENDS_${PN} = "python python-dbus connman connman-plugin-ethernet connman-plugin-loopback connman-plugin-udhcp connman-plugin-wifi connman-plugin-fake connman-plugin-bluetooth connman-plugin-dnsproxy"
SRC_URI = "http://www.kernel.org/pub/linux/network/connman/connman-gnome-${PV}.tar.gz \
file://connman-gnome.patch \
- file://connman-applet.desktop"
+ file://remove-connman-property-desktop-file.patch \
+ file://service_name_update.patch"
SRC_URI[md5sum] = "0e1c4c25d19cad9b08a216848a320716"
SRC_URI[sha256sum] = "4d5fe481b444fc3e64fd9caa149dbcd76de166a25733f18fd93da01d2abf5d1c"
inherit autotools gtk-icon-cache
-
-do_install_append() {
- install -d ${D}${datadir}/applications/
- install ${WORKDIR}/connman-applet.desktop ${D}${datadir}/applications/
-}
diff --git a/meta/recipes-connectivity/connman/connman_0.63.bb b/meta/recipes-connectivity/connman/connman_0.63.bb
deleted file mode 100644
index e99f7840af..0000000000
--- a/meta/recipes-connectivity/connman/connman_0.63.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-require connman.inc
-PR = "r0"
-
-EXTRA_OECONF += "\
- ac_cv_path_WPASUPPLICANT=/usr/sbin/wpa_supplicant \
- --disable-gtk-doc \
- --enable-debug \
- --enable-threads \
- --enable-loopback \
- --enable-ethernet \
- --enable-wifi \
- --enable-bluetooth \
- --enable-dnsproxy \
- --disable-dhclient \
- --enable-test \
- --disable-udev \
- --disable-polkit \
- --enable-client \
- --prefix=/usr --sysconfdir=/etc --localstatedir=/var"
-
-SRC_URI = "\
- http://www.kernel.org/pub/linux/network/connman/connman-${PV}.tar.gz \
- file://fix-shutdown-ap-disconnect.patch \
- file://connman \
-"
-
-SRC_URI[md5sum] = "11616a4fa1d03f96f0739730645f7c53"
-SRC_URI[sha256sum] = "e2a57376cdcd42b3876262da6959aa58428941e0eb2df9a4724cd3f1af934492"
diff --git a/meta/recipes-connectivity/connman/connman_0.65.bb b/meta/recipes-connectivity/connman/connman_0.65.bb
new file mode 100644
index 0000000000..0b077e1d98
--- /dev/null
+++ b/meta/recipes-connectivity/connman/connman_0.65.bb
@@ -0,0 +1,28 @@
+require connman.inc
+PR = "r0"
+
+EXTRA_OECONF += "\
+ ac_cv_path_WPASUPPLICANT=/usr/sbin/wpa_supplicant \
+ --disable-gtk-doc \
+ --enable-debug \
+ --enable-threads \
+ --enable-loopback \
+ --enable-ethernet \
+ --enable-wifi \
+ --enable-bluetooth \
+ --enable-dnsproxy \
+ --disable-dhclient \
+ --enable-test \
+ --disable-udev \
+ --disable-polkit \
+ --enable-client \
+ --prefix=/usr --sysconfdir=/etc --localstatedir=/var"
+
+SRC_URI = "\
+ http://www.kernel.org/pub/linux/network/connman/connman-${PV}.tar.gz \
+ file://fix-shutdown-ap-disconnect.patch \
+ file://connman \
+"
+
+SRC_URI[md5sum] = "bd714da295ed2d2d91a49539f4c4fa3a"
+SRC_URI[sha256sum] = "a1c1d93da6bb4c2d8ae53293b06f237e02f5e796d2bba73ec639a466d05259c3"
diff --git a/meta/recipes-connectivity/gsm/gsmd.inc b/meta/recipes-connectivity/gsm/gsmd.inc
index 9818188636..b2aebb15fd 100644
--- a/meta/recipes-connectivity/gsm/gsmd.inc
+++ b/meta/recipes-connectivity/gsm/gsmd.inc
@@ -9,8 +9,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
SECTION = "libs/gsm"
PROVIDES += "gsmd"
RPROVIDES_${PN} = "libgsmd0 libgsmd gsmd gsmd-devel"
-PV = "0.1+svnr${SRCREV}"
-PR = "r0"
+PV = "0.1+svnr${SRCPV}"
+PR = "r2"
SRC_URI = "svn://svn.openmoko.org/trunk/src/target;module=gsm;proto=http \
file://fix_machine_init.patch;patch=1 \
@@ -19,10 +19,8 @@ SRC_URI = "svn://svn.openmoko.org/trunk/src/target;module=gsm;proto=http \
S = "${WORKDIR}/gsm"
inherit autotools pkgconfig update-rc.d
-# handle update-rc.d RDEPENDS manually, we don't need it on
-# anything but gsmd
-RDEPENDS_append = ""
+UPDATERCPN = "gsmd"
INITSCRIPT_NAME = "gsmd"
INITSCRIPT_PARAMS = "defaults 35"
diff --git a/meta/recipes-connectivity/gupnp/gupnp_0.14.0.bb b/meta/recipes-connectivity/gupnp/gupnp_0.14.0.bb
index 9beb46ed11..9f2d717c76 100644
--- a/meta/recipes-connectivity/gupnp/gupnp_0.14.0.bb
+++ b/meta/recipes-connectivity/gupnp/gupnp_0.14.0.bb
@@ -23,7 +23,7 @@ FILES_${PN}-dev += "${bindir}/gupnp-binding-tool"
SYSROOT_PREPROCESS_FUNCS += "gupnp_sysroot_preprocess"
gupnp_sysroot_preprocess () {
- install -d ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}/
- install -m 755 ${D}${bindir}/gupnp-binding-tool ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}/
+ install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+ install -m 755 ${D}${bindir}/gupnp-binding-tool ${SYSROOT_DESTDIR}${bindir_crossscripts}/
}
diff --git a/meta/recipes-connectivity/gypsy/gypsy_svn.bb b/meta/recipes-connectivity/gypsy/gypsy_svn.bb
index ac1b6bc12f..2e9840afd3 100644
--- a/meta/recipes-connectivity/gypsy/gypsy_svn.bb
+++ b/meta/recipes-connectivity/gypsy/gypsy_svn.bb
@@ -2,7 +2,7 @@ require gypsy.inc
DEFAULT_PREFERENCE = "-1"
-PV = "0.0+svnr${SRCREV}"
+PV = "0.0+svnr${SRCPV}"
S = "${WORKDIR}/${PN}"
SRC_URI = "svn://svn.o-hand.com/repos/${PN}/trunk;module=${PN};proto=http \
diff --git a/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.10.bb b/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.10.bb
index 0cdb057521..4c94d2aeaf 100644
--- a/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.10.bb
+++ b/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.10.bb
@@ -7,8 +7,8 @@ LICENSE = "LGPLv2.1+"
LIC_FILES_CHKSUM = "file://LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1"
DEPENDS = "avahi"
-RDEPENDS = "avahi-daemon"
-PR = "r1"
+RDEPENDS_${PN} = "avahi-daemon"
+PR = "r2"
SRC_URI = "http://0pointer.de/lennart/projects/nss-mdns/nss-mdns-${PV}.tar.gz"
diff --git a/meta/recipes-connectivity/nfs-utils/files/fix-ac-prereq.patch b/meta/recipes-connectivity/nfs-utils/files/fix-ac-prereq.patch
new file mode 100644
index 0000000000..21315206fb
--- /dev/null
+++ b/meta/recipes-connectivity/nfs-utils/files/fix-ac-prereq.patch
@@ -0,0 +1,13 @@
+diff --git a/configure.in b/configure.in
+index f5d54fb..c105988 100644
+--- a/configure.in
++++ b/configure.in
+@@ -1,7 +1,7 @@
+ # -*- Autoconf -*-
+ # Process this file with autoconf to produce a configure script.
+
+-AC_PREREQ([2.66])
++AC_PREREQ([2.65])
+ AC_INIT([libnfsidmap],[0.24],[linux-nfs@vger.kernel.org])
+ AC_CONFIG_SRCDIR([nfsidmap.h])
+ AC_CONFIG_MACRO_DIR([m4])
diff --git a/meta/recipes-connectivity/nfs-utils/libnfsidmap_0.23.bb b/meta/recipes-connectivity/nfs-utils/libnfsidmap_0.23.bb
deleted file mode 100644
index 3077ea2eef..0000000000
--- a/meta/recipes-connectivity/nfs-utils/libnfsidmap_0.23.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-DESCRIPTION = "nfs idmapping library"
-HOMEPAGE = "http://www.citi.umich.edu/projects/nfsv4/linux/"
-SECTION = "libs"
-
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d9c6a2a0ca6017fda7cd905ed2739b37"
-PR = "r0"
-
-SRC_URI = "http://www.citi.umich.edu/projects/nfsv4/linux/libnfsidmap/${BPN}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "28f3ece648c1dc5d25e8d623d55f8bd6"
-SRC_URI[sha256sum] = "69d20cfc6be6bf7ede2a55da687dc6853f2db6c8ef826a0b5e3235e7d46f4051"
-
-inherit autotools
-
-EXTRA_OECONF = "--disable-ldap"
diff --git a/meta/recipes-connectivity/nfs-utils/libnfsidmap_0.24.bb b/meta/recipes-connectivity/nfs-utils/libnfsidmap_0.24.bb
new file mode 100644
index 0000000000..101ecab1c2
--- /dev/null
+++ b/meta/recipes-connectivity/nfs-utils/libnfsidmap_0.24.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "nfs idmapping library"
+HOMEPAGE = "http://www.citi.umich.edu/projects/nfsv4/linux/"
+SECTION = "libs"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d9c6a2a0ca6017fda7cd905ed2739b37"
+PR = "r0"
+
+SRC_URI = "http://www.citi.umich.edu/projects/nfsv4/linux/libnfsidmap/${BPN}-${PV}.tar.gz \
+ file://fix-ac-prereq.patch \
+ "
+
+SRC_URI[md5sum] = "d71a1ee9881d5b5814ff3ec41256937d"
+SRC_URI[sha256sum] = "59501432e683336d7a290da13767e92afb5b86f42ea4254041225fe218e8dd47"
+
+inherit autotools
+
+EXTRA_OECONF = "--disable-ldap"
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils_1.2.3.bb b/meta/recipes-connectivity/nfs-utils/nfs-utils_1.2.3.bb
index d86bd0f737..b456474f9c 100644
--- a/meta/recipes-connectivity/nfs-utils/nfs-utils_1.2.3.bb
+++ b/meta/recipes-connectivity/nfs-utils/nfs-utils_1.2.3.bb
@@ -10,10 +10,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
# util-linux for libblkid
DEPENDS = "libcap libnfsidmap libevent util-linux tcp-wrappers"
-RDEPENDS = "portmap"
-RRECOMMENDS = "kernel-module-nfsd"
+RDEPENDS_${PN} = "portmap"
+RRECOMMENDS_${PN} = "kernel-module-nfsd"
-PR = "r0"
+PR = "r2"
SRC_URI = "${SOURCEFORGE_MIRROR}/nfs/nfs-utils-${PV}.tar.bz2 \
file://nfs-utils-1.0.6-uclibc.patch \
diff --git a/meta/recipes-connectivity/ofono/ofono.inc b/meta/recipes-connectivity/ofono/ofono.inc
index 5abc92ef52..9089670007 100644
--- a/meta/recipes-connectivity/ofono/ofono.inc
+++ b/meta/recipes-connectivity/ofono/ofono.inc
@@ -7,7 +7,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a \
inherit autotools pkgconfig update-rc.d
-DEPENDS = "dbus glib-2.0"
+DEPENDS = "dbus glib-2.0 udev"
INITSCRIPT_NAME = "ofono"
INITSCRIPT_PARAMS = "defaults 22"
diff --git a/meta/recipes-connectivity/ofono/ofono_0.33.bb b/meta/recipes-connectivity/ofono/ofono_0.33.bb
deleted file mode 100644
index 1d9a8afb73..0000000000
--- a/meta/recipes-connectivity/ofono/ofono_0.33.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require ofono.inc
-
-PR = "r0"
-
-SRC_URI = "http://www.kernel.org/pub/linux/network/ofono/${P}.tar.bz2 \
- file://ofono"
-
-SRC_URI[md5sum] = "001160996d0c00e7b8da575e1fff1bd1"
-SRC_URI[sha256sum] = "1b7ce568e32518f404231389150cea5d4abfb19e09eaa6e7a280be2e5186c82f"
diff --git a/meta/recipes-connectivity/ofono/ofono_0.37.bb b/meta/recipes-connectivity/ofono/ofono_0.37.bb
new file mode 100644
index 0000000000..1c1c50111d
--- /dev/null
+++ b/meta/recipes-connectivity/ofono/ofono_0.37.bb
@@ -0,0 +1,9 @@
+require ofono.inc
+
+PR = "r0"
+
+SRC_URI = "http://www.kernel.org/pub/linux/network/ofono/${P}.tar.bz2 \
+ file://ofono"
+
+SRC_URI[md5sum] = "fa9a6f91506db2ac5bf313ff0bde65f3"
+SRC_URI[sha256sum] = "0ac71d8a846d564ef6940c47bcc410b76df750aadf7903cb56876d991275f6db"
diff --git a/meta/recipes-connectivity/openssl/openssl-0.9.8p/debian/valgrind.patch b/meta/recipes-connectivity/openssl/openssl-0.9.8p/debian/valgrind.patch
deleted file mode 100644
index e9f86eabbf..0000000000
--- a/meta/recipes-connectivity/openssl/openssl-0.9.8p/debian/valgrind.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Index: openssl-0.9.8k/crypto/rand/md_rand.c
-===================================================================
---- openssl-0.9.8k.orig/crypto/rand/md_rand.c 2008-09-16 13:50:05.000000000 +0200
-+++ openssl-0.9.8k/crypto/rand/md_rand.c 2009-07-19 11:36:05.000000000 +0200
-@@ -477,8 +477,10 @@
- MD_Update(&m,local_md,MD_DIGEST_LENGTH);
- MD_Update(&m,(unsigned char *)&(md_c[0]),sizeof(md_c));
- #ifndef PURIFY
-+#if 0 /* Don't add uninitialised data. */
- MD_Update(&m,buf,j); /* purify complains */
- #endif
-+#endif
- k=(st_idx+MD_DIGEST_LENGTH/2)-st_num;
- if (k > 0)
- {
diff --git a/meta/recipes-connectivity/openssl/openssl_0.9.8p.bb b/meta/recipes-connectivity/openssl/openssl_0.9.8p.bb
index 3ae6bf456e..283b82add0 100644
--- a/meta/recipes-connectivity/openssl/openssl_0.9.8p.bb
+++ b/meta/recipes-connectivity/openssl/openssl_0.9.8p.bb
@@ -13,7 +13,6 @@ SRC_URI += "file://debian/ca.patch \
file://debian/no-symbolic.patch \
file://debian/pic.patch \
file://debian/pkg-config.patch \
- file://debian/valgrind.patch \
file://debian/rc4-amd64.patch \
file://debian/rehash-crt.patch \
file://debian/rehash_pod.patch \
diff --git a/meta/recipes-connectivity/ppp-dialin/ppp-dialin_0.1.bb b/meta/recipes-connectivity/ppp-dialin/ppp-dialin_0.1.bb
index 79805614d3..aa3684a440 100644
--- a/meta/recipes-connectivity/ppp-dialin/ppp-dialin_0.1.bb
+++ b/meta/recipes-connectivity/ppp-dialin/ppp-dialin_0.1.bb
@@ -1,8 +1,8 @@
SECTION = "console/network"
DESCRIPTION = "Enables PPP dial-in through a serial connection"
DEPENDS = "ppp"
-RDEPENDS = "ppp"
-PR = "r5"
+RDEPENDS_${PN} = "ppp"
+PR = "r6"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
diff --git a/meta/recipes-connectivity/resolvconf/resolvconf_1.43.bb b/meta/recipes-connectivity/resolvconf/resolvconf_1.43.bb
deleted file mode 100644
index 16d88dc86c..0000000000
--- a/meta/recipes-connectivity/resolvconf/resolvconf_1.43.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SUMMARY = "name server information handler"
-DESCRIPTION = "Resolvconf is a framework for keeping track of the system's \
-information about currently available nameservers. It sets \
-itself up as the intermediary between programs that supply \
-nameserver information and programs that need nameserver \
-information."
-SECTION = "console/network"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b"
-AUTHOR = "Thomas Hood"
-HOMEPAGE = "http://packages.debian.org/resolvconf"
-DEPENDS = "bash"
-RDEPENDS = "bash"
-PR = "r1"
-
-SRC_URI = "${DEBIAN_MIRROR}/main/r/resolvconf/resolvconf_${PV}.tar.gz"
-
-SRC_URI[md5sum] = "15faef2aba7b99782f3b0b8b5d30f80a"
-SRC_URI[sha256sum] = "17e1105cddd928adf7d47e050f9bb49557850687f800b3e24cbbf22933ff31ae"
-
-do_compile () {
- :
-}
-
-do_install () {
- install -d ${D}${sysconfdir} ${D}${sbindir} ${D}${base_sbindir} ${D}${localstatedir}/volatile/run/resolvconf/interface
- install -d ${D}${mandir}/man8 ${D}${docdir}/${P}
- cp -pPR etc/* ${D}${sysconfdir}/
- install -m 0755 bin/resolvconf ${D}${base_sbindir}/
- install -m 0644 README ${D}${docdir}/${P}/
- install -m 0644 man/resolvconf.8 ${D}${mandir}/man8/
-}
-
-PACKAGE_ARCH = "all"
-
diff --git a/meta/recipes-connectivity/resolvconf/resolvconf_1.48.bb b/meta/recipes-connectivity/resolvconf/resolvconf_1.48.bb
new file mode 100644
index 0000000000..cb8aaaf536
--- /dev/null
+++ b/meta/recipes-connectivity/resolvconf/resolvconf_1.48.bb
@@ -0,0 +1,36 @@
+SUMMARY = "name server information handler"
+DESCRIPTION = "Resolvconf is a framework for keeping track of the system's \
+information about currently available nameservers. It sets \
+itself up as the intermediary between programs that supply \
+nameserver information and programs that need nameserver \
+information."
+SECTION = "console/network"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b"
+AUTHOR = "Thomas Hood"
+HOMEPAGE = "http://packages.debian.org/resolvconf"
+DEPENDS = "bash"
+RDEPENDS_${PN} = "bash"
+PR = "r0"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/r/resolvconf/resolvconf_${PV}.tar.gz"
+
+SRC_URI[md5sum] = "b226e02704a545238eac5ef70f6d3c4c"
+SRC_URI[sha256sum] = "4b07832680b82d401a76132cd6bbe13961231235287f2662a6604edbcac82bb1"
+
+
+do_compile () {
+ :
+}
+
+do_install () {
+ install -d ${D}${sysconfdir} ${D}${sbindir} ${D}${base_sbindir} ${D}${localstatedir}/volatile/run/resolvconf/interface
+ install -d ${D}${mandir}/man8 ${D}${docdir}/${P}
+ cp -pPR etc/* ${D}${sysconfdir}/
+ install -m 0755 bin/resolvconf ${D}${base_sbindir}/
+ install -m 0644 README ${D}${docdir}/${P}/
+ install -m 0644 man/resolvconf.8 ${D}${mandir}/man8/
+}
+
+PACKAGE_ARCH = "all"
+
diff --git a/meta/recipes-connectivity/telepathy/telepathy-glib_0.13.5.bb b/meta/recipes-connectivity/telepathy/telepathy-glib_0.13.5.bb
deleted file mode 100644
index 17b6f86adb..0000000000
--- a/meta/recipes-connectivity/telepathy/telepathy-glib_0.13.5.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "Telepathy Framework glib-base helper library"
-DESCRIPTION = "Telepathy Framework: GLib-based helper library for connection managers"
-HOMEPAGE = "http://telepathy.freedesktop.org/wiki/"
-DEPENDS = "glib-2.0 dbus python-native-runtime dbus-native dbus-glib gettext"
-LICENSE = "LGPLv2.1+"
-PR = "r0"
-
-SRC_URI = "http://telepathy.freedesktop.org/releases/telepathy-glib/${P}.tar.gz"
-
-SRC_URI[md5sum] = "178de3965614a3a59123e33ec1b1e8a6"
-SRC_URI[sha256sum] = "ad6e12a062c8ebe1f1fd20065acc214b9395b3d766bf2a122b12c5f811007735"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=e413d83db6ee8f2c8e6055719096a48e"
-
-inherit autotools pkgconfig
-
-FILES_${PN} += "${datadir}/telepathy \
- ${datadir}/dbus-1"
-
diff --git a/meta/recipes-connectivity/telepathy/telepathy-glib_0.13.6.bb b/meta/recipes-connectivity/telepathy/telepathy-glib_0.13.6.bb
new file mode 100644
index 0000000000..63ada04dbe
--- /dev/null
+++ b/meta/recipes-connectivity/telepathy/telepathy-glib_0.13.6.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Telepathy Framework glib-base helper library"
+DESCRIPTION = "Telepathy Framework: GLib-based helper library for connection managers"
+HOMEPAGE = "http://telepathy.freedesktop.org/wiki/"
+DEPENDS = "glib-2.0 dbus python-native-runtime dbus-native dbus-glib gettext"
+LICENSE = "LGPLv2.1+"
+PR = "r0"
+
+SRC_URI = "http://telepathy.freedesktop.org/releases/telepathy-glib/${P}.tar.gz"
+
+SRC_URI[md5sum] = "db997b1575e9186887caf211c0b94dd9"
+SRC_URI[sha256sum] = "76a38a64d1b7fbaa6e1aaf6a9f8b898840c551aea5d9121bdcb35fdbb66c5877"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=e413d83db6ee8f2c8e6055719096a48e"
+
+inherit autotools pkgconfig
+
+FILES_${PN} += "${datadir}/telepathy \
+ ${datadir}/dbus-1"
+
diff --git a/meta/recipes-connectivity/telepathy/telepathy-idle_0.1.6.bb b/meta/recipes-connectivity/telepathy/telepathy-idle_0.1.6.bb
deleted file mode 100644
index f5222525db..0000000000
--- a/meta/recipes-connectivity/telepathy/telepathy-idle_0.1.6.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "Telepathy IRC connection manager"
-DESCRIPTION = "Telepathy implementation of the Internet Relay Chat protocols."
-HOMEPAGE = "http://telepathy.freedesktop.org/wiki/"
-DEPENDS = "glib-2.0 dbus telepathy-glib openssl"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1 \
- file://src/idle.c;beginline=1;endline=19;md5=b06b1e2594423111a1a7910b0eefc7f9"
-PR = "r0"
-
-SRC_URI = "http://telepathy.freedesktop.org/releases/${PN}/${P}.tar.gz"
-
-SRC_URI[md5sum] = "0efe17425cdc3490714947ff68003bf6"
-SRC_URI[sha256sum] = "fc05a1780499eab3b168b1826e2fe18dbe4bea3576ea0ff2b548b063336c61f5"
-
-inherit autotools pkgconfig
-
-FILES_${PN} += "${datadir}/telepathy \
- ${datadir}/dbus-1"
diff --git a/meta/recipes-connectivity/telepathy/telepathy-idle_0.1.7.bb b/meta/recipes-connectivity/telepathy/telepathy-idle_0.1.7.bb
new file mode 100644
index 0000000000..cbc7234aba
--- /dev/null
+++ b/meta/recipes-connectivity/telepathy/telepathy-idle_0.1.7.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Telepathy IRC connection manager"
+DESCRIPTION = "Telepathy implementation of the Internet Relay Chat protocols."
+HOMEPAGE = "http://telepathy.freedesktop.org/wiki/"
+DEPENDS = "glib-2.0 dbus telepathy-glib openssl"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+ file://src/idle.c;beginline=1;endline=19;md5=b06b1e2594423111a1a7910b0eefc7f9"
+PR = "r0"
+
+SRC_URI = "http://telepathy.freedesktop.org/releases/${PN}/${P}.tar.gz"
+
+SRC_URI[md5sum] = "5ee3aa5c6e1112922b11711e6a209331"
+SRC_URI[sha256sum] = "b65df4f8ebdf1039e1f1e406f53cc7b6106fab6c4d8e784e360709f8d85df0c3"
+
+inherit autotools pkgconfig
+
+FILES_${PN} += "${datadir}/telepathy \
+ ${datadir}/dbus-1"
diff --git a/meta/recipes-connectivity/telepathy/telepathy-mission-control_5.7.0.bb b/meta/recipes-connectivity/telepathy/telepathy-mission-control_5.7.0.bb
deleted file mode 100644
index de28a08378..0000000000
--- a/meta/recipes-connectivity/telepathy/telepathy-mission-control_5.7.0.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-DESCRIPTION = "Central control for Telepathy connection managers"
-HOMEPAGE = "http://mission-control.sourceforge.net/"
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499 \
- file://src/request.h;beginline=1;endline=21;md5=f80534d9af1c33291b3b79609f196eb2"
-SECTION = "libs"
-DEPENDS = "libtelepathy dbus-glib gconf"
-
-SRC_URI = "http://telepathy.freedesktop.org/releases/telepathy-mission-control/telepathy-mission-control-${PV}.tar.gz"
-
-PR = "r0"
-
-inherit autotools pkgconfig
-
-PACKAGES =+ " \
- libmissioncontrol \
- libmissioncontrol-config \
- libmissioncontrol-server \
- libmissioncontrol-dev \
- libmissioncontrol-config-dev \
- libmissioncontrol-server-dev \
- libmissioncontrol-dbg \
- libmissioncontrol-config-dbg \
- libmissioncontrol-server-dbg \
-"
-
-FILES_${PN} += "${datadir}/dbus*"
-
-FILES_libmissioncontrol = "${libdir}/libmissioncontrol.so.*"
-FILES_libmissioncontrol-config = "${libdir}/libmissioncontrol-config.so.*"
-FILES_libmissioncontrol-server = "${libdir}/libmissioncontrol-server.so.*"
-
-FILES_libmissioncontrol-dev = "${libdir}/libmissioncontrol.* \
- ${includedir}/libmissioncontrol/ \
- ${libdir}/pkgconfig/libmissioncontrol.pc"
-FILES_libmissioncontrol-config-dev = "${libdir}/libmissioncontrol-config.*"
-FILES_libmissioncontrol-server-dev = "${libdir}/libmissioncontrol-server.*"
-
-FILES_libmissioncontrol-dbg = "${libdir}/.debug/libmissioncontrol.so.*"
-FILES_libmissioncontrol-config-dbg = "${libdir}/.debug/libmissioncontrol-config.so.*"
-FILES_libmissioncontrol-server-dbg = "${libdir}/.debug/libmissioncontrol-server.so.*"
-
-SRC_URI[md5sum] = "cf6a3f48bb493312b537c9b6b33c0a72"
-SRC_URI[sha256sum] = "ffe0da124418fa4f8c3a9049f7e13febb1ca5e9be92229cd5ab12238f4fda824"
diff --git a/meta/recipes-connectivity/telepathy/telepathy-mission-control_5.7.1.bb b/meta/recipes-connectivity/telepathy/telepathy-mission-control_5.7.1.bb
new file mode 100644
index 0000000000..f5c27454f2
--- /dev/null
+++ b/meta/recipes-connectivity/telepathy/telepathy-mission-control_5.7.1.bb
@@ -0,0 +1,44 @@
+DESCRIPTION = "Central control for Telepathy connection managers"
+HOMEPAGE = "http://mission-control.sourceforge.net/"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499 \
+ file://src/request.h;beginline=1;endline=21;md5=f80534d9af1c33291b3b79609f196eb2"
+SECTION = "libs"
+DEPENDS = "libtelepathy dbus-glib gconf"
+
+SRC_URI = "http://telepathy.freedesktop.org/releases/telepathy-mission-control/telepathy-mission-control-${PV}.tar.gz"
+
+PR = "r0"
+
+inherit autotools pkgconfig
+
+PACKAGES =+ " \
+ libmissioncontrol \
+ libmissioncontrol-config \
+ libmissioncontrol-server \
+ libmissioncontrol-dev \
+ libmissioncontrol-config-dev \
+ libmissioncontrol-server-dev \
+ libmissioncontrol-dbg \
+ libmissioncontrol-config-dbg \
+ libmissioncontrol-server-dbg \
+"
+
+FILES_${PN} += "${datadir}/dbus*"
+
+FILES_libmissioncontrol = "${libdir}/libmissioncontrol.so.*"
+FILES_libmissioncontrol-config = "${libdir}/libmissioncontrol-config.so.*"
+FILES_libmissioncontrol-server = "${libdir}/libmissioncontrol-server.so.*"
+
+FILES_libmissioncontrol-dev = "${libdir}/libmissioncontrol.* \
+ ${includedir}/libmissioncontrol/ \
+ ${libdir}/pkgconfig/libmissioncontrol.pc"
+FILES_libmissioncontrol-config-dev = "${libdir}/libmissioncontrol-config.*"
+FILES_libmissioncontrol-server-dev = "${libdir}/libmissioncontrol-server.*"
+
+FILES_libmissioncontrol-dbg = "${libdir}/.debug/libmissioncontrol.so.*"
+FILES_libmissioncontrol-config-dbg = "${libdir}/.debug/libmissioncontrol-config.so.*"
+FILES_libmissioncontrol-server-dbg = "${libdir}/.debug/libmissioncontrol-server.so.*"
+
+SRC_URI[md5sum] = "9688a3f75c080eaa2dbf6b4d75876dc9"
+SRC_URI[sha256sum] = "c58f07ee801b023bc5d5a8ec0fce49058a0372b6727e6516fb56d100dacd07fe"
diff --git a/meta/recipes-connectivity/telepathy/telepathy-python_0.15.18.bb b/meta/recipes-connectivity/telepathy/telepathy-python_0.15.18.bb
deleted file mode 100644
index 8d7c766b90..0000000000
--- a/meta/recipes-connectivity/telepathy/telepathy-python_0.15.18.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-DESCRIPTION = "Telepathy framework - Python package"
-HOMEPAGE = "http://telepathy.freedesktop.org/wiki/"
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1 \
- file://src/utils.py;beginline=1;endline=17;md5=9a07d1a9791a7429a14e7b25c6c86822"
-
-RDEPENDS_${PN} += "python-dbus"
-
-SRC_URI = "http://telepathy.freedesktop.org/releases/${PN}/${P}.tar.gz "
-
-PR = "r1"
-
-inherit autotools
-
-SRC_URI[md5sum] = "51da78a77681b0652d9b4ca941da0658"
-SRC_URI[sha256sum] = "f9f5c260188e9e27af9152bfc6d622cc5c0ea48d63d5fa9985abbdd69fda0e87"
-
-FILES_${PN} += "\
- ${libdir}/python*/site-packages/telepathy/*.py \
- ${libdir}/python*/site-packages/telepathy/*/*.py \
- "
diff --git a/meta/recipes-connectivity/telepathy/telepathy-python_0.15.19.bb b/meta/recipes-connectivity/telepathy/telepathy-python_0.15.19.bb
new file mode 100644
index 0000000000..aefde8c891
--- /dev/null
+++ b/meta/recipes-connectivity/telepathy/telepathy-python_0.15.19.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Telepathy framework - Python package"
+HOMEPAGE = "http://telepathy.freedesktop.org/wiki/"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+ file://src/utils.py;beginline=1;endline=17;md5=9a07d1a9791a7429a14e7b25c6c86822"
+
+RDEPENDS_${PN} += "python-dbus"
+
+SRC_URI = "http://telepathy.freedesktop.org/releases/${PN}/${P}.tar.gz "
+
+PR = "r0"
+
+inherit autotools
+
+SRC_URI[md5sum] = "f7ca25ab3c88874015b7e9728f7f3017"
+SRC_URI[sha256sum] = "244c0e1bf4bbd78ae298ea659fe10bf3a73738db550156767cc2477aedf72376"
+
+FILES_${PN} += "\
+ ${libdir}/python*/site-packages/telepathy/*.py \
+ ${libdir}/python*/site-packages/telepathy/*/*.py \
+ "
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant-0.7.inc b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant-0.7.inc
index 78ce914c31..7865b8fdc7 100644
--- a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant-0.7.inc
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant-0.7.inc
@@ -20,8 +20,9 @@ SRC_URI = "http://hostap.epitest.fi/releases/wpa_supplicant-${PV}.tar.gz \
S = "${WORKDIR}/wpa_supplicant-${PV}/wpa_supplicant"
PACKAGES_prepend = "wpa-supplicant-passphrase wpa-supplicant-cli "
-FILES_wpa-supplicant-passphrase = "/usr/sbin/wpa_passphrase"
-FILES_wpa-supplicant-cli = "/usr/sbin/wpa_cli"
+FILES_wpa-supplicant-passphrase = "${sbindir}/wpa_passphrase"
+FILES_wpa-supplicant-cli = "${sbindir}/wpa_cli"
+FILES_${PN} += " ${datadir}/dbus-1/system-services/*
do_configure () {
install -m 0755 ${WORKDIR}/defconfig-gnutls .config
@@ -29,7 +30,7 @@ do_configure () {
export EXTRA_CFLAGS = "${CFLAGS}"
do_compile () {
- unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+ unset CFLAGS CPPFLAGS CXXFLAGS
oe_runmake
}
@@ -56,6 +57,9 @@ do_install () {
install -d ${D}/${sysconfdir}/dbus-1/system.d
install -m 644 ${S}/dbus/dbus-wpa_supplicant.conf ${D}/${sysconfdir}/dbus-1/system.d
+ install -d ${D}/${datadir}/dbus-1/system-services
+ sed -i -e s:${base_sbindir}:${sbindir}:g ${S}/dbus/*.service
+ install -m 644 ${S}/dbus/*.service ${D}/${datadir}/dbus-1/system-services
install -d ${D}/etc/default/volatiles
install -m 0644 ${WORKDIR}/99_wpa_supplicant ${D}/etc/default/volatiles
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_0.7.3.bb b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_0.7.3.bb
index 2d7729c8d5..87baf336d8 100644
--- a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_0.7.3.bb
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_0.7.3.bb
@@ -1,6 +1,6 @@
require wpa-supplicant-0.7.inc
-PR = "r0"
+PR = "r3"
SRC_URI[md5sum] = "f516f191384a9a546e3f5145c08addda"
SRC_URI[sha256sum] = "d0cd50caa85346ccc376dcda5ed3c258eef19a93b3cade39d25760118ad59443"
diff --git a/meta/recipes-core/base-files/base-files/profile b/meta/recipes-core/base-files/base-files/profile
index aa1c20fdb8..e9408d17d7 100644
--- a/meta/recipes-core/base-files/base-files/profile
+++ b/meta/recipes-core/base-files/base-files/profile
@@ -12,7 +12,7 @@ if [ ! -e /etc/localtime ]; then
fi
if [ "$HOME" = "/home/root" ]; then
- PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin:
+ PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin
fi
if [ "$PS1" ]; then
# works for bash and ash (no other shells known to be in use here)
diff --git a/meta/recipes-core/base-files/base-files_3.0.14.bb b/meta/recipes-core/base-files/base-files_3.0.14.bb
index 055769695e..d2fec72913 100644
--- a/meta/recipes-core/base-files/base-files_3.0.14.bb
+++ b/meta/recipes-core/base-files/base-files_3.0.14.bb
@@ -2,7 +2,7 @@ SUMMARY = "Miscellaneous files for the base system."
DESCRIPTION = "The base-files package creates the basic system directory structure and provides a small set of key configuration files for the system."
SECTION = "base"
PRIORITY = "required"
-PR = "r65"
+PR = "r67"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://licenses/GPL-2;md5=94d55d512a9ba36caa9b7df079bae19f"
SRC_URI = "file://rotation \
@@ -48,6 +48,12 @@ dirs755 = "/bin /boot /dev ${sysconfdir} ${sysconfdir}/default \
/mnt /media /media/card /media/cf /media/net /media/ram \
/media/union /media/realroot /media/hdd \
/media/mmc1"
+dirs3755 = "/srv \
+ ${prefix}/local ${prefix}/local/bin ${prefix}/local/games \
+ ${prefix}/local/include ${prefix}/local/lib ${prefix}/local/sbin \
+ ${prefix}/local/share ${prefix}/local/src"
+dirs4775 = "/var/mail"
+
volatiles = "cache run log lock tmp"
conffiles = "${sysconfdir}/debian_version ${sysconfdir}/host.conf \
${sysconfdir}/inputrc ${sysconfdir}/issue /${sysconfdir}/issue.net \
@@ -156,6 +162,16 @@ do_install_append_netbook-pro () {
mkdir -p ${D}/initrd
}
+do_install_append_poky-lsb() {
+ for d in ${dirs3755}; do
+ install -m 0755 -d ${D}$d
+ done
+
+ for d in ${dirs4775}; do
+ install -m 2755 -d ${D}$d
+ done
+}
+
PACKAGES = "${PN}-doc ${PN} ${PN}-dev ${PN}-dbg"
FILES_${PN} = "/"
FILES_${PN}-doc = "${docdir} ${datadir}/common-licenses"
diff --git a/meta/recipes-core/busybox/busybox-1.17.3/busybox-udhcpc-no_deconfig.patch b/meta/recipes-core/busybox/busybox-1.17.3/busybox-udhcpc-no_deconfig.patch
new file mode 100644
index 0000000000..cdf56b826c
--- /dev/null
+++ b/meta/recipes-core/busybox/busybox-1.17.3/busybox-udhcpc-no_deconfig.patch
@@ -0,0 +1,110 @@
+Add a new option -D to the udhcpc client that allows for
+dhcp renewal to occur without having to down the interface
+in the process.
+
+Signed-off-by: Greg Moffatt <greg.moffatt@windriver.com>
+
+Updated to latest Busybox 1.17.3
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+diff -ur busybox-1.17.3.orig/networking/udhcp/dhcpc.c busybox-1.17.3/networking/udhcp/dhcpc.c
+--- busybox-1.17.3.orig/networking/udhcp/dhcpc.c
++++ busybox-1.17.3/networking/udhcp/dhcpc.c
+@@ -35,6 +35,9 @@
+ #endif
+ #include <linux/filter.h>
+
++/* option whether to down the interface when reconfiguring */
++static int allow_deconfig = 1;
++
+ /* struct client_config_t client_config is in bb_common_bufsiz1 */
+
+
+@@ -709,7 +712,8 @@
+ state = RENEW_REQUESTED;
+ break;
+ case RENEW_REQUESTED: /* impatient are we? fine, square 1 */
+- udhcp_run_script(NULL, "deconfig");
++ if (allow_deconfig)
++ udhcp_run_script(NULL, "deconfig");
+ case REQUESTING:
+ case RELEASED:
+ change_listen_mode(LISTEN_RAW);
+@@ -733,7 +737,8 @@
+ bb_info_msg("Unicasting a release of %s to %s",
+ inet_ntoa(temp_addr), buffer);
+ send_release(server_addr, requested_ip); /* unicast */
+- udhcp_run_script(NULL, "deconfig");
++ if (allow_deconfig)
++ udhcp_run_script(NULL, "deconfig");
+ }
+ bb_info_msg("Entering released state");
+
+@@ -836,6 +841,7 @@
+ OPT_o = 1 << 18,
+ OPT_x = 1 << 19,
+ OPT_f = 1 << 20,
++ OPT_D = 1 << 21,
+ /* The rest has variable bit positions, need to be clever */
+ OPTBIT_f = 20,
+ USE_FOR_MMU( OPTBIT_b,)
+@@ -861,7 +867,7 @@
+ #endif
+ ;
+ IF_LONG_OPTS(applet_long_options = udhcpc_longopts;)
+- opt = getopt32(argv, "c:CV:H:h:F:i:np:qRr:s:T:t:SA:O:ox:f"
++ opt = getopt32(argv, "c:CV:H:h:F:i:np:qRr:s:T:t:SA:O:ox:fD"
+ USE_FOR_MMU("b")
+ IF_FEATURE_UDHCPC_ARPING("a")
+ IF_FEATURE_UDHCP_PORT("P:")
+@@ -950,6 +956,9 @@
+ logmode |= LOGMODE_SYSLOG;
+ }
+
++ if (opt & OPT_D)
++ allow_deconfig = 0;
++
+ /* Make sure fd 0,1,2 are open */
+ bb_sanitize_stdio();
+ /* Equivalent of doing a fflush after every \n */
+@@ -964,7 +973,8 @@
+ srand(monotonic_us());
+
+ state = INIT_SELECTING;
+- udhcp_run_script(NULL, "deconfig");
++ if (allow_deconfig)
++ udhcp_run_script(NULL, "deconfig");
+ change_listen_mode(LISTEN_RAW);
+ packet_num = 0;
+ timeout = 0;
+@@ -1100,7 +1110,8 @@
+ }
+ /* Timed out, enter init state */
+ bb_info_msg("Lease lost, entering init state");
+- udhcp_run_script(NULL, "deconfig");
++ if (allow_deconfig)
++ udhcp_run_script(NULL, "deconfig");
+ state = INIT_SELECTING;
+ /*timeout = 0; - already is */
+ packet_num = 0;
+@@ -1246,7 +1257,8 @@
+ send_decline(xid, server_addr, packet.yiaddr);
+
+ if (state != REQUESTING)
+- udhcp_run_script(NULL, "deconfig");
++ if (allow_deconfig)
++ udhcp_run_script(NULL, "deconfig");
+ change_listen_mode(LISTEN_RAW);
+ state = INIT_SELECTING;
+ requested_ip = 0;
+@@ -1292,7 +1304,8 @@
+ bb_info_msg("Received DHCP NAK");
+ udhcp_run_script(&packet, "nak");
+ if (state != REQUESTING)
+- udhcp_run_script(NULL, "deconfig");
++ if (allow_deconfig)
++ udhcp_run_script(NULL, "deconfig");
+ change_listen_mode(LISTEN_RAW);
+ sleep(3); /* avoid excessive network traffic */
+ state = INIT_SELECTING;
diff --git a/meta/recipes-core/busybox/busybox.inc b/meta/recipes-core/busybox/busybox.inc
index 142c72f4e5..55f056c4c0 100644
--- a/meta/recipes-core/busybox/busybox.inc
+++ b/meta/recipes-core/busybox/busybox.inc
@@ -18,11 +18,12 @@ FILES_${PN}-httpd = "${sysconfdir}/init.d/busybox-httpd /srv/www"
FILES_${PN}-udhcpd = "${sysconfdir}/init.d/busybox-udhcpd"
FILES_${PN} += "${datadir}/udhcpc"
+FILES_${PN} += "${sysconfdir}/init.d/busybox-udhcpc"
INITSCRIPT_PACKAGES = "${PN} ${PN}-httpd ${PN}-udhcpd"
INITSCRIPT_NAME_${PN}-httpd = "busybox-httpd"
INITSCRIPT_NAME_${PN}-udhcpd = "busybox-udhcpd"
-INITSCRIPT_NAME_${PN} = "syslog"
+INITSCRIPT_NAME_${PN} = "syslog busybox-udhcpc"
CONFFILES_${PN} = "${sysconfdir}/syslog.conf.${PN}"
# This disables the syslog startup links in slugos (see slugos-init)
@@ -97,6 +98,7 @@ do_install () {
install -d ${D}${datadir}/udhcpc
install -m 0755 ${S}/examples/udhcp/simple.script ${D}${sysconfdir}/udhcpc.d/50default
install -m 0755 ${WORKDIR}/default.script ${D}${datadir}/udhcpc/default.script
+ install -m 0755 ${WORKDIR}/busybox-udhcpc ${D}${sysconfdir}/init.d/
fi
install -m 0644 ${S}/busybox.links ${D}${sysconfdir}
diff --git a/meta/recipes-core/busybox/busybox_1.17.3.bb b/meta/recipes-core/busybox/busybox_1.17.3.bb
index 9ecb36d647..c5fbe9c7b0 100644
--- a/meta/recipes-core/busybox/busybox_1.17.3.bb
+++ b/meta/recipes-core/busybox/busybox_1.17.3.bb
@@ -1,5 +1,5 @@
require busybox.inc
-PR = "r0"
+PR = "r1"
SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \
file://udhcpscript.patch \
@@ -9,10 +9,12 @@ SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \
file://busybox-appletlib-dependency.patch \
file://run-parts.in.usr-bin.patch \
file://make-382-fix.patch \
+ file://busybox-udhcpc-no_deconfig.patch \
file://find-touchscreen.sh \
file://busybox-cron \
file://busybox-httpd \
file://busybox-udhcpd \
+ file://busybox-udhcpc \
file://default.script \
file://simple.script \
file://hwclock.sh \
diff --git a/meta/recipes-core/busybox/files/busybox-udhcpc b/meta/recipes-core/busybox/files/busybox-udhcpc
new file mode 100755
index 0000000000..2c43f8da2e
--- /dev/null
+++ b/meta/recipes-core/busybox/files/busybox-udhcpc
@@ -0,0 +1,25 @@
+#!/bin/sh
+#
+# (c) 2010-2011 Wind River Systems, Inc.
+#
+# Busybox udhcpc init script
+#
+# script to start the udpchc DHCP client on boots where
+# the parameter 'ip=dhcp' was included in the kernel parameters
+
+# ensure the required binaries are present
+[ -x /sbin/udhcpc ] || exit 1
+[ -x /bin/grep ] || exit 1
+[ -x /bin/mount ] || exit 1
+
+# ensure /proc is mounted
+if ! mount | grep -q "/proc "; then
+ exit 2
+fi
+
+rc=0
+if grep -q -E "\bip=dhcp\b" /proc/cmdline; then
+ /sbin/udhcpc -D -s /usr/share/udhcpc/default.script
+ rc=$?
+fi
+exit $rc
diff --git a/meta/recipes-core/coreutils/coreutils-6.9/coreutils-6.9-cp-i-u.patch b/meta/recipes-core/coreutils/coreutils-6.9/coreutils-6.9-cp-i-u.patch
new file mode 100644
index 0000000000..6fec683bc3
--- /dev/null
+++ b/meta/recipes-core/coreutils/coreutils-6.9/coreutils-6.9-cp-i-u.patch
@@ -0,0 +1,118 @@
+This patch was imported from the Fedora Core 8 coreutils-6.9-9 package.
+
+The package is stated as being Licensed as GPLv2+.
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+----
+
+When "cp -i --update old new" would do nothing because "new" is
+newer than "old", cp would nonetheless prompt for whether it is
+ok to overwrite "new". Then, regardless of the response (because
+of the --update option), cp would do nothing.
+
+The following patch eliminates the unnecessary prompt in that case.
+
+diff --git a/src/copy.c b/src/copy.c
+index b7bf73b..0e549d2 100644
+--- a/src/copy.c
++++ b/src/copy.c
+@@ -1210,6 +1210,30 @@ copy_internal (char const *src_name, char const *dst_name,
+ return false;
+ }
+
++ if (!S_ISDIR (src_mode) && x->update)
++ {
++ /* When preserving time stamps (but not moving within a file
++ system), don't worry if the destination time stamp is
++ less than the source merely because of time stamp
++ truncation. */
++ int options = ((x->preserve_timestamps
++ && ! (x->move_mode
++ && dst_sb.st_dev == src_sb.st_dev))
++ ? UTIMECMP_TRUNCATE_SOURCE
++ : 0);
++
++ if (0 <= utimecmp (dst_name, &dst_sb, &src_sb, options))
++ {
++ /* We're using --update and the destination is not older
++ than the source, so do not copy or move. Pretend the
++ rename succeeded, so the caller (if it's mv) doesn't
++ end up removing the source file. */
++ if (rename_succeeded)
++ *rename_succeeded = true;
++ return true;
++ }
++ }
++
+ /* When there is an existing destination file, we may end up
+ returning early, and hence not copying/moving the file.
+ This may be due to an interactive `negative' reply to the
+@@ -1302,30 +1326,6 @@ copy_internal (char const *src_name, char const *dst_name,
+ return false;
+ }
+ }
+-
+- if (x->update)
+- {
+- /* When preserving time stamps (but not moving within a file
+- system), don't worry if the destination time stamp is
+- less than the source merely because of time stamp
+- truncation. */
+- int options = ((x->preserve_timestamps
+- && ! (x->move_mode
+- && dst_sb.st_dev == src_sb.st_dev))
+- ? UTIMECMP_TRUNCATE_SOURCE
+- : 0);
+-
+- if (0 <= utimecmp (dst_name, &dst_sb, &src_sb, options))
+- {
+- /* We're using --update and the destination is not older
+- than the source, so do not copy or move. Pretend the
+- rename succeeded, so the caller (if it's mv) doesn't
+- end up removing the source file. */
+- if (rename_succeeded)
+- *rename_succeeded = true;
+- return true;
+- }
+- }
+ }
+
+ if (x->move_mode)
+diff --git a/tests/mv/update b/tests/mv/update
+index 0c06024..6c3d149 100755
+--- a/tests/mv/update
++++ b/tests/mv/update
+@@ -1,7 +1,7 @@
+ #!/bin/sh
+ # make sure --update works as advertised
+
+-# Copyright (C) 2001, 2004, 2006 Free Software Foundation, Inc.
++# Copyright (C) 2001, 2004, 2006-2007 Free Software Foundation, Inc.
+
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+@@ -46,11 +46,16 @@ fi
+
+ fail=0
+
+-for cp_or_mv in cp mv; do
+- # This is a no-op.
+- $cp_or_mv --update old new || fail=1
+- case "`cat new`" in new) ;; *) fail=1 ;; esac
+- case "`cat old`" in old) ;; *) fail=1 ;; esac
++for interactive in '' -i; do
++ for cp_or_mv in cp mv; do
++ # This is a no-op, with no prompt.
++ # With coreutils-6.9 and earlier, using --update with -i would
++ # mistakenly elicit a prompt.
++ $cp_or_mv $interactive --update old new < /dev/null > out 2>&1 || fail=1
++ test -s out && fail=1
++ case "`cat new`" in new) ;; *) fail=1 ;; esac
++ case "`cat old`" in old) ;; *) fail=1 ;; esac
++ done
+ done
+
+ # This will actually perform the rename.
+--
+1.5.3.rc1.16.g9d6f
diff --git a/meta/recipes-core/coreutils/coreutils-6.9/coreutils-fix-install.patch b/meta/recipes-core/coreutils/coreutils-6.9/coreutils-fix-install.patch
new file mode 100644
index 0000000000..1b989f5311
--- /dev/null
+++ b/meta/recipes-core/coreutils/coreutils-6.9/coreutils-fix-install.patch
@@ -0,0 +1,99 @@
+The install command doesn't over write the dangling symlink, for
+example:
+
+$ install fileA /tmp/fileA
+
+If /tmp/fileA is a dangling symlink, there would be an error:
+
+install: cannot create regular file '/tmp/fileA': File exists
+
+This is because of the following code in copy.c:
+
+ if (!new_dst)
+ {
+ if (XSTAT (x, dst_name, &dst_sb) != 0)
+ {
+ if (errno != ENOENT)
+ {
+ error (0, errno, _("cannot stat %s"), quote (dst_name));
+ return false;
+ }
+ else
+ {
+ new_dst = true;
+ }
+ }
+
+XSTAT() use stat() for dst_name(the dangling symlink /tmp/fileA) when
+install.c invokes it, and stat will set errno to ENOENT, and then
+new_dst will be set to true which means that /tmp/fileA doesn't exist,
+then we will create /tmp/fileA without remove it first, so the error
+comes.
+
+This is fixed in a way which adds the member cmd_install in
+struct cp_options to make sure my change only affected to the install
+command and use lstat to fix the problem.
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+---
+ src/copy.c | 10 +++++++++-
+ src/copy.h | 3 +++
+ src/install.c | 1 +
+ 3 files changed, 13 insertions(+), 1 deletions(-)
+
+diff --git a/src/copy.c b/src/copy.c
+--- a/src/copy.c
++++ b/src/copy.c
+@@ -1029,6 +1029,7 @@ copy_internal (char const *src_name, char const *dst_name,
+ bool delayed_ok;
+ bool copied_as_regular = false;
+ bool preserve_metadata;
++ int dst_stat_result;
+
+ if (x->move_mode && rename_succeeded)
+ *rename_succeeded = false;
+@@ -1069,7 +1070,14 @@ copy_internal (char const *src_name, char const *dst_name,
+
+ if (!new_dst)
+ {
+- if (XSTAT (x, dst_name, &dst_sb) != 0)
++ if ( x->cmd_install && ( x->backup_type == no_backups))
++ dst_stat_result = lstat (dst_name, &dst_sb);
++ else
++ {
++ dst_stat_result = XSTAT (x, dst_name, &dst_sb);
++ }
++
++ if (dst_stat_result != 0)
+ {
+ if (errno != ENOENT)
+ {
+diff --git a/src/copy.h b/src/copy.h
+--- a/src/copy.h
++++ b/src/copy.h
+@@ -114,6 +114,9 @@ struct cp_options
+ If that fails, then resort to copying. */
+ bool move_mode;
+
++ /* For the install command */
++ bool cmd_install;
++
+ /* Whether this process has appropriate privileges to chown a file
+ whose owner is not the effective user ID. */
+ bool chown_privileges;
+diff --git a/src/install.c b/src/install.c
+--- a/src/install.c
++++ b/src/install.c
+@@ -149,6 +149,7 @@ cp_option_init (struct cp_options *x)
+ x->hard_link = false;
+ x->interactive = I_UNSPECIFIED;
+ x->move_mode = false;
++ x->cmd_install = true;
+ x->chown_privileges = chown_privileges ();
+ x->one_file_system = false;
+ x->preserve_ownership = false;
+--
+1.7.0.1
+
diff --git a/meta/recipes-core/coreutils/coreutils-6.9/coreutils-i18n.patch b/meta/recipes-core/coreutils/coreutils-6.9/coreutils-i18n.patch
new file mode 100644
index 0000000000..3587186af1
--- /dev/null
+++ b/meta/recipes-core/coreutils/coreutils-6.9/coreutils-i18n.patch
@@ -0,0 +1,4049 @@
+This patch was imported from the Fedora Core 8 coreutils-6.9-9 package.
+
+The package is stated as being Licensed as GPLv2+.
+
+The comment indicates that the purpose is lin18nux/lsb compliance.
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+--- /dev/null 2007-03-01 09:16:39.219409909 +0000
++++ coreutils-6.8+/tests/sort/sort-mb-tests 2007-03-01 15:08:24.000000000 +0000
+@@ -0,0 +1,58 @@
++#! /bin/sh
++case $# in
++ 0) xx='../../src/sort';;
++ *) xx="$1";;
++esac
++test "$VERBOSE" && echo=echo || echo=:
++$echo testing program: $xx
++errors=0
++test "$srcdir" || srcdir=.
++test "$VERBOSE" && $xx --version 2> /dev/null
++
++export LC_ALL=en_US.UTF-8
++locale -k LC_CTYPE 2>&1 | grep -q charmap.*UTF-8 || exit 77
++errors=0
++
++$xx -t ï¼  -k2 -n mb1.I > mb1.O
++code=$?
++if test $code != 0; then
++ $echo "Test mb1 failed: $xx return code $code differs from expected value 0" 1>&2
++ errors=`expr $errors + 1`
++else
++ cmp mb1.O $srcdir/mb1.X > /dev/null 2>&1
++ case $? in
++ 0) if test "$VERBOSE"; then $echo "passed mb1"; fi;;
++ 1) $echo "Test mb1 failed: files mb1.O and $srcdir/mb1.X differ" 1>&2
++ (diff -c mb1.O $srcdir/mb1.X) 2> /dev/null
++ errors=`expr $errors + 1`;;
++ 2) $echo "Test mb1 may have failed." 1>&2
++ $echo The command "cmp mb1.O $srcdir/mb1.X" failed. 1>&2
++ errors=`expr $errors + 1`;;
++ esac
++fi
++
++$xx -t ï¼  -k4 -n mb2.I > mb2.O
++code=$?
++if test $code != 0; then
++ $echo "Test mb2 failed: $xx return code $code differs from expected value 0" 1>&2
++ errors=`expr $errors + 1`
++else
++ cmp mb2.O $srcdir/mb2.X > /dev/null 2>&1
++ case $? in
++ 0) if test "$VERBOSE"; then $echo "passed mb2"; fi;;
++ 1) $echo "Test mb2 failed: files mb2.O and $srcdir/mb2.X differ" 1>&2
++ (diff -c mb2.O $srcdir/mb2.X) 2> /dev/null
++ errors=`expr $errors + 1`;;
++ 2) $echo "Test mb2 may have failed." 1>&2
++ $echo The command "cmp mb2.O $srcdir/mb2.X" failed. 1>&2
++ errors=`expr $errors + 1`;;
++ esac
++fi
++
++if test $errors = 0; then
++ $echo Passed all 113 tests. 1>&2
++else
++ $echo Failed $errors tests. 1>&2
++fi
++test $errors = 0 || errors=1
++exit $errors
+--- /dev/null 2007-03-01 09:16:39.219409909 +0000
++++ coreutils-6.8+/tests/sort/mb2.I 2007-03-01 15:08:24.000000000 +0000
+@@ -0,0 +1,4 @@
++Apple@AA10@@20
++Banana@AA5@@30
++Citrus@AA20@@5
++Cherry@AA30@@10
+--- /dev/null 2007-03-01 09:16:39.219409909 +0000
++++ coreutils-6.8+/tests/sort/mb2.X 2007-03-01 15:08:24.000000000 +0000
+@@ -0,0 +1,4 @@
++Citrus@AA20@@5
++Cherry@AA30@@10
++Apple@AA10@@20
++Banana@AA5@@30
+--- /dev/null 2007-03-01 09:16:39.219409909 +0000
++++ coreutils-6.8+/tests/sort/mb1.I 2007-03-01 15:08:24.000000000 +0000
+@@ -0,0 +1,4 @@
++Appleï¼ 10
++Bananaï¼ 5
++Citrusï¼ 20
++Cherryï¼ 30
+--- /dev/null 2007-03-01 09:16:39.219409909 +0000
++++ coreutils-6.8+/tests/sort/mb1.X 2007-03-01 15:08:24.000000000 +0000
+@@ -0,0 +1,4 @@
++Bananaï¼ 5
++Appleï¼ 10
++Citrusï¼ 20
++Cherryï¼ 30
+--- coreutils-6.8+/tests/sort/Makefile.am.i18n 2007-01-24 07:47:37.000000000 +0000
++++ coreutils-6.8+/tests/sort/Makefile.am 2007-03-01 15:09:59.000000000 +0000
+@@ -66,15 +66,17 @@
+ bigfield.O bigfield.E
+ ##test-files-end
+
+-EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+-noinst_SCRIPTS = $x-tests
++run_gen += mb1.0 mb2.0
++
++EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen) mb1.I mb1.X mb2.I mb2.X
++noinst_SCRIPTS = $x-tests # $x-mb-tests
+ TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+ editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+
+-TESTS = $x-tests
++TESTS = $x-tests $x-mb-tests
+
+ mk_script = $(srcdir)/../mk-script
+ $(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+--- coreutils-6.8+/lib/linebuffer.h.i18n 2005-05-14 07:44:24.000000000 +0100
++++ coreutils-6.8+/lib/linebuffer.h 2007-03-01 15:08:24.000000000 +0000
+@@ -22,6 +22,11 @@
+
+ # include <stdio.h>
+
++/* Get mbstate_t. */
++# if HAVE_WCHAR_H
++# include <wchar.h>
++# endif
++
+ /* A `struct linebuffer' holds a line of text. */
+
+ struct linebuffer
+@@ -29,6 +34,9 @@
+ size_t size; /* Allocated. */
+ size_t length; /* Used. */
+ char *buffer;
++# if HAVE_WCHAR_H
++ mbstate_t state;
++# endif
+ };
+
+ /* Initialize linebuffer LINEBUFFER for use. */
+--- coreutils-6.8+/src/expand.c.i18n 2007-01-14 15:41:28.000000000 +0000
++++ coreutils-6.8+/src/expand.c 2007-03-01 15:08:24.000000000 +0000
+@@ -38,11 +38,28 @@
+ #include <stdio.h>
+ #include <getopt.h>
+ #include <sys/types.h>
++
++/* Get mbstate_t, mbrtowc(), wcwidth(). */
++#if HAVE_WCHAR_H
++# include <wchar.h>
++#endif
++
+ #include "system.h"
+ #include "error.h"
+ #include "quote.h"
+ #include "xstrndup.h"
+
++/* MB_LEN_MAX is incorrectly defined to be 1 in at least one GCC
++ installation; work around this configuration error. */
++#if !defined MB_LEN_MAX || MB_LEN_MAX < 2
++# define MB_LEN_MAX 16
++#endif
++
++/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */
++#if HAVE_MBRTOWC && defined mbstate_t
++# define mbrtowc(pwc, s, n, ps) (mbrtowc) (pwc, s, n, 0)
++#endif
++
+ /* The official name of this program (e.g., no `g' prefix). */
+ #define PROGRAM_NAME "expand"
+
+@@ -183,6 +200,7 @@
+ stops = num_start + len - 1;
+ }
+ }
++
+ else
+ {
+ error (0, 0, _("tab size contains invalid character(s): %s"),
+@@ -365,6 +383,142 @@
+ }
+ }
+
++#if HAVE_MBRTOWC
++static void
++expand_multibyte (void)
++{
++ FILE *fp; /* Input strem. */
++ mbstate_t i_state; /* Current shift state of the input stream. */
++ mbstate_t i_state_bak; /* Back up the I_STATE. */
++ mbstate_t o_state; /* Current shift state of the output stream. */
++ char buf[MB_LEN_MAX + BUFSIZ]; /* For spooling a read byte sequence. */
++ char *bufpos; /* Next read position of BUF. */
++ size_t buflen = 0; /* The length of the byte sequence in buf. */
++ wchar_t wc; /* A gotten wide character. */
++ size_t mblength; /* The byte size of a multibyte character
++ which shows as same character as WC. */
++ int tab_index = 0; /* Index in `tab_list' of next tabstop. */
++ int column = 0; /* Column on screen of the next char. */
++ int next_tab_column; /* Column the next tab stop is on. */
++ int convert = 1; /* If nonzero, perform translations. */
++
++ fp = next_file ((FILE *) NULL);
++ if (fp == NULL)
++ return;
++
++ memset (&o_state, '\0', sizeof(mbstate_t));
++ memset (&i_state, '\0', sizeof(mbstate_t));
++
++ for (;;)
++ {
++ /* Refill the buffer BUF. */
++ if (buflen < MB_LEN_MAX && !feof(fp) && !ferror(fp))
++ {
++ memmove (buf, bufpos, buflen);
++ buflen += fread (buf + buflen, sizeof(char), BUFSIZ, fp);
++ bufpos = buf;
++ }
++
++ /* No character is left in BUF. */
++ if (buflen < 1)
++ {
++ fp = next_file (fp);
++
++ if (fp == NULL)
++ break; /* No more files. */
++ else
++ {
++ memset (&i_state, '\0', sizeof(mbstate_t));
++ continue;
++ }
++ }
++
++ /* Get a wide character. */
++ i_state_bak = i_state;
++ mblength = mbrtowc (&wc, bufpos, buflen, &i_state);
++
++ switch (mblength)
++ {
++ case (size_t)-1: /* illegal byte sequence. */
++ case (size_t)-2:
++ mblength = 1;
++ i_state = i_state_bak;
++ if (convert)
++ {
++ ++column;
++ if (convert_entire_line == 0)
++ convert = 0;
++ }
++ putchar (*bufpos);
++ break;
++
++ case 0: /* null. */
++ mblength = 1;
++ if (convert && convert_entire_line == 0)
++ convert = 0;
++ putchar ('\0');
++ break;
++
++ default:
++ if (wc == L'\n') /* LF. */
++ {
++ tab_index = 0;
++ column = 0;
++ convert = 1;
++ putchar ('\n');
++ }
++ else if (wc == L'\t' && convert) /* Tab. */
++ {
++ if (tab_size == 0)
++ {
++ /* Do not let tab_index == first_free_tab;
++ stop when it is 1 less. */
++ while (tab_index < first_free_tab - 1
++ && column >= tab_list[tab_index])
++ tab_index++;
++ next_tab_column = tab_list[tab_index];
++ if (tab_index < first_free_tab - 1)
++ tab_index++;
++ if (column >= next_tab_column)
++ next_tab_column = column + 1;
++ }
++ else
++ next_tab_column = column + tab_size - column % tab_size;
++
++ while (column < next_tab_column)
++ {
++ putchar (' ');
++ ++column;
++ }
++ }
++ else /* Others. */
++ {
++ if (convert)
++ {
++ if (wc == L'\b')
++ {
++ if (column > 0)
++ --column;
++ }
++ else
++ {
++ int width; /* The width of WC. */
++
++ width = wcwidth (wc);
++ column += (width > 0) ? width : 0;
++ if (convert_entire_line == 0)
++ convert = 0;
++ }
++ }
++ fwrite (bufpos, sizeof(char), mblength, stdout);
++ }
++ }
++ buflen -= mblength;
++ bufpos += mblength;
++ }
++}
++#endif
++
+ int
+ main (int argc, char **argv)
+ {
+@@ -429,7 +583,12 @@
+
+ file_list = (optind < argc ? &argv[optind] : stdin_argv);
+
+- expand ();
++#if HAVE_MBRTOWC
++ if (MB_CUR_MAX > 1)
++ expand_multibyte ();
++ else
++#endif
++ expand ();
+
+ if (have_read_stdin && fclose (stdin) != 0)
+ error (EXIT_FAILURE, errno, "-");
+--- coreutils-6.8+/src/join.c.i18n 2007-01-14 15:41:28.000000000 +0000
++++ coreutils-6.8+/src/join.c 2007-03-01 15:08:24.000000000 +0000
+@@ -23,16 +23,30 @@
+ #include <sys/types.h>
+ #include <getopt.h>
+
++/* Get mbstate_t, mbrtowc(), mbrtowc(), wcwidth(). */
++#if HAVE_WCHAR_H
++# include <wchar.h>
++#endif
++
++/* Get iswblank(), towupper. */
++#if HAVE_WCTYPE_H
++# include <wctype.h>
++#endif
++
+ #include "system.h"
+ #include "error.h"
+ #include "hard-locale.h"
+ #include "linebuffer.h"
+-#include "memcasecmp.h"
+ #include "quote.h"
+ #include "stdio--.h"
+ #include "xmemcoll.h"
+ #include "xstrtol.h"
+
++/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */
++#if HAVE_MBRTOWC && defined mbstate_t
++# define mbrtowc(pwc, s, n, ps) (mbrtowc) (pwc, s, n, 0)
++#endif
++
+ /* The official name of this program (e.g., no `g' prefix). */
+ #define PROGRAM_NAME "join"
+
+@@ -104,10 +118,12 @@
+ /* Last element in `outlist', where a new element can be added. */
+ static struct outlist *outlist_end = &outlist_head;
+
+-/* Tab character separating fields. If negative, fields are separated
+- by any nonempty string of blanks, otherwise by exactly one
+- tab character whose value (when cast to unsigned char) equals TAB. */
+-static int tab = -1;
++/* Tab character separating fields. If NULL, fields are separated
++ by any nonempty string of blanks. */
++static char *tab = NULL;
++
++/* The number of bytes used for tab. */
++static size_t tablen = 0;
+
+ static struct option const longopts[] =
+ {
+@@ -190,6 +206,8 @@
+
+ /* Fill in the `fields' structure in LINE. */
+
++/* Fill in the `fields' structure in LINE. */
++
+ static void
+ xfields (struct line *line)
+ {
+@@ -199,10 +217,11 @@
+ if (ptr == lim)
+ return;
+
+- if (0 <= tab)
++ if (tab != NULL)
+ {
++ unsigned char t = tab[0];
+ char *sep;
+- for (; (sep = memchr (ptr, tab, lim - ptr)) != NULL; ptr = sep + 1)
++ for (; (sep = memchr (ptr, t, lim - ptr)) != NULL; ptr = sep + 1)
+ extract_field (line, ptr, sep - ptr);
+ }
+ else
+@@ -229,6 +248,148 @@
+ extract_field (line, ptr, lim - ptr);
+ }
+
++#if HAVE_MBRTOWC
++static void
++xfields_multibyte (struct line *line)
++{
++ char *ptr = line->buf.buffer;
++ char const *lim = ptr + line->buf.length - 1;
++ wchar_t wc = 0;
++ size_t mblength = 1;
++ mbstate_t state, state_bak;
++
++ memset (&state, 0, sizeof (mbstate_t));
++
++ if (ptr == lim)
++ return;
++
++ if (tab != NULL)
++ {
++ unsigned char t = tab[0];
++ char *sep = ptr;
++ for (; ptr < lim; ptr = sep + mblength)
++ {
++ sep = ptr;
++ while (sep < lim)
++ {
++ state_bak = state;
++ mblength = mbrtowc (&wc, sep, lim - sep + 1, &state);
++
++ if (mblength == (size_t)-1 || mblength == (size_t)-2)
++ {
++ mblength = 1;
++ state = state_bak;
++ }
++ mblength = (mblength < 1) ? 1 : mblength;
++
++ if (mblength == tablen && !memcmp (sep, tab, mblength))
++ break;
++ else
++ {
++ sep += mblength;
++ continue;
++ }
++ }
++
++ if (sep == lim)
++ break;
++
++ extract_field (line, ptr, sep - ptr);
++ }
++ }
++ else
++ {
++ /* Skip leading blanks before the first field. */
++ while(ptr < lim)
++ {
++ state_bak = state;
++ mblength = mbrtowc (&wc, ptr, lim - ptr + 1, &state);
++
++ if (mblength == (size_t)-1 || mblength == (size_t)-2)
++ {
++ mblength = 1;
++ state = state_bak;
++ break;
++ }
++ mblength = (mblength < 1) ? 1 : mblength;
++
++ if (!iswblank(wc))
++ break;
++ ptr += mblength;
++ }
++
++ do
++ {
++ char *sep;
++ state_bak = state;
++ mblength = mbrtowc (&wc, ptr, lim - ptr + 1, &state);
++ if (mblength == (size_t)-1 || mblength == (size_t)-2)
++ {
++ mblength = 1;
++ state = state_bak;
++ break;
++ }
++ mblength = (mblength < 1) ? 1 : mblength;
++
++ sep = ptr + mblength;
++ while (sep != lim)
++ {
++ state_bak = state;
++ mblength = mbrtowc (&wc, sep, lim - sep + 1, &state);
++ if (mblength == (size_t)-1 || mblength == (size_t)-2)
++ {
++ mblength = 1;
++ state = state_bak;
++ break;
++ }
++ mblength = (mblength < 1) ? 1 : mblength;
++
++ if (iswblank (wc))
++ break;
++
++ sep += mblength;
++ }
++
++ extract_field (line, ptr, sep - ptr);
++ if (sep == lim)
++ return;
++
++ state_bak = state;
++ mblength = mbrtowc (&wc, sep, lim - sep + 1, &state);
++ if (mblength == (size_t)-1 || mblength == (size_t)-2)
++ {
++ mblength = 1;
++ state = state_bak;
++ break;
++ }
++ mblength = (mblength < 1) ? 1 : mblength;
++
++ ptr = sep + mblength;
++ while (ptr != lim)
++ {
++ state_bak = state;
++ mblength = mbrtowc (&wc, ptr, lim - ptr + 1, &state);
++ if (mblength == (size_t)-1 || mblength == (size_t)-2)
++ {
++ mblength = 1;
++ state = state_bak;
++ break;
++ }
++ mblength = (mblength < 1) ? 1 : mblength;
++
++ if (!iswblank (wc))
++ break;
++
++ ptr += mblength;
++ }
++ }
++ while (ptr != lim);
++ }
++
++ extract_field (line, ptr, lim - ptr);
++}
++#endif
++
+ /* Read a line from FP into LINE and split it into fields.
+ Return true if successful. */
+
+@@ -249,6 +410,11 @@
+ line->nfields_allocated = 0;
+ line->nfields = 0;
+ line->fields = NULL;
++#if HAVE_MBRTOWC
++ if (MB_CUR_MAX > 1)
++ xfields_multibyte (line);
++ else
++#endif
+ xfields (line);
+ return true;
+ }
+@@ -303,56 +469,114 @@
+ keycmp (struct line const *line1, struct line const *line2)
+ {
+ /* Start of field to compare in each file. */
+- char *beg1;
+- char *beg2;
+-
+- size_t len1;
+- size_t len2; /* Length of fields to compare. */
++ char *beg[2];
++ char *copy[2];
++ size_t len[2]; /* Length of fields to compare. */
+ int diff;
++ int i, j;
+
+ if (join_field_1 < line1->nfields)
+ {
+- beg1 = line1->fields[join_field_1].beg;
+- len1 = line1->fields[join_field_1].len;
++ beg[0] = line1->fields[join_field_1].beg;
++ len[0] = line1->fields[join_field_1].len;
+ }
+ else
+ {
+- beg1 = NULL;
+- len1 = 0;
++ beg[0] = NULL;
++ len[0] = 0;
+ }
+
+ if (join_field_2 < line2->nfields)
+ {
+- beg2 = line2->fields[join_field_2].beg;
+- len2 = line2->fields[join_field_2].len;
++ beg[1] = line2->fields[join_field_2].beg;
++ len[1] = line2->fields[join_field_2].len;
+ }
+ else
+ {
+- beg2 = NULL;
+- len2 = 0;
++ beg[1] = NULL;
++ len[1] = 0;
+ }
+
+- if (len1 == 0)
+- return len2 == 0 ? 0 : -1;
+- if (len2 == 0)
++ if (len[0] == 0)
++ return len[1] == 0 ? 0 : -1;
++ if (len[1] == 0)
+ return 1;
+
+ if (ignore_case)
+ {
+- /* FIXME: ignore_case does not work with NLS (in particular,
+- with multibyte chars). */
+- diff = memcasecmp (beg1, beg2, MIN (len1, len2));
++#ifdef HAVE_MBRTOWC
++ if (MB_CUR_MAX > 1)
++ {
++ size_t mblength;
++ wchar_t wc, uwc;
++ mbstate_t state, state_bak;
++
++ memset (&state, '\0', sizeof (mbstate_t));
++
++ for (i = 0; i < 2; i++)
++ {
++ copy[i] = alloca (len[i] + 1);
++
++ for (j = 0; j < MIN (len[0], len[1]);)
++ {
++ state_bak = state;
++ mblength = mbrtowc (&wc, beg[i] + j, len[i] - j, &state);
++
++ switch (mblength)
++ {
++ case (size_t) -1:
++ case (size_t) -2:
++ state = state_bak;
++ /* Fall through */
++ case 0:
++ mblength = 1;
++ break;
++
++ default:
++ uwc = towupper (wc);
++
++ if (uwc != wc)
++ {
++ mbstate_t state_wc;
++
++ memset (&state_wc, '\0', sizeof (mbstate_t));
++ wcrtomb (copy[i] + j, uwc, &state_wc);
++ }
++ else
++ memcpy (copy[i] + j, beg[i] + j, mblength);
++ }
++ j += mblength;
++ }
++ copy[i][j] = '\0';
++ }
++ }
++ else
++#endif
++ {
++ for (i = 0; i < 2; i++)
++ {
++ copy[i] = alloca (len[i] + 1);
++
++ for (j = 0; j < MIN (len[0], len[1]); j++)
++ copy[i][j] = toupper (beg[i][j]);
++
++ copy[i][j] = '\0';
++ }
++ }
+ }
+ else
+ {
+- if (hard_LC_COLLATE)
+- return xmemcoll (beg1, len1, beg2, len2);
+- diff = memcmp (beg1, beg2, MIN (len1, len2));
++ copy[0] = (unsigned char *) beg[0];
++ copy[1] = (unsigned char *) beg[1];
+ }
+
++ if (hard_LC_COLLATE)
++ return xmemcoll ((char *) copy[0], len[0], (char *) copy[1], len[1]);
++ diff = memcmp (copy[0], copy[1], MIN (len[0], len[1]));
++
+ if (diff)
+ return diff;
+- return len1 < len2 ? -1 : len1 != len2;
++ return len[0] - len[1];
+ }
+
+ /* Print field N of LINE if it exists and is nonempty, otherwise
+@@ -377,11 +601,18 @@
+
+ /* Print the join of LINE1 and LINE2. */
+
++#define PUT_TAB_CHAR \
++ do \
++ { \
++ (tab != NULL) ? \
++ fwrite(tab, sizeof(char), tablen, stdout) : putchar (' '); \
++ } \
++ while (0)
++
+ static void
+ prjoin (struct line const *line1, struct line const *line2)
+ {
+ const struct outlist *outlist;
+- char output_separator = tab < 0 ? ' ' : tab;
+
+ outlist = outlist_head.next;
+ if (outlist)
+@@ -397,12 +628,12 @@
+ if (o->file == 0)
+ {
+ if (line1 == &uni_blank)
+- {
++ {
+ line = line2;
+ field = join_field_2;
+ }
+ else
+- {
++ {
+ line = line1;
+ field = join_field_1;
+ }
+@@ -416,7 +647,7 @@
+ o = o->next;
+ if (o == NULL)
+ break;
+- putchar (output_separator);
++ PUT_TAB_CHAR;
+ }
+ putchar ('\n');
+ }
+@@ -434,23 +665,23 @@
+ prfield (join_field_1, line1);
+ for (i = 0; i < join_field_1 && i < line1->nfields; ++i)
+ {
+- putchar (output_separator);
++ PUT_TAB_CHAR;
+ prfield (i, line1);
+ }
+ for (i = join_field_1 + 1; i < line1->nfields; ++i)
+ {
+- putchar (output_separator);
++ PUT_TAB_CHAR;
+ prfield (i, line1);
+ }
+
+ for (i = 0; i < join_field_2 && i < line2->nfields; ++i)
+ {
+- putchar (output_separator);
++ PUT_TAB_CHAR;
+ prfield (i, line2);
+ }
+ for (i = join_field_2 + 1; i < line2->nfields; ++i)
+ {
+- putchar (output_separator);
++ PUT_TAB_CHAR;
+ prfield (i, line2);
+ }
+ putchar ('\n');
+@@ -859,20 +1090,41 @@
+
+ case 't':
+ {
+- unsigned char newtab = optarg[0];
+- if (! newtab)
++ char *newtab;
++ size_t newtablen;
++ if (! optarg[0])
+ error (EXIT_FAILURE, 0, _("empty tab"));
+- if (optarg[1])
++ newtab = xstrdup (optarg);
++#if HAVE_MBRTOWC
++ if (MB_CUR_MAX > 1)
++ {
++ mbstate_t state;
++
++ memset (&state, 0, sizeof (mbstate_t));
++ newtablen = mbrtowc (NULL, newtab,
++ strnlen (newtab, MB_LEN_MAX),
++ &state);
++ if (newtablen == (size_t) 0
++ || newtablen == (size_t) -1
++ || newtablen == (size_t) -2)
++ newtablen = 1;
++ }
++ else
++#endif
++ newtablen = 1;
++
++ if (newtablen == 1 && newtab[1])
++ {
++ if (STREQ (newtab, "\\0"))
++ newtab[0] = '\0';
++ }
++ if (tab != NULL && strcmp (tab, newtab))
+ {
+- if (STREQ (optarg, "\\0"))
+- newtab = '\0';
+- else
+- error (EXIT_FAILURE, 0, _("multi-character tab %s"),
+- quote (optarg));
++ free (newtab);
++ error (EXIT_FAILURE, 0, _("incompatible tabs"));
+ }
+- if (0 <= tab && tab != newtab)
+- error (EXIT_FAILURE, 0, _("incompatible tabs"));
+ tab = newtab;
++ tablen = newtablen;
+ }
+ break;
+
+--- coreutils-6.8+/src/uniq.c.i18n 2007-01-14 15:41:28.000000000 +0000
++++ coreutils-6.8+/src/uniq.c 2007-03-01 15:08:24.000000000 +0000
+@@ -23,6 +23,16 @@
+ #include <getopt.h>
+ #include <sys/types.h>
+
++/* Get mbstate_t, mbrtowc(). */
++#if HAVE_WCHAR_H
++# include <wchar.h>
++#endif
++
++/* Get isw* functions. */
++#if HAVE_WCTYPE_H
++# include <wctype.h>
++#endif
++
+ #include "system.h"
+ #include "argmatch.h"
+ #include "linebuffer.h"
+@@ -32,7 +42,19 @@
+ #include "quote.h"
+ #include "xmemcoll.h"
+ #include "xstrtol.h"
+-#include "memcasecmp.h"
++#include "xmemcoll.h"
++
++/* MB_LEN_MAX is incorrectly defined to be 1 in at least one GCC
++ installation; work around this configuration error. */
++#if !defined MB_LEN_MAX || MB_LEN_MAX < 2
++# define MB_LEN_MAX 16
++#endif
++
++/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */
++#if HAVE_MBRTOWC && defined mbstate_t
++# define mbrtowc(pwc, s, n, ps) (mbrtowc) (pwc, s, n, 0)
++#endif
++
+
+ /* The official name of this program (e.g., no `g' prefix). */
+ #define PROGRAM_NAME "uniq"
+@@ -109,6 +131,10 @@
+ /* Select whether/how to delimit groups of duplicate lines. */
+ static enum delimit_method delimit_groups;
+
++/* Function pointers. */
++static char *
++(*find_field) (struct linebuffer *line);
++
+ static struct option const longopts[] =
+ {
+ {"count", no_argument, NULL, 'c'},
+@@ -198,7 +224,7 @@
+ return a pointer to the beginning of the line's field to be compared. */
+
+ static char *
+-find_field (const struct linebuffer *line)
++find_field_uni (struct linebuffer *line)
+ {
+ size_t count;
+ char *lp = line->buffer;
+@@ -219,6 +245,83 @@
+ return lp + i;
+ }
+
++#if HAVE_MBRTOWC
++
++# define MBCHAR_TO_WCHAR(WC, MBLENGTH, LP, POS, SIZE, STATEP, CONVFAIL) \
++ do \
++ { \
++ mbstate_t state_bak; \
++ \
++ CONVFAIL = 0; \
++ state_bak = *STATEP; \
++ \
++ MBLENGTH = mbrtowc (&WC, LP + POS, SIZE - POS, STATEP); \
++ \
++ switch (MBLENGTH) \
++ { \
++ case (size_t)-2: \
++ case (size_t)-1: \
++ *STATEP = state_bak; \
++ CONVFAIL++; \
++ /* Fall through */ \
++ case 0: \
++ MBLENGTH = 1; \
++ } \
++ } \
++ while (0)
++
++static char *
++find_field_multi (struct linebuffer *line)
++{
++ size_t count;
++ char *lp = line->buffer;
++ size_t size = line->length - 1;
++ size_t pos;
++ size_t mblength;
++ wchar_t wc;
++ mbstate_t *statep;
++ int convfail;
++
++ pos = 0;
++ statep = &(line->state);
++
++ /* skip fields. */
++ for (count = 0; count < skip_fields && pos < size; count++)
++ {
++ while (pos < size)
++ {
++ MBCHAR_TO_WCHAR (wc, mblength, lp, pos, size, statep, convfail);
++
++ if (convfail || !iswblank (wc))
++ {
++ pos += mblength;
++ break;
++ }
++ pos += mblength;
++ }
++
++ while (pos < size)
++ {
++ MBCHAR_TO_WCHAR (wc, mblength, lp, pos, size, statep, convfail);
++
++ if (!convfail && iswblank (wc))
++ break;
++
++ pos += mblength;
++ }
++ }
++
++ /* skip fields. */
++ for (count = 0; count < skip_chars && pos < size; count++)
++ {
++ MBCHAR_TO_WCHAR (wc, mblength, lp, pos, size, statep, convfail);
++ pos += mblength;
++ }
++
++ return lp + pos;
++}
++#endif
++
+ /* Return false if two strings OLD and NEW match, true if not.
+ OLD and NEW point not to the beginnings of the lines
+ but rather to the beginnings of the fields to compare.
+@@ -227,6 +330,8 @@
+ static bool
+ different (char *old, char *new, size_t oldlen, size_t newlen)
+ {
++ char *copy_old, *copy_new;
++
+ if (check_chars < oldlen)
+ oldlen = check_chars;
+ if (check_chars < newlen)
+@@ -234,14 +339,92 @@
+
+ if (ignore_case)
+ {
+- /* FIXME: This should invoke strcoll somehow. */
+- return oldlen != newlen || memcasecmp (old, new, oldlen);
++ size_t i;
++
++ copy_old = alloca (oldlen + 1);
++ copy_new = alloca (oldlen + 1);
++
++ for (i = 0; i < oldlen; i++)
++ {
++ copy_old[i] = toupper (old[i]);
++ copy_new[i] = toupper (new[i]);
++ }
+ }
+- else if (hard_LC_COLLATE)
+- return xmemcoll (old, oldlen, new, newlen) != 0;
+ else
+- return oldlen != newlen || memcmp (old, new, oldlen);
++ {
++ copy_old = (char *)old;
++ copy_new = (char *)new;
++ }
++
++ return xmemcoll (copy_old, oldlen, copy_new, newlen);
++}
++
++#if HAVE_MBRTOWC
++static int
++different_multi (const char *old, const char *new, size_t oldlen, size_t newlen, mbstate_t oldstate, mbstate_t newstate)
++{
++ size_t i, j, chars;
++ const char *str[2];
++ char *copy[2];
++ size_t len[2];
++ mbstate_t state[2];
++ size_t mblength;
++ wchar_t wc, uwc;
++ mbstate_t state_bak;
++
++ str[0] = old;
++ str[1] = new;
++ len[0] = oldlen;
++ len[1] = newlen;
++ state[0] = oldstate;
++ state[1] = newstate;
++
++ for (i = 0; i < 2; i++)
++ {
++ copy[i] = alloca (len[i] + 1);
++
++ for (j = 0, chars = 0; j < len[i] && chars < check_chars; chars++)
++ {
++ state_bak = state[i];
++ mblength = mbrtowc (&wc, str[i] + j, len[i] - j, &(state[i]));
++
++ switch (mblength)
++ {
++ case (size_t)-1:
++ case (size_t)-2:
++ state[i] = state_bak;
++ /* Fall through */
++ case 0:
++ mblength = 1;
++ break;
++
++ default:
++ if (ignore_case)
++ {
++ uwc = towupper (wc);
++
++ if (uwc != wc)
++ {
++ mbstate_t state_wc;
++
++ memset (&state_wc, '\0', sizeof(mbstate_t));
++ wcrtomb (copy[i] + j, uwc, &state_wc);
++ }
++ else
++ memcpy (copy[i] + j, str[i] + j, mblength);
++ }
++ else
++ memcpy (copy[i] + j, str[i] + j, mblength);
++ }
++ j += mblength;
++ }
++ copy[i][j] = '\0';
++ len[i] = j;
++ }
++
++ return xmemcoll (copy[0], len[0], copy[1], len[1]);
+ }
++#endif
+
+ /* Output the line in linebuffer LINE to standard output
+ provided that the switches say it should be output.
+@@ -295,15 +478,43 @@
+ {
+ char *prevfield IF_LINT (= NULL);
+ size_t prevlen IF_LINT (= 0);
++#if HAVE_MBRTOWC
++ mbstate_t prevstate;
++
++ memset (&prevstate, '\0', sizeof (mbstate_t));
++#endif
+
+ while (!feof (stdin))
+ {
+ char *thisfield;
+ size_t thislen;
++#if HAVE_MBRTOWC
++ mbstate_t thisstate;
++#endif
++
+ if (readlinebuffer (thisline, stdin) == 0)
+ break;
+ thisfield = find_field (thisline);
+ thislen = thisline->length - 1 - (thisfield - thisline->buffer);
++#if HAVE_MBRTOWC
++ if (MB_CUR_MAX > 1)
++ {
++ thisstate = thisline->state;
++
++ if (prevline->length == 0 || different_multi
++ (thisfield, prevfield, thislen, prevlen, thisstate, prevstate))
++ {
++ fwrite (thisline->buffer, sizeof (char),
++ thisline->length, stdout);
++
++ SWAP_LINES (prevline, thisline);
++ prevfield = thisfield;
++ prevlen = thislen;
++ prevstate = thisstate;
++ }
++ }
++ else
++#endif
+ if (prevline->length == 0
+ || different (thisfield, prevfield, thislen, prevlen))
+ {
+@@ -322,17 +533,26 @@
+ size_t prevlen;
+ uintmax_t match_count = 0;
+ bool first_delimiter = true;
++#if HAVE_MBRTOWC
++ mbstate_t prevstate;
++#endif
+
+ if (readlinebuffer (prevline, stdin) == 0)
+ goto closefiles;
+ prevfield = find_field (prevline);
+ prevlen = prevline->length - 1 - (prevfield - prevline->buffer);
++#if HAVE_MBRTOWC
++ prevstate = prevline->state;
++#endif
+
+ while (!feof (stdin))
+ {
+ bool match;
+ char *thisfield;
+ size_t thislen;
++#if HAVE_MBRTOWC
++ mbstate_t thisstate;
++#endif
+ if (readlinebuffer (thisline, stdin) == 0)
+ {
+ if (ferror (stdin))
+@@ -341,6 +561,15 @@
+ }
+ thisfield = find_field (thisline);
+ thislen = thisline->length - 1 - (thisfield - thisline->buffer);
++#if HAVE_MBRTOWC
++ if (MB_CUR_MAX > 1)
++ {
++ thisstate = thisline->state;
++ match = !different_multi (thisfield, prevfield,
++ thislen, prevlen, thisstate, prevstate);
++ }
++ else
++#endif
+ match = !different (thisfield, prevfield, thislen, prevlen);
+ match_count += match;
+
+@@ -373,6 +602,9 @@
+ SWAP_LINES (prevline, thisline);
+ prevfield = thisfield;
+ prevlen = thislen;
++#if HAVE_MBRTOWC
++ prevstate = thisstate;
++#endif
+ if (!match)
+ match_count = 0;
+ }
+@@ -417,6 +649,19 @@
+
+ atexit (close_stdout);
+
++#if HAVE_MBRTOWC
++ if (MB_CUR_MAX > 1)
++ {
++ find_field = find_field_multi;
++ }
++ else
++#endif
++ {
++ find_field = find_field_uni;
++ }
++
++
++
+ skip_chars = 0;
+ skip_fields = 0;
+ check_chars = SIZE_MAX;
+--- coreutils-6.8+/src/fold.c.i18n 2007-02-23 12:01:47.000000000 +0000
++++ coreutils-6.8+/src/fold.c 2007-03-01 15:08:24.000000000 +0000
+@@ -23,11 +23,33 @@
+ #include <getopt.h>
+ #include <sys/types.h>
+
++/* Get mbstate_t, mbrtowc(), wcwidth(). */
++#if HAVE_WCHAR_H
++# include <wchar.h>
++#endif
++
++/* Get iswprint(), iswblank(), wcwidth(). */
++#if HAVE_WCTYPE_H
++# include <wctype.h>
++#endif
++
+ #include "system.h"
+ #include "error.h"
+ #include "quote.h"
+ #include "xstrtol.h"
+
++/* MB_LEN_MAX is incorrectly defined to be 1 in at least one GCC
++ installation; work around this configuration error. */
++#if !defined MB_LEN_MAX || MB_LEN_MAX < 2
++# undef MB_LEN_MAX
++# define MB_LEN_MAX 16
++#endif
++
++/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */
++#if HAVE_MBRTOWC && defined mbstate_t
++# define mbrtowc(pwc, s, n, ps) (mbrtowc) (pwc, s, n, 0)
++#endif
++
+ #define TAB_WIDTH 8
+
+ /* The official name of this program (e.g., no `g' prefix). */
+@@ -35,23 +57,44 @@
+
+ #define AUTHORS "David MacKenzie"
+
++#define FATAL_ERROR(Message) \
++ do \
++ { \
++ error (0, 0, (Message)); \
++ usage (2); \
++ } \
++ while (0)
++
++enum operating_mode
++{
++ /* Fold texts by columns that are at the given positions. */
++ column_mode,
++
++ /* Fold texts by bytes that are at the given positions. */
++ byte_mode,
++
++ /* Fold texts by characters that are at the given positions. */
++ character_mode,
++};
++
+ /* The name this program was run with. */
+ char *program_name;
+
++/* The argument shows current mode. (Default: column_mode) */
++static enum operating_mode operating_mode;
++
+ /* If nonzero, try to break on whitespace. */
+ static bool break_spaces;
+
+-/* If nonzero, count bytes, not column positions. */
+-static bool count_bytes;
+-
+ /* If nonzero, at least one of the files we read was standard input. */
+ static bool have_read_stdin;
+
+-static char const shortopts[] = "bsw:0::1::2::3::4::5::6::7::8::9::";
++static char const shortopts[] = "bcsw:0::1::2::3::4::5::6::7::8::9::";
+
+ static struct option const longopts[] =
+ {
+ {"bytes", no_argument, NULL, 'b'},
++ {"characters", no_argument, NULL, 'c'},
+ {"spaces", no_argument, NULL, 's'},
+ {"width", required_argument, NULL, 'w'},
+ {GETOPT_HELP_OPTION_DECL},
+@@ -81,6 +124,7 @@
+ "), stdout);
+ fputs (_("\
+ -b, --bytes count bytes rather than columns\n\
++ -c, --characters count characters rather than columns\n\
+ -s, --spaces break at spaces\n\
+ -w, --width=WIDTH use WIDTH columns instead of 80\n\
+ "), stdout);
+@@ -98,7 +142,7 @@
+ static size_t
+ adjust_column (size_t column, char c)
+ {
+- if (!count_bytes)
++ if (operating_mode != byte_mode)
+ {
+ if (c == '\b')
+ {
+@@ -121,30 +165,14 @@
+ to stdout, with maximum line length WIDTH.
+ Return true if successful. */
+
+-static bool
+-fold_file (char const *filename, size_t width)
++static void
++fold_text (FILE *istream, size_t width, int *saved_errno)
+ {
+- FILE *istream;
+ int c;
+ size_t column = 0; /* Screen column where next char will go. */
+ size_t offset_out = 0; /* Index in `line_out' for next char. */
+ static char *line_out = NULL;
+ static size_t allocated_out = 0;
+- int saved_errno;
+-
+- if (STREQ (filename, "-"))
+- {
+- istream = stdin;
+- have_read_stdin = true;
+- }
+- else
+- istream = fopen (filename, "r");
+-
+- if (istream == NULL)
+- {
+- error (0, errno, "%s", filename);
+- return false;
+- }
+
+ while ((c = getc (istream)) != EOF)
+ {
+@@ -172,6 +200,15 @@
+ bool found_blank = false;
+ size_t logical_end = offset_out;
+
++ /* If LINE_OUT has no wide character,
++ put a new wide character in LINE_OUT
++ if column is bigger than width. */
++ if (offset_out == 0)
++ {
++ line_out[offset_out++] = c;
++ continue;
++ }
++
+ /* Look for the last blank. */
+ while (logical_end)
+ {
+@@ -218,11 +255,225 @@
+ line_out[offset_out++] = c;
+ }
+
+- saved_errno = errno;
++ *saved_errno = errno;
++
++ if (offset_out)
++ fwrite (line_out, sizeof (char), (size_t) offset_out, stdout);
++
++ free(line_out);
++}
++
++#if HAVE_MBRTOWC
++static void
++fold_multibyte_text (FILE *istream, size_t width, int *saved_errno)
++{
++ char buf[MB_LEN_MAX + BUFSIZ]; /* For spooling a read byte sequence. */
++ size_t buflen = 0; /* The length of the byte sequence in buf. */
++ char *bufpos; /* Next read position of BUF. */
++ wint_t wc; /* A gotten wide character. */
++ size_t mblength; /* The byte size of a multibyte character which shows
++ as same character as WC. */
++ mbstate_t state, state_bak; /* State of the stream. */
++ int convfail; /* 1, when conversion is failed. Otherwise 0. */
++
++ char *line_out = NULL;
++ size_t offset_out = 0; /* Index in `line_out' for next char. */
++ size_t allocated_out = 0;
++
++ int increment;
++ size_t column = 0;
++
++ size_t last_blank_pos;
++ size_t last_blank_column;
++ int is_blank_seen;
++ int last_blank_increment;
++ int is_bs_following_last_blank;
++ size_t bs_following_last_blank_num;
++ int is_cr_after_last_blank;
++
++#define CLEAR_FLAGS \
++ do \
++ { \
++ last_blank_pos = 0; \
++ last_blank_column = 0; \
++ is_blank_seen = 0; \
++ is_bs_following_last_blank = 0; \
++ bs_following_last_blank_num = 0; \
++ is_cr_after_last_blank = 0; \
++ } \
++ while (0)
++
++#define START_NEW_LINE \
++ do \
++ { \
++ putchar ('\n'); \
++ column = 0; \
++ offset_out = 0; \
++ CLEAR_FLAGS; \
++ } \
++ while (0)
++
++ CLEAR_FLAGS;
++ memset (&state, '\0', sizeof(mbstate_t));
++
++ for (;; bufpos += mblength, buflen -= mblength)
++ {
++ if (buflen < MB_LEN_MAX && !feof (istream) && !ferror (istream))
++ {
++ memmove (buf, bufpos, buflen);
++ buflen += fread (buf + buflen, sizeof(char), BUFSIZ, istream);
++ bufpos = buf;
++ }
++
++ if (buflen < 1)
++ break;
++
++ /* Get a wide character. */
++ convfail = 0;
++ state_bak = state;
++ mblength = mbrtowc ((wchar_t *)&wc, bufpos, buflen, &state);
++
++ switch (mblength)
++ {
++ case (size_t)-1:
++ case (size_t)-2:
++ convfail++;
++ state = state_bak;
++ /* Fall through. */
++
++ case 0:
++ mblength = 1;
++ break;
++ }
++
++rescan:
++ if (operating_mode == byte_mode) /* byte mode */
++ increment = mblength;
++ else if (operating_mode == character_mode) /* character mode */
++ increment = 1;
++ else /* column mode */
++ {
++ if (convfail)
++ increment = 1;
++ else
++ {
++ switch (wc)
++ {
++ case L'\n':
++ fwrite (line_out, sizeof(char), offset_out, stdout);
++ START_NEW_LINE;
++ continue;
++
++ case L'\b':
++ increment = (column > 0) ? -1 : 0;
++ break;
++
++ case L'\r':
++ increment = -1 * column;
++ break;
++
++ case L'\t':
++ increment = 8 - column % 8;
++ break;
++
++ default:
++ increment = wcwidth (wc);
++ increment = (increment < 0) ? 0 : increment;
++ }
++ }
++ }
++
++ if (column + increment > width && break_spaces && last_blank_pos)
++ {
++ fwrite (line_out, sizeof(char), last_blank_pos, stdout);
++ putchar ('\n');
++
++ offset_out = offset_out - last_blank_pos;
++ column = column - last_blank_column + ((is_cr_after_last_blank)
++ ? last_blank_increment : bs_following_last_blank_num);
++ memmove (line_out, line_out + last_blank_pos, offset_out);
++ CLEAR_FLAGS;
++ goto rescan;
++ }
++
++ if (column + increment > width && column != 0)
++ {
++ fwrite (line_out, sizeof(char), offset_out, stdout);
++ START_NEW_LINE;
++ goto rescan;
++ }
++
++ if (allocated_out < offset_out + mblength)
++ {
++ allocated_out += 1024;
++ line_out = xrealloc (line_out, allocated_out);
++ }
++
++ memcpy (line_out + offset_out, bufpos, mblength);
++ offset_out += mblength;
++ column += increment;
++
++ if (is_blank_seen && !convfail && wc == L'\r')
++ is_cr_after_last_blank = 1;
++
++ if (is_bs_following_last_blank && !convfail && wc == L'\b')
++ ++bs_following_last_blank_num;
++ else
++ is_bs_following_last_blank = 0;
++
++ if (break_spaces && !convfail && iswblank (wc))
++ {
++ last_blank_pos = offset_out;
++ last_blank_column = column;
++ is_blank_seen = 1;
++ last_blank_increment = increment;
++ is_bs_following_last_blank = 1;
++ bs_following_last_blank_num = 0;
++ is_cr_after_last_blank = 0;
++ }
++ }
++
++ *saved_errno = errno;
+
+ if (offset_out)
+ fwrite (line_out, sizeof (char), (size_t) offset_out, stdout);
+
++ free(line_out);
++}
++#endif
++
++/* Fold file FILENAME, or standard input if FILENAME is "-",
++ to stdout, with maximum line length WIDTH.
++ Return 0 if successful, 1 if an error occurs. */
++
++static bool
++fold_file (char *filename, size_t width)
++{
++ FILE *istream;
++ int saved_errno;
++
++ if (STREQ (filename, "-"))
++ {
++ istream = stdin;
++ have_read_stdin = 1;
++ }
++ else
++ istream = fopen (filename, "r");
++
++ if (istream == NULL)
++ {
++ error (0, errno, "%s", filename);
++ return 1;
++ }
++
++ /* Define how ISTREAM is being folded. */
++#if HAVE_MBRTOWC
++ if (MB_CUR_MAX > 1)
++ fold_multibyte_text (istream, width, &saved_errno);
++ else
++#endif
++ fold_text (istream, width, &saved_errno);
++
+ if (ferror (istream))
+ {
+ error (0, saved_errno, "%s", filename);
+@@ -255,7 +506,8 @@
+
+ atexit (close_stdout);
+
+- break_spaces = count_bytes = have_read_stdin = false;
++ operating_mode = column_mode;
++ break_spaces = have_read_stdin = false;
+
+ while ((optc = getopt_long (argc, argv, shortopts, longopts, NULL)) != -1)
+ {
+@@ -264,7 +516,15 @@
+ switch (optc)
+ {
+ case 'b': /* Count bytes rather than columns. */
+- count_bytes = true;
++ if (operating_mode != column_mode)
++ FATAL_ERROR (_("only one way of folding may be specified"));
++ operating_mode = byte_mode;
++ break;
++
++ case 'c':
++ if (operating_mode != column_mode)
++ FATAL_ERROR (_("only one way of folding may be specified"));
++ operating_mode = character_mode;
+ break;
+
+ case 's': /* Break at word boundaries. */
+--- coreutils-6.8+/src/sort.c.i18n 2007-02-24 11:23:23.000000000 +0000
++++ coreutils-6.8+/src/sort.c 2007-03-01 15:10:57.000000000 +0000
+@@ -23,10 +23,19 @@
+
+ #include <config.h>
+
++#include <assert.h>
+ #include <getopt.h>
+ #include <sys/types.h>
+ #include <sys/wait.h>
+ #include <signal.h>
++#if HAVE_WCHAR_H
++# include <wchar.h>
++#endif
++/* Get isw* functions. */
++#if HAVE_WCTYPE_H
++# include <wctype.h>
++#endif
++
+ #include "system.h"
+ #include "argmatch.h"
+ #include "error.h"
+@@ -116,14 +125,38 @@
+ /* Thousands separator; if -1, then there isn't one. */
+ static int thousands_sep;
+
++static int force_general_numcompare = 0;
++
+ /* Nonzero if the corresponding locales are hard. */
+ static bool hard_LC_COLLATE;
+-#if HAVE_NL_LANGINFO
++#if HAVE_LANGINFO_CODESET
+ static bool hard_LC_TIME;
+ #endif
+
+ #define NONZERO(x) ((x) != 0)
+
++/* get a multibyte character's byte length. */
++#define GET_BYTELEN_OF_CHAR(LIM, PTR, MBLENGTH, STATE) \
++ do \
++ { \
++ wchar_t wc; \
++ mbstate_t state_bak; \
++ \
++ state_bak = STATE; \
++ mblength = mbrtowc (&wc, PTR, LIM - PTR, &STATE); \
++ \
++ switch (MBLENGTH) \
++ { \
++ case (size_t)-1: \
++ case (size_t)-2: \
++ STATE = state_bak; \
++ /* Fall through. */ \
++ case 0: \
++ MBLENGTH = 1; \
++ } \
++ } \
++ while (0)
++
+ /* The kind of blanks for '-b' to skip in various options. */
+ enum blanktype { bl_start, bl_end, bl_both };
+
+@@ -261,13 +294,11 @@
+ they were read if all keys compare equal. */
+ static bool stable;
+
+-/* If TAB has this value, blanks separate fields. */
+-enum { TAB_DEFAULT = CHAR_MAX + 1 };
+-
+-/* Tab character separating fields. If TAB_DEFAULT, then fields are
++/* Tab character separating fields. If tab_length is 0, then fields are
+ separated by the empty string between a non-blank character and a blank
+ character. */
+-static int tab = TAB_DEFAULT;
++static char tab[MB_LEN_MAX + 1];
++static size_t tab_length = 0;
+
+ /* Flag to remove consecutive duplicate lines from the output.
+ Only the last of a sequence of equal lines will be output. */
+@@ -639,6 +670,44 @@
+ update_proc (pid);
+ }
+
++/* Function pointers. */
++static void
++(*inittables) (void);
++static char *
++(*begfield) (const struct line*, const struct keyfield *);
++static char *
++(*limfield) (const struct line*, const struct keyfield *);
++static int
++(*getmonth) (char const *, size_t);
++static int
++(*keycompare) (const struct line *, const struct line *);
++static int
++(*numcompare) (const char *, const char *);
++
++/* Test for white space multibyte character.
++ Set LENGTH the byte length of investigated multibyte character. */
++#if HAVE_MBRTOWC
++static int
++ismbblank (const char *str, size_t len, size_t *length)
++{
++ size_t mblength;
++ wchar_t wc;
++ mbstate_t state;
++
++ memset (&state, '\0', sizeof(mbstate_t));
++ mblength = mbrtowc (&wc, str, len, &state);
++
++ if (mblength == (size_t)-1 || mblength == (size_t)-2)
++ {
++ *length = 1;
++ return 0;
++ }
++
++ *length = (mblength < 1) ? 1 : mblength;
++ return iswblank (wc);
++}
++#endif
++
+ /* Clean up any remaining temporary files. */
+
+ static void
+@@ -978,7 +1047,7 @@
+ free (node);
+ }
+
+-#if HAVE_NL_LANGINFO
++#if HAVE_LANGINFO_CODESET
+
+ static int
+ struct_month_cmp (const void *m1, const void *m2)
+@@ -993,7 +1062,7 @@
+ /* Initialize the character class tables. */
+
+ static void
+-inittables (void)
++inittables_uni (void)
+ {
+ size_t i;
+
+@@ -1005,7 +1074,7 @@
+ fold_toupper[i] = toupper (i);
+ }
+
+-#if HAVE_NL_LANGINFO
++#if HAVE_LANGINFO_CODESET
+ /* If we're not in the "C" locale, read different names for months. */
+ if (hard_LC_TIME)
+ {
+@@ -1031,6 +1100,64 @@
+ #endif
+ }
+
++#if HAVE_MBRTOWC
++static void
++inittables_mb (void)
++{
++ int i, j, k, l;
++ char *name, *s;
++ size_t s_len, mblength;
++ char mbc[MB_LEN_MAX];
++ wchar_t wc, pwc;
++ mbstate_t state_mb, state_wc;
++
++ for (i = 0; i < MONTHS_PER_YEAR; i++)
++ {
++ s = (char *) nl_langinfo (ABMON_1 + i);
++ s_len = strlen (s);
++ monthtab[i].name = name = (char *) xmalloc (s_len + 1);
++ monthtab[i].val = i + 1;
++
++ memset (&state_mb, '\0', sizeof (mbstate_t));
++ memset (&state_wc, '\0', sizeof (mbstate_t));
++
++ for (j = 0; j < s_len;)
++ {
++ if (!ismbblank (s + j, s_len - j, &mblength))
++ break;
++ j += mblength;
++ }
++
++ for (k = 0; j < s_len;)
++ {
++ mblength = mbrtowc (&wc, (s + j), (s_len - j), &state_mb);
++ assert (mblength != (size_t)-1 && mblength != (size_t)-2);
++ if (mblength == 0)
++ break;
++
++ pwc = towupper (wc);
++ if (pwc == wc)
++ {
++ memcpy (mbc, s + j, mblength);
++ j += mblength;
++ }
++ else
++ {
++ j += mblength;
++ mblength = wcrtomb (mbc, pwc, &state_wc);
++ assert (mblength != (size_t)0 && mblength != (size_t)-1);
++ }
++
++ for (l = 0; l < mblength; l++)
++ name[k++] = mbc[l];
++ }
++ name[k] = '\0';
++ }
++ qsort ((void *) monthtab, MONTHS_PER_YEAR,
++ sizeof (struct month), struct_month_cmp);
++}
++#endif
++
+ /* Specify the amount of main memory to use when sorting. */
+ static void
+ specify_sort_size (char const *s)
+@@ -1241,7 +1368,7 @@
+ by KEY in LINE. */
+
+ static char *
+-begfield (const struct line *line, const struct keyfield *key)
++begfield_uni (const struct line *line, const struct keyfield *key)
+ {
+ char *ptr = line->text, *lim = ptr + line->length - 1;
+ size_t sword = key->sword;
+@@ -1251,10 +1378,10 @@
+ /* The leading field separator itself is included in a field when -t
+ is absent. */
+
+- if (tab != TAB_DEFAULT)
++ if (tab_length)
+ while (ptr < lim && sword--)
+ {
+- while (ptr < lim && *ptr != tab)
++ while (ptr < lim && *ptr != tab[0])
+ ++ptr;
+ if (ptr < lim)
+ ++ptr;
+@@ -1282,11 +1409,70 @@
+ return ptr;
+ }
+
++#if HAVE_MBRTOWC
++static char *
++begfield_mb (const struct line *line, const struct keyfield *key)
++{
++ int i;
++ char *ptr = line->text, *lim = ptr + line->length - 1;
++ size_t sword = key->sword;
++ size_t schar = key->schar;
++ size_t mblength;
++ mbstate_t state;
++
++ memset (&state, '\0', sizeof(mbstate_t));
++
++ if (tab_length)
++ while (ptr < lim && sword--)
++ {
++ while (ptr < lim && memcmp (ptr, tab, tab_length) != 0)
++ {
++ GET_BYTELEN_OF_CHAR (lim, ptr, mblength, state);
++ ptr += mblength;
++ }
++ if (ptr < lim)
++ {
++ GET_BYTELEN_OF_CHAR (lim, ptr, mblength, state);
++ ptr += mblength;
++ }
++ }
++ else
++ while (ptr < lim && sword--)
++ {
++ while (ptr < lim && ismbblank (ptr, lim - ptr, &mblength))
++ ptr += mblength;
++ if (ptr < lim)
++ {
++ GET_BYTELEN_OF_CHAR (lim, ptr, mblength, state);
++ ptr += mblength;
++ }
++ while (ptr < lim && !ismbblank (ptr, lim - ptr, &mblength))
++ ptr += mblength;
++ }
++
++ if (key->skipsblanks)
++ while (ptr < lim && ismbblank (ptr, lim - ptr, &mblength))
++ ptr += mblength;
++
++ for (i = 0; i < schar; i++)
++ {
++ GET_BYTELEN_OF_CHAR (lim, ptr, mblength, state);
++
++ if (ptr + mblength > lim)
++ break;
++ else
++ ptr += mblength;
++ }
++
++ return ptr;
++}
++#endif
++
+ /* Return the limit of (a pointer to the first character after) the field
+ in LINE specified by KEY. */
+
+ static char *
+-limfield (const struct line *line, const struct keyfield *key)
++limfield_uni (const struct line *line, const struct keyfield *key)
+ {
+ char *ptr = line->text, *lim = ptr + line->length - 1;
+ size_t eword = key->eword, echar = key->echar;
+@@ -1299,10 +1485,10 @@
+ `beginning' is the first character following the delimiting TAB.
+ Otherwise, leave PTR pointing at the first `blank' character after
+ the preceding field. */
+- if (tab != TAB_DEFAULT)
++ if (tab_length)
+ while (ptr < lim && eword--)
+ {
+- while (ptr < lim && *ptr != tab)
++ while (ptr < lim && *ptr != tab[0])
+ ++ptr;
+ if (ptr < lim && (eword | echar))
+ ++ptr;
+@@ -1348,10 +1534,10 @@
+ */
+
+ /* Make LIM point to the end of (one byte past) the current field. */
+- if (tab != TAB_DEFAULT)
++ if (tab_length)
+ {
+ char *newlim;
+- newlim = memchr (ptr, tab, lim - ptr);
++ newlim = memchr (ptr, tab[0], lim - ptr);
+ if (newlim)
+ lim = newlim;
+ }
+@@ -1384,6 +1570,107 @@
+ return ptr;
+ }
+
++#if HAVE_MBRTOWC
++static char *
++limfield_mb (const struct line *line, const struct keyfield *key)
++{
++ char *ptr = line->text, *lim = ptr + line->length - 1;
++ size_t eword = key->eword, echar = key->echar;
++ int i;
++ size_t mblength;
++ mbstate_t state;
++
++ memset (&state, '\0', sizeof(mbstate_t));
++
++ if (tab_length)
++ while (ptr < lim && eword--)
++ {
++ while (ptr < lim && memcmp (ptr, tab, tab_length) != 0)
++ {
++ GET_BYTELEN_OF_CHAR (lim, ptr, mblength, state);
++ ptr += mblength;
++ }
++ if (ptr < lim && (eword | echar))
++ {
++ GET_BYTELEN_OF_CHAR (lim, ptr, mblength, state);
++ ptr += mblength;
++ }
++ }
++ else
++ while (ptr < lim && eword--)
++ {
++ while (ptr < lim && ismbblank (ptr, lim - ptr, &mblength))
++ ptr += mblength;
++ if (ptr < lim)
++ {
++ GET_BYTELEN_OF_CHAR (lim, ptr, mblength, state);
++ ptr += mblength;
++ }
++ while (ptr < lim && !ismbblank (ptr, lim - ptr, &mblength))
++ ptr += mblength;
++ }
++
++
++# ifdef POSIX_UNSPECIFIED
++ /* Make LIM point to the end of (one byte past) the current field. */
++ if (tab_length)
++ {
++ char *newlim, *p;
++
++ newlim = NULL;
++ for (p = ptr; p < lim;)
++ {
++ if (memcmp (p, tab, tab_length) == 0)
++ {
++ newlim = p;
++ break;
++ }
++
++ GET_BYTELEN_OF_CHAR (lim, ptr, mblength, state);
++ p += mblength;
++ }
++ }
++ else
++ {
++ char *newlim;
++ newlim = ptr;
++
++ while (newlim < lim && ismbblank (newlim, lim - newlim, &mblength))
++ newlim += mblength;
++ if (ptr < lim)
++ {
++ GET_BYTELEN_OF_CHAR (lim, ptr, mblength, state);
++ ptr += mblength;
++ }
++ while (newlim < lim && !ismbblank (newlim, lim - newlim, &mblength))
++ newlim += mblength;
++ lim = newlim;
++ }
++# endif
++
++ /* If we're skipping leading blanks, don't start counting characters
++ * until after skipping past any leading blanks. */
++ if (key->skipsblanks)
++ while (ptr < lim && ismbblank (ptr, lim - ptr, &mblength))
++ ptr += mblength;
++
++ memset (&state, '\0', sizeof(mbstate_t));
++
++ /* Advance PTR by ECHAR (if possible), but no further than LIM. */
++ for (i = 0; i < echar; i++)
++ {
++ GET_BYTELEN_OF_CHAR (lim, ptr, mblength, state);
++
++ if (ptr + mblength > lim)
++ break;
++ else
++ ptr += mblength;
++ }
++
++ return ptr;
++}
++#endif
++
+ /* Fill BUF reading from FP, moving buf->left bytes from the end
+ of buf->buf to the beginning first. If EOF is reached and the
+ file wasn't terminated by a newline, supply one. Set up BUF's line
+@@ -1466,8 +1753,24 @@
+ else
+ {
+ if (key->skipsblanks)
+- while (blanks[to_uchar (*line_start)])
+- line_start++;
++ {
++#if HAVE_MBRTOWC
++ if (MB_CUR_MAX > 1)
++ {
++ size_t mblength;
++ mbstate_t state;
++ memset (&state, '\0', sizeof(mbstate_t));
++ while (line_start < line->keylim &&
++ ismbblank (line_start,
++ line->keylim - line_start,
++ &mblength))
++ line_start += mblength;
++ }
++ else
++#endif
++ while (blanks[to_uchar (*line_start)])
++ line_start++;
++ }
+ line->keybeg = line_start;
+ }
+ }
+@@ -1500,7 +1803,7 @@
+ hideously fast. */
+
+ static int
+-numcompare (const char *a, const char *b)
++numcompare_uni (const char *a, const char *b)
+ {
+ while (blanks[to_uchar (*a)])
+ a++;
+@@ -1510,6 +1813,25 @@
+ return strnumcmp (a, b, decimal_point, thousands_sep);
+ }
+
++#if HAVE_MBRTOWC
++static int
++numcompare_mb (const char *a, const char *b)
++{
++ size_t mblength, len;
++ len = strlen (a); /* okay for UTF-8 */
++ while (*a && ismbblank (a, len > MB_CUR_MAX ? MB_CUR_MAX : len, &mblength))
++ {
++ a += mblength;
++ len -= mblength;
++ }
++ len = strlen (b); /* okay for UTF-8 */
++ while (*b && ismbblank (b, len > MB_CUR_MAX ? MB_CUR_MAX : len, &mblength))
++ b += mblength;
++
++ return strnumcmp (a, b, decimal_point, thousands_sep);
++}
++#endif /* HAV_EMBRTOWC */
++
+ static int
+ general_numcompare (const char *sa, const char *sb)
+ {
+@@ -1543,7 +1865,7 @@
+ Return 0 if the name in S is not recognized. */
+
+ static int
+-getmonth (char const *month, size_t len)
++getmonth_uni (char const *month, size_t len)
+ {
+ size_t lo = 0;
+ size_t hi = MONTHS_PER_YEAR;
+@@ -1698,11 +2020,79 @@
+ return diff;
+ }
+
++#if HAVE_MBRTOWC
++static int
++getmonth_mb (const char *s, size_t len)
++{
++ char *month;
++ register size_t i;
++ register int lo = 0, hi = MONTHS_PER_YEAR, result;
++ char *tmp;
++ size_t wclength, mblength;
++ const char **pp;
++ const wchar_t **wpp;
++ wchar_t *month_wcs;
++ mbstate_t state;
++
++ while (len > 0 && ismbblank (s, len, &mblength))
++ {
++ s += mblength;
++ len -= mblength;
++ }
++
++ if (len == 0)
++ return 0;
++
++ month = (char *) alloca (len + 1);
++
++ tmp = (char *) alloca (len + 1);
++ memcpy (tmp, s, len);
++ tmp[len] = '\0';
++ pp = (const char **)&tmp;
++ month_wcs = (wchar_t *) alloca ((len + 1) * sizeof (wchar_t));
++ memset (&state, '\0', sizeof(mbstate_t));
++
++ wclength = mbsrtowcs (month_wcs, pp, len + 1, &state);
++ assert (wclength != (size_t)-1 && *pp == NULL);
++
++ for (i = 0; i < wclength; i++)
++ {
++ month_wcs[i] = towupper(month_wcs[i]);
++ if (iswblank (month_wcs[i]))
++ {
++ month_wcs[i] = L'\0';
++ break;
++ }
++ }
++
++ wpp = (const wchar_t **)&month_wcs;
++
++ mblength = wcsrtombs (month, wpp, len + 1, &state);
++ assert (mblength != (-1) && *wpp == NULL);
++
++ do
++ {
++ int ix = (lo + hi) / 2;
++
++ if (strncmp (month, monthtab[ix].name, strlen (monthtab[ix].name)) < 0)
++ hi = ix;
++ else
++ lo = ix;
++ }
++ while (hi - lo > 1);
++
++ result = (!strncmp (month, monthtab[lo].name, strlen (monthtab[lo].name))
++ ? monthtab[lo].val : 0);
++
++ return result;
++}
++#endif
++
+ /* Compare two lines A and B trying every key in sequence until there
+ are no more keys or a difference is found. */
+
+ static int
+-keycompare (const struct line *a, const struct line *b)
++keycompare_uni (const struct line *a, const struct line *b)
+ {
+ struct keyfield const *key = keylist;
+
+@@ -1875,6 +2265,179 @@
+ return key->reverse ? -diff : diff;
+ }
+
++#if HAVE_MBRTOWC
++static int
++keycompare_mb (const struct line *a, const struct line *b)
++{
++ struct keyfield *key = keylist;
++
++ /* For the first iteration only, the key positions have been
++ precomputed for us. */
++ char *texta = a->keybeg;
++ char *textb = b->keybeg;
++ char *lima = a->keylim;
++ char *limb = b->keylim;
++
++ size_t mblength_a, mblength_b;
++ wchar_t wc_a, wc_b;
++ mbstate_t state_a, state_b;
++
++ int diff;
++
++ memset (&state_a, '\0', sizeof(mbstate_t));
++ memset (&state_b, '\0', sizeof(mbstate_t));
++
++ for (;;)
++ {
++ unsigned char *translate = (unsigned char *) key->translate;
++ bool const *ignore = key->ignore;
++
++ /* Find the lengths. */
++ size_t lena = lima <= texta ? 0 : lima - texta;
++ size_t lenb = limb <= textb ? 0 : limb - textb;
++
++ /* Actually compare the fields. */
++ if (key->random)
++ diff = compare_random (texta, lena, textb, lenb);
++ else if (key->numeric | key->general_numeric)
++ {
++ char savea = *lima, saveb = *limb;
++
++ *lima = *limb = '\0';
++ if (force_general_numcompare)
++ diff = general_numcompare (texta, textb);
++ else
++ diff = ((key->numeric ? numcompare : general_numcompare)
++ (texta, textb));
++ *lima = savea, *limb = saveb;
++ }
++ else if (key->month)
++ diff = getmonth (texta, lena) - getmonth (textb, lenb);
++ else
++ {
++ if (ignore || translate)
++ {
++ char *copy_a = (char *) alloca (lena + 1 + lenb + 1);
++ char *copy_b = copy_a + lena + 1;
++ size_t new_len_a, new_len_b;
++ size_t i, j;
++
++ /* Ignore and/or translate chars before comparing. */
++# define IGNORE_CHARS(NEW_LEN, LEN, TEXT, COPY, WC, MBLENGTH, STATE) \
++ do \
++ { \
++ wchar_t uwc; \
++ char mbc[MB_LEN_MAX]; \
++ mbstate_t state_wc; \
++ \
++ for (NEW_LEN = i = 0; i < LEN;) \
++ { \
++ mbstate_t state_bak; \
++ \
++ state_bak = STATE; \
++ MBLENGTH = mbrtowc (&WC, TEXT + i, LEN - i, &STATE); \
++ \
++ if (MBLENGTH == (size_t)-2 || MBLENGTH == (size_t)-1 \
++ || MBLENGTH == 0) \
++ { \
++ if (MBLENGTH == (size_t)-2 || MBLENGTH == (size_t)-1) \
++ STATE = state_bak; \
++ if (!ignore) \
++ COPY[NEW_LEN++] = TEXT[i++]; \
++ continue; \
++ } \
++ \
++ if (ignore) \
++ { \
++ if ((ignore == nonprinting && !iswprint (WC)) \
++ || (ignore == nondictionary \
++ && !iswalnum (WC) && !iswblank (WC))) \
++ { \
++ i += MBLENGTH; \
++ continue; \
++ } \
++ } \
++ \
++ if (translate) \
++ { \
++ \
++ uwc = towupper(WC); \
++ if (WC == uwc) \
++ { \
++ memcpy (mbc, TEXT + i, MBLENGTH); \
++ i += MBLENGTH; \
++ } \
++ else \
++ { \
++ i += MBLENGTH; \
++ WC = uwc; \
++ memset (&state_wc, '\0', sizeof (mbstate_t)); \
++ \
++ MBLENGTH = wcrtomb (mbc, WC, &state_wc); \
++ assert (MBLENGTH != (size_t)-1 && MBLENGTH != 0); \
++ } \
++ \
++ for (j = 0; j < MBLENGTH; j++) \
++ COPY[NEW_LEN++] = mbc[j]; \
++ } \
++ else \
++ for (j = 0; j < MBLENGTH; j++) \
++ COPY[NEW_LEN++] = TEXT[i++]; \
++ } \
++ COPY[NEW_LEN] = '\0'; \
++ } \
++ while (0)
++ IGNORE_CHARS (new_len_a, lena, texta, copy_a,
++ wc_a, mblength_a, state_a);
++ IGNORE_CHARS (new_len_b, lenb, textb, copy_b,
++ wc_b, mblength_b, state_b);
++ diff = xmemcoll (copy_a, new_len_a, copy_b, new_len_b);
++ }
++ else if (lena == 0)
++ diff = - NONZERO (lenb);
++ else if (lenb == 0)
++ goto greater;
++ else
++ diff = xmemcoll (texta, lena, textb, lenb);
++ }
++
++ if (diff)
++ goto not_equal;
++
++ key = key->next;
++ if (! key)
++ break;
++
++ /* Find the beginning and limit of the next field. */
++ if (key->eword != -1)
++ lima = limfield (a, key), limb = limfield (b, key);
++ else
++ lima = a->text + a->length - 1, limb = b->text + b->length - 1;
++
++ if (key->sword != -1)
++ texta = begfield (a, key), textb = begfield (b, key);
++ else
++ {
++ texta = a->text, textb = b->text;
++ if (key->skipsblanks)
++ {
++ while (texta < lima && ismbblank (texta, lima - texta, &mblength_a))
++ texta += mblength_a;
++ while (textb < limb && ismbblank (textb, limb - textb, &mblength_b))
++ textb += mblength_b;
++ }
++ }
++ }
++
++ return 0;
++
++greater:
++ diff = 1;
++not_equal:
++ return key->reverse ? -diff : diff;
++}
++#endif
++
+ /* Compare two lines A and B, returning negative, zero, or positive
+ depending on whether A compares less than, equal to, or greater than B. */
+
+@@ -2744,7 +3305,7 @@
+ initialize_exit_failure (SORT_FAILURE);
+
+ hard_LC_COLLATE = hard_locale (LC_COLLATE);
+-#if HAVE_NL_LANGINFO
++#if HAVE_LANGINFO_CODESET
+ hard_LC_TIME = hard_locale (LC_TIME);
+ #endif
+
+@@ -2765,6 +3326,27 @@
+ thousands_sep = -1;
+ }
+
++#if HAVE_MBRTOWC
++ if (MB_CUR_MAX > 1)
++ {
++ inittables = inittables_mb;
++ begfield = begfield_mb;
++ limfield = limfield_mb;
++ getmonth = getmonth_mb;
++ keycompare = keycompare_mb;
++ numcompare = numcompare_mb;
++ }
++ else
++#endif
++ {
++ inittables = inittables_uni;
++ begfield = begfield_uni;
++ limfield = limfield_uni;
++ getmonth = getmonth_uni;
++ keycompare = keycompare_uni;
++ numcompare = numcompare_uni;
++ }
++
+ have_read_stdin = false;
+ inittables ();
+
+@@ -3015,13 +3597,35 @@
+
+ case 't':
+ {
+- char newtab = optarg[0];
+- if (! newtab)
++ char newtab[MB_LEN_MAX + 1];
++ size_t newtab_length = 1;
++ strncpy (newtab, optarg, MB_LEN_MAX);
++ if (! newtab[0])
+ error (SORT_FAILURE, 0, _("empty tab"));
+- if (optarg[1])
++#if HAVE_MBRTOWC
++ if (MB_CUR_MAX > 1)
++ {
++ wchar_t wc;
++ mbstate_t state;
++ size_t i;
++
++ memset (&state, '\0', sizeof (mbstate_t));
++ newtab_length = mbrtowc (&wc, newtab, strnlen (newtab,
++ MB_LEN_MAX),
++ &state);
++ switch (newtab_length)
++ {
++ case (size_t) -1:
++ case (size_t) -2:
++ case 0:
++ newtab_length = 1;
++ }
++ }
++#endif
++ if (newtab_length == 1 && optarg[1])
+ {
+ if (STREQ (optarg, "\\0"))
+- newtab = '\0';
++ newtab[0] = '\0';
+ else
+ {
+ /* Provoke with `sort -txx'. Complain about
+@@ -3032,9 +3636,12 @@
+ quote (optarg));
+ }
+ }
+- if (tab != TAB_DEFAULT && tab != newtab)
++ if (tab_length
++ && (tab_length != newtab_length
++ || memcmp (tab, newtab, tab_length) != 0))
+ error (SORT_FAILURE, 0, _("incompatible tabs"));
+- tab = newtab;
++ memcpy (tab, newtab, newtab_length);
++ tab_length = newtab_length;
+ }
+ break;
+
+--- coreutils-6.8+/src/unexpand.c.i18n 2007-01-14 15:41:28.000000000 +0000
++++ coreutils-6.8+/src/unexpand.c 2007-03-01 15:08:24.000000000 +0000
+@@ -39,11 +39,28 @@
+ #include <stdio.h>
+ #include <getopt.h>
+ #include <sys/types.h>
++
++/* Get mbstate_t, mbrtowc(), wcwidth(). */
++#if HAVE_WCHAR_H
++# include <wchar.h>
++#endif
++
+ #include "system.h"
+ #include "error.h"
+ #include "quote.h"
+ #include "xstrndup.h"
+
++/* MB_LEN_MAX is incorrectly defined to be 1 in at least one GCC
++ installation; work around this configuration error. */
++#if !defined MB_LEN_MAX || MB_LEN_MAX < 2
++# define MB_LEN_MAX 16
++#endif
++
++/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */
++#if HAVE_MBRTOWC && defined mbstate_t
++# define mbrtowc(pwc, s, n, ps) (mbrtowc) (pwc, s, n, 0)
++#endif
++
+ /* The official name of this program (e.g., no `g' prefix). */
+ #define PROGRAM_NAME "unexpand"
+
+@@ -110,6 +127,208 @@
+ {NULL, 0, NULL, 0}
+ };
+
++static FILE *next_file (FILE *fp);
++
++#if HAVE_MBRTOWC
++static void
++unexpand_multibyte (void)
++{
++ FILE *fp; /* Input stream. */
++ mbstate_t i_state; /* Current shift state of the input stream. */
++ mbstate_t i_state_bak; /* Back up the I_STATE. */
++ mbstate_t o_state; /* Current shift state of the output stream. */
++ char buf[MB_LEN_MAX + BUFSIZ]; /* For spooling a read byte sequence. */
++ char *bufpos; /* Next read position of BUF. */
++ size_t buflen = 0; /* The length of the byte sequence in buf. */
++ wint_t wc; /* A gotten wide character. */
++ size_t mblength; /* The byte size of a multibyte character
++ which shows as same character as WC. */
++
++ /* Index in `tab_list' of next tabstop: */
++ int tab_index = 0; /* For calculating width of pending tabs. */
++ int print_tab_index = 0; /* For printing as many tabs as possible. */
++ unsigned int column = 0; /* Column on screen of next char. */
++ int next_tab_column; /* Column the next tab stop is on. */
++ int convert = 1; /* If nonzero, perform translations. */
++ unsigned int pending = 0; /* Pending columns of blanks. */
++
++ fp = next_file ((FILE *) NULL);
++ if (fp == NULL)
++ return;
++
++ memset (&o_state, '\0', sizeof(mbstate_t));
++ memset (&i_state, '\0', sizeof(mbstate_t));
++
++ for (;;)
++ {
++ if (buflen < MB_LEN_MAX && !feof(fp) && !ferror(fp))
++ {
++ memmove (buf, bufpos, buflen);
++ buflen += fread (buf + buflen, sizeof(char), BUFSIZ, fp);
++ bufpos = buf;
++ }
++
++ /* Get a wide character. */
++ if (buflen < 1)
++ {
++ mblength = 1;
++ wc = WEOF;
++ }
++ else
++ {
++ i_state_bak = i_state;
++ mblength = mbrtowc ((wchar_t *)&wc, bufpos, buflen, &i_state);
++ }
++
++ if (mblength == (size_t)-1 || mblength == (size_t)-2)
++ {
++ i_state = i_state_bak;
++ wc = L'\0';
++ }
++
++ if (wc == L' ' && convert && column < INT_MAX)
++ {
++ ++pending;
++ ++column;
++ }
++ else if (wc == L'\t' && convert)
++ {
++ if (tab_size == 0)
++ {
++ /* Do not let tab_index == first_free_tab;
++ stop when it is 1 less. */
++ while (tab_index < first_free_tab - 1
++ && column >= tab_list[tab_index])
++ tab_index++;
++ next_tab_column = tab_list[tab_index];
++ if (tab_index < first_free_tab - 1)
++ tab_index++;
++ if (column >= next_tab_column)
++ {
++ convert = 0; /* Ran out of tab stops. */
++ goto flush_pend_mb;
++ }
++ }
++ else
++ {
++ next_tab_column = column + tab_size - column % tab_size;
++ }
++ pending += next_tab_column - column;
++ column = next_tab_column;
++ }
++ else
++ {
++flush_pend_mb:
++ /* Flush pending spaces. Print as many tabs as possible,
++ then print the rest as spaces. */
++ if (pending == 1)
++ {
++ putchar (' ');
++ pending = 0;
++ }
++ column -= pending;
++ while (pending > 0)
++ {
++ if (tab_size == 0)
++ {
++ /* Do not let print_tab_index == first_free_tab;
++ stop when it is 1 less. */
++ while (print_tab_index < first_free_tab - 1
++ && column >= tab_list[print_tab_index])
++ print_tab_index++;
++ next_tab_column = tab_list[print_tab_index];
++ if (print_tab_index < first_free_tab - 1)
++ print_tab_index++;
++ }
++ else
++ {
++ next_tab_column =
++ column + tab_size - column % tab_size;
++ }
++ if (next_tab_column - column <= pending)
++ {
++ putchar ('\t');
++ pending -= next_tab_column - column;
++ column = next_tab_column;
++ }
++ else
++ {
++ --print_tab_index;
++ column += pending;
++ while (pending != 0)
++ {
++ putchar (' ');
++ pending--;
++ }
++ }
++ }
++
++ if (wc == WEOF)
++ {
++ fp = next_file (fp);
++ if (fp == NULL)
++ break; /* No more files. */
++ else
++ {
++ memset (&i_state, '\0', sizeof(mbstate_t));
++ continue;
++ }
++ }
++
++ if (mblength == (size_t)-1 || mblength == (size_t)-2)
++ {
++ if (convert)
++ {
++ ++column;
++ if (convert_entire_line == 0)
++ convert = 0;
++ }
++ mblength = 1;
++ putchar (buf[0]);
++ }
++ else if (mblength == 0)
++ {
++ if (convert && convert_entire_line == 0)
++ convert = 0;
++ mblength = 1;
++ putchar ('\0');
++ }
++ else
++ {
++ if (convert)
++ {
++ if (wc == L'\b')
++ {
++ if (column > 0)
++ --column;
++ }
++ else
++ {
++ int width; /* The width of WC. */
++
++ width = wcwidth (wc);
++ column += (width > 0) ? width : 0;
++ if (convert_entire_line == 0)
++ convert = 0;
++ }
++ }
++
++ if (wc == L'\n')
++ {
++ tab_index = print_tab_index = 0;
++ column = pending = 0;
++ convert = 1;
++ }
++ fwrite (bufpos, sizeof(char), mblength, stdout);
++ }
++ }
++ buflen -= mblength;
++ bufpos += mblength;
++ }
++}
++#endif
++
++
+ void
+ usage (int status)
+ {
+@@ -531,7 +750,12 @@
+
+ file_list = (optind < argc ? &argv[optind] : stdin_argv);
+
+- unexpand ();
++#if HAVE_MBRTOWC
++ if (MB_CUR_MAX > 1)
++ unexpand_multibyte ();
++ else
++#endif
++ unexpand ();
+
+ if (have_read_stdin && fclose (stdin) != 0)
+ error (EXIT_FAILURE, errno, "-");
+--- coreutils-6.8+/src/pr.c.i18n 2007-01-14 15:41:28.000000000 +0000
++++ coreutils-6.8+/src/pr.c 2007-03-01 15:08:24.000000000 +0000
+@@ -313,6 +313,32 @@
+
+ #include <getopt.h>
+ #include <sys/types.h>
++
++/* Get MB_LEN_MAX. */
++#include <limits.h>
++/* MB_LEN_MAX is incorrectly defined to be 1 in at least one GCC
++ installation; work around this configuration error. */
++#if !defined MB_LEN_MAX || MB_LEN_MAX == 1
++# define MB_LEN_MAX 16
++#endif
++
++/* Get MB_CUR_MAX. */
++#include <stdlib.h>
++
++/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>. */
++/* Get mbstate_t, mbrtowc(), wcwidth(). */
++#if HAVE_WCHAR_H
++# include <wchar.h>
++#endif
++
++/* Get iswprint(). -- for wcwidth(). */
++#if HAVE_WCTYPE_H
++# include <wctype.h>
++#endif
++#if !defined iswprint && !HAVE_ISWPRINT
++# define iswprint(wc) 1
++#endif
++
+ #include "system.h"
+ #include "error.h"
+ #include "hard-locale.h"
+@@ -324,6 +350,18 @@
+ #include "strftime.h"
+ #include "xstrtol.h"
+
++/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */
++#if HAVE_MBRTOWC && defined mbstate_t
++# define mbrtowc(pwc, s, n, ps) (mbrtowc) (pwc, s, n, 0)
++#endif
++
++#ifndef HAVE_DECL_WCWIDTH
++"this configure-time declaration test was not run"
++#endif
++#if !HAVE_DECL_WCWIDTH
++extern int wcwidth ();
++#endif
++
+ /* The official name of this program (e.g., no `g' prefix). */
+ #define PROGRAM_NAME "pr"
+
+@@ -416,7 +454,20 @@
+
+ #define NULLCOL (COLUMN *)0
+
+-static int char_to_clump (char c);
++/* Funtion pointers to switch functions for single byte locale or for
++ multibyte locale. If multibyte functions do not exist in your sysytem,
++ these pointers always point the function for single byte locale. */
++static void (*print_char) (char c);
++static int (*char_to_clump) (char c);
++
++/* Functions for single byte locale. */
++static void print_char_single (char c);
++static int char_to_clump_single (char c);
++
++/* Functions for multibyte locale. */
++static void print_char_multi (char c);
++static int char_to_clump_multi (char c);
++
+ static bool read_line (COLUMN *p);
+ static bool print_page (void);
+ static bool print_stored (COLUMN *p);
+@@ -426,6 +477,7 @@
+ static void pad_across_to (int position);
+ static void add_line_number (COLUMN *p);
+ static void getoptarg (char *arg, char switch_char, char *character,
++ int *character_length, int *character_width,
+ int *number);
+ void usage (int status);
+ static void print_files (int number_of_files, char **av);
+@@ -440,7 +492,6 @@
+ static void pad_down (int lines);
+ static void read_rest_of_line (COLUMN *p);
+ static void skip_read (COLUMN *p, int column_number);
+-static void print_char (char c);
+ static void cleanup (void);
+ static void print_sep_string (void);
+ static void separator_string (const char *optarg_S);
+@@ -455,7 +506,7 @@
+ we store the leftmost columns contiguously in buff.
+ To print a line from buff, get the index of the first character
+ from line_vector[i], and print up to line_vector[i + 1]. */
+-static char *buff;
++static unsigned char *buff;
+
+ /* Index of the position in buff where the next character
+ will be stored. */
+@@ -559,7 +610,7 @@
+ static bool untabify_input = false;
+
+ /* (-e) The input tab character. */
+-static char input_tab_char = '\t';
++static char input_tab_char[MB_LEN_MAX] = "\t";
+
+ /* (-e) Tabstops are at chars_per_tab, 2*chars_per_tab, 3*chars_per_tab, ...
+ where the leftmost column is 1. */
+@@ -569,7 +620,10 @@
+ static bool tabify_output = false;
+
+ /* (-i) The output tab character. */
+-static char output_tab_char = '\t';
++static char output_tab_char[MB_LEN_MAX] = "\t";
++
++/* (-i) The byte length of output tab character. */
++static int output_tab_char_length = 1;
+
+ /* (-i) The width of the output tab. */
+ static int chars_per_output_tab = 8;
+@@ -643,7 +697,13 @@
+ static bool numbered_lines = false;
+
+ /* (-n) Character which follows each line number. */
+-static char number_separator = '\t';
++static char number_separator[MB_LEN_MAX] = "\t";
++
++/* (-n) The byte length of the character which follows each line number. */
++static int number_separator_length = 1;
++
++/* (-n) The character width of the character which follows each line number. */
++static int number_separator_width = 0;
+
+ /* (-n) line counting starts with 1st line of input file (not with 1st
+ line of 1st page printed). */
+@@ -696,6 +756,7 @@
+ -a|COLUMN|-m is a `space' and with the -J option a `tab'. */
+ static char *col_sep_string = "";
+ static int col_sep_length = 0;
++static int col_sep_width = 0;
+ static char *column_separator = " ";
+ static char *line_separator = "\t";
+
+@@ -852,6 +913,13 @@
+ col_sep_length = (int) strlen (optarg_S);
+ col_sep_string = xmalloc (col_sep_length + 1);
+ strcpy (col_sep_string, optarg_S);
++
++#if HAVE_MBRTOWC
++ if (MB_CUR_MAX > 1)
++ col_sep_width = mbswidth (col_sep_string, 0);
++ else
++#endif
++ col_sep_width = col_sep_length;
+ }
+
+ int
+@@ -877,6 +945,21 @@
+
+ atexit (close_stdout);
+
++/* Define which functions are used, the ones for single byte locale or the ones
++ for multibyte locale. */
++#if HAVE_MBRTOWC
++ if (MB_CUR_MAX > 1)
++ {
++ print_char = print_char_multi;
++ char_to_clump = char_to_clump_multi;
++ }
++ else
++#endif
++ {
++ print_char = print_char_single;
++ char_to_clump = char_to_clump_single;
++ }
++
+ n_files = 0;
+ file_names = (argc > 1
+ ? xmalloc ((argc - 1) * sizeof (char *))
+@@ -949,8 +1032,12 @@
+ break;
+ case 'e':
+ if (optarg)
+- getoptarg (optarg, 'e', &input_tab_char,
+- &chars_per_input_tab);
++ {
++ int dummy_length, dummy_width;
++
++ getoptarg (optarg, 'e', input_tab_char, &dummy_length,
++ &dummy_width, &chars_per_input_tab);
++ }
+ /* Could check tab width > 0. */
+ untabify_input = true;
+ break;
+@@ -963,8 +1050,12 @@
+ break;
+ case 'i':
+ if (optarg)
+- getoptarg (optarg, 'i', &output_tab_char,
+- &chars_per_output_tab);
++ {
++ int dummy_width;
++
++ getoptarg (optarg, 'i', output_tab_char, &output_tab_char_length,
++ &dummy_width, &chars_per_output_tab);
++ }
+ /* Could check tab width > 0. */
+ tabify_output = true;
+ break;
+@@ -991,8 +1082,8 @@
+ case 'n':
+ numbered_lines = true;
+ if (optarg)
+- getoptarg (optarg, 'n', &number_separator,
+- &chars_per_number);
++ getoptarg (optarg, 'n', number_separator, &number_separator_length,
++ &number_separator_width, &chars_per_number);
+ break;
+ case 'N':
+ skip_count = false;
+@@ -1031,7 +1122,7 @@
+ old_s = false;
+ /* Reset an additional input of -s, -S dominates -s */
+ col_sep_string = "";
+- col_sep_length = 0;
++ col_sep_length = col_sep_width = 0;
+ use_col_separator = true;
+ if (optarg)
+ separator_string (optarg);
+@@ -1188,10 +1279,45 @@
+ a number. */
+
+ static void
+-getoptarg (char *arg, char switch_char, char *character, int *number)
++getoptarg (char *arg, char switch_char, char *character, int *character_length,
++ int *character_width, int *number)
+ {
+ if (!ISDIGIT (*arg))
+- *character = *arg++;
++ {
++#ifdef HAVE_MBRTOWC
++ if (MB_CUR_MAX > 1) /* for multibyte locale. */
++ {
++ wchar_t wc;
++ size_t mblength;
++ int width;
++ mbstate_t state = {'\0'};
++
++ mblength = mbrtowc (&wc, arg, strnlen(arg, MB_LEN_MAX), &state);
++
++ if (mblength == (size_t)-1 || mblength == (size_t)-2)
++ {
++ *character_length = 1;
++ *character_width = 1;
++ }
++ else
++ {
++ *character_length = (mblength < 1) ? 1 : mblength;
++ width = wcwidth (wc);
++ *character_width = (width < 0) ? 0 : width;
++ }
++
++ strncpy (character, arg, *character_length);
++ arg += *character_length;
++ }
++ else /* for single byte locale. */
++#endif
++ {
++ *character = *arg++;
++ *character_length = 1;
++ *character_width = 1;
++ }
++ }
++
+ if (*arg)
+ {
+ long int tmp_long;
+@@ -1256,7 +1382,7 @@
+ else
+ col_sep_string = column_separator;
+
+- col_sep_length = 1;
++ col_sep_length = col_sep_width = 1;
+ use_col_separator = true;
+ }
+ /* It's rather pointless to define a TAB separator with column
+@@ -1288,11 +1414,11 @@
+ TAB_WIDTH (chars_per_input_tab, chars_per_number); */
+
+ /* Estimate chars_per_text without any margin and keep it constant. */
+- if (number_separator == '\t')
++ if (number_separator[0] == '\t')
+ number_width = chars_per_number +
+ TAB_WIDTH (chars_per_default_tab, chars_per_number);
+ else
+- number_width = chars_per_number + 1;
++ number_width = chars_per_number + number_separator_width;
+
+ /* The number is part of the column width unless we are
+ printing files in parallel. */
+@@ -1307,7 +1433,7 @@
+ }
+
+ chars_per_column = (chars_per_line - chars_used_by_number -
+- (columns - 1) * col_sep_length) / columns;
++ (columns - 1) * col_sep_width) / columns;
+
+ if (chars_per_column < 1)
+ error (EXIT_FAILURE, 0, _("page width too narrow"));
+@@ -1432,7 +1558,7 @@
+
+ /* Enlarge p->start_position of first column to use the same form of
+ padding_not_printed with all columns. */
+- h = h + col_sep_length;
++ h = h + col_sep_width;
+
+ /* This loop takes care of all but the rightmost column. */
+
+@@ -1466,7 +1592,7 @@
+ }
+ else
+ {
+- h = h_next + col_sep_length;
++ h = h_next + col_sep_width;
+ h_next = h + chars_per_column;
+ }
+ }
+@@ -1756,9 +1882,9 @@
+ align_column (COLUMN *p)
+ {
+ padding_not_printed = p->start_position;
+- if (padding_not_printed - col_sep_length > 0)
++ if (padding_not_printed - col_sep_width > 0)
+ {
+- pad_across_to (padding_not_printed - col_sep_length);
++ pad_across_to (padding_not_printed - col_sep_width);
+ padding_not_printed = ANYWHERE;
+ }
+
+@@ -2029,13 +2155,13 @@
+ /* May be too generous. */
+ buff = X2REALLOC (buff, &buff_allocated);
+ }
+- buff[buff_current++] = c;
++ buff[buff_current++] = (unsigned char) c;
+ }
+
+ static void
+ add_line_number (COLUMN *p)
+ {
+- int i;
++ int i, j;
+ char *s;
+ int left_cut;
+
+@@ -2058,22 +2184,24 @@
+ /* Tabification is assumed for multiple columns, also for n-separators,
+ but `default n-separator = TAB' hasn't been given priority over
+ equal column_width also specified by POSIX. */
+- if (number_separator == '\t')
++ if (number_separator[0] == '\t')
+ {
+ i = number_width - chars_per_number;
+ while (i-- > 0)
+ (p->char_func) (' ');
+ }
+ else
+- (p->char_func) (number_separator);
++ for (j = 0; j < number_separator_length; j++)
++ (p->char_func) (number_separator[j]);
+ }
+ else
+ /* To comply with POSIX, we avoid any expansion of default TAB
+ separator with a single column output. No column_width requirement
+ has to be considered. */
+ {
+- (p->char_func) (number_separator);
+- if (number_separator == '\t')
++ for (j = 0; j < number_separator_length; j++)
++ (p->char_func) (number_separator[j]);
++ if (number_separator[0] == '\t')
+ output_position = POS_AFTER_TAB (chars_per_output_tab,
+ output_position);
+ }
+@@ -2234,7 +2362,7 @@
+ while (goal - h_old > 1
+ && (h_new = POS_AFTER_TAB (chars_per_output_tab, h_old)) <= goal)
+ {
+- putchar (output_tab_char);
++ fwrite (output_tab_char, sizeof(char), output_tab_char_length, stdout);
+ h_old = h_new;
+ }
+ while (++h_old <= goal)
+@@ -2254,6 +2382,7 @@
+ {
+ char *s;
+ int l = col_sep_length;
++ int not_space_flag;
+
+ s = col_sep_string;
+
+@@ -2267,6 +2396,7 @@
+ {
+ for (; separators_not_printed > 0; --separators_not_printed)
+ {
++ not_space_flag = 0;
+ while (l-- > 0)
+ {
+ /* 3 types of sep_strings: spaces only, spaces and chars,
+@@ -2280,12 +2410,15 @@
+ }
+ else
+ {
++ not_space_flag = 1;
+ if (spaces_not_printed > 0)
+ print_white_space ();
+ putchar (*s++);
+- ++output_position;
+ }
+ }
++ if (not_space_flag)
++ output_position += col_sep_width;
++
+ /* sep_string ends with some spaces */
+ if (spaces_not_printed > 0)
+ print_white_space ();
+@@ -2313,7 +2446,7 @@
+ required number of tabs and spaces. */
+
+ static void
+-print_char (char c)
++print_char_single (char c)
+ {
+ if (tabify_output)
+ {
+@@ -2337,6 +2470,74 @@
+ putchar (c);
+ }
+
++#ifdef HAVE_MBRTOWC
++static void
++print_char_multi (char c)
++{
++ static size_t mbc_pos = 0;
++ static char mbc[MB_LEN_MAX] = {'\0'};
++ static mbstate_t state = {'\0'};
++ mbstate_t state_bak;
++ wchar_t wc;
++ size_t mblength;
++ int width;
++
++ if (tabify_output)
++ {
++ state_bak = state;
++ mbc[mbc_pos++] = c;
++ mblength = mbrtowc (&wc, mbc, mbc_pos, &state);
++
++ while (mbc_pos > 0)
++ {
++ switch (mblength)
++ {
++ case (size_t)-2:
++ state = state_bak;
++ return;
++
++ case (size_t)-1:
++ state = state_bak;
++ ++output_position;
++ putchar (mbc[0]);
++ memmove (mbc, mbc + 1, MB_CUR_MAX - 1);
++ --mbc_pos;
++ break;
++
++ case 0:
++ mblength = 1;
++
++ default:
++ if (wc == L' ')
++ {
++ memmove (mbc, mbc + mblength, MB_CUR_MAX - mblength);
++ --mbc_pos;
++ ++spaces_not_printed;
++ return;
++ }
++ else if (spaces_not_printed > 0)
++ print_white_space ();
++
++ /* Nonprintables are assumed to have width 0, except L'\b'. */
++ if ((width = wcwidth (wc)) < 1)
++ {
++ if (wc == L'\b')
++ --output_position;
++ }
++ else
++ output_position += width;
++
++ fwrite (mbc, sizeof(char), mblength, stdout);
++ memmove (mbc, mbc + mblength, MB_CUR_MAX - mblength);
++ mbc_pos -= mblength;
++ }
++ }
++ return;
++ }
++ putchar (c);
++}
++#endif
++
+ /* Skip to page PAGE before printing.
+ PAGE may be larger than total number of pages. */
+
+@@ -2517,9 +2718,9 @@
+ align_empty_cols = false;
+ }
+
+- if (padding_not_printed - col_sep_length > 0)
++ if (padding_not_printed - col_sep_width > 0)
+ {
+- pad_across_to (padding_not_printed - col_sep_length);
++ pad_across_to (padding_not_printed - col_sep_width);
+ padding_not_printed = ANYWHERE;
+ }
+
+@@ -2620,9 +2821,9 @@
+ }
+ }
+
+- if (padding_not_printed - col_sep_length > 0)
++ if (padding_not_printed - col_sep_width > 0)
+ {
+- pad_across_to (padding_not_printed - col_sep_length);
++ pad_across_to (padding_not_printed - col_sep_width);
+ padding_not_printed = ANYWHERE;
+ }
+
+@@ -2635,8 +2836,8 @@
+ if (spaces_not_printed == 0)
+ {
+ output_position = p->start_position + end_vector[line];
+- if (p->start_position - col_sep_length == chars_per_margin)
+- output_position -= col_sep_length;
++ if (p->start_position - col_sep_width == chars_per_margin)
++ output_position -= col_sep_width;
+ }
+
+ return true;
+@@ -2655,7 +2856,7 @@
+ number of characters is 1.) */
+
+ static int
+-char_to_clump (char c)
++char_to_clump_single (char c)
+ {
+ unsigned char uc = c;
+ char *s = clump_buff;
+@@ -2665,10 +2866,10 @@
+ int chars;
+ int chars_per_c = 8;
+
+- if (c == input_tab_char)
++ if (c == input_tab_char[0])
+ chars_per_c = chars_per_input_tab;
+
+- if (c == input_tab_char || c == '\t')
++ if (c == input_tab_char[0] || c == '\t')
+ {
+ width = TAB_WIDTH (chars_per_c, input_position);
+
+@@ -2739,6 +2940,154 @@
+ return chars;
+ }
+
++#ifdef HAVE_MBRTOWC
++static int
++char_to_clump_multi (char c)
++{
++ static size_t mbc_pos = 0;
++ static char mbc[MB_LEN_MAX] = {'\0'};
++ static mbstate_t state = {'\0'};
++ mbstate_t state_bak;
++ wchar_t wc;
++ size_t mblength;
++ int wc_width;
++ register char *s = clump_buff;
++ register int i, j;
++ char esc_buff[4];
++ int width;
++ int chars;
++ int chars_per_c = 8;
++
++ state_bak = state;
++ mbc[mbc_pos++] = c;
++ mblength = mbrtowc (&wc, mbc, mbc_pos, &state);
++
++ width = 0;
++ chars = 0;
++ while (mbc_pos > 0)
++ {
++ switch (mblength)
++ {
++ case (size_t)-2:
++ state = state_bak;
++ return 0;
++
++ case (size_t)-1:
++ state = state_bak;
++ mblength = 1;
++
++ if (use_esc_sequence || use_cntrl_prefix)
++ {
++ width = +4;
++ chars = +4;
++ *s++ = '\\';
++ sprintf (esc_buff, "%03o", mbc[0]);
++ for (i = 0; i <= 2; ++i)
++ *s++ = (int) esc_buff[i];
++ }
++ else
++ {
++ width += 1;
++ chars += 1;
++ *s++ = mbc[0];
++ }
++ break;
++
++ case 0:
++ mblength = 1;
++ /* Fall through */
++
++ default:
++ if (memcmp (mbc, input_tab_char, mblength) == 0)
++ chars_per_c = chars_per_input_tab;
++
++ if (memcmp (mbc, input_tab_char, mblength) == 0 || c == '\t')
++ {
++ int width_inc;
++
++ width_inc = TAB_WIDTH (chars_per_c, input_position);
++ width += width_inc;
++
++ if (untabify_input)
++ {
++ for (i = width_inc; i; --i)
++ *s++ = ' ';
++ chars += width_inc;
++ }
++ else
++ {
++ for (i = 0; i < mblength; i++)
++ *s++ = mbc[i];
++ chars += mblength;
++ }
++ }
++ else if ((wc_width = wcwidth (wc)) < 1)
++ {
++ if (use_esc_sequence)
++ {
++ for (i = 0; i < mblength; i++)
++ {
++ width += 4;
++ chars += 4;
++ *s++ = '\\';
++ sprintf (esc_buff, "%03o", c);
++ for (j = 0; j <= 2; ++j)
++ *s++ = (int) esc_buff[j];
++ }
++ }
++ else if (use_cntrl_prefix)
++ {
++ if (wc < 0200)
++ {
++ width += 2;
++ chars += 2;
++ *s++ = '^';
++ *s++ = wc ^ 0100;
++ }
++ else
++ {
++ for (i = 0; i < mblength; i++)
++ {
++ width += 4;
++ chars += 4;
++ *s++ = '\\';
++ sprintf (esc_buff, "%03o", c);
++ for (j = 0; j <= 2; ++j)
++ *s++ = (int) esc_buff[j];
++ }
++ }
++ }
++ else if (wc == L'\b')
++ {
++ width += -1;
++ chars += 1;
++ *s++ = c;
++ }
++ else
++ {
++ width += 0;
++ chars += mblength;
++ for (i = 0; i < mblength; i++)
++ *s++ = mbc[i];
++ }
++ }
++ else
++ {
++ width += wc_width;
++ chars += mblength;
++ for (i = 0; i < mblength; i++)
++ *s++ = mbc[i];
++ }
++ }
++ memmove (mbc, mbc + mblength, MB_CUR_MAX - mblength);
++ mbc_pos -= mblength;
++ }
++
++ input_position += width;
++ return chars;
++}
++#endif
++
+ /* We've just printed some files and need to clean up things before
+ looking for more options and printing the next batch of files.
+
+--- coreutils-6.8+/src/cut.c.i18n 2007-01-14 15:41:28.000000000 +0000
++++ coreutils-6.8+/src/cut.c 2007-03-01 15:08:24.000000000 +0000
+@@ -29,6 +29,11 @@
+ #include <assert.h>
+ #include <getopt.h>
+ #include <sys/types.h>
++
++/* Get mbstate_t, mbrtowc(). */
++#if HAVE_WCHAR_H
++# include <wchar.h>
++#endif
+ #include "system.h"
+
+ #include "error.h"
+@@ -37,6 +42,18 @@
+ #include "quote.h"
+ #include "xstrndup.h"
+
++/* MB_LEN_MAX is incorrectly defined to be 1 in at least one GCC
++ installation; work around this configuration error. */
++#if !defined MB_LEN_MAX || MB_LEN_MAX < 2
++# undef MB_LEN_MAX
++# define MB_LEN_MAX 16
++#endif
++
++/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */
++#if HAVE_MBRTOWC && defined mbstate_t
++# define mbrtowc(pwc, s, n, ps) (mbrtowc) (pwc, s, n, 0)
++#endif
++
+ /* The official name of this program (e.g., no `g' prefix). */
+ #define PROGRAM_NAME "cut"
+
+@@ -67,6 +84,52 @@
+ } \
+ while (0)
+
++/* Refill the buffer BUF to get a multibyte character. */
++#define REFILL_BUFFER(BUF, BUFPOS, BUFLEN, STREAM) \
++ do \
++ { \
++ if (BUFLEN < MB_LEN_MAX && !feof (STREAM) && !ferror (STREAM)) \
++ { \
++ memmove (BUF, BUFPOS, BUFLEN); \
++ BUFLEN += fread (BUF + BUFLEN, sizeof(char), BUFSIZ, STREAM); \
++ BUFPOS = BUF; \
++ } \
++ } \
++ while (0)
++
++/* Get wide character on BUFPOS. BUFPOS is not included after that.
++ If byte sequence is not valid as a character, CONVFAIL is 1. Otherwise 0. */
++#define GET_NEXT_WC_FROM_BUFFER(WC, BUFPOS, BUFLEN, MBLENGTH, STATE, CONVFAIL) \
++ do \
++ { \
++ mbstate_t state_bak; \
++ \
++ if (BUFLEN < 1) \
++ { \
++ WC = WEOF; \
++ break; \
++ } \
++ \
++ /* Get a wide character. */ \
++ CONVFAIL = 0; \
++ state_bak = STATE; \
++ MBLENGTH = mbrtowc ((wchar_t *)&WC, BUFPOS, BUFLEN, &STATE); \
++ \
++ switch (MBLENGTH) \
++ { \
++ case (size_t)-1: \
++ case (size_t)-2: \
++ CONVFAIL++; \
++ STATE = state_bak; \
++ /* Fall througn. */ \
++ \
++ case 0: \
++ MBLENGTH = 1; \
++ break; \
++ } \
++ } \
++ while (0)
++
+ struct range_pair
+ {
+ size_t lo;
+@@ -85,7 +148,7 @@
+ /* The number of bytes allocated for FIELD_1_BUFFER. */
+ static size_t field_1_bufsize;
+
+-/* The largest field or byte index used as an endpoint of a closed
++/* The largest byte, character or field index used as an endpoint of a closed
+ or degenerate range specification; this doesn't include the starting
+ index of right-open-ended ranges. For example, with either range spec
+ `2-5,9-', `2-3,5,9-' this variable would be set to 5. */
+@@ -97,10 +160,11 @@
+
+ /* This is a bit vector.
+ In byte mode, which bytes to output.
++ In character mode, which characters to output.
+ In field mode, which DELIM-separated fields to output.
+- Both bytes and fields are numbered starting with 1,
++ Bytes, characters and fields are numbered starting with 1,
+ so the zeroth bit of this array is unused.
+- A field or byte K has been selected if
++ A byte, character or field K has been selected if
+ (K <= MAX_RANGE_ENDPOINT and is_printable_field(K))
+ || (EOL_RANGE_START > 0 && K >= EOL_RANGE_START). */
+ static unsigned char *printable_field;
+@@ -109,9 +173,12 @@
+ {
+ undefined_mode,
+
+- /* Output characters that are in the given bytes. */
++ /* Output bytes that are at the given positions. */
+ byte_mode,
+
++ /* Output characters that are at the given positions. */
++ character_mode,
++
+ /* Output the given delimeter-separated fields. */
+ field_mode
+ };
+@@ -121,6 +188,13 @@
+
+ static enum operating_mode operating_mode;
+
++/* If nonzero, when in byte mode, don't split multibyte characters. */
++static int byte_mode_character_aware;
++
++/* If nonzero, the function for single byte locale is work
++ if this program runs on multibyte locale. */
++static int force_singlebyte_mode;
++
+ /* If true do not output lines containing no delimeter characters.
+ Otherwise, all such lines are printed. This option is valid only
+ with field mode. */
+@@ -132,6 +206,9 @@
+
+ /* The delimeter character for field mode. */
+ static unsigned char delim;
++#if HAVE_WCHAR_H
++static wchar_t wcdelim;
++#endif
+
+ /* True if the --output-delimiter=STRING option was specified. */
+ static bool output_delimiter_specified;
+@@ -205,7 +282,7 @@
+ -f, --fields=LIST select only these fields; also print any line\n\
+ that contains no delimiter character, unless\n\
+ the -s option is specified\n\
+- -n (ignored)\n\
++ -n with -b: don't split multibyte characters\n\
+ "), stdout);
+ fputs (_("\
+ --complement complement the set of selected bytes, characters\n\
+@@ -362,7 +439,7 @@
+ in_digits = false;
+ /* Starting a range. */
+ if (dash_found)
+- FATAL_ERROR (_("invalid byte or field list"));
++ FATAL_ERROR (_("invalid byte, character or field list"));
+ dash_found = true;
+ fieldstr++;
+
+@@ -387,14 +464,16 @@
+ if (value == 0)
+ {
+ /* `n-'. From `initial' to end of line. */
+- eol_range_start = initial;
++ if (eol_range_start == 0 ||
++ (eol_range_start != 0 && eol_range_start > initial))
++ eol_range_start = initial;
+ field_found = true;
+ }
+ else
+ {
+ /* `m-n' or `-n' (1-n). */
+ if (value < initial)
+- FATAL_ERROR (_("invalid byte or field list"));
++ FATAL_ERROR (_("invalid byte, character or field list"));
+
+ /* Is there already a range going to end of line? */
+ if (eol_range_start != 0)
+@@ -467,6 +546,9 @@
+ if (operating_mode == byte_mode)
+ error (0, 0,
+ _("byte offset %s is too large"), quote (bad_num));
++ else if (operating_mode == character_mode)
++ error (0, 0,
++ _("character offset %s is too large"), quote (bad_num));
+ else
+ error (0, 0,
+ _("field number %s is too large"), quote (bad_num));
+@@ -477,7 +559,7 @@
+ fieldstr++;
+ }
+ else
+- FATAL_ERROR (_("invalid byte or field list"));
++ FATAL_ERROR (_("invalid byte, character or field list"));
+ }
+
+ max_range_endpoint = 0;
+@@ -570,6 +652,63 @@
+ }
+ }
+
++#if HAVE_MBRTOWC
++/* This function is in use for the following case.
++
++ 1. Read from the stream STREAM, printing to standard output any selected
++ characters.
++
++ 2. Read from stream STREAM, printing to standard output any selected bytes,
++ without splitting multibyte characters. */
++
++static void
++cut_characters_or_cut_bytes_no_split (FILE *stream)
++{
++ int idx; /* number of bytes or characters in the line so far. */
++ char buf[MB_LEN_MAX + BUFSIZ]; /* For spooling a read byte sequence. */
++ char *bufpos; /* Next read position of BUF. */
++ size_t buflen; /* The length of the byte sequence in buf. */
++ wint_t wc; /* A gotten wide character. */
++ size_t mblength; /* The byte size of a multibyte character which shows
++ as same character as WC. */
++ mbstate_t state; /* State of the stream. */
++ int convfail; /* 1, when conversion is failed. Otherwise 0. */
++
++ idx = 0;
++ buflen = 0;
++ bufpos = buf;
++ memset (&state, '\0', sizeof(mbstate_t));
++
++ while (1)
++ {
++ REFILL_BUFFER (buf, bufpos, buflen, stream);
++
++ GET_NEXT_WC_FROM_BUFFER (wc, bufpos, buflen, mblength, state, convfail);
++
++ if (wc == WEOF)
++ {
++ if (idx > 0)
++ putchar ('\n');
++ break;
++ }
++ else if (wc == L'\n')
++ {
++ putchar ('\n');
++ idx = 0;
++ }
++ else
++ {
++ idx += (operating_mode == byte_mode) ? mblength : 1;
++ if (print_kth (idx, NULL))
++ fwrite (bufpos, mblength, sizeof(char), stdout);
++ }
++
++ buflen -= mblength;
++ bufpos += mblength;
++ }
++}
++#endif
++
+ /* Read from stream STREAM, printing to standard output any selected fields. */
+
+ static void
+@@ -692,13 +831,192 @@
+ }
+ }
+
++#if HAVE_MBRTOWC
++static void
++cut_fields_mb (FILE *stream)
++{
++ int c;
++ unsigned int field_idx;
++ int found_any_selected_field;
++ int buffer_first_field;
++ int empty_input;
++ char buf[MB_LEN_MAX + BUFSIZ]; /* For spooling a read byte sequence. */
++ char *bufpos; /* Next read position of BUF. */
++ size_t buflen; /* The length of the byte sequence in buf. */
++ wint_t wc = 0; /* A gotten wide character. */
++ size_t mblength; /* The byte size of a multibyte character which shows
++ as same character as WC. */
++ mbstate_t state; /* State of the stream. */
++ int convfail; /* 1, when conversion is failed. Otherwise 0. */
++
++ found_any_selected_field = 0;
++ field_idx = 1;
++ bufpos = buf;
++ buflen = 0;
++ memset (&state, '\0', sizeof(mbstate_t));
++
++ c = getc (stream);
++ empty_input = (c == EOF);
++ if (c != EOF)
++ ungetc (c, stream);
++ else
++ wc = WEOF;
++
++ /* To support the semantics of the -s flag, we may have to buffer
++ all of the first field to determine whether it is `delimited.'
++ But that is unnecessary if all non-delimited lines must be printed
++ and the first field has been selected, or if non-delimited lines
++ must be suppressed and the first field has *not* been selected.
++ That is because a non-delimited line has exactly one field. */
++ buffer_first_field = (suppress_non_delimited ^ !print_kth (1, NULL));
++
++ while (1)
++ {
++ if (field_idx == 1 && buffer_first_field)
++ {
++ int len = 0;
++
++ while (1)
++ {
++ REFILL_BUFFER (buf, bufpos, buflen, stream);
++
++ GET_NEXT_WC_FROM_BUFFER
++ (wc, bufpos, buflen, mblength, state, convfail);
++
++ if (wc == WEOF)
++ break;
++
++ field_1_buffer = xrealloc (field_1_buffer, len + mblength);
++ memcpy (field_1_buffer + len, bufpos, mblength);
++ len += mblength;
++ buflen -= mblength;
++ bufpos += mblength;
++
++ if (!convfail && (wc == L'\n' || wc == wcdelim))
++ break;
++ }
++
++ if (wc == WEOF)
++ break;
++
++ /* If the first field extends to the end of line (it is not
++ delimited) and we are printing all non-delimited lines,
++ print this one. */
++ if (convfail || (!convfail && wc != wcdelim))
++ {
++ if (suppress_non_delimited)
++ {
++ /* Empty. */
++ }
++ else
++ {
++ fwrite (field_1_buffer, sizeof (char), len, stdout);
++ /* Make sure the output line is newline terminated. */
++ if (convfail || (!convfail && wc != L'\n'))
++ putchar ('\n');
++ }
++ continue;
++ }
++
++ if (print_kth (1, NULL))
++ {
++ /* Print the field, but not the trailing delimiter. */
++ fwrite (field_1_buffer, sizeof (char), len - 1, stdout);
++ found_any_selected_field = 1;
++ }
++ ++field_idx;
++ }
++
++ if (wc != WEOF)
++ {
++ if (print_kth (field_idx, NULL))
++ {
++ if (found_any_selected_field)
++ {
++ fwrite (output_delimiter_string, sizeof (char),
++ output_delimiter_length, stdout);
++ }
++ found_any_selected_field = 1;
++ }
++
++ while (1)
++ {
++ REFILL_BUFFER (buf, bufpos, buflen, stream);
++
++ GET_NEXT_WC_FROM_BUFFER
++ (wc, bufpos, buflen, mblength, state, convfail);
++
++ if (wc == WEOF)
++ break;
++ else if (!convfail && (wc == wcdelim || wc == L'\n'))
++ {
++ buflen -= mblength;
++ bufpos += mblength;
++ break;
++ }
++
++ if (print_kth (field_idx, NULL))
++ fwrite (bufpos, mblength, sizeof(char), stdout);
++
++ buflen -= mblength;
++ bufpos += mblength;
++ }
++ }
++
++ if ((!convfail || wc == L'\n') && buflen < 1)
++ wc = WEOF;
++
++ if (!convfail && wc == wcdelim)
++ ++field_idx;
++ else if (wc == WEOF || (!convfail && wc == L'\n'))
++ {
++ if (found_any_selected_field
++ || (!empty_input && !(suppress_non_delimited && field_idx == 1)))
++ putchar ('\n');
++ if (wc == WEOF)
++ break;
++ field_idx = 1;
++ found_any_selected_field = 0;
++ }
++ }
++}
++#endif
++
+ static void
+ cut_stream (FILE *stream)
+ {
+- if (operating_mode == byte_mode)
+- cut_bytes (stream);
++#if HAVE_MBRTOWC
++ if (MB_CUR_MAX > 1 && !force_singlebyte_mode)
++ {
++ switch (operating_mode)
++ {
++ case byte_mode:
++ if (byte_mode_character_aware)
++ cut_characters_or_cut_bytes_no_split (stream);
++ else
++ cut_bytes (stream);
++ break;
++
++ case character_mode:
++ cut_characters_or_cut_bytes_no_split (stream);
++ break;
++
++ case field_mode:
++ cut_fields_mb (stream);
++ break;
++
++ default:
++ abort ();
++ }
++ }
+ else
+- cut_fields (stream);
++#endif
++ {
++ if (operating_mode == field_mode)
++ cut_fields (stream);
++ else
++ cut_bytes (stream);
++ }
+ }
+
+ /* Process file FILE to standard output.
+@@ -748,6 +1066,8 @@
+ bool ok;
+ bool delim_specified = false;
+ char *spec_list_string IF_LINT(= NULL);
++ char mbdelim[MB_LEN_MAX + 1];
++ size_t delimlen = 0;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+@@ -770,7 +1090,6 @@
+ switch (optc)
+ {
+ case 'b':
+- case 'c':
+ /* Build the byte list. */
+ if (operating_mode != undefined_mode)
+ FATAL_ERROR (_("only one type of list may be specified"));
+@@ -778,6 +1097,14 @@
+ spec_list_string = optarg;
+ break;
+
++ case 'c':
++ /* Build the character list. */
++ if (operating_mode != undefined_mode)
++ FATAL_ERROR (_("only one type of list may be specified"));
++ operating_mode = character_mode;
++ spec_list_string = optarg;
++ break;
++
+ case 'f':
+ /* Build the field list. */
+ if (operating_mode != undefined_mode)
+@@ -789,10 +1116,35 @@
+ case 'd':
+ /* New delimiter. */
+ /* Interpret -d '' to mean `use the NUL byte as the delimiter.' */
+- if (optarg[0] != '\0' && optarg[1] != '\0')
+- FATAL_ERROR (_("the delimiter must be a single character"));
+- delim = optarg[0];
+- delim_specified = true;
++#if HAVE_MBRTOWC
++ {
++ if(MB_CUR_MAX > 1)
++ {
++ mbstate_t state;
++
++ memset (&state, '\0', sizeof(mbstate_t));
++ delimlen = mbrtowc (&wcdelim, optarg, strnlen(optarg, MB_LEN_MAX), &state);
++
++ if (delimlen == (size_t)-1 || delimlen == (size_t)-2)
++ ++force_singlebyte_mode;
++ else
++ {
++ delimlen = (delimlen < 1) ? 1 : delimlen;
++ if (wcdelim != L'\0' && *(optarg + delimlen) != '\0')
++ FATAL_ERROR (_("the delimiter must be a single character"));
++ memcpy (mbdelim, optarg, delimlen);
++ }
++ }
++
++ if (MB_CUR_MAX <= 1 || force_singlebyte_mode)
++#endif
++ {
++ if (optarg[0] != '\0' && optarg[1] != '\0')
++ FATAL_ERROR (_("the delimiter must be a single character"));
++ delim = (unsigned char) optarg[0];
++ }
++ delim_specified = true;
++ }
+ break;
+
+ case OUTPUT_DELIMITER_OPTION:
+@@ -805,6 +1157,7 @@
+ break;
+
+ case 'n':
++ byte_mode_character_aware = 1;
+ break;
+
+ case 's':
+@@ -827,7 +1180,7 @@
+ if (operating_mode == undefined_mode)
+ FATAL_ERROR (_("you must specify a list of bytes, characters, or fields"));
+
+- if (delim != '\0' && operating_mode != field_mode)
++ if (delim_specified && operating_mode != field_mode)
+ FATAL_ERROR (_("an input delimiter may be specified only\
+ when operating on fields"));
+
+@@ -854,15 +1207,34 @@
+ }
+
+ if (!delim_specified)
+- delim = '\t';
++ {
++ delim = '\t';
++#ifdef HAVE_MBRTOWC
++ wcdelim = L'\t';
++ mbdelim[0] = '\t';
++ mbdelim[1] = '\0';
++ delimlen = 1;
++#endif
++ }
+
+ if (output_delimiter_string == NULL)
+ {
+- static char dummy[2];
+- dummy[0] = delim;
+- dummy[1] = '\0';
+- output_delimiter_string = dummy;
+- output_delimiter_length = 1;
++#ifdef HAVE_MBRTOWC
++ if (MB_CUR_MAX > 1 && !force_singlebyte_mode)
++ {
++ output_delimiter_string = xstrdup(mbdelim);
++ output_delimiter_length = delimlen;
++ }
++
++ if (MB_CUR_MAX <= 1 || force_singlebyte_mode)
++#endif
++ {
++ static char dummy[2];
++ dummy[0] = delim;
++ dummy[1] = '\0';
++ output_delimiter_string = dummy;
++ output_delimiter_length = 1;
++ }
+ }
+
+ if (optind == argc)
diff --git a/meta/recipes-core/coreutils/coreutils-6.9/coreutils-ls-x.patch b/meta/recipes-core/coreutils/coreutils-6.9/coreutils-ls-x.patch
new file mode 100644
index 0000000000..2d61438209
--- /dev/null
+++ b/meta/recipes-core/coreutils/coreutils-6.9/coreutils-ls-x.patch
@@ -0,0 +1,115 @@
+This patch was imported from the Fedora Core 8 coreutils-6.9-9 package.
+
+The package is stated as being Licensed as GPLv2+.
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+--- coreutils-6.9/src/ls.c.ls-x 2007-06-13 14:27:36.000000000 +0100
++++ coreutils-6.9/src/ls.c 2007-06-13 14:28:42.000000000 +0100
+@@ -4151,16 +4151,16 @@
+ size_t pos = 0;
+ size_t cols = calculate_columns (false);
+ struct column_info const *line_fmt = &column_info[cols - 1];
+- size_t name_length = length_of_file_name_and_frills (cwd_file);
++ struct fileinfo const *f = sorted_file[0];
++ size_t name_length = length_of_file_name_and_frills (f);
+ size_t max_name_length = line_fmt->col_arr[0];
+
+ /* Print first entry. */
+- print_file_name_and_frills (cwd_file);
++ print_file_name_and_frills (f);
+
+ /* Now the rest. */
+ for (filesno = 1; filesno < cwd_n_used; ++filesno)
+ {
+- struct fileinfo const *f;
+ size_t col = filesno % cols;
+
+ if (col == 0)
+--- coreutils-6.9/tests/ls/Makefile.am.ls-x 2007-03-18 21:36:43.000000000 +0000
++++ coreutils-6.9/tests/ls/Makefile.am 2007-06-13 14:28:42.000000000 +0100
+@@ -24,7 +24,7 @@
+ stat-dtype \
+ inode dangle file-type recursive dired infloop \
+ rt-1 time-1 symlink-slash follow-slink no-arg m-option \
+- stat-vs-dirent
++ stat-vs-dirent x-option
+
+ EXTRA_DIST = $(TESTS)
+ TESTS_ENVIRONMENT = \
+--- /dev/null 2007-06-13 08:43:51.993263382 +0100
++++ coreutils-6.9/tests/ls/x-option 2007-06-13 14:28:42.000000000 +0100
+@@ -0,0 +1,59 @@
++#!/bin/sh
++# Exercise the -x option.
++
++# Copyright (C) 2007 Free Software Foundation, Inc.
++
++# This program 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.
++
++if test "$VERBOSE" = yes; then
++ set -x
++ ls --version
++fi
++
++. $srcdir/../envvar-check
++. $srcdir/../lang-default
++
++pwd=`pwd`
++t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
++trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
++trap '(exit $?); exit $?' 1 2 13 15
++
++framework_failure=0
++mkdir -p $tmp || framework_failure=1
++cd $tmp || framework_failure=1
++mkdir subdir || framework_failure=1
++touch subdir/b || framework_failure=1
++touch subdir/a || framework_failure=1
++
++if test $framework_failure = 1; then
++ echo "$0: failure in testing framework" 1>&2
++ (exit 1); exit 1
++fi
++
++fail=0
++
++# Coreutils 6.8 and 6.9 would output this in the wrong order.
++ls -x subdir > out || fail=1
++ls -rx subdir >> out || fail=1
++cat <<\EOF > exp || fail=1
++a b
++b a
++EOF
++
++cmp out exp || fail=1
++test $fail = 1 && diff out exp 2> /dev/null
++
++(exit $fail); exit $fail
+--- coreutils-6.9/NEWS.ls-x 2007-03-22 21:19:45.000000000 +0000
++++ coreutils-6.9/NEWS 2007-06-13 14:28:42.000000000 +0100
+@@ -13,6 +13,11 @@
+ Using pr -m -s (i.e. merging files, with TAB as the output separator)
+ no longer inserts extraneous spaces between output columns.
+
++** Bug fixes
++
++ ls -x DIR would sometimes output the wrong string in place of the
++ first entry. [introduced in coreutils-6.8]
++
+
+ * Noteworthy changes in release 6.8 (2007-02-24) [not-unstable]
+
diff --git a/meta/recipes-core/coreutils/coreutils-6.9/coreutils-overflow.patch b/meta/recipes-core/coreutils/coreutils-6.9/coreutils-overflow.patch
new file mode 100644
index 0000000000..d702757244
--- /dev/null
+++ b/meta/recipes-core/coreutils/coreutils-6.9/coreutils-overflow.patch
@@ -0,0 +1,17 @@
+This patch was imported from the Fedora Core 8 coreutils-6.9-9 package.
+
+The package is stated as being Licensed as GPLv2+.
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+--- coreutils-5.2.1/src/who.c.overflow 2005-05-25 09:59:06.000000000 +0100
++++ coreutils-5.2.1/src/who.c 2005-05-25 10:00:31.000000000 +0100
+@@ -75,7 +75,7 @@
+ # define NEW_TIME 0
+ #endif
+
+-#define IDLESTR_LEN 6
++#define IDLESTR_LEN 10
+
+ #if HAVE_STRUCT_XTMP_UT_PID
+ # define PIDSTR_DECL_AND_INIT(Var, Utmp_ent) \
diff --git a/meta/recipes-core/coreutils/coreutils_6.9.bb b/meta/recipes-core/coreutils/coreutils_6.9.bb
index 89f420a40b..60ea903432 100644
--- a/meta/recipes-core/coreutils/coreutils_6.9.bb
+++ b/meta/recipes-core/coreutils/coreutils_6.9.bb
@@ -16,6 +16,11 @@ inherit autotools gettext
SRC_URI = "http://ftp.gnu.org/gnu/coreutils/${BP}.tar.bz2 \
file://gnulib_m4.patch \
file://futimens.patch \
+ file://coreutils-ls-x.patch \
+ file://coreutils-6.9-cp-i-u.patch \
+ file://coreutils-i18n.patch \
+ file://coreutils-overflow.patch \
+ file://coreutils-fix-install.patch \
file://man-touch.patch"
# [ gets a special treatment and is not included in this
diff --git a/meta/recipes-core/coreutils/coreutils_8.5.bb b/meta/recipes-core/coreutils/coreutils_8.5.bb
deleted file mode 100644
index 3944e34314..0000000000
--- a/meta/recipes-core/coreutils/coreutils_8.5.bb
+++ /dev/null
@@ -1,73 +0,0 @@
-SUMMARY = "The basic file, shell and text manipulation utilities."
-DESCRIPTION = "The GNU Core Utilities provide the basic file, shell and text \
-manipulation utilities. These are the core utilities which are expected to exist on \
-every system."
-HOMEPAGE = "http://www.gnu.org/software/coreutils/"
-BUGTRACKER = "http://debbugs.gnu.org/coreutils"
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504\
- file://src/ls.c;startline=5;endline=16;md5=bb14ed3c4cda583abc85401304b5cd4e"
-PR = "r0"
-DEPENDS = "perl-native"
-
-inherit autotools gettext
-
-SRC_URI = "http://ftp.gnu.org/gnu/coreutils/${BP}.tar.gz"
-
-SRC_URI[md5sum] = "c1ffe586d001e87d66cd80c4536ee823"
-SRC_URI[sha256sum] = "dd243e2ac7d0ed203b170ecfb8299643779e7501fec2b45ae1cea8a450fa8ca0"
-
-# [ gets a special treatment and is not included in this
-bindir_progs = "base64 basename chcon cksum comm csplit cut dir dircolors dirname du \
- env expand expr factor fmt fold groups head hostid id install \
- join link logname md5sum mkfifo mktemp nice nl nohup nproc od paste pathchk \
- pinky pr printenv printf ptx readlink runcon seq sha1sum sha224sum sha256sum \
- sha384sum sha512sum shred shuf sort split stat stdbuf sum tac tail tee test timeout\
- tr truncate tsort tty unexpand uniq unlink uptime users vdir wc who whoami yes"
-
-# hostname gets a special treatment and is not included in this
-base_bindir_progs = "cat chgrp chmod chown cp date dd echo false kill ln ls mkdir \
- mknod mv pwd rm rmdir sleep stty sync touch true uname"
-
-sbindir_progs= "chroot"
-
-do_install_append() {
- for i in ${bindir_progs}; do mv ${D}${bindir}/$i ${D}${bindir}/$i.${PN}; done
-
- install -d ${D}${base_bindir}
- for i in ${base_bindir_progs}; do mv ${D}${bindir}/$i ${D}${base_bindir}/$i.${PN}; done
-
- install -d ${D}${sbindir}
- for i in ${sbindir_progs}; do mv ${D}${bindir}/$i ${D}${sbindir}/$i.${PN}; done
-
- # [ requires special handling because [.coreutils will cause the sed stuff
- # in update-alternatives to fail, therefore use lbracket - the name used
- # for the actual source file.
- mv ${D}${bindir}/[ ${D}${bindir}/lbracket.${PN}
-}
-
-pkg_postinst_${PN} () {
- for i in ${bindir_progs}; do update-alternatives --install ${bindir}/$i $i $i.${PN} 100; done
-
- for i in ${base_bindir_progs}; do update-alternatives --install ${base_bindir}/$i $i $i.${PN} 100; done
-
- for i in ${sbindir_progs}; do update-alternatives --install ${sbindir}/$i $i $i.${PN} 100; done
-
- # Special cases. [ needs to be treated separately.
- update-alternatives --install '${bindir}/[' '[' 'lbracket.${PN}' 100
-}
-
-pkg_prerm_${PN} () {
- for i in ${bindir_progs}; do update-alternatives --remove $i $i.${PN}; done
-
- for i in ${base_bindir_progs}; do update-alternatives --remove $i $i.${PN}; done
-
- for i in ${sbindir_progs}; do update-alternatives --remove $i $i.${PN}; done
-
- # The special cases
- update-alternatives --remove hostname hostname.${PN}
- update-alternatives --remove uptime uptime.${PN}
- update-alternatives --remove '[' 'lbracket.${PN}'
-}
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-core/coreutils/coreutils_8.9.bb b/meta/recipes-core/coreutils/coreutils_8.9.bb
new file mode 100644
index 0000000000..4b9a655e50
--- /dev/null
+++ b/meta/recipes-core/coreutils/coreutils_8.9.bb
@@ -0,0 +1,74 @@
+SUMMARY = "The basic file, shell and text manipulation utilities."
+DESCRIPTION = "The GNU Core Utilities provide the basic file, shell and text \
+manipulation utilities. These are the core utilities which are expected to exist on \
+every system."
+HOMEPAGE = "http://www.gnu.org/software/coreutils/"
+BUGTRACKER = "http://debbugs.gnu.org/coreutils"
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504\
+ file://src/ls.c;startline=5;endline=16;md5=e1a509558876db58fb6667ba140137ad"
+PR = "r0"
+DEPENDS = "perl-native gmp"
+DEPENDS_virtclass-native = "perl-native gmp-native"
+
+inherit autotools gettext
+
+SRC_URI = "http://ftp.gnu.org/gnu/coreutils/${BP}.tar.gz"
+
+SRC_URI[md5sum] = "36909ae68840d73a800120cf74af794a"
+SRC_URI[sha256sum] = "aa991fa4296b22ff929a31a5cb5528bb783c84cdef4503c4ff311cfbeaebf50a"
+
+# [ gets a special treatment and is not included in this
+bindir_progs = "base64 basename chcon cksum comm csplit cut dir dircolors dirname du \
+ env expand expr factor fmt fold groups head hostid id install \
+ join link logname md5sum mkfifo mktemp nice nl nohup nproc od paste pathchk \
+ pinky pr printenv printf ptx readlink runcon seq sha1sum sha224sum sha256sum \
+ sha384sum sha512sum shred shuf sort split stat stdbuf sum tac tail tee test timeout\
+ tr truncate tsort tty unexpand uniq unlink uptime users vdir wc who whoami yes"
+
+# hostname gets a special treatment and is not included in this
+base_bindir_progs = "cat chgrp chmod chown cp date dd echo false kill ln ls mkdir \
+ mknod mv pwd rm rmdir sleep stty sync touch true uname"
+
+sbindir_progs= "chroot"
+
+do_install_append() {
+ for i in ${bindir_progs}; do mv ${D}${bindir}/$i ${D}${bindir}/$i.${PN}; done
+
+ install -d ${D}${base_bindir}
+ for i in ${base_bindir_progs}; do mv ${D}${bindir}/$i ${D}${base_bindir}/$i.${PN}; done
+
+ install -d ${D}${sbindir}
+ for i in ${sbindir_progs}; do mv ${D}${bindir}/$i ${D}${sbindir}/$i.${PN}; done
+
+ # [ requires special handling because [.coreutils will cause the sed stuff
+ # in update-alternatives to fail, therefore use lbracket - the name used
+ # for the actual source file.
+ mv ${D}${bindir}/[ ${D}${bindir}/lbracket.${PN}
+}
+
+pkg_postinst_${PN} () {
+ for i in ${bindir_progs}; do update-alternatives --install ${bindir}/$i $i $i.${PN} 100; done
+
+ for i in ${base_bindir_progs}; do update-alternatives --install ${base_bindir}/$i $i $i.${PN} 100; done
+
+ for i in ${sbindir_progs}; do update-alternatives --install ${sbindir}/$i $i $i.${PN} 100; done
+
+ # Special cases. [ needs to be treated separately.
+ update-alternatives --install '${bindir}/[' '[' 'lbracket.${PN}' 100
+}
+
+pkg_prerm_${PN} () {
+ for i in ${bindir_progs}; do update-alternatives --remove $i $i.${PN}; done
+
+ for i in ${base_bindir_progs}; do update-alternatives --remove $i $i.${PN}; done
+
+ for i in ${sbindir_progs}; do update-alternatives --remove $i $i.${PN}; done
+
+ # The special cases
+ update-alternatives --remove hostname hostname.${PN}
+ update-alternatives --remove uptime uptime.${PN}
+ update-alternatives --remove '[' 'lbracket.${PN}'
+}
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-core/dbus-wait/dbus-wait_svn.bb b/meta/recipes-core/dbus-wait/dbus-wait_svn.bb
index 10e1db8123..9fa4c552d0 100644
--- a/meta/recipes-core/dbus-wait/dbus-wait_svn.bb
+++ b/meta/recipes-core/dbus-wait/dbus-wait_svn.bb
@@ -4,7 +4,7 @@ SECTION = "base"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
DEPENDS = "dbus"
-PV = "0.0+svnr${SRCREV}"
+PV = "0.0+svnr${SRCPV}"
PR = "r2"
SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=dbus-wait;proto=http"
diff --git a/meta/recipes-core/dbus/dbus-1.4.0/dbus-1.init b/meta/recipes-core/dbus/dbus-1.4.1/dbus-1.init
index 4abc4cbf73..4abc4cbf73 100644
--- a/meta/recipes-core/dbus/dbus-1.4.0/dbus-1.init
+++ b/meta/recipes-core/dbus/dbus-1.4.1/dbus-1.init
diff --git a/meta/recipes-core/dbus/dbus-1.4.0/tmpdir.patch b/meta/recipes-core/dbus/dbus-1.4.1/tmpdir.patch
index f5c22af129..f5c22af129 100644
--- a/meta/recipes-core/dbus/dbus-1.4.0/tmpdir.patch
+++ b/meta/recipes-core/dbus/dbus-1.4.1/tmpdir.patch
diff --git a/meta/recipes-core/dbus/dbus-glib-0.88/fix_asneeded.patch b/meta/recipes-core/dbus/dbus-glib-0.88/fix_asneeded.patch
deleted file mode 100644
index 3065557683..0000000000
--- a/meta/recipes-core/dbus/dbus-glib-0.88/fix_asneeded.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-# not sure the reason for changing link order. Disable it for now, but keep for a while
-#
-# comment added by Kevin Tian <kevin.tian@intel.com>, 2010-07-10
-
-Index: dbus-glib-0.82/dbus/Makefile.am
-===================================================================
---- dbus-glib-0.82.orig/dbus/Makefile.am 2009-07-16 15:54:44.000000000 +0100
-+++ dbus-glib-0.82/dbus/Makefile.am 2009-12-11 09:27:20.000000000 +0000
-@@ -105,7 +105,7 @@
-
- dbus_bash_completion_helper_SOURCES = \
- dbus-bash-completion-helper.c
--dbus_bash_completion_helper_LDADD=$(DBUS_LIBS) $(DBUS_GLIB_LIBS) $(builddir)/libdbus-gtool.la -lexpat $(builddir)/libdbus-glib-1.la
-+dbus_bash_completion_helper_LDADD=$(DBUS_LIBS) $(DBUS_GLIB_LIBS) $(builddir)/libdbus-gtool.la $(builddir)/libdbus-glib-1.la -lexpat
-
-
- EXTRA_DIST=dbus-gmarshal.list make-dbus-glib-error-switch.sh make-dbus-glib-error-enum.sh dbus-bash-completion.sh.in
diff --git a/meta/recipes-core/dbus/dbus-glib-0.88/no-examples.patch b/meta/recipes-core/dbus/dbus-glib-0.92/no-examples.patch
index 32609b9b9c..32609b9b9c 100644
--- a/meta/recipes-core/dbus/dbus-glib-0.88/no-examples.patch
+++ b/meta/recipes-core/dbus/dbus-glib-0.92/no-examples.patch
diff --git a/meta/recipes-core/dbus/dbus-glib.inc b/meta/recipes-core/dbus/dbus-glib.inc
index 7dee3ffb7b..22bf6274a7 100644
--- a/meta/recipes-core/dbus/dbus-glib.inc
+++ b/meta/recipes-core/dbus/dbus-glib.inc
@@ -1,10 +1,12 @@
SUMMARY = "High level language (GLib) binding for D-Bus"
-DESCRIPTION = "GLib bindings for the D-Bus message bus that integration the D-Bus library with the GLib thread abstraction and main loop."
+DESCRIPTION = "GLib bindings for the D-Bus message bus that integrate \
+the D-Bus library with the GLib thread abstraction and main loop."
HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
LICENSE = "AFL2.1 | GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=cf5b3a2f7083750d504333114e738656 \
file://dbus/dbus-glib.h;firstline=7;endline=21;md5=833ef01806b4c524fb3678a16300536f"
SECTION = "base"
+
DEPENDS = "expat glib-2.0 virtual/libintl dbus-glib-native dbus"
DEPENDS_virtclass-native = "glib-2.0-native dbus-native"
@@ -13,12 +15,12 @@ SRC_URI = "http://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-${PV}.tar.gz
inherit autotools pkgconfig gettext
-FILES_${PN} = "${libdir}/lib*.so.*"
-FILES_${PN}-dev += "${libdir}/dbus-1.0/include ${bindir}/dbus-glib-tool"
-FILES_${PN}-dev += "${bindir}/dbus-binding-tool"
-
EXTRA_OECONF = "--with-introspect-xml=${STAGING_DATADIR_NATIVE}/dbus/dbus-bus-introspect.xml \
--with-dbus-binding-tool=${STAGING_BINDIR_NATIVE}/dbus-binding-tool"
EXTRA_OECONF_virtclass-native = "--with-introspect-xml=${STAGING_DATADIR_NATIVE}/dbus/dbus-bus-introspect.xml"
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${libdir}/dbus-1.0/include ${bindir}/dbus-glib-tool"
+FILES_${PN}-dev += "${bindir}/dbus-binding-tool"
+
BBCLASSEXTEND = "native"
diff --git a/meta/recipes-core/dbus/dbus-glib_0.88.bb b/meta/recipes-core/dbus/dbus-glib_0.88.bb
deleted file mode 100644
index 64f083047c..0000000000
--- a/meta/recipes-core/dbus/dbus-glib_0.88.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require dbus-glib.inc
-
-PR = "r0"
-
-SRC_URI[md5sum] = "7c04ba01df6130c2c4e62f73bea0d0d5"
-SRC_URI[sha256sum] = "57939e2b567940beb23a52b5f3075743bd25ab203428e1c86f8c773330565737"
diff --git a/meta/recipes-core/dbus/dbus-glib_0.92.bb b/meta/recipes-core/dbus/dbus-glib_0.92.bb
new file mode 100644
index 0000000000..72bea89825
--- /dev/null
+++ b/meta/recipes-core/dbus/dbus-glib_0.92.bb
@@ -0,0 +1,6 @@
+require dbus-glib.inc
+
+PR = "r0"
+
+SRC_URI[md5sum] = "b595b36890c4f9f8f5d5dec131c495f8"
+SRC_URI[sha256sum] = "5a7fd4cf937cdcb7f2eed61341b70ee0f2607450a50db381618598adf60dd40e"
diff --git a/meta/recipes-core/dbus/dbus.inc b/meta/recipes-core/dbus/dbus.inc
index 402cf13442..da77819c3b 100644
--- a/meta/recipes-core/dbus/dbus.inc
+++ b/meta/recipes-core/dbus/dbus.inc
@@ -5,7 +5,8 @@ SECTION = "base"
LICENSE = "AFL2.1 | GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=10dded3b58148f3f1fd804b26354af3e \
file://dbus/dbus.h;firstline=6;endline=20;md5=6eea2e0c7750dd8e620dcb1437312fa5"
-DEPENDS = "expat glib-2.0 virtual/libintl virtual/libx11 libsm"
+DEPENDS = "expat virtual/libintl virtual/libx11 libsm"
+DEPENDS_virtclass-nativesdk = "expat virtual/libintl virtual/libx11"
SRC_URI = "http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \
file://tmpdir.patch; \
@@ -88,4 +89,4 @@ do_install_virtclass-native() {
# dbus-glib-native and dbus-glib need this xml file
./bus/dbus-daemon --introspect > ${STAGING_DATADIR_NATIVE}/dbus/dbus-bus-introspect.xml
}
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-core/dbus/dbus_1.4.0.bb b/meta/recipes-core/dbus/dbus_1.4.0.bb
deleted file mode 100644
index a6663362b3..0000000000
--- a/meta/recipes-core/dbus/dbus_1.4.0.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-include dbus.inc
-
-PR = "r0"
-
-SRC_URI[md5sum] = "f59618b18d2fb2bd1fce9e1c5a2a3282"
-SRC_URI[sha256sum] = "c96d2f86d40e158e2bf405925a0a42cce0533a8466098e2f2238aa1614926652"
diff --git a/meta/recipes-core/dbus/dbus_1.4.1.bb b/meta/recipes-core/dbus/dbus_1.4.1.bb
new file mode 100644
index 0000000000..7c5627bc4f
--- /dev/null
+++ b/meta/recipes-core/dbus/dbus_1.4.1.bb
@@ -0,0 +1,6 @@
+include dbus.inc
+
+PR = "r0"
+
+SRC_URI[md5sum] = "99cb057700c0455fb68f8d57902f77ac"
+SRC_URI[sha256sum] = "caa1a0ded2d0f2e95c1d4ec7e3c8bd44834928c5b0ed41a7189963f3593983bd"
diff --git a/meta/recipes-core/eglibc/cross-localedef-native_2.12.bb b/meta/recipes-core/eglibc/cross-localedef-native_2.12.bb
index e2247dc535..68ef86439d 100644
--- a/meta/recipes-core/eglibc/cross-localedef-native_2.12.bb
+++ b/meta/recipes-core/eglibc/cross-localedef-native_2.12.bb
@@ -4,6 +4,13 @@ SECTION = "libs"
PRIORITY = "required"
LICENSE = "LGPL"
+LIC_DIR = "${WORKDIR}/${EGLIBC_BRANCH}/libc"
+LIC_FILES_CHKSUM = "file://${LIC_DIR}/LICENSES;md5=07a394b26e0902b9ffdec03765209770 \
+ file://${LIC_DIR}/COPYING;md5=393a5ca445f6965873eca0259a17f833 \
+ file://${LIC_DIR}/posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \
+ file://${LIC_DIR}/COPYING.LIB;md5=bbb461211a33b134d42ed5ee802b37ff "
+
+
inherit native
inherit autotools
@@ -19,8 +26,8 @@ do_unpack_append() {
do_move_ports() {
if test -d ${WORKDIR}/${EGLIBC_BRANCH}/ports ; then
- rm -rf ${S}../libc/ports
- mv ${WORKDIR}/${EGLIBC_BRANCH}/ports ${S}/../libc/
+ rm -rf ${WORKDIR}/libc/ports
+ mv ${WORKDIR}/${EGLIBC_BRANCH}/ports ${WORKDIR}/libc/
fi
}
diff --git a/meta/recipes-core/eglibc/eglibc-initial.inc b/meta/recipes-core/eglibc/eglibc-initial.inc
index d49ec8a87e..ce85d99096 100644
--- a/meta/recipes-core/eglibc/eglibc-initial.inc
+++ b/meta/recipes-core/eglibc/eglibc-initial.inc
@@ -6,6 +6,9 @@ PROVIDES = "virtual/${TARGET_PREFIX}libc-initial"
PACKAGES = ""
PACKAGES_DYNAMIC = ""
+STAGINGCC = "gcc-cross-initial"
+STAGINGCC_virtclass-nativesdk = "gcc-crosssdk-initial"
+
do_configure () {
sed -ie 's,{ (exit 1); exit 1; }; },{ (exit 0); }; },g' ${S}/configure
chmod +x ${S}/configure
@@ -42,8 +45,15 @@ do_install () {
install -m 644 csu/crt[1in].o ${D}${libdir}
${CC} -nostdlib -nostartfiles -shared -x c /dev/null \
-o ${D}${libdir}/libc.so
+
+ # add links to linux-libc-headers: gcc-{cross,crossdk}-intermediate need this.
+ for t in linux asm asm-generic; do
+ ln -s ${STAGING_DIR_TARGET}${includedir}/$t ${D}${includedir}/
+ done
}
do_siteconfig () {
:
}
+
+do_populate_sysroot[sstate-outputdirs] = "${STAGING_DIR_TCBOOTSTRAP}"
diff --git a/meta/recipes-core/eglibc/eglibc-package.inc b/meta/recipes-core/eglibc/eglibc-package.inc
index 87c3393d00..01275aaf1b 100644
--- a/meta/recipes-core/eglibc/eglibc-package.inc
+++ b/meta/recipes-core/eglibc/eglibc-package.inc
@@ -37,12 +37,12 @@ USE_LDCONFIG ?= "1"
PKGSUFFIX = ""
PKGSUFFIX_virtclass-nativesdk = "-nativesdk"
-PACKAGES = "${PN}-dbg ${PN} catchsegv${PKGSUFFIX} sln${PKGSUFFIX} nscd${PKGSUFFIX} ldd${PKGSUFFIX} localedef${PKGSUFFIX} ${PN}-utils ${PN}-pic ${PN}-dev eglibc-doc eglibc-locale libcidn libmemusage libsegfault${PKGSUFFIX} eglibc-extra-nss eglibc-thread-db eglibc-pcprofile"
+PACKAGES = "${PN}-dbg ${PN} catchsegv${PKGSUFFIX} sln${PKGSUFFIX} nscd${PKGSUFFIX} ldd${PKGSUFFIX} localedef${PKGSUFFIX} ${PN}-utils ${PN}-pic ${PN}-dev eglibc-doc eglibc-locale libcidn libmemusage libsegfault${PKGSUFFIX} eglibc-extra-nss eglibc-thread-db${PKGSUFFIX} eglibc-pcprofile"
PACKAGES_DYNAMIC = " \
glibc-gconv-*${PKGSUFFIX} glibc-charmap-* glibc-localedata-* glibc-binary-localedata-* \
eglibc-gconv-* eglibc-charmap-* eglibc-localedata-* eglibc-binary-localedata-* \
- locale-base-*"
+ locale-base-*${PKGSUFFIX}"
RPROVIDES_eglibc = "glibc"
RPROVIDES_eglibc-utils = "glibc-utils"
@@ -56,7 +56,7 @@ RPROVIDES_eglibc-pcprofile = "glibc-pcprofile"
RPROVIDES_eglibc-dbg = "glibc-dbg"
libc_baselibs = "${base_libdir}/libcrypt*.so.* ${base_libdir}/libcrypt-*.so ${base_libdir}/libc*.so.* ${base_libdir}/libc*.so ${base_libdir}/libm*.so.* ${base_libdir}/libm-*.so ${base_libdir}/ld*.so.* ${base_libdir}/ld-*.so ${base_libdir}/libpthread*.so.* ${base_libdir}/libpthread-*.so ${base_libdir}/libresolv*.so.* ${base_libdir}/libresolv-*.so ${base_libdir}/librt*.so.* ${base_libdir}/librt-*.so ${base_libdir}/libutil*.so.* ${base_libdir}/libutil-*.so ${base_libdir}/libnsl*.so.* ${base_libdir}/libnsl-*.so ${base_libdir}/libnss_files*.so.* ${base_libdir}/libnss_files-*.so ${base_libdir}/libnss_compat*.so.* ${base_libdir}/libnss_compat-*.so ${base_libdir}/libnss_dns*.so.* ${base_libdir}/libnss_dns-*.so ${base_libdir}/libdl*.so.* ${base_libdir}/libdl-*.so ${base_libdir}/libanl*.so.* ${base_libdir}/libanl-*.so ${base_libdir}/libBrokenLocale*.so.* ${base_libdir}/libBrokenLocale-*.so"
-FILES_${PN} = "${sysconfdir} ${libc_baselibs} ${libexecdir}/* ${@base_conditional('USE_LDCONFIG', '1', '${base_sbindir}/ldconfig', '', d)}"
+FILES_${PN} = "${libc_baselibs} ${libexecdir}/* ${@base_conditional('USE_LDCONFIG', '1', '${base_sbindir}/ldconfig ${sysconfdir}/ld.so.conf', '', d)}"
FILES_ldd${PKGSUFFIX} = "${bindir}/ldd"
FILES_libsegfault${PKGSUFFIX} = "${base_libdir}/libSegFault*"
FILES_libcidn = "${base_libdir}/libcidn*.so"
@@ -73,7 +73,7 @@ FILES_${PN}-dbg += "${libexecdir}/*/.debug ${libdir}/gconv/.debug"
FILES_catchsegv${PKGSUFFIX} = "${bindir}/catchsegv"
RDEPENDS_catchsegv${PKGSUFFIX} = "libsegfault"
FILES_eglibc-pcprofile = "${base_libdir}/libpcprofile.so"
-FILES_eglibc-thread-db = "${base_libdir}/libthread_db*"
+FILES_eglibc-thread-db${PKGSUFFIX} = "${base_libdir}/libthread_db*"
FILES_localedef${PKGSUFFIX} = "${bindir}/localedef"
RPROVIDES_eglibc-dev += "libc-dev"
diff --git a/meta/recipes-core/eglibc/eglibc.inc b/meta/recipes-core/eglibc/eglibc.inc
index 4698254932..8314cb1548 100644
--- a/meta/recipes-core/eglibc/eglibc.inc
+++ b/meta/recipes-core/eglibc/eglibc.inc
@@ -1,5 +1,24 @@
require eglibc-common.inc
+STAGINGCC = "gcc-cross-intermediate"
+STAGINGCC_virtclass-nativesdk = "gcc-crosssdk-intermediate"
+PATH_prepend = "${STAGING_BINDIR_TOOLCHAIN}.${STAGINGCC}:"
+
+TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_TCBOOTSTRAP}"
+
+# siteconfig.bbclass runs configure which needs a working compiler
+# For the compiler to work we need a working libc yet libc isn't
+# in the sysroots directory at this point. This means the libc.so
+# linker script won't work as the --sysroot setting isn't correct.
+# Here we create a hacked up libc linker script and pass in the right
+# flags to let configure work. Ugly.
+EXTRASITECONFIG = "CFLAGS='${CFLAGS} -Wl,-L${WORKDIR}/site_config_libc -L${WORKDIR}/site_config_libc -L${SYSROOT_DESTDIR}${libdir} -L${SYSROOT_DESTDIR}${base_libdir} -Wl,-L${SYSROOT_DESTDIR}${libdir} -Wl,-L${SYSROOT_DESTDIR}${base_libdir}'"
+siteconfig_do_siteconfig_gencache_prepend = " \
+ mkdir -p ${WORKDIR}/site_config_libc; \
+ cp ${SYSROOT_DESTDIR}${libdir}/libc.so ${WORKDIR}/site_config_libc; \
+ sed -i -e 's# ${base_libdir}# ${SYSROOT_DESTDIR}${base_libdir}#g' -e 's# ${libdir}# ${SYSROOT_DESTDIR}${libdir}#g' ${WORKDIR}/site_config_libc/libc.so; \
+"
+
# nptl needs unwind support in gcc, which can't be built without glibc.
DEPENDS = "virtual/${TARGET_PREFIX}gcc-intermediate linux-libc-headers"
#this leads to circular deps, so lets not add it yet
diff --git a/meta/recipes-core/eglibc/eglibc_2.12.bb b/meta/recipes-core/eglibc/eglibc_2.12.bb
index 3d0dc7387a..c773af0efa 100644
--- a/meta/recipes-core/eglibc/eglibc_2.12.bb
+++ b/meta/recipes-core/eglibc/eglibc_2.12.bb
@@ -2,7 +2,7 @@ require eglibc.inc
DEPENDS += "gperf-native"
FILESPATHPKG =. "eglibc-svn:"
-PR = "r12"
+PR = "r13"
EGLIBC_BRANCH="eglibc-2_12"
SRC_URI = "svn://www.eglibc.org/svn/branches/;module=${EGLIBC_BRANCH};proto=http \
diff --git a/meta/recipes-core/gettext/gettext_0.14.1.bb b/meta/recipes-core/gettext/gettext_0.14.1.bb
index a2de018281..ad5121736e 100644
--- a/meta/recipes-core/gettext/gettext_0.14.1.bb
+++ b/meta/recipes-core/gettext/gettext_0.14.1.bb
@@ -2,6 +2,8 @@ DESCRIPTION = "The GNU internationalization library."
HOMEPAGE = "http://www.gnu.org/software/gettext/gettext.html"
SECTION = "libs"
LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
+
PR = "r11"
DEPENDS = "virtual/libiconv"
DEPENDS_virtclass-native = ""
@@ -9,9 +11,9 @@ PROVIDES = "virtual/libintl"
PROVIDES_virtclass-native = ""
SRC_URI = "${GNU_MIRROR}/gettext/gettext-${PV}.tar.gz \
- file://gettext-vpath.patch \
- file://fixchicken.patch \
- file://linklib_from_0.17.patch \
+ file://gettext-vpath.patch \
+ file://fixchicken.patch \
+ file://linklib_from_0.17.patch \
file://getline.m4.patch \
file://disable_java.patch"
@@ -20,14 +22,17 @@ SRC_URI = "${GNU_MIRROR}/gettext/gettext-${PV}.tar.gz \
SRC_URI_append_linux-uclibc = " file://gettext-error_print_progname.patch"
SRC_URI_append_linux-uclibceabi = " file://gettext-error_print_progname.patch"
+SRC_URI[md5sum] = "78f4b862510beb2e5d43223dd610e77d"
+SRC_URI[sha256sum] = "41f20c469c7759acb34cfa7e0b3cac9096d59a58ad800e471f07424a8e7adbb7"
+
PARALLEL_MAKE = ""
inherit autotools
EXTRA_OECONF += "--without-lisp --disable-csharp"
acpaths = '-I ${S}/autoconf-lib-link/m4/ \
- -I ${S}/gettext-runtime/m4 \
- -I ${S}/gettext-tools/m4'
+ -I ${S}/gettext-runtime/m4 \
+ -I ${S}/gettext-tools/m4'
do_configure_prepend() {
rm -f ${S}/config/m4/libtool.m4
@@ -46,7 +51,3 @@ do_configure_prepend() {
PACKAGES =+ "libgettextlib libgettextsrc"
FILES_libgettextlib = "${libdir}/libgettextlib-*.so*"
FILES_libgettextsrc = "${libdir}/libgettextsrc-*.so*"
-
-
-SRC_URI[md5sum] = "78f4b862510beb2e5d43223dd610e77d"
-SRC_URI[sha256sum] = "41f20c469c7759acb34cfa7e0b3cac9096d59a58ad800e471f07424a8e7adbb7"
diff --git a/meta/recipes-core/gettext/gettext_0.17.bb b/meta/recipes-core/gettext/gettext_0.17.bb
index 7a936ea914..54a58377a0 100644
--- a/meta/recipes-core/gettext/gettext_0.17.bb
+++ b/meta/recipes-core/gettext/gettext_0.17.bb
@@ -3,6 +3,8 @@ DESCRIPTION = "Gettext offers to programmers, translators, and even users, a wel
HOMEPAGE = "http://www.gnu.org/software/gettext/gettext.html"
SECTION = "libs"
LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
PR = "r5"
DEPENDS = "gettext-native virtual/libiconv ncurses expat"
DEPENDS_virtclass-native = ""
@@ -10,33 +12,36 @@ PROVIDES = "virtual/libintl"
PROVIDES_virtclass-native = ""
SRC_URI = "${GNU_MIRROR}/gettext/gettext-${PV}.tar.gz \
- file://autotools.patch;patch=1 \
- file://wchar-uclibc.patch;patch=1 \
- file://use_open_properly.patch;patch=1 \
+ file://autotools.patch;patch=1 \
+ file://wchar-uclibc.patch;patch=1 \
+ file://use_open_properly.patch;patch=1 \
file://m4fix.patch;patch=1 \
- "
+ "
SRC_URI_append_linux-uclibc = " file://gettext-error_print_progname.patch;patch=1"
SRC_URI_append_linux-uclibcgnueabi = " file://gettext-error_print_progname.patch;patch=1"
+SRC_URI[md5sum] = "58a2bc6d39c0ba57823034d55d65d606"
+SRC_URI[sha256sum] = "209638bb8e162f22c281145a34e220c66f1f6e9ff5e4c50c6f2ef2ded59537ba"
+
PARALLEL_MAKE = ""
inherit autotools
EXTRA_OECONF += "--without-lispdir \
- --disable-csharp \
- --disable-libasprintf \
- --disable-java \
- --disable-native-java \
- --disable-openmp \
- --with-included-glib \
- --with-libncurses-prefix=${STAGING_LIBDIR}/.. \
- --without-emacs \
- "
+ --disable-csharp \
+ --disable-libasprintf \
+ --disable-java \
+ --disable-native-java \
+ --disable-openmp \
+ --with-included-glib \
+ --with-libncurses-prefix=${STAGING_LIBDIR}/.. \
+ --without-emacs \
+ "
acpaths = '-I ${S}/autoconf-lib-link/m4/ \
- -I ${S}/gettext-runtime/m4 \
- -I ${S}/gettext-tools/m4'
+ -I ${S}/gettext-runtime/m4 \
+ -I ${S}/gettext-tools/m4'
# these lack the .x behind the .so, but shouldn't be in the -dev package
diff --git a/meta/recipes-core/glib-2.0/glib-2.0-2.27.3/configure-libtool.patch b/meta/recipes-core/glib-2.0/glib-2.0-2.27.3/configure-libtool.patch
deleted file mode 100644
index a5dd4f249e..0000000000
--- a/meta/recipes-core/glib-2.0/glib-2.0-2.27.3/configure-libtool.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-# Poky renames libtool to $host_alias-libtool.
-# ./$host_alias-libtool isn't created until after configure runs with libtool >= 2.2.2
-# so we can't call # it at this point. We can safely assume a version is available
-# from PATH though
-# Rebased to glib-2.27.3 by Dongxiao Xu <dongxiao.xu@intel.com>
-
-diff -ruN glib-2.27.3-orig/configure.ac glib-2.27.3/configure.ac
---- glib-2.27.3-orig/configure.ac 2010-11-03 11:02:05.000000000 +0800
-+++ glib-2.27.3/configure.ac 2010-11-16 12:38:12.610485990 +0800
-@@ -1385,7 +1385,7 @@
- G_MODULE_LDFLAGS=
- else
- export SED
-- G_MODULE_LDFLAGS=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
-+ G_MODULE_LDFLAGS=`($host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
- fi
- dnl G_MODULE_IMPL= don't reset, so cmd-line can override
- G_MODULE_NEED_USCORE=0
-@@ -1450,7 +1450,7 @@
- LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
- dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness
- echo "void glib_plugin_test(void) { }" > plugin.c
-- ${SHELL} ./libtool --mode=compile ${CC} -shared \
-+ ${SHELL} $host_alias-libtool --mode=compile ${CC} -shared \
- -export-dynamic -o plugin.o plugin.c 2>&1 >/dev/null
- AC_CACHE_CHECK([for RTLD_GLOBAL brokenness],
- glib_cv_rtldglobal_broken,[
-@@ -1524,7 +1524,7 @@
-
- AC_MSG_CHECKING(for the suffix of module shared libraries)
- export SED
--shrext_cmds=`./libtool --config | grep '^shrext_cmds='`
-+shrext_cmds=`$host_alias-libtool --config | grep '^shrext_cmds='`
- eval $shrext_cmds
- module=yes eval std_shrext=$shrext_cmds
- # chop the initial dot
diff --git a/meta/recipes-core/glib-2.0/glib-2.0-2.27.3/60_wait-longer-for-threads-to-die.patch b/meta/recipes-core/glib-2.0/glib-2.0/60_wait-longer-for-threads-to-die.patch
index 8195bd4922..8195bd4922 100644
--- a/meta/recipes-core/glib-2.0/glib-2.0-2.27.3/60_wait-longer-for-threads-to-die.patch
+++ b/meta/recipes-core/glib-2.0/glib-2.0/60_wait-longer-for-threads-to-die.patch
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/configure-libtool.patch b/meta/recipes-core/glib-2.0/glib-2.0/configure-libtool.patch
new file mode 100644
index 0000000000..7c170be60f
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/configure-libtool.patch
@@ -0,0 +1,36 @@
+# Poky renames libtool to $host_alias-libtool.
+# ./$host_alias-libtool isn't created until after configure runs with libtool >= 2.2.2
+# so we can't call # it at this point. We can safely assume a version is available
+# from PATH though
+# Rebased to glib-2.27.3 by Dongxiao Xu <dongxiao.xu@intel.com>
+
+diff -ruN glib-2.27.3-orig/configure.ac glib-2.27.3/configure.ac
+--- glib-2.27.3-orig/configure.ac 2010-11-03 11:02:05.000000000 +0800
++++ glib-2.27.3/configure.ac 2010-11-16 12:38:12.610485990 +0800
+@@ -1385,7 +1385,7 @@
+ G_MODULE_LDFLAGS=
+ else
+ export SED
+- G_MODULE_LDFLAGS=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++ G_MODULE_LDFLAGS=`(./$host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ fi
+ dnl G_MODULE_IMPL= don't reset, so cmd-line can override
+ G_MODULE_NEED_USCORE=0
+@@ -1450,7 +1450,7 @@
+ LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
+ dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness
+ echo "void glib_plugin_test(void) { }" > plugin.c
+- ${SHELL} ./libtool --mode=compile ${CC} -shared \
++ ${SHELL} ./$host_alias-libtool --mode=compile ${CC} -shared \
+ -export-dynamic -o plugin.o plugin.c 2>&1 >/dev/null
+ AC_CACHE_CHECK([for RTLD_GLOBAL brokenness],
+ glib_cv_rtldglobal_broken,[
+@@ -1524,7 +1524,7 @@
+
+ AC_MSG_CHECKING(for the suffix of module shared libraries)
+ export SED
+-shrext_cmds=`./libtool --config | grep '^shrext_cmds='`
++shrext_cmds=`./$host_alias-libtool --config | grep '^shrext_cmds='`
+ eval $shrext_cmds
+ module=yes eval std_shrext=$shrext_cmds
+ # chop the initial dot
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/g_once_init_enter.patch b/meta/recipes-core/glib-2.0/glib-2.0/g_once_init_enter.patch
new file mode 100644
index 0000000000..a2a506c2ad
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/g_once_init_enter.patch
@@ -0,0 +1,22 @@
+fix g_once_init_enter compile failure
+
+Kernelshark trips over a compile bug in glib-2.0 addressed by Open Embedded
+back in the 2.22 timeframe. It appears to still be present in 2.27.
+
+http://www.mail-archive.com/openembedded-devel@lists.openembedded.org/msg005
+
+Signed-off-by: Darren Hart <dvhart@linux.intel.com>
+
+Index: glib-2.27.5/glib/gthread.h
+===================================================================
+--- glib-2.27.5.orig/glib/gthread.h
++++ glib-2.27.5/glib/gthread.h
+@@ -344,7 +344,7 @@ void g_once_init_leav
+ G_INLINE_FUNC gboolean
+ g_once_init_enter (volatile gsize *value_location)
+ {
+- if G_LIKELY ((gpointer) g_atomic_pointer_get (value_location) != NULL)
++ if G_LIKELY ((gpointer) g_atomic_pointer_get ((volatile gpointer *)value_location) != NULL)
+ return FALSE;
+ else
+ return g_once_init_enter_impl (value_location);
diff --git a/meta/recipes-core/glib-2.0/glib-2.0-2.27.3/glib-gettextize-dir.patch b/meta/recipes-core/glib-2.0/glib-2.0/glib-gettextize-dir.patch
index e54a8e5106..e54a8e5106 100644
--- a/meta/recipes-core/glib-2.0/glib-2.0-2.27.3/glib-gettextize-dir.patch
+++ b/meta/recipes-core/glib-2.0/glib-2.0/glib-gettextize-dir.patch
diff --git a/meta/recipes-core/glib-2.0/glib-2.0_2.26.1.bb b/meta/recipes-core/glib-2.0/glib-2.0_2.26.1.bb
new file mode 100644
index 0000000000..eace71a731
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0_2.26.1.bb
@@ -0,0 +1,16 @@
+require glib.inc
+
+PE = "1"
+PR = "r0"
+
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/glib/2.26/glib-${PV}.tar.bz2 \
+ file://configure-libtool.patch \
+ file://60_wait-longer-for-threads-to-die.patch \
+ file://g_once_init_enter.patch \
+ "
+
+SRC_URI[md5sum] = "17535accceef55bcb17a74d73f9c2aef"
+SRC_URI[sha256sum] = "7a74ff12b6b9dee1f2d0e520b56b68b621920c4f4250bdf23468e515625c28d5"
+
+SRC_URI_append_virtclass-native = " file://glib-gettextize-dir.patch"
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-core/glib-2.0/glib-2.0_2.27.3.bb b/meta/recipes-core/glib-2.0/glib-2.0_2.27.3.bb
deleted file mode 100644
index 30e208afce..0000000000
--- a/meta/recipes-core/glib-2.0/glib-2.0_2.27.3.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require glib.inc
-
-PR = "r0"
-
-SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/glib/2.27/glib-${PV}.tar.bz2 \
- file://configure-libtool.patch \
- file://60_wait-longer-for-threads-to-die.patch"
-
-SRC_URI[md5sum] = "d3e976ff92b55b6064a0eb3110f36158"
-SRC_URI[sha256sum] = "c44177b635e88639361eb1daf7aaa33315a00aaf46db5accf2f11920c7ff1919"
-
-SRC_URI_append_virtclass-native = " file://glib-gettextize-dir.patch"
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-core/glib-2.0/glib-2.0_2.27.5.bb b/meta/recipes-core/glib-2.0/glib-2.0_2.27.5.bb
new file mode 100644
index 0000000000..d3c8eee71c
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0_2.27.5.bb
@@ -0,0 +1,18 @@
+require glib.inc
+
+PR = "r3"
+
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/glib/2.27/glib-${PV}.tar.bz2 \
+ file://configure-libtool.patch \
+ file://60_wait-longer-for-threads-to-die.patch \
+ file://g_once_init_enter.patch \
+ "
+
+SRC_URI[md5sum] = "b7025b581bf78fcd656117bfc113f21f"
+SRC_URI[sha256sum] = "aad3038db865b762e01b1dc455ffd601b4083c069018d290e5fdfe1a61d328dc"
+
+SRC_URI_append_virtclass-native = " file://glib-gettextize-dir.patch"
+
+BBCLASSEXTEND = "native nativesdk"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/meta/recipes-core/glib-2.0/glib.inc b/meta/recipes-core/glib-2.0/glib.inc
index b0df84eca0..0319b9d04c 100644
--- a/meta/recipes-core/glib-2.0/glib.inc
+++ b/meta/recipes-core/glib-2.0/glib.inc
@@ -15,8 +15,9 @@ SECTION = "libs"
require glib-2.0.inc
-DEPENDS = "glib-2.0-native gtk-doc-native virtual/libiconv virtual/libintl zip"
-DEPENDS_virtclass-native = "gtk-doc-native pkgconfig-native gettext-native"
+DEPENDS = "glib-2.0-native gtk-doc-native virtual/libiconv virtual/libintl zip dbus"
+DEPENDS_virtclass-native = "gtk-doc-native pkgconfig-native gettext-native dbus-native"
+DEPENDS_virtclass-nativesdk = "libtool-nativesdk"
PACKAGES =+ "glib-2.0-utils "
LEAD_SONAME = "libglib-2.0.*"
@@ -28,6 +29,7 @@ S = "${WORKDIR}/glib-${PV}"
EXTRA_OECONF = "--disable-debug --enable-included-printf=no"
EXTRA_OECONF_virtclass-native = ""
+EXTRA_OECONF_poky-lsb = "--enable-included-printf=no"
FILES_${PN} = "${libdir}/lib*${SOLIBS}"
FILES_${PN}-dev += "${libdir}/glib-2.0/include"
diff --git a/meta/recipes-core/glibc/glibc-initial.inc b/meta/recipes-core/glibc/glibc-initial.inc
index ec10699190..3745955f60 100644
--- a/meta/recipes-core/glibc/glibc-initial.inc
+++ b/meta/recipes-core/glibc/glibc-initial.inc
@@ -6,6 +6,9 @@ FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/glibc-${PV}', '${FILE_DIRN
PACKAGES = ""
PACKAGES_DYNAMIC = ""
+STAGINGCC = "gcc-cross-initial"
+STAGINGCC_virtclass-nativesdk = "gcc-crosssdk-initial"
+
do_configure () {
sed -ie 's,{ (exit 1); exit 1; }; },{ (exit 0); }; },g' ${S}/configure
chmod +x ${S}/configure
@@ -50,8 +53,15 @@ do_install () {
install -m 644 csu/crt[1in].o ${D}${libdir}
${CC} -nostdlib -nostartfiles -shared -x c /dev/null \
-o ${D}${libdir}/libc.so
+
+ # add links to linux-libc-headers: gcc-{cross,crossdk}-intermediate need this.
+ for t in linux asm asm-generic; do
+ ln -s ${STAGING_DIR_TARGET}${includedir}/$t ${D}${includedir}/
+ done
}
do_siteconfig () {
:
}
+
+do_populate_sysroot[sstate-outputdirs] = "${STAGING_DIR_TCBOOTSTRAP}"
diff --git a/meta/recipes-core/glibc/glibc.inc b/meta/recipes-core/glibc/glibc.inc
index ecaf593b22..127ae231d7 100644
--- a/meta/recipes-core/glibc/glibc.inc
+++ b/meta/recipes-core/glibc/glibc.inc
@@ -13,10 +13,29 @@ DEPENDS = "virtual/${TARGET_PREFIX}gcc-intermediate linux-libc-headers"
RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
#this leads to circular deps, so lets not add it yet
#RDEPENDS_ldd += " bash"
-#RDEPENDS += "${@['','libgcc']['nptl' in '${GLIBC_ADDONS}']}"
+#RDEPENDS_${PN} += "${@['','libgcc']['nptl' in '${GLIBC_ADDONS}']}"
PROVIDES = "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc"
PROVIDES += "virtual/libintl virtual/libiconv"
+STAGINGCC = "gcc-cross-intermediate"
+STAGINGCC_virtclass-nativesdk = "gcc-crosssdk-intermediate"
+PATH_prepend = "${STAGING_BINDIR_TOOLCHAIN}.${STAGINGCC}:"
+
+TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_TCBOOTSTRAP}"
+
+# siteconfig.bbclass runs configure which needs a working compiler
+# For the compiler to work we need a working libc yet libc isn't
+# in the sysroots directory at this point. This means the libc.so
+# linker script won't work as the --sysroot setting isn't correct.
+# Here we create a hacked up libc linker script and pass in the right
+# flags to let configure work. Ugly.
+EXTRASITECONFIG = "CFLAGS='${CFLAGS} -Wl,-L${WORKDIR}/site_config_libc -L${WORKDIR}/site_config_libc -L${SYSROOT_DESTDIR}${libdir} -L${SYSROOT_DESTDIR}${base_libdir} -Wl,-L${SYSROOT_DESTDIR}${libdir} -Wl,-L${SYSROOT_DESTDIR}${base_libdir}'"
+siteconfig_do_siteconfig_gencache_prepend = " \
+ mkdir -p ${WORKDIR}/site_config_libc; \
+ cp ${SYSROOT_DESTDIR}${libdir}/libc.so ${WORKDIR}/site_config_libc; \
+ sed -i -e 's# ${base_libdir}# ${SYSROOT_DESTDIR}${base_libdir}#g' -e 's# ${libdir}# ${SYSROOT_DESTDIR}${libdir}#g' ${WORKDIR}/site_config_libc/libc.so; \
+"
+
inherit autotools
GLIBC_EXTRA_OECONF ?= ""
diff --git a/meta/recipes-core/glibc/ldconfig-native_2.5.bb b/meta/recipes-core/glibc/ldconfig-native_2.5.bb
index 4eb37a6e76..39c8ce35e5 100644
--- a/meta/recipes-core/glibc/ldconfig-native_2.5.bb
+++ b/meta/recipes-core/glibc/ldconfig-native_2.5.bb
@@ -2,6 +2,8 @@ DESCRIPTION = "A standalone native ldconfig build"
LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://${S}/ldconfig.c;endline=16;md5=8b3df71ec5b0feeeeab79025096aa92c"
+
SRC_URI = "file://ldconfig-native-2.5.tar.bz2 \
file://ldconfig.patch;patch=1 \
file://32and64bit.patch;patch=1"
diff --git a/meta/recipes-core/images/poky-image-live.inc b/meta/recipes-core/images/poky-image-live.inc
index 7f8dd8fba5..4743d92916 100644
--- a/meta/recipes-core/images/poky-image-live.inc
+++ b/meta/recipes-core/images/poky-image-live.inc
@@ -5,6 +5,9 @@ TIMEOUT = "10"
EXCLUDE_FROM_WORLD = "1"
+LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
+ file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
do_bootimg[depends] += "poky-image-minimal-initramfs:do_rootfs"
inherit bootimg
diff --git a/meta/recipes-core/images/poky-image-minimal-dev.bb b/meta/recipes-core/images/poky-image-minimal-dev.bb
new file mode 100644
index 0000000000..c64b657204
--- /dev/null
+++ b/meta/recipes-core/images/poky-image-minimal-dev.bb
@@ -0,0 +1,15 @@
+#
+# Copyright (C) 2007 OpenedHand Ltd.
+#
+IMAGE_INSTALL = "task-poky-boot ${ROOTFS_PKGMANAGE}"
+
+IMAGE_FEATURES += "dev-pkgs"
+
+IMAGE_LINGUAS = " "
+
+LICENSE = "MIT"
+
+inherit poky-image
+
+# remove not needed ipkg informations
+ROOTFS_POSTPROCESS_COMMAND += "remove_packaging_data_files ; "
diff --git a/meta/recipes-core/images/poky-image-minimal.bb b/meta/recipes-core/images/poky-image-minimal.bb
index 48136ed0f1..6a641f3b84 100644
--- a/meta/recipes-core/images/poky-image-minimal.bb
+++ b/meta/recipes-core/images/poky-image-minimal.bb
@@ -1,7 +1,7 @@
#
# Copyright (C) 2007 OpenedHand Ltd.
#
-IMAGE_INSTALL = "task-poky-boot ${ROOTFS_PKGMANAGE}"
+IMAGE_INSTALL = "task-poky-boot ${ROOTFS_PKGMANAGE_BOOTSTRAP}"
IMAGE_LINGUAS = " "
diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh b/meta/recipes-core/initrdscripts/files/init-live.sh
index c96b1f47c3..f3e514544f 100644
--- a/meta/recipes-core/initrdscripts/files/init-live.sh
+++ b/meta/recipes-core/initrdscripts/files/init-live.sh
@@ -11,6 +11,7 @@ early_setup() {
mount -t proc proc /proc
mount -t sysfs sysfs /sys
udevd --daemon
+ /sbin/udevadm trigger --action=add
}
read_args() {
diff --git a/meta/recipes-core/initscripts/initscripts_1.0.bb b/meta/recipes-core/initscripts/initscripts_1.0.bb
index 758c607c8d..1d2509e68b 100644
--- a/meta/recipes-core/initscripts/initscripts_1.0.bb
+++ b/meta/recipes-core/initscripts/initscripts_1.0.bb
@@ -3,10 +3,10 @@ DESCRIPTION = "Initscripts provide the basic system startup initialization scrip
SECTION = "base"
PRIORITY = "required"
DEPENDS = "makedevs"
-RDEPENDS = "makedevs"
+RDEPENDS_${PN} = "makedevs"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-PR = "r122"
+PR = "r123"
SRC_URI = "file://functions \
file://halt \
diff --git a/meta/recipes-core/libxml/libxml2.inc b/meta/recipes-core/libxml/libxml2.inc
index 748a7fb241..ba6db8f2c0 100644
--- a/meta/recipes-core/libxml/libxml2.inc
+++ b/meta/recipes-core/libxml/libxml2.inc
@@ -21,6 +21,7 @@ inherit autotools pkgconfig binconfig
EXTRA_OECONF = "--without-python --without-debug --without-legacy --without-catalog --without-docbook --with-c14n"
EXTRA_OECONF_virtclass-native = "--with-python=${STAGING_BINDIR}/python --without-legacy --with-catalog --without-docbook --with-c14n"
+EXTRA_OECONF_poky-lsb = "--without-python --with-debug --with-legacy --with-catalog --with-docbook --with-c14n"
# required for pythong binding
export HOST_SYS
diff --git a/meta/recipes-core/libxml/libxml2_2.7.7.bb b/meta/recipes-core/libxml/libxml2_2.7.7.bb
index 9615a7fb06..91f4ceb94e 100644
--- a/meta/recipes-core/libxml/libxml2_2.7.7.bb
+++ b/meta/recipes-core/libxml/libxml2_2.7.7.bb
@@ -1,6 +1,6 @@
require libxml2.inc
-PR = "r2"
+PR = "r4"
SRC_URI[md5sum] = "9abc9959823ca9ff904f1fbcf21df066"
SRC_URI[sha256sum] = "af5b781418ba4fff556fa43c50086658ea8a2f31909c2b625c2ce913a1d9eb68"
diff --git a/meta/recipes-core/meta/external-python-tarball.bb b/meta/recipes-core/meta/external-python-tarball.bb
index 494b21c20e..746cb9e6fe 100644
--- a/meta/recipes-core/meta/external-python-tarball.bb
+++ b/meta/recipes-core/meta/external-python-tarball.bb
@@ -1,5 +1,8 @@
DESCRIPTION = "Meta package for building a standalone python tarball"
LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
+ file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
DEPENDS = "opkg-native opkg-utils-native virtual/fakeroot-native sed-native"
inherit meta
@@ -23,6 +26,7 @@ TOOLCHAIN_HOST_TASK ?= "\
python-nativesdk-fcntl \
python-nativesdk-shell \
python-nativesdk-misc \
+ python-nativesdk-multiprocessing \
python-nativesdk-subprocess \
python-nativesdk-xmlrpc \
python-nativesdk-netclient \
diff --git a/meta/recipes-core/meta/meta-environment.bb b/meta/recipes-core/meta/meta-environment.bb
new file mode 100644
index 0000000000..4ba919f7fe
--- /dev/null
+++ b/meta/recipes-core/meta/meta-environment.bb
@@ -0,0 +1,61 @@
+DESCRIPTION = "Package of environment files for SDK"
+LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
+ file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+LICENSE = "MIT"
+PR = "r1"
+
+EXCLUDE_FROM_WORLD = "1"
+
+inherit toolchain-scripts
+# get target config site before inheritting cross-canadian
+TARGET_CONFIG_SITE := "${@siteinfo_get_files(d)}"
+
+SDK_DIR = "${WORKDIR}/sdk"
+SDK_OUTPUT = "${SDK_DIR}/image"
+SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${TARGET_SYS}"
+
+inherit cross-canadian
+
+do_generate_content[nostamp] = "1"
+do_generate_content() {
+
+ rm -rf ${SDK_OUTPUT}
+ mkdir -p ${SDK_OUTPUT}/${SDKPATH}
+
+ siteconfig=${SDK_OUTPUT}/${SDKPATH}/site-config-${OLD_MULTIMACH_TARGET_SYS}
+
+ touch $siteconfig
+ for sitefile in ${TARGET_CONFIG_SITE} ; do
+ cat $sitefile >> $siteconfig
+ done
+
+ toolchain_create_sdk_env_script_for_installer
+
+ # Add version information
+ versionfile=${SDK_OUTPUT}/${SDKPATH}/version-${OLD_MULTIMACH_TARGET_SYS}
+ touch $versionfile
+ echo 'Distro: ${DISTRO}' >> $versionfile
+ echo 'Distro Version: ${DISTRO_VERSION}' >> $versionfile
+ echo 'Metadata Revision: ${METADATA_REVISION}' >> $versionfile
+ echo 'Timestamp: ${DATETIME}' >> $versionfile
+}
+addtask generate_content before do_install after do_compile
+
+do_install[nostamp] = "1"
+do_install() {
+ install -d ${D}/${SDKPATH}
+ install -m 0644 -t ${D}/${SDKPATH} ${SDK_OUTPUT}/${SDKPATH}/*
+}
+
+PN = "meta-environment-${TRANSLATED_TARGET_ARCH}"
+PACKAGES = "${PN}"
+FILES_${PN}= " \
+ ${SDKPATH}/* \
+ "
+
+do_fetch[noexec] = "1"
+do_unpack[noexec] = "1"
+do_patch[noexec] = "1"
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+do_populage_sysroot[noexec] = "1"
diff --git a/meta/recipes-core/meta/meta-toolchain-gmae.bb b/meta/recipes-core/meta/meta-toolchain-gmae.bb
new file mode 100644
index 0000000000..595aba3030
--- /dev/null
+++ b/meta/recipes-core/meta/meta-toolchain-gmae.bb
@@ -0,0 +1,5 @@
+TOOLCHAIN_TARGET_GMAETASK ?= "task-poky-standalone-gmae-sdk-target task-poky-standalone-gmae-sdk-target-dbg"
+TOOLCHAIN_TARGET_TASK = "${TOOLCHAIN_TARGET_GMAETASK}"
+TOOLCHAIN_OUTPUTNAME = "${SDK_NAME}-toolchain-gmae-${DISTRO_VERSION}"
+PROVIDES = "meta-toolchain-sdk"
+require meta-toolchain.bb
diff --git a/meta/recipes-core/meta/meta-toolchain-sdk.bb b/meta/recipes-core/meta/meta-toolchain-sdk.bb
deleted file mode 100644
index 8572f021d7..0000000000
--- a/meta/recipes-core/meta/meta-toolchain-sdk.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-TOOLCHAIN_TARGET_SDKTASK ?= "task-poky-standalone-gmae-sdk-target task-poky-standalone-gmae-sdk-target-dbg"
-TOOLCHAIN_TARGET_TASK = "${TOOLCHAIN_TARGET_SDKTASK}"
-TOOLCHAIN_OUTPUTNAME = "${SDK_NAME}-toolchain-sdk-${DISTRO_VERSION}"
-require meta-toolchain.bb
diff --git a/meta/recipes-core/meta/meta-toolchain.bb b/meta/recipes-core/meta/meta-toolchain.bb
index 40f8d7ea26..feff9ac386 100644
--- a/meta/recipes-core/meta/meta-toolchain.bb
+++ b/meta/recipes-core/meta/meta-toolchain.bb
@@ -1,103 +1,9 @@
DESCRIPTION = "Meta package for building a installable toolchain"
LICENSE = "MIT"
-DEPENDS = "opkg-native opkg-utils-native virtual/fakeroot-native sed-native"
-inherit meta toolchain-scripts
+PR = "r1"
-SDK_DIR = "${WORKDIR}/sdk"
-SDK_OUTPUT = "${SDK_DIR}/image"
-SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
+LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
+ file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${TARGET_SYS}"
-
-IPKG_HOST = "opkg-cl -f ${IPKGCONF_SDK} -o ${SDK_OUTPUT}"
-IPKG_TARGET = "opkg-cl -f ${IPKGCONF_TARGET} -o ${SDK_OUTPUT}/${SDKTARGETSYSROOT}"
-
-TOOLCHAIN_HOST_TASK ?= "task-sdk-host task-cross-canadian-${TRANSLATED_TARGET_ARCH}"
-TOOLCHAIN_TARGET_TASK ?= "task-poky-standalone-sdk-target task-poky-standalone-sdk-target-dbg"
-TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${DISTRO_VERSION}"
-
-RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}"
-
-EXCLUDE_FROM_WORLD = "1"
-
-do_populate_sdk() {
- rm -rf ${SDK_OUTPUT}
- mkdir -p ${SDK_OUTPUT}
- mkdir -p ${SDK_OUTPUT}${localstatedir}/lib/opkg/
- mkdir -p ${SDK_OUTPUT}/${SDKTARGETSYSROOT}${localstatedir}/lib/opkg/
-
- rm -f ${IPKGCONF_TARGET}
- touch ${IPKGCONF_TARGET}
- rm -f ${IPKGCONF_SDK}
- touch ${IPKGCONF_SDK}
-
- package_update_index_ipk
- package_generate_ipkg_conf
-
- for arch in ${PACKAGE_ARCHS}; do
- revipkgarchs="$arch $revipkgarchs"
- done
-
- ${IPKG_HOST} update
- ${IPKG_HOST} install ${TOOLCHAIN_HOST_TASK}
-
- ${IPKG_TARGET} update
- ${IPKG_TARGET} install ${TOOLCHAIN_TARGET_TASK}
-
- install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/opkg
- mv ${SDK_OUTPUT}/var/lib/opkg/* ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/opkg/
- rm -Rf ${SDK_OUTPUT}/var
-
- # Don't ship any libGL in the SDK
- rm -rf ${SDK_OUTPUT}/${SDKPATHNATIVE}${libdir_nativesdk}/libGL*
-
- install -d ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/${sysconfdir}
- install -m 0644 ${IPKGCONF_TARGET} ${IPKGCONF_SDK} ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/${sysconfdir}/
-
- install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}
- install -m 0644 ${IPKGCONF_SDK} ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}/
-
- # Can copy pstage files here
- # target_pkgs=`cat ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/var/lib/opkg/status | grep Package: | cut -f 2 -d ' '`
-
- # Fix or remove broken .la files
- for i in `find ${SDK_OUTPUT}/${SDKTARGETSYSROOT} -name \*.la`; do
- sed -i -e "/^dependency_libs=/s,\([[:space:]']\)${base_libdir},\1${SDKTARGETSYSROOT}${base_libdir},g" \
- -e "/^dependency_libs=/s,\([[:space:]']\)${libdir},\1${SDKTARGETSYSROOT}${libdir},g" \
- -e "/^dependency_libs=/s,\-\([LR]\)${base_libdir},-\1${SDKTARGETSYSROOT}${base_libdir},g" \
- -e "/^dependency_libs=/s,\-\([LR]\)${libdir},-\1${SDKTARGETSYSROOT}${libdir},g" \
- -e 's/^installed=yes$/installed=no/' $i
- done
- #rm -f ${SDK_OUTPUT}/${SDKPATHNATIVE}/lib/*.la
- rm -f ${SDK_OUTPUT}/${SDKPATHNATIVE}${libdir_nativesdk}/*.la
-
- # Link the ld.so.cache file into the hosts filesystem
- ln -s /etc/ld.so.cache ${SDK_OUTPUT}/${SDKPATHNATIVE}/etc/ld.so.cache
-
- # Setup site file for external use
- siteconfig=${SDK_OUTPUT}/${SDKPATH}/site-config-${MULTIMACH_TARGET_SYS}
- touch $siteconfig
- for sitefile in ${CONFIG_SITE} ; do
- cat $sitefile >> $siteconfig
- done
-
- toolchain_create_sdk_env_script
-
- # Add version information
- versionfile=${SDK_OUTPUT}/${SDKPATH}/version-${MULTIMACH_TARGET_SYS}
- touch $versionfile
- echo 'Distro: ${DISTRO}' >> $versionfile
- echo 'Distro Version: ${DISTRO_VERSION}' >> $versionfile
- echo 'Metadata Revision: ${METADATA_REVISION}' >> $versionfile
- echo 'Timestamp: ${DATETIME}' >> $versionfile
-
- # Package it up
- mkdir -p ${SDK_DEPLOY}
- cd ${SDK_OUTPUT}
- ${FAKEROOT} tar cfj ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.bz2 .
-}
-
-do_populate_sdk[nostamp] = "1"
-do_populate_sdk[recrdeptask] = "do_package_write"
-addtask populate_sdk before do_build after do_install
+inherit populate_sdk
diff --git a/meta/recipes-core/ncurses/ncurses-5.7/config.cache b/meta/recipes-core/ncurses/ncurses-5.7/config.cache
new file mode 100644
index 0000000000..6a9217d5bb
--- /dev/null
+++ b/meta/recipes-core/ncurses/ncurses-5.7/config.cache
@@ -0,0 +1,4 @@
+#! /bin/sh
+
+cf_cv_func_nanosleep=yes
+cf_cv_func_mkstemp=yes
diff --git a/meta/recipes-core/ncurses/ncurses-5.7/tic-hang.patch b/meta/recipes-core/ncurses/ncurses-5.7/tic-hang.patch
new file mode 100644
index 0000000000..1678b885c4
--- /dev/null
+++ b/meta/recipes-core/ncurses/ncurses-5.7/tic-hang.patch
@@ -0,0 +1,25 @@
+'tic' of some linux distributions (e.g. fedora 11) hang in an infinite
+loop when processing the original file.
+
+Index: ncurses-5.7/misc/terminfo.src
+===================================================================
+--- ncurses-5.7.orig/misc/terminfo.src
++++ ncurses-5.7/misc/terminfo.src
+@@ -3706,12 +3706,11 @@ konsole-xf3x|KDE console window with key
+ # The value for kbs reflects local customization rather than the settings used
+ # for XFree86 xterm.
+ konsole-xf4x|KDE console window with keyboard for XFree86 4.x xterm,
+- kend=\EOF, khome=\EOH, use=konsole+pcfkeys,
+- use=konsole-vt100,
+-# Konsole does not implement shifted cursor-keys.
+-konsole+pcfkeys|konsole subset of xterm+pcfkeys,
+- kLFT@, kRIT@, kcbt=\E[Z, kind@, kri@, kDN@, kUP@, use=xterm+pcc2,
+- use=xterm+pcf0,
++ kend=\EOF, kf1=\EOP, kf13=\EO2P, kf14=\EO2Q, kf15=\EO2R,
++ kf16=\EO2S, kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~,
++ kf2=\EOQ, kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~,
++ kf23=\E[23;2~, kf24=\E[24;2~, kf3=\EOR, kf4=\EOS,
++ khome=\EOH, use=konsole-vt100,
+ # KDE's "vt100" keyboard has no relationship to any terminal that DEC made, but
+ # it is still useful for deriving the other entries.
+ konsole-vt100|KDE console window with vt100 (sic) keyboard,
diff --git a/meta/recipes-core/ncurses/ncurses/makefile_tweak.patch b/meta/recipes-core/ncurses/ncurses/makefile_tweak.patch
deleted file mode 100644
index 480855bcc6..0000000000
--- a/meta/recipes-core/ncurses/ncurses/makefile_tweak.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-Libtool 2.2.2 needs to be able to use top_builddir. Automake usually exports
-this but ncurses doesn't use automake.
-
-RP 14/4/08
-
-Index: ncurses-5.4/ncurses/Makefile.in
-===================================================================
---- ncurses-5.4.orig/ncurses/Makefile.in 2008-04-14 12:22:34.000000000 +0100
-+++ ncurses-5.4/ncurses/Makefile.in 2008-04-14 12:22:53.000000000 +0100
-@@ -57,6 +57,7 @@
- MODEL = @DFT_LWR_MODEL@
- DESTDIR = @DESTDIR@
- top_srcdir = @top_srcdir@
-+top_builddir = @top_srcdir@
- srcdir = @srcdir@
- prefix = @prefix@
- exec_prefix = @exec_prefix@
-Index: ncurses-5.4/form/Makefile.in
-===================================================================
---- ncurses-5.4.orig/form/Makefile.in 2008-04-14 12:30:35.000000000 +0100
-+++ ncurses-5.4/form/Makefile.in 2008-04-14 12:30:59.000000000 +0100
-@@ -51,6 +51,7 @@
- MODEL = @DFT_LWR_MODEL@
- DESTDIR = @DESTDIR@
- srcdir = @srcdir@
-+top_builddir = @top_srcdir@
- prefix = @prefix@
- exec_prefix = @exec_prefix@
- bindir = @bindir@
-Index: ncurses-5.4/menu/Makefile.in
-===================================================================
---- ncurses-5.4.orig/menu/Makefile.in 2008-04-14 12:29:00.000000000 +0100
-+++ ncurses-5.4/menu/Makefile.in 2008-04-14 12:29:13.000000000 +0100
-@@ -51,6 +51,7 @@
- MODEL = @DFT_LWR_MODEL@
- DESTDIR = @DESTDIR@
- srcdir = @srcdir@
-+top_builddir = @top_srcdir@
- prefix = @prefix@
- exec_prefix = @exec_prefix@
- bindir = @bindir@
-Index: ncurses-5.4/panel/Makefile.in
-===================================================================
---- ncurses-5.4.orig/panel/Makefile.in 2008-04-14 12:27:40.000000000 +0100
-+++ ncurses-5.4/panel/Makefile.in 2008-04-14 12:27:59.000000000 +0100
-@@ -51,6 +51,7 @@
- MODEL = @DFT_LWR_MODEL@
- DESTDIR = @DESTDIR@
- srcdir = @srcdir@
-+top_builddir = @top_srcdir@
- prefix = @prefix@
- exec_prefix = @exec_prefix@
- bindir = @bindir@
-Index: ncurses-5.4/progs/Makefile.in
-===================================================================
---- ncurses-5.4.orig/progs/Makefile.in 2008-04-14 12:24:37.000000000 +0100
-+++ ncurses-5.4/progs/Makefile.in 2008-04-14 12:25:06.000000000 +0100
-@@ -54,6 +54,7 @@
- MODEL = ../@DFT_OBJ_SUBDIR@
- DESTDIR = @DESTDIR@
- srcdir = @srcdir@
-+top_builddir = @top_srcdir@
- prefix = @prefix@
- exec_prefix = @exec_prefix@
- bindir = @bindir@
-Index: ncurses-5.4/tack/Makefile.in
-===================================================================
---- ncurses-5.4.orig/tack/Makefile.in 2008-04-14 12:26:05.000000000 +0100
-+++ ncurses-5.4/tack/Makefile.in 2008-04-14 12:26:26.000000000 +0100
-@@ -22,6 +22,7 @@
- MODEL = ../@DFT_OBJ_SUBDIR@
- DESTDIR = @DESTDIR@
- srcdir = @srcdir@
-+top_builddir = @top_srcdir@
- prefix = @prefix@
- exec_prefix = @exec_prefix@
- bindir = @bindir@
-Index: ncurses-5.4/test/Makefile.in
-===================================================================
---- ncurses-5.4.orig/test/Makefile.in 2008-04-14 12:32:37.000000000 +0100
-+++ ncurses-5.4/test/Makefile.in 2008-04-14 12:32:56.000000000 +0100
-@@ -43,6 +43,7 @@
-
- MODEL = ../@DFT_OBJ_SUBDIR@
- srcdir = @srcdir@
-+top_builddir = @top_srcdir@
- prefix = @prefix@
- exec_prefix = @exec_prefix@
- libdir = @libdir@
diff --git a/meta/recipes-core/ncurses/ncurses/visibility.patch b/meta/recipes-core/ncurses/ncurses/visibility.patch
deleted file mode 100644
index 29cac5f1b8..0000000000
--- a/meta/recipes-core/ncurses/ncurses/visibility.patch
+++ /dev/null
@@ -1,4904 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- ncurses-5.4/ncurses/Makefile.in~visibility.patch
-+++ ncurses-5.4/ncurses/Makefile.in
-@@ -107,7 +107,7 @@
- CFLAGS_NORMAL = $(CCFLAGS)
- CFLAGS_DEBUG = $(CCFLAGS) @CC_G_OPT@ -DTRACE
- CFLAGS_PROFILE = $(CCFLAGS) -pg
--CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@
-+CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ @LIBOPTS@
-
- CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@)
-
---- ncurses-5.4/panel/Makefile.in~visibility.patch
-+++ ncurses-5.4/panel/Makefile.in
-@@ -88,7 +88,7 @@
- CFLAGS_NORMAL = $(CCFLAGS)
- CFLAGS_DEBUG = $(CCFLAGS) @CC_G_OPT@ -DTRACE
- CFLAGS_PROFILE = $(CCFLAGS) -pg
--CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@
-+CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ @LIBOPTS@
-
- CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@)
-
---- ncurses-5.4/menu/Makefile.in~visibility.patch
-+++ ncurses-5.4/menu/Makefile.in
-@@ -87,7 +87,7 @@
- CFLAGS_NORMAL = $(CCFLAGS)
- CFLAGS_DEBUG = $(CCFLAGS) @CC_G_OPT@ -DTRACE
- CFLAGS_PROFILE = $(CCFLAGS) -pg
--CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@
-+CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ @LIBOPTS@
-
- CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@)
-
---- ncurses-5.4/c++/Makefile.in~visibility.patch
-+++ ncurses-5.4/c++/Makefile.in
-@@ -80,7 +80,7 @@
- CFLAGS_NORMAL = $(CCFLAGS)
- CFLAGS_DEBUG = $(CCFLAGS) @CXX_G_OPT@ -DTRACE
- CFLAGS_PROFILE = $(CCFLAGS) -pg
--CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@
-+CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ @LIBOPTS@
-
- CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@)
-
---- ncurses-5.4/form/Makefile.in~visibility.patch
-+++ ncurses-5.4/form/Makefile.in
-@@ -88,7 +88,7 @@
- CFLAGS_NORMAL = $(CCFLAGS)
- CFLAGS_DEBUG = $(CCFLAGS) @CC_G_OPT@ -DTRACE
- CFLAGS_PROFILE = $(CCFLAGS) -pg
--CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@
-+CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ @LIBOPTS@
-
- CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@)
-
---- ncurses-5.4/configure.in~visibility.patch
-+++ ncurses-5.4/configure.in
-@@ -34,17 +34,20 @@
- dnl See http://invisible-island.net/autoconf/ for additional information.
- dnl
- dnl ---------------------------------------------------------------------------
--AC_PREREQ(2.13.20020210)
-+AC_PREREQ(2.59)
- AC_REVISION($Revision: 1.312 $)
--AC_INIT(ncurses/base/lib_initscr.c)
-+AC_INIT
-+AC_CONFIG_SRCDIR([ncurses/base/lib_initscr.c])
- AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
-
-+m4_include([m4/templates.m4])
-+
- CF_SUBST_NCURSES_VERSION
-
- CF_WITH_REL_VERSION(NCURSES)
- CF_WITH_ABI_VERSION
-
--CF_CHECK_CACHE([AC_CANONICAL_SYSTEM])
-+CF_CHECK_CACHE([AC_CANONICAL_TARGET([])])
- AC_ARG_WITH(system-type,
- [ --with-system-type=XXX test: override derived host system-type],
- [AC_MSG_WARN(overriding system type to $withval)
-@@ -100,7 +103,7 @@
- CF_GXX_VERSION
- case $GXX_VERSION in
- 1*|2.[[0-6]]*)
-- GXX=""; CXX=""; ac_cv_prog_gxx=no
-+ GXX=""; CXX=""; ac_cv_cxx_compiler_gnu=no
- cf_cxx_library=no
- AC_MSG_WARN(templates do not work)
- ;;
-@@ -176,7 +179,6 @@
- AC_SUBST(DESTDIR)
-
- ###############################################################################
--CF_HELP_MESSAGE(Build-Tools Needed to Compile Temporary Applications for Cross-compiling:)
- # If we're cross-compiling, allow the user to override the tools and their
- # options. The configure script is oriented toward identifying the host
- # compiler, etc., but we need a build compiler to generate parts of the source.
-@@ -213,7 +215,6 @@
- AC_SUBST(BUILD_EXEEXT)
-
- ###############################################################################
--CF_HELP_MESSAGE(Options to Specify the Libraries Built/Used:)
-
- ### Options to allow the user to specify the set of libraries which are used.
- ### Use "--without-normal --with-shared" to allow the default model to be
-@@ -343,11 +344,11 @@
-
- AC_MSG_CHECKING(for default loader flags)
- case $DFT_LWR_MODEL in
--libtool) LD_MODEL='' ;;
-+libtool) LD_MODEL=''; LIBOPTS="-DNCURSES_DLL" ;;
- normal) LD_MODEL='' ;;
- debug) LD_MODEL=$CC_G_OPT ;;
- profile) LD_MODEL='-pg';;
--shared) LD_MODEL='' ;;
-+shared) LD_MODEL=''; LIBOPTS="-DNCURSES_DLL" ;;
- esac
- AC_SUBST(LD_MODEL)dnl the type of link (e.g., -g or -pg)
- AC_MSG_RESULT($LD_MODEL)
-@@ -363,14 +364,14 @@
- if test "$CC_SHARED_OPTS" = "unknown"; then
- for model in $cf_list_models; do
- if test "$model" = "shared"; then
-- AC_ERROR(Shared libraries are not supported in this version)
-+ AC_MSG_ERROR([Shared libraries are not supported in this version])
- fi
- done
- fi
-
--###############################################################################
--CF_HELP_MESSAGE(Fine-Tuning Your Configuration:)
-+AC_SUBST(LIBOPTS)
-
-+###############################################################################
- ### use option --disable-overwrite to leave out the link to -lcurses
- AC_MSG_CHECKING(if you wish to install ncurses overwriting curses)
- AC_ARG_ENABLE(overwrite,
-@@ -450,7 +451,7 @@
- AC_ARG_ENABLE(big-core,
- [ --disable-big-core assume machine has little memory],
- [with_big_core=$enableval],
-- [AC_TRY_RUN([
-+ [AC_RUN_IFELSE([AC_LANG_SOURCE([[
- #include <stdlib.h>
- #include <string.h>
- int main() {
-@@ -459,10 +460,7 @@
- if (s != 0)
- s[0] = s[n-1] = 0;
- exit(s == 0);
--}],
-- [with_big_core=yes],
-- [with_big_core=no],
-- [with_big_core=no])])
-+}]])],[with_big_core=yes],[with_big_core=no],[with_big_core=no])])
- AC_MSG_RESULT($with_big_core)
- test "$with_big_core" = "yes" && AC_DEFINE(HAVE_BIG_CORE)
-
-@@ -477,7 +475,7 @@
- if test "$with_termcap" != "yes" ; then
- if test "$use_database" = no ; then
- if test -z "$with_fallback" ; then
-- AC_ERROR(You have disabled the database w/o specifying fallbacks)
-+ AC_MSG_ERROR([You have disabled the database w/o specifying fallbacks])
- fi
- fi
- AC_DEFINE(PURE_TERMINFO)
-@@ -614,10 +612,10 @@
- test "$with_rcs_ids" = yes && AC_DEFINE(USE_RCS_IDS)
-
- ###############################################################################
-+
- CF_MAN_PAGES([ captoinfo clear infocmp infotocap tic toe tput ])
-
- ###############################################################################
--CF_HELP_MESSAGE(Extensions:)
-
- ### Note that some functions (such as const) are normally disabled anyway.
- AC_MSG_CHECKING(if you want to build with function extensions)
-@@ -683,7 +681,6 @@
-
- ###############################################################################
- # These options are relatively safe to experiment with.
--CF_HELP_MESSAGE(Development Code:)
- AC_MSG_CHECKING(if you want all development code)
- AC_ARG_WITH(develop,
- [ --with-develop enable all development options],
-@@ -719,7 +716,6 @@
-
- ###############################################################################
- # These are just experimental, probably should not be in a package:
--CF_HELP_MESSAGE(Experimental Code:)
-
- AC_MSG_CHECKING(if you do not want to assume colors are white-on-black)
- AC_ARG_ENABLE(assumed-color,
-@@ -828,7 +824,6 @@
- AC_SUBST(TERMINFO_CAPS)
-
- ###############################################################################
--CF_HELP_MESSAGE(Testing/development Options:)
-
- ### use option --disable-echo to suppress full display compiling commands
- AC_MSG_CHECKING(if you want to display full commands during build)
-@@ -931,7 +926,7 @@
- AC_SUBST(MATH_LIB)
-
- ### Checks for header files.
--AC_STDC_HEADERS
-+AC_HEADER_STDC([])
- AC_HEADER_DIRENT
- AC_HEADER_TIME
- CF_REGEX
-@@ -965,7 +960,7 @@
- CF_SYS_TIME_SELECT
-
- ### checks for compiler characteristics
--AC_LANG_C
-+AC_LANG([C])
- AC_C_CONST
- AC_C_INLINE
- test "$ac_cv_c_inline" != no && AC_DEFINE(CC_HAS_INLINE_FUNCS)
-@@ -1040,7 +1035,7 @@
-
- # Check for C++ compiler characteristics (and ensure that it's there!)
- if test -n "$CXX" ; then
-- AC_LANG_CPLUSPLUS
-+ AC_LANG([C++])
- CF_STDCPP_LIBRARY
-
- case $GXX_VERSION in
-@@ -1135,7 +1130,6 @@
- fi
- AC_SUBST(USE_CXX_BOOL)
-
--CF_HELP_MESSAGE(Ada95 Binding Options:)
-
- dnl Check for availability of GNU Ada Translator (GNAT).
- dnl At the moment we support no other Ada95 compiler.
-@@ -1309,15 +1303,16 @@
-
- ################################################################################
- test "$use_database" = yes && SUB_MAKEFILES="$SUB_MAKEFILES misc/run_tic.sh:misc/run_tic.in"
--AC_OUTPUT( \
-+AC_CONFIG_FILES([\
- include/MKterm.h.awk \
- include/curses.head:include/curses.h.in \
- include/termcap.h \
- include/unctrl.h \
- $SUB_MAKEFILES \
-- Makefile,[
-+ Makefile])
-+AC_CONFIG_COMMANDS([default],[
- CF_LIB_RULES
--],[
-+],[[
- ### Special initialization commands, used to pass information from the
- ### configuration-run into config.status
-
-@@ -1348,5 +1343,6 @@
- host="$host"
- target="$target"
-
--],cat)dnl
-+]])
-+AC_OUTPUT
- ${MAKE-make} preinstall
---- ncurses-5.4/include/ncurses_dll.h~visibility.patch
-+++ ncurses-5.4/include/ncurses_dll.h
-@@ -7,8 +7,8 @@
- /* but this structure may be useful at some point for an MSVC build */
- /* so, for now unconditionally define the important flags */
- /* "the right way" for proper static and dll+auto-import behavior */
--#undef NCURSES_DLL
--#define NCURSES_STATIC
-+//#undef NCURSES_DLL
-+//#define NCURSES_STATIC
-
- #if defined(__CYGWIN__)
- # if defined(NCURSES_DLL)
-@@ -32,12 +32,20 @@
- # endif
- # define NCURSES_API __cdecl
- # define NCURSES_EXPORT(type) NCURSES_IMPEXP type NCURSES_API
--# define NCURSES_EXPORT_VAR(type) NCURSES_IMPEXP type
-+# define NCURSES_EXPORT_VAR(var) var NCURSES_IMPEXP
- #endif
-
- /* Take care of non-cygwin platforms */
- #if !defined(NCURSES_IMPEXP)
--# define NCURSES_IMPEXP /* nothing */
-+# if defined(GCC_HASCLASSVISIBILITY)
-+# if defined(NCURSES_DLL)
-+# define NCURSES_IMPEXP __attribute__ ((visibility("default")))
-+# else
-+# define NCURSES_IMPEXP /* nothing */
-+# endif
-+# else
-+# define NCURSES_IMPEXP /* nothing */
-+# endif
- #endif
- #if !defined(NCURSES_API)
- # define NCURSES_API /* nothing */
-@@ -46,7 +54,7 @@
- # define NCURSES_EXPORT(type) NCURSES_IMPEXP type NCURSES_API
- #endif
- #if !defined(NCURSES_EXPORT_VAR)
--# define NCURSES_EXPORT_VAR(type) NCURSES_IMPEXP type
-+# define NCURSES_EXPORT_VAR(var) var NCURSES_IMPEXP
- #endif
-
- #endif /* NCURSES_DLL_H_incl */
---- ncurses-5.4/form/fty_alnum.c~visibility.patch
-+++ ncurses-5.4/form/fty_alnum.c
-@@ -132,6 +132,6 @@
- NULL
- };
-
--NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_ALNUM = &typeALNUM;
-+FIELDTYPE* NCURSES_EXPORT_VAR(TYPE_ALNUM) = &typeALNUM;
-
- /* fty_alnum.c ends here */
---- ncurses-5.4/form/fty_alpha.c~visibility.patch
-+++ ncurses-5.4/form/fty_alpha.c
-@@ -133,6 +133,6 @@
- NULL
- };
-
--NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_ALPHA = &typeALPHA;
-+FIELDTYPE* NCURSES_EXPORT_VAR(TYPE_ALPHA) = &typeALPHA;
-
- /* fty_alpha.c ends here */
---- ncurses-5.4/form/fld_newftyp.c~visibility.patch
-+++ ncurses-5.4/form/fld_newftyp.c
-@@ -48,7 +48,7 @@
- NULL /* enumerate previous function */
- };
-
--NCURSES_EXPORT_VAR(const FIELDTYPE*) _nc_Default_FieldType = &default_fieldtype;
-+const FIELDTYPE* NCURSES_EXPORT_VAR(_nc_Default_FieldType) = &default_fieldtype;
-
- /*---------------------------------------------------------------------------
- | Facility : libnform
---- ncurses-5.4/form/form.h~visibility.patch
-+++ ncurses-5.4/form/form.h
-@@ -248,24 +248,24 @@
- /*************************
- * standard field types *
- *************************/
--extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_ALPHA;
--extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_ALNUM;
--extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_ENUM;
--extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_INTEGER;
--extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_NUMERIC;
--extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_REGEXP;
-+extern FIELDTYPE * NCURSES_EXPORT_VAR(TYPE_ALPHA);
-+extern FIELDTYPE * NCURSES_EXPORT_VAR(TYPE_ALNUM);
-+extern FIELDTYPE * NCURSES_EXPORT_VAR(TYPE_ENUM);
-+extern FIELDTYPE * NCURSES_EXPORT_VAR(TYPE_INTEGER);
-+extern FIELDTYPE * NCURSES_EXPORT_VAR(TYPE_NUMERIC);
-+extern FIELDTYPE * NCURSES_EXPORT_VAR(TYPE_REGEXP);
-
- /************************************
- * built-in additional field types *
- * They are not defined in SVr4 *
- ************************************/
--extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_IPV4; /* Internet IP Version 4 address */
-+extern FIELDTYPE * NCURSES_EXPORT_VAR(TYPE_IPV4); /* Internet IP Version 4 address */
-
- /***********************
- * Default objects *
- ***********************/
--extern NCURSES_EXPORT_VAR(FORM *) _nc_Default_Form;
--extern NCURSES_EXPORT_VAR(FIELD *) _nc_Default_Field;
-+extern FORM * NCURSES_EXPORT_VAR(_nc_Default_Form);
-+extern FIELD * NCURSES_EXPORT_VAR(_nc_Default_Field);
-
-
- /***********************
---- ncurses-5.4/form/fty_int.c~visibility.patch
-+++ ncurses-5.4/form/fty_int.c
-@@ -155,6 +155,6 @@
- NULL
- };
-
--NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_INTEGER = &typeINTEGER;
-+FIELDTYPE* NCURSES_EXPORT_VAR(TYPE_INTEGER) = &typeINTEGER;
-
- /* fty_int.c ends here */
---- ncurses-5.4/form/fty_num.c~visibility.patch
-+++ ncurses-5.4/form/fty_num.c
-@@ -190,6 +190,6 @@
- NULL
- };
-
--NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_NUMERIC = &typeNUMERIC;
-+FIELDTYPE* NCURSES_EXPORT_VAR(TYPE_NUMERIC) = &typeNUMERIC;
-
- /* fty_num.c ends here */
---- ncurses-5.4/form/fty_regex.c~visibility.patch
-+++ ncurses-5.4/form/fty_regex.c
-@@ -252,6 +252,6 @@
- NULL
- };
-
--NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_REGEXP = &typeREGEXP;
-+FIELDTYPE* NCURSES_EXPORT_VAR(TYPE_REGEXP) = &typeREGEXP;
-
- /* fty_regex.c ends here */
---- ncurses-5.4/form/frm_def.c~visibility.patch
-+++ ncurses-5.4/form/frm_def.c
-@@ -60,7 +60,7 @@
- NULL /* fieldterm */
- };
-
--NCURSES_EXPORT_VAR(FORM *) _nc_Default_Form = &default_form;
-+FORM * NCURSES_EXPORT_VAR(_nc_Default_Form) = &default_form;
-
- /*---------------------------------------------------------------------------
- | Facility : libnform
---- ncurses-5.4/form/fld_def.c~visibility.patch
-+++ ncurses-5.4/form/fld_def.c
-@@ -63,7 +63,7 @@
- (char *)0 /* usrptr */
- };
-
--NCURSES_EXPORT_VAR(FIELD *) _nc_Default_Field = &default_field;
-+FIELD * NCURSES_EXPORT_VAR(_nc_Default_Field) = &default_field;
-
- /*---------------------------------------------------------------------------
- | Facility : libnform
---- ncurses-5.4/form/fty_enum.c~visibility.patch
-+++ ncurses-5.4/form/fty_enum.c
-@@ -290,6 +290,6 @@
- Previous_Enum
- };
-
--NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_ENUM = &typeENUM;
-+FIELDTYPE* NCURSES_EXPORT_VAR(TYPE_ENUM) = &typeENUM;
-
- /* fty_enum.c ends here */
---- ncurses-5.4/form/fty_ipv4.c~visibility.patch
-+++ ncurses-5.4/form/fty_ipv4.c
-@@ -76,6 +76,6 @@
- NULL
- };
-
--NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_IPV4 = &typeIPV4;
-+FIELDTYPE* NCURSES_EXPORT_VAR(TYPE_IPV4) = &typeIPV4;
-
- /* fty_ipv4.c ends here */
---- ncurses-5.4/form/form.priv.h~visibility.patch
-+++ ncurses-5.4/form/form.priv.h
-@@ -112,7 +112,7 @@
- #define C_BLANK ' '
- #define is_blank(c) ((c)==C_BLANK)
-
--extern NCURSES_EXPORT_VAR(const FIELDTYPE *) _nc_Default_FieldType;
-+extern const FIELDTYPE * NCURSES_EXPORT_VAR(_nc_Default_FieldType);
-
- extern NCURSES_EXPORT(TypeArgument *) _nc_Make_Argument (const FIELDTYPE*,va_list*,int*);
- extern NCURSES_EXPORT(TypeArgument *) _nc_Copy_Argument (const FIELDTYPE*,const TypeArgument*, int*);
---- ncurses-5.4/include/tic.h~visibility.patch
-+++ ncurses-5.4/include/tic.h
-@@ -117,7 +117,7 @@
- #define DEBUG(n, a) /*nothing*/
- #endif
-
--extern NCURSES_EXPORT_VAR(unsigned) _nc_tracing;
-+extern unsigned NCURSES_EXPORT_VAR(_nc_tracing);
- extern NCURSES_EXPORT(void) _nc_tracef (char *, ...) GCC_PRINTFLIKE(1,2);
- extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *);
- extern NCURSES_EXPORT(const char *) _nc_visbuf2 (int, const char *);
-@@ -151,7 +151,7 @@
- char *tk_valstring; /* value of capability (if a string) */
- };
-
--extern NCURSES_EXPORT_VAR(struct token) _nc_curr_token;
-+extern struct token NCURSES_EXPORT_VAR(_nc_curr_token);
-
- /*
- * List of keynames with their corresponding code.
-@@ -161,7 +161,7 @@
- int code;
- };
-
--extern NCURSES_EXPORT_VAR(const struct kn) _nc_key_names[];
-+extern const struct kn NCURSES_EXPORT_VAR(_nc_key_names[]);
-
- /*
- * Offsets to string capabilities, with the corresponding functionkey
-@@ -179,7 +179,7 @@
-
- #else
-
--extern NCURSES_EXPORT_VAR(struct tinfo_fkeys) _nc_tinfo_fkeys[];
-+extern struct tinfo_fkeys NCURSES_EXPORT_VAR(_nc_tinfo_fkeys[]);
-
- #endif
-
-@@ -204,11 +204,11 @@
- const char *source;
- };
-
--extern NCURSES_EXPORT_VAR(const struct name_table_entry * const) _nc_info_hash_table[];
--extern NCURSES_EXPORT_VAR(const struct name_table_entry * const) _nc_cap_hash_table[];
-+extern const struct name_table_entry * const NCURSES_EXPORT_VAR(_nc_info_hash_table[]);
-+extern const struct name_table_entry * const NCURSES_EXPORT_VAR(_nc_cap_hash_table[]);
-
--extern NCURSES_EXPORT_VAR(const struct alias) _nc_capalias_table[];
--extern NCURSES_EXPORT_VAR(const struct alias) _nc_infoalias_table[];
-+extern const struct alias NCURSES_EXPORT_VAR(_nc_capalias_table[]);
-+extern const struct alias NCURSES_EXPORT_VAR(_nc_infoalias_table[]);
-
- extern NCURSES_EXPORT(const struct name_table_entry *) _nc_get_table (bool);
- extern NCURSES_EXPORT(const struct name_table_entry * const *) _nc_get_hash_table (bool);
-@@ -255,13 +255,13 @@
- extern NCURSES_EXPORT(void) _nc_panic_mode (char);
- extern NCURSES_EXPORT(void) _nc_push_token (int);
- extern NCURSES_EXPORT(void) _nc_reset_input (FILE *, char *);
--extern NCURSES_EXPORT_VAR(int) _nc_curr_col;
--extern NCURSES_EXPORT_VAR(int) _nc_curr_line;
--extern NCURSES_EXPORT_VAR(int) _nc_syntax;
--extern NCURSES_EXPORT_VAR(long) _nc_comment_end;
--extern NCURSES_EXPORT_VAR(long) _nc_comment_start;
--extern NCURSES_EXPORT_VAR(long) _nc_curr_file_pos;
--extern NCURSES_EXPORT_VAR(long) _nc_start_line;
-+extern int NCURSES_EXPORT_VAR(_nc_curr_col);
-+extern int NCURSES_EXPORT_VAR(_nc_curr_line);
-+extern int NCURSES_EXPORT_VAR(_nc_syntax);
-+extern long NCURSES_EXPORT_VAR(_nc_comment_end);
-+extern long NCURSES_EXPORT_VAR(_nc_comment_start);
-+extern long NCURSES_EXPORT_VAR(_nc_curr_file_pos);
-+extern long NCURSES_EXPORT_VAR(_nc_start_line);
- #define SYN_TERMINFO 0
- #define SYN_TERMCAP 1
-
-@@ -272,7 +272,7 @@
- extern NCURSES_EXPORT(void) _nc_syserr_abort (const char *const,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN;
- extern NCURSES_EXPORT(void) _nc_err_abort (const char *const,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN;
- extern NCURSES_EXPORT(void) _nc_warning (const char *const,...) GCC_PRINTFLIKE(1,2);
--extern NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings;
-+extern bool NCURSES_EXPORT_VAR(_nc_suppress_warnings);
-
- /* comp_expand.c: expand string into readable form */
- extern NCURSES_EXPORT(char *) _nc_tic_expand (const char *, bool, int);
-@@ -287,12 +287,12 @@
- /* lib_tparm.c */
- #define NUM_PARM 9
-
--extern NCURSES_EXPORT_VAR(int) _nc_tparm_err;
-+extern int NCURSES_EXPORT_VAR(_nc_tparm_err);
-
- extern NCURSES_EXPORT(int) _nc_tparm_analyze(const char *string, char *p_is_s[NUM_PARM], int *popcount);
-
- /* lib_tputs.c */
--extern NCURSES_EXPORT_VAR(int) _nc_nulls_sent; /* Add one for every null sent */
-+extern int NCURSES_EXPORT_VAR(_nc_nulls_sent); /* Add one for every null sent */
-
- /* comp_main.c: compiler main */
- extern const char * _nc_progname;
---- ncurses-5.4/include/MKterm.h.awk.in~visibility.patch
-+++ ncurses-5.4/include/MKterm.h.awk.in
-@@ -228,9 +228,9 @@
- print " char * _termname; /* used for termname() */"
- print "} TERMINAL;"
- print ""
-- print "extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;"
-+ print "extern TERMINAL * NCURSES_EXPORT_VAR(cur_term);"
- print ""
-- print "#if BROKEN_LINKER"
-+ print "#if defined(BROKEN_LINKER)"
- print "#define boolnames _nc_boolnames()"
- print "#define boolcodes _nc_boolcodes()"
- print "#define boolfnames _nc_boolfnames()"
-@@ -253,15 +253,15 @@
- print ""
- print "#else"
- print ""
-- print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolnames[];"
-- print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolcodes[];"
-- print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolfnames[];"
-- print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numnames[];"
-- print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numcodes[];"
-- print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numfnames[];"
-- print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strnames[];"
-- print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strcodes[];"
-- print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strfnames[];"
-+ print "extern NCURSES_CONST char * const NCURSES_EXPORT_VAR(boolnames[]);"
-+ print "extern NCURSES_CONST char * const NCURSES_EXPORT_VAR(boolcodes[]);"
-+ print "extern NCURSES_CONST char * const NCURSES_EXPORT_VAR(boolfnames[]);"
-+ print "extern NCURSES_CONST char * const NCURSES_EXPORT_VAR(numnames[]);"
-+ print "extern NCURSES_CONST char * const NCURSES_EXPORT_VAR(numcodes[]);"
-+ print "extern NCURSES_CONST char * const NCURSES_EXPORT_VAR(numfnames[]);"
-+ print "extern NCURSES_CONST char * const NCURSES_EXPORT_VAR(strnames[]);"
-+ print "extern NCURSES_CONST char * const NCURSES_EXPORT_VAR(strcodes[]);"
-+ print "extern NCURSES_CONST char * const NCURSES_EXPORT_VAR(strfnames[]);"
- print ""
- print "#endif"
- print ""
-@@ -287,7 +287,7 @@
- print "#if !defined(__NCURSES_H)"
- print "extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *);"
- print "extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...);"
-- print "extern NCURSES_EXPORT_VAR(char) ttytype[];"
-+ print "extern char NCURSES_EXPORT_VAR(ttytype[]);"
- print "extern NCURSES_EXPORT(int) putp (const char *);"
- print "extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *);"
- print "extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *);"
---- ncurses-5.4/include/termcap.h.in~visibility.patch
-+++ ncurses-5.4/include/termcap.h.in
-@@ -54,10 +54,10 @@
- #undef NCURSES_OSPEED
- #define NCURSES_OSPEED @NCURSES_OSPEED@
-
--extern NCURSES_EXPORT_VAR(char) PC;
--extern NCURSES_EXPORT_VAR(char *) UP;
--extern NCURSES_EXPORT_VAR(char *) BC;
--extern NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed;
-+extern char NCURSES_EXPORT_VAR(PC);
-+extern char * NCURSES_EXPORT_VAR(UP);
-+extern char * NCURSES_EXPORT_VAR(BC);
-+extern NCURSES_OSPEED NCURSES_EXPORT_VAR(ospeed);
-
- #if !defined(NCURSES_TERM_H_incl)
- extern NCURSES_EXPORT(char *) tgetstr (NCURSES_CONST char *, char **);
---- ncurses-5.4/include/term_entry.h~visibility.patch
-+++ ncurses-5.4/include/term_entry.h
-@@ -90,8 +90,8 @@
- #define ExtNumname(tp,i,names) EXT_NAMES(tp, i, NUMCOUNT, (i - (tp->num_Numbers - tp->ext_Numbers)) + tp->ext_Booleans, names)
- #define ExtStrname(tp,i,names) EXT_NAMES(tp, i, STRCOUNT, (i - (tp->num_Strings - tp->ext_Strings)) + (tp->ext_Numbers + tp->ext_Booleans), names)
-
--extern NCURSES_EXPORT_VAR(ENTRY *) _nc_head;
--extern NCURSES_EXPORT_VAR(ENTRY *) _nc_tail;
-+extern ENTRY * NCURSES_EXPORT_VAR(_nc_head);
-+extern ENTRY * NCURSES_EXPORT_VAR(_nc_tail);
- #define for_entry_list(qp) for (qp = _nc_head; qp; qp = qp->next)
-
- #define MAX_LINE 132
-@@ -135,8 +135,8 @@
-
- /* parse_entry.c: entry-parsing code */
- #if NCURSES_XNAMES
--extern NCURSES_EXPORT_VAR(bool) _nc_user_definable;
--extern NCURSES_EXPORT_VAR(bool) _nc_disable_period;
-+extern bool NCURSES_EXPORT_VAR(_nc_user_definable);
-+extern bool NCURSES_EXPORT_VAR(_nc_disable_period);
- #endif
- extern NCURSES_EXPORT(int) _nc_parse_entry (ENTRY *, int, bool);
- extern NCURSES_EXPORT(int) _nc_capcmp (const char *, const char *);
---- ncurses-5.4/include/curses.h.in~visibility.patch
-+++ ncurses-5.4/include/curses.h.in
-@@ -171,8 +171,8 @@
- #define WA_VERTICAL A_VERTICAL
-
- /* colors */
--extern NCURSES_EXPORT_VAR(int) COLORS;
--extern NCURSES_EXPORT_VAR(int) COLOR_PAIRS;
-+extern int NCURSES_EXPORT_VAR(COLORS);
-+extern int NCURSES_EXPORT_VAR(COLOR_PAIRS);
-
- #define COLOR_BLACK 0
- #define COLOR_RED 1
-@@ -186,10 +186,10 @@
- /* line graphics */
-
- #if @BROKEN_LINKER@
--extern NCURSES_EXPORT_VAR(chtype*) _nc_acs_map(void);
-+extern chtype* NCURSES_EXPORT_VAR(_nc_acs_map)(void);
- #define acs_map (_nc_acs_map())
- #else
--extern NCURSES_EXPORT_VAR(chtype) acs_map[];
-+extern chtype NCURSES_EXPORT_VAR(acs_map[]);
- #endif
-
- #define NCURSES_ACS(c) (acs_map[(unsigned char)c])
-@@ -369,20 +369,20 @@
- #endif
- };
-
--extern NCURSES_EXPORT_VAR(WINDOW *) stdscr;
--extern NCURSES_EXPORT_VAR(WINDOW *) curscr;
--extern NCURSES_EXPORT_VAR(WINDOW *) newscr;
-+extern WINDOW * NCURSES_EXPORT_VAR(stdscr);
-+extern WINDOW * NCURSES_EXPORT_VAR(curscr);
-+extern WINDOW * NCURSES_EXPORT_VAR(newscr);
-
--extern NCURSES_EXPORT_VAR(int) LINES;
--extern NCURSES_EXPORT_VAR(int) COLS;
--extern NCURSES_EXPORT_VAR(int) TABSIZE;
-+extern int NCURSES_EXPORT_VAR(LINES);
-+extern int NCURSES_EXPORT_VAR(COLS);
-+extern int NCURSES_EXPORT_VAR(TABSIZE);
-
- /*
- * This global was an undocumented feature under AIX curses.
- */
--extern NCURSES_EXPORT_VAR(int) ESCDELAY; /* ESC expire time in milliseconds */
-+extern int NCURSES_EXPORT_VAR(ESCDELAY); /* ESC expire time in milliseconds */
-
--extern NCURSES_EXPORT_VAR(char) ttytype[]; /* needed for backward compatibility */
-+extern char NCURSES_EXPORT_VAR(ttytype[]); /* needed for backward compatibility */
-
- /*
- * These functions are extensions - not in XSI Curses.
---- ncurses-5.4/include/curses.tail~visibility.patch
-+++ ncurses-5.4/include/curses.tail
-@@ -110,7 +110,7 @@
- #define TRACE_MAXIMUM ((1 << TRACE_SHIFT) - 1) /* maximum trace level */
-
- #if defined(TRACE) || defined(NCURSES_TEST)
--extern NCURSES_EXPORT_VAR(int) _nc_optimize_enable; /* enable optimizations */
-+extern int NCURSES_EXPORT_VAR(_nc_optimize_enable); /* enable optimizations */
- #ifdef _XOPEN_SOURCE_EXTENDED
- extern NCURSES_EXPORT(const char *) _nc_viswbuf(const wchar_t *);
- #endif
---- ncurses-5.4/include/curses.wide~visibility.patch
-+++ ncurses-5.4/include/curses.wide
-@@ -3,7 +3,7 @@
-
- /* $Id: curses.wide,v 1.28 2004/01/03 20:35:14 tom Exp $ */
-
--extern NCURSES_EXPORT_VAR(cchar_t *) _nc_wacs;
-+extern cchar_t * NCURSES_EXPORT_VAR(_nc_wacs);
-
- #define NCURSES_WACS(c) (&_nc_wacs[(unsigned char)c])
-
---- ncurses-5.4/menu/menu.priv.h~visibility.patch
-+++ ncurses-5.4/menu/menu.priv.h
-@@ -49,8 +49,8 @@
- /* Backspace code */
- #define BS (8)
-
--extern NCURSES_EXPORT_VAR(ITEM) _nc_Default_Item;
--extern NCURSES_EXPORT_VAR(MENU) _nc_Default_Menu;
-+extern ITEM NCURSES_EXPORT_VAR(_nc_Default_Item);
-+extern MENU NCURSES_EXPORT_VAR(_nc_Default_Menu);
-
- /* Normalize item to default if none was given */
- #define Normalize_Item( item ) ((item)=(item)?(item):&_nc_Default_Item)
---- ncurses-5.4/menu/m_global.c~visibility.patch
-+++ ncurses-5.4/menu/m_global.c
-@@ -41,7 +41,7 @@
-
- static char mark[] = "-";
-
--NCURSES_EXPORT_VAR(MENU) _nc_Default_Menu = {
-+MENU NCURSES_EXPORT_VAR(_nc_Default_Menu) = {
- 16, /* Nr. of chars high */
- 1, /* Nr. of chars wide */
- 16, /* Nr. of items high */
-@@ -80,7 +80,7 @@
- 0 /* status */
- };
-
--NCURSES_EXPORT_VAR(ITEM) _nc_Default_Item = {
-+ITEM NCURSES_EXPORT_VAR(_nc_Default_Item) = {
- { (char *)0, 0 }, /* name */
- { (char *)0, 0 }, /* description */
- (MENU *)0, /* Pointer to parent menu */
---- ncurses-5.4/ncurses/tty/lib_mvcur.c~visibility.patch
-+++ ncurses-5.4/ncurses/tty/lib_mvcur.c
-@@ -937,7 +937,7 @@
- }
-
- #if defined(TRACE) || defined(NCURSES_TEST)
--NCURSES_EXPORT_VAR(int) _nc_optimize_enable = OPTIMIZE_ALL;
-+int NCURSES_EXPORT_VAR(_nc_optimize_enable) = OPTIMIZE_ALL;
- #endif
-
- #if defined(MAIN) || defined(NCURSES_TEST)
-@@ -950,7 +950,7 @@
- #include <tic.h>
- #include <dump_entry.h>
-
--NCURSES_EXPORT_VAR(const char *) _nc_progname = "mvcur";
-+const char * NCURSES_EXPORT_VAR(_nc_progname) = "mvcur";
-
- static unsigned long xmits;
-
---- ncurses-5.4/ncurses/tty/hardscroll.c~visibility.patch
-+++ ncurses-5.4/ncurses/tty/hardscroll.c
-@@ -151,8 +151,7 @@
-
- # undef screen_lines
- # define screen_lines MAXLINES
--NCURSES_EXPORT_VAR(int)
--oldnums[MAXLINES];
-+int NCURSES_EXPORT_VAR(oldnums[MAXLINES]);
- # define OLDNUM(n) oldnums[n]
- # define _tracef printf
- # undef TR
-@@ -163,8 +162,7 @@
- /* OLDNUM(n) indicates which line will be shifted to the position n.
- if OLDNUM(n) == _NEWINDEX, then the line n in new, not shifted from
- somewhere. */
--NCURSES_EXPORT_VAR(int *)
--_nc_oldnums = 0;
-+int * NCURSES_EXPORT_VAR(_nc_oldnums) = 0;
-
- # if USE_HASHMAP
- static int oldnums_allocated = 0;
---- ncurses-5.4/ncurses/base/lib_getch.c~visibility.patch
-+++ ncurses-5.4/ncurses/base/lib_getch.c
-@@ -44,8 +44,7 @@
-
- #include <fifo_defs.h>
-
--NCURSES_EXPORT_VAR(int)
--ESCDELAY = 1000; /* max interval betw. chars in funkeys, in millisecs */
-+int NCURSES_EXPORT_VAR(ESCDELAY) = 1000; /* max interval betw. chars in funkeys, in millisecs */
-
- #ifdef NCURSES_WGETCH_EVENTS
- #define TWAIT_MASK 7
---- ncurses-5.4/ncurses/base/lib_slk.c~visibility.patch
-+++ ncurses-5.4/ncurses/base/lib_slk.c
-@@ -47,8 +47,7 @@
- * We'd like to move these into the screen context structure, but cannot,
- * because slk_init() is called before initscr()/newterm().
- */
--NCURSES_EXPORT_VAR(int)
--_nc_slk_format = 0; /* one more than format specified in slk_init() */
-+int NCURSES_EXPORT_VAR(_nc_slk_format) = 0; /* one more than format specified in slk_init() */
-
- /*
- * Paint the info line for the PC style SLK emulation.
---- ncurses-5.4/ncurses/base/lib_color.c~visibility.patch
-+++ ncurses-5.4/ncurses/base/lib_color.c
-@@ -48,8 +48,8 @@
- * historical reasons. So we assign them in start_color() and also in
- * set_term()'s screen-switching logic.
- */
--NCURSES_EXPORT_VAR(int) COLOR_PAIRS = 0;
--NCURSES_EXPORT_VAR(int) COLORS = 0;
-+int NCURSES_EXPORT_VAR(COLOR_PAIRS) = 0;
-+int NCURSES_EXPORT_VAR(COLORS) = 0;
-
- #define DATA(r,g,b) {r,g,b, 0,0,0, 0}
-
---- ncurses-5.4/ncurses/tinfo/lib_termcap.c~visibility.patch
-+++ ncurses-5.4/ncurses/tinfo/lib_termcap.c
-@@ -50,8 +50,8 @@
- #define L_BRACK '['
- #define SHIFT_OUT 017 /* ^N */
-
--NCURSES_EXPORT_VAR(char *) UP = 0;
--NCURSES_EXPORT_VAR(char *) BC = 0;
-+char * NCURSES_EXPORT_VAR(UP) = 0;
-+char * NCURSES_EXPORT_VAR(BC) = 0;
-
- static char *fix_me = 0;
-
---- ncurses-5.4/ncurses/tinfo/lib_cur_term.c~visibility.patch
-+++ ncurses-5.4/ncurses/tinfo/lib_cur_term.c
-@@ -42,7 +42,7 @@
-
- MODULE_ID("$Id: lib_cur_term.c,v 1.13 2003/12/27 18:21:30 tom Exp $")
-
--NCURSES_EXPORT_VAR(TERMINAL *) cur_term = 0;
-+TERMINAL * NCURSES_EXPORT_VAR(cur_term) = 0;
-
- NCURSES_EXPORT(TERMINAL *)
- set_curterm(TERMINAL * termp)
---- ncurses-5.4/ncurses/tinfo/lib_setup.c~visibility.patch
-+++ ncurses-5.4/ncurses/tinfo/lib_setup.c
-@@ -91,10 +91,10 @@
- # endif
- #endif
-
--NCURSES_EXPORT_VAR(char) ttytype[NAMESIZE] = "";
--NCURSES_EXPORT_VAR(int) LINES = 0;
--NCURSES_EXPORT_VAR(int) COLS = 0;
--NCURSES_EXPORT_VAR(int) TABSIZE = 0;
-+char NCURSES_EXPORT_VAR(ttytype[NAMESIZE]) = "";
-+int NCURSES_EXPORT_VAR(LINES) = 0;
-+int NCURSES_EXPORT_VAR(COLS) = 0;
-+int NCURSES_EXPORT_VAR(TABSIZE) = 0;
-
- static int _use_env = TRUE;
-
---- ncurses-5.4/ncurses/tinfo/MKnames.awk~visibility.patch
-+++ ncurses-5.4/ncurses/tinfo/MKnames.awk
-@@ -10,7 +10,7 @@
- print "#include <term.h>" > "namehdr"
- print "#define DCL(it) static IT data##it[]" > "namehdr"
- print "#else" > "namehdr"
-- print "#define DCL(it) NCURSES_EXPORT_VAR(IT) it[]" > "namehdr"
-+ print "#define DCL(it) IT NCURSES_EXPORT_VAR(it[])" > "namehdr"
- print "#endif" > "namehdr"
- print "" > "namehdr"
- print "/*" > "boolnames"
---- ncurses-5.4/ncurses/tinfo/lib_tparm.c~visibility.patch
-+++ ncurses-5.4/ncurses/tinfo/lib_tparm.c
-@@ -115,7 +115,7 @@
- bool num_type;
- } stack_frame;
-
--NCURSES_EXPORT_VAR(int) _nc_tparm_err = 0;
-+int NCURSES_EXPORT_VAR(_nc_tparm_err) = 0;
-
- static stack_frame stack[STACKSIZE];
- static int stack_ptr;
---- ncurses-5.4/ncurses/tinfo/lib_tputs.c~visibility.patch
-+++ ncurses-5.4/ncurses/tinfo/lib_tputs.c
-@@ -47,10 +47,10 @@
-
- MODULE_ID("$Id: lib_tputs.c,v 1.62 2003/08/23 21:39:20 tom Exp $")
-
--NCURSES_EXPORT_VAR(char) PC = 0; /* used by termcap library */
--NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed = 0; /* used by termcap library */
-+char NCURSES_EXPORT_VAR(PC) = 0; /* used by termcap library */
-+NCURSES_OSPEED NCURSES_EXPORT_VAR(ospeed) = 0; /* used by termcap library */
-
--NCURSES_EXPORT_VAR(int) _nc_nulls_sent = 0; /* used by 'tack' program */
-+int NCURSES_EXPORT_VAR(_nc_nulls_sent) = 0; /* used by 'tack' program */
-
- static int (*my_outch) (int c) = _nc_outch;
-
---- ncurses-5.4/ncurses/tinfo/comp_error.c~visibility.patch
-+++ ncurses-5.4/ncurses/tinfo/comp_error.c
-@@ -42,9 +42,9 @@
-
- MODULE_ID("$Id: comp_error.c,v 1.25 2002/09/07 20:05:07 tom Exp $")
-
--NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings = FALSE;
--NCURSES_EXPORT_VAR(int) _nc_curr_line = 0; /* current line # in input */
--NCURSES_EXPORT_VAR(int) _nc_curr_col = 0; /* current column # in input */
-+bool NCURSES_EXPORT_VAR(_nc_suppress_warnings) = FALSE;
-+int NCURSES_EXPORT_VAR(_nc_curr_line) = 0; /* current line # in input */
-+int NCURSES_EXPORT_VAR(_nc_curr_col) = 0; /* current column # in input */
-
- static const char *sourcename;
- static char *termtype;
---- ncurses-5.4/ncurses/tinfo/free_ttype.c~visibility.patch
-+++ ncurses-5.4/ncurses/tinfo/free_ttype.c
-@@ -92,7 +92,7 @@
- }
-
- #if NCURSES_XNAMES
--NCURSES_EXPORT_VAR(bool) _nc_user_definable = TRUE;
-+bool NCURSES_EXPORT_VAR(_nc_user_definable) = TRUE;
-
- NCURSES_EXPORT(int)
- use_extended_names(bool flag)
---- ncurses-5.4/ncurses/tinfo/comp_parse.c~visibility.patch
-+++ ncurses-5.4/ncurses/tinfo/comp_parse.c
-@@ -78,8 +78,8 @@
- * _nc_head _nc_tail
- */
-
--NCURSES_EXPORT_VAR(ENTRY *) _nc_head = 0;
--NCURSES_EXPORT_VAR(ENTRY *) _nc_tail = 0;
-+ENTRY * NCURSES_EXPORT_VAR(_nc_head) = 0;
-+ENTRY * NCURSES_EXPORT_VAR(_nc_tail) = 0;
-
- static void
- enqueue(ENTRY * ep)
---- ncurses-5.4/ncurses/tinfo/comp_scan.c~visibility.patch
-+++ ncurses-5.4/ncurses/tinfo/comp_scan.c
-@@ -60,19 +60,13 @@
-
- #define iswhite(ch) (ch == ' ' || ch == '\t')
-
--NCURSES_EXPORT_VAR(int)
--_nc_syntax = 0; /* termcap or terminfo? */
--NCURSES_EXPORT_VAR(long)
--_nc_curr_file_pos = 0; /* file offset of current line */
--NCURSES_EXPORT_VAR(long)
--_nc_comment_start = 0; /* start of comment range before name */
--NCURSES_EXPORT_VAR(long)
--_nc_comment_end = 0; /* end of comment range before name */
--NCURSES_EXPORT_VAR(long)
--_nc_start_line = 0; /* start line of current entry */
-+int NCURSES_EXPORT_VAR(_nc_syntax) = 0; /* termcap or terminfo? */
-+long NCURSES_EXPORT_VAR(_nc_curr_file_pos) = 0; /* file offset of current line */
-+long NCURSES_EXPORT_VAR(_nc_comment_start) = 0; /* start of comment range before name */
-+long NCURSES_EXPORT_VAR(_nc_comment_end) = 0; /* end of comment range before name */
-+long NCURSES_EXPORT_VAR(_nc_start_line) = 0; /* start line of current entry */
-
--NCURSES_EXPORT_VAR(struct token)
--_nc_curr_token =
-+struct token NCURSES_EXPORT_VAR(_nc_curr_token) =
- {
- 0, 0, 0
- };
-@@ -90,8 +84,7 @@
- static char *pushname;
-
- #if NCURSES_EXT_FUNCS
--NCURSES_EXPORT_VAR(bool)
--_nc_disable_period = FALSE; /* used by tic -a option */
-+bool NCURSES_EXPORT_VAR(_nc_disable_period) = FALSE; /* used by tic -a option */
- #endif
-
- static bool end_of_stream(void);
---- ncurses-5.4/ncurses/tinfo/lib_acs.c~visibility.patch
-+++ ncurses-5.4/ncurses/tinfo/lib_acs.c
-@@ -37,8 +37,7 @@
- MODULE_ID("$Id: lib_acs.c,v 1.25 2002/12/28 16:26:46 tom Exp $")
-
- #if BROKEN_LINKER
--NCURSES_EXPORT_VAR(chtype *)
--_nc_acs_map(void)
-+chtype * NCURSES_EXPORT_VAR(_nc_acs_map)(void)
- {
- static chtype *the_map = 0;
- if (the_map == 0)
-@@ -46,7 +45,7 @@
- return the_map;
- }
- #else
--NCURSES_EXPORT_VAR(chtype) acs_map[ACS_LEN] =
-+chtype NCURSES_EXPORT_VAR(acs_map[ACS_LEN]) =
- {
- 0
- };
---- ncurses-5.4/ncurses/tinfo/lib_data.c~visibility.patch
-+++ ncurses-5.4/ncurses/tinfo/lib_data.c
-@@ -46,14 +46,11 @@
- * OS/2's native linker complains if we don't initialize public data when
- * constructing a dll (reported by J.J.G.Ripoll).
- */
--NCURSES_EXPORT_VAR(WINDOW *)
--stdscr = 0;
--NCURSES_EXPORT_VAR(WINDOW *)
--curscr = 0;
--NCURSES_EXPORT_VAR(WINDOW *)
--newscr = 0;
-+WINDOW * NCURSES_EXPORT_VAR(stdscr) = 0;
-+WINDOW * NCURSES_EXPORT_VAR(curscr) = 0;
-+WINDOW * NCURSES_EXPORT_VAR(newscr) = 0;
-
--NCURSES_EXPORT_VAR(SCREEN *) _nc_screen_chain = 0;
-+SCREEN * NCURSES_EXPORT_VAR(_nc_screen_chain) = 0;
-
- /*
- * The variable 'SP' will be defined as a function on systems that cannot link
-@@ -87,5 +84,5 @@
- }
-
- #else
--NCURSES_EXPORT_VAR(SCREEN *) SP = NULL; /* Some linkers require initialized data... */
-+SCREEN * NCURSES_EXPORT_VAR(SP) = NULL; /* Some linkers require initialized data... */
- #endif
---- ncurses-5.4/ncurses/trace/lib_trace.c~visibility.patch
-+++ ncurses-5.4/ncurses/trace/lib_trace.c
-@@ -42,11 +42,11 @@
-
- MODULE_ID("$Id: lib_trace.c,v 1.53 2003/11/23 00:39:30 tom Exp $")
-
--NCURSES_EXPORT_VAR(unsigned) _nc_tracing = 0; /* always define this */
-+unsigned NCURSES_EXPORT_VAR(_nc_tracing) = 0; /* always define this */
-
- #ifdef TRACE
--NCURSES_EXPORT_VAR(const char *) _nc_tputs_trace = "";
--NCURSES_EXPORT_VAR(long) _nc_outchars = 0;
-+const char * NCURSES_EXPORT_VAR(_nc_tputs_trace) = "";
-+long NCURSES_EXPORT_VAR(_nc_outchars) = 0;
-
- static FILE *tracefp = 0; /* default to writing to stderr */
-
---- ncurses-5.4/ncurses/curses.priv.h~visibility.patch
-+++ ncurses-5.4/ncurses/curses.priv.h
-@@ -498,7 +498,7 @@
- #endif
- };
-
--extern NCURSES_EXPORT_VAR(SCREEN *) _nc_screen_chain;
-+extern SCREEN * NCURSES_EXPORT_VAR(_nc_screen_chain);
-
- #if NCURSES_NOMACROS
- #include <nomacros.h>
-@@ -752,9 +752,9 @@
- extern NCURSES_EXPORT(int) _nc_retrace_int (int);
- extern NCURSES_EXPORT(unsigned) _nc_retrace_unsigned (unsigned);
- extern NCURSES_EXPORT(void) _nc_fifo_dump (void);
--extern NCURSES_EXPORT_VAR(const char *) _nc_tputs_trace;
--extern NCURSES_EXPORT_VAR(long) _nc_outchars;
--extern NCURSES_EXPORT_VAR(unsigned) _nc_tracing;
-+extern const char * NCURSES_EXPORT_VAR(_nc_tputs_trace);
-+extern long NCURSES_EXPORT_VAR(_nc_outchars);
-+extern unsigned NCURSES_EXPORT_VAR(_nc_tracing);
-
- #if USE_WIDEC_SUPPORT
- extern NCURSES_EXPORT(const char *) _nc_viswbuf2 (int, const wchar_t *);
-@@ -1055,7 +1055,7 @@
- #endif
-
- /* scroll indices */
--extern NCURSES_EXPORT_VAR(int *) _nc_oldnums;
-+extern int * NCURSES_EXPORT_VAR(_nc_oldnums);
-
- #define USE_SETBUF_0 0
-
-@@ -1074,7 +1074,7 @@
- extern NCURSES_EXPORT(void) _nc_set_screen (SCREEN *);
- #else
- /* current screen is private data; avoid possible linking conflicts too */
--extern NCURSES_EXPORT_VAR(SCREEN *) SP;
-+extern SCREEN * NCURSES_EXPORT_VAR(SP);
- #define _nc_alloc_screen() ((SP = typeCalloc(SCREEN, 1)) != 0)
- #define _nc_set_screen(sp) SP = sp
- #endif
-@@ -1087,7 +1087,7 @@
- #define screen_lines SP->_lines
- #define screen_columns SP->_columns
-
--extern NCURSES_EXPORT_VAR(int) _nc_slk_format; /* != 0 if slk_init() called */
-+extern int NCURSES_EXPORT_VAR(_nc_slk_format); /* != 0 if slk_init() called */
- extern NCURSES_EXPORT(int) _nc_slk_initialize (WINDOW *, int);
-
- /*
---- /dev/null
-+++ ncurses-5.4/m4/cf.m4
-@@ -0,0 +1,3703 @@
-+dnl***************************************************************************
-+dnl Copyright (c) 1998-2003,2004 Free Software Foundation, Inc. *
-+dnl *
-+dnl Permission is hereby granted, free of charge, to any person obtaining a *
-+dnl copy of this software and associated documentation files (the *
-+dnl "Software"), to deal in the Software without restriction, including *
-+dnl without limitation the rights to use, copy, modify, merge, publish, *
-+dnl distribute, distribute with modifications, sublicense, and/or sell *
-+dnl copies of the Software, and to permit persons to whom the Software is *
-+dnl furnished to do so, subject to the following conditions: *
-+dnl *
-+dnl The above copyright notice and this permission notice shall be included *
-+dnl in all copies or substantial portions of the Software. *
-+dnl *
-+dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
-+dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
-+dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
-+dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
-+dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
-+dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
-+dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
-+dnl *
-+dnl Except as contained in this notice, the name(s) of the above copyright *
-+dnl holders shall not be used in advertising or otherwise to promote the *
-+dnl sale, use or other dealings in this Software without prior written *
-+dnl authorization. *
-+dnl***************************************************************************
-+dnl
-+dnl Author: Thomas E. Dickey 1995-2003
-+dnl
-+dnl $Id: aclocal.m4,v 1.333 2004/01/30 20:59:56 tom Exp $
-+dnl Macros used in NCURSES auto-configuration script.
-+dnl
-+dnl See http://invisible-island.net/autoconf/ for additional information.
-+dnl
-+dnl ---------------------------------------------------------------------------
-+dnl ---------------------------------------------------------------------------
-+dnl CF_ADA_INCLUDE_DIRS version: 4 updated: 2002/12/01 00:12:15
-+dnl -------------------
-+dnl Construct the list of include-options for the C programs in the Ada95
-+dnl binding.
-+AC_DEFUN([CF_ADA_INCLUDE_DIRS],
-+[
-+ACPPFLAGS="-I. -I../../include $ACPPFLAGS"
-+if test "$srcdir" != "."; then
-+ ACPPFLAGS="-I\$(srcdir)/../../include $ACPPFLAGS"
-+fi
-+if test "$GCC" != yes; then
-+ ACPPFLAGS="$ACPPFLAGS -I\$(includedir)"
-+elif test "$includedir" != "/usr/include"; then
-+ if test "$includedir" = '${prefix}/include' ; then
-+ if test $prefix != /usr ; then
-+ ACPPFLAGS="$ACPPFLAGS -I\$(includedir)"
-+ fi
-+ else
-+ ACPPFLAGS="$ACPPFLAGS -I\$(includedir)"
-+ fi
-+fi
-+AC_SUBST(ACPPFLAGS)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_ADD_CFLAGS version: 5 updated: 2002/12/01 00:12:15
-+dnl -------------
-+dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS
-+dnl The second parameter if given makes this macro verbose.
-+AC_DEFUN([CF_ADD_CFLAGS],
-+[
-+cf_new_cflags=
-+cf_new_cppflags=
-+for cf_add_cflags in $1
-+do
-+ case $cf_add_cflags in #(vi
-+ -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
-+ case "$CPPFLAGS" in
-+ *$cf_add_cflags) #(vi
-+ ;;
-+ *) #(vi
-+ cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
-+ ;;
-+ esac
-+ ;;
-+ *)
-+ cf_new_cflags="$cf_new_cflags $cf_add_cflags"
-+ ;;
-+ esac
-+done
-+
-+if test -n "$cf_new_cflags" ; then
-+ ifelse($2,,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)])
-+ CFLAGS="$CFLAGS $cf_new_cflags"
-+fi
-+
-+if test -n "$cf_new_cppflags" ; then
-+ ifelse($2,,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)])
-+ CPPFLAGS="$cf_new_cppflags $CPPFLAGS"
-+fi
-+
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_ANSI_CC_CHECK version: 9 updated: 2001/12/30 17:53:34
-+dnl ----------------
-+dnl This is adapted from the macros 'fp_PROG_CC_STDC' and 'fp_C_PROTOTYPES'
-+dnl in the sharutils 4.2 distribution.
-+AC_DEFUN([CF_ANSI_CC_CHECK],
-+[
-+AC_CACHE_CHECK(for ${CC-cc} option to accept ANSI C, cf_cv_ansi_cc,[
-+cf_cv_ansi_cc=no
-+cf_save_CFLAGS="$CFLAGS"
-+cf_save_CPPFLAGS="$CPPFLAGS"
-+# 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 -Aa -D_HPUX_SOURCE
-+# SVR4 -Xc
-+# UnixWare 1.2 (cannot use -Xc, since ANSI/POSIX clashes)
-+for cf_arg in "-DCC_HAS_PROTOS" \
-+ "" \
-+ -qlanglvl=ansi \
-+ -std1 \
-+ -Ae \
-+ "-Aa -D_HPUX_SOURCE" \
-+ -Xc
-+do
-+ CF_ADD_CFLAGS($cf_arg)
-+ AC_TRY_COMPILE(
-+[
-+#ifndef CC_HAS_PROTOS
-+#if !defined(__STDC__) || (__STDC__ != 1)
-+choke me
-+#endif
-+#endif
-+],[
-+ int test (int i, double x);
-+ struct s1 {int (*f) (int a);};
-+ struct s2 {int (*f) (double a);};],
-+ [cf_cv_ansi_cc="$cf_arg"; break])
-+done
-+CFLAGS="$cf_save_CFLAGS"
-+CPPFLAGS="$cf_save_CPPFLAGS"
-+])
-+
-+if test "$cf_cv_ansi_cc" != "no"; then
-+if test ".$cf_cv_ansi_cc" != ".-DCC_HAS_PROTOS"; then
-+ CF_ADD_CFLAGS($cf_cv_ansi_cc)
-+else
-+ AC_DEFINE(CC_HAS_PROTOS)
-+fi
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_ANSI_CC_REQD version: 3 updated: 1997/09/06 13:40:44
-+dnl ---------------
-+dnl For programs that must use an ANSI compiler, obtain compiler options that
-+dnl will make it recognize prototypes. We'll do preprocessor checks in other
-+dnl macros, since tools such as unproto can fake prototypes, but only part of
-+dnl the preprocessor.
-+AC_DEFUN([CF_ANSI_CC_REQD],
-+[AC_REQUIRE([CF_ANSI_CC_CHECK])
-+if test "$cf_cv_ansi_cc" = "no"; then
-+ AC_ERROR(
-+[Your compiler does not appear to recognize prototypes.
-+You have the following choices:
-+ a. adjust your compiler options
-+ b. get an up-to-date compiler
-+ c. use a wrapper such as unproto])
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_BOOL_DECL version: 8 updated: 2004/01/30 15:51:18
-+dnl ------------
-+dnl Test if 'bool' is a builtin type in the configured C++ compiler. Some
-+dnl older compilers (e.g., gcc 2.5.8) don't support 'bool' directly; gcc
-+dnl 2.6.3 does, in anticipation of the ANSI C++ standard.
-+dnl
-+dnl Treat the configuration-variable specially here, since we're directly
-+dnl substituting its value (i.e., 1/0).
-+dnl
-+dnl $1 is the shell variable to store the result in, if not $cv_cv_builtin_bool
-+AC_DEFUN([CF_BOOL_DECL],
-+[
-+AC_MSG_CHECKING(if we should include stdbool.h)
-+
-+AC_CACHE_VAL(cf_cv_header_stdbool_h,[
-+ AC_TRY_COMPILE([],[bool foo = false],
-+ [cf_cv_header_stdbool_h=0],
-+ [AC_TRY_COMPILE([
-+#ifndef __BEOS__
-+#include <stdbool.h>
-+#endif
-+],[bool foo = false],
-+ [cf_cv_header_stdbool_h=1],
-+ [cf_cv_header_stdbool_h=0])])])
-+
-+if test "$cf_cv_header_stdbool_h" = 1
-+then AC_MSG_RESULT(yes)
-+else AC_MSG_RESULT(no)
-+fi
-+
-+AC_MSG_CHECKING([for builtin bool type])
-+
-+AC_CACHE_VAL(ifelse($1,,cf_cv_builtin_bool,[$1]),[
-+ AC_TRY_COMPILE([
-+#include <stdio.h>
-+#include <sys/types.h>
-+],[bool x = false],
-+ [ifelse($1,,cf_cv_builtin_bool,[$1])=1],
-+ [ifelse($1,,cf_cv_builtin_bool,[$1])=0])
-+ ])
-+
-+if test "$ifelse($1,,cf_cv_builtin_bool,[$1])" = 1
-+then AC_MSG_RESULT(yes)
-+else AC_MSG_RESULT(no)
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_BOOL_SIZE version: 10 updated: 2002/02/23 20:38:31
-+dnl ------------
-+dnl Test for the size of 'bool' in the configured C++ compiler (e.g., a type).
-+dnl Don't bother looking for bool.h, since it's been deprecated.
-+dnl
-+dnl If the current compiler is C rather than C++, we get the bool definition
-+dnl from <stdbool.h>.
-+AC_DEFUN([CF_BOOL_SIZE],
-+[
-+AC_MSG_CHECKING([for size of bool])
-+AC_CACHE_VAL(cf_cv_type_of_bool,[
-+ rm -f cf_test.out
-+ AC_TRY_RUN([
-+#include <stdlib.h>
-+#include <stdio.h>
-+
-+#if defined(__cplusplus)
-+
-+#ifdef HAVE_GXX_BUILTIN_H
-+#include <g++/builtin.h>
-+#elif HAVE_GPP_BUILTIN_H
-+#include <gpp/builtin.h>
-+#elif HAVE_BUILTIN_H
-+#include <builtin.h>
-+#endif
-+
-+#else
-+
-+#if $cf_cv_header_stdbool_h
-+#include <stdbool.h>
-+#endif
-+
-+#endif
-+
-+main()
-+{
-+ FILE *fp = fopen("cf_test.out", "w");
-+ if (fp != 0) {
-+ bool x = true;
-+ if ((bool)(-x) >= 0)
-+ fputs("unsigned ", fp);
-+ if (sizeof(x) == sizeof(int)) fputs("int", fp);
-+ else if (sizeof(x) == sizeof(char)) fputs("char", fp);
-+ else if (sizeof(x) == sizeof(short))fputs("short",fp);
-+ else if (sizeof(x) == sizeof(long)) fputs("long", fp);
-+ fclose(fp);
-+ }
-+ exit(0);
-+}
-+ ],
-+ [cf_cv_type_of_bool=`cat cf_test.out`
-+ if test -z "$cf_cv_type_of_bool"; then
-+ cf_cv_type_of_bool=unknown
-+ fi],
-+ [cf_cv_type_of_bool=unknown],
-+ [cf_cv_type_of_bool=unknown])
-+ ])
-+ rm -f cf_test.out
-+AC_MSG_RESULT($cf_cv_type_of_bool)
-+if test "$cf_cv_type_of_bool" = unknown ; then
-+ case .$NCURSES_BOOL in #(vi
-+ .auto|.) NCURSES_BOOL=unsigned;;
-+ esac
-+ AC_MSG_WARN(Assuming $NCURSES_BOOL for type of bool)
-+ cf_cv_type_of_bool=$NCURSES_BOOL
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_CFG_DEFAULTS version: 6 updated: 2003/07/12 15:15:19
-+dnl ---------------
-+dnl Determine the default configuration into which we'll install ncurses. This
-+dnl can be overridden by the user's command-line options. There's two items to
-+dnl look for:
-+dnl 1. the prefix (e.g., /usr)
-+dnl 2. the header files (e.g., /usr/include/ncurses)
-+dnl We'll look for a previous installation of ncurses and use the same defaults.
-+dnl
-+dnl We don't use AC_PREFIX_DEFAULT, because it gets evaluated too soon, and
-+dnl we don't use AC_PREFIX_PROGRAM, because we cannot distinguish ncurses's
-+dnl programs from a vendor's.
-+AC_DEFUN([CF_CFG_DEFAULTS],
-+[
-+AC_MSG_CHECKING(for prefix)
-+if test "x$prefix" = "xNONE" ; then
-+ case "$cf_cv_system_name" in
-+ # non-vendor systems don't have a conflict
-+ openbsd*|netbsd*|freebsd*|linux*|cygwin*|k*bsd*-gnu)
-+ prefix=/usr
-+ ;;
-+ *) prefix=$ac_default_prefix
-+ ;;
-+ esac
-+fi
-+AC_MSG_RESULT($prefix)
-+
-+if test "x$prefix" = "xNONE" ; then
-+AC_MSG_CHECKING(for default include-directory)
-+test -n "$verbose" && echo 1>&AC_FD_MSG
-+for cf_symbol in \
-+ $includedir \
-+ $includedir/ncurses \
-+ $prefix/include \
-+ $prefix/include/ncurses \
-+ /usr/local/include \
-+ /usr/local/include/ncurses \
-+ /usr/include \
-+ /usr/include/ncurses
-+do
-+ cf_dir=`eval echo $cf_symbol`
-+ if test -f $cf_dir/curses.h ; then
-+ if ( fgrep NCURSES_VERSION $cf_dir/curses.h 2>&1 >/dev/null ) ; then
-+ includedir="$cf_symbol"
-+ test -n "$verbose" && echo $ac_n " found " 1>&AC_FD_MSG
-+ break
-+ fi
-+ fi
-+ test -n "$verbose" && echo " tested $cf_dir" 1>&AC_FD_MSG
-+done
-+AC_MSG_RESULT($includedir)
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_CGETENT version: 3 updated: 2000/08/12 23:18:52
-+dnl ----------
-+dnl Check if the terminal-capability database functions are available. If not,
-+dnl ncurses has a much-reduced version.
-+AC_DEFUN([CF_CGETENT],[
-+AC_MSG_CHECKING(for terminal-capability database functions)
-+AC_CACHE_VAL(cf_cv_cgetent,[
-+AC_TRY_LINK([
-+#include <stdlib.h>],[
-+ char temp[128];
-+ char *buf = temp;
-+ char *db_array = temp;
-+ cgetent(&buf, /* int *, */ &db_array, "vt100");
-+ cgetcap(buf, "tc", '=');
-+ cgetmatch(buf, "tc");
-+ ],
-+ [cf_cv_cgetent=yes],
-+ [cf_cv_cgetent=no])
-+])
-+AC_MSG_RESULT($cf_cv_cgetent)
-+test "$cf_cv_cgetent" = yes && AC_DEFINE(HAVE_BSD_CGETENT)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_CHECK_CACHE version: 9 updated: 2004/01/30 15:59:13
-+dnl --------------
-+dnl Check if we're accidentally using a cache from a different machine.
-+dnl Derive the system name, as a check for reusing the autoconf cache.
-+dnl
-+dnl If we've packaged config.guess and config.sub, run that (since it does a
-+dnl better job than uname). Normally we'll use AC_CANONICAL_HOST, but allow
-+dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM
-+dnl which is useful in cross-compiles.
-+dnl
-+dnl Note: we would use $ac_config_sub, but that is one of the places where
-+dnl autoconf 2.5x broke compatibility with autoconf 2.13
-+AC_DEFUN([CF_CHECK_CACHE],
-+[
-+if test -f $srcdir/config.guess ; then
-+ ifelse([$1],,[AC_CANONICAL_HOST],[$1])
-+ system_name="$host_os"
-+else
-+ system_name="`(uname -s -r) 2>/dev/null`"
-+ if test -z "$system_name" ; then
-+ system_name="`(hostname) 2>/dev/null`"
-+ fi
-+fi
-+test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name")
-+AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"])
-+
-+test -z "$system_name" && system_name="$cf_cv_system_name"
-+test -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name)
-+
-+if test ".$system_name" != ".$cf_cv_system_name" ; then
-+ AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name))
-+ AC_ERROR("Please remove config.cache and try again.")
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_CHECK_ERRNO version: 9 updated: 2001/12/30 18:03:23
-+dnl --------------
-+dnl Check for data that is usually declared in <stdio.h> or <errno.h>, e.g.,
-+dnl the 'errno' variable. Define a DECL_xxx symbol if we must declare it
-+dnl ourselves.
-+dnl
-+dnl $1 = the name to check
-+AC_DEFUN([CF_CHECK_ERRNO],
-+[
-+AC_CACHE_CHECK(if external $1 is declared, cf_cv_dcl_$1,[
-+ AC_TRY_COMPILE([
-+#ifdef HAVE_STDLIB_H
-+#include <stdlib.h>
-+#endif
-+#include <stdio.h>
-+#include <sys/types.h>
-+#include <errno.h> ],
-+ [long x = (long) $1],
-+ [cf_cv_dcl_$1=yes],
-+ [cf_cv_dcl_$1=no])
-+])
-+
-+if test "$cf_cv_dcl_$1" = no ; then
-+ CF_UPPER(cf_result,decl_$1)
-+ AC_DEFINE_UNQUOTED($cf_result)
-+fi
-+
-+# It's possible (for near-UNIX clones) that the data doesn't exist
-+CF_CHECK_EXTERN_DATA($1,int)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_CHECK_EXTERN_DATA version: 3 updated: 2001/12/30 18:03:23
-+dnl --------------------
-+dnl Check for existence of external data in the current set of libraries. If
-+dnl we can modify it, it's real enough.
-+dnl $1 = the name to check
-+dnl $2 = its type
-+AC_DEFUN([CF_CHECK_EXTERN_DATA],
-+[
-+AC_CACHE_CHECK(if external $1 exists, cf_cv_have_$1,[
-+ AC_TRY_LINK([
-+#undef $1
-+extern $2 $1;
-+],
-+ [$1 = 2],
-+ [cf_cv_have_$1=yes],
-+ [cf_cv_have_$1=no])
-+])
-+
-+if test "$cf_cv_have_$1" = yes ; then
-+ CF_UPPER(cf_result,have_$1)
-+ AC_DEFINE_UNQUOTED($cf_result)
-+fi
-+
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_CPP_PARAM_INIT version: 4 updated: 2001/04/07 22:31:18
-+dnl -----------------
-+dnl Check if the C++ compiler accepts duplicate parameter initialization. This
-+dnl is a late feature for the standard and is not in some recent compilers
-+dnl (1999/9/11).
-+AC_DEFUN([CF_CPP_PARAM_INIT],
-+[
-+if test -n "$CXX"; then
-+AC_CACHE_CHECK(if $CXX accepts parameter initialization,cf_cv_cpp_param_init,[
-+ AC_LANG_SAVE
-+ AC_LANG_CPLUSPLUS
-+ AC_TRY_RUN([
-+class TEST {
-+private:
-+ int value;
-+public:
-+ TEST(int x = 1);
-+ ~TEST();
-+};
-+
-+TEST::TEST(int x = 1) // some compilers do not like second initializer
-+{
-+ value = x;
-+}
-+void main() { }
-+],
-+ [cf_cv_cpp_param_init=yes],
-+ [cf_cv_cpp_param_init=no],
-+ [cf_cv_cpp_param_init=unknown])
-+ AC_LANG_RESTORE
-+])
-+fi
-+test "$cf_cv_cpp_param_init" = yes && AC_DEFINE(CPP_HAS_PARAM_INIT)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_CPP_VSCAN_FUNC version: 5 updated: 2001/12/02 01:39:28
-+dnl -----------------
-+dnl Check if the g++ compiler supports vscan function (not a standard feature).
-+AC_DEFUN([CF_CPP_VSCAN_FUNC],
-+[
-+if test -n "$CXX"; then
-+
-+AC_LANG_SAVE
-+AC_LANG_CPLUSPLUS
-+AC_CHECK_HEADERS(strstream.h)
-+
-+AC_CACHE_CHECK(if $CXX supports vscan function,cf_cv_cpp_vscan_func,[
-+ for cf_vscan_func in strstream strstream_cast stdio
-+ do
-+ case $cf_vscan_func in #(vi
-+ stdio) cf_vscan_defs=USE_STDIO_VSCAN ;; #(vi
-+ strstream) cf_vscan_defs=USE_STRSTREAM_VSCAN ;;
-+ strstream_cast) cf_vscan_defs=USE_STRSTREAM_VSCAN_CAST ;;
-+ esac
-+ AC_TRY_LINK([
-+#include <stdio.h>
-+#include <stdarg.h>
-+#define $cf_vscan_defs 1
-+#if defined(USE_STDIO_VSCAN)
-+#elif defined(HAVE_STRSTREAM_H) && defined(USE_STRSTREAM_VSCAN)
-+#include <strstream.h>
-+#endif
-+
-+int scanw(const char* fmt, ...)
-+{
-+ int result = -1;
-+ char buf[BUFSIZ];
-+
-+ va_list args;
-+ va_start(args, fmt);
-+#if defined(USE_STDIO_VSCAN)
-+ if (::vsscanf(buf, fmt, args) != -1)
-+ result = 0;
-+#elif defined(USE_STRSTREAM_VSCAN)
-+ strstreambuf ss(buf, sizeof(buf));
-+ if (ss.vscan(fmt, args) != -1)
-+ result = 0;
-+#elif defined(USE_STRSTREAM_VSCAN_CAST)
-+ strstreambuf ss(buf, sizeof(buf));
-+ if (ss.vscan(fmt, (_IO_va_list)args) != -1)
-+ result = 0;
-+#else
-+#error case $cf_vscan_func failed
-+#endif
-+ va_end(args);
-+ return result;
-+}
-+],[int tmp, foo = scanw("%d", &tmp)],
-+ [cf_cv_cpp_vscan_func=$cf_vscan_func; break],
-+ [cf_cv_cpp_vscan_func=no])
-+ test "$cf_cv_cpp_vscan_func" != no && break
-+ done
-+])
-+
-+AC_LANG_RESTORE
-+fi
-+
-+case $cf_cv_cpp_vscan_func in #(vi
-+stdio) #(vi
-+ AC_DEFINE(CPP_HAS_VSCAN_FUNC)
-+ AC_DEFINE(USE_STDIO_VSCAN)
-+ ;;
-+strstream)
-+ AC_DEFINE(CPP_HAS_VSCAN_FUNC)
-+ AC_DEFINE(USE_STRSTREAM_VSCAN)
-+ ;;
-+strstream_cast)
-+ AC_DEFINE(CPP_HAS_VSCAN_FUNC)
-+ AC_DEFINE(USE_STRSTREAM_VSCAN_CAST)
-+ ;;
-+esac
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_DIRNAME version: 4 updated: 2002/12/21 19:25:52
-+dnl ----------
-+dnl "dirname" is not portable, so we fake it with a shell script.
-+AC_DEFUN([CF_DIRNAME],[$1=`echo $2 | sed -e 's%/[[^/]]*$%%'`])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_DIRS_TO_MAKE version: 3 updated: 2002/02/23 20:38:31
-+dnl ---------------
-+AC_DEFUN([CF_DIRS_TO_MAKE],
-+[
-+DIRS_TO_MAKE="lib"
-+for cf_item in $cf_list_models
-+do
-+ CF_OBJ_SUBDIR($cf_item,cf_subdir)
-+ for cf_item2 in $DIRS_TO_MAKE
-+ do
-+ test $cf_item2 = $cf_subdir && break
-+ done
-+ test ".$cf_item2" != ".$cf_subdir" && DIRS_TO_MAKE="$DIRS_TO_MAKE $cf_subdir"
-+done
-+for cf_dir in $DIRS_TO_MAKE
-+do
-+ test ! -d $cf_dir && mkdir $cf_dir
-+done
-+AC_SUBST(DIRS_TO_MAKE)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_ERRNO version: 5 updated: 1997/11/30 12:44:39
-+dnl --------
-+dnl Check if 'errno' is declared in <errno.h>
-+AC_DEFUN([CF_ERRNO],
-+[
-+CF_CHECK_ERRNO(errno)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_ETIP_DEFINES version: 3 updated: 2003/03/22 19:13:43
-+dnl ---------------
-+dnl Test for conflicting definitions of exception in gcc 2.8.0, etc., between
-+dnl math.h and builtin.h, only for ncurses
-+AC_DEFUN([CF_ETIP_DEFINES],
-+[
-+AC_MSG_CHECKING(for special defines needed for etip.h)
-+cf_save_CXXFLAGS="$CXXFLAGS"
-+cf_result="none"
-+for cf_math in "" MATH_H
-+do
-+for cf_excp in "" MATH_EXCEPTION
-+do
-+ CXXFLAGS="$cf_save_CXXFLAGS -I${srcdir}/c++ -I${srcdir}/menu -I${srcdir}/include"
-+ test -n "$cf_math" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_math}"
-+ test -n "$cf_excp" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_excp}"
-+AC_TRY_COMPILE([
-+#include <etip.h.in>
-+],[],[
-+ test -n "$cf_math" && AC_DEFINE_UNQUOTED(ETIP_NEEDS_${cf_math})
-+ test -n "$cf_excp" && AC_DEFINE_UNQUOTED(ETIP_NEEDS_${cf_excp})
-+ cf_result="$cf_math $cf_excp"
-+ break
-+],[])
-+done
-+done
-+AC_MSG_RESULT($cf_result)
-+CXXFLAGS="$cf_save_CXXFLAGS"
-+])
-+dnl ---------------------------------------------------------------------------
-+dnl CF_FUNC_MEMMOVE version: 5 updated: 2000/08/12 23:18:52
-+dnl ---------------
-+dnl Check for memmove, or a bcopy that can handle overlapping copy. If neither
-+dnl is found, add our own version of memmove to the list of objects.
-+AC_DEFUN([CF_FUNC_MEMMOVE],
-+[
-+AC_CHECK_FUNC(memmove,,[
-+AC_CHECK_FUNC(bcopy,[
-+ AC_CACHE_CHECK(if bcopy does overlapping moves,cf_cv_good_bcopy,[
-+ AC_TRY_RUN([
-+int main() {
-+ static char data[] = "abcdefghijklmnopqrstuwwxyz";
-+ char temp[40];
-+ bcopy(data, temp, sizeof(data));
-+ bcopy(temp+10, temp, 15);
-+ bcopy(temp+5, temp+15, 10);
-+ exit (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz"));
-+}
-+ ],
-+ [cf_cv_good_bcopy=yes],
-+ [cf_cv_good_bcopy=no],
-+ [cf_cv_good_bcopy=unknown])
-+ ])
-+ ],[cf_cv_good_bcopy=no])
-+ if test "$cf_cv_good_bcopy" = yes ; then
-+ AC_DEFINE(USE_OK_BCOPY)
-+ else
-+ AC_DEFINE(USE_MY_MEMMOVE)
-+ fi
-+])])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_FUNC_POLL version: 2 updated: 2000/02/06 01:38:04
-+dnl ------------
-+dnl See if the poll function really works. Some platforms have poll(), but
-+dnl it does not work for terminals or files.
-+AC_DEFUN([CF_FUNC_POLL],[
-+AC_CACHE_CHECK(if poll really works,cf_cv_working_poll,[
-+AC_TRY_RUN([
-+#include <stdio.h>
-+#ifdef HAVE_POLL_H
-+#include <poll.h>
-+#else
-+#include <sys/poll.h>
-+#endif
-+int main() {
-+ struct pollfd myfds;
-+ int ret;
-+
-+ myfds.fd = 0;
-+ myfds.events = POLLIN;
-+
-+ ret = poll(&myfds, 1, 100);
-+ exit(ret != 0);
-+}],
-+ [cf_cv_working_poll=yes],
-+ [cf_cv_working_poll=no],
-+ [cf_cv_working_poll=unknown])])
-+test "$cf_cv_working_poll" = "yes" && AC_DEFINE(HAVE_WORKING_POLL)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_FUNC_TERMIOS version: 2 updated: 2000/07/22 23:37:24
-+dnl ---------------
-+dnl Some old/broken variations define tcgetattr() only as a macro in
-+dnl termio(s).h
-+AC_DEFUN([CF_FUNC_TERMIOS],[
-+AC_REQUIRE([CF_STRUCT_TERMIOS])
-+AC_CACHE_CHECK(for tcgetattr, cf_cv_have_tcgetattr,[
-+AC_TRY_LINK([
-+#include <sys/types.h>
-+#ifdef HAVE_UNISTD_H
-+#include <unistd.h>
-+#endif
-+#ifdef HAVE_TERMIOS_H
-+#include <termios.h>
-+#define TTY struct termios
-+#else
-+#ifdef HAVE_TERMIO_H
-+#include <termio.h>
-+#define TTY struct termio
-+#endif
-+#endif
-+],[
-+TTY foo;
-+tcgetattr(1, &foo);],
-+[cf_cv_have_tcgetattr=yes],
-+[cf_cv_have_tcgetattr=no])])
-+test "$cf_cv_have_tcgetattr" = yes && AC_DEFINE(HAVE_TCGETATTR)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_FUNC_VSSCANF version: 3 updated: 2001/12/19 00:50:10
-+dnl ---------------
-+dnl Check for vsscanf() function, which is in c9x but generally not in earlier
-+dnl versions of C. It is in the GNU C library, and can often be simulated by
-+dnl other functions.
-+AC_DEFUN([CF_FUNC_VSSCANF],
-+[
-+AC_CACHE_CHECK(for vsscanf function or workaround,cf_cv_func_vsscanf,[
-+AC_TRY_LINK([
-+#include <stdarg.h>
-+#include <stdio.h>],[
-+ va_list ap;
-+ vsscanf("from", "%d", ap)],[cf_cv_func_vsscanf=vsscanf],[
-+AC_TRY_LINK([
-+#include <stdarg.h>
-+#include <stdio.h>],[
-+ FILE strbuf;
-+ char *str = "from";
-+
-+ strbuf._flag = _IOREAD;
-+ strbuf._ptr = strbuf._base = (unsigned char *) str;
-+ strbuf._cnt = strlen(str);
-+ strbuf._file = _NFILE;
-+ return (vfscanf(&strbuf, "%d", ap))],[cf_cv_func_vsscanf=vfscanf],[
-+AC_TRY_LINK([
-+#include <stdarg.h>
-+#include <stdio.h>],[
-+ FILE strbuf;
-+ char *str = "from";
-+
-+ strbuf._flag = _IOREAD;
-+ strbuf._ptr = strbuf._base = (unsigned char *) str;
-+ strbuf._cnt = strlen(str);
-+ strbuf._file = _NFILE;
-+ return (_doscan(&strbuf, "%d", ap))],[cf_cv_func_vsscanf=_doscan],[
-+cf_cv_func_vsscanf=no])])])])
-+
-+case $cf_cv_func_vsscanf in #(vi
-+vsscanf) AC_DEFINE(HAVE_VSSCANF);; #(vi
-+vfscanf) AC_DEFINE(HAVE_VFSCANF);; #(vi
-+_doscan) AC_DEFINE(HAVE__DOSCAN);;
-+esac
-+
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_GCC_ATTRIBUTES version: 9 updated: 2002/12/21 19:25:52
-+dnl -----------------
-+dnl Test for availability of useful gcc __attribute__ directives to quiet
-+dnl compiler warnings. Though useful, not all are supported -- and contrary
-+dnl to documentation, unrecognized directives cause older compilers to barf.
-+AC_DEFUN([CF_GCC_ATTRIBUTES],
-+[
-+if test "$GCC" = yes
-+then
-+cat > conftest.i <<EOF
-+#ifndef GCC_PRINTF
-+#define GCC_PRINTF 0
-+#endif
-+#ifndef GCC_SCANF
-+#define GCC_SCANF 0
-+#endif
-+#ifndef GCC_NORETURN
-+#define GCC_NORETURN /* nothing */
-+#endif
-+#ifndef GCC_UNUSED
-+#define GCC_UNUSED /* nothing */
-+#endif
-+EOF
-+if test "$GCC" = yes
-+then
-+ AC_CHECKING([for $CC __attribute__ directives])
-+cat > conftest.$ac_ext <<EOF
-+#line __oline__ "configure"
-+#include "confdefs.h"
-+#include "conftest.h"
-+#include "conftest.i"
-+#if GCC_PRINTF
-+#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
-+#else
-+#define GCC_PRINTFLIKE(fmt,var) /*nothing*/
-+#endif
-+#if GCC_SCANF
-+#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var)))
-+#else
-+#define GCC_SCANFLIKE(fmt,var) /*nothing*/
-+#endif
-+extern void wow(char *,...) GCC_SCANFLIKE(1,2);
-+extern void oops(char *,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN;
-+extern void foo(void) GCC_NORETURN;
-+int main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { return 0; }
-+EOF
-+ for cf_attribute in scanf printf unused noreturn
-+ do
-+ CF_UPPER(CF_ATTRIBUTE,$cf_attribute)
-+ cf_directive="__attribute__(($cf_attribute))"
-+ echo "checking for $CC $cf_directive" 1>&AC_FD_CC
-+ case $cf_attribute in
-+ scanf|printf)
-+ cat >conftest.h <<EOF
-+#define GCC_$CF_ATTRIBUTE 1
-+EOF
-+ ;;
-+ *)
-+ cat >conftest.h <<EOF
-+#define GCC_$CF_ATTRIBUTE $cf_directive
-+EOF
-+ ;;
-+ esac
-+ if AC_TRY_EVAL(ac_compile); then
-+ test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute)
-+ cat conftest.h >>confdefs.h
-+ fi
-+ done
-+else
-+ fgrep define conftest.i >>confdefs.h
-+fi
-+rm -rf conftest*
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_GCC_VERSION version: 3 updated: 2003/09/06 19:16:57
-+dnl --------------
-+dnl Find version of gcc
-+AC_DEFUN([CF_GCC_VERSION],[
-+AC_REQUIRE([AC_PROG_CC])
-+GCC_VERSION=none
-+if test "$GCC" = yes ; then
-+ AC_MSG_CHECKING(version of $CC)
-+ GCC_VERSION="`${CC} --version|sed -e '2,$d' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
-+ test -z "$GCC_VERSION" && GCC_VERSION=unknown
-+ AC_MSG_RESULT($GCC_VERSION)
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_GCC_WARNINGS version: 15 updated: 2003/07/05 18:42:30
-+dnl ---------------
-+dnl Check if the compiler supports useful warning options. There's a few that
-+dnl we don't use, simply because they're too noisy:
-+dnl
-+dnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x)
-+dnl -Wredundant-decls (system headers make this too noisy)
-+dnl -Wtraditional (combines too many unrelated messages, only a few useful)
-+dnl -Wwrite-strings (too noisy, but should review occasionally). This
-+dnl is enabled for ncurses using "--enable-const".
-+dnl -pedantic
-+dnl
-+AC_DEFUN([CF_GCC_WARNINGS],
-+[
-+AC_REQUIRE([CF_GCC_VERSION])
-+if test "$GCC" = yes
-+then
-+ cat > conftest.$ac_ext <<EOF
-+#line __oline__ "configure"
-+int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
-+EOF
-+ AC_CHECKING([for $CC warning options])
-+ cf_save_CFLAGS="$CFLAGS"
-+ EXTRA_CFLAGS="-W -Wall"
-+ cf_warn_CONST=""
-+ test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings"
-+ for cf_opt in \
-+ Wbad-function-cast \
-+ Wcast-align \
-+ Wcast-qual \
-+ Winline \
-+ Wmissing-declarations \
-+ Wmissing-prototypes \
-+ Wnested-externs \
-+ Wpointer-arith \
-+ Wshadow \
-+ Wstrict-prototypes \
-+ Wundef $cf_warn_CONST
-+ do
-+ CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
-+ if AC_TRY_EVAL(ac_compile); then
-+ test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
-+ case $cf_opt in #(vi
-+ Wcast-qual) #(vi
-+ CPPFLAGS="$CPPFLAGS -DXTSTRINGDEFINES"
-+ ;;
-+ Winline) #(vi
-+ case $GCC_VERSION in
-+ 3.3*)
-+ CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
-+ continue;;
-+ esac
-+ ;;
-+ esac
-+ EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
-+ fi
-+ done
-+ rm -f conftest*
-+ CFLAGS="$cf_save_CFLAGS"
-+fi
-+AC_SUBST(EXTRA_CFLAGS)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_GNAT_TRY_RUN version: 2 updated: 1998/07/19 00:25:18
-+dnl ---------------
-+dnl Verify that a test program compiles and runs with GNAT
-+dnl $cf_ada_make is set to the program that compiles/links
-+AC_DEFUN([CF_GNAT_TRY_RUN],
-+[
-+rm -f conftest*
-+cat >>conftest.ads <<CF_EOF
-+$1
-+CF_EOF
-+cat >>conftest.adb <<CF_EOF
-+$2
-+CF_EOF
-+if ( $cf_ada_make conftest 1>&AC_FD_CC 2>&1 ) ; then
-+ if ( ./conftest 1>&AC_FD_CC 2>&1 ) ; then
-+ifelse($3,, :,[ $3])
-+ifelse($4,,,[ else
-+ $4])
-+ fi
-+ifelse($4,,,[else
-+ $4])
-+fi
-+rm -f conftest*
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_GNAT_VERSION version: 11 updated: 2003/09/06 19:42:09
-+dnl ---------------
-+dnl Verify version of GNAT.
-+AC_DEFUN([CF_GNAT_VERSION],
-+[
-+AC_MSG_CHECKING(for gnat version)
-+cf_gnat_version=`${cf_ada_make-gnatmake} -v 2>&1 | grep '[[0-9]].[[0-9]][[0-9]]*' |\
-+ sed -e '2,$d' -e 's/[[^0-9 \.]]//g' -e 's/^[[ ]]*//' -e 's/ .*//'`
-+AC_MSG_RESULT($cf_gnat_version)
-+
-+case $cf_gnat_version in
-+ 3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*)
-+ cf_cv_prog_gnat_correct=yes
-+ ;;
-+ *) echo Unsupported GNAT version $cf_gnat_version. Required is 3.11 or better. Disabling Ada95 binding.
-+ cf_cv_prog_gnat_correct=no
-+ ;;
-+esac
-+case $cf_gnat_version in
-+ 3.[[1-9]]*|[[4-9]].*)
-+ cf_compile_generics=generics
-+ cf_generic_objects="\$(GENOBJS)"
-+ ;;
-+ *) cf_compile_generics=
-+ cf_generic_objects=
-+ ;;
-+esac
-+])
-+dnl ---------------------------------------------------------------------------
-+dnl CF_GNU_SOURCE version: 3 updated: 2000/10/29 23:30:53
-+dnl -------------
-+dnl Check if we must define _GNU_SOURCE to get a reasonable value for
-+dnl _XOPEN_SOURCE, upon which many POSIX definitions depend. This is a defect
-+dnl (or misfeature) of glibc2, which breaks portability of many applications,
-+dnl since it is interwoven with GNU extensions.
-+dnl
-+dnl Well, yes we could work around it...
-+AC_DEFUN([CF_GNU_SOURCE],
-+[
-+AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
-+AC_TRY_COMPILE([#include <sys/types.h>],[
-+#ifndef _XOPEN_SOURCE
-+make an error
-+#endif],
-+ [cf_cv_gnu_source=no],
-+ [cf_save="$CPPFLAGS"
-+ CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
-+ AC_TRY_COMPILE([#include <sys/types.h>],[
-+#ifdef _XOPEN_SOURCE
-+make an error
-+#endif],
-+ [cf_cv_gnu_source=no],
-+ [cf_cv_gnu_source=yes])
-+ CPPFLAGS="$cf_save"
-+ ])
-+])
-+test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_GPP_LIBRARY version: 8 updated: 2003/02/02 01:41:46
-+dnl --------------
-+dnl If we're trying to use g++, test if libg++ is installed (a rather common
-+dnl problem :-). If we have the compiler but no library, we'll be able to
-+dnl configure, but won't be able to build the c++ demo program.
-+AC_DEFUN([CF_GPP_LIBRARY],
-+[
-+cf_cxx_library=unknown
-+case $cf_cv_system_name in #(vi
-+os2*) #(vi
-+ cf_gpp_libname=gpp
-+ ;;
-+*)
-+ cf_gpp_libname=g++
-+ ;;
-+esac
-+if test "$GXX" = yes; then
-+ AC_MSG_CHECKING([for lib$cf_gpp_libname])
-+ cf_save="$LIBS"
-+ LIBS="$LIBS -l$cf_gpp_libname"
-+ AC_TRY_LINK([
-+#include <$cf_gpp_libname/builtin.h>
-+ ],
-+ [two_arg_error_handler_t foo2 = lib_error_handler],
-+ [cf_cxx_library=yes
-+ CXXLIBS="$CXXLIBS -l$cf_gpp_libname"
-+ if test "$cf_gpp_libname" = cpp ; then
-+ AC_DEFINE(HAVE_GPP_BUILTIN_H)
-+ else
-+ AC_DEFINE(HAVE_GXX_BUILTIN_H)
-+ fi],
-+ [AC_TRY_LINK([
-+#include <builtin.h>
-+ ],
-+ [two_arg_error_handler_t foo2 = lib_error_handler],
-+ [cf_cxx_library=yes
-+ CXXLIBS="$CXXLIBS -l$cf_gpp_libname"
-+ AC_DEFINE(HAVE_BUILTIN_H)],
-+ [cf_cxx_library=no])])
-+ LIBS="$cf_save"
-+ AC_MSG_RESULT($cf_cxx_library)
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_GXX_VERSION version: 3 updated: 2003/09/06 19:16:21
-+dnl --------------
-+dnl Check for version of g++
-+AC_DEFUN([CF_GXX_VERSION],[
-+AC_REQUIRE([AC_PROG_CPP])
-+GXX_VERSION=none
-+if test "$GXX" = yes; then
-+ AC_MSG_CHECKING(version of g++)
-+ GXX_VERSION="`${CXX-g++} --version|sed -e '2,$d'`"
-+ AC_MSG_RESULT($GXX_VERSION)
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_INCLUDE_DIRS version: 4 updated: 2002/12/01 00:12:15
-+dnl ---------------
-+dnl Construct the list of include-options according to whether we're building
-+dnl in the source directory or using '--srcdir=DIR' option. If we're building
-+dnl with gcc, don't append the includedir if it happens to be /usr/include,
-+dnl since that usually breaks gcc's shadow-includes.
-+AC_DEFUN([CF_INCLUDE_DIRS],
-+[
-+CPPFLAGS="-I. -I../include $CPPFLAGS"
-+if test "$srcdir" != "."; then
-+ CPPFLAGS="-I\$(srcdir)/../include $CPPFLAGS"
-+fi
-+if test "$GCC" != yes; then
-+ CPPFLAGS="$CPPFLAGS -I\$(includedir)"
-+elif test "$includedir" != "/usr/include"; then
-+ if test "$includedir" = '${prefix}/include' ; then
-+ if test $prefix != /usr ; then
-+ CPPFLAGS="$CPPFLAGS -I\$(includedir)"
-+ fi
-+ else
-+ CPPFLAGS="$CPPFLAGS -I\$(includedir)"
-+ fi
-+fi
-+AC_SUBST(CPPFLAGS)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_ISASCII version: 3 updated: 2000/08/12 23:18:52
-+dnl ----------
-+dnl Check if we have either a function or macro for 'isascii()'.
-+AC_DEFUN([CF_ISASCII],
-+[
-+AC_MSG_CHECKING(for isascii)
-+AC_CACHE_VAL(cf_cv_have_isascii,[
-+ AC_TRY_LINK([#include <ctype.h>],[int x = isascii(' ')],
-+ [cf_cv_have_isascii=yes],
-+ [cf_cv_have_isascii=no])
-+])dnl
-+AC_MSG_RESULT($cf_cv_have_isascii)
-+test "$cf_cv_have_isascii" = yes && AC_DEFINE(HAVE_ISASCII)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_LIBUTF8 version: 2 updated: 2002/01/19 22:51:32
-+dnl ----------
-+dnl Check for libutf8
-+AC_DEFUN([CF_LIBUTF8],
-+[
-+AC_CACHE_CHECK(for putwc in libutf8,cf_cv_libutf8,[
-+ cf_save_LIBS="$LIBS"
-+ LIBS="-lutf8 $LIBS"
-+AC_TRY_LINK([
-+#include <libutf8.h>],[putwc(0,0);],
-+ [cf_cv_libutf8=yes],
-+ [cf_cv_libutf8=no])
-+ LIBS="$cf_save_LIBS"
-+])
-+
-+if test "$cf_cv_libutf8" = yes ; then
-+ AC_DEFINE(HAVE_LIBUTF8_H)
-+ LIBS="-lutf8 $LIBS"
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_LIB_PREFIX version: 7 updated: 2001/01/12 01:23:48
-+dnl -------------
-+dnl Compute the library-prefix for the given host system
-+dnl $1 = variable to set
-+AC_DEFUN([CF_LIB_PREFIX],
-+[
-+ case $cf_cv_system_name in
-+ OS/2*) LIB_PREFIX='' ;;
-+ os2*) LIB_PREFIX='' ;;
-+ *) LIB_PREFIX='lib' ;;
-+ esac
-+ifelse($1,,,[$1=$LIB_PREFIX])
-+ AC_SUBST(LIB_PREFIX)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_LIB_RULES version: 30 updated: 2004/01/10 15:50:50
-+dnl ------------
-+dnl Append definitions and rules for the given models to the subdirectory
-+dnl Makefiles, and the recursion rule for the top-level Makefile. If the
-+dnl subdirectory is a library-source directory, modify the LIBRARIES list in
-+dnl the corresponding makefile to list the models that we'll generate.
-+dnl
-+dnl For shared libraries, make a list of symbolic links to construct when
-+dnl generating each library. The convention used for Linux is the simplest
-+dnl one:
-+dnl lib<name>.so ->
-+dnl lib<name>.so.<major> ->
-+dnl lib<name>.so.<maj>.<minor>
-+AC_DEFUN([CF_LIB_RULES],
-+[
-+CF_LIB_PREFIX(cf_prefix)
-+AC_REQUIRE([CF_SUBST_NCURSES_VERSION])
-+for cf_dir in $SRC_SUBDIRS
-+do
-+ if test -f $srcdir/$cf_dir/modules; then
-+
-+ IMPORT_LIB=
-+ SHARED_LIB=
-+ LIBS_TO_MAKE=
-+ for cf_item in $CF_LIST_MODELS
-+ do
-+ CF_LIB_SUFFIX($cf_item,cf_suffix)
-+ if test $cf_item = shared ; then
-+ if test "$cf_cv_do_symlinks" = yes ; then
-+ case "$cf_cv_shlib_version" in #(vi
-+ rel) #(vi
-+ case "$cf_cv_system_name" in #(vi
-+ darwin*) cf_suffix='.$(REL_VERSION)'"$cf_suffix" ;; #(vi
-+ *) cf_suffix="$cf_suffix"'.$(REL_VERSION)' ;;
-+ esac
-+ ;;
-+ abi)
-+ case "$cf_cv_system_name" in #(vi
-+ darwin*) cf_suffix='.$(ABI_VERSION)'"$cf_suffix" ;; #(vi
-+ *) cf_suffix="$cf_suffix"'.$(ABI_VERSION)' ;;
-+ esac
-+ ;;
-+ esac
-+ fi
-+ # cygwin needs import library, and has unique naming convention
-+ # use autodetected ${cf_prefix} for import lib and static lib, but
-+ # use 'cyg' prefix for shared lib.
-+ if test $cf_cv_shlib_version = cygdll ; then
-+ SHARED_LIB="../lib/cyg${cf_dir}\$(ABI_VERSION).dll"
-+ IMPORT_LIB="../lib/${cf_prefix}${cf_dir}.dll.a"
-+ LIBS_TO_MAKE="$LIBS_TO_MAKE \$(SHARED_LIB) \$(IMPORT_LIB)"
-+ continue
-+ fi
-+ fi
-+ LIBS_TO_MAKE="$LIBS_TO_MAKE ../lib/${cf_prefix}${cf_dir}${cf_suffix}"
-+ done
-+
-+ if test $cf_dir = ncurses ; then
-+ cf_subsets="$LIB_SUBSETS"
-+ cf_termlib=`echo "$cf_subsets" |sed -e 's/ .*$//'`
-+ if test "$cf_termlib" != "$cf_subsets" ; then
-+ cf_item=`echo $LIBS_TO_MAKE |sed -e s%$LIB_NAME%$TINFO_NAME%g`
-+ LIBS_TO_MAKE="$cf_item $LIBS_TO_MAKE"
-+ fi
-+ else
-+ cf_subsets=`echo "$LIB_SUBSETS" | sed -e 's/^termlib.* //'`
-+ fi
-+
-+ sed -e "s%@LIBS_TO_MAKE@%$LIBS_TO_MAKE%" \
-+ -e "s%@IMPORT_LIB@%$IMPORT_LIB%" \
-+ -e "s%@SHARED_LIB@%$SHARED_LIB%" \
-+ $cf_dir/Makefile >$cf_dir/Makefile.out
-+ mv $cf_dir/Makefile.out $cf_dir/Makefile
-+
-+ $AWK -f $srcdir/mk-0th.awk \
-+ libname="${cf_dir}${LIB_SUFFIX}" subsets="$LIB_SUBSETS" \
-+ $srcdir/$cf_dir/modules >>$cf_dir/Makefile
-+
-+ for cf_subset in $cf_subsets
-+ do
-+ cf_subdirs=
-+ for cf_item in $CF_LIST_MODELS
-+ do
-+ echo "Appending rules for ${cf_item} model (${cf_dir}: ${cf_subset})"
-+ CF_UPPER(CF_ITEM,$cf_item)
-+ CF_LIB_SUFFIX($cf_item,cf_suffix)
-+ CF_OBJ_SUBDIR($cf_item,cf_subdir)
-+
-+ # These dependencies really are for development, not
-+ # builds, but they are useful in porting, too.
-+ cf_depend="../include/ncurses_cfg.h"
-+ if test "$srcdir" = "."; then
-+ cf_reldir="."
-+ else
-+ cf_reldir="\$(srcdir)"
-+ fi
-+
-+ if test -f $srcdir/$cf_dir/$cf_dir.priv.h; then
-+ cf_depend="$cf_depend $cf_reldir/$cf_dir.priv.h"
-+ elif test -f $srcdir/$cf_dir/curses.priv.h; then
-+ cf_depend="$cf_depend $cf_reldir/curses.priv.h"
-+ fi
-+
-+ $AWK -f $srcdir/mk-1st.awk \
-+ name=$cf_dir \
-+ traces=$LIB_TRACING \
-+ MODEL=$CF_ITEM \
-+ model=$cf_subdir \
-+ prefix=$cf_prefix \
-+ suffix=$cf_suffix \
-+ subset=$cf_subset \
-+ ShlibVer=$cf_cv_shlib_version \
-+ ShlibVerInfix=$cf_cv_shlib_version_infix \
-+ DoLinks=$cf_cv_do_symlinks \
-+ rmSoLocs=$cf_cv_rm_so_locs \
-+ ldconfig="$LDCONFIG" \
-+ overwrite=$WITH_OVERWRITE \
-+ depend="$cf_depend" \
-+ host="$host" \
-+ $srcdir/$cf_dir/modules >>$cf_dir/Makefile
-+ for cf_subdir2 in $cf_subdirs lib
-+ do
-+ test $cf_subdir = $cf_subdir2 && break
-+ done
-+ test "${cf_subset}.${cf_subdir2}" != "${cf_subset}.${cf_subdir}" && \
-+ $AWK -f $srcdir/mk-2nd.awk \
-+ name=$cf_dir \
-+ traces=$LIB_TRACING \
-+ MODEL=$CF_ITEM \
-+ model=$cf_subdir \
-+ subset=$cf_subset \
-+ srcdir=$srcdir \
-+ echo=$WITH_ECHO \
-+ $srcdir/$cf_dir/modules >>$cf_dir/Makefile
-+ cf_subdirs="$cf_subdirs $cf_subdir"
-+ done
-+ done
-+ fi
-+
-+ echo ' cd '$cf_dir' && $(MAKE) $(CF_MFLAGS) [$]@' >>Makefile
-+done
-+
-+for cf_dir in $SRC_SUBDIRS
-+do
-+ if test -f $cf_dir/Makefile ; then
-+ case "$cf_dir" in
-+ Ada95) #(vi
-+ echo 'libs \' >> Makefile
-+ echo 'install.libs \' >> Makefile
-+ echo 'uninstall.libs ::' >> Makefile
-+ echo ' cd '$cf_dir' && $(MAKE) $(CF_MFLAGS) [$]@' >> Makefile
-+ ;;
-+ esac
-+ fi
-+
-+ if test -f $srcdir/$cf_dir/modules; then
-+ echo >> Makefile
-+ if test -f $srcdir/$cf_dir/headers; then
-+cat >> Makefile <<CF_EOF
-+install.includes \\
-+uninstall.includes \\
-+CF_EOF
-+ fi
-+if test "$cf_dir" != "c++" ; then
-+echo 'lint \' >> Makefile
-+fi
-+cat >> Makefile <<CF_EOF
-+libs \\
-+lintlib \\
-+install.libs \\
-+uninstall.libs \\
-+install.$cf_dir \\
-+uninstall.$cf_dir ::
-+ cd $cf_dir && \$(MAKE) \$(CF_MFLAGS) \[$]@
-+CF_EOF
-+ elif test -f $srcdir/$cf_dir/headers; then
-+cat >> Makefile <<CF_EOF
-+
-+libs \\
-+install.libs \\
-+uninstall.libs \\
-+install.includes \\
-+uninstall.includes ::
-+ cd $cf_dir && \$(MAKE) \$(CF_MFLAGS) \[$]@
-+CF_EOF
-+fi
-+done
-+
-+cat >> Makefile <<CF_EOF
-+
-+install.data \\
-+uninstall.data ::
-+$MAKE_TERMINFO cd misc && \$(MAKE) \$(CF_MFLAGS) \[$]@
-+
-+install.man \\
-+uninstall.man ::
-+ cd man && \$(MAKE) \$(CF_MFLAGS) \[$]@
-+
-+distclean ::
-+ rm -f config.cache config.log config.status Makefile include/ncurses_cfg.h
-+ rm -f headers.sh headers.sed
-+ rm -rf \$(DIRS_TO_MAKE)
-+CF_EOF
-+
-+# Special case: tack's manpage lives in its own directory.
-+if test -d tack ; then
-+if test -f $srcdir/$tack.h; then
-+cat >> Makefile <<CF_EOF
-+
-+install.man \\
-+uninstall.man ::
-+ cd tack && \$(MAKE) \$(CF_MFLAGS) \[$]@
-+CF_EOF
-+fi
-+fi
-+
-+dnl If we're installing into a subdirectory of /usr/include, etc., we should
-+dnl prepend the subdirectory's name to the "#include" paths. It won't hurt
-+dnl anything, and will make it more standardized. It's awkward to decide this
-+dnl at configuration because of quoting, so we'll simply make all headers
-+dnl installed via a script that can do the right thing.
-+
-+rm -f headers.sed headers.sh
-+
-+dnl ( generating this script makes the makefiles a little tidier :-)
-+echo creating headers.sh
-+cat >headers.sh <<CF_EOF
-+#! /bin/sh
-+# This shell script is generated by the 'configure' script. It is invoked in a
-+# subdirectory of the build tree. It generates a sed-script in the parent
-+# directory that is used to adjust includes for header files that reside in a
-+# subdirectory of /usr/include, etc.
-+PRG=""
-+while test \[$]# != 3
-+do
-+PRG="\$PRG \[$]1"; shift
-+done
-+DST=\[$]1
-+REF=\[$]2
-+SRC=\[$]3
-+TMPSRC=\${TMPDIR-/tmp}/\`basename \$SRC\`\$\$
-+TMPSED=\${TMPDIR-/tmp}/headers.sed\$\$
-+echo installing \$SRC in \$DST
-+CF_EOF
-+if test $WITH_CURSES_H = yes; then
-+ cat >>headers.sh <<CF_EOF
-+case \$DST in
-+/*/include/*)
-+ END=\`basename \$DST\`
-+ for i in \`cat \$REF/../*/headers |fgrep -v "#"\`
-+ do
-+ NAME=\`basename \$i\`
-+ echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED
-+ done
-+ ;;
-+*)
-+ echo "" >> \$TMPSED
-+ ;;
-+esac
-+CF_EOF
-+else
-+ cat >>headers.sh <<CF_EOF
-+case \$DST in
-+/*/include/*)
-+ END=\`basename \$DST\`
-+ for i in \`cat \$REF/../*/headers |fgrep -v "#"\`
-+ do
-+ NAME=\`basename \$i\`
-+ if test "\$NAME" = "curses.h"
-+ then
-+ echo "s/<curses.h>/<ncurses.h>/" >> \$TMPSED
-+ NAME=ncurses.h
-+ fi
-+ echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED
-+ done
-+ ;;
-+*)
-+ echo "s/<curses.h>/<ncurses.h>/" >> \$TMPSED
-+ ;;
-+esac
-+CF_EOF
-+fi
-+cat >>headers.sh <<CF_EOF
-+rm -f \$TMPSRC
-+sed -f \$TMPSED \$SRC > \$TMPSRC
-+NAME=\`basename \$SRC\`
-+CF_EOF
-+if test $WITH_CURSES_H != yes; then
-+ cat >>headers.sh <<CF_EOF
-+test "\$NAME" = "curses.h" && NAME=ncurses.h
-+CF_EOF
-+fi
-+cat >>headers.sh <<CF_EOF
-+# Just in case someone gzip'd manpages, remove the conflicting copy.
-+test -f \$DST/\$NAME.gz && rm -f \$DST/\$NAME.gz
-+
-+eval \$PRG \$TMPSRC \$DST/\$NAME
-+rm -f \$TMPSRC \$TMPSED
-+CF_EOF
-+
-+chmod 0755 headers.sh
-+
-+for cf_dir in $SRC_SUBDIRS
-+do
-+ if test -f $srcdir/$cf_dir/headers; then
-+ cat >>$cf_dir/Makefile <<CF_EOF
-+\$(DESTDIR)\$(includedir) :
-+ sh \$(srcdir)/../mkinstalldirs \[$]@
-+
-+install \\
-+install.libs \\
-+install.includes :: \$(AUTO_SRC) \$(DESTDIR)\$(includedir) \\
-+CF_EOF
-+ j=""
-+ for i in `cat $srcdir/$cf_dir/headers |fgrep -v "#"`
-+ do
-+ test -n "$j" && echo " $j \\" >>$cf_dir/Makefile
-+ j=$i
-+ done
-+ echo " $j" >>$cf_dir/Makefile
-+ for i in `cat $srcdir/$cf_dir/headers |fgrep -v "#"`
-+ do
-+ echo " @ (cd \$(DESTDIR)\$(includedir) && rm -f `basename $i`) ; ../headers.sh \$(INSTALL_DATA) \$(DESTDIR)\$(includedir) \$(srcdir) $i" >>$cf_dir/Makefile
-+ test $i = curses.h && test $WITH_CURSES_H = yes && echo " @ (cd \$(DESTDIR)\$(includedir) && rm -f ncurses.h && \$(LN_S) curses.h ncurses.h)" >>$cf_dir/Makefile
-+ done
-+
-+ cat >>$cf_dir/Makefile <<CF_EOF
-+
-+uninstall \\
-+uninstall.libs \\
-+uninstall.includes ::
-+CF_EOF
-+ for i in `cat $srcdir/$cf_dir/headers |fgrep -v "#"`
-+ do
-+ i=`basename $i`
-+ echo " -@ (cd \$(DESTDIR)\$(includedir) && rm -f $i)" >>$cf_dir/Makefile
-+ test $i = curses.h && echo " -@ (cd \$(DESTDIR)\$(includedir) && rm -f ncurses.h)" >>$cf_dir/Makefile
-+ done
-+ fi
-+
-+ if test -f $srcdir/$cf_dir/modules; then
-+ if test "$cf_dir" != "c++" ; then
-+ cat >>$cf_dir/Makefile <<"CF_EOF"
-+depend : $(AUTO_SRC)
-+ makedepend -- $(CPPFLAGS) -- $(C_SRC)
-+
-+# DO NOT DELETE THIS LINE -- make depend depends on it.
-+CF_EOF
-+ fi
-+ fi
-+done
-+
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_LIB_SUFFIX version: 13 updated: 2003/11/01 16:09:07
-+dnl -------------
-+dnl Compute the library file-suffix from the given model name
-+dnl $1 = model name
-+dnl $2 = variable to set
-+dnl The variable $LIB_SUFFIX, if set, prepends the variable to set.
-+AC_DEFUN([CF_LIB_SUFFIX],
-+[
-+ AC_REQUIRE([CF_SUBST_NCURSES_VERSION])
-+ case $1 in
-+ libtool) $2='.la' ;;
-+ normal) $2='.a' ;;
-+ debug) $2='_g.a' ;;
-+ profile) $2='_p.a' ;;
-+ shared)
-+ case $cf_cv_system_name in
-+ cygwin*) $2='.dll' ;;
-+ darwin*) $2='.dylib' ;;
-+ hpux*)
-+ case $target in
-+ ia64*) $2='.so' ;;
-+ *) $2='.sl' ;;
-+ esac
-+ ;;
-+ *) $2='.so' ;;
-+ esac
-+ esac
-+ test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}"
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_LIB_TYPE version: 4 updated: 2000/10/20 22:57:49
-+dnl -----------
-+dnl Compute the string to append to -library from the given model name
-+dnl $1 = model name
-+dnl $2 = variable to set
-+dnl The variable $LIB_SUFFIX, if set, prepends the variable to set.
-+AC_DEFUN([CF_LIB_TYPE],
-+[
-+ case $1 in
-+ libtool) $2='' ;;
-+ normal) $2='' ;;
-+ debug) $2='_g' ;;
-+ profile) $2='_p' ;;
-+ shared) $2='' ;;
-+ esac
-+ test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}"
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_LINK_DATAONLY version: 6 updated: 2003/02/02 01:41:46
-+dnl ----------------
-+dnl Some systems have a non-ANSI linker that doesn't pull in modules that have
-+dnl only data (i.e., no functions), for example NeXT. On those systems we'll
-+dnl have to provide wrappers for global tables to ensure they're linked
-+dnl properly.
-+AC_DEFUN([CF_LINK_DATAONLY],
-+[
-+AC_MSG_CHECKING([if data-only library module links])
-+AC_CACHE_VAL(cf_cv_link_dataonly,[
-+ rm -f conftest.a
-+ cat >conftest.$ac_ext <<EOF
-+#line __oline__ "configure"
-+int testdata[[3]] = { 123, 456, 789 };
-+EOF
-+ if AC_TRY_EVAL(ac_compile) ; then
-+ mv conftest.o data.o && \
-+ ( $AR $AR_OPTS conftest.a data.o ) 2>&AC_FD_CC 1>/dev/null
-+ fi
-+ rm -f conftest.$ac_ext data.o
-+ cat >conftest.$ac_ext <<EOF
-+#line __oline__ "configure"
-+int testfunc()
-+{
-+#if defined(NeXT)
-+ exit(1); /* I'm told this linker is broken */
-+#else
-+ extern int testdata[[3]];
-+ return testdata[[0]] == 123
-+ && testdata[[1]] == 456
-+ && testdata[[2]] == 789;
-+#endif
-+}
-+EOF
-+ if AC_TRY_EVAL(ac_compile); then
-+ mv conftest.o func.o && \
-+ ( $AR $AR_OPTS conftest.a func.o ) 2>&AC_FD_CC 1>/dev/null
-+ fi
-+ rm -f conftest.$ac_ext func.o
-+ ( eval $RANLIB conftest.a ) 2>&AC_FD_CC >/dev/null
-+ cf_saveLIBS="$LIBS"
-+ LIBS="conftest.a $LIBS"
-+ AC_TRY_RUN([
-+ int main()
-+ {
-+ extern int testfunc();
-+ exit (!testfunc());
-+ }
-+ ],
-+ [cf_cv_link_dataonly=yes],
-+ [cf_cv_link_dataonly=no],
-+ [cf_cv_link_dataonly=unknown])
-+ LIBS="$cf_saveLIBS"
-+ ])
-+AC_MSG_RESULT($cf_cv_link_dataonly)
-+
-+if test "$cf_cv_link_dataonly" = no ; then
-+ AC_DEFINE(BROKEN_LINKER)
-+ BROKEN_LINKER=1
-+fi
-+
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_LINK_FUNCS version: 5 updated: 2003/02/02 01:41:46
-+dnl -------------
-+dnl Most Unix systems have both link and symlink, a few don't have symlink.
-+dnl A few non-Unix systems implement symlink, but not link.
-+dnl A few non-systems implement neither (or have nonfunctional versions).
-+AC_DEFUN([CF_LINK_FUNCS],
-+[
-+AC_CHECK_FUNCS( \
-+ remove \
-+ unlink )
-+
-+if test "$cross_compiling" = yes ; then
-+ AC_CHECK_FUNCS( \
-+ link \
-+ symlink )
-+else
-+ AC_CACHE_CHECK(if link/symlink functions work,cf_cv_link_funcs,[
-+ cf_cv_link_funcs=
-+ for cf_func in link symlink ; do
-+ AC_TRY_RUN([
-+#include <sys/types.h>
-+#include <sys/stat.h>
-+#ifdef HAVE_UNISTD_H
-+#include <unistd.h>
-+#endif
-+int main()
-+{
-+ int fail = 0;
-+ char *src = "config.log";
-+ char *dst = "conftest.chk";
-+ struct stat src_sb;
-+ struct stat dst_sb;
-+
-+ stat(src, &src_sb);
-+ fail = ($cf_func("config.log", "conftest.chk") < 0)
-+ || (stat(dst, &dst_sb) < 0)
-+ || (dst_sb.st_mtime != src_sb.st_mtime);
-+#ifdef HAVE_UNLINK
-+ unlink(dst);
-+#else
-+ remove(dst);
-+#endif
-+ exit (fail);
-+}
-+ ],[
-+ cf_cv_link_funcs="$cf_cv_link_funcs $cf_func"
-+ eval 'ac_cv_func_'$cf_func'=yes'],[
-+ eval 'ac_cv_func_'$cf_func'=no'],[
-+ eval 'ac_cv_func_'$cf_func'=error'])
-+ done
-+ test -z "$cf_cv_link_funcs" && cf_cv_link_funcs=no
-+ ])
-+ test "$ac_cv_func_link" = yes && AC_DEFINE(HAVE_LINK)
-+ test "$ac_cv_func_symlink" = yes && AC_DEFINE(HAVE_SYMLINK)
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_MAKEFLAGS version: 9 updated: 2001/12/30 18:17:27
-+dnl ------------
-+dnl Some 'make' programs support $(MAKEFLAGS), some $(MFLAGS), to pass 'make'
-+dnl options to lower-levels. It's very useful for "make -n" -- if we have it.
-+dnl (GNU 'make' does both, something POSIX 'make', which happens to make the
-+dnl $(MAKEFLAGS) variable incompatible because it adds the assignments :-)
-+AC_DEFUN([CF_MAKEFLAGS],
-+[
-+AC_CACHE_CHECK(for makeflags variable, cf_cv_makeflags,[
-+ cf_cv_makeflags=''
-+ for cf_option in '-$(MAKEFLAGS)' '$(MFLAGS)'
-+ do
-+ cat >cf_makeflags.tmp <<CF_EOF
-+SHELL = /bin/sh
-+all :
-+ @ echo '.$cf_option'
-+CF_EOF
-+ cf_result=`${MAKE-make} -k -f cf_makeflags.tmp 2>/dev/null`
-+ case "$cf_result" in
-+ .*k)
-+ cf_result=`${MAKE-make} -k -f cf_makeflags.tmp CC=cc 2>/dev/null`
-+ case "$cf_result" in
-+ .*CC=*) cf_cv_makeflags=
-+ ;;
-+ *) cf_cv_makeflags=$cf_option
-+ ;;
-+ esac
-+ break
-+ ;;
-+ *) echo no match "$cf_result"
-+ ;;
-+ esac
-+ done
-+ rm -f cf_makeflags.tmp
-+])
-+
-+AC_SUBST(cf_cv_makeflags)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_MAKE_TAGS version: 2 updated: 2000/10/04 09:18:40
-+dnl ------------
-+dnl Generate tags/TAGS targets for makefiles. Do not generate TAGS if we have
-+dnl a monocase filesystem.
-+AC_DEFUN([CF_MAKE_TAGS],[
-+AC_REQUIRE([CF_MIXEDCASE_FILENAMES])
-+AC_CHECK_PROG(MAKE_LOWER_TAGS, ctags, yes, no)
-+
-+if test "$cf_cv_mixedcase" = yes ; then
-+ AC_CHECK_PROG(MAKE_UPPER_TAGS, etags, yes, no)
-+else
-+ MAKE_UPPER_TAGS=no
-+fi
-+
-+if test "$MAKE_UPPER_TAGS" = yes ; then
-+ MAKE_UPPER_TAGS=
-+else
-+ MAKE_UPPER_TAGS="#"
-+fi
-+AC_SUBST(MAKE_UPPER_TAGS)
-+
-+if test "$MAKE_LOWER_TAGS" = yes ; then
-+ MAKE_LOWER_TAGS=
-+else
-+ MAKE_LOWER_TAGS="#"
-+fi
-+AC_SUBST(MAKE_LOWER_TAGS)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_MANPAGE_FORMAT version: 7 updated: 2003/12/20 19:30:34
-+dnl -----------------
-+dnl Option to allow user to override automatic configuration of manpage format.
-+dnl There are several special cases:
-+dnl
-+dnl gzip - man checks for, can display gzip'd files
-+dnl compress - man checks for, can display compressed files
-+dnl BSDI - files in the cat-directories are suffixed ".0"
-+dnl formatted - installer should format (put files in cat-directory)
-+dnl catonly - installer should only format, e.g., for a turnkey system.
-+dnl
-+dnl There are other configurations which this macro does not test, e.g., HPUX's
-+dnl compressed manpages (but uncompressed manpages are fine, and HPUX's naming
-+dnl convention would not match our use).
-+AC_DEFUN([CF_MANPAGE_FORMAT],
-+[
-+AC_REQUIRE([CF_PATHSEP])
-+AC_MSG_CHECKING(format of man-pages)
-+
-+AC_ARG_WITH(manpage-format,
-+ [ --with-manpage-format specify manpage-format: gzip/compress/BSDI/normal and
-+ optionally formatted/catonly, e.g., gzip,formatted],
-+ [MANPAGE_FORMAT=$withval],
-+ [MANPAGE_FORMAT=unknown])
-+
-+test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=unknown
-+MANPAGE_FORMAT=`echo "$MANPAGE_FORMAT" | sed -e 's/,/ /g'`
-+
-+cf_unknown=
-+
-+case $MANPAGE_FORMAT in
-+unknown)
-+ if test -z "$MANPATH" ; then
-+ MANPATH="/usr/man:/usr/share/man"
-+ fi
-+
-+ # look for the 'date' man-page (it's most likely to be installed!)
-+ MANPAGE_FORMAT=
-+ cf_preform=no
-+ cf_catonly=yes
-+ cf_example=date
-+
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATHSEP}"
-+ for cf_dir in $MANPATH; do
-+ test -z "$cf_dir" && cf_dir=/usr/man
-+ for cf_name in $cf_dir/man*/$cf_example.[[01]]* $cf_dir/cat*/$cf_example.[[01]]* $cf_dir/man*/$cf_example $cf_dir/cat*/$cf_example
-+ do
-+ cf_test=`echo $cf_name | sed -e 's/*//'`
-+ if test "x$cf_test" = "x$cf_name" ; then
-+
-+ case "$cf_name" in
-+ *.gz) MANPAGE_FORMAT="$MANPAGE_FORMAT gzip";;
-+ *.Z) MANPAGE_FORMAT="$MANPAGE_FORMAT compress";;
-+ *.0) MANPAGE_FORMAT="$MANPAGE_FORMAT BSDI";;
-+ *) MANPAGE_FORMAT="$MANPAGE_FORMAT normal";;
-+ esac
-+
-+ case "$cf_name" in
-+ $cf_dir/man*)
-+ cf_catonly=no
-+ ;;
-+ $cf_dir/cat*)
-+ cf_preform=yes
-+ ;;
-+ esac
-+ break
-+ fi
-+
-+ # if we found a match in either man* or cat*, stop looking
-+ if test -n "$MANPAGE_FORMAT" ; then
-+ cf_found=no
-+ test "$cf_preform" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT formatted"
-+ test "$cf_catonly" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT catonly"
-+ case "$cf_name" in
-+ $cf_dir/cat*)
-+ cf_found=yes
-+ ;;
-+ esac
-+ test $cf_found=yes && break
-+ fi
-+ done
-+ # only check the first directory in $MANPATH where we find manpages
-+ if test -n "$MANPAGE_FORMAT" ; then
-+ break
-+ fi
-+ done
-+ # if we did not find the example, just assume it is normal
-+ test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=normal
-+ IFS="$ac_save_ifs"
-+ ;;
-+*)
-+ for cf_option in $MANPAGE_FORMAT; do
-+ case $cf_option in #(vi
-+ gzip|compress|BSDI|normal|formatted|catonly)
-+ ;;
-+ *)
-+ cf_unknown="$cf_unknown $cf_option"
-+ ;;
-+ esac
-+ done
-+ ;;
-+esac
-+
-+AC_MSG_RESULT($MANPAGE_FORMAT)
-+if test -n "$cf_unknown" ; then
-+ AC_MSG_WARN(Unexpected manpage-format $cf_unknown)
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_MANPAGE_RENAMES version: 6 updated: 2002/01/19 22:51:32
-+dnl ------------------
-+dnl The Debian people have their own naming convention for manpages. This
-+dnl option lets us override the name of the file containing renaming, or
-+dnl disable it altogether.
-+AC_DEFUN([CF_MANPAGE_RENAMES],
-+[
-+AC_MSG_CHECKING(for manpage renaming)
-+
-+AC_ARG_WITH(manpage-renames,
-+ [ --with-manpage-renames specify manpage-renaming],
-+ [MANPAGE_RENAMES=$withval],
-+ [MANPAGE_RENAMES=yes])
-+
-+case ".$MANPAGE_RENAMES" in #(vi
-+.no) #(vi
-+ ;;
-+.|.yes)
-+ # Debian 'man' program?
-+ if test -f /etc/debian_version ; then
-+ MANPAGE_RENAMES=`cd $srcdir && pwd`/man/man_db.renames
-+ else
-+ MANPAGE_RENAMES=no
-+ fi
-+ ;;
-+esac
-+
-+if test "$MANPAGE_RENAMES" != no ; then
-+ if test -f $srcdir/man/$MANPAGE_RENAMES ; then
-+ MANPAGE_RENAMES=`cd $srcdir/man && pwd`/$MANPAGE_RENAMES
-+ elif test ! -f $MANPAGE_RENAMES ; then
-+ AC_MSG_ERROR(not a filename: $MANPAGE_RENAMES)
-+ fi
-+
-+ test ! -d man && mkdir man
-+
-+ # Construct a sed-script to perform renaming within man-pages
-+ if test -n "$MANPAGE_RENAMES" ; then
-+ test ! -d man && mkdir man
-+ sh $srcdir/man/make_sed.sh $MANPAGE_RENAMES >man/edit_man.sed
-+ fi
-+fi
-+
-+AC_MSG_RESULT($MANPAGE_RENAMES)
-+AC_SUBST(MANPAGE_RENAMES)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_MANPAGE_SYMLINKS version: 4 updated: 2003/12/13 18:01:58
-+dnl -------------------
-+dnl Some people expect each tool to make all aliases for manpages in the
-+dnl man-directory. This accommodates the older, less-capable implementations
-+dnl of 'man', and is optional.
-+AC_DEFUN([CF_MANPAGE_SYMLINKS],
-+[
-+AC_MSG_CHECKING(if manpage aliases will be installed)
-+
-+AC_ARG_WITH(manpage-aliases,
-+ [ --with-manpage-aliases specify manpage-aliases using .so],
-+ [MANPAGE_ALIASES=$withval],
-+ [MANPAGE_ALIASES=yes])
-+
-+AC_MSG_RESULT($MANPAGE_ALIASES)
-+
-+if test "$LN_S" = "ln -s"; then
-+ cf_use_symlinks=yes
-+else
-+ cf_use_symlinks=no
-+fi
-+
-+MANPAGE_SYMLINKS=no
-+if test "$MANPAGE_ALIASES" = yes ; then
-+AC_MSG_CHECKING(if manpage symlinks should be used)
-+
-+AC_ARG_WITH(manpage-symlinks,
-+ [ --with-manpage-symlinks specify manpage-aliases using symlinks],
-+ [MANPAGE_SYMLINKS=$withval],
-+ [MANPAGE_SYMLINKS=$cf_use_symlinks])
-+
-+if test "$$cf_use_symlinks" = no; then
-+if test "$MANPAGE_SYMLINKS" = yes ; then
-+ AC_MSG_WARN(cannot make symlinks, will use .so files)
-+ MANPAGE_SYMLINKS=no
-+fi
-+fi
-+
-+AC_MSG_RESULT($MANPAGE_SYMLINKS)
-+fi
-+
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_MANPAGE_TBL version: 3 updated: 2002/01/19 22:51:32
-+dnl --------------
-+dnl This option causes manpages to be run through tbl(1) to generate tables
-+dnl correctly.
-+AC_DEFUN([CF_MANPAGE_TBL],
-+[
-+AC_MSG_CHECKING(for manpage tbl)
-+
-+AC_ARG_WITH(manpage-tbl,
-+ [ --with-manpage-tbl specify manpage processing with tbl],
-+ [MANPAGE_TBL=$withval],
-+ [MANPAGE_TBL=no])
-+
-+AC_MSG_RESULT($MANPAGE_TBL)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_MAN_PAGES version: 27 updated: 2003/12/20 20:39:45
-+dnl ------------
-+dnl Try to determine if the man-pages on the system are compressed, and if
-+dnl so, what format is used. Use this information to construct a script that
-+dnl will install man-pages.
-+AC_DEFUN([CF_MAN_PAGES],
-+[
-+CF_MANPAGE_FORMAT
-+CF_MANPAGE_RENAMES
-+CF_MANPAGE_SYMLINKS
-+CF_MANPAGE_TBL
-+
-+ if test "$prefix" = "NONE" ; then
-+ cf_prefix="$ac_default_prefix"
-+ else
-+ cf_prefix="$prefix"
-+ fi
-+
-+ case "$MANPAGE_FORMAT" in # (vi
-+ *catonly*) # (vi
-+ cf_format=yes
-+ cf_inboth=no
-+ ;;
-+ *formatted*) # (vi
-+ cf_format=yes
-+ cf_inboth=yes
-+ ;;
-+ *)
-+ cf_format=no
-+ cf_inboth=no
-+ ;;
-+ esac
-+
-+test ! -d man && mkdir man
-+
-+cf_so_strip=
-+cf_compress=
-+case "$MANPAGE_FORMAT" in #(vi
-+*compress*) #(vi
-+ cf_so_strip="Z"
-+ cf_compress=compress
-+ ;;
-+*gzip*) #(vi
-+ cf_so_strip="gz"
-+ cf_compress=gzip
-+ ;;
-+esac
-+
-+cf_edit_man=man/edit_man.sh
-+
-+cat >$cf_edit_man <<CF_EOF
-+#! /bin/sh
-+# this script is generated by the configure-script CF_MAN_PAGES macro.
-+prefix="$cf_prefix"
-+datadir="$datadir"
-+NCURSES_OSPEED="$NCURSES_OSPEED"
-+TERMINFO="$TERMINFO"
-+MKDIRS="sh `cd $srcdir && pwd`/mkinstalldirs"
-+INSTALL="$INSTALL"
-+INSTALL_DATA="$INSTALL_DATA"
-+transform="$program_transform_name"
-+
-+TMP=\${TMPDIR-/tmp}/man\$\$
-+trap "rm -f \$TMP" 0 1 2 5 15
-+
-+form=\[$]1
-+shift || exit 1
-+
-+verb=\[$]1
-+shift || exit 1
-+
-+mandir=\[$]1
-+shift || exit 1
-+
-+srcdir=\[$]1
-+shift || exit 1
-+
-+if test "\$form" = normal ; then
-+ if test "$cf_format" = yes ; then
-+ if test "$cf_inboth" = no ; then
-+ sh \[$]0 format \$verb \$mandir \$srcdir \[$]*
-+ exit $?
-+ fi
-+ fi
-+ cf_subdir=\$mandir/man
-+ cf_tables=$MANPAGE_TBL
-+else
-+ cf_subdir=\$mandir/cat
-+ cf_tables=yes
-+fi
-+
-+# process the list of source-files
-+for i in \[$]* ; do
-+case \$i in #(vi
-+*.orig|*.rej) ;; #(vi
-+*.[[0-9]]*)
-+ section=\`expr "\$i" : '.*\\.\\([[0-9]]\\)[[xm]]*'\`;
-+ if test \$verb = installing ; then
-+ if test ! -d \$cf_subdir\${section} ; then
-+ \$MKDIRS \$cf_subdir\$section
-+ fi
-+ fi
-+ aliases=
-+ source=\`basename \$i\`
-+ inalias=\$source
-+ test ! -f \$inalias && inalias="\$srcdir/\$inalias"
-+ if test ! -f \$inalias ; then
-+ echo .. skipped \$source
-+ continue
-+ fi
-+CF_EOF
-+
-+if test "$MANPAGE_ALIASES" != no ; then
-+cat >>$cf_edit_man <<CF_EOF
-+ aliases=\`sed -f \$srcdir/manlinks.sed \$inalias | sort -u\`
-+CF_EOF
-+fi
-+
-+if test "$MANPAGE_RENAMES" = no ; then
-+cat >>$cf_edit_man <<CF_EOF
-+ # perform program transformations for section 1 man pages
-+ if test \$section = 1 ; then
-+ target=\$cf_subdir\${section}/\`echo \$source|sed "\${transform}"\`
-+ else
-+ target=\$cf_subdir\${section}/\$source
-+ fi
-+CF_EOF
-+else
-+cat >>$cf_edit_man <<CF_EOF
-+ target=\`grep "^\$source" $MANPAGE_RENAMES | $AWK '{print \[$]2}'\`
-+ if test -z "\$target" ; then
-+ echo '? missing rename for '\$source
-+ target="\$source"
-+ fi
-+ target="\$cf_subdir\${section}/\${target}"
-+CF_EOF
-+fi
-+
-+ # replace variables in man page
-+ ifelse($1,,,[
-+ for cf_name in $1
-+ do
-+cat >>$cf_edit_man <<CF_EOF
-+ prog_$cf_name=\`echo $cf_name|sed "\${transform}"\`
-+CF_EOF
-+ done
-+ ])
-+cat >>$cf_edit_man <<CF_EOF
-+ sed -e "s,@DATADIR@,\$datadir," \\
-+ -e "s,@TERMINFO@,\$TERMINFO," \\
-+ -e "s,@NCURSES_OSPEED@,\$NCURSES_OSPEED," \\
-+CF_EOF
-+
-+ ifelse($1,,,[
-+ for cf_name in $1
-+ do
-+ cf_NAME=`echo "$cf_name" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-+cat >>$cf_edit_man <<CF_EOF
-+ -e "s,@$cf_NAME@,\$prog_$cf_name," \\
-+CF_EOF
-+ done
-+ ])
-+
-+if test -f $MANPAGE_RENAMES ; then
-+cat >>$cf_edit_man <<CF_EOF
-+ < \$i | sed -f $srcdir/edit_man.sed >\$TMP
-+CF_EOF
-+else
-+cat >>$cf_edit_man <<CF_EOF
-+ < \$i >\$TMP
-+CF_EOF
-+fi
-+
-+cat >>$cf_edit_man <<CF_EOF
-+if test \$cf_tables = yes ; then
-+ tbl \$TMP >\$TMP.out
-+ mv \$TMP.out \$TMP
-+fi
-+CF_EOF
-+
-+if test $with_curses_h != yes ; then
-+cat >>$cf_edit_man <<CF_EOF
-+ sed -e "/\#[ ]*include/s,curses.h,ncurses.h," < \$TMP >\$TMP.out
-+ mv \$TMP.out \$TMP
-+CF_EOF
-+fi
-+
-+cat >>$cf_edit_man <<CF_EOF
-+ if test \$form = format ; then
-+ nroff -man \$TMP >\$TMP.out
-+ mv \$TMP.out \$TMP
-+ fi
-+CF_EOF
-+
-+if test -n "$cf_compress" ; then
-+cat >>$cf_edit_man <<CF_EOF
-+ if test \$verb = installing ; then
-+ if ( $cf_compress -f \$TMP )
-+ then
-+ mv \$TMP.$cf_so_strip \$TMP
-+ fi
-+ fi
-+ target="\$target.$cf_so_strip"
-+CF_EOF
-+fi
-+
-+case "$MANPAGE_FORMAT" in #(vi
-+*BSDI*)
-+cat >>$cf_edit_man <<CF_EOF
-+ if test \$form = format ; then
-+ # BSDI installs only .0 suffixes in the cat directories
-+ target="\`echo \$target|sed -e 's/\.[[1-9]]\+[[a-z]]*/.0/'\`"
-+ fi
-+CF_EOF
-+ ;;
-+esac
-+
-+cat >>$cf_edit_man <<CF_EOF
-+ suffix=\`basename \$target | sed -e 's%^[[^.]]*%%'\`
-+ if test \$verb = installing ; then
-+ echo \$verb \$target
-+ \$INSTALL_DATA \$TMP \$target
-+ test -n "\$aliases" && (
-+ cd \$cf_subdir\${section} && (
-+ source=\`echo \$target |sed -e 's%^.*/\([[^/]][[^/]]*/[[^/]][[^/]]*$\)%\1%'\`
-+ test -n "$cf_so_strip" && source=\`echo \$source |sed -e 's%\.$cf_so_strip\$%%'\`
-+ target=\`basename \$target\`
-+ for cf_alias in \$aliases
-+ do
-+ if test \$section = 1 ; then
-+ cf_alias=\`echo \$cf_alias|sed "\${transform}"\`
-+ fi
-+
-+ if test "$MANPAGE_SYMLINKS" = yes ; then
-+ if test -f \$cf_alias\${suffix} ; then
-+ if ( cmp -s \$target \$cf_alias\${suffix} )
-+ then
-+ continue
-+ fi
-+ fi
-+ echo .. \$verb alias \$cf_alias\${suffix}
-+ rm -f \$cf_alias\${suffix}
-+ $LN_S \$target \$cf_alias\${suffix}
-+ elif test "\$target" != "\$cf_alias\${suffix}" ; then
-+ echo ".so \$source" >\$TMP
-+CF_EOF
-+if test -n "$cf_compress" ; then
-+cat >>$cf_edit_man <<CF_EOF
-+ if test -n "$cf_so_strip" ; then
-+ $cf_compress -f \$TMP
-+ mv \$TMP.$cf_so_strip \$TMP
-+ fi
-+CF_EOF
-+fi
-+cat >>$cf_edit_man <<CF_EOF
-+ echo .. \$verb alias \$cf_alias\${suffix}
-+ rm -f \$cf_alias\${suffix}
-+ \$INSTALL_DATA \$TMP \$cf_alias\${suffix}
-+ fi
-+ done
-+ )
-+ )
-+ elif test \$verb = removing ; then
-+ echo \$verb \$target
-+ rm -f \$target
-+ test -n "\$aliases" && (
-+ cd \$cf_subdir\${section} && (
-+ for cf_alias in \$aliases
-+ do
-+ if test \$section = 1 ; then
-+ cf_alias=\`echo \$cf_alias|sed "\${transform}"\`
-+ fi
-+
-+ echo .. \$verb alias \$cf_alias\${suffix}
-+ rm -f \$cf_alias\${suffix}
-+ done
-+ )
-+ )
-+ else
-+# echo ".hy 0"
-+ cat \$TMP
-+ fi
-+ ;;
-+esac
-+done
-+
-+if test $cf_inboth = yes ; then
-+if test \$form != format ; then
-+ sh \[$]0 format \$verb \$mandir \$srcdir \[$]*
-+fi
-+fi
-+
-+exit 0
-+CF_EOF
-+chmod 755 $cf_edit_man
-+
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_MATH_LIB version: 5 updated: 2000/05/28 01:39:10
-+dnl -----------
-+dnl Checks for libraries. At least one UNIX system, Apple Macintosh
-+dnl Rhapsody 5.5, does not have -lm. We cannot use the simpler
-+dnl AC_CHECK_LIB(m,sin), because that fails for C++.
-+AC_DEFUN([CF_MATH_LIB],
-+[
-+AC_CACHE_CHECK(if -lm needed for math functions,
-+ cf_cv_need_libm,[
-+ AC_TRY_LINK([
-+ #include <stdio.h>
-+ #include <math.h>
-+ ],
-+ [double x = rand(); printf("result = %g\n", ]ifelse($2,,sin(x),$2)[)],
-+ [cf_cv_need_libm=no],
-+ [cf_cv_need_libm=yes])])
-+if test "$cf_cv_need_libm" = yes
-+then
-+ifelse($1,,[
-+ LIBS="$LIBS -lm"
-+],[$1=-lm])
-+fi
-+])
-+dnl ---------------------------------------------------------------------------
-+dnl CF_MIXEDCASE_FILENAMES version: 3 updated: 2003/09/20 17:07:55
-+dnl ----------------------
-+dnl Check if the file-system supports mixed-case filenames. If we're able to
-+dnl create a lowercase name and see it as uppercase, it doesn't support that.
-+AC_DEFUN([CF_MIXEDCASE_FILENAMES],
-+[
-+AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[
-+if test "$cross_compiling" = yes ; then
-+ case $target_alias in #(vi
-+ *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-mingw32*|*-uwin*) #(vi
-+ cf_cv_mixedcase=no
-+ ;;
-+ *)
-+ cf_cv_mixedcase=yes
-+ ;;
-+ esac
-+else
-+ rm -f conftest CONFTEST
-+ echo test >conftest
-+ if test -f CONFTEST ; then
-+ cf_cv_mixedcase=no
-+ else
-+ cf_cv_mixedcase=yes
-+ fi
-+ rm -f conftest CONFTEST
-+fi
-+])
-+test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_MKSTEMP version: 3 updated: 2001/11/08 20:59:59
-+dnl ----------
-+dnl Check for a working mkstemp. This creates two files, checks that they are
-+dnl successfully created and distinct (AmigaOS apparently fails on the last).
-+AC_DEFUN([CF_MKSTEMP],[
-+AC_CACHE_CHECK(for working mkstemp, cf_cv_func_mkstemp,[
-+rm -f conftest*
-+AC_TRY_RUN([
-+#include <sys/types.h>
-+#include <stdlib.h>
-+#include <stdio.h>
-+#include <string.h>
-+#include <sys/stat.h>
-+int main()
-+{
-+ char *tmpl = "conftestXXXXXX";
-+ char name[2][80];
-+ int n;
-+ int result = 0;
-+ int fd;
-+ struct stat sb;
-+
-+ umask(077);
-+ for (n = 0; n < 2; ++n) {
-+ strcpy(name[n], tmpl);
-+ if ((fd = mkstemp(name[n])) >= 0) {
-+ if (!strcmp(name[n], tmpl)
-+ || stat(name[n], &sb) != 0
-+ || (sb.st_mode & S_IFMT) != S_IFREG
-+ || (sb.st_mode & 077) != 0) {
-+ result = 1;
-+ }
-+ close(fd);
-+ }
-+ }
-+ if (result == 0
-+ && !strcmp(name[0], name[1]))
-+ result = 1;
-+ exit(result);
-+}
-+],[cf_cv_func_mkstemp=yes
-+],[cf_cv_func_mkstemp=no
-+],[AC_CHECK_FUNC(mkstemp)
-+])
-+])
-+if test "$cf_cv_func_mkstemp" = yes ; then
-+ AC_DEFINE(HAVE_MKSTEMP)
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_NUMBER_SYNTAX version: 1 updated: 2003/09/20 18:12:49
-+dnl ----------------
-+dnl Check if the given variable is a number. If not, report an error.
-+dnl $1 is the variable
-+dnl $2 is the message
-+AC_DEFUN([CF_NUMBER_SYNTAX],[
-+if test -n "$1" ; then
-+ case $1 in #(vi
-+ [[0-9]]*) #(vi
-+ ;;
-+ *)
-+ AC_MSG_ERROR($2 is not a number: $1)
-+ ;;
-+ esac
-+else
-+ AC_MSG_ERROR($2 value is empty)
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_OBJ_SUBDIR version: 4 updated: 2002/02/23 20:38:31
-+dnl -------------
-+dnl Compute the object-directory name from the given model name
-+AC_DEFUN([CF_OBJ_SUBDIR],
-+[
-+ case $1 in
-+ libtool) $2='obj_lo' ;;
-+ normal) $2='objects' ;;
-+ debug) $2='obj_g' ;;
-+ profile) $2='obj_p' ;;
-+ shared)
-+ case $cf_cv_system_name in #(vi
-+ cygwin) #(vi
-+ $2='objects' ;;
-+ *)
-+ $2='obj_s' ;;
-+ esac
-+ esac
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_PATHSEP version: 3 updated: 2001/01/12 01:23:53
-+dnl ----------
-+dnl Provide a value for the $PATH and similar separator
-+AC_DEFUN([CF_PATHSEP],
-+[
-+ case $cf_cv_system_name in
-+ os2*) PATHSEP=';' ;;
-+ *) PATHSEP=':' ;;
-+ esac
-+ifelse($1,,,[$1=$PATHSEP])
-+ AC_SUBST(PATHSEP)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_PATH_SYNTAX version: 9 updated: 2002/09/17 23:03:38
-+dnl --------------
-+dnl Check the argument to see that it looks like a pathname. Rewrite it if it
-+dnl begins with one of the prefix/exec_prefix variables, and then again if the
-+dnl result begins with 'NONE'. This is necessary to work around autoconf's
-+dnl delayed evaluation of those symbols.
-+AC_DEFUN([CF_PATH_SYNTAX],[
-+case ".[$]$1" in #(vi
-+.\[$]\(*\)*|.\'*\'*) #(vi
-+ ;;
-+..|./*|.\\*) #(vi
-+ ;;
-+.[[a-zA-Z]]:[[\\/]]*) #(vi OS/2 EMX
-+ ;;
-+.\[$]{*prefix}*) #(vi
-+ eval $1="[$]$1"
-+ case ".[$]$1" in #(vi
-+ .NONE/*)
-+ $1=`echo [$]$1 | sed -e s%NONE%$ac_default_prefix%`
-+ ;;
-+ esac
-+ ;; #(vi
-+.NONE/*)
-+ $1=`echo [$]$1 | sed -e s%NONE%$ac_default_prefix%`
-+ ;;
-+*)
-+ ifelse($2,,[AC_ERROR([expected a pathname, not \"[$]$1\"])],$2)
-+ ;;
-+esac
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_PREDEFINE version: 1 updated: 2003/07/26 17:53:56
-+dnl ------------
-+dnl Add definitions to CPPFLAGS to ensure they're predefined for all compiles.
-+dnl
-+dnl $1 = symbol to test
-+dnl $2 = value (if any) to use for a predefinition
-+AC_DEFUN([CF_PREDEFINE],
-+[
-+AC_MSG_CHECKING(if we must define $1)
-+AC_TRY_COMPILE([#include <sys/types.h>
-+],[
-+#ifndef $1
-+make an error
-+#endif],[cf_result=no],[cf_result=yes])
-+AC_MSG_RESULT($cf_result)
-+
-+if test "$cf_result" = yes ; then
-+ CPPFLAGS="$CPPFLAGS ifelse($2,,-D$1,[-D$1=$2])"
-+elif test "x$2" != "x" ; then
-+ AC_MSG_CHECKING(checking for compatible value versus $2)
-+ AC_TRY_COMPILE([#include <sys/types.h>
-+],[
-+#if $1-$2 < 0
-+make an error
-+#endif],[cf_result=yes],[cf_result=no])
-+ AC_MSG_RESULT($cf_result)
-+ if test "$cf_result" = no ; then
-+ # perhaps we can override it - try...
-+ CPPFLAGS="$CPPFLAGS -D$1=$2"
-+ fi
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_PROG_EXT version: 10 updated: 2004/01/03 19:28:18
-+dnl -----------
-+dnl Compute $PROG_EXT, used for non-Unix ports, such as OS/2 EMX.
-+AC_DEFUN([CF_PROG_EXT],
-+[
-+AC_REQUIRE([CF_CHECK_CACHE])
-+case $cf_cv_system_name in
-+os2*)
-+ CFLAGS="$CFLAGS -Zmt"
-+ CPPFLAGS="$CPPFLAGS -D__ST_MT_ERRNO__"
-+ CXXFLAGS="$CXXFLAGS -Zmt"
-+ # autoconf's macro sets -Zexe and suffix both, which conflict:w
-+ LDFLAGS="$LDFLAGS -Zmt -Zcrtdll"
-+ ac_cv_exeext=.exe
-+ ;;
-+esac
-+
-+AC_EXEEXT
-+AC_OBJEXT
-+
-+PROG_EXT="$EXEEXT"
-+AC_SUBST(PROG_EXT)
-+test -n "$PROG_EXT" && AC_DEFINE_UNQUOTED(PROG_EXT,"$PROG_EXT")
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_PROG_INSTALL version: 5 updated: 2002/12/21 22:46:07
-+dnl ---------------
-+dnl Force $INSTALL to be an absolute-path. Otherwise, edit_man.sh and the
-+dnl misc/tabset install won't work properly. Usually this happens only when
-+dnl using the fallback mkinstalldirs script
-+AC_DEFUN([CF_PROG_INSTALL],
-+[AC_PROG_INSTALL
-+case $INSTALL in
-+/*)
-+ ;;
-+*)
-+ CF_DIRNAME(cf_dir,$INSTALL)
-+ test -z "$cf_dir" && cf_dir=.
-+ INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's%^.*/%%'`
-+ ;;
-+esac
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_PROG_LDCONFIG version: 1 updated: 2003/09/20 17:07:55
-+dnl ----------------
-+dnl Check for ldconfig, needed to fixup shared libraries that would be built
-+dnl and then used in the install.
-+AC_DEFUN([CF_PROG_LDCONFIG],[
-+if test "$cross_compiling" = yes ; then
-+ LDCONFIG=:
-+else
-+case "$cf_cv_system_name" in #(vi
-+freebsd*) #(vi
-+ test -z "$LDCONFIG" && LDCONFIG="/sbin/ldconfig -R"
-+ ;;
-+*) LDPATH=$PATH:/sbin:/usr/sbin
-+ AC_PATH_PROG(LDCONFIG,ldconfig,,$LDPATH)
-+ ;;
-+esac
-+fi
-+AC_SUBST(LDCONFIG)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_REGEX version: 3 updated: 1997/11/01 14:26:01
-+dnl --------
-+dnl Attempt to determine if we've got one of the flavors of regular-expression
-+dnl code that we can support.
-+AC_DEFUN([CF_REGEX],
-+[
-+AC_MSG_CHECKING([for regular-expression headers])
-+AC_CACHE_VAL(cf_cv_regex,[
-+AC_TRY_LINK([#include <sys/types.h>
-+#include <regex.h>],[
-+ regex_t *p;
-+ int x = regcomp(p, "", 0);
-+ int y = regexec(p, "", 0, 0, 0);
-+ regfree(p);
-+ ],[cf_cv_regex="regex.h"],[
-+ AC_TRY_LINK([#include <regexp.h>],[
-+ char *p = compile("", "", "", 0);
-+ int x = step("", "");
-+ ],[cf_cv_regex="regexp.h"],[
-+ cf_save_LIBS="$LIBS"
-+ LIBS="-lgen $LIBS"
-+ AC_TRY_LINK([#include <regexpr.h>],[
-+ char *p = compile("", "", "");
-+ int x = step("", "");
-+ ],[cf_cv_regex="regexpr.h"],[LIBS="$cf_save_LIBS"])])])
-+])
-+AC_MSG_RESULT($cf_cv_regex)
-+case $cf_cv_regex in
-+ regex.h) AC_DEFINE(HAVE_REGEX_H_FUNCS) ;;
-+ regexp.h) AC_DEFINE(HAVE_REGEXP_H_FUNCS) ;;
-+ regexpr.h) AC_DEFINE(HAVE_REGEXPR_H_FUNCS) ;;
-+esac
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_SHARED_OPTS version: 30 updated: 2003/12/27 20:48:07
-+dnl --------------
-+dnl Attempt to determine the appropriate CC/LD options for creating a shared
-+dnl library.
-+dnl
-+dnl Note: $(LOCAL_LDFLAGS) is used to link executables that will run within the
-+dnl build-tree, i.e., by making use of the libraries that are compiled in ../lib
-+dnl We avoid compiling-in a ../lib path for the shared library since that can
-+dnl lead to unexpected results at runtime.
-+dnl $(LOCAL_LDFLAGS2) has the same intention but assumes that the shared libraries
-+dnl are compiled in ../../lib
-+dnl
-+dnl The variable 'cf_cv_do_symlinks' is used to control whether we configure
-+dnl to install symbolic links to the rel/abi versions of shared libraries.
-+dnl
-+dnl The variable 'cf_cv_shlib_version' controls whether we use the rel or abi
-+dnl version when making symbolic links.
-+dnl
-+dnl The variable 'cf_cv_shlib_version_infix' controls whether shared library
-+dnl version numbers are infix (ex: libncurses.<ver>.dylib) or postfix
-+dnl (ex: libncurses.so.<ver>).
-+dnl
-+dnl Some loaders leave 'so_locations' lying around. It's nice to clean up.
-+AC_DEFUN([CF_SHARED_OPTS],
-+[
-+ AC_REQUIRE([CF_SUBST_NCURSES_VERSION])
-+ LOCAL_LDFLAGS=
-+ LOCAL_LDFLAGS2=
-+ LD_SHARED_OPTS=
-+ INSTALL_LIB="-m 644"
-+
-+ cf_cv_do_symlinks=no
-+
-+ AC_MSG_CHECKING(if release/abi version should be used for shared libs)
-+ AC_ARG_WITH(shlib-version,
-+ [ --with-shlib-version=X Specify rel or abi version for shared libs],
-+ [test -z "$withval" && withval=auto
-+ case $withval in #(vi
-+ yes) #(vi
-+ cf_cv_shlib_version=auto
-+ ;;
-+ rel|abi|auto|no) #(vi
-+ cf_cv_shlib_version=$withval
-+ ;;
-+ *)
-+ AC_ERROR([option value must be one of: rel, abi, auto or no])
-+ ;;
-+ esac
-+ ],[cf_cv_shlib_version=auto])
-+ AC_MSG_RESULT($cf_cv_shlib_version)
-+
-+ cf_cv_rm_so_locs=no
-+
-+ # Some less-capable ports of gcc support only -fpic
-+ CC_SHARED_OPTS=
-+ if test "$GCC" = yes
-+ then
-+ AC_MSG_CHECKING(which $CC option to use)
-+ cf_save_CFLAGS="$CFLAGS"
-+ for CC_SHARED_OPTS in -fPIC -fpic ''
-+ do
-+ CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS"
-+ AC_TRY_COMPILE([#include <stdio.h>],[int x = 1],[break],[])
-+ done
-+ AC_MSG_RESULT($CC_SHARED_OPTS)
-+ CFLAGS="$cf_save_CFLAGS"
-+ fi
-+
-+ cf_cv_shlib_version_infix=no
-+
-+ case $cf_cv_system_name in
-+ beos*)
-+ MK_SHARED_LIB='$(CC) -o $[@] -Xlinker -soname=`basename $[@]` -nostart -e 0'
-+ ;;
-+ cygwin*)
-+ CC_SHARED_OPTS=
-+ MK_SHARED_LIB='$(CC) -shared -Wl,--out-implib=$(IMPORT_LIB) -Wl,--export-all-symbols -o $(SHARED_LIB)'
-+ cf_cv_shlib_version=cygdll
-+ cf_cv_shlib_version_infix=cygdll
-+ ;;
-+ darwin*)
-+ EXTRA_CFLAGS="-no-cpp-precomp"
-+ CC_SHARED_OPTS="-dynamic"
-+ MK_SHARED_LIB='$(CC) -dynamiclib -install_name $(DESTDIR)$(libdir)/`basename $[@]` -compatibility_version $(ABI_VERSION) -current_version $(ABI_VERSION) -o $[@]'
-+ test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=abi
-+ cf_cv_shlib_version_infix=yes
-+ ;;
-+ hpux*)
-+ # (tested with gcc 2.7.2 -- I don't have c89)
-+ if test "$GCC" = yes; then
-+ LD_SHARED_OPTS='-Xlinker +b -Xlinker $(libdir)'
-+ else
-+ CC_SHARED_OPTS='+Z'
-+ LD_SHARED_OPTS='-Wl,+b,$(libdir)'
-+ fi
-+ MK_SHARED_LIB='$(LD) +b $(libdir) -b -o $[@]'
-+ # HP-UX shared libraries must be executable, and should be
-+ # readonly to exploit a quirk in the memory manager.
-+ INSTALL_LIB="-m 555"
-+ ;;
-+ irix*)
-+ if test "$cf_cv_ld_rpath" = yes ; then
-+ cf_ld_rpath_opt="-Wl,-rpath,"
-+ EXTRA_LDFLAGS="-Wl,-rpath,\$(libdir) $EXTRA_LDFLAGS"
-+ fi
-+ # tested with IRIX 5.2 and 'cc'.
-+ if test "$GCC" != yes; then
-+ CC_SHARED_OPTS='-KPIC'
-+ fi
-+ MK_SHARED_LIB='$(LD) -shared -rdata_shared -soname `basename $[@]` -o $[@]'
-+ cf_cv_rm_so_locs=yes
-+ ;;
-+ linux*|gnu*|k*bsd*-gnu)
-+ if test "$DFT_LWR_MODEL" = "shared" ; then
-+ LOCAL_LDFLAGS="-Wl,-rpath,`pwd`/lib"
-+ LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
-+ fi
-+ if test "$cf_cv_ld_rpath" = yes ; then
-+ cf_ld_rpath_opt="-Wl,-rpath,"
-+ EXTRA_LDFLAGS="$LOCAL_LDFLAGS $EXTRA_LDFLAGS"
-+ fi
-+ test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
-+ MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $[@] .$(REL_VERSION)`.$(ABI_VERSION),-stats,-lc -o $[@]'
-+ ;;
-+ openbsd2*)
-+ CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
-+ MK_SHARED_LIB='$(LD) -Bshareable -soname,`basename $[@].$(ABI_VERSION)` -o $[@]'
-+ ;;
-+ freebsd[[45]]*)
-+ CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
-+ MK_SHARED_LIB='$(LD) -Bshareable -soname=`basename $[@]` -o $[@]'
-+ test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
-+
-+# This doesn't work - I keep getting spurious references to needing
-+# libncurses.so.5.3 when ldd says it's resolved. LOCAL_LDFLAGS2 seems to be
-+# no longer used anyway. And the rpath logic isn't relative - so I have to
-+# add the local and install lib-directories:
-+#
-+# if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_ld_rpath" = yes ; then
-+# LOCAL_LDFLAGS="-rpath `pwd`/lib"
-+# LOCAL_LDFLAGS2="-rpath \$(libdir) $LOCAL_LDFLAGS"
-+# cf_ld_rpath_opt="-rpath "
-+# EXTRA_LDFLAGS="$LOCAL_LDFLAGS $EXTRA_LDFLAGS"
-+# fi
-+ ;;
-+ openbsd*|freebsd*)
-+ CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
-+ MK_SHARED_LIB='$(LD) -Bshareable -o $[@]'
-+ test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
-+ ;;
-+ netbsd*)
-+ CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
-+ test "$cf_cv_ld_rpath" = yes && cf_ld_rpath_opt="-Wl,-rpath,"
-+ if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_ld_rpath" = yes ; then
-+ LOCAL_LDFLAGS="-Wl,-rpath,`pwd`/lib"
-+ LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
-+ EXTRA_LDFLAGS="-Wl,-rpath,\$(libdir) $EXTRA_LDFLAGS"
-+ MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $[@] .$(REL_VERSION)`.$(ABI_VERSION) -o $[@]'
-+ if test "$cf_cv_shlib_version" = auto; then
-+ if test ! -f /usr/libexec/ld.elf_so; then
-+ cf_cv_shlib_version=rel
-+ fi
-+ fi
-+ else
-+ MK_SHARED_LIB='$(LD) -Bshareable -o $[@]'
-+ fi
-+ ;;
-+ osf*|mls+*)
-+ # tested with OSF/1 V3.2 and 'cc'
-+ # tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't
-+ # link with shared libs).
-+ MK_SHARED_LIB='$(LD) -set_version $(REL_VERSION):$(ABI_VERSION) -expect_unresolved "*" -shared -soname `basename $[@]`'
-+ case $host_os in
-+ osf4*)
-+ MK_SHARED_LIB="${MK_SHARED_LIB} -msym"
-+ ;;
-+ esac
-+ MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $[@]'
-+ if test "$DFT_LWR_MODEL" = "shared" ; then
-+ LOCAL_LDFLAGS="-Wl,-rpath,`pwd`/lib"
-+ LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
-+ fi
-+ if test "$cf_cv_ld_rpath" = yes ; then
-+ cf_ld_rpath_opt="-rpath"
-+ # EXTRA_LDFLAGS="$LOCAL_LDFLAGS $EXTRA_LDFLAGS"
-+ fi
-+ cf_cv_rm_so_locs=yes
-+ ;;
-+ sco3.2v5*) # (also uw2* and UW7) hops 13-Apr-98
-+ # tested with osr5.0.5
-+ if test "$GCC" != yes; then
-+ CC_SHARED_OPTS='-belf -KPIC'
-+ fi
-+ MK_SHARED_LIB='$(LD) -dy -G -h `basename $[@] .$(REL_VERSION)`.$(ABI_VERSION) -o [$]@'
-+ if test "$cf_cv_ld_rpath" = yes ; then
-+ # only way is to set LD_RUN_PATH but no switch for it
-+ RUN_PATH=$libdir
-+ fi
-+ test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
-+ LINK_PROGS='LD_RUN_PATH=$(libdir)'
-+ LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib'
-+ ;;
-+ sunos4*)
-+ # tested with SunOS 4.1.1 and gcc 2.7.0
-+ if test "$GCC" != yes; then
-+ CC_SHARED_OPTS='-KPIC'
-+ fi
-+ MK_SHARED_LIB='$(LD) -assert pure-text -o $[@]'
-+ test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
-+ ;;
-+ solaris2*)
-+ # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
-+ if test "$GCC" != yes; then
-+ CC_SHARED_OPTS='-KPIC'
-+ fi
-+ MK_SHARED_LIB='$(LD) -dy -G -h `basename $[@] .$(REL_VERSION)`.$(ABI_VERSION) -o $[@]'
-+ if test "$DFT_LWR_MODEL" = "shared" ; then
-+ LOCAL_LDFLAGS="-R `pwd`/lib:\$(libdir)"
-+ LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
-+ fi
-+ if test "$cf_cv_ld_rpath" = yes ; then
-+ cf_ld_rpath_opt="-R"
-+ EXTRA_LDFLAGS="$LOCAL_LDFLAGS $EXTRA_LDFLAGS"
-+ fi
-+ test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
-+ ;;
-+ sysv5uw7*|unix_sv*)
-+ # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc)
-+ if test "$GCC" != yes; then
-+ CC_SHARED_OPTS='-KPIC'
-+ fi
-+ MK_SHARED_LIB='$(LD) -d y -G -o [$]@'
-+ ;;
-+ *)
-+ CC_SHARED_OPTS='unknown'
-+ MK_SHARED_LIB='echo unknown'
-+ ;;
-+ esac
-+
-+ # This works if the last tokens in $MK_SHARED_LIB are the -o target.
-+ case "$cf_cv_shlib_version" in #(vi
-+ rel|abi)
-+ case "$MK_SHARED_LIB" in #(vi
-+ *'-o $[@]')
-+ test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes
-+ ;;
-+ *)
-+ AC_MSG_WARN(ignored --with-shlib-version)
-+ ;;
-+ esac
-+ ;;
-+ esac
-+
-+ if test -n "$cf_ld_rpath_opt" ; then
-+ AC_MSG_CHECKING(if we need a space after rpath option)
-+ cf_save_LIBS="$LIBS"
-+ LIBS="$LIBS ${cf_ld_rpath_opt}$libdir"
-+ AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes)
-+ LIBS="$cf_save_LIBS"
-+ AC_MSG_RESULT($cf_rpath_space)
-+ test "$cf_rpath_space" = yes && cf_ld_rpath_opt="$cf_ld_rpath_opt "
-+ MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\$(libdir)"
-+ fi
-+
-+ AC_SUBST(CC_SHARED_OPTS)
-+ AC_SUBST(LD_SHARED_OPTS)
-+ AC_SUBST(MK_SHARED_LIB)
-+ AC_SUBST(LINK_PROGS)
-+ AC_SUBST(LINK_TESTS)
-+ AC_SUBST(EXTRA_LDFLAGS)
-+ AC_SUBST(LOCAL_LDFLAGS)
-+ AC_SUBST(LOCAL_LDFLAGS2)
-+ AC_SUBST(INSTALL_LIB)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_SIZECHANGE version: 8 updated: 2000/11/04 12:22:16
-+dnl -------------
-+dnl Check for definitions & structures needed for window size-changing
-+dnl FIXME: check that this works with "snake" (HP-UX 10.x)
-+AC_DEFUN([CF_SIZECHANGE],
-+[
-+AC_REQUIRE([CF_STRUCT_TERMIOS])
-+AC_CACHE_CHECK(declaration of size-change, cf_cv_sizechange,[
-+ cf_cv_sizechange=unknown
-+ cf_save_CPPFLAGS="$CPPFLAGS"
-+
-+for cf_opts in "" "NEED_PTEM_H"
-+do
-+
-+ CPPFLAGS="$cf_save_CPPFLAGS"
-+ test -n "$cf_opts" && CPPFLAGS="$CPPFLAGS -D$cf_opts"
-+ AC_TRY_COMPILE([#include <sys/types.h>
-+#ifdef HAVE_TERMIOS_H
-+#include <termios.h>
-+#else
-+#ifdef HAVE_TERMIO_H
-+#include <termio.h>
-+#endif
-+#endif
-+#ifdef NEED_PTEM_H
-+/* This is a workaround for SCO: they neglected to define struct winsize in
-+ * termios.h -- it's only in termio.h and ptem.h
-+ */
-+#include <sys/stream.h>
-+#include <sys/ptem.h>
-+#endif
-+#if !defined(sun) || !defined(HAVE_TERMIOS_H)
-+#include <sys/ioctl.h>
-+#endif
-+],[
-+#ifdef TIOCGSIZE
-+ struct ttysize win; /* FIXME: what system is this? */
-+ int y = win.ts_lines;
-+ int x = win.ts_cols;
-+#else
-+#ifdef TIOCGWINSZ
-+ struct winsize win;
-+ int y = win.ws_row;
-+ int x = win.ws_col;
-+#else
-+ no TIOCGSIZE or TIOCGWINSZ
-+#endif /* TIOCGWINSZ */
-+#endif /* TIOCGSIZE */
-+ ],
-+ [cf_cv_sizechange=yes],
-+ [cf_cv_sizechange=no])
-+
-+ CPPFLAGS="$cf_save_CPPFLAGS"
-+ if test "$cf_cv_sizechange" = yes ; then
-+ echo "size-change succeeded ($cf_opts)" >&AC_FD_CC
-+ test -n "$cf_opts" && cf_cv_sizechange="$cf_opts"
-+ break
-+ fi
-+done
-+])
-+if test "$cf_cv_sizechange" != no ; then
-+ AC_DEFINE(HAVE_SIZECHANGE)
-+ case $cf_cv_sizechange in #(vi
-+ NEED*)
-+ AC_DEFINE_UNQUOTED($cf_cv_sizechange )
-+ ;;
-+ esac
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_SRC_MODULES version: 15 updated: 2004/01/10 16:05:16
-+dnl --------------
-+dnl For each parameter, test if the source-directory exists, and if it contains
-+dnl a 'modules' file. If so, add to the list $cf_cv_src_modules which we'll
-+dnl use in CF_LIB_RULES.
-+dnl
-+dnl This uses the configured value to make the lists SRC_SUBDIRS and
-+dnl SUB_MAKEFILES which are used in the makefile-generation scheme.
-+AC_DEFUN([CF_SRC_MODULES],
-+[
-+AC_MSG_CHECKING(for src modules)
-+
-+# dependencies and linker-arguments for test-programs
-+TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEPS"
-+if test "$DFT_LWR_MODEL" = "libtool"; then
-+ TEST_ARGS="${TEST_DEPS}"
-+else
-+ TEST_ARGS="-l${LIB_NAME}${DFT_ARG_SUFFIX} $TEST_ARGS"
-+fi
-+
-+# dependencies and linker-arguments for utility-programs
-+test "$with_termlib" != yes && PROG_ARGS="$TEST_ARGS"
-+
-+cf_cv_src_modules=
-+for cf_dir in $1
-+do
-+ if test -f $srcdir/$cf_dir/modules; then
-+
-+ # We may/may not have tack in the distribution, though the
-+ # makefile is.
-+ if test $cf_dir = tack ; then
-+ if test ! -f $srcdir/${cf_dir}/${cf_dir}.h; then
-+ continue
-+ fi
-+ fi
-+
-+ if test -z "$cf_cv_src_modules"; then
-+ cf_cv_src_modules=$cf_dir
-+ else
-+ cf_cv_src_modules="$cf_cv_src_modules $cf_dir"
-+ fi
-+
-+ # Make the ncurses_cfg.h file record the library interface files as
-+ # well. These are header files that are the same name as their
-+ # directory. Ncurses is the only library that does not follow
-+ # that pattern.
-+ if test $cf_dir = tack ; then
-+ continue
-+ elif test -f $srcdir/${cf_dir}/${cf_dir}.h; then
-+ CF_UPPER(cf_have_include,$cf_dir)
-+ AC_DEFINE_UNQUOTED(HAVE_${cf_have_include}_H)
-+ AC_DEFINE_UNQUOTED(HAVE_LIB${cf_have_include})
-+ TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${cf_dir}${DFT_DEP_SUFFIX} $TEST_DEPS"
-+ if test "$DFT_LWR_MODEL" = "libtool"; then
-+ TEST_ARGS="${TEST_DEPS}"
-+ else
-+ TEST_ARGS="-l${cf_dir}${DFT_ARG_SUFFIX} $TEST_ARGS"
-+ fi
-+ fi
-+ fi
-+done
-+AC_MSG_RESULT($cf_cv_src_modules)
-+TEST_ARGS="-L${LIB_DIR} $TEST_ARGS"
-+AC_SUBST(TEST_DEPS)
-+AC_SUBST(TEST_ARGS)
-+
-+PROG_ARGS="-L${LIB_DIR} $PROG_ARGS"
-+AC_SUBST(PROG_ARGS)
-+
-+SRC_SUBDIRS="man include"
-+for cf_dir in $cf_cv_src_modules
-+do
-+ SRC_SUBDIRS="$SRC_SUBDIRS $cf_dir"
-+done
-+SRC_SUBDIRS="$SRC_SUBDIRS test"
-+test -z "$MAKE_TERMINFO" && SRC_SUBDIRS="$SRC_SUBDIRS misc"
-+test "$cf_with_cxx_binding" != no && SRC_SUBDIRS="$SRC_SUBDIRS c++"
-+
-+ADA_SUBDIRS=
-+if test "$cf_cv_prog_gnat_correct" = yes && test -f $srcdir/Ada95/Makefile.in; then
-+ SRC_SUBDIRS="$SRC_SUBDIRS Ada95"
-+ ADA_SUBDIRS="gen src samples"
-+fi
-+
-+SUB_MAKEFILES=
-+for cf_dir in $SRC_SUBDIRS
-+do
-+ SUB_MAKEFILES="$SUB_MAKEFILES $cf_dir/Makefile"
-+done
-+
-+if test -n "$ADA_SUBDIRS"; then
-+ for cf_dir in $ADA_SUBDIRS
-+ do
-+ SUB_MAKEFILES="$SUB_MAKEFILES Ada95/$cf_dir/Makefile"
-+ done
-+ AC_SUBST(ADA_SUBDIRS)
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_STDCPP_LIBRARY version: 5 updated: 2000/08/12 23:18:52
-+dnl -----------------
-+dnl Check for -lstdc++, which is GNU's standard C++ library.
-+AC_DEFUN([CF_STDCPP_LIBRARY],
-+[
-+if test -n "$GXX" ; then
-+case $cf_cv_system_name in #(vi
-+os2*) #(vi
-+ cf_stdcpp_libname=stdcpp
-+ ;;
-+*)
-+ cf_stdcpp_libname=stdc++
-+ ;;
-+esac
-+AC_CACHE_CHECK(for library $cf_stdcpp_libname,cf_cv_libstdcpp,[
-+ cf_save="$LIBS"
-+ LIBS="$LIBS -l$cf_stdcpp_libname"
-+AC_TRY_LINK([
-+#include <strstream.h>],[
-+char buf[80];
-+strstreambuf foo(buf, sizeof(buf))
-+],
-+ [cf_cv_libstdcpp=yes],
-+ [cf_cv_libstdcpp=no])
-+ LIBS="$cf_save"
-+])
-+test "$cf_cv_libstdcpp" = yes && CXXLIBS="$CXXLIBS -l$cf_stdcpp_libname"
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_STRIP_G_OPT version: 3 updated: 2002/12/21 19:25:52
-+dnl --------------
-+dnl Remove "-g" option from the compiler options
-+AC_DEFUN([CF_STRIP_G_OPT],
-+[$1=`echo ${$1} | sed -e 's%-g %%' -e 's%-g$%%'`])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_STRUCT_SIGACTION version: 3 updated: 2000/08/12 23:18:52
-+dnl -------------------
-+dnl Check if we need _POSIX_SOURCE defined to use struct sigaction. We'll only
-+dnl do this if we've found the sigaction function.
-+dnl
-+dnl If needed, define SVR4_ACTION.
-+AC_DEFUN([CF_STRUCT_SIGACTION],[
-+if test "$ac_cv_func_sigaction" = yes; then
-+AC_MSG_CHECKING(whether sigaction needs _POSIX_SOURCE)
-+AC_TRY_COMPILE([
-+#include <sys/types.h>
-+#include <signal.h>],
-+ [struct sigaction act],
-+ [sigact_bad=no],
-+ [
-+AC_TRY_COMPILE([
-+#define _POSIX_SOURCE
-+#include <sys/types.h>
-+#include <signal.h>],
-+ [struct sigaction act],
-+ [sigact_bad=yes
-+ AC_DEFINE(SVR4_ACTION)],
-+ [sigact_bad=unknown])])
-+AC_MSG_RESULT($sigact_bad)
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_STRUCT_TERMIOS version: 5 updated: 2000/11/04 12:22:46
-+dnl -----------------
-+dnl Some machines require _POSIX_SOURCE to completely define struct termios.
-+dnl If so, define SVR4_TERMIO
-+AC_DEFUN([CF_STRUCT_TERMIOS],[
-+AC_CHECK_HEADERS( \
-+termio.h \
-+termios.h \
-+unistd.h \
-+)
-+if test "$ISC" = yes ; then
-+ AC_CHECK_HEADERS( sys/termio.h )
-+fi
-+if test "$ac_cv_header_termios_h" = yes ; then
-+ case "$CFLAGS $CPPFLAGS" in
-+ *-D_POSIX_SOURCE*)
-+ termios_bad=dunno ;;
-+ *) termios_bad=maybe ;;
-+ esac
-+ if test "$termios_bad" = maybe ; then
-+ AC_MSG_CHECKING(whether termios.h needs _POSIX_SOURCE)
-+ AC_TRY_COMPILE([#include <termios.h>],
-+ [struct termios foo; int x = foo.c_iflag],
-+ termios_bad=no, [
-+ AC_TRY_COMPILE([
-+#define _POSIX_SOURCE
-+#include <termios.h>],
-+ [struct termios foo; int x = foo.c_iflag],
-+ termios_bad=unknown,
-+ termios_bad=yes AC_DEFINE(SVR4_TERMIO))
-+ ])
-+ AC_MSG_RESULT($termios_bad)
-+ fi
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_SUBST version: 2 updated: 1997/09/06 23:41:28
-+dnl --------
-+dnl Shorthand macro for substituting things that the user may override
-+dnl with an environment variable.
-+dnl
-+dnl $1 = long/descriptive name
-+dnl $2 = environment variable
-+dnl $3 = default value
-+AC_DEFUN([CF_SUBST],
-+[AC_CACHE_VAL(cf_cv_subst_$2,[
-+AC_MSG_CHECKING(for $1 (symbol $2))
-+test -z "[$]$2" && $2=$3
-+AC_MSG_RESULT([$]$2)
-+AC_SUBST($2)
-+cf_cv_subst_$2=[$]$2])
-+$2=${cf_cv_subst_$2}
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_SUBST_NCURSES_VERSION version: 7 updated: 2003/06/07 16:22:51
-+dnl ------------------------
-+dnl Get the version-number for use in shared-library naming, etc.
-+AC_DEFUN([CF_SUBST_NCURSES_VERSION],
-+[
-+NCURSES_MAJOR="`egrep '^NCURSES_MAJOR[[ ]]*=' $srcdir/dist.mk | sed -e 's/^[[^0-9]]*//'`"
-+NCURSES_MINOR="`egrep '^NCURSES_MINOR[[ ]]*=' $srcdir/dist.mk | sed -e 's/^[[^0-9]]*//'`"
-+NCURSES_PATCH="`egrep '^NCURSES_PATCH[[ ]]*=' $srcdir/dist.mk | sed -e 's/^[[^0-9]]*//'`"
-+cf_cv_abi_version=${NCURSES_MAJOR}
-+cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR}
-+dnl Show the computed version, for logging
-+cf_cv_timestamp=`date`
-+AC_MSG_RESULT(Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp))
-+dnl We need these values in the generated headers
-+AC_SUBST(NCURSES_MAJOR)
-+AC_SUBST(NCURSES_MINOR)
-+AC_SUBST(NCURSES_PATCH)
-+dnl We need these values in the generated makefiles
-+AC_SUBST(cf_cv_rel_version)
-+AC_SUBST(cf_cv_abi_version)
-+AC_SUBST(cf_cv_builtin_bool)
-+AC_SUBST(cf_cv_header_stdbool_h)
-+AC_SUBST(cf_cv_type_of_bool)dnl
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_SYS_TIME_SELECT version: 4 updated: 2000/10/04 09:18:40
-+dnl ------------------
-+dnl Check if we can include <sys/time.h> with <sys/select.h>; this breaks on
-+dnl older SCO configurations.
-+AC_DEFUN([CF_SYS_TIME_SELECT],
-+[
-+AC_MSG_CHECKING(if sys/time.h works with sys/select.h)
-+AC_CACHE_VAL(cf_cv_sys_time_select,[
-+AC_TRY_COMPILE([
-+#include <sys/types.h>
-+#ifdef HAVE_SYS_TIME_H
-+#include <sys/time.h>
-+#endif
-+#ifdef HAVE_SYS_SELECT_H
-+#include <sys/select.h>
-+#endif
-+],[],[cf_cv_sys_time_select=yes],
-+ [cf_cv_sys_time_select=no])
-+ ])
-+AC_MSG_RESULT($cf_cv_sys_time_select)
-+test "$cf_cv_sys_time_select" = yes && AC_DEFINE(HAVE_SYS_TIME_SELECT)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_TYPEOF_CHTYPE version: 4 updated: 2000/10/04 09:18:40
-+dnl ----------------
-+dnl Determine the type we should use for chtype (and attr_t, which is treated
-+dnl as the same thing). We want around 32 bits, so on most machines want a
-+dnl long, but on newer 64-bit machines, probably want an int. If we're using
-+dnl wide characters, we have to have a type compatible with that, as well.
-+AC_DEFUN([CF_TYPEOF_CHTYPE],
-+[
-+AC_REQUIRE([CF_UNSIGNED_LITERALS])
-+AC_MSG_CHECKING([for type of chtype])
-+AC_CACHE_VAL(cf_cv_typeof_chtype,[
-+ AC_TRY_RUN([
-+#ifdef USE_WIDEC_SUPPORT
-+#include <stddef.h> /* we want wchar_t */
-+#define WANT_BITS 39
-+#else
-+#define WANT_BITS 31
-+#endif
-+#include <stdio.h>
-+int main()
-+{
-+ FILE *fp = fopen("cf_test.out", "w");
-+ if (fp != 0) {
-+ char *result = "long";
-+#ifdef USE_WIDEC_SUPPORT
-+ /*
-+ * If wchar_t is smaller than a long, it must be an int or a
-+ * short. We prefer not to use a short anyway.
-+ */
-+ if (sizeof(unsigned long) > sizeof(wchar_t))
-+ result = "int";
-+#endif
-+ if (sizeof(unsigned long) > sizeof(unsigned int)) {
-+ int n;
-+ unsigned int x;
-+ for (n = 0; n < WANT_BITS; n++) {
-+ unsigned int y = (x >> n);
-+ if (y != 1 || x == 0) {
-+ x = 0;
-+ break;
-+ }
-+ }
-+ /*
-+ * If x is nonzero, an int is big enough for the bits
-+ * that we want.
-+ */
-+ result = (x != 0) ? "int" : "long";
-+ }
-+ fputs(result, fp);
-+ fclose(fp);
-+ }
-+ exit(0);
-+}
-+ ],
-+ [cf_cv_typeof_chtype=`cat cf_test.out`],
-+ [cf_cv_typeof_chtype=long],
-+ [cf_cv_typeof_chtype=long])
-+ rm -f cf_test.out
-+ ])
-+AC_MSG_RESULT($cf_cv_typeof_chtype)
-+
-+AC_SUBST(cf_cv_typeof_chtype)
-+AC_DEFINE_UNQUOTED(TYPEOF_CHTYPE,$cf_cv_typeof_chtype)
-+
-+cf_cv_1UL="1"
-+test "$cf_cv_unsigned_literals" = yes && cf_cv_1UL="${cf_cv_1UL}U"
-+test "$cf_cv_typeof_chtype" = long && cf_cv_1UL="${cf_cv_1UL}L"
-+AC_SUBST(cf_cv_1UL)
-+
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_TYPE_SIGACTION version: 3 updated: 2000/08/12 23:18:52
-+dnl -----------------
-+dnl
-+AC_DEFUN([CF_TYPE_SIGACTION],
-+[
-+AC_MSG_CHECKING([for type sigaction_t])
-+AC_CACHE_VAL(cf_cv_type_sigaction,[
-+ AC_TRY_COMPILE([
-+#include <signal.h>],
-+ [sigaction_t x],
-+ [cf_cv_type_sigaction=yes],
-+ [cf_cv_type_sigaction=no])])
-+AC_MSG_RESULT($cf_cv_type_sigaction)
-+test "$cf_cv_type_sigaction" = yes && AC_DEFINE(HAVE_TYPE_SIGACTION)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_UNSIGNED_LITERALS version: 2 updated: 1998/02/07 22:10:16
-+dnl --------------------
-+dnl Test if the compiler supports 'U' and 'L' suffixes. Only old compilers
-+dnl won't, but they're still there.
-+AC_DEFUN([CF_UNSIGNED_LITERALS],
-+[
-+AC_MSG_CHECKING([if unsigned literals are legal])
-+AC_CACHE_VAL(cf_cv_unsigned_literals,[
-+ AC_TRY_COMPILE([],[long x = 1L + 1UL + 1U + 1],
-+ [cf_cv_unsigned_literals=yes],
-+ [cf_cv_unsigned_literals=no])
-+ ])
-+AC_MSG_RESULT($cf_cv_unsigned_literals)
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59
-+dnl --------
-+dnl Make an uppercase version of a variable
-+dnl $1=uppercase($2)
-+AC_DEFUN([CF_UPPER],
-+[
-+$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_VERBOSE version: 2 updated: 1997/09/05 10:45:14
-+dnl ----------
-+dnl Use AC_VERBOSE w/o the warnings
-+AC_DEFUN([CF_VERBOSE],
-+[test -n "$verbose" && echo " $1" 1>&AC_FD_MSG
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_WCHAR_TYPE version: 2 updated: 2004/01/17 19:18:20
-+dnl -------------
-+dnl Check if type wide-character type $1 is declared, and if so, which header
-+dnl file is needed. The second parameter is used to set a shell variable when
-+dnl the type is not found. The first parameter sets a shell variable for the
-+dnl opposite sense.
-+AC_DEFUN([CF_WCHAR_TYPE],
-+[
-+# This is needed on Tru64 5.0 to declare $1
-+AC_CACHE_CHECK(if we must include wchar.h to declare $1,cf_cv_$1,[
-+AC_TRY_COMPILE([
-+#include <stdlib.h>
-+#include <stdarg.h>
-+#include <stdio.h>
-+#ifdef HAVE_LIBUTF8_H
-+#include <libutf8.h>
-+#endif],
-+ [$1 state],
-+ [cf_cv_$1=no],
-+ [AC_TRY_COMPILE([
-+#include <stdlib.h>
-+#include <stdarg.h>
-+#include <stdio.h>
-+#include <wchar.h>
-+#ifdef HAVE_LIBUTF8_H
-+#include <libutf8.h>
-+#endif],
-+ [$1 value],
-+ [cf_cv_$1=yes],
-+ [cf_cv_$1=unknown])])])
-+
-+if test "$cf_cv_$1" = yes ; then
-+ AC_DEFINE(NEED_WCHAR_H)
-+ NEED_WCHAR_H=1
-+fi
-+
-+ifelse($2,,,[
-+# if we do not find $1 in either place, use substitution to provide a fallback.
-+if test "$cf_cv_$1" = unknown ; then
-+ $2=1
-+fi
-+])
-+ifelse($3,,,[
-+# if we find $1 in either place, use substitution to provide a fallback.
-+if test "$cf_cv_$1" != unknown ; then
-+ $3=1
-+fi
-+])
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_WITH_ABI_VERSION version: 1 updated: 2003/09/20 18:12:49
-+dnl -------------------
-+dnl Allow library's ABI to be overridden. Generally this happens when a
-+dnl packager has incremented the ABI past that used in the original package,
-+dnl and wishes to keep doing this.
-+dnl
-+dnl $1 is the package name, if any, to derive a corresponding {package}_ABI
-+dnl symbol.
-+AC_DEFUN([CF_WITH_ABI_VERSION],[
-+test -z "$cf_cv_abi_version" && cf_cv_abi_version=0
-+AC_ARG_WITH(abi-version,
-+[ --with-abi-version=XXX override derived ABI version],
-+[AC_MSG_WARN(overriding ABI version $cf_cv_abi_version to $withval)
-+ cf_cv_abi_version=$withval])
-+ CF_NUMBER_SYNTAX($cf_cv_abi_version,ABI version)
-+ifelse($1,,,[
-+$1_ABI=$cf_cv_abi_version
-+])
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_WITH_DBMALLOC version: 2 updated: 2002/12/29 21:11:45
-+dnl ----------------
-+dnl Configure-option for dbmalloc
-+AC_DEFUN([CF_WITH_DBMALLOC],[
-+AC_MSG_CHECKING(if you want to link with dbmalloc for testing)
-+AC_ARG_WITH(dbmalloc,
-+ [ --with-dbmalloc test: use Conor Cahill's dbmalloc library],
-+ [with_dbmalloc=$withval],
-+ [with_dbmalloc=no])
-+AC_MSG_RESULT($with_dbmalloc)
-+if test $with_dbmalloc = yes ; then
-+ AC_CHECK_LIB(dbmalloc,debug_malloc)
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_WITH_DMALLOC version: 2 updated: 2002/12/29 21:11:45
-+dnl ---------------
-+dnl Configure-option for dmalloc
-+AC_DEFUN([CF_WITH_DMALLOC],[
-+AC_MSG_CHECKING(if you want to link with dmalloc for testing)
-+AC_ARG_WITH(dmalloc,
-+ [ --with-dmalloc test: use Gray Watson's dmalloc library],
-+ [with_dmalloc=$withval],
-+ [with_dmalloc=no])
-+AC_MSG_RESULT($with_dmalloc)
-+if test $with_dmalloc = yes ; then
-+ AC_CHECK_LIB(dmalloc,dmalloc_debug)
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_WITH_LIBTOOL version: 9 updated: 2004/01/16 14:55:37
-+dnl ---------------
-+dnl Provide a configure option to incorporate libtool. Define several useful
-+dnl symbols for the makefile rules.
-+dnl
-+dnl The reference to AC_PROG_LIBTOOL does not normally work, since it uses
-+dnl macros from libtool.m4 which is in the aclocal directory of automake.
-+dnl Following is a simple script which turns on the AC_PROG_LIBTOOL macro.
-+dnl But that still does not work properly since the macro is expanded outside
-+dnl the CF_WITH_LIBTOOL macro:
-+dnl
-+dnl #!/bin/sh
-+dnl ACLOCAL=`aclocal --print-ac-dir`
-+dnl if test -z "$ACLOCAL" ; then
-+dnl echo cannot find aclocal directory
-+dnl exit 1
-+dnl elif test ! -f $ACLOCAL/libtool.m4 ; then
-+dnl echo cannot find libtool.m4 file
-+dnl exit 1
-+dnl fi
-+dnl
-+dnl LOCAL=aclocal.m4
-+dnl ORIG=aclocal.m4.orig
-+dnl
-+dnl trap "mv $ORIG $LOCAL" 0 1 2 5 15
-+dnl rm -f $ORIG
-+dnl mv $LOCAL $ORIG
-+dnl
-+dnl # sed the LIBTOOL= assignment to omit the current directory?
-+dnl sed -e 's/^LIBTOOL=.*/LIBTOOL=${LIBTOOL-libtool}/' $ACLOCAL/libtool.m4 >>$LOCAL
-+dnl cat $ORIG >>$LOCAL
-+dnl
-+dnl autoconf-257 $*
-+dnl
-+AC_DEFUN([CF_WITH_LIBTOOL],
-+[
-+ifdef([AC_PROG_LIBTOOL],,[
-+LIBTOOL=
-+])
-+# common library maintenance symbols that are convenient for libtool scripts:
-+LIB_CREATE='$(AR) -cr'
-+LIB_OBJECT='$(OBJECTS)'
-+LIB_SUFFIX=.a
-+LIB_PREP="$RANLIB"
-+
-+# symbols used to prop libtool up to enable it to determine what it should be
-+# doing:
-+LIB_CLEAN=
-+LIB_COMPILE=
-+LIB_LINK=
-+LIB_INSTALL=
-+LIB_UNINSTALL=
-+
-+AC_MSG_CHECKING(if you want to build libraries with libtool)
-+AC_ARG_WITH(libtool,
-+ [ --with-libtool generate libraries with libtool],
-+ [with_libtool=$withval],
-+ [with_libtool=no])
-+AC_MSG_RESULT($with_libtool)
-+if test "$with_libtool" != "no"; then
-+ifdef([AC_PROG_LIBTOOL],[
-+ # missing_content_AC_PROG_LIBTOOL{{
-+ AC_PROG_LIBTOOL
-+ # missing_content_AC_PROG_LIBTOOL}}
-+],[
-+ if test "$with_libtool" != "yes" ; then
-+ CF_PATH_SYNTAX(with_libtool)
-+ LIBTOOL=$with_libtool
-+ else
-+ AC_PATH_PROG(LIBTOOL,libtool)
-+ fi
-+ if test -z "$LIBTOOL" ; then
-+ AC_MSG_ERROR(Cannot find libtool)
-+ fi
-+])dnl
-+ LIB_CREATE='$(LIBTOOL) --mode=link $(CC) -rpath $(DESTDIR)$(libdir) -version-info `cut -f1 $(srcdir)/VERSION` -o'
-+ LIB_OBJECT='$(OBJECTS:.o=.lo)'
-+ LIB_SUFFIX=.la
-+ LIB_CLEAN='$(LIBTOOL) --mode=clean'
-+ LIB_COMPILE='$(LIBTOOL) --mode=compile'
-+ LIB_LINK='$(LIBTOOL) --mode=link'
-+ LIB_INSTALL='$(LIBTOOL) --mode=install'
-+ LIB_UNINSTALL='$(LIBTOOL) --mode=uninstall'
-+ LIB_PREP=:
-+
-+ # Show the version of libtool
-+ AC_MSG_CHECKING(version of libtool)
-+
-+ # Save the version in a cache variable - this is not entirely a good
-+ # thing, but the version string from libtool is very ugly, and for
-+ # bug reports it might be useful to have the original string.
-+ cf_cv_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '2,$d' -e 's/([[^)]]*)//g' -e 's/^[[^1-9]]*//' -e 's/[[^0-9.]].*//'`
-+ AC_MSG_RESULT($cf_cv_libtool_version)
-+ if test -z "$cf_cv_libtool_version" ; then
-+ AC_MSG_ERROR(This is not libtool)
-+ fi
-+
-+ # special hack to add --tag option for C++ compiler
-+ case $cf_cv_libtool_version in
-+ 1.[[5-9]]*|[[2-9]]*)
-+ LIBTOOL_CXX="$LIBTOOL --tag=CXX"
-+ ;;
-+ *)
-+ LIBTOOL_CXX="$LIBTOOL"
-+ ;;
-+ esac
-+else
-+ LIBTOOL=""
-+ LIBTOOL_CXX=""
-+fi
-+
-+test -z "$LIBTOOL" && ECHO_LT=
-+
-+AC_SUBST(LIBTOOL)
-+AC_SUBST(LIBTOOL_CXX)
-+
-+AC_SUBST(LIB_CREATE)
-+AC_SUBST(LIB_OBJECT)
-+AC_SUBST(LIB_SUFFIX)
-+AC_SUBST(LIB_PREP)
-+
-+AC_SUBST(LIB_CLEAN)
-+AC_SUBST(LIB_COMPILE)
-+AC_SUBST(LIB_LINK)
-+AC_SUBST(LIB_INSTALL)
-+AC_SUBST(LIB_UNINSTALL)
-+
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_WITH_PATH version: 6 updated: 1998/10/11 00:40:17
-+dnl ------------
-+dnl Wrapper for AC_ARG_WITH to ensure that user supplies a pathname, not just
-+dnl defaulting to yes/no.
-+dnl
-+dnl $1 = option name
-+dnl $2 = help-text
-+dnl $3 = environment variable to set
-+dnl $4 = default value, shown in the help-message, must be a constant
-+dnl $5 = default value, if it's an expression & cannot be in the help-message
-+dnl
-+AC_DEFUN([CF_WITH_PATH],
-+[AC_ARG_WITH($1,[$2 ](default: ifelse($4,,empty,$4)),,
-+ifelse($4,,[withval="${$3}"],[withval="${$3-ifelse($5,,$4,$5)}"]))dnl
-+CF_PATH_SYNTAX(withval)
-+eval $3="$withval"
-+AC_SUBST($3)dnl
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_WITH_PATHLIST version: 5 updated: 2001/12/10 01:28:30
-+dnl ----------------
-+dnl Process an option specifying a list of colon-separated paths.
-+dnl
-+dnl $1 = option name
-+dnl $2 = help-text
-+dnl $3 = environment variable to set
-+dnl $4 = default value, shown in the help-message, must be a constant
-+dnl $5 = default value, if it's an expression & cannot be in the help-message
-+dnl $6 = flag to tell if we want to define or substitute
-+dnl
-+AC_DEFUN([CF_WITH_PATHLIST],[
-+AC_REQUIRE([CF_PATHSEP])
-+AC_ARG_WITH($1,[$2 ](default: ifelse($4,,empty,$4)),,
-+ifelse($4,,[withval=${$3}],[withval=${$3-ifelse($5,,$4,$5)}]))dnl
-+
-+IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${PATHSEP}"
-+cf_dst_path=
-+for cf_src_path in $withval
-+do
-+ CF_PATH_SYNTAX(cf_src_path)
-+ test -n "$cf_dst_path" && cf_dst_path="${cf_dst_path}:"
-+ cf_dst_path="${cf_dst_path}${cf_src_path}"
-+done
-+IFS="$ac_save_ifs"
-+
-+ifelse($6,define,[
-+# Strip single quotes from the value, e.g., when it was supplied as a literal
-+# for $4 or $5.
-+case $cf_dst_path in #(vi
-+\'*)
-+ cf_dst_path=`echo $cf_dst_path |sed -e s/\'// -e s/\'\$//`
-+ ;;
-+esac
-+cf_dst_path=`echo "$cf_dst_path" | sed -e 's/\\\\/\\\\\\\\/g'`
-+])
-+
-+eval '$3="$cf_dst_path"'
-+AC_SUBST($3)dnl
-+
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_WITH_REL_VERSION version: 1 updated: 2003/09/20 18:12:49
-+dnl -------------------
-+dnl Allow library's release-version to be overridden. Generally this happens when a
-+dnl packager has incremented the release-version past that used in the original package,
-+dnl and wishes to keep doing this.
-+dnl
-+dnl $1 is the package name, if any, to derive corresponding {package}_MAJOR
-+dnl and {package}_MINOR symbols
-+dnl symbol.
-+AC_DEFUN([CF_WITH_REL_VERSION],[
-+test -z "$cf_cv_rel_version" && cf_cv_rel_version=0.0
-+AC_ARG_WITH(rel-version,
-+[ --with-rel-version=XXX override derived release version],
-+[AC_MSG_WARN(overriding release version $cf_cv_rel_version to $withval)
-+ cf_cv_rel_version=$withval])
-+ifelse($1,,[
-+ CF_NUMBER_SYNTAX($cf_cv_rel_version,Release version)
-+],[
-+ $1_MAJOR=`echo "$cf_cv_rel_version" | sed -e 's/\..*//'`
-+ $1_MINOR=`echo "$cf_cv_rel_version" | sed -e 's/^[[^.]]*//' -e 's/^\.//' -e 's/\..*//'`
-+ CF_NUMBER_SYNTAX([$]$1_MAJOR,Release major-version)
-+ CF_NUMBER_SYNTAX([$]$1_MINOR,Release minor-version)
-+])
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_WITH_SYSMOUSE version: 2 updated: 2003/03/22 19:13:43
-+dnl ----------------
-+dnl If we can compile with sysmouse, make it available unless it is not wanted.
-+AC_DEFUN([CF_WITH_SYSMOUSE],[
-+# not everyone has "test -c"
-+if test -c /dev/sysmouse 2>/dev/null ; then
-+AC_MSG_CHECKING(if you want to use sysmouse)
-+AC_ARG_WITH(sysmouse,
-+ [ --with-sysmouse use sysmouse (FreeBSD console)],
-+ [cf_with_sysmouse=$withval],
-+ [cf_with_sysmouse=maybe])
-+ if test "$cf_with_sysmouse" != no ; then
-+ AC_TRY_COMPILE([
-+#include <osreldate.h>
-+#if (__FreeBSD_version >= 400017)
-+#include <sys/consio.h>
-+#include <sys/fbio.h>
-+#else
-+#include <machine/console.h>
-+#endif
-+],[
-+ struct mouse_info the_mouse;
-+ ioctl(0, CONS_MOUSECTL, &the_mouse);
-+],[cf_with_sysmouse=yes],[cf_with_sysmouse=no])
-+ fi
-+AC_MSG_RESULT($cf_with_sysmouse)
-+test "$cf_with_sysmouse" = yes && AC_DEFINE(USE_SYSMOUSE)
-+fi
-+])dnl
-+dnl ---------------------------------------------------------------------------
-+dnl CF_XOPEN_SOURCE version: 11 updated: 2004/01/26 20:58:41
-+dnl ---------------
-+dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
-+dnl or adapt to the vendor's definitions to get equivalent functionality.
-+AC_DEFUN([CF_XOPEN_SOURCE],[
-+case $host_os in #(vi
-+freebsd*) #(vi
-+ CPPFLAGS="$CPPFLAGS -D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600"
-+ ;;
-+hpux*) #(vi
-+ CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE"
-+ ;;
-+irix6.*) #(vi
-+ CPPFLAGS="$CPPFLAGS -D_SGI_SOURCE"
-+ ;;
-+linux*) #(vi
-+ CF_GNU_SOURCE
-+ ;;
-+mirbsd*) #(vi
-+ # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <arpa/inet.h>
-+ ;;
-+netbsd*) #(vi
-+ # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
-+ ;;
-+openbsd*) #(vi
-+ # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
-+ ;;
-+osf[[45]]*) #(vi
-+ CPPFLAGS="$CPPFLAGS -D_OSF_SOURCE"
-+ ;;
-+sco*) #(vi
-+ # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
-+ ;;
-+solaris*) #(vi
-+ CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__"
-+ ;;
-+*)
-+ AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[
-+ AC_TRY_COMPILE([#include <sys/types.h>],[
-+#ifndef _XOPEN_SOURCE
-+make an error
-+#endif],
-+ [cf_cv_xopen_source=no],
-+ [cf_save="$CPPFLAGS"
-+ CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=500"
-+ AC_TRY_COMPILE([#include <sys/types.h>],[
-+#ifdef _XOPEN_SOURCE
-+make an error
-+#endif],
-+ [cf_cv_xopen_source=no],
-+ [cf_cv_xopen_source=yes])
-+ CPPFLAGS="$cf_save"
-+ ])
-+])
-+test "$cf_cv_xopen_source" = yes && CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=500"
-+
-+ # FreeBSD 5.x headers demand this...
-+ AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_xopen_source,[
-+ AC_TRY_COMPILE([#include <sys/types.h>],[
-+#ifndef _POSIX_C_SOURCE
-+make an error
-+#endif],
-+ [cf_cv_xopen_source=no],
-+ [cf_save="$CPPFLAGS"
-+ CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE"
-+ AC_TRY_COMPILE([#include <sys/types.h>],[
-+#ifdef _POSIX_C_SOURCE
-+make an error
-+#endif],
-+ [cf_cv_xopen_source=no],
-+ [cf_cv_xopen_source=yes])
-+ CPPFLAGS="$cf_save"
-+ ])
-+])
-+test "$cf_cv_xopen_source" = yes && CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE"
-+ ;;
-+esac
-+])
---- /dev/null
-+++ ncurses-5.4/m4/templates.m4
-@@ -0,0 +1,78 @@
-+AH_TEMPLATE([BROKEN_LINKER], [too lazy to enter descriptions])
-+AH_TEMPLATE([BSD_TPUTS], [too lazy to enter descriptions])
-+AH_TEMPLATE([CC_HAS_INLINE_FUNCS], [too lazy to enter descriptions])
-+AH_TEMPLATE([CC_HAS_PROTOS], [too lazy to enter descriptions])
-+AH_TEMPLATE([CPP_HAS_PARAM_INIT], [too lazy to enter descriptions])
-+AH_TEMPLATE([CPP_HAS_VSCAN_FUNC], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_BIG_CORE], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_BSD_CGETENT], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_BUILTIN_H], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_CURSES_VERSION], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_GETTIMEOFDAY], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_GPP_BUILTIN_H], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_GXX_BUILTIN_H], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_HAS_KEY], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_ISASCII], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_LIBGPM], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_LIBUTF8_H], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_MKSTEMP], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_NC_ALLOC_H], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_REGEXPR_H_FUNCS], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_REGEXP_H_FUNCS], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_REGEX_H_FUNCS], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_RESIZETERM], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_RESIZE_TERM], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_SIZECHANGE], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_SLK_COLOR], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_SYS_TIME_SELECT], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_TCGETATTR], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_TYPE_SIGACTION], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_USE_DEFAULT_COLORS], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_VFSCANF], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_VSSCANF], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_WORKING_POLL], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE_WRESIZE], [too lazy to enter descriptions])
-+AH_TEMPLATE([HAVE__DOSCAN], [too lazy to enter descriptions])
-+AH_TEMPLATE([MIXEDCASE_FILENAMES], [too lazy to enter descriptions])
-+AH_TEMPLATE([NCURSES_EXPANDED], [too lazy to enter descriptions])
-+AH_TEMPLATE([NCURSES_EXT_FUNCS], [too lazy to enter descriptions])
-+AH_TEMPLATE([NCURSES_NOMACROS], [too lazy to enter descriptions])
-+AH_TEMPLATE([NCURSES_NO_PADDING], [too lazy to enter descriptions])
-+AH_TEMPLATE([NCURSES_PATHSEP], [too lazy to enter descriptions])
-+AH_TEMPLATE([NCURSES_VERSION_STRING], [too lazy to enter descriptions])
-+AH_TEMPLATE([NDEBUG], [too lazy to enter descriptions])
-+AH_TEMPLATE([NEED_WCHAR_H], [too lazy to enter descriptions])
-+AH_TEMPLATE([NO_LEAKS], [too lazy to enter descriptions])
-+AH_TEMPLATE([PROG_EXT], [too lazy to enter descriptions])
-+AH_TEMPLATE([PURE_TERMINFO], [too lazy to enter descriptions])
-+AH_TEMPLATE([SVR4_ACTION], [too lazy to enter descriptions])
-+AH_TEMPLATE([SVR4_TERMIO], [too lazy to enter descriptions])
-+AH_TEMPLATE([SYSTEM_NAME], [too lazy to enter descriptions])
-+AH_TEMPLATE([TERMINFO], [too lazy to enter descriptions])
-+AH_TEMPLATE([TERMINFO_DIRS], [too lazy to enter descriptions])
-+AH_TEMPLATE([TERMPATH], [too lazy to enter descriptions])
-+AH_TEMPLATE([TYPEOF_CHTYPE], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_ASSUMED_COLOR], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_COLORFGBG], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_DATABASE], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_GETCAP], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_GETCAP_CACHE], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_HARD_TABS], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_HASHMAP], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_HOME_TERMINFO], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_LINKS], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_MY_MEMMOVE], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_OK_BCOPY], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_RCS_IDS], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_ROOT_ENVIRON], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_SAFE_SPRINTF], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_SCROLL_HINTS], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_SIGWINCH], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_STDIO_VSCAN], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_STRSTREAM_VSCAN], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_STRSTREAM_VSCAN_CAST], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_SYMLINKS], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_SYSMOUSE], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_TERMCAP], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_WIDEC_SUPPORT], [too lazy to enter descriptions])
-+AH_TEMPLATE([USE_XMC_SUPPORT], [too lazy to enter descriptions])
diff --git a/meta/recipes-core/ncurses/ncurses_5.4.bb b/meta/recipes-core/ncurses/ncurses_5.4.bb
deleted file mode 100644
index 60e07fd859..0000000000
--- a/meta/recipes-core/ncurses/ncurses_5.4.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-PR = "r14"
-
-SRC_URI = "${GNU_MIRROR}/ncurses/ncurses-${PV}.tar.gz \
- file://makefile_tweak.patch;patch=1 \
- file://visibility.patch;patch=1"
-
-SRC_URI[md5sum] = "069c8880072060373290a4fefff43520"
-SRC_URI[sha256sum] = "5abce063cf431790f4e6a801a96c7eea0b33a41ecd0970f6312f52575c083b36"
-S = "${WORKDIR}/ncurses-${PV}"
-
-require ncurses.inc
diff --git a/meta/recipes-core/ncurses/ncurses_5.7.bb b/meta/recipes-core/ncurses/ncurses_5.7.bb
new file mode 100644
index 0000000000..33cc16105b
--- /dev/null
+++ b/meta/recipes-core/ncurses/ncurses_5.7.bb
@@ -0,0 +1,242 @@
+DESCRIPTION = "Ncurses library"
+HOMEPAGE = "http://www.gnu.org/software/ncurses/ncurses.html"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://ncurses/base/version.c;beginline=1;endline=27;md5=cbc180a8c44ca642e97c35452fab5f66"
+SECTION = "libs"
+PATCHDATE = "20100501"
+PKGV = "${PV}+${PATCHDATE}"
+PR = "r0"
+
+DEPENDS = "ncurses-native unifdef-native"
+DEPENDS_virtclass-native = "unifdef-native"
+
+inherit autotools binconfig
+
+SRC_URI = "${GNU_MIRROR}/ncurses/ncurses-${PV}.tar.gz;name=tarball \
+ ftp://invisible-island.net/ncurses/5.7/ncurses-5.7-20100424-patch.sh.bz2;apply=yes;name=p20100424sh \
+\
+ ftp://invisible-island.net/ncurses/5.7/ncurses-5.7-${PATCHDATE}.patch.gz;name=p20100501 \
+ file://tic-hang.patch \
+ file://config.cache \
+"
+
+SRC_URI[tarball.md5sum] = "cce05daf61a64501ef6cd8da1f727ec6"
+SRC_URI[tarball.sha256sum] = "0a9bdea5c7de8ded5c9327ed642915f2cc380753f12d4ad120ef7da3ea3498f4"
+SRC_URI[p20100424sh.md5sum] = "3a5f76613f0f7ec3e0e73b835bc24864"
+SRC_URI[p20100424sh.sha256sum] = "1e9d70d2d1fe1fea471868832c52f1b9cc6065132102e49e2a3755f2f4f5be53"
+SRC_URI[p20100501.md5sum] = "6518cfa5d45e9069a1e042468161448b"
+SRC_URI[p20100501.sha256sum] = "a97ccc30e4bd6fbb89564f3058db0fe84bd35cfefee831556c500793b477abde"
+
+PARALLEL_MAKE = ""
+EXTRA_AUTORECONF = "-I m4"
+CONFIG_SITE =+ "${WORKDIR}/config.cache"
+
+# Whether to enable separate widec libraries; must be 'true' or 'false'
+#
+# TODO: remove this variable when widec is supported in every setup?
+ENABLE_WIDEC = "true"
+
+# _GNU_SOURCE is required for widec stuff and is detected automatically
+# for target objects. But it must be set manually for native and sdk
+# builds.
+BUILD_CPPFLAGS += "-D_GNU_SOURCE"
+
+# Override the function from the autotools class; ncurses requires a
+# patched autoconf213 to generate the configure script. This autoconf
+# is not available so that the shipped script will be used.
+do_configure() {
+ # check does not work with cross-compiling and is generally
+ # broken because it requires stdin to be pollable (which is
+ # not the case for /dev/null redirections)
+ export cf_cv_working_poll=yes
+
+ for i in \
+ 'narrowc' \
+ 'widec --enable-widec --without-progs'; do
+ set -- $i
+ mkdir -p $1
+ cd $1
+ shift
+
+ oe_runconf \
+ --disable-static \
+ --without-debug \
+ --without-ada \
+ --without-gpm \
+ --enable-hard-tabs \
+ --enable-xmc-glitch \
+ --enable-colorfgbg \
+ --with-termpath='${sysconfdir}/termcap:${datadir}/misc/termcap' \
+ --with-terminfo-dirs='${sysconfdir}/terminfo:${datadir}/terminfo' \
+ --with-shared \
+ --disable-big-core \
+ --program-prefix= \
+ --with-ticlib \
+ --with-termlib=tinfo \
+ --enable-sigwinch \
+ --enable-pc-files \
+ --disable-rpath-hack \
+ "$@"
+ cd ..
+ done
+}
+
+do_compile() {
+ oe_runmake -C narrowc libs
+ oe_runmake -C narrowc/progs
+
+ ! ${ENABLE_WIDEC} || \
+ oe_runmake -C widec libs
+}
+
+# set of expected differences between narrowc and widec header
+#
+# TODO: the NCURSES_CH_T difference can cause real problems :(
+_unifdef_cleanup = " \
+ -e '\!/\* \$Id: curses.wide,v!,\!/\* \$Id: curses.tail,v!d' \
+ -e '/^#define NCURSES_CH_T /d' \
+ -e '/^#include <wchar.h>/d' \
+ -e '\!^/\* .* \*/!d' \
+"
+
+do_test[dirs] = "${S}"
+do_test() {
+ ${ENABLE_WIDEC} || return 0
+
+ # make sure that the narrow and widec header are compatible
+ # and differ only in minor details.
+ unifdef -k narrowc/include/curses.h | \
+ sed ${_unifdef_cleanup} > curses-narrowc.h
+ unifdef -k widec/include/curses.h | \
+ sed ${_unifdef_cleanup} > curses-widec.h
+
+ diff curses-narrowc.h curses-widec.h
+}
+
+_install_opts = "\
+ DESTDIR='${D}' \
+ PKG_CONFIG_LIBDIR='${libdir}/pkgconfig' \
+ install.libs install.includes install.man \
+"
+
+do_install() {
+ # Order of installation is important; widec installs a 'curses.h'
+ # header with more definitions and must be installed last hence.
+ # Compatibility of these headers will be checked in 'do_test()'.
+ oe_runmake -C narrowc ${_install_opts} \
+ install.data install.progs
+
+ ! ${ENABLE_WIDEC} || \
+ oe_runmake -C widec ${_install_opts}
+
+
+ cd narrowc
+
+ # include some basic terminfo files
+ # stolen ;) from gentoo and modified a bit
+ for x in ansi console dumb linux rxvt screen sun vt{52,100,102,200,220} xterm-color xterm-xfree86
+ do
+ local termfile="$(find "${D}${datadir}/terminfo/" -name "${x}" 2>/dev/null)"
+ local basedir="$(basename $(dirname "${termfile}"))"
+
+ if [ -n "${termfile}" ]
+ then
+ install -d ${D}${sysconfdir}/terminfo/${basedir}
+ mv ${termfile} ${D}${sysconfdir}/terminfo/${basedir}/
+ ln -s /etc/terminfo/${basedir}/${x} \
+ ${D}${datadir}/terminfo/${basedir}/${x}
+ fi
+ done
+ # i think we can use xterm-color as default xterm
+ if [ -e ${D}${sysconfdir}/terminfo/x/xterm-color ]
+ then
+ ln -sf xterm-color ${D}${sysconfdir}/terminfo/x/xterm
+ fi
+
+ if [ "${PN}" = "ncurses" ]; then
+ mv ${D}${bindir}/clear ${D}${bindir}/clear.${PN}
+ mv ${D}${bindir}/reset ${D}${bindir}/reset.${PN}
+ fi
+
+
+ # create linker scripts for libcurses.so and libncurses to
+ # link against -ltinfo when needed. Some builds might break
+ # else when '-Wl,--no-copy-dt-needed-entries' has been set in
+ # linker flags.
+ for i in libncurses libncursesw; do
+ f=${D}${libdir}/$i.so
+ test -h $f || continue
+ rm -f $f
+ echo '/* GNU ld script */' >$f
+ echo "INPUT($i.so.5 AS_NEEDED(-ltinfo))" >>$f
+ done
+
+ # create libtermcap.so linker script for backward compatibility
+ f=${D}${libdir}/libtermcap.so
+ echo '/* GNU ld script */' >$f
+ echo 'INPUT(AS_NEEDED(-ltinfo))' >>$f
+}
+
+python populate_packages_prepend () {
+ libdir = bb.data.expand("${libdir}", d)
+ pnbase = bb.data.expand("${PN}-lib%s", d)
+ do_split_packages(d, libdir, '^lib(.*)\.so\..*', pnbase, 'ncurses %s library', prepend=True, extra_depends = '', allow_links=True)
+}
+
+
+pkg_postinst_ncurses-tools () {
+ if [ "${PN}" = "ncurses" ]; then
+ update-alternatives --install ${bindir}/clear clear clear.${PN} 100
+ update-alternatives --install ${bindir}/reset reset reset.${PN} 100
+ fi
+}
+
+pkg_prerm_ncurses-tools () {
+ if [ "${PN}" = "ncurses" ]; then
+ update-alternatives --remove clear clear.${PN}
+ update-alternatives --remove reset reset.${PN}
+ fi
+}
+
+BBCLASSEXTEND = "native nativesdk"
+
+PACKAGES += " \
+ ${PN}-tools \
+ ${PN}-terminfo \
+ ${PN}-terminfo-base \
+"
+
+FILES_${PN} = "\
+ ${bindir}/tput \
+ ${bindir}/tset \
+ ${bindir}/ncurses5-config \
+ ${bindir}/ncursesw5-config \
+ ${datadir}/tabset \
+"
+
+# This keeps only tput/tset in ncurses
+# clear/reset are in already busybox
+FILES_${PN}-tools = "\
+ ${bindir}/tic \
+ ${bindir}/toe \
+ ${bindir}/infotocap \
+ ${bindir}/captoinfo \
+ ${bindir}/infocmp \
+ ${bindir}/clear.${PN} \
+ ${bindir}/reset.${PN} \
+ ${bindir}/tack \
+ ${bindir}/tabs \
+"
+# 'reset' is a symlink to 'tset' which is in the 'ncurses' package
+RDEPENDS_${PN}-tools = "${PN}"
+
+FILES_${PN}-terminfo = "\
+ ${datadir}/terminfo \
+"
+
+FILES_${PN}-terminfo-base = "\
+ ${sysconfdir}/terminfo \
+"
+
+RSUGGESTS_${PN}-libtinfo = "${PN}-terminfo"
+RRECOMMENDS_${PN}-libtinfo = "${PN}-terminfo-base"
diff --git a/meta/recipes-core/netbase/netbase-4.43/colinux/interfaces b/meta/recipes-core/netbase/netbase-4.44/colinux/interfaces
index 0e495e164e..0e495e164e 100644
--- a/meta/recipes-core/netbase/netbase-4.43/colinux/interfaces
+++ b/meta/recipes-core/netbase/netbase-4.44/colinux/interfaces
diff --git a/meta/recipes-core/netbase/netbase-4.43/epia/interfaces b/meta/recipes-core/netbase/netbase-4.44/epia/interfaces
index 673618f636..673618f636 100644
--- a/meta/recipes-core/netbase/netbase-4.43/epia/interfaces
+++ b/meta/recipes-core/netbase/netbase-4.44/epia/interfaces
diff --git a/meta/recipes-core/netbase/netbase-4.43/hosts b/meta/recipes-core/netbase/netbase-4.44/hosts
index 2f332451b5..2f332451b5 100644
--- a/meta/recipes-core/netbase/netbase-4.43/hosts
+++ b/meta/recipes-core/netbase/netbase-4.44/hosts
diff --git a/meta/recipes-core/netbase/netbase-4.43/init b/meta/recipes-core/netbase/netbase-4.44/init
index 8a67e1cef2..8a67e1cef2 100644
--- a/meta/recipes-core/netbase/netbase-4.43/init
+++ b/meta/recipes-core/netbase/netbase-4.44/init
diff --git a/meta/recipes-core/netbase/netbase-4.43/interfaces b/meta/recipes-core/netbase/netbase-4.44/interfaces
index b06924fa94..b06924fa94 100644
--- a/meta/recipes-core/netbase/netbase-4.43/interfaces
+++ b/meta/recipes-core/netbase/netbase-4.44/interfaces
diff --git a/meta/recipes-core/netbase/netbase-4.43/mtx-1/interfaces b/meta/recipes-core/netbase/netbase-4.44/mtx-1/interfaces
index a7c6da5752..a7c6da5752 100644
--- a/meta/recipes-core/netbase/netbase-4.43/mtx-1/interfaces
+++ b/meta/recipes-core/netbase/netbase-4.44/mtx-1/interfaces
diff --git a/meta/recipes-core/netbase/netbase-4.43/nfsroot b/meta/recipes-core/netbase/netbase-4.44/nfsroot
index fc384a8ea5..fc384a8ea5 100644
--- a/meta/recipes-core/netbase/netbase-4.43/nfsroot
+++ b/meta/recipes-core/netbase/netbase-4.44/nfsroot
diff --git a/meta/recipes-core/netbase/netbase-4.43/nokia800/interfaces b/meta/recipes-core/netbase/netbase-4.44/nokia800/interfaces
index 16967763e5..16967763e5 100644
--- a/meta/recipes-core/netbase/netbase-4.43/nokia800/interfaces
+++ b/meta/recipes-core/netbase/netbase-4.44/nokia800/interfaces
diff --git a/meta/recipes-core/netbase/netbase-4.43/openmn/hosts b/meta/recipes-core/netbase/netbase-4.44/openmn/hosts
index 0205b98fc2..0205b98fc2 100644
--- a/meta/recipes-core/netbase/netbase-4.43/openmn/hosts
+++ b/meta/recipes-core/netbase/netbase-4.44/openmn/hosts
diff --git a/meta/recipes-core/netbase/netbase-4.43/openmn/interfaces b/meta/recipes-core/netbase/netbase-4.44/openmn/interfaces
index 9ebe9b8ff1..9ebe9b8ff1 100644
--- a/meta/recipes-core/netbase/netbase-4.43/openmn/interfaces
+++ b/meta/recipes-core/netbase/netbase-4.44/openmn/interfaces
diff --git a/meta/recipes-core/netbase/netbase-4.43/qemuarm/interfaces b/meta/recipes-core/netbase/netbase-4.44/qemuarm/interfaces
index 16967763e5..16967763e5 100644
--- a/meta/recipes-core/netbase/netbase-4.43/qemuarm/interfaces
+++ b/meta/recipes-core/netbase/netbase-4.44/qemuarm/interfaces
diff --git a/meta/recipes-core/netbase/netbase-4.43/qemuarmv6/interfaces b/meta/recipes-core/netbase/netbase-4.44/qemuarmv6/interfaces
index 16967763e5..16967763e5 100644
--- a/meta/recipes-core/netbase/netbase-4.43/qemuarmv6/interfaces
+++ b/meta/recipes-core/netbase/netbase-4.44/qemuarmv6/interfaces
diff --git a/meta/recipes-core/netbase/netbase-4.43/qemuarmv7/interfaces b/meta/recipes-core/netbase/netbase-4.44/qemuarmv7/interfaces
index 16967763e5..16967763e5 100644
--- a/meta/recipes-core/netbase/netbase-4.43/qemuarmv7/interfaces
+++ b/meta/recipes-core/netbase/netbase-4.44/qemuarmv7/interfaces
diff --git a/meta/recipes-core/netbase/netbase-4.43/qemux86-64/interfaces b/meta/recipes-core/netbase/netbase-4.44/qemux86-64/interfaces
index f62b9a897d..f62b9a897d 100644
--- a/meta/recipes-core/netbase/netbase-4.43/qemux86-64/interfaces
+++ b/meta/recipes-core/netbase/netbase-4.44/qemux86-64/interfaces
diff --git a/meta/recipes-core/netbase/netbase-4.43/qemux86/interfaces b/meta/recipes-core/netbase/netbase-4.44/qemux86/interfaces
index f62b9a897d..f62b9a897d 100644
--- a/meta/recipes-core/netbase/netbase-4.43/qemux86/interfaces
+++ b/meta/recipes-core/netbase/netbase-4.44/qemux86/interfaces
diff --git a/meta/recipes-core/netbase/netbase-4.43/tosa/interfaces b/meta/recipes-core/netbase/netbase-4.44/tosa/interfaces
index 0da7168535..0da7168535 100644
--- a/meta/recipes-core/netbase/netbase-4.43/tosa/interfaces
+++ b/meta/recipes-core/netbase/netbase-4.44/tosa/interfaces
diff --git a/meta/recipes-core/netbase/netbase-4.43/wrt54/interfaces b/meta/recipes-core/netbase/netbase-4.44/wrt54/interfaces
index 8b2852ac51..8b2852ac51 100644
--- a/meta/recipes-core/netbase/netbase-4.43/wrt54/interfaces
+++ b/meta/recipes-core/netbase/netbase-4.44/wrt54/interfaces
diff --git a/meta/recipes-core/netbase/netbase-4.43/xxs1500/interfaces b/meta/recipes-core/netbase/netbase-4.44/xxs1500/interfaces
index 23ccccd2dd..23ccccd2dd 100644
--- a/meta/recipes-core/netbase/netbase-4.43/xxs1500/interfaces
+++ b/meta/recipes-core/netbase/netbase-4.44/xxs1500/interfaces
diff --git a/meta/recipes-core/netbase/netbase_4.43.bb b/meta/recipes-core/netbase/netbase_4.43.bb
deleted file mode 100644
index 198a8d7a79..0000000000
--- a/meta/recipes-core/netbase/netbase_4.43.bb
+++ /dev/null
@@ -1,61 +0,0 @@
-SUMMARY = "Basic TCP/IP networking support"
-DESCRIPTION = "This package provides the necessary infrastructure for basic TCP/IP based networking"
-HOMEPAGE = "http://packages.debian.org/netbase"
-SECTION = "base"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://debian/copyright;md5=3dd6192d306f582dee7687da3d8748ab"
-PR = "r0"
-
-inherit update-rc.d
-
-INITSCRIPT_NAME = "networking"
-INITSCRIPT_PARAMS = "start 40 S . stop 40 0 6 1 ."
-# On MNCI etc, start very late so that our own apps come up faster
-INITSCRIPT_PARAMS_openmn = "start 85 1 2 3 4 5 . stop 85 0 6 1 ."
-# On SlugOS (NSLU2) delay the stop until after network apps have exited
-# Do not stop in single user - there's no way to sulogin!
-INITSCRIPT_PARAMS_slugos = "start 42 S 0 6 ."
-
-SRC_URI = "${DEBIAN_MIRROR}/main/n/netbase/netbase_${PV}.tar.gz \
- file://init \
- file://hosts \
- file://interfaces \
- file://nfsroot"
-
-do_install () {
- install -d ${D}${sysconfdir}/init.d \
- ${D}${sbindir} \
- ${D}${mandir}/man8 \
- ${D}${sysconfdir}/network/if-pre-up.d \
- ${D}${sysconfdir}/network/if-up.d \
- ${D}${sysconfdir}/network/if-down.d \
- ${D}${sysconfdir}/network/if-post-down.d
- install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/networking
- install -m 0644 ${WORKDIR}/hosts ${D}${sysconfdir}/hosts
- install -m 0644 etc-rpc ${D}${sysconfdir}/rpc
- install -m 0644 etc-protocols ${D}${sysconfdir}/protocols
- install -m 0644 etc-services ${D}${sysconfdir}/services
- install -m 0644 ${WORKDIR}/interfaces ${D}${sysconfdir}/network/interfaces
- install -m 0755 ${WORKDIR}/nfsroot ${D}${sysconfdir}/network/if-pre-up.d
-
- # Disable network manager on machines that commonly do NFS booting
- case "${MACHINE}" in
- "omap-3430sdp" | "omap-3430ldp" | "omap-2430sdp" | "qemuarm" | "qemux86" | "qemux86-64" )
- touch ${D}${sysconfdir}/network/nm-disabled-eth0
- ;;
- *)
- ;;
- esac
-}
-
-CONFFILES_${PN} = "${sysconfdir}/hosts ${sysconfdir}/network/interfaces"
-
-PACKAGE_ARCH_omap-3430sdp = "${MACHINE_ARCH}"
-PACKAGE_ARCH_omap-3430ldp = "${MACHINE_ARCH}"
-PACKAGE_ARCH_omap-2430sdp = "${MACHINE_ARCH}"
-PACKAGE_ARCH_qemuarm = "${MACHINE_ARCH}"
-PACKAGE_ARCH_qemux86 = "${MACHINE_ARCH}"
-PACKAGE_ARCH_qemux86-64 = "${MACHINE_ARCH}"
-
-SRC_URI[md5sum] = "875d6db52cc8cef565a77ef898ed47cf"
-SRC_URI[sha256sum] = "5a6da788356776330b77eda97157285e1c426c2d3bd9136407373965365e9dbf"
diff --git a/meta/recipes-core/netbase/netbase_4.44.bb b/meta/recipes-core/netbase/netbase_4.44.bb
new file mode 100644
index 0000000000..dbb7e83d20
--- /dev/null
+++ b/meta/recipes-core/netbase/netbase_4.44.bb
@@ -0,0 +1,61 @@
+SUMMARY = "Basic TCP/IP networking support"
+DESCRIPTION = "This package provides the necessary infrastructure for basic TCP/IP based networking"
+HOMEPAGE = "http://packages.debian.org/netbase"
+SECTION = "base"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://debian/copyright;md5=3dd6192d306f582dee7687da3d8748ab"
+PR = "r0"
+
+inherit update-rc.d
+
+INITSCRIPT_NAME = "networking"
+INITSCRIPT_PARAMS = "start 40 S . stop 40 0 6 1 ."
+# On MNCI etc, start very late so that our own apps come up faster
+INITSCRIPT_PARAMS_openmn = "start 85 1 2 3 4 5 . stop 85 0 6 1 ."
+# On SlugOS (NSLU2) delay the stop until after network apps have exited
+# Do not stop in single user - there's no way to sulogin!
+INITSCRIPT_PARAMS_slugos = "start 42 S 0 6 ."
+
+SRC_URI = "${DEBIAN_MIRROR}/main/n/netbase/netbase_${PV}.tar.gz \
+ file://init \
+ file://hosts \
+ file://interfaces \
+ file://nfsroot"
+
+do_install () {
+ install -d ${D}${sysconfdir}/init.d \
+ ${D}${sbindir} \
+ ${D}${mandir}/man8 \
+ ${D}${sysconfdir}/network/if-pre-up.d \
+ ${D}${sysconfdir}/network/if-up.d \
+ ${D}${sysconfdir}/network/if-down.d \
+ ${D}${sysconfdir}/network/if-post-down.d
+ install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/networking
+ install -m 0644 ${WORKDIR}/hosts ${D}${sysconfdir}/hosts
+ install -m 0644 etc-rpc ${D}${sysconfdir}/rpc
+ install -m 0644 etc-protocols ${D}${sysconfdir}/protocols
+ install -m 0644 etc-services ${D}${sysconfdir}/services
+ install -m 0644 ${WORKDIR}/interfaces ${D}${sysconfdir}/network/interfaces
+ install -m 0755 ${WORKDIR}/nfsroot ${D}${sysconfdir}/network/if-pre-up.d
+
+ # Disable network manager on machines that commonly do NFS booting
+ case "${MACHINE}" in
+ "omap-3430sdp" | "omap-3430ldp" | "omap-2430sdp" | "qemuarm" | "qemux86" | "qemux86-64" )
+ touch ${D}${sysconfdir}/network/nm-disabled-eth0
+ ;;
+ *)
+ ;;
+ esac
+}
+
+CONFFILES_${PN} = "${sysconfdir}/hosts ${sysconfdir}/network/interfaces"
+
+PACKAGE_ARCH_omap-3430sdp = "${MACHINE_ARCH}"
+PACKAGE_ARCH_omap-3430ldp = "${MACHINE_ARCH}"
+PACKAGE_ARCH_omap-2430sdp = "${MACHINE_ARCH}"
+PACKAGE_ARCH_qemuarm = "${MACHINE_ARCH}"
+PACKAGE_ARCH_qemux86 = "${MACHINE_ARCH}"
+PACKAGE_ARCH_qemux86-64 = "${MACHINE_ARCH}"
+
+SRC_URI[md5sum] = "a8d0bfed8a67273a276fc792524bc103"
+SRC_URI[sha256sum] = "eb2d4db2e3ec20eeea1e22962bce46f9651bf63e8add2ba6d4e996f0befb2823"
diff --git a/meta/recipes-core/psplash/files/psplash-poky-img.h b/meta/recipes-core/psplash/files/psplash-poky-img.h
new file mode 100644
index 0000000000..7ab178f4c0
--- /dev/null
+++ b/meta/recipes-core/psplash/files/psplash-poky-img.h
@@ -0,0 +1,909 @@
+/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
+
+#define POKY_IMG_ROWSTRIDE (1708)
+#define POKY_IMG_WIDTH (427)
+#define POKY_IMG_HEIGHT (214)
+#define POKY_IMG_BYTES_PER_PIXEL (4) /* 3:RGB, 4:RGBA */
+#define POKY_IMG_RLE_PIXEL_DATA ((uint8*) \
+ "\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354" \
+ "\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377" \
+ "\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350" \
+ "\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340" \
+ "\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377" \
+ "\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354" \
+ "\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377" \
+ "\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350" \
+ "\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340" \
+ "\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377" \
+ "\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354" \
+ "\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377" \
+ "\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350" \
+ "\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340" \
+ "\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377" \
+ "\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354" \
+ "\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377" \
+ "\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350" \
+ "\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340" \
+ "\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377" \
+ "\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354" \
+ "\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377" \
+ "\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350" \
+ "\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340" \
+ "\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377" \
+ "\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354" \
+ "\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377" \
+ "\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350" \
+ "\354\340\377\237\350\354\340\377\1\350\354\342\377\377\350\354\340\377" \
+ "\377\350\354\340\377\377\350\354\340\377\254\350\354\340\377\2\241\243" \
+ "\244\377;AC\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340" \
+ "\377\252\350\354\340\377\2\275\277\277\377LQR\377\202.46\377\377\350" \
+ "\354\340\377\377\350\354\340\377\377\350\354\340\377\250\350\354\340" \
+ "\377\2\321\322\323\377]ac\377\204.46\377\377\350\354\340\377\377\350" \
+ "\354\340\377\377\350\354\340\377\246\350\354\340\377\3\346\347\347\377" \
+ "w{|\377/57\377\205.46\377\377\350\354\340\377\377\350\354\340\377\377" \
+ "\350\354\340\377\245\350\354\340\377\2\223\226\227\3775;=\377\207.46" \
+ "\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\243" \
+ "\350\354\340\377\2\253\255\256\377BHJ\377\211.46\377\377\350\354\340" \
+ "\377\377\350\354\340\377\377\350\354\340\377\241\350\354\340\377\2\304" \
+ "\306\306\377PUW\377\213.46\377\377\350\354\340\377\377\350\354\340\377" \
+ "\377\350\354\340\377\240\350\354\340\377\1\306\310\311\377\215.46\377" \
+ "\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\240\350" \
+ "\354\340\377\1\302\303\304\377\215.46\377\377\350\354\340\377\377\350" \
+ "\354\340\377\377\350\354\340\377\240\350\354\340\377\1\302\303\304\377" \
+ "\215.46\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377" \
+ "\240\350\354\340\377\1\302\303\304\377\215.46\377\377\350\354\340\377" \
+ "\377\350\354\340\377\377\350\354\340\377\240\350\354\340\377\1\302\303" \
+ "\304\377\215.46\377\377\350\354\340\377\377\350\354\340\377\377\350\354" \
+ "\340\377\240\350\354\340\377\1\302\303\304\377\215.46\377\377\350\354" \
+ "\340\377\377\350\354\340\377\377\350\354\340\377\240\350\354\340\377" \
+ "\1\302\303\304\377\215.46\377\377\350\354\340\377\377\350\354\340\377" \
+ "\377\350\354\340\377\240\350\354\340\377\1\302\303\304\377\215.46\377" \
+ "\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\240\350" \
+ "\354\340\377\1\302\303\304\377\215.46\377\377\350\354\340\377\377\350" \
+ "\354\340\377\377\350\354\340\377\240\350\354\340\377\1\302\303\304\377" \
+ "\215.46\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377" \
+ "\240\350\354\340\377\1\302\303\304\377\215.46\377\377\350\354\340\377" \
+ "\377\350\354\340\377\377\350\354\340\377\240\350\354\340\377\1\302\303" \
+ "\304\377\215.46\377\377\350\354\340\377\305\350\354\340\377\1\346\347" \
+ "\347\377\256\350\354\340\377\1\341\342\343\377\377\350\354\340\377\252" \
+ "\350\354\340\377\1\302\303\304\377\215.46\377\377\350\354\340\377\304" \
+ "\350\354\340\377\3\220\223\224\3775;=\377\244\247\250\377\254\350\354" \
+ "\340\377\4\302\303\304\377179\377\205\210\212\377\350\354\342\377\377" \
+ "\350\354\340\377\250\350\354\340\377\1\302\303\304\377\215.46\377\377" \
+ "\350\354\340\377\302\350\354\340\377\2\250\253\253\377>DF\377\202.46" \
+ "\377\1@FG\377\254\350\354\340\377\1Y^`\377\202.46\377\2;AC\377\241\243" \
+ "\244\377\377\350\354\340\377\247\350\354\340\377\1\302\303\304\377\215" \
+ ".46\377\377\350\354\340\377\300\350\354\340\377\2\303\305\305\377PUW" \
+ "\377\205.46\377\1\230\233\234\377\252\350\354\340\377\1\303\305\305\377" \
+ "\205.46\377\2LQR\377\275\277\277\377\244\350\354\340\377\16\350\352\351" \
+ "\377\313\314\315\377\254\257\257\377\224\227\230\377\214\220\221\377" \
+ "\202\205\206\377w{|\377uy{\377\202\205\206\377\213\216\217\377\223\226" \
+ "\227\377\253\255\256\377\310\312\312\377\346\346\347\377\362\350\354" \
+ "\340\377\1\302\303\304\377\215.46\377\267\350\354\340\377\16\352\354" \
+ "\345\377\315\316\317\377\257\262\263\377\225\230\231\377\216\221\222" \
+ "\377\202\205\206\377x|}\377txy\377\202\205\206\377\211\214\215\377\221" \
+ "\224\225\377\247\252\253\377\305\306\307\377\342\343\343\377\370\350" \
+ "\354\340\377\2\327\330\330\377bgh\377\207.46\377\1""9\77A\377\252\350" \
+ "\354\340\377\1]ac\377\207.46\377\2bgh\377\327\330\330\377\236\350\354" \
+ "\340\377\4\323\324\324\377\237\242\243\377kop\3779>@\377\216.46\377\4" \
+ "7=\77\377fjl\377\232\235\236\377\316\317\320\377\303\350\354\340\377" \
+ "\7\352\354\346\377\332\333\334\377\303\305\305\377\271\273\274\377\263" \
+ "\265\266\377\253\256\257\377\247\252\253\377\244\235\240\241\377\1}\200" \
+ "\202\377\215.46\377\1\227\232\233\377\221\235\240\241\377\1\335\336\336" \
+ "\377\240\350\354\340\377\4\330\332\332\377\244\247\250\377ptu\377>CE" \
+ "\377\216.46\377\4""4:<\377_de\377\224\230\231\377\311\312\313\377\362" \
+ "\350\354\340\377\3\352\353\347\377~\202\203\377068\377\211.46\377\1\216" \
+ "\221\222\377\250\350\354\340\377\1\306\310\311\377\211.46\377\3""068" \
+ "\377~\202\203\377\352\353\347\377\231\350\354\340\377\3\332\333\334\377" \
+ "\214\220\221\377CIJ\377\226.46\377\3>CE\377\207\212\213\377\321\322\323" \
+ "\377\272\350\354\340\377\6\324\325\325\377\257\261\262\377\213\217\220" \
+ "\377gkl\377FKM\37728:\377\313.46\377\1\265\267\270\377\235\350\354\340" \
+ "\377\3\341\342\342\377\224\230\231\377JOQ\377\226.46\377\3""9\77A\377" \
+ "}\200\202\377\312\313\314\377\356\350\354\340\377\2\225\230\231\3778" \
+ ">\77\377\213.46\377\2""5;=\377\350\352\351\377\247\350\354\340\377\1" \
+ "_de\377\213.46\377\2""8>\77\377\232\235\236\377\226\350\354\340\377\2" \
+ "\264\266\266\377V[]\377\234.46\377\2PUV\377\253\256\257\377\264\350\354" \
+ "\340\377\4\322\323\324\377\235\237\240\377gkl\3776<>\377\321.46\377\1" \
+ "\265\267\270\377\233\350\354\340\377\2\277\301\302\377`ef\377\234.46" \
+ "\377\2GMN\377\240\243\244\377\354\350\354\340\377\1BHJ\377\215.46\377" \
+ "\1\202\205\206\377\246\350\354\340\377\1\311\312\313\377\215.46\377\1" \
+ "CIJ\377\224\350\354\340\377\2\241\243\244\377FKM\377\240.46\377\2@FG" \
+ "\377\231\233\234\377\257\350\354\340\377\3\325\326\327\377\214\220\221" \
+ "\377EJL\377\325.46\377\1\265\267\270\377\231\350\354\340\377\2\255\257" \
+ "\260\377NSU\377\240.46\377\3""9\77A\377\220\223\224\377\350\354\342\377" \
+ "\351\350\354\340\377\1\251\253\254\377\215.46\377\2""179\377\341\342" \
+ "\343\377\245\350\354\340\377\1bfh\377\215.46\377\1\244\247\250\377\222" \
+ "\350\354\340\377\2\275\277\277\377LQR\377\244.46\377\2BHJ\377\264\267" \
+ "\267\377\253\350\354\340\377\2\253\256\257\377PUV\377\330.46\377\1\265" \
+ "\267\270\377\227\350\354\340\377\2\313\314\315\377UY[\377\244.46\377" \
+ "\2;AC\377\247\252\253\377\351\350\354\340\377\1LQS\377\215.46\377\1x" \
+ "|}\377\244\350\354\340\377\1\314\316\316\377\215.46\377\1BGI\377\221" \
+ "\350\354\340\377\2\346\347\347\377hmn\377\250.46\377\2]ac\377\340\341" \
+ "\341\377\247\350\354\340\377\2\235\237\240\377BGI\377\332.46\377\1\265" \
+ "\267\270\377\225\350\354\340\377\2\350\354\342\377txz\377\250.46\377" \
+ "\2PUW\377\324\326\326\377\347\350\354\340\377\1\270\272\272\377\215." \
+ "46\377\2""068\377\330\332\332\377\243\350\354\340\377\1eik\377\215.4" \
+ "6\377\1\242\244\245\377\220\350\354\340\377\2\275\277\277\377=BD\377" \
+ "\252.46\377\2""8>\77\377\261\263\264\377\244\350\354\340\377\2\265\267" \
+ "\270\377BHJ\377\334.46\377\1\265\267\270\377\224\350\354\340\377\2\313" \
+ "\315\315\377EJL\377\252.46\377\2""28:\377\240\243\244\377\347\350\354" \
+ "\340\377\1V[]\377\215.46\377\1kpq\377\242\350\354\340\377\1\316\317\320" \
+ "\377\215.46\377\1@FG\377\220\350\354\340\377\1\210\214\215\377\256.4" \
+ "6\377\1y}\177\377\241\350\354\340\377\2\336\337\337\377aeg\377\336.4" \
+ "6\377\1\265\267\270\377\223\350\354\340\377\2\231\234\235\377068\377" \
+ "\255.46\377\1imo\377\346\350\354\340\377\1\304\306\306\377\216.46\377" \
+ "\1\317\321\321\377\241\350\354\340\377\1glm\377\215.46\377\1\236\241" \
+ "\242\377\217\350\354\340\377\1ptu\377\260.46\377\1chi\377\237\350\354" \
+ "\340\377\2\264\267\267\3778>\77\377\337.46\377\1\265\267\270\377\222" \
+ "\350\354\340\377\1\202\205\206\377\260.46\377\2TYZ\377\352\353\347\377" \
+ "\345\350\354\340\377\1chi\377\215.46\377\1bfh\377\240\350\354\340\377" \
+ "\1\321\322\323\377\215.46\377\1>DF\377\217\350\354\340\377\1_de\377\262" \
+ ".46\377\2TYZ\377\352\353\347\377\234\350\354\340\377\1\202\205\206\377" \
+ "\341.46\377\1\265\267\270\377\221\350\354\340\377\1ptv\377\262.46\377" \
+ "\2HMO\377\337\340\340\377\344\350\354\340\377\2\322\323\324\377/57\377" \
+ "\215.46\377\1\304\306\306\377\237\350\354\340\377\1kop\377\215.46\377" \
+ "\1\234\237\240\377\216\350\354\340\377\1aeg\377\264.46\377\1SXY\377\233" \
+ "\350\354\340\377\1fjl\377\342.46\377\1\265\267\270\377\220\350\354\340" \
+ "\377\1ptu\377\264.46\377\2EJL\377\350\351\351\377\344\350\354\340\377" \
+ "\1ptv\377\215.46\377\1V[]\377\236\350\354\340\377\1\324\326\326\377\215" \
+ ".46\377\1=BD\377\216\350\354\340\377\1nrs\377\226.46\377\12=BD\377`e" \
+ "f\377\200\204\205\377\220\223\224\377\233\236\237\377\234\237\240\377" \
+ "\220\223\224\377\202\205\206\377bgh\377>DF\377\226.46\377\1dij\377\231" \
+ "\350\354\340\377\1_de\377\231.46\377\3""39;\377EJL\377Y^`\377\202fjl" \
+ "\377\1swx\377\244txy\377\1_de\377\215.46\377\1ptu\377\221txy\377\1\316" \
+ "\317\320\377\217\350\354\340\377\1\204\210\211\377\226.46\377\12""9\77" \
+ "A\377[`a\377}\200\202\377\220\223\224\377\231\234\235\377\235\240\241" \
+ "\377\220\223\224\377\205\210\212\377fjl\377BHJ\377\226.46\377\1SXY\377" \
+ "\344\350\354\340\377\2\335\336\336\377068\377\215.46\377\1\271\273\274" \
+ "\377\235\350\354\340\377\1lqr\377\215.46\377\1\231\233\234\377\215\350" \
+ "\354\340\377\1\207\213\214\377\224.46\377\3PUW\377\234\237\240\377\327" \
+ "\330\330\377\212\350\354\340\377\3\332\333\334\377\236\241\242\377PU" \
+ "V\377\224.46\377\1x|}\377\227\350\354\340\377\1[`a\377\225.46\377\5K" \
+ "PR\377\177\203\204\377\247\252\253\377\311\312\313\377\352\354\346\377" \
+ "\252\350\354\340\377\1\302\303\304\377\215.46\377\241\350\354\340\377" \
+ "\1\237\242\243\377\224.46\377\3JOQ\377\226\231\232\377\320\322\322\377" \
+ "\212\350\354\340\377\3\336\337\337\377\242\245\246\377Y]_\377\224.46" \
+ "\377\1eik\377\344\350\354\340\377\1~\201\202\377\215.46\377\1OTV\377" \
+ "\234\350\354\340\377\2\326\327\330\377/57\377\214.46\377\1;AC\377\215" \
+ "\350\354\340\377\1\271\273\274\377\222.46\377\3/57\377ptu\377\314\316" \
+ "\316\377\220\350\354\340\377\2\312\313\314\377jnp\377\223.46\377\1\254" \
+ "\257\257\377\225\350\354\340\377\1y|~\377\222.46\377\4/57\377]ac\377" \
+ "\247\252\253\377\346\347\347\377\257\350\354\340\377\1\302\303\304\377" \
+ "\215.46\377\240\350\354\340\377\2\316\317\320\377068\377\222.46\377\2" \
+ "fjl\377\305\306\307\377\220\350\354\340\377\3\323\324\324\377txy\377" \
+ "068\377\222.46\377\1\225\230\231\377\343\350\354\340\377\2\347\350\350" \
+ "\3775:<\377\215.46\377\1\256\260\261\377\233\350\354\340\377\1ptu\377" \
+ "\215.46\377\1\226\231\232\377\214\350\354\340\377\2\344\345\345\377:" \
+ "@B\377\221.46\377\2gkl\377\332\333\334\377\224\350\354\340\377\2\324" \
+ "\326\326\377^ce\377\221.46\377\2""6<>\377\335\336\337\377\223\350\354" \
+ "\340\377\1\235\240\241\377\221.46\377\3""39;\377\177\203\204\377\341" \
+ "\342\342\377\262\350\354\340\377\1\302\303\304\377\215.46\377\237\350" \
+ "\354\340\377\2\350\354\342\377FKM\377\221.46\377\2[`a\377\321\322\323" \
+ "\377\224\350\354\340\377\2\335\336\337\377kop\377\221.46\377\2""068\377" \
+ "\314\316\316\377\343\350\354\340\377\1\213\217\220\377\215.46\377\1F" \
+ "KM\377\232\350\354\340\377\2\331\332\333\377/57\377\214.46\377\1:@B\377" \
+ "\215\350\354\340\377\1^ce\377\220.46\377\2;AC\377\265\267\270\377\230" \
+ "\350\354\340\377\2\251\253\254\3775;=\377\220.46\377\1Y]_\377\222\350" \
+ "\354\340\377\2\325\326\327\377068\377\220.46\377\2ptu\377\346\346\347" \
+ "\377\264\350\354\340\377\1\302\303\304\377\215.46\377\237\350\354\340" \
+ "\377\1txz\377\220.46\377\2""6<>\377\250\253\253\377\230\350\354\340\377" \
+ "\2\270\272\272\377<BC\377\220.46\377\1GMN\377\343\350\354\340\377\2\350" \
+ "\354\342\3779\77A\377\215.46\377\1\244\247\250\377\231\350\354\340\377" \
+ "\1rvw\377\215.46\377\1\223\226\227\377\214\350\354\340\377\1\261\263" \
+ "\264\377\220.46\377\2X]^\377\344\345\345\377\232\350\354\340\377\2\327" \
+ "\330\330\377HMO\377\220.46\377\1\255\257\260\377\221\350\354\340\377" \
+ "\1UY[\377\217.46\377\2<BC\377\274\276\276\377\266\350\354\340\377\1\302" \
+ "\303\304\377\215.46\377\236\350\354\340\377\1\311\312\313\377\220.46" \
+ "\377\2LQS\377\330\332\332\377\232\350\354\340\377\2\342\343\343\377S" \
+ "XY\377\220.46\377\1\224\230\231\377\343\350\354\340\377\1\230\233\234" \
+ "\377\215.46\377\1@FG\377\230\350\354\340\377\2\332\333\334\377068\377" \
+ "\214.46\377\1""9>@\377\215\350\354\340\377\1AFH\377\217.46\377\1gkl\377" \
+ "\235\350\354\340\377\2\352\353\347\377OTV\377\217.46\377\1\77EG\377\220" \
+ "\350\354\340\377\1\232\235\236\377\217.46\377\2MRT\377\340\341\341\377" \
+ "\267\350\354\340\377\1\302\303\304\377\215.46\377\236\350\354\340\377" \
+ "\1OTV\377\217.46\377\2W\\]\377\350\354\342\377\235\350\354\340\377\1" \
+ "\\ab\377\217.46\377\2""5:<\377\346\346\347\377\343\350\354\340\377\1" \
+ "AFH\377\215.46\377\1\230\233\234\377\227\350\354\340\377\1uy{\377\215" \
+ ".46\377\1\220\224\225\377\214\350\354\340\377\1\217\222\223\377\217." \
+ "46\377\1imo\377\237\350\354\340\377\2\352\354\346\377LQR\377\217.46\377" \
+ "\1\220\224\225\377\217\350\354\340\377\1""9>@\377\216.46\377\2OTV\377" \
+ "\351\354\343\377\270\350\354\340\377\1\302\303\304\377\215.46\377\235" \
+ "\350\354\340\377\1\246\251\252\377\217.46\377\1[`a\377\240\350\354\340" \
+ "\377\1[`a\377\217.46\377\1{\177\200\377\343\350\354\340\377\1\246\251" \
+ "\252\377\215.46\377\2""9\77A\377\350\354\342\377\225\350\354\340\377" \
+ "\2\335\336\337\377068\377\214.46\377\2""8>\77\377\351\354\343\377\214" \
+ "\350\354\340\377\1""9>@\377\216.46\377\1QVX\377\241\350\354\340\377\2" \
+ "\341\342\343\377\77EG\377\216.46\377\1;AC\377\216\350\354\340\377\1\224" \
+ "\230\231\377\216.46\377\2GLN\377\350\351\351\377\271\350\354\340\377" \
+ "\1\302\303\304\377\215.46\377\235\350\354\340\377\1GLN\377\216.46\377" \
+ "\2EJL\377\350\351\351\377\240\350\354\340\377\2\351\354\343\377JOQ\377" \
+ "\216.46\377\2""179\377\346\347\347\377\343\350\354\340\377\1INP\377\215" \
+ ".46\377\1\216\221\222\377\225\350\354\340\377\1x|}\377\215.46\377\1\216" \
+ "\221\222\377\214\350\354\340\377\1\230\233\234\377\216.46\377\2""7=\77" \
+ "\377\337\340\340\377\242\350\354\340\377\2\312\313\314\377068\377\216" \
+ ".46\377\1\242\244\245\377\215\350\354\340\377\1;AC\377\215.46\377\2""0" \
+ "68\377\316\317\320\377\272\350\354\340\377\1\302\303\304\377\215.46\377" \
+ "\234\350\354\340\377\1\257\261\262\377\216.46\377\2""068\377\317\320" \
+ "\320\377\242\350\354\340\377\2\330\332\332\3775:<\377\216.46\377\1\213" \
+ "\216\217\377\343\350\354\340\377\1\264\266\266\377\215.46\377\2""5;=" \
+ "\377\350\352\351\377\223\350\354\340\377\2\337\340\340\377068\377\214" \
+ ".46\377\2""6<>\377\352\354\346\377\214\350\354\340\377\1>DF\377\216." \
+ "46\377\1\246\250\251\377\244\350\354\340\377\1\216\221\222\377\216.4" \
+ "6\377\1GLN\377\214\350\354\340\377\1\246\251\252\377\216.46\377\1\223" \
+ "\226\227\377\273\350\354\340\377\1\302\303\304\377\215.46\377\234\350" \
+ "\354\340\377\1OTV\377\216.46\377\1\220\223\224\377\244\350\354\340\377" \
+ "\1\244\247\250\377\216.46\377\1""8>\77\377\344\350\354\340\377\1UY[\377" \
+ "\215.46\377\1\202\205\206\377\223\350\354\340\377\1z~\177\377\215.46" \
+ "\377\1\213\216\217\377\214\350\354\340\377\1\271\273\274\377\216.46\377" \
+ "\1Z_a\377\246\350\354\340\377\1JOQ\377\216.46\377\1\310\312\312\377\213" \
+ "\350\354\340\377\1[`a\377\215.46\377\1BHJ\377\274\350\354\340\377\1\302" \
+ "\303\304\377\215.46\377\233\350\354\340\377\1\320\322\322\377\216.46" \
+ "\377\1HMO\377\246\350\354\340\377\1\\ab\377\216.46\377\1\260\263\263" \
+ "\377\343\350\354\340\377\1\302\303\304\377\215.46\377\2""179\377\341" \
+ "\342\342\377\221\350\354\340\377\2\341\342\343\377179\377\214.46\377" \
+ "\2""5;=\377\352\353\347\377\214\350\354\340\377\1nrs\377\216.46\377\1" \
+ "\316\317\320\377\246\350\354\340\377\1\273\275\276\377\216.46\377\1|" \
+ "\200\201\377\212\350\354\340\377\1\341\342\343\377\216.46\377\1\253\255" \
+ "\256\377\274\350\354\340\377\1\302\303\304\377\215.46\377\233\350\354" \
+ "\340\377\1\204\210\211\377\216.46\377\1\270\272\272\377\246\350\354\340" \
+ "\377\2\321\322\323\377/57\377\215.46\377\1eik\377\344\350\354\340\377" \
+ "\1_de\377\215.46\377\1x|}\377\221\350\354\340\377\1~\201\202\377\215" \
+ ".46\377\1\210\214\215\377\214\350\354\340\377\2\350\354\342\37728:\377" \
+ "\215.46\377\1hmn\377\250\350\354\340\377\1X]^\377\215.46\377\1""9>@\377" \
+ "\212\350\354\340\377\1\231\234\235\377\215.46\377\1;AC\377\275\350\354" \
+ "\340\377\1\302\303\304\377\215.46\377\233\350\354\340\377\1=BD\377\215" \
+ ".46\377\1PUW\377\250\350\354\340\377\1ost\377\215.46\377\2""068\377\351" \
+ "\352\350\377\343\350\354\340\377\1\316\317\320\377\215.46\377\2""068" \
+ "\377\330\332\332\377\217\350\354\340\377\2\343\344\344\377179\377\214" \
+ ".46\377\2""4:<\377\350\352\351\377\214\350\354\340\377\1\265\267\270" \
+ "\377\216.46\377\1\305\306\307\377\250\350\354\340\377\1\271\273\273\377" \
+ "\216.46\377\1\303\305\305\377\211\350\354\340\377\1eik\377\215.46\377" \
+ "\1\207\212\213\377\275\350\354\340\377\1\302\303\304\377\215.46\377\232" \
+ "\350\354\340\377\1\313\314\315\377\216.46\377\1\260\263\263\377\250\350" \
+ "\354\340\377\1\317\320\320\377\216.46\377\1\254\257\257\377\344\350\354" \
+ "\340\377\1nrs\377\215.46\377\1kpq\377\217\350\354\340\377\1\200\204\205" \
+ "\377\215.46\377\1\205\210\212\377\215\350\354\340\377\1\201\204\206\377" \
+ "\215.46\377\1MRT\377\252\350\354\340\377\1BHJ\377\215.46\377\1\217\222" \
+ "\223\377\211\350\354\340\377\1""6<>\377\215.46\377\1\312\313\314\377" \
+ "\275\350\354\340\377\1\302\303\304\377\215.46\377\232\350\354\340\377" \
+ "\1\226\231\232\377\215.46\377\1=BD\377\252\350\354\340\377\1W\\]\377" \
+ "\215.46\377\1x|}\377\344\350\354\340\377\2\333\334\334\377068\377\215" \
+ ".46\377\1\317\320\320\377\215\350\354\340\377\2\345\346\346\37739;\377" \
+ "\214.46\377\2""39;\377\347\350\350\377\215\350\354\340\377\1LQR\377\215" \
+ ".46\377\1\225\230\231\377\252\350\354\340\377\1\211\214\215\377\215." \
+ "46\377\1\\ab\377\210\350\354\340\377\1\321\322\323\377\215.46\377\1:" \
+ "@B\377\276\350\354\340\377\1\302\303\304\377\215.46\377\232\350\354\340" \
+ "\377\1bgh\377\215.46\377\1\177\203\204\377\252\350\354\340\377\1\237" \
+ "\242\243\377\215.46\377\1DIK\377\345\350\354\340\377\1z~\177\377\215" \
+ ".46\377\1bfh\377\215\350\354\340\377\1\203\207\210\377\215.46\377\1\203" \
+ "\207\210\377\215\350\354\340\377\1\352\354\346\377\216.46\377\1\335\336" \
+ "\336\377\252\350\354\340\377\1\316\317\320\377\215.46\377\1""179\377" \
+ "\210\350\354\340\377\1\246\251\252\377\215.46\377\1imo\377\276\350\354" \
+ "\340\377\1\302\303\304\377\215.46\377\232\350\354\340\377\1""5:<\377" \
+ "\215.46\377\1\306\310\311\377\252\350\354\340\377\1\344\345\345\377\216" \
+ ".46\377\1\344\345\345\377\252\350\354\340\377\5\304\336\373\377\236\311" \
+ "\370\377\220\301\367\377\234\310\370\377\273\331\372\377\265\350\354" \
+ "\340\377\2\344\345\345\37739;\377\215.46\377\1\304\306\306\377\213\350" \
+ "\354\340\377\2\347\350\350\37739;\377\214.46\377\2""28:\377\345\346\346" \
+ "\377\215\350\354\340\377\1\313\315\315\377\215.46\377\1@FG\377\254\350" \
+ "\354\340\377\1""6<>\377\215.46\377\1\331\332\333\377\207\350\354\340" \
+ "\377\1\212\215\216\377\215.46\377\1\222\225\226\377\276\350\354\340\377" \
+ "\1\302\303\304\377\215.46\377\231\350\354\340\377\1\341\342\343\377\215" \
+ ".46\377\1""28:\377\254\350\354\340\377\1HMO\377\215.46\377\1\302\304" \
+ "\305\377\250\350\354\340\377\2\262\324\371\377[\244\363\377\205O\235" \
+ "\362\377\2U\240\362\377\236\311\370\377\264\350\354\340\377\1\211\214" \
+ "\215\377\215.46\377\1V[]\377\213\350\354\340\377\1\205\210\212\377\215" \
+ ".46\377\1\200\204\205\377\216\350\354\340\377\1\253\256\257\377\215." \
+ "46\377\1quw\377\254\350\354\340\377\1chi\377\215.46\377\1\275\277\277" \
+ "\377\207\350\354\340\377\1mqs\377\215.46\377\1\270\272\272\377\276\350" \
+ "\354\340\377\1\302\303\304\377\215.46\377\231\350\354\340\377\1\302\304" \
+ "\305\377\215.46\377\1[`a\377\254\350\354\340\377\1y}\177\377\215.46\377" \
+ "\1\246\250\251\377\247\350\354\340\377\1\214\277\366\377\211O\235\362" \
+ "\377\1u\262\365\377\263\350\354\340\377\2\352\354\345\3779>@\377\215" \
+ ".46\377\1\271\273\273\377\211\350\354\340\377\2\350\352\351\3775:<\377" \
+ "\214.46\377\2""179\377\343\344\344\377\216\350\354\340\377\1\217\222" \
+ "\223\377\215.46\377\1\231\233\234\377\254\350\354\340\377\1\212\215\216" \
+ "\377\215.46\377\1\235\240\241\377\207\350\354\340\377\1QVX\377\215.4" \
+ "6\377\1\320\322\322\377\276\350\354\340\377\1\302\303\304\377\215.46" \
+ "\377\231\350\354\340\377\1\246\250\251\377\215.46\377\1\202\205\206\377" \
+ "\254\350\354\340\377\1\237\242\243\377\215.46\377\1\207\212\213\377\246" \
+ "\350\354\340\377\1\236\311\370\377\213O\235\362\377\1\177\270\366\377" \
+ "\263\350\354\340\377\1\225\230\231\377\215.46\377\1OTV\377\211\350\354" \
+ "\340\377\1\210\214\215\377\215.46\377\1}\200\202\377\217\350\354\340" \
+ "\377\1y|~\377\215.46\377\1\264\267\267\377\254\350\354\340\377\1\246" \
+ "\251\252\377\215.46\377\1\206\211\212\377\207\350\354\340\377\1;AC\377" \
+ "\215.46\377\1\347\350\350\377\276\350\354\340\377\1\302\303\304\377\215" \
+ ".46\377\231\350\354\340\377\1\216\221\222\377\215.46\377\1\235\240\241" \
+ "\377\254\350\354\340\377\1\274\276\276\377\215.46\377\1nrs\377\245\350" \
+ "\354\340\377\2\342\357\375\377Q\236\362\377\214O\235\362\377\1\304\336" \
+ "\373\377\263\350\354\340\377\1>DF\377\215.46\377\1\256\260\261\377\207" \
+ "\350\354\340\377\2\352\353\347\3775;=\377\214.46\377\2""179\377\341\342" \
+ "\342\377\217\350\354\340\377\1kpq\377\215.46\377\1\313\315\315\377\254" \
+ "\350\354\340\377\1\276\300\301\377\215.46\377\1{\177\200\377\207\350" \
+ "\354\340\377\1""179\377\215.46\377\277\350\354\340\377\1\302\303\304" \
+ "\377\215.46\377\231\350\354\340\377\1\204\210\211\377\215.46\377\1\267" \
+ "\271\272\377\254\350\354\340\377\1\326\327\330\377\215.46\377\1eik\377" \
+ "\245\350\354\340\377\1\232\307\370\377\215O\235\362\377\1z\265\365\377" \
+ "\263\350\354\340\377\1\243\246\247\377\215.46\377\1FKM\377\207\350\354" \
+ "\340\377\1\213\216\217\377\215.46\377\1y}\177\377\220\350\354\340\377" \
+ "\1bgh\377\215.46\377\1\332\333\334\377\254\350\354\340\377\1\314\316" \
+ "\316\377\215.46\377\1quw\377\207\350\354\340\377\216.46\377\277\350\354" \
+ "\340\377\1\302\303\304\377\215.46\377\231\350\354\340\377\1y|~\377\215" \
+ ".46\377\1\302\303\304\377\254\350\354\340\377\1\341\342\343\377\215." \
+ "46\377\1[`a\377\245\350\354\340\377\1i\254\364\377\215O\235\362\377\1" \
+ "Q\236\362\377\264\350\354\340\377\1GMN\377\215.46\377\1\243\246\247\377" \
+ "\205\350\354\340\377\2\352\354\346\3776<>\377\214.46\377\2""068\377\337" \
+ "\340\340\377\220\350\354\340\377\1Y^`\377\215.46\377\1\341\342\343\377" \
+ "\254\350\354\340\377\1\324\326\326\377\215.46\377\1hmn\377\207\350\354" \
+ "\340\377\215.46\377\1""8>\77\377\277\350\354\340\377\1\302\303\304\377" \
+ "\215.46\377\231\350\354\340\377\1ptu\377\215.46\377\1\314\316\316\377" \
+ "\254\350\354\340\377\1\351\352\350\377\215.46\377\1QVX\377\245\350\354" \
+ "\340\377\1U\240\362\377\216O\235\362\377\1\344\360\375\377\263\350\354" \
+ "\340\377\1\260\263\263\377\215.46\377\1@FG\377\205\350\354\340\377\1" \
+ "\216\221\222\377\215.46\377\1w{|\377\221\350\354\340\377\1Y]_\377\215" \
+ ".46\377\1\342\343\343\377\254\350\354\340\377\1\325\326\327\377\215." \
+ "46\377\1glm\377\206\350\354\340\377\1\351\352\350\377\215.46\377\1""5" \
+ ";=\377\277\350\354\340\377\1\302\303\304\377\215.46\377\231\350\354\340" \
+ "\377\1ptu\377\215.46\377\1\315\316\317\377\254\350\354\340\377\1\352" \
+ "\353\347\377\215.46\377\1QVX\377\245\350\354\340\377\1U\240\362\377\216" \
+ "O\235\362\377\1\345\361\375\377\264\350\354\340\377\1PUW\377\215.46\377" \
+ "\1\230\233\234\377\203\350\354\340\377\2\351\354\343\3778>\77\377\214" \
+ ".46\377\2""068\377\335\336\336\377\221\350\354\340\377\1bfh\377\215." \
+ "46\377\1\332\333\334\377\254\350\354\340\377\1\314\316\316\377\215.4" \
+ "6\377\1quw\377\207\350\354\340\377\216.46\377\277\350\354\340\377\1\302" \
+ "\303\304\377\215.46\377\231\350\354\340\377\1x|}\377\215.46\377\1\302" \
+ "\303\304\377\254\350\354\340\377\1\341\342\343\377\215.46\377\1Z_a\377" \
+ "\245\350\354\340\377\1l\255\364\377\215O\235\362\377\1R\237\362\377\265" \
+ "\350\354\340\377\1\275\277\300\377\215.46\377\2""9\77A\377\350\354\342" \
+ "\377\202\350\354\340\377\1\220\224\225\377\215.46\377\1txz\377\222\350" \
+ "\354\340\377\1kpq\377\215.46\377\1\314\316\316\377\254\350\354\340\377" \
+ "\1\277\301\302\377\215.46\377\1z~\177\377\207\350\354\340\377\216.46" \
+ "\377\1\352\354\345\377\276\350\354\340\377\1\302\303\304\377\215.46\377" \
+ "\231\350\354\340\377\1\204\210\211\377\215.46\377\1\271\273\273\377\254" \
+ "\350\354\340\377\1\327\330\330\377\215.46\377\1dij\377\245\350\354\340" \
+ "\377\1\236\311\370\377\215O\235\362\377\1\177\270\366\377\266\350\354" \
+ "\340\377\1]ac\377\215.46\377\4\215\220\221\377\350\354\340\377\350\354" \
+ "\342\3779>@\377\214.46\377\2/57\377\332\333\334\377\222\350\354\340\377" \
+ "\1w{|\377\215.46\377\1\265\267\270\377\254\350\354\340\377\1\250\253" \
+ "\253\377\215.46\377\1\205\210\212\377\207\350\354\340\377\1""068\377" \
+ "\215.46\377\1\341\342\342\377\276\350\354\340\377\1\302\303\304\377\215" \
+ ".46\377\231\350\354\340\377\1\215\220\221\377\215.46\377\1\237\242\243" \
+ "\377\254\350\354\340\377\1\276\300\301\377\215.46\377\1mqs\377\245\350" \
+ "\354\340\377\2\350\362\375\377S\237\362\377\214O\235\362\377\1\315\343" \
+ "\373\377\266\350\354\340\377\1\313\315\315\377\215.46\377\3""5;=\377" \
+ "\350\352\351\377\223\226\227\377\215.46\377\1quw\377\223\350\354\340" \
+ "\377\1\216\221\222\377\215.46\377\1\231\234\235\377\254\350\354\340\377" \
+ "\1\214\220\221\377\215.46\377\1\234\237\240\377\207\350\354\340\377\1" \
+ "AFH\377\215.46\377\1\321\322\323\377\276\350\354\340\377\1\302\303\304" \
+ "\377\215.46\377\231\350\354\340\377\1\244\247\250\377\215.46\377\1\203" \
+ "\207\210\377\254\350\354\340\377\1\241\243\244\377\215.46\377\1\205\210" \
+ "\212\377\246\350\354\340\377\1\253\320\371\377\213O\235\362\377\1\214" \
+ "\277\366\377\270\350\354\340\377\1imo\377\215.46\377\2uy{\377:@B\377" \
+ "\214.46\377\2/57\377\330\332\332\377\223\350\354\340\377\1\252\254\255" \
+ "\377\215.46\377\1txy\377\254\350\354\340\377\1gkl\377\215.46\377\1\272" \
+ "\274\275\377\207\350\354\340\377\1W\\]\377\215.46\377\1\251\253\254\377" \
+ "\276\350\354\340\377\1\302\303\304\377\215.46\377\231\350\354\340\377" \
+ "\1\301\302\303\377\215.46\377\1^ce\377\254\350\354\340\377\1}\200\202" \
+ "\377\215.46\377\1\243\246\247\377\247\350\354\340\377\1\231\306\367\377" \
+ "\211O\235\362\377\1\200\270\366\377\271\350\354\340\377\2\327\330\330" \
+ "\377068\377\232.46\377\1nrs\377\224\350\354\340\377\1\311\312\313\377" \
+ "\215.46\377\1CIJ\377\254\350\354\340\377\1""8>\77\377\215.46\377\1\330" \
+ "\331\331\377\207\350\354\340\377\1kpq\377\215.46\377\1\177\203\204\377" \
+ "\276\350\354\340\377\1\302\303\304\377\215.46\377\231\350\354\340\377" \
+ "\1\337\340\340\377\215.46\377\1""4:<\377\254\350\354\340\377\1LQR\377" \
+ "\215.46\377\1\301\302\303\377\250\350\354\340\377\2\303\336\373\377d" \
+ "\251\364\377\205O\235\362\377\2Z\243\363\377\260\323\371\377\273\350" \
+ "\354\340\377\1x|}\377\231.46\377\2/57\377\325\326\327\377\224\350\354" \
+ "\340\377\1\351\352\350\377\216.46\377\1\340\341\341\377\252\350\354\340" \
+ "\377\1\321\322\323\377\215.46\377\1""068\377\210\350\354\340\377\1\213" \
+ "\217\220\377\215.46\377\1V[]\377\276\350\354\340\377\1\302\303\304\377" \
+ "\215.46\377\232\350\354\340\377\1""39;\377\215.46\377\1\312\313\314\377" \
+ "\252\350\354\340\377\1\350\351\351\377\216.46\377\1\341\342\342\377\252" \
+ "\350\354\340\377\5\323\346\374\377\255\321\371\377\236\311\370\377\251" \
+ "\317\371\377\313\342\373\377\275\350\354\340\377\2\342\343\343\37728" \
+ ":\377\230.46\377\1kpq\377\226\350\354\340\377\1INP\377\215.46\377\1\232" \
+ "\235\236\377\252\350\354\340\377\1\214\220\221\377\215.46\377\1X]^\377" \
+ "\210\350\354\340\377\1\261\263\264\377\215.46\377\1""179\377\276\350" \
+ "\354\340\377\1\302\303\304\377\215.46\377\232\350\354\340\377\1_de\377" \
+ "\215.46\377\1\204\210\211\377\252\350\354\340\377\1\243\246\247\377\215" \
+ ".46\377\1BGI\377\356\350\354\340\377\1\204\210\211\377\230.46\377\1\323" \
+ "\324\324\377\226\350\354\340\377\1}\200\202\377\215.46\377\1QVX\377\252" \
+ "\350\354\340\377\1GLN\377\215.46\377\1\214\220\221\377\210\350\354\340" \
+ "\377\1\330\331\331\377\216.46\377\1\253\256\257\377\275\350\354\340\377" \
+ "\1\302\303\304\377\215.46\377\232\350\354\340\377\1\224\227\230\377\215" \
+ ".46\377\1\77EG\377\252\350\354\340\377\1[`a\377\215.46\377\1txz\377\356" \
+ "\350\354\340\377\2\352\353\347\3776<>\377\226.46\377\1imo\377\227\350" \
+ "\354\340\377\1\262\264\265\377\216.46\377\1\313\314\315\377\250\350\354" \
+ "\340\377\1\276\300\301\377\216.46\377\1\300\302\302\377\211\350\354\340" \
+ "\377\1;AC\377\215.46\377\1_de\377\275\350\354\340\377\1\302\303\304\377" \
+ "\215.46\377\232\350\354\340\377\1\306\310\311\377\216.46\377\1\265\267" \
+ "\270\377\250\350\354\340\377\1\324\325\325\377\216.46\377\1\251\253\254" \
+ "\377\357\350\354\340\377\1\223\226\227\377\226.46\377\1\320\322\322\377" \
+ "\227\350\354\340\377\2\352\354\350\377179\377\215.46\377\1ost\377\250" \
+ "\350\354\340\377\1]ac\377\215.46\377\1""6<>\377\212\350\354\340\377\1" \
+ "mqs\377\215.46\377\2/57\377\341\342\343\377\274\350\354\340\377\1\302" \
+ "\303\304\377\215.46\377\233\350\354\340\377\1""9\77A\377\215.46\377\1" \
+ "V[]\377\250\350\354\340\377\1txz\377\215.46\377\2/57\377\346\346\347" \
+ "\377\360\350\354\340\377\1=BD\377\224.46\377\1fjl\377\231\350\354\340" \
+ "\377\1imo\377\215.46\377\2/57\377\324\325\325\377\246\350\354\340\377" \
+ "\1\303\305\305\377\216.46\377\1x|}\377\212\350\354\340\377\1\246\251" \
+ "\252\377\216.46\377\1y}\177\377\274\350\354\340\377\1\302\303\304\377" \
+ "\215.46\377\233\350\354\340\377\1\200\204\205\377\216.46\377\1\276\300" \
+ "\301\377\246\350\354\340\377\2\330\331\331\377068\377\215.46\377\1`e" \
+ "f\377\361\350\354\340\377\1\237\242\243\377\224.46\377\1\316\317\320" \
+ "\377\231\350\354\340\377\1\264\267\267\377\216.46\377\1aeg\377\246\350" \
+ "\354\340\377\1OTV\377\216.46\377\1\303\305\305\377\212\350\354\340\377" \
+ "\2\351\352\350\377068\377\215.46\377\2/57\377\323\324\324\377\273\350" \
+ "\354\340\377\1\302\303\304\377\215.46\377\233\350\354\340\377\1\313\315" \
+ "\315\377\216.46\377\1NSU\377\246\350\354\340\377\1chi\377\216.46\377" \
+ "\1\253\256\257\377\362\350\354\340\377\1DIK\377\222.46\377\1chi\377\233" \
+ "\350\354\340\377\1;AC\377\216.46\377\1\257\262\263\377\244\350\354\340" \
+ "\377\1\230\233\234\377\216.46\377\1BHJ\377\214\350\354\340\377\1aeg\377" \
+ "\216.46\377\1]ac\377\273\350\354\340\377\1\302\303\304\377\215.46\377" \
+ "\234\350\354\340\377\1JOQ\377\216.46\377\1\231\233\234\377\244\350\354" \
+ "\340\377\1\256\260\261\377\216.46\377\1""5;=\377\363\350\354\340\377" \
+ "\1\256\260\261\377\222.46\377\1\313\314\315\377\233\350\354\340\377\1" \
+ "\224\227\230\377\216.46\377\2:@B\377\346\346\347\377\242\350\354\340" \
+ "\377\2\322\323\324\377179\377\216.46\377\1\235\240\241\377\214\350\354" \
+ "\340\377\1\262\264\265\377\217.46\377\1\220\223\224\377\272\350\354\340" \
+ "\377\1\302\303\304\377\215.46\377\234\350\354\340\377\1\252\254\255\377" \
+ "\216.46\377\2""39;\377\326\327\330\377\242\350\354\340\377\2\340\341" \
+ "\341\3778>\77\377\216.46\377\1\207\212\213\377\364\350\354\340\377\1" \
+ "OTV\377\220.46\377\1`ef\377\234\350\354\340\377\2\350\354\342\3778>\77" \
+ "\377\216.46\377\1Y]_\377\241\350\354\340\377\2\350\351\351\377EJL\377" \
+ "\216.46\377\1;AC\377\216\350\354\340\377\1BHJ\377\216.46\377\2/57\377" \
+ "\264\267\267\377\271\350\354\340\377\1\302\303\304\377\215.46\377\235" \
+ "\350\354\340\377\1EJL\377\216.46\377\2KPR\377\351\354\343\377\241\350" \
+ "\354\340\377\1NSU\377\216.46\377\2""179\377\346\346\347\377\364\350\354" \
+ "\340\377\1\272\274\275\377\220.46\377\1\307\311\311\377\235\350\354\340" \
+ "\377\1\220\223\224\377\217.46\377\1swx\377\240\350\354\340\377\1SXY\377" \
+ "\217.46\377\1\220\224\225\377\216\350\354\340\377\1\233\236\237\377\217" \
+ ".46\377\2""6<>\377\301\302\303\377\270\350\354\340\377\1\302\303\304" \
+ "\377\215.46\377\1\352\354\350\377\234\350\354\340\377\1\246\251\252\377" \
+ "\217.46\377\1bfh\377\240\350\354\340\377\1chi\377\217.46\377\1z~\177" \
+ "\377\366\350\354\340\377\1Y]_\377\216.46\377\1^ce\377\237\350\354\340" \
+ "\377\1BGI\377\217.46\377\1lqr\377\235\350\354\340\377\2\352\354\350\377" \
+ "SXY\377\217.46\377\1BGI\377\220\350\354\340\377\1@FG\377\217.46\377\2" \
+ "068\377\246\251\252\377\267\350\354\340\377\1\302\303\304\377\215.46" \
+ "\377\1\335\336\337\377\235\350\354\340\377\1QVX\377\217.46\377\1\\ab" \
+ "\377\236\350\354\340\377\1_de\377\217.46\377\2""6<>\377\346\347\347\377" \
+ "\366\350\354\340\377\1\311\312\313\377\216.46\377\1\304\306\306\377\237" \
+ "\350\354\340\377\1\265\267\270\377\220.46\377\2W\\]\377\344\345\345\377" \
+ "\232\350\354\340\377\2\326\327\330\377HMO\377\220.46\377\1\261\263\264" \
+ "\377\220\350\354\340\377\1\247\252\253\377\221.46\377\1\202\206\207\377" \
+ "\242\350\354\340\377\2\264\267\267\377\276\300\301\377\222\350\354\340" \
+ "\377\1\310\312\312\377\215.46\377\1\267\271\272\377\235\350\354\340\377" \
+ "\2\314\316\316\377/57\377\217.46\377\2LQS\377\330\331\331\377\232\350" \
+ "\354\340\377\2\341\342\342\377SXY\377\220.46\377\1\231\233\234\377\367" \
+ "\350\354\340\377\2\341\342\343\377068\377\214.46\377\1[`a\377\241\350" \
+ "\354\340\377\1eik\377\220.46\377\2;AC\377\263\265\266\377\230\350\354" \
+ "\340\377\2\246\251\252\3775:<\377\220.46\377\1]ac\377\222\350\354\340" \
+ "\377\1Y]_\377\221.46\377\2BHJ\377\264\267\267\377\235\350\354\340\377" \
+ "\5\331\332\333\377\207\213\214\377=BD\377.46\377FKM\377\222\350\354\340" \
+ "\377\1\327\330\330\377\215.46\377\1uy{\377\220\350\354\340\377\1\350" \
+ "\354\342\377\215\350\354\340\377\1|\200\201\377\220.46\377\2""5:<\377" \
+ "\245\247\250\377\230\350\354\340\377\2\265\267\270\377;AC\377\220.46" \
+ "\377\1KPR\377\370\350\354\340\377\1\205\210\212\377\215.46\377\1\302" \
+ "\303\304\377\241\350\354\340\377\2\350\351\351\377>DF\377\221.46\377" \
+ "\2fjl\377\335\336\336\377\224\350\354\340\377\2\327\330\330\377^bd\377" \
+ "\221.46\377\2""9\77A\377\342\343\343\377\222\350\354\340\377\2\332\333" \
+ "\334\37739;\377\222.46\377\2W\\]\377\257\262\263\377\230\350\354\340" \
+ "\377\3\320\322\322\377\217\222\223\377MRT\377\205.46\377\1\246\250\251" \
+ "\377\221\350\354\340\377\1\347\350\350\377\215.46\377\2""179\377\324" \
+ "\326\326\377\215\350\354\340\377\3\235\240\241\377CIJ\377txz\377\216" \
+ "\350\354\340\377\1KPR\377\221.46\377\2[`a\377\324\325\325\377\224\350" \
+ "\354\340\377\2\341\342\342\377kop\377\221.46\377\2""39;\377\323\324\324" \
+ "\377\367\350\354\340\377\2\350\354\342\3775;=\377\214.46\377\1Y]_\377" \
+ "\243\350\354\340\377\2\303\305\305\377/57\377\221.46\377\3""068\377{" \
+ "\177\200\377\332\333\334\377\220\350\354\340\377\3\325\326\327\377tx" \
+ "z\377/57\377\222.46\377\1\270\272\272\377\224\350\354\340\377\1\244\247" \
+ "\250\377\224.46\377\3>DF\377\206\211\212\377\277\301\302\377\221\350" \
+ "\354\340\377\4\325\326\327\377\245\247\250\377txy\377BGI\377\210.46\377" \
+ "\1BGI\377\222\350\354\340\377\1/57\377\215.46\377\2CIJ\377\330\332\332" \
+ "\377\211\350\354\340\377\3\302\304\305\377|\200\201\3777=\77\377\202" \
+ ".46\377\2""068\377\332\333\334\377\215\350\354\340\377\2\326\327\330" \
+ "\3774:<\377\221.46\377\3/57\377ptv\377\320\322\322\377\220\350\354\340" \
+ "\377\3\336\337\337\377\201\204\206\377179\377\222.46\377\1\237\242\243" \
+ "\377\370\350\354\340\377\1\224\227\230\377\215.46\377\1\277\301\302\377" \
+ "\244\350\354\340\377\1\224\227\230\377\224.46\377\3TYZ\377\232\235\236" \
+ "\377\317\320\320\377\212\350\354\340\377\3\321\322\323\377\232\235\236" \
+ "\377SXY\377\224.46\377\1\207\212\213\377\226\350\354\340\377\1vz{\377" \
+ "\226.46\377\21""179\377\\ab\377~\201\202\377\233\236\237\377\272\274" \
+ "\275\377\313\315\315\377\325\326\327\377\333\334\334\377\343\344\344" \
+ "\377\331\332\333\377\315\316\317\377\301\302\303\377\264\266\266\377" \
+ "\224\230\231\377uy{\377V[]\3776<>\377\215.46\377\1\236\241\242\377\221" \
+ "\350\354\340\377\1PUW\377\216.46\377\12""179\377y}\177\377\274\276\276" \
+ "\377\337\340\340\377\343\344\344\377\332\333\334\377\305\306\307\377" \
+ "\235\237\240\377rvw\377<BC\377\206.46\377\1quw\377\216\350\354\340\377" \
+ "\1\253\256\257\377\224.46\377\3NSU\377\223\226\227\377\312\313\314\377" \
+ "\212\350\354\340\377\3\327\330\330\377\241\243\244\377]ac\377\224.46" \
+ "\377\1ptu\377\371\350\354\340\377\1=BD\377\214.46\377\1V[]\377\246\350" \
+ "\354\340\377\1|\200\201\377\226.46\377\12""39;\377PUV\377nrs\377~\201" \
+ "\202\377\207\212\213\377\210\214\215\377~\202\203\377ost\377RWY\3774" \
+ ":<\377\226.46\377\1nrs\377\230\350\354\340\377\1aeg\377\263.46\377\1" \
+ ">CE\377\221\350\354\340\377\1\204\210\211\377\236.46\377\2/57\377\330" \
+ "\331\331\377\216\350\354\340\377\1\220\224\225\377\226.46\377\12""28" \
+ ":\377LQS\377kop\377|\200\201\377\205\210\212\377\211\214\215\377\200" \
+ "\204\205\377ptv\377UZ\\\3776<>\377\226.46\377\1[`a\377\371\350\354\340" \
+ "\377\1\225\230\231\377\215.46\377\1\274\276\276\377\247\350\354\340\377" \
+ "\1nrs\377\264.46\377\1[`a\377\232\350\354\340\377\1UZ\\\377\263.46\377" \
+ "\1\231\233\234\377\220\350\354\340\377\1\270\272\272\377\237.46\377\1" \
+ "ost\377\217\350\354\340\377\1\204\210\211\377\264.46\377\2PUW\377\351" \
+ "\354\343\377\370\350\354\340\377\2\350\354\342\3779>@\377\214.46\377" \
+ "\1TYZ\377\251\350\354\340\377\1nrs\377\262.46\377\1bfh\377\234\350\354" \
+ "\340\377\1_de\377\262.46\377\1:@B\377\221\350\354\340\377\1BHJ\377\236" \
+ ".46\377\2/57\377\326\327\330\377\217\350\354\340\377\1\177\203\204\377" \
+ "\262.46\377\2SXY\377\351\352\350\377\371\350\354\340\377\1\213\217\220" \
+ "\377\215.46\377\1\271\273\274\377\252\350\354\340\377\1\177\203\204\377" \
+ "\260.46\377\1quw\377\236\350\354\340\377\1rvw\377\262.46\377\1\222\225" \
+ "\226\377\220\350\354\340\377\1\231\234\235\377\237.46\377\1mqs\377\220" \
+ "\350\354\340\377\1\224\227\230\377\260.46\377\1bfh\377\372\350\354\340" \
+ "\377\2\350\352\351\3775:<\377\214.46\377\1QVX\377\254\350\354\340\377" \
+ "\2\231\233\234\377068\377\254.46\377\2/57\377\214\220\221\377\240\350" \
+ "\354\340\377\2\237\242\243\377068\377\260.46\377\2""7=\77\377\352\354" \
+ "\345\377\220\350\354\340\377\1BHJ\377\237.46\377\1\323\324\324\377\220" \
+ "\350\354\340\377\2\253\256\257\3774:<\377\255.46\377\1y|~\377\373\350" \
+ "\354\340\377\1\202\205\206\377\215.46\377\1\266\270\271\377\255\350\354" \
+ "\340\377\2\312\313\314\377CIJ\377\252.46\377\2>CE\377\277\301\302\377" \
+ "\242\350\354\340\377\2\322\323\324\377PUV\377\260.46\377\1\213\216\217" \
+ "\377\220\350\354\340\377\2\307\311\311\377/57\377\236.46\377\1jnp\377" \
+ "\221\350\354\340\377\2\330\331\331\377LQS\377\252.46\377\2""6<>\377\257" \
+ "\262\263\377\373\350\354\340\377\2\342\343\343\377179\377\214.46\377" \
+ "\1NSU\377\257\350\354\340\377\2\351\354\343\377quw\377\250.46\377\2f" \
+ "jl\377\346\347\347\377\245\350\354\340\377\2\224\230\231\3775;=\377\255" \
+ ".46\377\2W\\]\377\265\267\270\377\221\350\354\340\377\1\227\232\233\377" \
+ "\237.46\377\1\321\322\323\377\222\350\354\340\377\2\200\204\205\377/" \
+ "57\377\247.46\377\2Y^`\377\335\336\336\377\374\350\354\340\377\1ptu\377" \
+ "\215.46\377\1\264\267\267\377\261\350\354\340\377\2\304\306\306\377L" \
+ "QR\377\244.46\377\2FKM\377\271\273\274\377\250\350\354\340\377\3\346" \
+ "\347\347\377|\200\201\37728:\377\250.46\377\3""28:\377vz{\377\317\321" \
+ "\321\377\224\350\354\340\377\1\235\237\240\377\234.46\377\3/57\377qu" \
+ "w\377\341\342\342\377\223\350\354\340\377\2\321\322\323\377V[]\377\244" \
+ ".46\377\2>DF\377\253\256\257\377\375\350\354\340\377\1\306\307\310\377" \
+ "\215.46\377\1MRT\377\264\350\354\340\377\2\242\245\246\377CIJ\377\240" \
+ ".46\377\2>CE\377\231\233\234\377\254\350\354\340\377\3\346\346\347\377" \
+ "\207\213\214\377:@B\377\243.46\377\4/57\377Y^`\377\235\240\241\377\352" \
+ "\353\347\377\227\350\354\340\377\2\266\270\271\377>CE\377\230.46\377" \
+ "\3""179\377quw\377\324\326\326\377\227\350\354\340\377\2\255\257\260" \
+ "\377KPR\377\240.46\377\3""9>@\377\215\220\221\377\350\354\342\377\376" \
+ "\350\354\340\377\1OTV\377\215.46\377\1\262\264\265\377\266\350\354\340" \
+ "\377\2\252\254\255\377KPR\377\234.46\377\2DIK\377\242\244\245\377\261" \
+ "\350\354\340\377\3\256\260\261\377dij\377068\377\235.46\377\4""068\377" \
+ "`ef\377\243\246\247\377\346\347\347\377\233\350\354\340\377\3\352\354" \
+ "\345\377z~\177\37728:\377\224.46\377\3HMO\377\224\230\231\377\350\351" \
+ "\351\377\233\350\354\340\377\2\265\267\270\377SXY\377\234.46\377\2>C" \
+ "E\377\226\231\232\377\377\350\354\340\377\2\350\354\340\377\227\232\233" \
+ "\377\215.46\377\1PUW\377\271\350\354\340\377\3\317\320\320\377\210\214" \
+ "\215\377BHJ\377\226.46\377\3>CE\377\201\204\206\377\312\313\314\377\265" \
+ "\350\354\340\377\4\350\354\342\377\257\261\262\377x|}\377BHJ\377\226" \
+ ".46\377\5""6<>\377`ef\377\220\223\224\377\277\301\302\377\350\354\342" \
+ "\377\240\350\354\340\377\3\347\350\350\377\220\223\224\377HMO\377\216" \
+ ".46\377\4""179\377[`a\377\224\227\230\377\326\327\330\377\240\350\354" \
+ "\340\377\3\330\331\331\377\220\223\224\377HMO\377\226.46\377\3""9>@\377" \
+ "z~\177\377\301\302\303\377\377\350\354\340\377\202\350\354\340\377\2" \
+ "\332\333\334\37739;\377\215.46\377\1\275\277\277\377\274\350\354\340" \
+ "\377\4\326\327\330\377\244\247\250\377swx\377CIJ\377\216.46\377\4@FG" \
+ "\377nrs\377\240\243\244\377\321\322\323\377\274\350\354\340\377\7\350" \
+ "\352\351\377\306\307\310\377\242\244\245\377\177\203\204\377Y^`\377B" \
+ "HJ\3775;=\377\211.46\377\6CIJ\377_de\377z~\177\377\226\231\232\377\262" \
+ "\264\265\377\325\326\327\377\250\350\354\340\377\6\336\337\337\377\246" \
+ "\251\252\377\205\210\212\377fjl\377LQS\377DIK\377\202<BC\377\6GLN\377" \
+ "SXY\377eik\377\204\210\211\377\242\245\246\377\311\312\313\377\247\350" \
+ "\354\340\377\4\333\334\334\377\251\253\254\377x|}\377HMO\377\216.46\377" \
+ "\4;AC\377imo\377\232\235\236\377\314\316\316\377\377\350\354\340\377" \
+ "\205\350\354\340\377\1UZ\\\377\215.46\377\1\\ab\377\302\350\354\340\377" \
+ "\14\330\331\331\377\274\276\276\377\244\247\250\377\235\237\240\377\220" \
+ "\223\224\377\210\214\215\377\207\212\213\377\220\223\224\377\234\237" \
+ "\240\377\243\246\247\377\271\273\273\377\326\327\330\377\311\350\354" \
+ "\340\377\5\352\354\345\377\340\341\341\377\325\326\327\377\341\342\342" \
+ "\377\343\344\344\377\353\350\354\340\377\15\333\334\334\377\276\300\301" \
+ "\377\246\250\251\377\235\240\241\377\220\224\225\377\211\214\215\377" \
+ "\205\210\212\377\220\223\224\377\232\235\236\377\242\244\245\377\265" \
+ "\267\270\377\323\324\324\377\350\354\342\377\377\350\354\340\377\210" \
+ "\350\354\340\377\1\205\210\212\377\216.46\377\1\313\315\315\377\377\350" \
+ "\354\340\377\377\350\354\340\377\377\350\354\340\377\235\350\354\340" \
+ "\377\1\264\267\267\377\216.46\377\1txz\377\377\350\354\340\377\377\350" \
+ "\354\340\377\377\350\354\340\377\235\350\354\340\377\2\322\323\324\377" \
+ "5:<\377\215.46\377\2""9>@\377\350\352\351\377\377\350\354\340\377\377" \
+ "\350\354\340\377\377\350\354\340\377\234\350\354\340\377\2\334\335\335" \
+ "\377\77EG\377\216.46\377\1\243\246\247\377\377\350\354\340\377\377\350" \
+ "\354\340\377\377\350\354\340\377\234\350\354\340\377\2\335\336\337\377" \
+ "@FG\377\216.46\377\1V[]\377\377\350\354\340\377\377\350\354\340\377\377" \
+ "\350\354\340\377\234\350\354\340\377\2\336\337\337\377BGI\377\216.46" \
+ "\377\2""6<>\377\335\336\336\377\377\350\354\340\377\377\350\354\340\377" \
+ "\377\350\354\340\377\233\350\354\340\377\2\333\334\334\377BHJ\377\217" \
+ ".46\377\1\252\254\255\377\377\350\354\340\377\377\350\354\340\377\377" \
+ "\350\354\340\377\233\350\354\340\377\2\277\301\302\3779>@\377\217.46" \
+ "\377\1ptu\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340" \
+ "\377\233\350\354\340\377\2\215\220\221\377/57\377\217.46\377\1LQS\377" \
+ "\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\232\350" \
+ "\354\340\377\2\304\306\306\377PUW\377\220.46\377\2\77EG\377\341\342\343" \
+ "\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\230" \
+ "\350\354\340\377\2\335\336\336\377imo\377\221.46\377\2""5:<\377\322\323" \
+ "\324\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377" \
+ "\227\350\354\340\377\3\312\313\314\377vz{\377179\377\221.46\377\2""2" \
+ "8:\377\275\277\277\377\377\350\354\340\377\377\350\354\340\377\377\350" \
+ "\354\340\377\225\350\354\340\377\3\341\342\343\377\237\242\243\377MR" \
+ "T\377\223.46\377\2""068\377\271\273\274\377\377\350\354\340\377\377\350" \
+ "\354\340\377\377\350\354\340\377\223\350\354\340\377\3\310\312\312\377" \
+ "\215\220\221\377OTV\377\225.46\377\2""068\377\264\267\267\377\377\350" \
+ "\354\340\377\377\350\354\340\377\377\350\354\340\377\221\350\354\340" \
+ "\377\3\217\222\223\377Y^`\377179\377\227.46\377\2""5:<\377\275\277\300" \
+ "\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\222" \
+ "\350\354\340\377\1\201\204\206\377\230.46\377\2;AC\377\313\315\315\377" \
+ "\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\223\350" \
+ "\354\340\377\2\341\342\343\377179\377\226.46\377\2NSU\377\335\336\337" \
+ "\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\225" \
+ "\350\354\340\377\1x|}\377\225.46\377\1ptu\377\377\350\354\340\377\377" \
+ "\350\354\340\377\377\350\354\340\377\227\350\354\340\377\2\333\334\334" \
+ "\377/57\377\222.46\377\2""9>@\377\252\254\255\377\377\350\354\340\377" \
+ "\377\350\354\340\377\377\350\354\340\377\231\350\354\340\377\1ptu\377" \
+ "\221.46\377\2eik\377\344\345\345\377\377\350\354\340\377\377\350\354" \
+ "\340\377\377\350\354\340\377\232\350\354\340\377\1\324\325\325\377\217" \
+ ".46\377\2PUW\377\275\277\277\377\377\350\354\340\377\377\350\354\340" \
+ "\377\377\350\354\340\377\235\350\354\340\377\1gkl\377\214.46\377\2LQ" \
+ "S\377\260\263\263\377\377\350\354\340\377\377\350\354\340\377\377\350" \
+ "\354\340\377\237\350\354\340\377\1\313\315\315\377\211.46\377\3""068" \
+ "\377jnp\377\275\277\277\377\377\350\354\340\377\377\350\354\340\377\377" \
+ "\350\354\340\377\242\350\354\340\377\1^ce\377\205.46\377\4""8>\77\377" \
+ "kpq\377\253\255\256\377\350\352\351\377\377\350\354\340\377\377\350\354" \
+ "\340\377\377\350\354\340\377\244\350\354\340\377\6\302\304\305\377.4" \
+ "6\377;AC\377bgh\377\224\230\231\377\314\316\316\377\377\350\354\340\377" \
+ "\377\350\354\340\377\377\350\354\340\377\251\350\354\340\377\1\345\346" \
+ "\346\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377" \
+ "\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350" \
+ "\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340" \
+ "\377\337\350\354\340\377\1\352\354\350\377\210\325\326\327\377\1\341" \
+ "\342\342\377\232\350\354\340\377\1\341\342\343\377\207\325\326\327\377" \
+ "\1\343\344\344\377\244\350\354\340\377\2\314\316\316\377\267\271\272" \
+ "\377\202\244\247\250\377\2\267\271\272\377\315\316\317\377\236\350\354" \
+ "\340\377\1\350\351\351\377\204\343\344\344\377\224\350\354\340\377\1" \
+ "\332\333\334\377\217\325\326\327\377\232\350\354\340\377\3\300\302\302" \
+ "\377\235\237\240\377\206\211\212\377\202\202\205\206\377\3\212\215\216" \
+ "\377\242\245\246\377\307\311\311\377\225\350\354\340\377\1\344\345\345" \
+ "\377\223\325\326\327\377\1\335\336\336\377\377\350\354\340\377\302\350" \
+ "\354\340\377\1\235\237\240\377\212.46\377\3KPR\377\213\216\217\377\335" \
+ "\336\337\377\226\350\354\340\377\1kpq\377\211.46\377\3BGI\377txy\377" \
+ "\271\273\273\377\235\350\354\340\377\3\265\267\270\377lqr\3776<>\377" \
+ "\206.46\377\3""6<>\377nrs\377\270\272\272\377\233\350\354\340\377\1S" \
+ "XY\377\204.46\377\224\350\354\340\377\1GLN\377\217.46\377\1\331\332\333" \
+ "\377\226\350\354\340\377\3\267\271\272\377fjl\377068\377\210.46\377\4" \
+ "068\377aeg\377\246\251\252\377\350\354\342\377\221\350\354\340\377\1" \
+ "x|}\377\223.46\377\1SXY\377\377\350\354\340\377\302\350\354\340\377\1" \
+ "\235\237\240\377\214.46\377\2""179\377\213\217\220\377\225\350\354\340" \
+ "\377\1kpq\377\214.46\377\2PUW\377\326\327\330\377\231\350\354\340\377" \
+ "\2\275\277\300\377PUV\377\214.46\377\2RWY\377\277\301\302\377\231\350" \
+ "\354\340\377\1SXY\377\204.46\377\224\350\354\340\377\1GLN\377\217.46" \
+ "\377\1\332\333\334\377\224\350\354\340\377\2\312\313\314\377QVX\377\216" \
+ ".46\377\2""6<>\377\207\213\214\377\220\350\354\340\377\1txz\377\223." \
+ "46\377\1SXY\377\377\350\354\340\377\302\350\354\340\377\1\235\237\240" \
+ "\377\216.46\377\1swx\377\224\350\354\340\377\1kpq\377\215.46\377\2""7" \
+ "=\77\377\317\321\321\377\227\350\354\340\377\1\210\214\215\377\220.4" \
+ "6\377\1\211\214\215\377\230\350\354\340\377\1SXY\377\204.46\377\224\350" \
+ "\354\340\377\1GLN\377\217.46\377\1\334\335\335\377\223\350\354\340\377" \
+ "\2\225\230\231\377068\377\220.46\377\1JOQ\377\220\350\354\340\377\1k" \
+ "pq\377\223.46\377\1SXY\377\377\350\354\340\377\302\350\354\340\377\1" \
+ "\235\237\240\377\204.46\377\1@FG\377\202JOQ\377\2FKM\377068\377\206." \
+ "46\377\1\257\261\262\377\223\350\354\340\377\1kpq\377\204.46\377\1GL" \
+ "N\377\202JOQ\377\1AFH\377\206.46\377\1GMN\377\226\350\354\340\377\1g" \
+ "lm\377\207.46\377\4<BC\377QVX\377RWY\377>CE\377\207.46\377\1glm\377\227" \
+ "\350\354\340\377\1SXY\377\204.46\377\224\350\354\340\377\1GLN\377\203" \
+ ".46\377\1/57\377\213<BC\377\1\350\351\351\377\222\350\354\340\377\1\204" \
+ "\210\211\377\207.46\377\6INP\377fjl\377txy\377imo\377QVX\37728:\377\205" \
+ ".46\377\1\255\257\260\377\220\350\354\340\377\1uy{\377\206<BC\377\1;" \
+ "AC\377\204.46\377\1""068\377\207<BC\377\1^ce\377\377\350\354\340\377" \
+ "\302\350\354\340\377\1\235\237\240\377\204.46\377\1\265\267\270\377\204" \
+ "\350\354\340\377\2\250\253\253\3776<>\377\204.46\377\1SXY\377\223\350" \
+ "\354\340\377\1kpq\377\204.46\377\1\346\347\347\377\203\350\354\340\377" \
+ "\2\352\354\345\377\207\213\214\377\205.46\377\1\271\273\274\377\224\350" \
+ "\354\340\377\1z~\177\377\205.46\377\3""5;=\377\213\217\220\377\327\330" \
+ "\330\377\204\350\354\340\377\3\334\335\335\377\223\226\227\3778>\77\377" \
+ "\205.46\377\1y|~\377\226\350\354\340\377\1SXY\377\204.46\377\224\350" \
+ "\354\340\377\1GLN\377\203.46\377\1:@B\377\235\350\354\340\377\1\240\243" \
+ "\244\377\205.46\377\3:@B\377\224\230\231\377\344\345\345\377\206\350" \
+ "\354\340\377\5\306\307\310\377\202\205\206\377:@B\377.46\377GMN\377\231" \
+ "\350\354\340\377\204.46\377\1SXY\377\377\350\354\340\377\312\350\354" \
+ "\340\377\1\235\237\240\377\204.46\377\1\265\267\270\377\205\350\354\340" \
+ "\377\1\255\257\260\377\205.46\377\1\351\354\343\377\222\350\354\340\377" \
+ "\1kpq\377\204.46\377\1\346\347\347\377\205\350\354\340\377\1z~\177\377" \
+ "\204.46\377\1\210\214\215\377\223\350\354\340\377\1\257\262\263\377\205" \
+ ".46\377\2^bd\377\350\352\351\377\210\350\354\340\377\2\351\354\343\377" \
+ "glm\377\205.46\377\1\253\256\257\377\225\350\354\340\377\1SXY\377\204" \
+ ".46\377\224\350\354\340\377\1GLN\377\203.46\377\1:@B\377\234\350\354" \
+ "\340\377\2\332\333\334\37728:\377\204.46\377\2[`a\377\347\350\350\377" \
+ "\213\350\354\340\377\2\237\242\243\377\264\266\266\377\231\350\354\340" \
+ "\377\204.46\377\1SXY\377\377\350\354\340\377\312\350\354\340\377\1\235" \
+ "\237\240\377\204.46\377\1\265\267\270\377\206\350\354\340\377\205.46" \
+ "\377\1\330\331\331\377\222\350\354\340\377\1kpq\377\204.46\377\1\346" \
+ "\347\347\377\205\350\354\340\377\1\310\312\312\377\204.46\377\1quw\377" \
+ "\223\350\354\340\377\1BGI\377\204.46\377\1gkl\377\214\350\354\340\377" \
+ "\1txy\377\204.46\377\1AFH\377\225\350\354\340\377\1SXY\377\204.46\377" \
+ "\224\350\354\340\377\1GLN\377\203.46\377\1:@B\377\234\350\354\340\377" \
+ "\1jnp\377\204.46\377\1UZ\\\377\250\350\354\340\377\204.46\377\1SXY\377" \
+ "\377\350\354\340\377\312\350\354\340\377\1\235\237\240\377\204.46\377" \
+ "\1\265\267\270\377\205\350\354\340\377\1\352\354\345\377\205.46\377\1" \
+ "\340\341\341\377\222\350\354\340\377\1kpq\377\204.46\377\1\346\347\347" \
+ "\377\205\350\354\340\377\1\271\273\273\377\204.46\377\1\201\204\206\377" \
+ "\222\350\354\340\377\1\234\237\240\377\204.46\377\1CIJ\377\216\350\354" \
+ "\340\377\1PUV\377\204.46\377\1\233\236\237\377\224\350\354\340\377\1" \
+ "SXY\377\204.46\377\224\350\354\340\377\1GLN\377\203.46\377\1:@B\377\233" \
+ "\350\354\340\377\1\341\342\342\377\204.46\377\2""179\377\335\336\337" \
+ "\377\250\350\354\340\377\204.46\377\1SXY\377\377\350\354\340\377\312" \
+ "\350\354\340\377\1\235\237\240\377\204.46\377\1\265\267\270\377\205\350" \
+ "\354\340\377\1\222\225\226\377\204.46\377\1""068\377\223\350\354\340" \
+ "\377\1kpq\377\204.46\377\1\346\347\347\377\205\350\354\340\377\1bfh\377" \
+ "\204.46\377\1\235\237\240\377\222\350\354\340\377\1V[]\377\204.46\377" \
+ "\1\253\256\257\377\216\350\354\340\377\1\273\275\276\377\204.46\377\1" \
+ "TYZ\377\224\350\354\340\377\1SXY\377\204.46\377\224\350\354\340\377\1" \
+ "GLN\377\203.46\377\1:@B\377\233\350\354\340\377\1\231\233\234\377\204" \
+ ".46\377\1y}\177\377\251\350\354\340\377\204.46\377\1SXY\377\377\350\354" \
+ "\340\377\312\350\354\340\377\1\235\237\240\377\204.46\377\1\265\267\270" \
+ "\377\203\350\354\340\377\3\345\346\346\377\206\211\212\377/57\377\204" \
+ ".46\377\1[`a\377\223\350\354\340\377\1kpq\377\204.46\377\1\346\347\347" \
+ "\377\203\350\354\340\377\2\323\324\324\377fjl\377\204.46\377\2/57\377" \
+ "\336\337\337\377\221\350\354\340\377\1\345\346\346\377\204.46\377\1""9" \
+ "\77A\377\220\350\354\340\377\1BHJ\377\204.46\377\1\341\342\342\377\223" \
+ "\350\354\340\377\1SXY\377\204.46\377\224\350\354\340\377\1GLN\377\203" \
+ ".46\377\1:@B\377\233\350\354\340\377\1gkl\377\204.46\377\1\300\302\302" \
+ "\377\251\350\354\340\377\204.46\377\1SXY\377\377\350\354\340\377\312" \
+ "\350\354\340\377\1\235\237\240\377\204.46\377\1""7=\77\377\203<BC\377" \
+ "\1/57\377\206.46\377\1\257\262\263\377\223\350\354\340\377\1kpq\377\204" \
+ ".46\377\1:@B\377\202<BC\377\1""9>@\377\206.46\377\1\200\204\205\377\222" \
+ "\350\354\340\377\1\302\303\304\377\204.46\377\1rvw\377\220\350\354\340" \
+ "\377\1~\202\203\377\204.46\377\1\274\276\276\377\223\350\354\340\377" \
+ "\1SXY\377\204.46\377\224\350\354\340\377\1GLN\377\203.46\377\1""179\377" \
+ "\211fjl\377\1\311\312\313\377\221\350\354\340\377\1@FG\377\204.46\377" \
+ "\1\352\354\345\377\251\350\354\340\377\204.46\377\1SXY\377\377\350\354" \
+ "\340\377\312\350\354\340\377\1\235\237\240\377\216.46\377\1eik\377\224" \
+ "\350\354\340\377\1kpq\377\215.46\377\1ptv\377\223\350\354\340\377\1\256" \
+ "\260\261\377\204.46\377\1\217\222\223\377\220\350\354\340\377\1\235\237" \
+ "\240\377\204.46\377\1\246\250\251\377\223\350\354\340\377\1SXY\377\204" \
+ ".46\377\224\350\354\340\377\1GLN\377\215.46\377\1\265\267\270\377\221" \
+ "\350\354\340\377\1""179\377\203.46\377\1""39;\377\252\350\354\340\377" \
+ "\204.46\377\1SXY\377\377\350\354\340\377\312\350\354\340\377\1\235\237" \
+ "\240\377\215.46\377\1ptu\377\225\350\354\340\377\1kpq\377\213.46\377" \
+ "\2:@B\377\255\257\260\377\224\350\354\340\377\1\236\241\242\377\204." \
+ "46\377\1\235\237\240\377\220\350\354\340\377\1\251\253\254\377\204.4" \
+ "6\377\1\231\233\234\377\223\350\354\340\377\1SXY\377\204.46\377\224\350" \
+ "\354\340\377\1GLN\377\215.46\377\1\265\267\270\377\221\350\354\340\377" \
+ "\204.46\377\1:@B\377\252\350\354\340\377\204.46\377\1SXY\377\377\350" \
+ "\354\340\377\312\350\354\340\377\1\235\237\240\377\212.46\377\3""8>\77" \
+ "\377ost\377\310\312\312\377\226\350\354\340\377\1kpq\377\213.46\377\2" \
+ "7=\77\377\352\354\350\377\224\350\354\340\377\1\257\262\263\377\204." \
+ "46\377\1\214\220\221\377\220\350\354\340\377\1\231\234\235\377\204.4" \
+ "6\377\1\251\253\254\377\223\350\354\340\377\1SXY\377\204.46\377\224\350" \
+ "\354\340\377\1GLN\377\215.46\377\1\265\267\270\377\221\350\354\340\377" \
+ "\1""5;=\377\203.46\377\1""068\377\252\350\354\340\377\204.46\377\1SX" \
+ "Y\377\377\350\354\340\377\312\350\354\340\377\1\235\237\240\377\204." \
+ "46\377\1x|}\377\202\253\256\257\377\3\254\257\257\377\300\302\302\377" \
+ "\326\327\330\377\231\350\354\340\377\1kpq\377\204.46\377\1\302\303\304" \
+ "\377\202\325\326\327\377\1\204\210\211\377\204.46\377\1\202\206\207\377" \
+ "\224\350\354\340\377\1\304\306\306\377\204.46\377\1kpq\377\220\350\354" \
+ "\340\377\1z~\177\377\204.46\377\1\275\277\277\377\223\350\354\340\377" \
+ "\1SXY\377\204.46\377\224\350\354\340\377\1GLN\377\203.46\377\1""6<>\377" \
+ "\211\271\273\274\377\1\346\347\347\377\221\350\354\340\377\1INP\377\204" \
+ ".46\377\1\331\332\333\377\251\350\354\340\377\204.46\377\1SXY\377\377" \
+ "\350\354\340\377\312\350\354\340\377\1\235\237\240\377\204.46\377\1\251" \
+ "\253\254\377\236\350\354\340\377\1kpq\377\204.46\377\1\346\347\347\377" \
+ "\202\350\354\340\377\2\350\354\342\3779\77A\377\203.46\377\2""179\377" \
+ "\336\337\337\377\223\350\354\340\377\2\351\352\350\377068\377\203.46" \
+ "\377\1""5;=\377\220\350\354\340\377\1=BD\377\203.46\377\2/57\377\347" \
+ "\350\350\377\223\350\354\340\377\1SXY\377\204.46\377\224\350\354\340" \
+ "\377\1GLN\377\203.46\377\1:@B\377\233\350\354\340\377\1swx\377\204.4" \
+ "6\377\1\235\240\241\377\251\350\354\340\377\204.46\377\1SXY\377\377\350" \
+ "\354\340\377\312\350\354\340\377\1\235\237\240\377\204.46\377\1\251\253" \
+ "\254\377\236\350\354\340\377\1kpq\377\204.46\377\1\346\347\347\377\203" \
+ "\350\354\340\377\1\224\230\231\377\204.46\377\1ptu\377\224\350\354\340" \
+ "\377\1\\ab\377\204.46\377\1\242\244\245\377\216\350\354\340\377\1\260" \
+ "\263\263\377\204.46\377\1Y^`\377\224\350\354\340\377\1SXY\377\204.46" \
+ "\377\224\350\354\340\377\1GLN\377\203.46\377\1:@B\377\233\350\354\340" \
+ "\377\1\250\253\253\377\204.46\377\1HMO\377\251\350\354\340\377\204.4" \
+ "6\377\1SXY\377\377\350\354\340\377\312\350\354\340\377\1\235\237\240" \
+ "\377\204.46\377\1\251\253\254\377\236\350\354\340\377\1kpq\377\204.4" \
+ "6\377\1\346\347\347\377\204\350\354\340\377\1<BC\377\204.46\377\1\317" \
+ "\320\320\377\223\350\354\340\377\1\245\247\250\377\204.46\377\2<BC\377" \
+ "\346\347\347\377\214\350\354\340\377\2\351\354\343\377FKM\377\204.46" \
+ "\377\1\243\246\247\377\224\350\354\340\377\1SXY\377\204.46\377\224\350" \
+ "\354\340\377\1GLN\377\203.46\377\1:@B\377\234\350\354\340\377\1""5:<" \
+ "\377\204.46\377\1\230\233\234\377\250\350\354\340\377\204.46\377\1SX" \
+ "Y\377\377\350\354\340\377\312\350\354\340\377\1\235\237\240\377\204." \
+ "46\377\1\251\253\254\377\236\350\354\340\377\1kpq\377\204.46\377\1\346" \
+ "\347\347\377\204\350\354\340\377\1\233\236\237\377\204.46\377\1^bd\377" \
+ "\224\350\354\340\377\1INP\377\204.46\377\1W\\]\377\214\350\354\340\377" \
+ "\1chi\377\204.46\377\1HMO\377\225\350\354\340\377\1SXY\377\204.46\377" \
+ "\224\350\354\340\377\1GLN\377\203.46\377\1:@B\377\234\350\354\340\377" \
+ "\1\205\210\212\377\204.46\377\2""068\377\267\271\272\377\215\350\354" \
+ "\340\377\1\330\332\332\377\231\350\354\340\377\204.46\377\1SXY\377\377" \
+ "\350\354\340\377\312\350\354\340\377\1\235\237\240\377\204.46\377\1\251" \
+ "\253\254\377\236\350\354\340\377\1kpq\377\204.46\377\1\346\347\347\377" \
+ "\205\350\354\340\377\1@FG\377\204.46\377\1\274\276\276\377\223\350\354" \
+ "\340\377\1\274\276\276\377\205.46\377\2MRT\377\327\330\330\377\210\350" \
+ "\354\340\377\2\335\336\336\377UY[\377\205.46\377\1\272\274\275\377\225" \
+ "\350\354\340\377\1=BD\377\203.46\377\1""6<>\377\224\350\354\340\377\1" \
+ "GLN\377\203.46\377\1:@B\377\235\350\354\340\377\1AFH\377\204.46\377\2" \
+ "/57\377\217\222\223\377\212\350\354\340\377\4\274\276\276\377bgh\377" \
+ ".46\377\327\330\330\377\230\350\354\340\377\204.46\377\1SXY\377\377\350" \
+ "\354\340\377\312\350\354\340\377\1\235\237\240\377\204.46\377\1\251\253" \
+ "\254\377\236\350\354\340\377\1kpq\377\204.46\377\1\346\347\347\377\205" \
+ "\350\354\340\377\1\240\243\244\377\204.46\377\1MRT\377\224\350\354\340" \
+ "\377\1\220\224\225\377\205.46\377\3""068\377y}\177\377\302\304\305\377" \
+ "\204\350\354\340\377\3\306\307\310\377\200\204\205\377179\377\205.46" \
+ "\377\1\220\223\224\377\223\350\354\340\377\3\306\307\310\377\257\261" \
+ "\262\377hmn\377\204.46\377\1_de\377\224\350\354\340\377\1GLN\377\203" \
+ ".46\377\1""9>@\377\213\343\344\344\377\222\350\354\340\377\2\313\315" \
+ "\315\37739;\377\205.46\377\12@FG\377\212\215\216\377\302\303\304\377" \
+ "\341\342\342\377\350\354\340\377\347\350\350\377\320\322\322\377\253" \
+ "\256\257\377w{|\377=BD\377\203.46\377\1\212\215\216\377\230\350\354\340" \
+ "\377\204.46\377\1SXY\377\377\350\354\340\377\312\350\354\340\377\1\235" \
+ "\237\240\377\204.46\377\1\264\266\266\377\236\350\354\340\377\1kpq\377" \
+ "\204.46\377\1\346\347\347\377\206\350\354\340\377\1BHJ\377\204.46\377" \
+ "\1\251\253\254\377\224\350\354\340\377\1txz\377\210.46\377\2""7=\77\377" \
+ "8>\77\377\210.46\377\1txz\377\224\350\354\340\377\1SXY\377\206.46\377" \
+ "\1\251\253\254\377\224\350\354\340\377\1GLN\377\217.46\377\1\320\322" \
+ "\322\377\222\350\354\340\377\2\276\300\301\3775;=\377\221.46\377\1@F" \
+ "G\377\230\350\354\340\377\204.46\377\1SXY\377\377\350\354\340\377\312" \
+ "\350\354\340\377\1\235\237\240\377\204.46\377\1\265\267\270\377\236\350" \
+ "\354\340\377\1kpq\377\204.46\377\1\346\347\347\377\206\350\354\340\377" \
+ "\1\246\251\252\377\204.46\377\1AFH\377\225\350\354\340\377\2\232\235" \
+ "\236\377068\377\216.46\377\2""068\377\232\235\236\377\225\350\354\340" \
+ "\377\1X]^\377\205.46\377\1LQS\377\225\350\354\340\377\1GLN\377\217.4" \
+ "6\377\1\316\317\320\377\223\350\354\340\377\2\324\325\325\377NSU\377" \
+ "\220.46\377\2""068\377\321\322\323\377\227\350\354\340\377\204.46\377" \
+ "\1SXY\377\377\350\354\340\377\312\350\354\340\377\1\235\237\240\377\204" \
+ ".46\377\1\265\267\270\377\236\350\354\340\377\1kpq\377\204.46\377\1\346" \
+ "\347\347\377\207\350\354\340\377\1GLN\377\204.46\377\1\226\231\232\377" \
+ "\225\350\354\340\377\2\317\320\320\377`ef\377\214.46\377\2bgh\377\317" \
+ "\321\321\377\226\350\354\340\377\1_de\377\204.46\377\2:@B\377\332\333" \
+ "\334\377\225\350\354\340\377\1GLN\377\217.46\377\1\316\317\320\377\225" \
+ "\350\354\340\377\2\236\241\242\377BGI\377\214.46\377\3""8>\77\377~\201" \
+ "\202\377\335\336\337\377\230\350\354\340\377\204.46\377\1SXY\377\377" \
+ "\350\354\340\377\312\350\354\340\377\1\235\237\240\377\204.46\377\1\265" \
+ "\267\270\377\236\350\354\340\377\1kpq\377\204.46\377\1\346\347\347\377" \
+ "\207\350\354\340\377\1\254\257\257\377\204.46\377\2""8>\77\377\352\354" \
+ "\350\377\226\350\354\340\377\3\311\312\313\377\200\204\205\377EJL\377" \
+ "\206.46\377\3EJL\377\203\207\210\377\313\314\315\377\230\350\354\340" \
+ "\377\1_de\377\202.46\377\3/57\377fjl\377\342\343\343\377\226\350\354" \
+ "\340\377\1SXY\377\217<BC\377\1\307\311\311\377\227\350\354\340\377\4" \
+ "\275\277\300\377~\201\202\377OTV\377068\377\204.46\377\4""39;\377QVX" \
+ "\377\201\204\206\377\270\272\272\377\233\350\354\340\377\204.46\377\1" \
+ "SXY\377\377\350\354\340\377\377\350\354\340\377\234\350\354\340\377\2" \
+ "\345\346\346\377\317\321\321\377\202\275\277\300\377\2\317\321\321\377" \
+ "\345\346\346\377\233\350\354\340\377\4\302\304\305\377\255\257\260\377" \
+ "\301\302\303\377\346\346\347\377\304\350\354\340\377\4\346\347\347\377" \
+ "\327\330\330\377\335\336\337\377\347\350\350\377\377\350\354\340\377" \
+ "\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350" \
+ "\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340" \
+ "\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377" \
+ "\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354" \
+ "\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377" \
+ "\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350" \
+ "\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340" \
+ "\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377" \
+ "\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354" \
+ "\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377" \
+ "\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350" \
+ "\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340" \
+ "\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377" \
+ "\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354" \
+ "\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377" \
+ "\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350" \
+ "\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340" \
+ "\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377" \
+ "\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354" \
+ "\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377" \
+ "\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350" \
+ "\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340" \
+ "\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377" \
+ "\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354" \
+ "\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377" \
+ "\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350" \
+ "\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340" \
+ "\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377" \
+ "\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354" \
+ "\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377" \
+ "\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350" \
+ "\354\340\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340" \
+ "\377\377\350\354\340\377\377\350\354\340\377\377\350\354\340\377\377" \
+ "\350\354\340\377\377\350\354\340\377\246\350\354\340\377")
+
+
diff --git a/meta/recipes-core/psplash/psplash_svn.bb b/meta/recipes-core/psplash/psplash_svn.bb
index 1ca5cf6dff..0443fbb7c1 100644
--- a/meta/recipes-core/psplash/psplash_svn.bb
+++ b/meta/recipes-core/psplash/psplash_svn.bb
@@ -5,11 +5,12 @@ SECTION = "base"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://psplash.h;md5=a87c39812c1e37f3451567cc29a29c8f"
-PV = "0.0+svnr${SRCREV}"
-PR = "r5"
+PV = "0.0+svnr${SRCPV}"
+PR = "r6"
SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=psplash;proto=http \
- file://psplash-init"
+ file://psplash-init \
+ file://psplash-poky-img.h"
S = "${WORKDIR}/psplash"
@@ -17,6 +18,10 @@ inherit autotools pkgconfig update-rc.d
FILES_${PN} += "/mnt/.psplash"
+do_configure_prepend () {
+ cp -f ${WORKDIR}/psplash-poky-img.h ${S}/
+}
+
do_install_prepend() {
install -d ${D}/mnt/.psplash/
install -d ${D}${sysconfdir}/init.d/
diff --git a/meta/recipes-core/sysfsutils/sysfsutils-2.1.0/sysfsutils-2.0.0-class-dup.patch b/meta/recipes-core/sysfsutils/sysfsutils-2.1.0/sysfsutils-2.0.0-class-dup.patch
new file mode 100644
index 0000000000..76597fb654
--- /dev/null
+++ b/meta/recipes-core/sysfsutils/sysfsutils-2.1.0/sysfsutils-2.0.0-class-dup.patch
@@ -0,0 +1,21 @@
+This patch is from the Fedora Core 9 sysfsutils-2.1.0-3.fc9 package.
+
+It fixes a problem in the upstream package where not all devices
+will be returned by the function.
+
+The package License indicates this is GPLv2 licensed.
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+diff -puN lib/sysfs_class.c~sysfsutils_class_dup lib/sysfs_class.c
+--- sysfsutils-2.1.0/lib/sysfs_class.c~sysfsutils_class_dup 2006-09-07 17:01:26.000000000 -0500
++++ sysfsutils-2.1.0-bjking1/lib/sysfs_class.c 2006-09-07 17:01:26.000000000 -0500
+@@ -66,7 +66,7 @@ static int cdev_name_equal(void *a, void
+ return 0;
+
+ if (strncmp((char *)a, ((struct sysfs_class_device *)b)->name,
+- strlen((char *)a)) == 0)
++ SYSFS_NAME_LEN) == 0)
+ return 1;
+
+ return 0;
diff --git a/meta/recipes-core/sysfsutils/sysfsutils_2.1.0.bb b/meta/recipes-core/sysfsutils/sysfsutils_2.1.0.bb
index 26577f2124..5343f6446b 100644
--- a/meta/recipes-core/sysfsutils/sysfsutils_2.1.0.bb
+++ b/meta/recipes-core/sysfsutils/sysfsutils_2.1.0.bb
@@ -8,9 +8,11 @@ LICENSE_libsysfs = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=3d06403ea54c7574a9e581c6478cc393 \
file://cmd/GPL;md5=d41d4e2e1e108554e0388ea4aecd8d27 \
file://lib/LGPL;md5=b75d069791103ffe1c0d6435deeff72e"
-PR = "r0"
+PR = "r1"
-SRC_URI = "${SOURCEFORGE_MIRROR}/linux-diag/sysfsutils-${PV}.tar.gz"
+SRC_URI = "${SOURCEFORGE_MIRROR}/linux-diag/sysfsutils-${PV}.tar.gz \
+ file://sysfsutils-2.0.0-class-dup.patch \
+ "
SRC_URI[md5sum] = "14e7dcd0436d2f49aa403f67e1ef7ddc"
SRC_URI[sha256sum] = "e865de2c1f559fff0d3fc936e660c0efaf7afe662064f2fb97ccad1ec28d208a"
diff --git a/meta/recipes-core/tasks/task-cross-canadian.bb b/meta/recipes-core/tasks/task-cross-canadian.bb
index 7170faaa96..1bb2b57cb3 100644
--- a/meta/recipes-core/tasks/task-cross-canadian.bb
+++ b/meta/recipes-core/tasks/task-cross-canadian.bb
@@ -4,6 +4,8 @@ PR = "r0"
LICENSE = "MIT"
ALLOW_EMPTY = "1"
+LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
+ file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
inherit cross-canadian
PACKAGES = "${PN}"
@@ -12,5 +14,6 @@ RDEPENDS_${PN} = "\
binutils-cross-canadian-${TRANSLATED_TARGET_ARCH} \
gdb-cross-canadian-${TRANSLATED_TARGET_ARCH} \
gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} \
+ meta-environment-${TRANSLATED_TARGET_ARCH} \
"
diff --git a/meta/recipes-core/tasks/task-poky-sdk.bb b/meta/recipes-core/tasks/task-poky-sdk.bb
index 758cc2e64f..8d5455a3c9 100644
--- a/meta/recipes-core/tasks/task-poky-sdk.bb
+++ b/meta/recipes-core/tasks/task-poky-sdk.bb
@@ -7,7 +7,7 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
DEPENDS = "task-poky"
-PR = "r6"
+PR = "r7"
ALLOW_EMPTY = "1"
#PACKAGEFUNCS =+ 'generate_sdk_pkgs'
@@ -43,6 +43,8 @@ RDEPENDS_task-poky-sdk = "\
quilt \
less \
distcc \
+ ldd \
+ file \
tcl"
#python generate_sdk_pkgs () {
diff --git a/meta/recipes-core/tasks/task-poky-tools.bb b/meta/recipes-core/tasks/task-poky-tools.bb
index e507ce46dd..f009a75ec9 100644
--- a/meta/recipes-core/tasks/task-poky-tools.bb
+++ b/meta/recipes-core/tasks/task-poky-tools.bb
@@ -49,6 +49,7 @@ RRECOMMENDS_task-poky-tools-profile = "\
perf \
trace-cmd \
kernel-module-oprofile \
+ blktrace \
sysprof \
"
@@ -59,11 +60,11 @@ RRECOMMENDS_task-poky-tools-profile = "\
# qemux86/qemux86-64/qemuppc/emenlow/atom-pc since upstream liburcu
# (which is required by lttng-ust) may not build on other platforms, like
# MIPS and qemu ARMv5te that poky uses now.
-RDEPENDS_task-poky-tools-profile_append_qemux86 = " valgrind lttng-ust"
-RDEPENDS_task-poky-tools-profile_append_qemux86-64 = " lttng-ust"
-RDEPENDS_task-poky-tools-profile_append_qemuppc = " lttng-ust"
-RDEPENDS_task-poky-tools-profile_append_emenlow = " lttng-ust"
-RDEPENDS_task-poky-tools-profile_append_atom-pc = " lttng-ust"
+RDEPENDS_task-poky-tools-profile_append_qemux86 = " valgrind lttng-ust systemtap"
+RDEPENDS_task-poky-tools-profile_append_qemux86-64 = " lttng-ust systemtap"
+RDEPENDS_task-poky-tools-profile_append_qemuppc = " lttng-ust systemtap"
+RDEPENDS_task-poky-tools-profile_append_emenlow = " lttng-ust systemtap"
+RDEPENDS_task-poky-tools-profile_append_atom-pc = " lttng-ust systemtap"
RDEPENDS_task-poky-tools-testapps = "\
blktool \
diff --git a/meta/recipes-core/tasks/task-sdk-host.bb b/meta/recipes-core/tasks/task-sdk-host.bb
index 7bf445386a..1837d9a0cf 100644
--- a/meta/recipes-core/tasks/task-sdk-host.bb
+++ b/meta/recipes-core/tasks/task-sdk-host.bb
@@ -3,10 +3,13 @@
#
DESCRIPTION = "Host packages for the standalone SDK or external toolchain"
-PR = "r9"
+PR = "r10"
LICENSE = "MIT"
ALLOW_EMPTY = "1"
+LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
+ file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
inherit nativesdk
PACKAGES = "${PN}"
@@ -18,6 +21,7 @@ RDEPENDS_${PN} = "\
pseudo-nativesdk \
unfs-server-nativesdk \
opkg-nativesdk \
+ libtool-nativesdk \
"
RDEPENDS_${PN}_darwin8 = "\
diff --git a/meta/recipes-core/util-linux/util-linux-2.17.2/util-linux-ng-2.16-mount_lock_path.patch b/meta/recipes-core/util-linux/util-linux-2.17.2/util-linux-ng-2.16-mount_lock_path.patch
new file mode 100644
index 0000000000..8e79d8b5fe
--- /dev/null
+++ b/meta/recipes-core/util-linux/util-linux-2.17.2/util-linux-ng-2.16-mount_lock_path.patch
@@ -0,0 +1,25 @@
+The FHS indicates that /etc must be capable of being mounted R/O.
+
+The FHS also indicates that lock files belong in /var/lock, and /var must
+be R/W as soon as possible during boot.
+
+This patch moves the mtab lock file from the potentially R/O /etc, to the
+R/W /var/lock area. This lock file is used when mounting disks and making
+other mount adjustments. The _PATH_MOUNTED_TMP is not adjusted, as failing
+to write to this file does not cause any functional limitations.
+
+(Note, if /etc is R/O, then /etc/mtab should be a symlink to /proc/mounts)
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+--- util-linux-ng-2.16/include/pathnames.h.orig
++++ util-linux-ng-2.16/include/pathnames.h
+@@ -90,7 +90,7 @@
+ # endif
+ #endif
+
+-#define _PATH_MOUNTED_LOCK _PATH_MOUNTED "~"
++#define _PATH_MOUNTED_LOCK "/var/lock/mtab~"
+ #define _PATH_MOUNTED_TMP _PATH_MOUNTED ".tmp"
+
+ #ifndef _PATH_DEV
diff --git a/meta/recipes-core/util-linux/util-linux.inc b/meta/recipes-core/util-linux/util-linux.inc
index 53d84632c9..551e3c926a 100644
--- a/meta/recipes-core/util-linux/util-linux.inc
+++ b/meta/recipes-core/util-linux/util-linux.inc
@@ -15,10 +15,10 @@ LIC_FILES_CHKSUM = "file://README.licensing;md5=1530e36fe1304d4535513de90a290df9
file://licenses/COPYING.UCB;md5=263860f8968d8bafa5392cab74285262 \
file://getopt/COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
-DEPENDS = "udev zlib ncurses virtual/libintl gettext"
+DEPENDS = "zlib ncurses virtual/libintl"
DEPENDS_virtclass-native = "zlib-native ncurses-native lzo-native gettext-native"
-inherit autotools
+inherit autotools gettext
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/utils/util-linux-ng/v${MAJOR_VERSION}/util-linux-ng-${PV}.tar.bz2 \
file://MCONFIG \
@@ -27,7 +27,11 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/utils/util-linux-ng/v${MAJOR_VERSION}/u
file://make_include \
"
-PACKAGES_prepend = "util-linux-fdisk util-linux-cfdisk util-linux-sfdisk util-linux-swaponoff util-linux-losetup util-linux-umount util-linux-mount util-linux-readprofile "
+PACKAGES_prepend = "util-linux-fdisk util-linux-cfdisk util-linux-sfdisk util-linux-swaponoff \
+ util-linux-losetup util-linux-umount util-linux-mount util-linux-readprofile \
+ util-linux-libblkid util-linux-libblkid-dev util-linux-libuuid util-linux-libuuid-dev \
+ util-linux-lscpu \
+ "
PACKAGES_virtclass-native = ""
@@ -37,16 +41,22 @@ EXTRA_OECONF = "--disable-use-tty-group --disable-makeinstall-chown --enable-elv
--enable-mesg --enable-partx --enable-raw --enable-rdev --enable-reset \
--disable-login-utils --enable-write --enable-arch --enable-mount --with-fsprobe=builtin --enable-libuuid --enable-libblkid --enable-fsck"
-FILES_${PN}-doc += "/usr/share/getopt/getopt-*.*"
+FILES_${PN}-doc += "${datadir}/getopt/getopt-*.*"
-FILES_util-linux-fdisk = "/sbin/fdisk.${PN}"
-FILES_util-linux-cfdisk = "/sbin/cfdisk"
-FILES_util-linux-sfdisk = "/usr/sbin/sfdisk"
-FILES_util-linux-swaponoff = "/sbin/swapon.${PN} /usr/sbin/swapoff.${PN}"
-FILES_util-linux-losetup = "/sbin/losetup.${PN}"
-FILES_util-linux-mount = "/bin/mount.${PN}"
-FILES_util-linux-umount = "/bin/umount.${PN}"
-FILES_util-linux-readprofile = "/sbin/readprofile"
+FILES_util-linux-fdisk = "${base_sbindir}/fdisk.${PN}"
+FILES_util-linux-cfdisk = "${base_sbindir}/cfdisk"
+FILES_util-linux-sfdisk = "${sbindir}/sfdisk"
+FILES_util-linux-swaponoff = "${base_sbindir}/swapon.${PN} ${sbindir}/swapoff.${PN}"
+FILES_util-linux-losetup = "${base_sbindir}/losetup.${PN}"
+FILES_util-linux-mount = "${base_bindir}/mount.${PN}"
+FILES_util-linux-umount = "${base_bindir}/umount.${PN}"
+FILES_util-linux-readprofile = "${base_sbindir}/readprofile"
+FILES_util-linux-lscpu = "${bindir}/lscpu"
+
+FILES_util-linux-libblkid = "${libdir}/libblkid.so.*"
+FILES_util-linux-libblkid-dev = "${libdir}/libblkid.so ${libdir}/libblkid.a ${libdir}/libblkid.la ${includedir}/blkid"
+FILES_util-linux-libuuid = "${libdir}/libuuid.so.*"
+FILES_util-linux-libuuid-dev = "${libdir}/libuuid.so ${libdir}/libuuid.a ${libdir}/libuuid.la ${includedir}/uuid"
RRECOMMENDS_${PN} = "util-linux-fdisk util-linux-cfdisk util-linux-sfdisk util-linux-mount util-linux-readprofile "
RDEPENDS_${PN} = "util-linux-umount util-linux-swaponoff util-linux-losetup"
@@ -142,11 +152,19 @@ do_install () {
install -d ${D}${sysconfdir}/default/
echo 'MOUNTALL="-t nonfs,nosmbfs,noncpfs"' > ${D}${sysconfdir}/default/mountall
- ln -sf ${sbindir}/swapon ${D}${sbindir}/swapoff.${PN}
- ln -sf ${sbindir}/shutdown ${D}${sbindir}/reboot.${PN}
- ln -sf ${sbindir}/shutdown ${D}${sbindir}/halt.${PN}
- ln -sf ${sbindir}/shutdown ${D}${sbindir}/fastboot
- ln -sf ${sbindir}/shutdown ${D}${sbindir}/fasthalt
+ # note ${PN} in swapon.${PN}, swapon is an alternative link that is
+ # not guaranteed to provide multiple functions, similar for shutdown
+ ln -sf swapon.${PN} ${D}${base_sbindir}/swapoff.${PN}
+ ln -sf shutdown.${PN} ${D}${base_sbindir}/reboot.${PN}
+ ln -sf shutdown.${PN} ${D}${base_sbindir}/halt.${PN}
+ ln -sf shutdown.${PN} ${D}${base_sbindir}/fastboot
+ ln -sf shutdown.${PN} ${D}${base_sbindir}/fasthalt
+
+ rm -f ${D}${sbindir}/halt
+ rm -f ${D}${sbindir}/reboot
+ rm -f ${D}${sbindir}/fastboot
+ rm -f ${D}${sbindir}/fasthalt
+ rm -f ${D}${sbindir}/swapoff
}
pkg_postinst_${PN} () {
diff --git a/meta/recipes-core/util-linux/util-linux_2.17.2.bb b/meta/recipes-core/util-linux/util-linux_2.17.2.bb
index 9b344d4de2..e0904db069 100644
--- a/meta/recipes-core/util-linux/util-linux_2.17.2.bb
+++ b/meta/recipes-core/util-linux/util-linux_2.17.2.bb
@@ -1,9 +1,10 @@
MAJOR_VERSION = "2.17"
require util-linux.inc
-PR="r1"
+PR = "r5"
SRC_URI += "file://uclibc-compile.patch \
- file://util-linux-ng-replace-siginterrupt.patch"
+ file://util-linux-ng-replace-siginterrupt.patch \
+ file://util-linux-ng-2.16-mount_lock_path.patch"
SRC_URI[md5sum] = "4635725a3eef1c57090bac8ea5e082e6"
SRC_URI[sha256sum] = "c9ae801b6a5ab20b7749a278a8bf6830ef53adc5e8b7eb0ac1a9f410c774118f"
diff --git a/meta/recipes-devtools/apt/apt-0.7.14/use-host.patch b/meta/recipes-devtools/apt/apt-0.7.14/use-host.patch
index 894a697661..09698a6a40 100644
--- a/meta/recipes-devtools/apt/apt-0.7.14/use-host.patch
+++ b/meta/recipes-devtools/apt/apt-0.7.14/use-host.patch
@@ -3,11 +3,11 @@
configure.in | 2 +-
2 files changed, 4 insertions(+), 2 deletions(-)
+Index: apt-0.7.14/buildlib/sizetable
+===================================================================
--- apt-0.7.14.orig/buildlib/sizetable
+++ apt-0.7.14/buildlib/sizetable
-@@ -9,16 +9,19 @@
- #
- # This is used primarily for the MD5 algorithm.
+@@ -11,6 +11,9 @@
# The format is:-
# CPU endian sizeof: char, int, short, long
i386 little 1 4 2 4
@@ -17,21 +17,19 @@
armeb big 1 4 2 4
arm little 1 4 2 4
alpha little 1 4 2 8
- mipsel little 1 4 2 4
- sparc big 1 4 2 4
- sparc64 big 1 4 2 8
- m68k big 1 4 2 4
+@@ -21,4 +24,5 @@ m68k big 1 4 2 4
powerpc big 1 4 2 4
mips big 1 4 2 4
hppa big 1 4 2 4
-m32r big 1 4 2 4
\ No newline at end of file
+m32r big 1 4 2 4
++x86_64 little 1 4 2 8
+Index: apt-0.7.14/configure.in
+===================================================================
--- apt-0.7.14.orig/configure.in
+++ apt-0.7.14/configure.in
-@@ -86,11 +86,11 @@ AC_SUBST(BDBLIB)
- dnl Converts the ARCH to be something singular for this general CPU family
- dnl This is often the dpkg architecture string.
+@@ -88,7 +88,7 @@ dnl This is often the dpkg architecture
dnl First check against the full canonical canoncial-system-type in $target
dnl and if that fails, just look for the cpu
AC_MSG_CHECKING(debian architecture)
@@ -40,5 +38,3 @@
if test "x$archset" = "x"; then
AC_MSG_ERROR([failed: use --host= or output from dpkg-architecture])
fi
- AC_MSG_RESULT($archset)
- AC_DEFINE_UNQUOTED(COMMON_ARCH,"$archset")
diff --git a/meta/recipes-devtools/apt/apt-native_0.7.14.bb b/meta/recipes-devtools/apt/apt-native_0.7.14.bb
index f77f81790f..b1bd55b2cf 100644
--- a/meta/recipes-devtools/apt/apt-native_0.7.14.bb
+++ b/meta/recipes-devtools/apt/apt-native_0.7.14.bb
@@ -9,3 +9,5 @@ SRC_URI += "file://nodoc.patch \
SRC_URI[md5sum] = "19efa18fb1ef20c58b9b44e94258b814"
SRC_URI[sha256sum] = "8fc06effaf8a4e4333308eedcdc6840f1c8056f2e924210f151dfc076bcd4045"
+
+LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=0636e73ff0215e8d672dc4c32c317bb3"
diff --git a/meta/recipes-devtools/apt/apt_0.7.14.bb b/meta/recipes-devtools/apt/apt_0.7.14.bb
index 54096ef6a0..aa155d9d47 100644
--- a/meta/recipes-devtools/apt/apt_0.7.14.bb
+++ b/meta/recipes-devtools/apt/apt_0.7.14.bb
@@ -1,12 +1,12 @@
DEPENDS = "curl db"
-RDEPENDS = "dpkg"
+RDEPENDS_${PN} = "dpkg"
LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=0636e73ff0215e8d672dc4c32c317bb3"
require apt.inc
-PR = "r3"
+PR = "r6"
SRC_URI += "file://nodoc.patch \
- file://includes-fix.patch"
+ file://includes-fix.patch "
SRC_URI[md5sum] = "19efa18fb1ef20c58b9b44e94258b814"
SRC_URI[sha256sum] = "8fc06effaf8a4e4333308eedcdc6840f1c8056f2e924210f151dfc076bcd4045"
diff --git a/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-2.16.1-e300c2c3.patch b/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-2.16.1-e300c2c3.patch
deleted file mode 100644
index dfe9b18e17..0000000000
--- a/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-2.16.1-e300c2c3.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Adds support for Freescale Power architecture e300c2 and e300c3 cores.
-http://www.bitshrine.org/gpp/tc-fsl-x86lnx-e300c3-nptl-4.0.2-2.src.rpm
-
-Leon Woestenberg <leonw@mailcan.com>
-
-Index: binutils-2.19.51.0.3/opcodes/ppc-dis.c
-===================================================================
---- binutils-2.19.51.0.3.orig/opcodes/ppc-dis.c 2009-04-16 00:38:45.000000000 -0700
-+++ binutils-2.19.51.0.3/opcodes/ppc-dis.c 2009-04-16 00:43:56.000000000 -0700
-@@ -132,6 +132,8 @@
- | PPC_OPCODE_POWER6 | PPC_OPCODE_POWER7 | PPC_OPCODE_ALTIVEC
- | PPC_OPCODE_VSX),
- 0 },
-+ { "pmr", (PPC_OPCODE_PMR),
-+ 0 },
- { "ppc", (PPC_OPCODE_PPC | PPC_OPCODE_CLASSIC | PPC_OPCODE_32),
- 0 },
- { "ppc32", (PPC_OPCODE_PPC | PPC_OPCODE_CLASSIC | PPC_OPCODE_32),
diff --git a/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-libtool.patch b/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-libtool.patch
deleted file mode 100644
index 61517d1d4c..0000000000
--- a/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-libtool.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-This is because libdir has a trailing slash which breaks the comparision.
-
-RP 2/1/10
-
-Index: binutils-2.20.1/ltmain.sh
-===================================================================
---- binutils-2.20.1.orig/ltmain.sh 2009-09-01 00:59:32.000000000 +0800
-+++ binutils-2.20.1/ltmain.sh 2010-07-29 09:41:14.000000000 +0800
-@@ -2156,8 +2156,12 @@
- dir="$dir$objdir"
-
- if test -n "$relink_command"; then
-+ # Strip any trailing slash from the destination.
-+ func_stripname '' '/' "$libdir"
-+ destlibdir=$func_stripname_result
-+
- # Determine the prefix the user has applied to our future dir.
-- inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
-+ inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$destlibdir\$%%"`
-
- # Don't allow the user to place us outside of our expected
- # location b/c this prevents finding dependent libraries that
-@@ -5570,8 +5574,14 @@
- absdir="$abs_ladir"
- libdir="$abs_ladir"
- else
-- dir="$libdir"
-- absdir="$libdir"
-+ # Adding 'libdir' from the .la file to our library search paths
-+ # breaks crosscompilation horribly. We cheat here and don't add
-+ # it, instead adding the path where we found the .la. -CL
-+ dir="$abs_ladir"
-+ absdir="$abs_ladir"
-+ libdir="$abs_ladir"
-+ #dir="$libdir"
-+ #absdir="$libdir"
- fi
- test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
- else
-@@ -5942,8 +5952,6 @@
- add="$libdir/$linklib"
- fi
- else
-- # We cannot seem to hardcode it, guess we'll fake it.
-- add_dir="-L$libdir"
- # Try looking first in the location we're being installed to.
- if test -n "$inst_prefix_dir"; then
- case $libdir in
-@@ -6089,7 +6097,17 @@
- fi
- ;;
- *)
-- path="-L$absdir/$objdir"
-+ # OE sets installed=no in staging. We need to look in $objdir and $absdir,
-+ # preferring $objdir. RP 31/04/2008
-+ if test -f "$absdir/$objdir/$depdepl" ; then
-+ depdepl="$absdir/$objdir/$depdepl"
-+ path="-L$absdir/$objdir"
-+ elif test -f "$absdir/$depdepl" ; then
-+ depdepl="$absdir/$depdepl"
-+ path="-L$absdir"
-+ else
-+ path="-L$absdir/$objdir"
-+ fi
- ;;
- esac
- else
diff --git a/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-mips-pie.patch b/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-mips-pie.patch
deleted file mode 100644
index c71f0ad4db..0000000000
--- a/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-mips-pie.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-# "-fPIE" always triggers segmentation fault in ld.so.1 on mips platform,
-# which was first saw on dbus-daemon. Below borrow the binutils fix from
-# binutils bugzilla:
-#
-# http://sourceware.org/bugzilla/show_bug.cgi?id=10858
-#
-# Its commit message says:
-# * elfxx-mips.c (mips_elf_create_dynamic_relocation): Use section
-# sym dynindx for relocs against defined syms in PIEs.
-#
-# It's in upstream CVS now (rev 1.267), but not in current release
-#
-# By Kevin Tian <kevin.tian@intel.com>, 2010-07-15
-
-diff --git a/elfxx-mips.c b/elfxx-mips.c
-index 3a1c8ba..f6c2c1c 100644
---- binutils-2.20.1.orig/bfd/elfxx-mips.c
-+++ binutils-2.20.1/bfd/elfxx-mips.c
-@@ -5688,9 +5688,7 @@ mips_elf_create_dynamic_relocation (bfd *output_bfd,
-
- /* We must now calculate the dynamic symbol table index to use
- in the relocation. */
-- if (h != NULL
-- && (!h->root.def_regular
-- || (info->shared && !info->symbolic && !h->root.forced_local)))
-+ if (h != NULL && ! SYMBOL_REFERENCES_LOCAL (info, &h->root))
- {
- indx = h->root.dynindx;
- if (SGI_COMPAT (output_bfd))
diff --git a/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-poison.patch b/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-poison.patch
deleted file mode 100644
index c2f19276f8..0000000000
--- a/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-poison.patch
+++ /dev/null
@@ -1,253 +0,0 @@
-This patch is recived from Mark Hatle
-
-purpose: warn for uses of system directories when cross linking
-
-Signed-Off-By: Mark Hatle <mark.hatle@windriver.com>
-
-Code Merged from Sourcery G++ binutils 2.19 - 4.4-277
-
-2008-07-02 Joseph Myers <joseph@codesourcery.com>
-
- ld/
- * ld.h (args_type): Add error_poison_system_directories.
- * ld.texinfo (--error-poison-system-directories): Document.
- * ldfile.c (ldfile_add_library_path): Check
- command_line.error_poison_system_directories.
- * ldmain.c (main): Initialize
- command_line.error_poison_system_directories.
- * lexsup.c (enum option_values): Add
- OPTION_ERROR_POISON_SYSTEM_DIRECTORIES.
- (ld_options): Add --error-poison-system-directories.
- (parse_args): Handle new option.
-
-2007-06-13 Joseph Myers <joseph@codesourcery.com>
-
- ld/
- * config.in: Regenerate.
- * ld.h (args_type): Add poison_system_directories.
- * ld.texinfo (--no-poison-system-directories): Document.
- * ldfile.c (ldfile_add_library_path): Check
- command_line.poison_system_directories.
- * ldmain.c (main): Initialize
- command_line.poison_system_directories.
- * lexsup.c (enum option_values): Add
- OPTION_NO_POISON_SYSTEM_DIRECTORIES.
- (ld_options): Add --no-poison-system-directories.
- (parse_args): Handle new option.
-
-2007-04-20 Joseph Myers <joseph@codesourcery.com>
-
- Merge from Sourcery G++ binutils 2.17:
-
- 2007-03-20 Joseph Myers <joseph@codesourcery.com>
- Based on patch by Mark Hatle <mark.hatle@windriver.com>.
- ld/
- * configure.in (--enable-poison-system-directories): New option.
- * configure, config.in: Regenerate.
- * ldfile.c (ldfile_add_library_path): If
- ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib,
- /usr/lib, /usr/local/lib or /usr/X11R6/lib.
-
-Index: binutils-2.20.1/ld/config.in
-===================================================================
---- binutils-2.20.1.orig/ld/config.in
-+++ binutils-2.20.1/ld/config.in
-@@ -4,6 +4,9 @@
- language is requested. */
- #undef ENABLE_NLS
-
-+/* Define to warn for use of native system library directories */
-+#undef ENABLE_POISON_SYSTEM_DIRECTORIES
-+
- /* Additional extension a shared object might have. */
- #undef EXTRA_SHLIB_EXTENSION
-
-Index: binutils-2.20.1/ld/configure.in
-===================================================================
---- binutils-2.20.1.orig/ld/configure.in
-+++ binutils-2.20.1/ld/configure.in
-@@ -69,6 +69,16 @@ AC_SUBST(use_sysroot)
- AC_SUBST(TARGET_SYSTEM_ROOT)
- AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
-
-+AC_ARG_ENABLE([poison-system-directories],
-+ AS_HELP_STRING([--enable-poison-system-directories],
-+ [warn for use of native system library directories]),,
-+ [enable_poison_system_directories=no])
-+if test "x${enable_poison_system_directories}" = "xyes"; then
-+ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
-+ [1],
-+ [Define to warn for use of native system library directories])
-+fi
-+
- AC_ARG_ENABLE([got],
- AS_HELP_STRING([--enable-got=<type>],
- [GOT handling scheme (target, single, negative, multigot)]),
-Index: binutils-2.20.1/ld/ld.h
-===================================================================
---- binutils-2.20.1.orig/ld/ld.h
-+++ binutils-2.20.1/ld/ld.h
-@@ -176,6 +176,14 @@ typedef struct {
- input files. */
- bfd_boolean accept_unknown_input_arch;
-
-+ /* If TRUE (the default) warn for uses of system directories when
-+ cross linking. */
-+ bfd_boolean poison_system_directories;
-+
-+ /* If TRUE (default FALSE) give an error for uses of system
-+ directories when cross linking instead of a warning. */
-+ bfd_boolean error_poison_system_directories;
-+
- /* Big or little endian as set on command line. */
- enum endian_enum endian;
-
-Index: binutils-2.20.1/ld/ld.texinfo
-===================================================================
---- binutils-2.20.1.orig/ld/ld.texinfo
-+++ binutils-2.20.1/ld/ld.texinfo
-@@ -2084,6 +2084,18 @@ string identifying the original linked f
-
- Passing @code{none} for @var{style} disables the setting from any
- @code{--build-id} options earlier on the command line.
-+
-+@kindex --no-poison-system-directories
-+@item --no-poison-system-directories
-+Do not warn for @option{-L} options using system directories such as
-+@file{/usr/lib} when cross linking. This option is intended for use
-+in chroot environments when such directories contain the correct
-+libraries for the target system rather than the host.
-+
-+@kindex --error-poison-system-directories
-+@item --error-poison-system-directories
-+Give an error instead of a warning for @option{-L} options using
-+system directories when cross linking.
- @end table
-
- @c man end
-Index: binutils-2.20.1/ld/ldfile.c
-===================================================================
---- binutils-2.20.1.orig/ld/ldfile.c
-+++ binutils-2.20.1/ld/ldfile.c
-@@ -120,6 +120,23 @@ ldfile_add_library_path (const char *nam
- {
- new_dirs->name = xstrdup (name);
- new_dirs->sysrooted = is_sysrooted_pathname (name, FALSE);
-+
-+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
-+ if (command_line.poison_system_directories
-+ && ((!strncmp (name, "/lib", 4))
-+ || (!strncmp (name, "/usr/lib", 8))
-+ || (!strncmp (name, "/usr/local/lib", 14))
-+ || (!strncmp (name, "/usr/X11R6/lib", 14))))
-+ {
-+ if (command_line.error_poison_system_directories)
-+ einfo (_("%X%P: error: library search path \"%s\" is unsafe for "
-+ "cross-compilation\n"), name);
-+ else
-+ einfo (_("%P: warning: library search path \"%s\" is unsafe for "
-+ "cross-compilation\n"), name);
-+ }
-+#endif
-+
- }
- }
-
-Index: binutils-2.20.1/ld/ldmain.c
-===================================================================
---- binutils-2.20.1.orig/ld/ldmain.c
-+++ binutils-2.20.1/ld/ldmain.c
-@@ -252,6 +252,8 @@ main (int argc, char **argv)
- command_line.warn_mismatch = TRUE;
- command_line.warn_search_mismatch = TRUE;
- command_line.check_section_addresses = -1;
-+ command_line.poison_system_directories = TRUE;
-+ command_line.error_poison_system_directories = FALSE;
-
- /* We initialize DEMANGLING based on the environment variable
- COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the
-Index: binutils-2.20.1/ld/lexsup.c
-===================================================================
---- binutils-2.20.1.orig/ld/lexsup.c
-+++ binutils-2.20.1/ld/lexsup.c
-@@ -166,7 +166,9 @@ enum option_values
- OPTION_WARN_SHARED_TEXTREL,
- OPTION_WARN_ALTERNATE_EM,
- OPTION_REDUCE_MEMORY_OVERHEADS,
-- OPTION_DEFAULT_SCRIPT
-+ OPTION_DEFAULT_SCRIPT,
-+ OPTION_NO_POISON_SYSTEM_DIRECTORIES,
-+ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES
- };
-
- /* The long options. This structure is used for both the option
-@@ -575,6 +577,14 @@ static const struct ld_option ld_options
- TWO_DASHES },
- { {"wrap", required_argument, NULL, OPTION_WRAP},
- '\0', N_("SYMBOL"), N_("Use wrapper functions for SYMBOL"), TWO_DASHES },
-+ { {"no-poison-system-directories", no_argument, NULL,
-+ OPTION_NO_POISON_SYSTEM_DIRECTORIES},
-+ '\0', NULL, N_("Do not warn for -L options using system directories"),
-+ TWO_DASHES },
-+ { {"error-poison-system-directories", no_argument, NULL,
-+ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES},
-+ '\0', NULL, N_("Give an error for -L options using system directories"),
-+ TWO_DASHES },
- };
-
- #define OPTION_COUNT ARRAY_SIZE (ld_options)
-@@ -1480,6 +1490,14 @@ parse_args (unsigned argc, char **argv)
- einfo (_("%P%X: --hash-size needs a numeric argument\n"));
- }
- break;
-+
-+ case OPTION_NO_POISON_SYSTEM_DIRECTORIES:
-+ command_line.poison_system_directories = FALSE;
-+ break;
-+
-+ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES:
-+ command_line.error_poison_system_directories = TRUE;
-+ break;
- }
- }
-
-diff -ur binutils-2.20.1.orig/ld/configure binutils-2.20.1/ld/configure
---- binutils-2.20.1.orig/ld/configure 2010-03-03 08:06:22.000000000 -0600
-+++ binutils-2.20.1/ld/configure 2010-09-30 11:19:35.776990594 -0500
-@@ -901,6 +904,7 @@
- enable_targets
- enable_64_bit_bfd
- with_sysroot
-+enable_poison_system_directories
- enable_got
- enable_werror
- enable_build_warnings
-@@ -1548,6 +1552,8 @@
- (and sometimes confusing) to the casual installer
- --enable-targets alternative target configurations
- --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes)
-+ --enable-poison-system-directories
-+ warn for use of native system library directories
- --enable-got=<type> GOT handling scheme (target, single, negative,
- multigot)
- --enable-werror treat compile warnings as errors
-@@ -4302,6 +4334,19 @@
-
-
-
-+# Check whether --enable-poison-system-directories was given.
-+if test "${enable_poison_system_directories+set}" = set; then :
-+ enableval=$enable_poison_system_directories;
-+else
-+ enable_poison_system_directories=no
-+fi
-+
-+if test "x${enable_poison_system_directories}" = "xyes"; then
-+
-+$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
-+
-+fi
-+
- # Check whether --enable-got was given.
- if test "${enable_got+set}" = set; then :
- enableval=$enable_got; case "${enableval}" in
diff --git a/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-uclibc-300-012_check_ldrunpath_length.patch b/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-uclibc-300-012_check_ldrunpath_length.patch
deleted file mode 100644
index 498651a90c..0000000000
--- a/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-uclibc-300-012_check_ldrunpath_length.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/sh -e
-## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
-## DP: cases where -rpath isn't specified. (#151024)
-
-if [ $# -ne 1 ]; then
- echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
- exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
- -patch) patch $patch_opts -p1 < $0;;
- -unpatch) patch $patch_opts -p1 -R < $0;;
- *)
- echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
- exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
---- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em 2004-05-21 23:12:58.000000000 +0100
-+++ binutils-2.15/ld/emultempl/elf32.em 2004-05-21 23:12:59.000000000 +0100
-@@ -692,6 +692,8 @@
- && command_line.rpath == NULL)
- {
- lib_path = (const char *) getenv ("LD_RUN_PATH");
-+ if ((lib_path) && (strlen (lib_path) == 0))
-+ lib_path = NULL;
- if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
- force))
- break;
-@@ -871,6 +873,8 @@
- rpath = command_line.rpath;
- if (rpath == NULL)
- rpath = (const char *) getenv ("LD_RUN_PATH");
-+ if ((rpath) && (strlen (rpath) == 0))
-+ rpath = NULL;
- if (! (bfd_elf_size_dynamic_sections
- (output_bfd, command_line.soname, rpath,
- command_line.filter_shlib,
diff --git a/meta/recipes-devtools/binutils/binutils-2.20.1/110-arm-eabi-conf.patch b/meta/recipes-devtools/binutils/binutils-2.21/110-arm-eabi-conf.patch
index 2623301da0..2623301da0 100644
--- a/meta/recipes-devtools/binutils/binutils-2.20.1/110-arm-eabi-conf.patch
+++ b/meta/recipes-devtools/binutils/binutils-2.21/110-arm-eabi-conf.patch
diff --git a/meta/recipes-devtools/binutils/binutils-2.21/binutils-2.19.1-ld-sysroot.patch b/meta/recipes-devtools/binutils/binutils-2.21/binutils-2.19.1-ld-sysroot.patch
new file mode 100644
index 0000000000..adcabb4f66
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils-2.21/binutils-2.19.1-ld-sysroot.patch
@@ -0,0 +1,37 @@
+http://sourceware.org/bugzilla/show_bug.cgi?id=10340
+
+Signed-off-by: Sven Rebhan <odinshorse@googlemail.com>
+
+Always try to prepend the sysroot prefix to absolute filenames first.
+
+Index: binutils-2.21/ld/ldfile.c
+===================================================================
+--- binutils-2.21.orig/ld/ldfile.c
++++ binutils-2.21/ld/ldfile.c
+@@ -372,18 +372,24 @@ ldfile_open_file_search (const char *arc
+ directory first. */
+ if (! entry->is_archive)
+ {
+- if (entry->sysrooted && IS_ABSOLUTE_PATH (entry->filename))
++ /* For absolute pathnames, try to always open the file in the
++ sysroot first. If this fails, try to open the file at the
++ given location. */
++ entry->sysrooted = is_sysrooted_pathname(entry->filename, FALSE);
++ if (IS_ABSOLUTE_PATH (entry->filename) && ld_sysroot && ! entry->sysrooted)
+ {
+ char *name = concat (ld_sysroot, entry->filename,
+ (const char *) NULL);
+ if (ldfile_try_open_bfd (name, entry))
+ {
+ entry->filename = name;
++ entry->sysrooted = TRUE;
+ return TRUE;
+ }
+ free (name);
+ }
+- else if (ldfile_try_open_bfd (entry->filename, entry))
++
++ if (ldfile_try_open_bfd (entry->filename, entry))
+ {
+ entry->sysrooted = IS_ABSOLUTE_PATH (entry->filename)
+ && is_sysrooted_pathname (entry->filename, TRUE);
diff --git a/meta/recipes-devtools/binutils/binutils-2.21/binutils-poison.patch b/meta/recipes-devtools/binutils/binutils-2.21/binutils-poison.patch
new file mode 100644
index 0000000000..1fe713af8f
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils-2.21/binutils-poison.patch
@@ -0,0 +1,245 @@
+Patch originally created by Mark Hatle, forward-ported to
+binutils 2.21 by Scott Garman.
+
+purpose: warn for uses of system directories when cross linking
+
+Code Merged from Sourcery G++ binutils 2.19 - 4.4-277
+
+2008-07-02 Joseph Myers <joseph@codesourcery.com>
+
+ ld/
+ * ld.h (args_type): Add error_poison_system_directories.
+ * ld.texinfo (--error-poison-system-directories): Document.
+ * ldfile.c (ldfile_add_library_path): Check
+ command_line.error_poison_system_directories.
+ * ldmain.c (main): Initialize
+ command_line.error_poison_system_directories.
+ * lexsup.c (enum option_values): Add
+ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES.
+ (ld_options): Add --error-poison-system-directories.
+ (parse_args): Handle new option.
+
+2007-06-13 Joseph Myers <joseph@codesourcery.com>
+
+ ld/
+ * config.in: Regenerate.
+ * ld.h (args_type): Add poison_system_directories.
+ * ld.texinfo (--no-poison-system-directories): Document.
+ * ldfile.c (ldfile_add_library_path): Check
+ command_line.poison_system_directories.
+ * ldmain.c (main): Initialize
+ command_line.poison_system_directories.
+ * lexsup.c (enum option_values): Add
+ OPTION_NO_POISON_SYSTEM_DIRECTORIES.
+ (ld_options): Add --no-poison-system-directories.
+ (parse_args): Handle new option.
+
+2007-04-20 Joseph Myers <joseph@codesourcery.com>
+
+ Merge from Sourcery G++ binutils 2.17:
+
+ 2007-03-20 Joseph Myers <joseph@codesourcery.com>
+ Based on patch by Mark Hatle <mark.hatle@windriver.com>.
+ ld/
+ * configure.in (--enable-poison-system-directories): New option.
+ * configure, config.in: Regenerate.
+ * ldfile.c (ldfile_add_library_path): If
+ ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib,
+ /usr/lib, /usr/local/lib or /usr/X11R6/lib.
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+Signed-off-by: Scott Garman <scott.a.garman@intel.com>
+
+diff -urN binutils-2.21.orig//ld/config.in binutils-2.21/ld/config.in
+--- binutils-2.21.orig//ld/config.in 2010-11-05 03:34:27.000000000 -0700
++++ binutils-2.21/ld/config.in 2011-01-19 10:48:15.147301022 -0800
+@@ -4,6 +4,9 @@
+ language is requested. */
+ #undef ENABLE_NLS
+
++/* Define to warn for use of native system library directories */
++#undef ENABLE_POISON_SYSTEM_DIRECTORIES
++
+ /* Additional extension a shared object might have. */
+ #undef EXTRA_SHLIB_EXTENSION
+
+diff -urN binutils-2.21.orig//ld/configure binutils-2.21/ld/configure
+--- binutils-2.21.orig//ld/configure 2011-01-19 10:46:46.997571921 -0800
++++ binutils-2.21/ld/configure 2011-01-19 11:03:50.577832729 -0800
+@@ -768,6 +768,7 @@
+ enable_targets
+ enable_64_bit_bfd
+ with_sysroot
++enable_poison_system_directories
+ enable_gold
+ enable_got
+ enable_werror
+@@ -1418,6 +1419,8 @@
+ (and sometimes confusing) to the casual installer
+ --enable-targets alternative target configurations
+ --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes)
++ --enable-poison-system-directories
++ warn for use of native system library directories
+ --enable-gold[=ARG] build gold [ARG={default,yes,no}]
+ --enable-got=<type> GOT handling scheme (target, single, negative,
+ multigot)
+@@ -4203,7 +4206,18 @@
+ fi
+
+
++# Check whether --enable-poison-system-directories was given.
++if test "${enable_poison_system_directories+set}" = set; then :
++ enableval=$enable_poison_system_directories;
++else
++ enable_poison_system_directories=no
++fi
++
++if test "x${enable_poison_system_directories}" = "xyes"; then
+
++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
++
++fi
+
+ # Check whether --enable-got was given.
+ if test "${enable_got+set}" = set; then :
+diff -urN binutils-2.21.orig//ld/configure.in binutils-2.21/ld/configure.in
+--- binutils-2.21.orig//ld/configure.in 2010-11-23 05:50:32.000000000 -0800
++++ binutils-2.21/ld/configure.in 2011-01-19 10:50:57.378398946 -0800
+@@ -69,6 +69,16 @@
+ AC_SUBST(TARGET_SYSTEM_ROOT)
+ AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
+
++AC_ARG_ENABLE([poison-system-directories],
++ AS_HELP_STRING([--enable-poison-system-directories],
++ [warn for use of native system library directories]),,
++ [enable_poison_system_directories=no])
++if test "x${enable_poison_system_directories}" = "xyes"; then
++ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
++ [1],
++ [Define to warn for use of native system library directories])
++fi
++
+ dnl Use --enable-gold to decide if this linker should be the default.
+ dnl "install_as_default" is set to false if gold is the default linker.
+ dnl "installed_linker" is the installed BFD linker name.
+diff -urN binutils-2.21.orig//ld/ldfile.c binutils-2.21/ld/ldfile.c
+--- binutils-2.21.orig//ld/ldfile.c 2011-01-19 10:46:47.157553281 -0800
++++ binutils-2.21/ld/ldfile.c 2011-01-19 10:58:30.035468447 -0800
+@@ -124,6 +124,23 @@
+ {
+ new_dirs->name = xstrdup (name);
+ new_dirs->sysrooted = is_sysrooted_pathname (name, FALSE);
++
++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
++ if (command_line.poison_system_directories
++ && ((!strncmp (name, "/lib", 4))
++ || (!strncmp (name, "/usr/lib", 8))
++ || (!strncmp (name, "/usr/local/lib", 14))
++ || (!strncmp (name, "/usr/X11R6/lib", 14))))
++ {
++ if (command_line.error_poison_system_directories)
++ einfo (_("%X%P: error: library search path \"%s\" is unsafe for "
++ "cross-compilation\n"), name);
++ else
++ einfo (_("%P: warning: library search path \"%s\" is unsafe for "
++ "cross-compilation\n"), name);
++ }
++#endif
++
+ }
+ }
+
+diff -urN binutils-2.21.orig//ld/ld.h binutils-2.21/ld/ld.h
+--- binutils-2.21.orig//ld/ld.h 2009-11-26 05:45:25.000000000 -0800
++++ binutils-2.21/ld/ld.h 2011-01-19 10:52:54.814716478 -0800
+@@ -198,6 +198,14 @@
+ input files. */
+ bfd_boolean accept_unknown_input_arch;
+
++ /* If TRUE (the default) warn for uses of system directories when
++ cross linking. */
++ bfd_boolean poison_system_directories;
++
++ /* If TRUE (default FALSE) give an error for uses of system
++ directories when cross linking instead of a warning. */
++ bfd_boolean error_poison_system_directories;
++
+ /* Big or little endian as set on command line. */
+ enum endian_enum endian;
+
+diff -urN binutils-2.21.orig//ld/ldmain.c binutils-2.21/ld/ldmain.c
+--- binutils-2.21.orig//ld/ldmain.c 2010-11-05 00:20:07.000000000 -0700
++++ binutils-2.21/ld/ldmain.c 2011-01-19 10:59:18.579767697 -0800
+@@ -259,6 +259,8 @@
+ command_line.warn_search_mismatch = TRUE;
+ command_line.check_section_addresses = -1;
+ command_line.disable_target_specific_optimizations = -1;
++ command_line.poison_system_directories = TRUE;
++ command_line.error_poison_system_directories = FALSE;
+
+ /* We initialize DEMANGLING based on the environment variable
+ COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the
+diff -urN binutils-2.21.orig//ld/ld.texinfo binutils-2.21/ld/ld.texinfo
+--- binutils-2.21.orig//ld/ld.texinfo 2010-10-28 04:40:26.000000000 -0700
++++ binutils-2.21/ld/ld.texinfo 2011-01-19 10:56:04.452567113 -0800
+@@ -2133,6 +2133,18 @@
+
+ Passing @code{none} for @var{style} disables the setting from any
+ @code{--build-id} options earlier on the command line.
++
++@kindex --no-poison-system-directories
++@item --no-poison-system-directories
++Do not warn for @option{-L} options using system directories such as
++@file{/usr/lib} when cross linking. This option is intended for use
++in chroot environments when such directories contain the correct
++libraries for the target system rather than the host.
++
++@kindex --error-poison-system-directories
++@item --error-poison-system-directories
++Give an error instead of a warning for @option{-L} options using
++system directories when cross linking.
+ @end table
+
+ @c man end
+diff -urN binutils-2.21.orig//ld/lexsup.c binutils-2.21/ld/lexsup.c
+--- binutils-2.21.orig//ld/lexsup.c 2010-10-27 23:45:33.000000000 -0700
++++ binutils-2.21/ld/lexsup.c 2011-01-19 11:02:07.799898432 -0800
+@@ -175,6 +175,8 @@
+ OPTION_PLUGIN_OPT,
+ #endif /* ENABLE_PLUGINS */
+ OPTION_DEFAULT_SCRIPT,
++ OPTION_NO_POISON_SYSTEM_DIRECTORIES,
++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES
+ };
+
+ /* The long options. This structure is used for both the option
+@@ -603,6 +605,14 @@
+ TWO_DASHES },
+ { {"wrap", required_argument, NULL, OPTION_WRAP},
+ '\0', N_("SYMBOL"), N_("Use wrapper functions for SYMBOL"), TWO_DASHES },
++ { {"no-poison-system-directories", no_argument, NULL,
++ OPTION_NO_POISON_SYSTEM_DIRECTORIES},
++ '\0', NULL, N_("Do not warn for -L options using system directories"),
++ TWO_DASHES },
++ { {"error-poison-system-directories", no_argument, NULL,
++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES},
++ '\0', NULL, N_("Give an error for -L options using system directories"),
++ TWO_DASHES },
+ };
+
+ #define OPTION_COUNT ARRAY_SIZE (ld_options)
+@@ -1518,6 +1528,14 @@
+ einfo (_("%P%X: --hash-size needs a numeric argument\n"));
+ }
+ break;
++
++ case OPTION_NO_POISON_SYSTEM_DIRECTORIES:
++ command_line.poison_system_directories = FALSE;
++ break;
++
++ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES:
++ command_line.error_poison_system_directories = TRUE;
++ break;
+ }
+ }
+
diff --git a/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-uclibc-100-uclibc-conf.patch b/meta/recipes-devtools/binutils/binutils-2.21/binutils-uclibc-100-uclibc-conf.patch
index 8de04e0fe0..8de04e0fe0 100644
--- a/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-uclibc-100-uclibc-conf.patch
+++ b/meta/recipes-devtools/binutils/binutils-2.21/binutils-uclibc-100-uclibc-conf.patch
diff --git a/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-uclibc-300-001_ld_makefile_patch.patch b/meta/recipes-devtools/binutils/binutils-2.21/binutils-uclibc-300-001_ld_makefile_patch.patch
index 04a7e61e25..04a7e61e25 100644
--- a/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-uclibc-300-001_ld_makefile_patch.patch
+++ b/meta/recipes-devtools/binutils/binutils-2.21/binutils-uclibc-300-001_ld_makefile_patch.patch
diff --git a/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-uclibc-300-006_better_file_error.patch b/meta/recipes-devtools/binutils/binutils-2.21/binutils-uclibc-300-006_better_file_error.patch
index f337611edf..f337611edf 100644
--- a/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-uclibc-300-006_better_file_error.patch
+++ b/meta/recipes-devtools/binutils/binutils-2.21/binutils-uclibc-300-006_better_file_error.patch
diff --git a/meta/recipes-devtools/binutils/binutils-2.21/binutils-uclibc-300-012_check_ldrunpath_length.patch b/meta/recipes-devtools/binutils/binutils-2.21/binutils-uclibc-300-012_check_ldrunpath_length.patch
new file mode 100644
index 0000000000..b6f5a25ceb
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils-2.21/binutils-uclibc-300-012_check_ldrunpath_length.patch
@@ -0,0 +1,48 @@
+#!/bin/sh -e
+## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
+## DP: cases where -rpath isn't specified. (#151024)
+
+if [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+
+[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
+patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
+
+case "$1" in
+ -patch) patch $patch_opts -p1 < $0;;
+ -unpatch) patch $patch_opts -p1 -R < $0;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1;;
+esac
+
+exit 0
+
+@DPATCH@
+Index: src/ld/emultempl/elf32.em
+===================================================================
+--- src.orig/ld/emultempl/elf32.em 2009-09-23 06:54:28.000000000 -0700
++++ src/ld/emultempl/elf32.em 2009-10-06 10:58:16.883414592 -0700
+@@ -1237,6 +1237,8 @@ fragment <<EOF
+ && command_line.rpath == NULL)
+ {
+ lib_path = (const char *) getenv ("LD_RUN_PATH");
++ if ((lib_path) && (strlen (lib_path) == 0))
++ lib_path = NULL;
+ if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
+ force))
+ break;
+@@ -1463,6 +1465,8 @@ gld${EMULATION_NAME}_before_allocation (
+ rpath = command_line.rpath;
+ if (rpath == NULL)
+ rpath = (const char *) getenv ("LD_RUN_PATH");
++ if ((rpath) && (strlen (rpath) == 0))
++ rpath = NULL;
+
+ for (abfd = link_info.input_bfds; abfd; abfd = abfd->link_next)
+ {
diff --git a/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-uclibc-gas-needs-libm.patch b/meta/recipes-devtools/binutils/binutils-2.21/binutils-uclibc-gas-needs-libm.patch
index db838cf20c..db838cf20c 100644
--- a/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-uclibc-gas-needs-libm.patch
+++ b/meta/recipes-devtools/binutils/binutils-2.21/binutils-uclibc-gas-needs-libm.patch
diff --git a/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-x86_64_i386_biarch.patch b/meta/recipes-devtools/binutils/binutils-2.21/binutils-x86_64_i386_biarch.patch
index 4cd9e22438..4cd9e22438 100644
--- a/meta/recipes-devtools/binutils/binutils-2.20.1/binutils-x86_64_i386_biarch.patch
+++ b/meta/recipes-devtools/binutils/binutils-2.21/binutils-x86_64_i386_biarch.patch
diff --git a/meta/recipes-devtools/binutils/binutils-2.20.1/libiberty_path_fix.patch b/meta/recipes-devtools/binutils/binutils-2.21/libiberty_path_fix.patch
index 36a14d7a18..36a14d7a18 100644
--- a/meta/recipes-devtools/binutils/binutils-2.20.1/libiberty_path_fix.patch
+++ b/meta/recipes-devtools/binutils/binutils-2.21/libiberty_path_fix.patch
diff --git a/meta/recipes-devtools/binutils/binutils-2.21/libtool-2.4-update.patch b/meta/recipes-devtools/binutils/binutils-2.21/libtool-2.4-update.patch
new file mode 100644
index 0000000000..52c4928c8b
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils-2.21/libtool-2.4-update.patch
@@ -0,0 +1,18719 @@
+Index: binutils-2.21/libtool.m4
+===================================================================
+--- binutils-2.21.orig/libtool.m4 2010-01-09 13:11:31.000000000 -0800
++++ binutils-2.21/libtool.m4 2011-01-07 10:49:16.396101000 -0800
+@@ -1,7 +1,8 @@
+ # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+ #
+ # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+-# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
++# Inc.
+ # Written by Gordon Matzigkeit, 1996
+ #
+ # This file is free software; the Free Software Foundation gives
+@@ -10,7 +11,8 @@
+
+ m4_define([_LT_COPYING], [dnl
+ # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+-# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
++# Inc.
+ # Written by Gordon Matzigkeit, 1996
+ #
+ # This file is part of GNU Libtool.
+@@ -37,7 +39,7 @@
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ ])
+
+-# serial 56 LT_INIT
++# serial 57 LT_INIT
+
+
+ # LT_PREREQ(VERSION)
+@@ -92,7 +94,8 @@
+ LIBTOOL_DEPS="$ltmain"
+
+ # Always use our own libtool.
+-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
++LIBTOOL='$(SHELL) $(top_builddir)'
++LIBTOOL="$LIBTOOL/${host_alias}-libtool"
+ AC_SUBST(LIBTOOL)dnl
+
+ _LT_SETUP
+@@ -166,10 +169,13 @@
+ dnl
+ m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+ m4_require([_LT_CHECK_SHELL_FEATURES])dnl
++m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
+ m4_require([_LT_CMD_RELOAD])dnl
+ m4_require([_LT_CHECK_MAGIC_METHOD])dnl
++m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
+ m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+ m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
++m4_require([_LT_WITH_SYSROOT])dnl
+
+ _LT_CONFIG_LIBTOOL_INIT([
+ # See if we are running on zsh, and set the options which allow our
+@@ -199,7 +205,7 @@
+ esac
+
+ # Global variables:
+-ofile=libtool
++ofile=${host_alias}-libtool
+ can_build_shared=yes
+
+ # All known linkers require a `.a' archive for static linking (except MSVC,
+@@ -632,7 +638,7 @@
+ m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+ configured by $[0], generated by m4_PACKAGE_STRING.
+
+-Copyright (C) 2009 Free Software Foundation, Inc.
++Copyright (C) 2010 Free Software Foundation, Inc.
+ This config.lt script is free software; the Free Software Foundation
+ gives unlimited permision to copy, distribute and modify it."
+
+@@ -746,15 +752,12 @@
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
++ sed '$q' "$ltmain" >> "$cfgfile" \
++ || (rm -f "$cfgfile"; exit 1)
+
+- _LT_PROG_XSI_SHELLFNS
++ _LT_PROG_REPLACE_SHELLFNS
+
+- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- mv -f "$cfgfile" "$ofile" ||
++ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+ ],
+@@ -980,6 +983,8 @@
+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
+ echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
+ $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
++ echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
++ $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
+ cat > conftest.c << _LT_EOF
+ int main() { return 0;}
+ _LT_EOF
+@@ -1069,30 +1074,41 @@
+ fi
+ ])
+
+-# _LT_SYS_MODULE_PATH_AIX
+-# -----------------------
++# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
++# ----------------------------------
+ # Links a minimal program and checks the executable
+ # for the system default hardcoded library path. In most cases,
+ # this is /usr/lib:/lib, but when the MPI compilers are used
+ # the location of the communication and MPI libs are included too.
+ # If we don't find anything, use the default library path according
+ # to the aix ld manual.
++# Store the results from the different compilers for each TAGNAME.
++# Allow to override them for all tags through lt_cv_aix_libpath.
+ m4_defun([_LT_SYS_MODULE_PATH_AIX],
+ [m4_require([_LT_DECL_SED])dnl
+-AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi],[])
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
++ [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
++ lt_aix_libpath_sed='[
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }]'
++ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
++ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi],[])
++ if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
++ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
++ fi
++ ])
++ aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
++fi
+ ])# _LT_SYS_MODULE_PATH_AIX
+
+
+@@ -1117,7 +1133,7 @@
+
+ AC_MSG_CHECKING([how to print strings])
+ # Test print first, because it will be a builtin if present.
+-if test "X`print -r -- -n 2>/dev/null`" = X-n && \
++if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='print -r --'
+ elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+@@ -1161,6 +1177,39 @@
+ ])# _LT_PROG_ECHO_BACKSLASH
+
+
++# _LT_WITH_SYSROOT
++# ----------------
++AC_DEFUN([_LT_WITH_SYSROOT],
++[AC_MSG_CHECKING([for sysroot])
++AC_ARG_WITH([libtool-sysroot],
++[ --with-libtool-sysroot[=DIR] Search for dependent libraries within DIR
++ (or the compiler's sysroot if not specified).],
++[], [with_libtool_sysroot=no])
++
++dnl lt_sysroot will always be passed unquoted. We quote it here
++dnl in case the user passed a directory name.
++lt_sysroot=
++case ${with_libtool_sysroot} in #(
++ yes)
++ if test "$GCC" = yes; then
++ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
++ fi
++ ;; #(
++ /*)
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
++ ;; #(
++ no|'')
++ ;; #(
++ *)
++ AC_MSG_RESULT([${with_libtool_sysroot}])
++ AC_MSG_ERROR([The sysroot must be an absolute path.])
++ ;;
++esac
++
++ AC_MSG_RESULT([${lt_sysroot:-no}])
++_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
++[dependent libraries, and in which our libraries should be installed.])])
++
+ # _LT_ENABLE_LOCK
+ # ---------------
+ m4_defun([_LT_ENABLE_LOCK],
+@@ -1307,14 +1356,47 @@
+ ])# _LT_ENABLE_LOCK
+
+
++# _LT_PROG_AR
++# -----------
++m4_defun([_LT_PROG_AR],
++[AC_CHECK_TOOLS(AR, [ar], false)
++: ${AR=ar}
++: ${AR_FLAGS=cru}
++_LT_DECL([], [AR], [1], [The archiver])
++_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
++
++AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
++ [lt_cv_ar_at_file=no
++ AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
++ [echo conftest.$ac_objext > conftest.lst
++ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
++ AC_TRY_EVAL([lt_ar_try])
++ if test "$ac_status" -eq 0; then
++ # Ensure the archiver fails upon bogus file names.
++ rm -f conftest.$ac_objext libconftest.a
++ AC_TRY_EVAL([lt_ar_try])
++ if test "$ac_status" -ne 0; then
++ lt_cv_ar_at_file=@
++ fi
++ fi
++ rm -f conftest.* libconftest.a
++ ])
++ ])
++
++if test "x$lt_cv_ar_at_file" = xno; then
++ archiver_list_spec=
++else
++ archiver_list_spec=$lt_cv_ar_at_file
++fi
++_LT_DECL([], [archiver_list_spec], [1],
++ [How to feed a file listing to the archiver])
++])# _LT_PROG_AR
++
++
+ # _LT_CMD_OLD_ARCHIVE
+ # -------------------
+ m4_defun([_LT_CMD_OLD_ARCHIVE],
+-[AC_CHECK_TOOL(AR, ar, false)
+-test -z "$AR" && AR=ar
+-test -z "$AR_FLAGS" && AR_FLAGS=cru
+-_LT_DECL([], [AR], [1], [The archiver])
+-_LT_DECL([], [AR_FLAGS], [1])
++[_LT_PROG_AR
+
+ AC_CHECK_TOOL(STRIP, strip, :)
+ test -z "$STRIP" && STRIP=:
+@@ -1610,7 +1692,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-[#line __oline__ "configure"
++[#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -1654,10 +1736,10 @@
+ /* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -2197,8 +2279,9 @@
+ need_version=no
+ need_lib_prefix=no
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
++ case $GCC,$cc_basename in
++ yes,*)
++ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+@@ -2231,13 +2314,71 @@
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
++ dynamic_linker='Win32 ld.exe'
++ ;;
++
++ *,cl*)
++ # Native MSVC
++ libname_spec='$name'
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='${libname}.dll.lib'
++
++ case $build_os in
++ mingw*)
++ sys_lib_search_path_spec=
++ lt_save_ifs=$IFS
++ IFS=';'
++ for lt_path in $LIB
++ do
++ IFS=$lt_save_ifs
++ # Let DOS variable expansion print the short 8.3 style file name.
++ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
++ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
++ done
++ IFS=$lt_save_ifs
++ # Convert to MSYS style.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
++ ;;
++ cygwin*)
++ # Convert to unix form, then to dos form, then back to unix form
++ # but this time dos style (no spaces!) so that the unix form looks
++ # like /cygdrive/c/PROGRA~1:/cygdr...
++ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
++ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
++ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ ;;
++ *)
++ sys_lib_search_path_spec="$LIB"
++ if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
++ # It is most probably a Windows format PATH.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ # FIXME: find the short name or the path components, as spaces are
++ # common. (e.g. "Program Files" -> "PROGRA~1")
++ ;;
++ esac
++
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $RM \$dlpath'
++ shlibpath_overrides_runpath=yes
++ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
++ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+- dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+@@ -2333,7 +2474,7 @@
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
++ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+ hardcode_into_libs=yes
+ ;;
+
+@@ -2941,6 +3082,11 @@
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ case $host_os in
++ cygwin* | mingw* | pw32* | cegcc*)
++ if test "$GCC" != yes; then
++ reload_cmds=false
++ fi
++ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+@@ -3007,7 +3153,8 @@
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
++ # Keep this pattern in sync with the one in func_win32_libid.
++ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+@@ -3158,6 +3305,21 @@
+ ;;
+ esac
+ ])
++
++file_magic_glob=
++want_nocaseglob=no
++if test "$build" = "$host"; then
++ case $host_os in
++ mingw* | pw32*)
++ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
++ want_nocaseglob=yes
++ else
++ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
++ fi
++ ;;
++ esac
++fi
++
+ file_magic_cmd=$lt_cv_file_magic_cmd
+ deplibs_check_method=$lt_cv_deplibs_check_method
+ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -3165,7 +3327,11 @@
+ _LT_DECL([], [deplibs_check_method], [1],
+ [Method to check whether dependent libraries are shared objects])
+ _LT_DECL([], [file_magic_cmd], [1],
+- [Command to use when deplibs_check_method == "file_magic"])
++ [Command to use when deplibs_check_method = "file_magic"])
++_LT_DECL([], [file_magic_glob], [1],
++ [How to find potential files when deplibs_check_method = "file_magic"])
++_LT_DECL([], [want_nocaseglob], [1],
++ [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
+ ])# _LT_CHECK_MAGIC_METHOD
+
+
+@@ -3268,6 +3434,67 @@
+ dnl AC_DEFUN([AM_PROG_NM], [])
+ dnl AC_DEFUN([AC_PROG_NM], [])
+
++# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
++# --------------------------------
++# how to determine the name of the shared library
++# associated with a specific link library.
++# -- PORTME fill in with the dynamic library characteristics
++m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
++[m4_require([_LT_DECL_EGREP])
++m4_require([_LT_DECL_OBJDUMP])
++m4_require([_LT_DECL_DLLTOOL])
++AC_CACHE_CHECK([how to associate runtime and link libraries],
++lt_cv_sharedlib_from_linklib_cmd,
++[lt_cv_sharedlib_from_linklib_cmd='unknown'
++
++case $host_os in
++cygwin* | mingw* | pw32* | cegcc*)
++ # two different shell functions defined in ltmain.sh
++ # decide which to use based on capabilities of $DLLTOOL
++ case `$DLLTOOL --help 2>&1` in
++ *--identify-strict*)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
++ ;;
++ *)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
++ ;;
++ esac
++ ;;
++*)
++ # fallback: assume linklib IS sharedlib
++ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
++ ;;
++esac
++])
++sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
++test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
++
++_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
++ [Command to associate shared and link libraries])
++])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
++
++
++# _LT_PATH_MANIFEST_TOOL
++# ----------------------
++# locate the manifest tool
++m4_defun([_LT_PATH_MANIFEST_TOOL],
++[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
++test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
++AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
++ [lt_cv_path_mainfest_tool=no
++ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
++ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
++ cat conftest.err >&AS_MESSAGE_LOG_FD
++ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
++ lt_cv_path_mainfest_tool=yes
++ fi
++ rm -f conftest*])
++if test "x$lt_cv_path_mainfest_tool" != xyes; then
++ MANIFEST_TOOL=:
++fi
++_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
++])# _LT_PATH_MANIFEST_TOOL
++
+
+ # LT_LIB_M
+ # --------
+@@ -3394,8 +3621,8 @@
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+ # Transform an extracted symbol line into symbol name and symbol address
+-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'"
+-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+ # Handle CRLF in mingw tool chain
+ opt_cr=
+@@ -3431,6 +3658,7 @@
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
++ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -3464,6 +3692,18 @@
+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<_LT_EOF > conftest.$ac_ext
++/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
++#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
++/* DATA imports from DLLs on WIN32 con't be const, because runtime
++ relocations are performed -- see ld's documentation on pseudo-relocs. */
++# define LT@&t@_DLSYM_CONST
++#elif defined(__osf__)
++/* This system does not cope well with relocations in const data. */
++# define LT@&t@_DLSYM_CONST
++#else
++# define LT@&t@_DLSYM_CONST const
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -3475,7 +3715,7 @@
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+ /* The mapping between symbol names and symbols. */
+-const struct {
++LT@&t@_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+ }
+@@ -3501,15 +3741,15 @@
+ _LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+- lt_save_LIBS="$LIBS"
+- lt_save_CFLAGS="$CFLAGS"
++ lt_globsym_save_LIBS=$LIBS
++ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+- LIBS="$lt_save_LIBS"
+- CFLAGS="$lt_save_CFLAGS"
++ LIBS=$lt_globsym_save_LIBS
++ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+@@ -3542,6 +3782,13 @@
+ AC_MSG_RESULT(ok)
+ fi
+
++# Response file support.
++if test "$lt_cv_nm_interface" = "MS dumpbin"; then
++ nm_file_list_spec='@'
++elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
++ nm_file_list_spec='@'
++fi
++
+ _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
+ [Take the output of nm and produce a listing of raw symbols and C names])
+ _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
+@@ -3552,6 +3799,8 @@
+ _LT_DECL([global_symbol_to_c_name_address_lib_prefix],
+ [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
+ [Transform the output of nm in a C name address pair when lib prefix is needed])
++_LT_DECL([], [nm_file_list_spec], [1],
++ [Specify filename containing input files for $NM])
+ ]) # _LT_CMD_GLOBAL_SYMBOLS
+
+
+@@ -3563,7 +3812,6 @@
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_static, $1)=
+
+-AC_MSG_CHECKING([for $compiler option to produce PIC])
+ m4_if([$1], [CXX], [
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+@@ -3668,6 +3916,12 @@
+ ;;
+ esac
+ ;;
++ mingw* | cygwin* | os2* | pw32* | cegcc*)
++ # This hack is so that the source file can tell whether it is being
++ # built for inclusion in a dll (and should export symbols for example).
++ m4_if([$1], [GCJ], [],
++ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
++ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+@@ -3820,7 +4074,7 @@
+ ;;
+ solaris*)
+ case $cc_basename in
+- CC*)
++ CC* | sunCC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+@@ -4042,6 +4296,12 @@
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
+ ;;
++ nagfor*)
++ # NAG Fortran compiler
++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
++ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+@@ -4104,7 +4364,7 @@
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ case $cc_basename in
+- f77* | f90* | f95*)
++ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+@@ -4161,9 +4421,11 @@
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
+ ;;
+ esac
+-AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+- [How to pass a linker flag through the compiler])
++
++AC_CACHE_CHECK([for $compiler option to produce PIC],
++ [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
++ [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
++_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
+
+ #
+ # Check to make sure the PIC flag actually works.
+@@ -4182,6 +4444,8 @@
+ _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
+ [Additional compiler flags for building library objects])
+
++_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
++ [How to pass a linker flag through the compiler])
+ #
+ # Check to make sure the static flag actually works.
+ #
+@@ -4202,6 +4466,7 @@
+ m4_defun([_LT_LINKER_SHLIBS],
+ [AC_REQUIRE([LT_PATH_LD])dnl
+ AC_REQUIRE([LT_PATH_NM])dnl
++m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+ m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+ m4_require([_LT_DECL_EGREP])dnl
+ m4_require([_LT_DECL_SED])dnl
+@@ -4210,6 +4475,7 @@
+ AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ m4_if([$1], [CXX], [
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
++ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+ case $host_os in
+ aix[[4-9]]*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+@@ -4224,15 +4490,20 @@
+ ;;
+ pw32*)
+ _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+- ;;
++ ;;
+ cygwin* | mingw* | cegcc*)
+- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+- ;;
++ case $cc_basename in
++ cl*) ;;
++ *)
++ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
++ _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
++ ;;
++ esac
++ ;;
+ *)
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+- ;;
++ ;;
+ esac
+- _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+ ], [
+ runpath_var=
+ _LT_TAGVAR(allow_undefined_flag, $1)=
+@@ -4400,7 +4671,8 @@
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
++ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
++ _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+@@ -4448,7 +4720,7 @@
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+- tmp_addflag=
++ tmp_addflag=' $pic_flag'
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+@@ -4499,12 +4771,12 @@
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+- _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
++ _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
++ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+@@ -4518,8 +4790,8 @@
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+@@ -4537,8 +4809,8 @@
+
+ _LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+@@ -4584,8 +4856,8 @@
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+@@ -4715,7 +4987,7 @@
+ _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- _LT_SYS_MODULE_PATH_AIX
++ _LT_SYS_MODULE_PATH_AIX([$1])
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+@@ -4726,7 +4998,7 @@
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- _LT_SYS_MODULE_PATH_AIX
++ _LT_SYS_MODULE_PATH_AIX([$1])
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+@@ -4770,20 +5042,63 @@
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+- # FIXME: Should let the user specify the lib program.
+- _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+- _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
+- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
++ case $cc_basename in
++ cl*)
++ # Native MSVC
++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
++ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
++ _LT_TAGVAR(always_export_symbols, $1)=yes
++ _LT_TAGVAR(file_list_spec, $1)='@'
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
++ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
++ else
++ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
++ fi~
++ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++ linknames='
++ # The linker will not automatically build a static lib if we build a DLL.
++ # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
++ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
++ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
++ # Don't use ranlib
++ _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
++ _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
++ lt_tool_outputfile="@TOOL_OUTPUT@"~
++ case $lt_outputfile in
++ *.exe|*.EXE) ;;
++ *)
++ lt_outputfile="$lt_outputfile.exe"
++ lt_tool_outputfile="$lt_tool_outputfile.exe"
++ ;;
++ esac~
++ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
++ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
++ $RM "$lt_outputfile.manifest";
++ fi'
++ ;;
++ *)
++ # Assume MSVC wrapper
++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
++ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
++ # FIXME: Should let the user specify the lib program.
++ _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
++ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
++ ;;
++ esac
+ ;;
+
+ darwin* | rhapsody*)
+@@ -4821,7 +5136,7 @@
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+@@ -4829,7 +5144,7 @@
+
+ hpux9*)
+ if test "$GCC" = yes; then
+- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+@@ -4845,7 +5160,7 @@
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+@@ -4869,10 +5184,10 @@
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+@@ -4919,16 +5234,31 @@
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+- AC_LINK_IFELSE(int foo(void) {},
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+- )
+- LDFLAGS="$save_LDFLAGS"
++ # This should be the same for all languages, so no per-tag cache variable.
++ AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
++ [lt_cv_irix_exported_symbol],
++ [save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
++ AC_LINK_IFELSE(
++ [AC_LANG_SOURCE(
++ [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
++ [C++], [[int foo (void) { return 0; }]],
++ [Fortran 77], [[
++ subroutine foo
++ end]],
++ [Fortran], [[
++ subroutine foo
++ end]])])],
++ [lt_cv_irix_exported_symbol=yes],
++ [lt_cv_irix_exported_symbol=no])
++ LDFLAGS="$save_LDFLAGS"])
++ if test "$lt_cv_irix_exported_symbol" = yes; then
++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
++ fi
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+@@ -5013,7 +5343,7 @@
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ else
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+@@ -5032,9 +5362,9 @@
+ _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
++ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+@@ -5306,8 +5636,6 @@
+ to runtime path list])
+ _LT_TAGDECL([], [link_all_deplibs], [0],
+ [Whether libtool must link a program against all its dependency libraries])
+-_LT_TAGDECL([], [fix_srcfile_path], [1],
+- [Fix the shell variable $srcfile for the compiler])
+ _LT_TAGDECL([], [always_export_symbols], [0],
+ [Set to "yes" if exported symbols are required])
+ _LT_TAGDECL([], [export_symbols_cmds], [2],
+@@ -5318,6 +5646,8 @@
+ [Symbols that must always be exported])
+ _LT_TAGDECL([], [prelink_cmds], [2],
+ [Commands necessary for linking programs (against libraries) with templates])
++_LT_TAGDECL([], [postlink_cmds], [2],
++ [Commands necessary for finishing linking programs])
+ _LT_TAGDECL([], [file_list_spec], [1],
+ [Specify filename containing input files])
+ dnl FIXME: Not yet implemented
+@@ -5419,6 +5749,7 @@
+ m4_defun([_LT_LANG_CXX_CONFIG],
+ [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+ m4_require([_LT_DECL_EGREP])dnl
++m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+ if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+@@ -5480,6 +5811,7 @@
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC=$CC
++ lt_save_CFLAGS=$CFLAGS
+ lt_save_LD=$LD
+ lt_save_GCC=$GCC
+ GCC=$GXX
+@@ -5497,6 +5829,7 @@
+ fi
+ test -z "${LDCXX+set}" || LD=$LDCXX
+ CC=${CXX-"c++"}
++ CFLAGS=$CXXFLAGS
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+@@ -5518,8 +5851,8 @@
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
+ # archiving commands below assume that GNU ld is being used.
+ if test "$with_gnu_ld" = yes; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+@@ -5660,7 +5993,7 @@
+ _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty
+ # executable.
+- _LT_SYS_MODULE_PATH_AIX
++ _LT_SYS_MODULE_PATH_AIX([$1])
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+@@ -5672,7 +6005,7 @@
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- _LT_SYS_MODULE_PATH_AIX
++ _LT_SYS_MODULE_PATH_AIX([$1])
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+@@ -5714,29 +6047,75 @@
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+- # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+- # as there is no search path for DLLs.
+- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+- _LT_TAGVAR(always_export_symbols, $1)=no
+- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+-
+- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- # If the export-symbols file already is a .def file (1st line
+- # is EXPORTS), use it as is; otherwise, prepend...
+- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+- cp $export_symbols $output_objdir/$soname.def;
+- else
+- echo EXPORTS > $output_objdir/$soname.def;
+- cat $export_symbols >> $output_objdir/$soname.def;
+- fi~
+- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+- else
+- _LT_TAGVAR(ld_shlibs, $1)=no
+- fi
+- ;;
++ case $GXX,$cc_basename in
++ ,cl* | no,cl*)
++ # Native MSVC
++ # hardcode_libdir_flag_spec is actually meaningless, as there is
++ # no search path for DLLs.
++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
++ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
++ _LT_TAGVAR(always_export_symbols, $1)=yes
++ _LT_TAGVAR(file_list_spec, $1)='@'
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
++ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
++ else
++ $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
++ fi~
++ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++ linknames='
++ # The linker will not automatically build a static lib if we build a DLL.
++ # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
++ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
++ # Don't use ranlib
++ _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
++ _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
++ lt_tool_outputfile="@TOOL_OUTPUT@"~
++ case $lt_outputfile in
++ *.exe|*.EXE) ;;
++ *)
++ lt_outputfile="$lt_outputfile.exe"
++ lt_tool_outputfile="$lt_tool_outputfile.exe"
++ ;;
++ esac~
++ func_to_tool_file "$lt_outputfile"~
++ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
++ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
++ $RM "$lt_outputfile.manifest";
++ fi'
++ ;;
++ *)
++ # g++
++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
++ # as there is no search path for DLLs.
++ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
++ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
++ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
++ _LT_TAGVAR(always_export_symbols, $1)=no
++ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
++
++ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ # If the export-symbols file already is a .def file (1st line
++ # is EXPORTS), use it as is; otherwise, prepend...
++ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ cp $export_symbols $output_objdir/$soname.def;
++ else
++ echo EXPORTS > $output_objdir/$soname.def;
++ cat $export_symbols >> $output_objdir/$soname.def;
++ fi~
++ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++ else
++ _LT_TAGVAR(ld_shlibs, $1)=no
++ fi
++ ;;
++ esac
++ ;;
+ darwin* | rhapsody*)
+ _LT_DARWIN_LINKER_FEATURES($1)
+ ;;
+@@ -5811,7 +6190,7 @@
+ ;;
+ *)
+ if test "$GXX" = yes; then
+- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+@@ -5882,10 +6261,10 @@
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+@@ -5926,9 +6305,9 @@
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+ fi
+ fi
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+@@ -5998,20 +6377,20 @@
+ _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+- compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
++ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+ _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+- $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
++ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+ $RANLIB $oldlib'
+ _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
++ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
++ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ ;;
+ *) # Version 6 and above use weak symbols
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+@@ -6206,7 +6585,7 @@
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ ;;
+ *)
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ ;;
+ esac
+
+@@ -6252,7 +6631,7 @@
+
+ solaris*)
+ case $cc_basename in
+- CC*)
++ CC* | sunCC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
+ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+@@ -6293,9 +6672,9 @@
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+ if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
++ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+@@ -6424,6 +6803,7 @@
+ fi # test -n "$compiler"
+
+ CC=$lt_save_CC
++ CFLAGS=$lt_save_CFLAGS
+ LDCXX=$LD
+ LD=$lt_save_LD
+ GCC=$lt_save_GCC
+@@ -6438,6 +6818,29 @@
+ ])# _LT_LANG_CXX_CONFIG
+
+
++# _LT_FUNC_STRIPNAME_CNF
++# ----------------------
++# func_stripname_cnf prefix suffix name
++# strip PREFIX and SUFFIX off of NAME.
++# PREFIX and SUFFIX must not contain globbing or regex special
++# characters, hashes, percent signs, but SUFFIX may contain a leading
++# dot (in which case that matches only a dot).
++#
++# This function is identical to the (non-XSI) version of func_stripname,
++# except this one can be used by m4 code that may be executed by configure,
++# rather than the libtool script.
++m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
++AC_REQUIRE([_LT_DECL_SED])
++AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
++func_stripname_cnf ()
++{
++ case ${2} in
++ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
++ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
++ esac
++} # func_stripname_cnf
++])# _LT_FUNC_STRIPNAME_CNF
++
+ # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
+ # ---------------------------------
+ # Figure out "hidden" library dependencies from verbose
+@@ -6446,6 +6849,7 @@
+ # objects, libraries and library flags.
+ m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
+ [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
++AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
+ # Dependencies to place before and after the object being linked:
+ _LT_TAGVAR(predep_objects, $1)=
+ _LT_TAGVAR(postdep_objects, $1)=
+@@ -6496,6 +6900,13 @@
+ };
+ _LT_EOF
+ ])
++
++_lt_libdeps_save_CFLAGS=$CFLAGS
++case "$CC $CFLAGS " in #(
++*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
++*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
++esac
++
+ dnl Parse the compiler output and extract the necessary
+ dnl objects, libraries and library flags.
+ if AC_TRY_EVAL(ac_compile); then
+@@ -6507,7 +6918,7 @@
+ pre_test_object_deps_done=no
+
+ for p in `eval "$output_verbose_link_cmd"`; do
+- case $p in
++ case ${prev}${p} in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+@@ -6516,13 +6927,22 @@
+ test $p = "-R"; then
+ prev=$p
+ continue
+- else
+- prev=
+ fi
+
++ # Expand the sysroot to ease extracting the directories later.
++ if test -z "$prev"; then
++ case $p in
++ -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
++ -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
++ -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
++ esac
++ fi
++ case $p in
++ =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
++ esac
+ if test "$pre_test_object_deps_done" = no; then
+- case $p in
+- -L* | -R*)
++ case ${prev} in
++ -L | -R)
+ # Internal compiler library paths should come after those
+ # provided the user. The postdeps already come after the
+ # user supplied libs so there is no need to process them.
+@@ -6542,8 +6962,10 @@
+ _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
+ fi
+ fi
++ prev=
+ ;;
+
++ *.lto.$objext) ;; # Ignore GCC LTO objects
+ *.$objext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+@@ -6579,6 +7001,7 @@
+ fi
+
+ $RM -f confest.$objext
++CFLAGS=$_lt_libdeps_save_CFLAGS
+
+ # PORTME: override above test on systems where it is broken
+ m4_if([$1], [CXX],
+@@ -6615,7 +7038,7 @@
+
+ solaris*)
+ case $cc_basename in
+- CC*)
++ CC* | sunCC*)
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+@@ -6728,7 +7151,9 @@
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ lt_save_GCC=$GCC
++ lt_save_CFLAGS=$CFLAGS
+ CC=${F77-"f77"}
++ CFLAGS=$FFLAGS
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+@@ -6782,6 +7207,7 @@
+
+ GCC=$lt_save_GCC
+ CC="$lt_save_CC"
++ CFLAGS="$lt_save_CFLAGS"
+ fi # test "$_lt_disable_F77" != yes
+
+ AC_LANG_POP
+@@ -6858,7 +7284,9 @@
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ lt_save_GCC=$GCC
++ lt_save_CFLAGS=$CFLAGS
+ CC=${FC-"f95"}
++ CFLAGS=$FCFLAGS
+ compiler=$CC
+ GCC=$ac_cv_fc_compiler_gnu
+
+@@ -6914,7 +7342,8 @@
+ fi # test -n "$compiler"
+
+ GCC=$lt_save_GCC
+- CC="$lt_save_CC"
++ CC=$lt_save_CC
++ CFLAGS=$lt_save_CFLAGS
+ fi # test "$_lt_disable_FC" != yes
+
+ AC_LANG_POP
+@@ -6951,10 +7380,12 @@
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+-lt_save_CC="$CC"
++lt_save_CC=$CC
++lt_save_CFLAGS=$CFLAGS
+ lt_save_GCC=$GCC
+ GCC=yes
+ CC=${GCJ-"gcj"}
++CFLAGS=$GCJFLAGS
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_TAGVAR(LD, $1)="$LD"
+@@ -6985,7 +7416,8 @@
+ AC_LANG_RESTORE
+
+ GCC=$lt_save_GCC
+-CC="$lt_save_CC"
++CC=$lt_save_CC
++CFLAGS=$lt_save_CFLAGS
+ ])# _LT_LANG_GCJ_CONFIG
+
+
+@@ -7020,9 +7452,11 @@
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
++lt_save_CFLAGS=$CFLAGS
+ lt_save_GCC=$GCC
+ GCC=
+ CC=${RC-"windres"}
++CFLAGS=
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+@@ -7035,7 +7469,8 @@
+
+ GCC=$lt_save_GCC
+ AC_LANG_RESTORE
+-CC="$lt_save_CC"
++CC=$lt_save_CC
++CFLAGS=$lt_save_CFLAGS
+ ])# _LT_LANG_RC_CONFIG
+
+
+@@ -7094,6 +7529,15 @@
+ AC_SUBST([OBJDUMP])
+ ])
+
++# _LT_DECL_DLLTOOL
++# ----------------
++# Ensure DLLTOOL variable is set.
++m4_defun([_LT_DECL_DLLTOOL],
++[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
++test -z "$DLLTOOL" && DLLTOOL=dlltool
++_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
++AC_SUBST([DLLTOOL])
++])
+
+ # _LT_DECL_SED
+ # ------------
+@@ -7187,8 +7631,8 @@
+ # Try some XSI features
+ xsi_shell=no
+ ( _lt_dummy="a/b/c"
+- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+- = c,a/b,, \
++ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
++ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+@@ -7227,206 +7671,162 @@
+ ])# _LT_CHECK_SHELL_FEATURES
+
+
+-# _LT_PROG_XSI_SHELLFNS
+-# ---------------------
+-# Bourne and XSI compatible variants of some useful shell functions.
+-m4_defun([_LT_PROG_XSI_SHELLFNS],
+-[case $xsi_shell in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_dirname_and_basename file append nondir_replacement
+-# perform func_basename and func_dirname in a single function
+-# call:
+-# dirname: Compute the dirname of FILE. If nonempty,
+-# add APPEND to the result, otherwise set result
+-# to NONDIR_REPLACEMENT.
+-# value returned in "$func_dirname_result"
+-# basename: Compute filename of FILE.
+-# value retuned in "$func_basename_result"
+-# Implementation must be kept synchronized with func_dirname
+-# and func_basename. For efficiency, we do not delegate to
+-# those functions but instead duplicate the functionality here.
+-func_dirname_and_basename ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-func_stripname ()
+-{
+- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+- # positional parameters, so assign one to ordinary parameter first.
+- func_stripname_result=${3}
+- func_stripname_result=${func_stripname_result#"${1}"}
+- func_stripname_result=${func_stripname_result%"${2}"}
+-}
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=${1%%=*}
+- func_opt_split_arg=${1#*=}
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- case ${1} in
+- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+- *) func_lo2o_result=${1} ;;
+- esac
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=${1%.*}.lo
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=$(( $[*] ))
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=${#1}
+-}
+-
+-_LT_EOF
+- ;;
+- *) # Bourne compatible functions.
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- # Extract subdirectory from the argument.
+- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+- if test "X$func_dirname_result" = "X${1}"; then
+- func_dirname_result="${3}"
+- else
+- func_dirname_result="$func_dirname_result${2}"
+- fi
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+-}
++# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
++# ------------------------------------------------------
++# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
++# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
++m4_defun([_LT_PROG_FUNCTION_REPLACE],
++[dnl {
++sed -e '/^$1 ()$/,/^} # $1 /c\
++$1 ()\
++{\
++m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1])
++} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++])
+
+-dnl func_dirname_and_basename
+-dnl A portable version of this function is already defined in general.m4sh
+-dnl so there is no need for it here.
+
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-# func_strip_suffix prefix name
+-func_stripname ()
+-{
+- case ${2} in
+- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+- esac
+-}
++# _LT_PROG_REPLACE_SHELLFNS
++# -------------------------
++# Replace existing portable implementations of several shell functions with
++# equivalent extended shell implementations where those features are available..
++m4_defun([_LT_PROG_REPLACE_SHELLFNS],
++[if test x"$xsi_shell" = xyes; then
++ _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
++ case ${1} in
++ */*) func_dirname_result="${1%/*}${2}" ;;
++ * ) func_dirname_result="${3}" ;;
++ esac])
++
++ _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
++ func_basename_result="${1##*/}"])
++
++ _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
++ case ${1} in
++ */*) func_dirname_result="${1%/*}${2}" ;;
++ * ) func_dirname_result="${3}" ;;
++ esac
++ func_basename_result="${1##*/}"])
+
+-# sed scripts:
+-my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
+-my_sed_long_arg='1s/^-[[^=]]*=//'
++ _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
++ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
++ # positional parameters, so assign one to ordinary parameter first.
++ func_stripname_result=${3}
++ func_stripname_result=${func_stripname_result#"${1}"}
++ func_stripname_result=${func_stripname_result%"${2}"}])
++
++ _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
++ func_split_long_opt_name=${1%%=*}
++ func_split_long_opt_arg=${1#*=}])
++
++ _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
++ func_split_short_opt_arg=${1#??}
++ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
++
++ _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
++ case ${1} in
++ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
++ *) func_lo2o_result=${1} ;;
++ esac])
+
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+-}
++ _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo])
+
+-# func_lo2o object
+-func_lo2o ()
+-{
+- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+-}
++ _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))])
+
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=`$ECHO "${1}" | $SED 's/\.[[^.]]*$/.lo/'`
+-}
++ _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}])
++fi
+
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=`expr "$[@]"`
+-}
++if test x"$lt_shell_append" = xyes; then
++ _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"])
+
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
+-}
++ _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
++ func_quote_for_eval "${2}"
++dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
++ eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
++
++ # Save a `func_append' function call where possible by direct use of '+='
++ sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++else
++ # Save a `func_append' function call even when '+=' is not available
++ sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++fi
+
+-_LT_EOF
+-esac
++if test x"$_lt_function_replace_fail" = x":"; then
++ AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
++fi
++])
+
+-case $lt_shell_append in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$[1]+=\$[2]"
+-}
+-_LT_EOF
++# _LT_PATH_CONVERSION_FUNCTIONS
++# -----------------------------
++# Determine which file name conversion functions should be used by
++# func_to_host_file (and, implicitly, by func_to_host_path). These are needed
++# for certain cross-compile configurations and native mingw.
++m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
++[AC_REQUIRE([AC_CANONICAL_HOST])dnl
++AC_REQUIRE([AC_CANONICAL_BUILD])dnl
++AC_MSG_CHECKING([how to convert $build file names to $host format])
++AC_CACHE_VAL(lt_cv_to_host_file_cmd,
++[case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
++ ;;
++ esac
+ ;;
+- *)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$[1]=\$$[1]\$[2]"
+-}
+-
+-_LT_EOF
++ *-*-cygwin* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
++ ;;
++ esac
+ ;;
+- esac
++ * ) # unhandled hosts (and "normal" native builds)
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++esac
++])
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
++_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
++ [0], [convert $build file names to $host format])dnl
++
++AC_MSG_CHECKING([how to convert $build file names to toolchain format])
++AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
++[#assume ordinary cross tools, or native build.
++lt_cv_to_tool_file_cmd=func_convert_file_noop
++case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ esac
++ ;;
++esac
+ ])
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
++_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
++ [0], [convert $build files to toolchain format])dnl
++])# _LT_PATH_CONVERSION_FUNCTIONS
+Index: binutils-2.21/ltmain.sh
+===================================================================
+--- binutils-2.21.orig/ltmain.sh 2010-01-09 13:11:32.000000000 -0800
++++ binutils-2.21/ltmain.sh 2011-01-07 10:49:16.406101000 -0800
+@@ -1,10 +1,9 @@
+-# Generated from ltmain.m4sh.
+
+-# libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
++# libtool (GNU libtool) 2.4
+ # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+
+ # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
+-# 2007, 2008, 2009 Free Software Foundation, Inc.
++# 2007, 2008, 2009, 2010 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.
+
+@@ -38,7 +37,6 @@
+ # -n, --dry-run display commands without modifying any files
+ # --features display basic configuration information and exit
+ # --mode=MODE use operation mode MODE
+-# --no-finish let install mode avoid finish commands
+ # --preserve-dup-deps don't remove duplicate dependency libraries
+ # --quiet, --silent don't print informational messages
+ # --no-quiet, --no-silent
+@@ -71,17 +69,19 @@
+ # compiler: $LTCC
+ # compiler flags: $LTCFLAGS
+ # linker: $LD (gnu? $with_gnu_ld)
+-# $progname: (GNU libtool 1.3134 2009-11-29) 2.2.7a
++# $progname: (GNU libtool) 2.4
+ # automake: $automake_version
+ # autoconf: $autoconf_version
+ #
+ # Report bugs to <bug-libtool@gnu.org>.
++# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
++# General help using GNU software: <http://www.gnu.org/gethelp/>.
+
+ PROGRAM=libtool
+ PACKAGE=libtool
+-VERSION=2.2.7a
+-TIMESTAMP=" 1.3134 2009-11-29"
+-package_revision=1.3134
++VERSION=2.4
++TIMESTAMP=""
++package_revision=1.3293
+
+ # Be Bourne compatible
+ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+@@ -106,9 +106,6 @@
+ }
+
+ # NLS nuisances: We save the old values to restore during execute mode.
+-# Only set LANG and LC_ALL to C if already set.
+-# These must not be set unconditionally because not all systems understand
+-# e.g. LANG=C (notably SCO).
+ lt_user_locale=
+ lt_safe_locale=
+ for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+@@ -121,15 +118,13 @@
+ lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
+ fi"
+ done
++LC_ALL=C
++LANGUAGE=C
++export LANGUAGE LC_ALL
+
+ $lt_unset CDPATH
+
+
+-
+-
+-
+-
+-
+ # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+ # is ksh but when the shell is invoked as "sh" and the current value of
+ # the _XPG environment variable is not equal to 1 (one), the special
+@@ -140,7 +135,7 @@
+
+
+ : ${CP="cp -f"}
+-: ${ECHO=$as_echo}
++test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
+ : ${EGREP="/bin/grep -E"}
+ : ${FGREP="/bin/grep -F"}
+ : ${GREP="/bin/grep"}
+@@ -149,7 +144,7 @@
+ : ${MKDIR="mkdir"}
+ : ${MV="mv -f"}
+ : ${RM="rm -f"}
+-: ${SED="/mount/endor/wildenhu/local-x86_64/bin/sed"}
++: ${SED="/bin/sed"}
+ : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+ : ${Xsed="$SED -e 1s/^X//"}
+
+@@ -169,6 +164,27 @@
+ dirname="s,/[^/]*$,,"
+ basename="s,^.*/,,"
+
++# func_dirname file append nondir_replacement
++# Compute the dirname of FILE. If nonempty, add APPEND to the result,
++# otherwise set result to NONDIR_REPLACEMENT.
++func_dirname ()
++{
++ func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
++ if test "X$func_dirname_result" = "X${1}"; then
++ func_dirname_result="${3}"
++ else
++ func_dirname_result="$func_dirname_result${2}"
++ fi
++} # func_dirname may be replaced by extended shell implementation
++
++
++# func_basename file
++func_basename ()
++{
++ func_basename_result=`$ECHO "${1}" | $SED "$basename"`
++} # func_basename may be replaced by extended shell implementation
++
++
+ # func_dirname_and_basename file append nondir_replacement
+ # perform func_basename and func_dirname in a single function
+ # call:
+@@ -183,17 +199,31 @@
+ # those functions but instead duplicate the functionality here.
+ func_dirname_and_basename ()
+ {
+- # Extract subdirectory from the argument.
+- func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
+- if test "X$func_dirname_result" = "X${1}"; then
+- func_dirname_result="${3}"
+- else
+- func_dirname_result="$func_dirname_result${2}"
+- fi
+- func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
+-}
++ # Extract subdirectory from the argument.
++ func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
++ if test "X$func_dirname_result" = "X${1}"; then
++ func_dirname_result="${3}"
++ else
++ func_dirname_result="$func_dirname_result${2}"
++ fi
++ func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
++} # func_dirname_and_basename may be replaced by extended shell implementation
++
++
++# func_stripname prefix suffix name
++# strip PREFIX and SUFFIX off of NAME.
++# PREFIX and SUFFIX must not contain globbing or regex special
++# characters, hashes, percent signs, but SUFFIX may contain a leading
++# dot (in which case that matches only a dot).
++# func_strip_suffix prefix name
++func_stripname ()
++{
++ case ${2} in
++ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
++ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
++ esac
++} # func_stripname may be replaced by extended shell implementation
+
+-# Generated shell functions inserted here.
+
+ # These SED scripts presuppose an absolute path with a trailing slash.
+ pathcar='s,^/\([^/]*\).*$,\1,'
+@@ -376,6 +406,15 @@
+ # Same as above, but do not quote variable references.
+ double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
++# Sed substitution that turns a string into a regex matching for the
++# string literally.
++sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
++
++# Sed substitution that converts a w32 file name or path
++# which contains forward slashes, into one that contains
++# (escaped) backslashes. A very naive implementation.
++lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
++
+ # Re-`\' parameter expansions in output of double_quote_subst that were
+ # `\'-ed in input to the same. If an odd number of `\' preceded a '$'
+ # in input to double_quote_subst, that '$' was protected from expansion.
+@@ -404,7 +443,7 @@
+ # name if it has been set yet.
+ func_echo ()
+ {
+- $ECHO "$progname${mode+: }$mode: $*"
++ $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
+ }
+
+ # func_verbose arg...
+@@ -430,14 +469,14 @@
+ # Echo program name prefixed message to standard error.
+ func_error ()
+ {
+- $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
++ $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
+ }
+
+ # func_warning arg...
+ # Echo program name prefixed warning message to standard error.
+ func_warning ()
+ {
+- $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
++ $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
+
+ # bash bug again:
+ :
+@@ -656,19 +695,35 @@
+ fi
+ }
+
+-
+-
++# func_tr_sh
++# Turn $1 into a string suitable for a shell variable name.
++# Result is stored in $func_tr_sh_result. All characters
++# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
++# if $1 begins with a digit, a '_' is prepended as well.
++func_tr_sh ()
++{
++ case $1 in
++ [0-9]* | *[!a-zA-Z0-9_]*)
++ func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
++ ;;
++ * )
++ func_tr_sh_result=$1
++ ;;
++ esac
++}
+
+
+ # func_version
+ # Echo version message to standard output and exit.
+ func_version ()
+ {
++ $opt_debug
++
+ $SED -n '/(C)/!b go
+ :more
+ /\./!{
+ N
+- s/\n# //
++ s/\n# / /
+ b more
+ }
+ :go
+@@ -685,7 +740,9 @@
+ # Echo short help message to standard output and exit.
+ func_usage ()
+ {
+- $SED -n '/^# Usage:/,/^# *-h/ {
++ $opt_debug
++
++ $SED -n '/^# Usage:/,/^# *.*--help/ {
+ s/^# //
+ s/^# *$//
+ s/\$progname/'$progname'/
+@@ -701,7 +758,10 @@
+ # unless 'noexit' is passed as argument.
+ func_help ()
+ {
++ $opt_debug
++
+ $SED -n '/^# Usage:/,/# Report bugs to/ {
++ :print
+ s/^# //
+ s/^# *$//
+ s*\$progname*'$progname'*
+@@ -714,7 +774,11 @@
+ s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
+ s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
+ p
+- }' < "$progpath"
++ d
++ }
++ /^# .* home page:/b print
++ /^# General help using/b print
++ ' < "$progpath"
+ ret=$?
+ if test -z "$1"; then
+ exit $ret
+@@ -726,12 +790,39 @@
+ # exit_cmd.
+ func_missing_arg ()
+ {
+- func_error "missing argument for $1"
++ $opt_debug
++
++ func_error "missing argument for $1."
+ exit_cmd=exit
+ }
+
+-exit_cmd=:
+
++# func_split_short_opt shortopt
++# Set func_split_short_opt_name and func_split_short_opt_arg shell
++# variables after splitting SHORTOPT after the 2nd character.
++func_split_short_opt ()
++{
++ my_sed_short_opt='1s/^\(..\).*$/\1/;q'
++ my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
++
++ func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
++ func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
++} # func_split_short_opt may be replaced by extended shell implementation
++
++
++# func_split_long_opt longopt
++# Set func_split_long_opt_name and func_split_long_opt_arg shell
++# variables after splitting LONGOPT at the `=' sign.
++func_split_long_opt ()
++{
++ my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
++ my_sed_long_arg='1s/^--[^=]*=//'
++
++ func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
++ func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
++} # func_split_long_opt may be replaced by extended shell implementation
++
++exit_cmd=:
+
+
+
+@@ -741,26 +832,64 @@
+ magic_exe="%%%MAGIC EXE variable%%%"
+
+ # Global variables.
+-# $mode is unset
+ nonopt=
+-execute_dlfiles=
+ preserve_args=
+ lo2o="s/\\.lo\$/.${objext}/"
+ o2lo="s/\\.${objext}\$/.lo/"
+ extracted_archives=
+ extracted_serial=0
+
+-opt_dry_run=false
+-opt_finish=:
+-opt_duplicate_deps=false
+-opt_silent=false
+-opt_debug=:
+-
+ # If this variable is set in any of the actions, the command in it
+ # will be execed at the end. This prevents here-documents from being
+ # left over by shells.
+ exec_cmd=
+
++# func_append var value
++# Append VALUE to the end of shell variable VAR.
++func_append ()
++{
++ eval "${1}=\$${1}\${2}"
++} # func_append may be replaced by extended shell implementation
++
++# func_append_quoted var value
++# Quote VALUE and append to the end of shell variable VAR, separated
++# by a space.
++func_append_quoted ()
++{
++ func_quote_for_eval "${2}"
++ eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
++} # func_append_quoted may be replaced by extended shell implementation
++
++
++# func_arith arithmetic-term...
++func_arith ()
++{
++ func_arith_result=`expr "${@}"`
++} # func_arith may be replaced by extended shell implementation
++
++
++# func_len string
++# STRING may not start with a hyphen.
++func_len ()
++{
++ func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
++} # func_len may be replaced by extended shell implementation
++
++
++# func_lo2o object
++func_lo2o ()
++{
++ func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
++} # func_lo2o may be replaced by extended shell implementation
++
++
++# func_xform libobj-or-source
++func_xform ()
++{
++ func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
++} # func_xform may be replaced by extended shell implementation
++
++
+ # func_fatal_configuration arg...
+ # Echo program name prefixed message to standard error, followed by
+ # a configuration failure hint, and exit.
+@@ -850,130 +979,204 @@
+ esac
+ }
+
+-# Parse options once, thoroughly. This comes as soon as possible in
+-# the script to make things like `libtool --version' happen quickly.
++# func_check_version_match
++# Ensure that we are using m4 macros, and libtool script from the same
++# release of libtool.
++func_check_version_match ()
+ {
++ if test "$package_revision" != "$macro_revision"; then
++ if test "$VERSION" != "$macro_version"; then
++ if test -z "$macro_version"; then
++ cat >&2 <<_LT_EOF
++$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
++$progname: definition of this LT_INIT comes from an older release.
++$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
++$progname: and run autoconf again.
++_LT_EOF
++ else
++ cat >&2 <<_LT_EOF
++$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
++$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
++$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
++$progname: and run autoconf again.
++_LT_EOF
++ fi
++ else
++ cat >&2 <<_LT_EOF
++$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
++$progname: but the definition of this LT_INIT comes from revision $macro_revision.
++$progname: You should recreate aclocal.m4 with macros from revision $package_revision
++$progname: of $PACKAGE $VERSION and run autoconf again.
++_LT_EOF
++ fi
++
++ exit $EXIT_MISMATCH
++ fi
++}
++
++
++# Shorthand for --mode=foo, only valid as the first argument
++case $1 in
++clean|clea|cle|cl)
++ shift; set dummy --mode clean ${1+"$@"}; shift
++ ;;
++compile|compil|compi|comp|com|co|c)
++ shift; set dummy --mode compile ${1+"$@"}; shift
++ ;;
++execute|execut|execu|exec|exe|ex|e)
++ shift; set dummy --mode execute ${1+"$@"}; shift
++ ;;
++finish|finis|fini|fin|fi|f)
++ shift; set dummy --mode finish ${1+"$@"}; shift
++ ;;
++install|instal|insta|inst|ins|in|i)
++ shift; set dummy --mode install ${1+"$@"}; shift
++ ;;
++link|lin|li|l)
++ shift; set dummy --mode link ${1+"$@"}; shift
++ ;;
++uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
++ shift; set dummy --mode uninstall ${1+"$@"}; shift
++ ;;
++esac
+
+- # Shorthand for --mode=foo, only valid as the first argument
+- case $1 in
+- clean|clea|cle|cl)
+- shift; set dummy --mode clean ${1+"$@"}; shift
+- ;;
+- compile|compil|compi|comp|com|co|c)
+- shift; set dummy --mode compile ${1+"$@"}; shift
+- ;;
+- execute|execut|execu|exec|exe|ex|e)
+- shift; set dummy --mode execute ${1+"$@"}; shift
+- ;;
+- finish|finis|fini|fin|fi|f)
+- shift; set dummy --mode finish ${1+"$@"}; shift
+- ;;
+- install|instal|insta|inst|ins|in|i)
+- shift; set dummy --mode install ${1+"$@"}; shift
+- ;;
+- link|lin|li|l)
+- shift; set dummy --mode link ${1+"$@"}; shift
+- ;;
+- uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+- shift; set dummy --mode uninstall ${1+"$@"}; shift
+- ;;
+- esac
+
+- # Parse non-mode specific arguments:
+- while test "$#" -gt 0; do
++
++# Option defaults:
++opt_debug=:
++opt_dry_run=false
++opt_config=false
++opt_preserve_dup_deps=false
++opt_features=false
++opt_finish=false
++opt_help=false
++opt_help_all=false
++opt_silent=:
++opt_verbose=:
++opt_silent=false
++opt_verbose=false
++
++
++# Parse options once, thoroughly. This comes as soon as possible in the
++# script to make things like `--version' happen as quickly as we can.
++{
++ # this just eases exit handling
++ while test $# -gt 0; do
+ opt="$1"
+ shift
+-
+ case $opt in
+- --config) func_config ;;
+-
+- --debug) preserve_args="$preserve_args $opt"
++ --debug|-x) opt_debug='set -x'
+ func_echo "enabling shell trace mode"
+- opt_debug='set -x'
+ $opt_debug
+ ;;
+-
+- -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break
+- execute_dlfiles="$execute_dlfiles $1"
+- shift
++ --dry-run|--dryrun|-n)
++ opt_dry_run=:
+ ;;
+-
+- --dry-run | -n) opt_dry_run=: ;;
+- --features) func_features ;;
+- --finish) mode="finish" ;;
+- --no-finish) opt_finish=false ;;
+-
+- --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break
+- case $1 in
+- # Valid mode arguments:
+- clean) ;;
+- compile) ;;
+- execute) ;;
+- finish) ;;
+- install) ;;
+- link) ;;
+- relink) ;;
+- uninstall) ;;
+-
+- # Catch anything else as an error
+- *) func_error "invalid argument for $opt"
+- exit_cmd=exit
+- break
+- ;;
+- esac
+-
+- mode="$1"
++ --config)
++ opt_config=:
++func_config
++ ;;
++ --dlopen|-dlopen)
++ optarg="$1"
++ opt_dlopen="${opt_dlopen+$opt_dlopen
++}$optarg"
+ shift
+ ;;
+-
+ --preserve-dup-deps)
+- opt_duplicate_deps=: ;;
+-
+- --quiet|--silent) preserve_args="$preserve_args $opt"
+- opt_silent=:
+- opt_verbose=false
++ opt_preserve_dup_deps=:
+ ;;
+-
+- --no-quiet|--no-silent)
+- preserve_args="$preserve_args $opt"
+- opt_silent=false
++ --features)
++ opt_features=:
++func_features
+ ;;
+-
+- --verbose| -v) preserve_args="$preserve_args $opt"
++ --finish)
++ opt_finish=:
++set dummy --mode finish ${1+"$@"}; shift
++ ;;
++ --help)
++ opt_help=:
++ ;;
++ --help-all)
++ opt_help_all=:
++opt_help=': help-all'
++ ;;
++ --mode)
++ test $# = 0 && func_missing_arg $opt && break
++ optarg="$1"
++ opt_mode="$optarg"
++case $optarg in
++ # Valid mode arguments:
++ clean|compile|execute|finish|install|link|relink|uninstall) ;;
++
++ # Catch anything else as an error
++ *) func_error "invalid argument for $opt"
++ exit_cmd=exit
++ break
++ ;;
++esac
++ shift
++ ;;
++ --no-silent|--no-quiet)
+ opt_silent=false
+- opt_verbose=:
++func_append preserve_args " $opt"
+ ;;
+-
+- --no-verbose) preserve_args="$preserve_args $opt"
++ --no-verbose)
+ opt_verbose=false
++func_append preserve_args " $opt"
+ ;;
+-
+- --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break
+- preserve_args="$preserve_args $opt $1"
+- func_enable_tag "$1" # tagname is set here
++ --silent|--quiet)
++ opt_silent=:
++func_append preserve_args " $opt"
++ opt_verbose=false
++ ;;
++ --verbose|-v)
++ opt_verbose=:
++func_append preserve_args " $opt"
++opt_silent=false
++ ;;
++ --tag)
++ test $# = 0 && func_missing_arg $opt && break
++ optarg="$1"
++ opt_tag="$optarg"
++func_append preserve_args " $opt $optarg"
++func_enable_tag "$optarg"
+ shift
+ ;;
+
++ -\?|-h) func_usage ;;
++ --help) func_help ;;
++ --version) func_version ;;
++
+ # Separate optargs to long options:
+- -dlopen=*|--mode=*|--tag=*)
+- func_opt_split "$opt"
+- set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
++ --*=*)
++ func_split_long_opt "$opt"
++ set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
+ shift
+ ;;
+
+- -\?|-h) func_usage ;;
+- --help) opt_help=: ;;
+- --help-all) opt_help=': help-all' ;;
+- --version) func_version ;;
+-
+- -*) func_fatal_help "unrecognized option \`$opt'" ;;
+-
+- *) nonopt="$opt"
+- break
++ # Separate non-argument short options:
++ -\?*|-h*|-n*|-v*)
++ func_split_short_opt "$opt"
++ set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
++ shift
+ ;;
++
++ --) break ;;
++ -*) func_fatal_help "unrecognized option \`$opt'" ;;
++ *) set dummy "$opt" ${1+"$@"}; shift; break ;;
+ esac
+ done
+
++ # Validate options:
++
++ # save first non-option argument
++ if test "$#" -gt 0; then
++ nonopt="$opt"
++ shift
++ fi
++
++ # preserve --debug
++ test "$opt_debug" = : || func_append preserve_args " --debug"
+
+ case $host in
+ *cygwin* | *mingw* | *pw32* | *cegcc*)
+@@ -981,82 +1184,44 @@
+ opt_duplicate_compiler_generated_deps=:
+ ;;
+ *)
+- opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
++ opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
+ ;;
+ esac
+
+- # Having warned about all mis-specified options, bail out if
+- # anything was wrong.
+- $exit_cmd $EXIT_FAILURE
+-}
++ $opt_help || {
++ # Sanity checks first:
++ func_check_version_match
+
+-# func_check_version_match
+-# Ensure that we are using m4 macros, and libtool script from the same
+-# release of libtool.
+-func_check_version_match ()
+-{
+- if test "$package_revision" != "$macro_revision"; then
+- if test "$VERSION" != "$macro_version"; then
+- if test -z "$macro_version"; then
+- cat >&2 <<_LT_EOF
+-$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
+-$progname: definition of this LT_INIT comes from an older release.
+-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+-$progname: and run autoconf again.
+-_LT_EOF
+- else
+- cat >&2 <<_LT_EOF
+-$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
+-$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
+-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+-$progname: and run autoconf again.
+-_LT_EOF
+- fi
+- else
+- cat >&2 <<_LT_EOF
+-$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
+-$progname: but the definition of this LT_INIT comes from revision $macro_revision.
+-$progname: You should recreate aclocal.m4 with macros from revision $package_revision
+-$progname: of $PACKAGE $VERSION and run autoconf again.
+-_LT_EOF
++ if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
++ func_fatal_configuration "not configured to build any kind of library"
+ fi
+
+- exit $EXIT_MISMATCH
+- fi
+-}
+-
++ # Darwin sucks
++ eval std_shrext=\"$shrext_cmds\"
+
+-## ----------- ##
+-## Main. ##
+-## ----------- ##
+-
+-$opt_help || {
+- # Sanity checks first:
+- func_check_version_match
+-
+- if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+- func_fatal_configuration "not configured to build any kind of library"
+- fi
++ # Only execute mode is allowed to have -dlopen flags.
++ if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
++ func_error "unrecognized option \`-dlopen'"
++ $ECHO "$help" 1>&2
++ exit $EXIT_FAILURE
++ fi
+
+- test -z "$mode" && func_fatal_error "error: you must specify a MODE."
++ # Change the help message to a mode-specific one.
++ generic_help="$help"
++ help="Try \`$progname --help --mode=$opt_mode' for more information."
++ }
+
+
+- # Darwin sucks
+- eval "std_shrext=\"$shrext_cmds\""
++ # Bail if the options were screwed
++ $exit_cmd $EXIT_FAILURE
++}
+
+
+- # Only execute mode is allowed to have -dlopen flags.
+- if test -n "$execute_dlfiles" && test "$mode" != execute; then
+- func_error "unrecognized option \`-dlopen'"
+- $ECHO "$help" 1>&2
+- exit $EXIT_FAILURE
+- fi
+
+- # Change the help message to a mode-specific one.
+- generic_help="$help"
+- help="Try \`$progname --help --mode=$mode' for more information."
+-}
+
++## ----------- ##
++## Main. ##
++## ----------- ##
+
+ # func_lalib_p file
+ # True iff FILE is a libtool `.la' library or `.lo' object file.
+@@ -1121,12 +1286,9 @@
+ # temporary ltwrapper_script.
+ func_ltwrapper_scriptname ()
+ {
+- func_ltwrapper_scriptname_result=""
+- if func_ltwrapper_executable_p "$1"; then
+- func_dirname_and_basename "$1" "" "."
+- func_stripname '' '.exe' "$func_basename_result"
+- func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+- fi
++ func_dirname_and_basename "$1" "" "."
++ func_stripname '' '.exe' "$func_basename_result"
++ func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+ }
+
+ # func_ltwrapper_p file
+@@ -1149,7 +1311,7 @@
+ save_ifs=$IFS; IFS='~'
+ for cmd in $1; do
+ IFS=$save_ifs
+- eval "cmd=\"$cmd\""
++ eval cmd=\"$cmd\"
+ func_show_eval "$cmd" "${2-:}"
+ done
+ IFS=$save_ifs
+@@ -1172,6 +1334,37 @@
+ }
+
+
++# func_resolve_sysroot PATH
++# Replace a leading = in PATH with a sysroot. Store the result into
++# func_resolve_sysroot_result
++func_resolve_sysroot ()
++{
++ func_resolve_sysroot_result=$1
++ case $func_resolve_sysroot_result in
++ =*)
++ func_stripname '=' '' "$func_resolve_sysroot_result"
++ func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
++ ;;
++ esac
++}
++
++# func_replace_sysroot PATH
++# If PATH begins with the sysroot, replace it with = and
++# store the result into func_replace_sysroot_result.
++func_replace_sysroot ()
++{
++ case "$lt_sysroot:$1" in
++ ?*:"$lt_sysroot"*)
++ func_stripname "$lt_sysroot" '' "$1"
++ func_replace_sysroot_result="=$func_stripname_result"
++ ;;
++ *)
++ # Including no sysroot.
++ func_replace_sysroot_result=$1
++ ;;
++ esac
++}
++
+ # func_infer_tag arg
+ # Infer tagged configuration to use if any are available and
+ # if one wasn't chosen via the "--tag" command line option.
+@@ -1184,8 +1377,7 @@
+ if test -n "$available_tags" && test -z "$tagname"; then
+ CC_quoted=
+ for arg in $CC; do
+- func_quote_for_eval "$arg"
+- CC_quoted="$CC_quoted $func_quote_for_eval_result"
++ func_append_quoted CC_quoted "$arg"
+ done
+ CC_expanded=`func_echo_all $CC`
+ CC_quoted_expanded=`func_echo_all $CC_quoted`
+@@ -1204,8 +1396,7 @@
+ CC_quoted=
+ for arg in $CC; do
+ # Double-quote args containing other shell metacharacters.
+- func_quote_for_eval "$arg"
+- CC_quoted="$CC_quoted $func_quote_for_eval_result"
++ func_append_quoted CC_quoted "$arg"
+ done
+ CC_expanded=`func_echo_all $CC`
+ CC_quoted_expanded=`func_echo_all $CC_quoted`
+@@ -1274,6 +1465,486 @@
+ }
+ }
+
++
++##################################################
++# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
++##################################################
++
++# func_convert_core_file_wine_to_w32 ARG
++# Helper function used by file name conversion functions when $build is *nix,
++# and $host is mingw, cygwin, or some other w32 environment. Relies on a
++# correctly configured wine environment available, with the winepath program
++# in $build's $PATH.
++#
++# ARG is the $build file name to be converted to w32 format.
++# Result is available in $func_convert_core_file_wine_to_w32_result, and will
++# be empty on error (or when ARG is empty)
++func_convert_core_file_wine_to_w32 ()
++{
++ $opt_debug
++ func_convert_core_file_wine_to_w32_result="$1"
++ if test -n "$1"; then
++ # Unfortunately, winepath does not exit with a non-zero error code, so we
++ # are forced to check the contents of stdout. On the other hand, if the
++ # command is not found, the shell will set an exit code of 127 and print
++ # *an error message* to stdout. So we must check for both error code of
++ # zero AND non-empty stdout, which explains the odd construction:
++ func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
++ if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
++ func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
++ $SED -e "$lt_sed_naive_backslashify"`
++ else
++ func_convert_core_file_wine_to_w32_result=
++ fi
++ fi
++}
++# end: func_convert_core_file_wine_to_w32
++
++
++# func_convert_core_path_wine_to_w32 ARG
++# Helper function used by path conversion functions when $build is *nix, and
++# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
++# configured wine environment available, with the winepath program in $build's
++# $PATH. Assumes ARG has no leading or trailing path separator characters.
++#
++# ARG is path to be converted from $build format to win32.
++# Result is available in $func_convert_core_path_wine_to_w32_result.
++# Unconvertible file (directory) names in ARG are skipped; if no directory names
++# are convertible, then the result may be empty.
++func_convert_core_path_wine_to_w32 ()
++{
++ $opt_debug
++ # unfortunately, winepath doesn't convert paths, only file names
++ func_convert_core_path_wine_to_w32_result=""
++ if test -n "$1"; then
++ oldIFS=$IFS
++ IFS=:
++ for func_convert_core_path_wine_to_w32_f in $1; do
++ IFS=$oldIFS
++ func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
++ if test -n "$func_convert_core_file_wine_to_w32_result" ; then
++ if test -z "$func_convert_core_path_wine_to_w32_result"; then
++ func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
++ else
++ func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
++ fi
++ fi
++ done
++ IFS=$oldIFS
++ fi
++}
++# end: func_convert_core_path_wine_to_w32
++
++
++# func_cygpath ARGS...
++# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
++# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
++# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
++# (2), returns the Cygwin file name or path in func_cygpath_result (input
++# file name or path is assumed to be in w32 format, as previously converted
++# from $build's *nix or MSYS format). In case (3), returns the w32 file name
++# or path in func_cygpath_result (input file name or path is assumed to be in
++# Cygwin format). Returns an empty string on error.
++#
++# ARGS are passed to cygpath, with the last one being the file name or path to
++# be converted.
++#
++# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
++# environment variable; do not put it in $PATH.
++func_cygpath ()
++{
++ $opt_debug
++ if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
++ func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
++ if test "$?" -ne 0; then
++ # on failure, ensure result is empty
++ func_cygpath_result=
++ fi
++ else
++ func_cygpath_result=
++ func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
++ fi
++}
++#end: func_cygpath
++
++
++# func_convert_core_msys_to_w32 ARG
++# Convert file name or path ARG from MSYS format to w32 format. Return
++# result in func_convert_core_msys_to_w32_result.
++func_convert_core_msys_to_w32 ()
++{
++ $opt_debug
++ # awkward: cmd appends spaces to result
++ func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
++ $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
++}
++#end: func_convert_core_msys_to_w32
++
++
++# func_convert_file_check ARG1 ARG2
++# Verify that ARG1 (a file name in $build format) was converted to $host
++# format in ARG2. Otherwise, emit an error message, but continue (resetting
++# func_to_host_file_result to ARG1).
++func_convert_file_check ()
++{
++ $opt_debug
++ if test -z "$2" && test -n "$1" ; then
++ func_error "Could not determine host file name corresponding to"
++ func_error " \`$1'"
++ func_error "Continuing, but uninstalled executables may not work."
++ # Fallback:
++ func_to_host_file_result="$1"
++ fi
++}
++# end func_convert_file_check
++
++
++# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
++# Verify that FROM_PATH (a path in $build format) was converted to $host
++# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
++# func_to_host_file_result to a simplistic fallback value (see below).
++func_convert_path_check ()
++{
++ $opt_debug
++ if test -z "$4" && test -n "$3"; then
++ func_error "Could not determine the host path corresponding to"
++ func_error " \`$3'"
++ func_error "Continuing, but uninstalled executables may not work."
++ # Fallback. This is a deliberately simplistic "conversion" and
++ # should not be "improved". See libtool.info.
++ if test "x$1" != "x$2"; then
++ lt_replace_pathsep_chars="s|$1|$2|g"
++ func_to_host_path_result=`echo "$3" |
++ $SED -e "$lt_replace_pathsep_chars"`
++ else
++ func_to_host_path_result="$3"
++ fi
++ fi
++}
++# end func_convert_path_check
++
++
++# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
++# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
++# and appending REPL if ORIG matches BACKPAT.
++func_convert_path_front_back_pathsep ()
++{
++ $opt_debug
++ case $4 in
++ $1 ) func_to_host_path_result="$3$func_to_host_path_result"
++ ;;
++ esac
++ case $4 in
++ $2 ) func_append func_to_host_path_result "$3"
++ ;;
++ esac
++}
++# end func_convert_path_front_back_pathsep
++
++
++##################################################
++# $build to $host FILE NAME CONVERSION FUNCTIONS #
++##################################################
++# invoked via `$to_host_file_cmd ARG'
++#
++# In each case, ARG is the path to be converted from $build to $host format.
++# Result will be available in $func_to_host_file_result.
++
++
++# func_to_host_file ARG
++# Converts the file name ARG from $build format to $host format. Return result
++# in func_to_host_file_result.
++func_to_host_file ()
++{
++ $opt_debug
++ $to_host_file_cmd "$1"
++}
++# end func_to_host_file
++
++
++# func_to_tool_file ARG LAZY
++# converts the file name ARG from $build format to toolchain format. Return
++# result in func_to_tool_file_result. If the conversion in use is listed
++# in (the comma separated) LAZY, no conversion takes place.
++func_to_tool_file ()
++{
++ $opt_debug
++ case ,$2, in
++ *,"$to_tool_file_cmd",*)
++ func_to_tool_file_result=$1
++ ;;
++ *)
++ $to_tool_file_cmd "$1"
++ func_to_tool_file_result=$func_to_host_file_result
++ ;;
++ esac
++}
++# end func_to_tool_file
++
++
++# func_convert_file_noop ARG
++# Copy ARG to func_to_host_file_result.
++func_convert_file_noop ()
++{
++ func_to_host_file_result="$1"
++}
++# end func_convert_file_noop
++
++
++# func_convert_file_msys_to_w32 ARG
++# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
++# conversion to w32 is not available inside the cwrapper. Returns result in
++# func_to_host_file_result.
++func_convert_file_msys_to_w32 ()
++{
++ $opt_debug
++ func_to_host_file_result="$1"
++ if test -n "$1"; then
++ func_convert_core_msys_to_w32 "$1"
++ func_to_host_file_result="$func_convert_core_msys_to_w32_result"
++ fi
++ func_convert_file_check "$1" "$func_to_host_file_result"
++}
++# end func_convert_file_msys_to_w32
++
++
++# func_convert_file_cygwin_to_w32 ARG
++# Convert file name ARG from Cygwin to w32 format. Returns result in
++# func_to_host_file_result.
++func_convert_file_cygwin_to_w32 ()
++{
++ $opt_debug
++ func_to_host_file_result="$1"
++ if test -n "$1"; then
++ # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
++ # LT_CYGPATH in this case.
++ func_to_host_file_result=`cygpath -m "$1"`
++ fi
++ func_convert_file_check "$1" "$func_to_host_file_result"
++}
++# end func_convert_file_cygwin_to_w32
++
++
++# func_convert_file_nix_to_w32 ARG
++# Convert file name ARG from *nix to w32 format. Requires a wine environment
++# and a working winepath. Returns result in func_to_host_file_result.
++func_convert_file_nix_to_w32 ()
++{
++ $opt_debug
++ func_to_host_file_result="$1"
++ if test -n "$1"; then
++ func_convert_core_file_wine_to_w32 "$1"
++ func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
++ fi
++ func_convert_file_check "$1" "$func_to_host_file_result"
++}
++# end func_convert_file_nix_to_w32
++
++
++# func_convert_file_msys_to_cygwin ARG
++# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
++# Returns result in func_to_host_file_result.
++func_convert_file_msys_to_cygwin ()
++{
++ $opt_debug
++ func_to_host_file_result="$1"
++ if test -n "$1"; then
++ func_convert_core_msys_to_w32 "$1"
++ func_cygpath -u "$func_convert_core_msys_to_w32_result"
++ func_to_host_file_result="$func_cygpath_result"
++ fi
++ func_convert_file_check "$1" "$func_to_host_file_result"
++}
++# end func_convert_file_msys_to_cygwin
++
++
++# func_convert_file_nix_to_cygwin ARG
++# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed
++# in a wine environment, working winepath, and LT_CYGPATH set. Returns result
++# in func_to_host_file_result.
++func_convert_file_nix_to_cygwin ()
++{
++ $opt_debug
++ func_to_host_file_result="$1"
++ if test -n "$1"; then
++ # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
++ func_convert_core_file_wine_to_w32 "$1"
++ func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
++ func_to_host_file_result="$func_cygpath_result"
++ fi
++ func_convert_file_check "$1" "$func_to_host_file_result"
++}
++# end func_convert_file_nix_to_cygwin
++
++
++#############################################
++# $build to $host PATH CONVERSION FUNCTIONS #
++#############################################
++# invoked via `$to_host_path_cmd ARG'
++#
++# In each case, ARG is the path to be converted from $build to $host format.
++# The result will be available in $func_to_host_path_result.
++#
++# Path separators are also converted from $build format to $host format. If
++# ARG begins or ends with a path separator character, it is preserved (but
++# converted to $host format) on output.
++#
++# All path conversion functions are named using the following convention:
++# file name conversion function : func_convert_file_X_to_Y ()
++# path conversion function : func_convert_path_X_to_Y ()
++# where, for any given $build/$host combination the 'X_to_Y' value is the
++# same. If conversion functions are added for new $build/$host combinations,
++# the two new functions must follow this pattern, or func_init_to_host_path_cmd
++# will break.
++
++
++# func_init_to_host_path_cmd
++# Ensures that function "pointer" variable $to_host_path_cmd is set to the
++# appropriate value, based on the value of $to_host_file_cmd.
++to_host_path_cmd=
++func_init_to_host_path_cmd ()
++{
++ $opt_debug
++ if test -z "$to_host_path_cmd"; then
++ func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
++ to_host_path_cmd="func_convert_path_${func_stripname_result}"
++ fi
++}
++
++
++# func_to_host_path ARG
++# Converts the path ARG from $build format to $host format. Return result
++# in func_to_host_path_result.
++func_to_host_path ()
++{
++ $opt_debug
++ func_init_to_host_path_cmd
++ $to_host_path_cmd "$1"
++}
++# end func_to_host_path
++
++
++# func_convert_path_noop ARG
++# Copy ARG to func_to_host_path_result.
++func_convert_path_noop ()
++{
++ func_to_host_path_result="$1"
++}
++# end func_convert_path_noop
++
++
++# func_convert_path_msys_to_w32 ARG
++# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
++# conversion to w32 is not available inside the cwrapper. Returns result in
++# func_to_host_path_result.
++func_convert_path_msys_to_w32 ()
++{
++ $opt_debug
++ func_to_host_path_result="$1"
++ if test -n "$1"; then
++ # Remove leading and trailing path separator characters from ARG. MSYS
++ # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
++ # and winepath ignores them completely.
++ func_stripname : : "$1"
++ func_to_host_path_tmp1=$func_stripname_result
++ func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
++ func_to_host_path_result="$func_convert_core_msys_to_w32_result"
++ func_convert_path_check : ";" \
++ "$func_to_host_path_tmp1" "$func_to_host_path_result"
++ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
++ fi
++}
++# end func_convert_path_msys_to_w32
++
++
++# func_convert_path_cygwin_to_w32 ARG
++# Convert path ARG from Cygwin to w32 format. Returns result in
++# func_to_host_file_result.
++func_convert_path_cygwin_to_w32 ()
++{
++ $opt_debug
++ func_to_host_path_result="$1"
++ if test -n "$1"; then
++ # See func_convert_path_msys_to_w32:
++ func_stripname : : "$1"
++ func_to_host_path_tmp1=$func_stripname_result
++ func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
++ func_convert_path_check : ";" \
++ "$func_to_host_path_tmp1" "$func_to_host_path_result"
++ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
++ fi
++}
++# end func_convert_path_cygwin_to_w32
++
++
++# func_convert_path_nix_to_w32 ARG
++# Convert path ARG from *nix to w32 format. Requires a wine environment and
++# a working winepath. Returns result in func_to_host_file_result.
++func_convert_path_nix_to_w32 ()
++{
++ $opt_debug
++ func_to_host_path_result="$1"
++ if test -n "$1"; then
++ # See func_convert_path_msys_to_w32:
++ func_stripname : : "$1"
++ func_to_host_path_tmp1=$func_stripname_result
++ func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
++ func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
++ func_convert_path_check : ";" \
++ "$func_to_host_path_tmp1" "$func_to_host_path_result"
++ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
++ fi
++}
++# end func_convert_path_nix_to_w32
++
++
++# func_convert_path_msys_to_cygwin ARG
++# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
++# Returns result in func_to_host_file_result.
++func_convert_path_msys_to_cygwin ()
++{
++ $opt_debug
++ func_to_host_path_result="$1"
++ if test -n "$1"; then
++ # See func_convert_path_msys_to_w32:
++ func_stripname : : "$1"
++ func_to_host_path_tmp1=$func_stripname_result
++ func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
++ func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
++ func_to_host_path_result="$func_cygpath_result"
++ func_convert_path_check : : \
++ "$func_to_host_path_tmp1" "$func_to_host_path_result"
++ func_convert_path_front_back_pathsep ":*" "*:" : "$1"
++ fi
++}
++# end func_convert_path_msys_to_cygwin
++
++
++# func_convert_path_nix_to_cygwin ARG
++# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a
++# a wine environment, working winepath, and LT_CYGPATH set. Returns result in
++# func_to_host_file_result.
++func_convert_path_nix_to_cygwin ()
++{
++ $opt_debug
++ func_to_host_path_result="$1"
++ if test -n "$1"; then
++ # Remove leading and trailing path separator characters from
++ # ARG. msys behavior is inconsistent here, cygpath turns them
++ # into '.;' and ';.', and winepath ignores them completely.
++ func_stripname : : "$1"
++ func_to_host_path_tmp1=$func_stripname_result
++ func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
++ func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
++ func_to_host_path_result="$func_cygpath_result"
++ func_convert_path_check : : \
++ "$func_to_host_path_tmp1" "$func_to_host_path_result"
++ func_convert_path_front_back_pathsep ":*" "*:" : "$1"
++ fi
++}
++# end func_convert_path_nix_to_cygwin
++
++
+ # func_mode_compile arg...
+ func_mode_compile ()
+ {
+@@ -1314,12 +1985,12 @@
+ ;;
+
+ -pie | -fpie | -fPIE)
+- pie_flag="$pie_flag $arg"
++ func_append pie_flag " $arg"
+ continue
+ ;;
+
+ -shared | -static | -prefer-pic | -prefer-non-pic)
+- later="$later $arg"
++ func_append later " $arg"
+ continue
+ ;;
+
+@@ -1340,15 +2011,14 @@
+ save_ifs="$IFS"; IFS=','
+ for arg in $args; do
+ IFS="$save_ifs"
+- func_quote_for_eval "$arg"
+- lastarg="$lastarg $func_quote_for_eval_result"
++ func_append_quoted lastarg "$arg"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$lastarg"
+ lastarg=$func_stripname_result
+
+ # Add the arguments to base_compile.
+- base_compile="$base_compile $lastarg"
++ func_append base_compile " $lastarg"
+ continue
+ ;;
+
+@@ -1364,8 +2034,7 @@
+ esac # case $arg_mode
+
+ # Aesthetically quote the previous argument.
+- func_quote_for_eval "$lastarg"
+- base_compile="$base_compile $func_quote_for_eval_result"
++ func_append_quoted base_compile "$lastarg"
+ done # for arg
+
+ case $arg_mode in
+@@ -1496,17 +2165,16 @@
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+- removelist="$removelist $output_obj"
++ func_append removelist " $output_obj"
+ $ECHO "$srcfile" > "$lockfile"
+ fi
+
+ $opt_dry_run || $RM $removelist
+- removelist="$removelist $lockfile"
++ func_append removelist " $lockfile"
+ trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
+
+- if test -n "$fix_srcfile_path"; then
+- eval "srcfile=\"$fix_srcfile_path\""
+- fi
++ func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
++ srcfile=$func_to_tool_file_result
+ func_quote_for_eval "$srcfile"
+ qsrcfile=$func_quote_for_eval_result
+
+@@ -1526,7 +2194,7 @@
+
+ if test -z "$output_obj"; then
+ # Place PIC objects in $objdir
+- command="$command -o $lobj"
++ func_append command " -o $lobj"
+ fi
+
+ func_show_eval_locale "$command" \
+@@ -1573,11 +2241,11 @@
+ command="$base_compile $qsrcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+- command="$command -o $obj"
++ func_append command " -o $obj"
+ fi
+
+ # Suppress compiler output if we already did a PIC compilation.
+- command="$command$suppress_output"
++ func_append command "$suppress_output"
+ func_show_eval_locale "$command" \
+ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
+
+@@ -1622,13 +2290,13 @@
+ }
+
+ $opt_help || {
+- test "$mode" = compile && func_mode_compile ${1+"$@"}
++ test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
+ }
+
+ func_mode_help ()
+ {
+ # We need to display help for each of the modes.
+- case $mode in
++ case $opt_mode in
+ "")
+ # Generic help is extracted from the usage comments
+ # at the start of this file.
+@@ -1659,8 +2327,8 @@
+
+ -o OUTPUT-FILE set the output file name to OUTPUT-FILE
+ -no-suppress do not suppress compiler output for multiple passes
+- -prefer-pic try to building PIC objects only
+- -prefer-non-pic try to building non-PIC objects only
++ -prefer-pic try to build PIC objects only
++ -prefer-non-pic try to build non-PIC objects only
+ -shared do not build a \`.o' file suitable for static linking
+ -static only build a \`.o' file suitable for static linking
+ -Wc,FLAG pass FLAG directly to the compiler
+@@ -1804,7 +2472,7 @@
+ ;;
+
+ *)
+- func_fatal_help "invalid operation mode \`$mode'"
++ func_fatal_help "invalid operation mode \`$opt_mode'"
+ ;;
+ esac
+
+@@ -1819,13 +2487,13 @@
+ else
+ {
+ func_help noexit
+- for mode in compile link execute install finish uninstall clean; do
++ for opt_mode in compile link execute install finish uninstall clean; do
+ func_mode_help
+ done
+ } | sed -n '1p; 2,$s/^Usage:/ or: /p'
+ {
+ func_help noexit
+- for mode in compile link execute install finish uninstall clean; do
++ for opt_mode in compile link execute install finish uninstall clean; do
+ echo
+ func_mode_help
+ done
+@@ -1854,13 +2522,16 @@
+ func_fatal_help "you must specify a COMMAND"
+
+ # Handle -dlopen flags immediately.
+- for file in $execute_dlfiles; do
++ for file in $opt_dlopen; do
+ test -f "$file" \
+ || func_fatal_help "\`$file' is not a file"
+
+ dir=
+ case $file in
+ *.la)
++ func_resolve_sysroot "$file"
++ file=$func_resolve_sysroot_result
++
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$file" \
+ || func_fatal_help "\`$lib' is not a valid libtool archive"
+@@ -1882,7 +2553,7 @@
+ dir="$func_dirname_result"
+
+ if test -f "$dir/$objdir/$dlname"; then
+- dir="$dir/$objdir"
++ func_append dir "/$objdir"
+ else
+ if test ! -f "$dir/$dlname"; then
+ func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
+@@ -1907,10 +2578,10 @@
+ test -n "$absdir" && dir="$absdir"
+
+ # Now add the directory to shlibpath_var.
+- if eval test -z \"\$$shlibpath_var\"; then
+- eval $shlibpath_var=\$dir
++ if eval "test -z \"\$$shlibpath_var\""; then
++ eval "$shlibpath_var=\"\$dir\""
+ else
+- eval $shlibpath_var=\$dir:\$$shlibpath_var
++ eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+ fi
+ done
+
+@@ -1939,8 +2610,7 @@
+ ;;
+ esac
+ # Quote arguments (to preserve shell metacharacters).
+- func_quote_for_eval "$file"
+- args="$args $func_quote_for_eval_result"
++ func_append_quoted args "$file"
+ done
+
+ if test "X$opt_dry_run" = Xfalse; then
+@@ -1972,22 +2642,59 @@
+ fi
+ }
+
+-test "$mode" = execute && func_mode_execute ${1+"$@"}
++test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
+
+
+ # func_mode_finish arg...
+ func_mode_finish ()
+ {
+ $opt_debug
+- libdirs="$nonopt"
++ libs=
++ libdirs=
+ admincmds=
+
+- if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+- for dir
+- do
+- libdirs="$libdirs $dir"
+- done
++ for opt in "$nonopt" ${1+"$@"}
++ do
++ if test -d "$opt"; then
++ func_append libdirs " $opt"
++
++ elif test -f "$opt"; then
++ if func_lalib_unsafe_p "$opt"; then
++ func_append libs " $opt"
++ else
++ func_warning "\`$opt' is not a valid libtool archive"
++ fi
++
++ else
++ func_fatal_error "invalid argument \`$opt'"
++ fi
++ done
++
++ if test -n "$libs"; then
++ if test -n "$lt_sysroot"; then
++ sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
++ sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
++ else
++ sysroot_cmd=
++ fi
++
++ # Remove sysroot references
++ if $opt_dry_run; then
++ for lib in $libs; do
++ echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
++ done
++ else
++ tmpdir=`func_mktempdir`
++ for lib in $libs; do
++ sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
++ > $tmpdir/tmp-la
++ mv -f $tmpdir/tmp-la $lib
++ done
++ ${RM}r "$tmpdir"
++ fi
++ fi
+
++ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ for libdir in $libdirs; do
+ if test -n "$finish_cmds"; then
+ # Do each command in the finish commands.
+@@ -1997,7 +2704,7 @@
+ if test -n "$finish_eval"; then
+ # Do the single finish_eval.
+ eval cmds=\"$finish_eval\"
+- $opt_dry_run || eval "$cmds" || admincmds="$admincmds
++ $opt_dry_run || eval "$cmds" || func_append admincmds "
+ $cmds"
+ fi
+ done
+@@ -2006,53 +2713,55 @@
+ # Exit here if they wanted silent mode.
+ $opt_silent && exit $EXIT_SUCCESS
+
+- echo "----------------------------------------------------------------------"
+- echo "Libraries have been installed in:"
+- for libdir in $libdirs; do
+- $ECHO " $libdir"
+- done
+- echo
+- echo "If you ever happen to want to link against installed libraries"
+- echo "in a given directory, LIBDIR, you must either use libtool, and"
+- echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+- echo "flag during linking and do at least one of the following:"
+- if test -n "$shlibpath_var"; then
+- echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
+- echo " during execution"
+- fi
+- if test -n "$runpath_var"; then
+- echo " - add LIBDIR to the \`$runpath_var' environment variable"
+- echo " during linking"
+- fi
+- if test -n "$hardcode_libdir_flag_spec"; then
+- libdir=LIBDIR
+- eval "flag=\"$hardcode_libdir_flag_spec\""
++ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
++ echo "----------------------------------------------------------------------"
++ echo "Libraries have been installed in:"
++ for libdir in $libdirs; do
++ $ECHO " $libdir"
++ done
++ echo
++ echo "If you ever happen to want to link against installed libraries"
++ echo "in a given directory, LIBDIR, you must either use libtool, and"
++ echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
++ echo "flag during linking and do at least one of the following:"
++ if test -n "$shlibpath_var"; then
++ echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
++ echo " during execution"
++ fi
++ if test -n "$runpath_var"; then
++ echo " - add LIBDIR to the \`$runpath_var' environment variable"
++ echo " during linking"
++ fi
++ if test -n "$hardcode_libdir_flag_spec"; then
++ libdir=LIBDIR
++ eval flag=\"$hardcode_libdir_flag_spec\"
+
+- $ECHO " - use the \`$flag' linker flag"
+- fi
+- if test -n "$admincmds"; then
+- $ECHO " - have your system administrator run these commands:$admincmds"
+- fi
+- if test -f /etc/ld.so.conf; then
+- echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+- fi
+- echo
++ $ECHO " - use the \`$flag' linker flag"
++ fi
++ if test -n "$admincmds"; then
++ $ECHO " - have your system administrator run these commands:$admincmds"
++ fi
++ if test -f /etc/ld.so.conf; then
++ echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
++ fi
++ echo
+
+- echo "See any operating system documentation about shared libraries for"
+- case $host in
+- solaris2.[6789]|solaris2.1[0-9])
+- echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+- echo "pages."
+- ;;
+- *)
+- echo "more information, such as the ld(1) and ld.so(8) manual pages."
+- ;;
+- esac
+- echo "----------------------------------------------------------------------"
++ echo "See any operating system documentation about shared libraries for"
++ case $host in
++ solaris2.[6789]|solaris2.1[0-9])
++ echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
++ echo "pages."
++ ;;
++ *)
++ echo "more information, such as the ld(1) and ld.so(8) manual pages."
++ ;;
++ esac
++ echo "----------------------------------------------------------------------"
++ fi
+ exit $EXIT_SUCCESS
+ }
+
+-test "$mode" = finish && func_mode_finish ${1+"$@"}
++test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
+
+
+ # func_mode_install arg...
+@@ -2077,7 +2786,7 @@
+ # The real first argument should be the name of the installation program.
+ # Aesthetically quote it.
+ func_quote_for_eval "$arg"
+- install_prog="$install_prog$func_quote_for_eval_result"
++ func_append install_prog "$func_quote_for_eval_result"
+ install_shared_prog=$install_prog
+ case " $install_prog " in
+ *[\\\ /]cp\ *) install_cp=: ;;
+@@ -2097,7 +2806,7 @@
+ do
+ arg2=
+ if test -n "$dest"; then
+- files="$files $dest"
++ func_append files " $dest"
+ dest=$arg
+ continue
+ fi
+@@ -2135,11 +2844,11 @@
+
+ # Aesthetically quote the argument.
+ func_quote_for_eval "$arg"
+- install_prog="$install_prog $func_quote_for_eval_result"
++ func_append install_prog " $func_quote_for_eval_result"
+ if test -n "$arg2"; then
+ func_quote_for_eval "$arg2"
+ fi
+- install_shared_prog="$install_shared_prog $func_quote_for_eval_result"
++ func_append install_shared_prog " $func_quote_for_eval_result"
+ done
+
+ test -z "$install_prog" && \
+@@ -2151,7 +2860,7 @@
+ if test -n "$install_override_mode" && $no_mode; then
+ if $install_cp; then :; else
+ func_quote_for_eval "$install_override_mode"
+- install_shared_prog="$install_shared_prog -m $func_quote_for_eval_result"
++ func_append install_shared_prog " -m $func_quote_for_eval_result"
+ fi
+ fi
+
+@@ -2209,10 +2918,13 @@
+ case $file in
+ *.$libext)
+ # Do the static libraries later.
+- staticlibs="$staticlibs $file"
++ func_append staticlibs " $file"
+ ;;
+
+ *.la)
++ func_resolve_sysroot "$file"
++ file=$func_resolve_sysroot_result
++
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$file" \
+ || func_fatal_help "\`$file' is not a valid libtool archive"
+@@ -2226,23 +2938,30 @@
+ if test "X$destdir" = "X$libdir"; then
+ case "$current_libdirs " in
+ *" $libdir "*) ;;
+- *) current_libdirs="$current_libdirs $libdir" ;;
++ *) func_append current_libdirs " $libdir" ;;
+ esac
+ else
+ # Note the libdir as a future libdir.
+ case "$future_libdirs " in
+ *" $libdir "*) ;;
+- *) future_libdirs="$future_libdirs $libdir" ;;
++ *) func_append future_libdirs " $libdir" ;;
+ esac
+ fi
+
+ func_dirname "$file" "/" ""
+ dir="$func_dirname_result"
+- dir="$dir$objdir"
++ func_append dir "$objdir"
+
+ if test -n "$relink_command"; then
++ # Strip any trailing slash from the destination.
++ func_stripname '' '/' "$libdir"
++ destlibdir=$func_stripname_result
++
++ func_stripname '' '/' "$destdir"
++ s_destdir=$func_stripname_result
++
+ # Determine the prefix the user has applied to our future dir.
+- inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
++ inst_prefix_dir=`$ECHO "X$s_destdir" | $Xsed -e "s%$destlibdir\$%%"`
+
+ # Don't allow the user to place us outside of our expected
+ # location b/c this prevents finding dependent libraries that
+@@ -2315,7 +3034,7 @@
+ func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
+
+ # Maybe install the static library, too.
+- test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
++ test -n "$old_library" && func_append staticlibs " $dir/$old_library"
+ ;;
+
+ *.lo)
+@@ -2503,7 +3222,7 @@
+ test -n "$future_libdirs" && \
+ func_warning "remember to run \`$progname --finish$future_libdirs'"
+
+- if test -n "$current_libdirs" && $opt_finish; then
++ if test -n "$current_libdirs"; then
+ # Maybe just do a dry run.
+ $opt_dry_run && current_libdirs=" -n$current_libdirs"
+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+@@ -2512,7 +3231,7 @@
+ fi
+ }
+
+-test "$mode" = install && func_mode_install ${1+"$@"}
++test "$opt_mode" = install && func_mode_install ${1+"$@"}
+
+
+ # func_generate_dlsyms outputname originator pic_p
+@@ -2559,6 +3278,18 @@
+ #pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
+ #endif
+
++/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
++#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
++/* DATA imports from DLLs on WIN32 con't be const, because runtime
++ relocations are performed -- see ld's documentation on pseudo-relocs. */
++# define LT_DLSYM_CONST
++#elif defined(__osf__)
++/* This system does not cope well with relocations in const data. */
++# define LT_DLSYM_CONST
++#else
++# define LT_DLSYM_CONST const
++#endif
++
+ /* External symbol declarations for the compiler. */\
+ "
+
+@@ -2570,21 +3301,22 @@
+ # Add our own program objects to the symbol list.
+ progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+ for progfile in $progfiles; do
+- func_verbose "extracting global C symbols from \`$progfile'"
+- $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
++ func_to_tool_file "$progfile" func_convert_file_msys_to_w32
++ func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
++ $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -n "$exclude_expsyms"; then
+ $opt_dry_run || {
+- $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+- $MV "$nlist"T "$nlist"
++ eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
++ eval '$MV "$nlist"T "$nlist"'
+ }
+ fi
+
+ if test -n "$export_symbols_regex"; then
+ $opt_dry_run || {
+- $EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T
+- $MV "$nlist"T "$nlist"
++ eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
++ eval '$MV "$nlist"T "$nlist"'
+ }
+ fi
+
+@@ -2593,23 +3325,23 @@
+ export_symbols="$output_objdir/$outputname.exp"
+ $opt_dry_run || {
+ $RM $export_symbols
+- ${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' < "$nlist" > "$export_symbols"
++ eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+- echo EXPORTS > "$output_objdir/$outputname.def"
+- cat "$export_symbols" >> "$output_objdir/$outputname.def"
++ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
++ eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ }
+ else
+ $opt_dry_run || {
+- ${SED} -e 's/\([].[*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/' < "$export_symbols" > "$output_objdir/$outputname.exp"
+- $GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T
+- $MV "$nlist"T "$nlist"
++ eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
++ eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
++ eval '$MV "$nlist"T "$nlist"'
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+- echo EXPORTS > "$output_objdir/$outputname.def"
+- cat "$nlist" >> "$output_objdir/$outputname.def"
++ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
++ eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ }
+@@ -2620,10 +3352,52 @@
+ func_verbose "extracting global C symbols from \`$dlprefile'"
+ func_basename "$dlprefile"
+ name="$func_basename_result"
+- $opt_dry_run || {
+- $ECHO ": $name " >> "$nlist"
+- eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+- }
++ case $host in
++ *cygwin* | *mingw* | *cegcc* )
++ # if an import library, we need to obtain dlname
++ if func_win32_import_lib_p "$dlprefile"; then
++ func_tr_sh "$dlprefile"
++ eval "curr_lafile=\$libfile_$func_tr_sh_result"
++ dlprefile_dlbasename=""
++ if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
++ # Use subshell, to avoid clobbering current variable values
++ dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
++ if test -n "$dlprefile_dlname" ; then
++ func_basename "$dlprefile_dlname"
++ dlprefile_dlbasename="$func_basename_result"
++ else
++ # no lafile. user explicitly requested -dlpreopen <import library>.
++ $sharedlib_from_linklib_cmd "$dlprefile"
++ dlprefile_dlbasename=$sharedlib_from_linklib_result
++ fi
++ fi
++ $opt_dry_run || {
++ if test -n "$dlprefile_dlbasename" ; then
++ eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
++ else
++ func_warning "Could not compute DLL name from $name"
++ eval '$ECHO ": $name " >> "$nlist"'
++ fi
++ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
++ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
++ $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
++ }
++ else # not an import lib
++ $opt_dry_run || {
++ eval '$ECHO ": $name " >> "$nlist"'
++ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
++ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
++ }
++ fi
++ ;;
++ *)
++ $opt_dry_run || {
++ eval '$ECHO ": $name " >> "$nlist"'
++ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
++ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
++ }
++ ;;
++ esac
+ done
+
+ $opt_dry_run || {
+@@ -2661,26 +3435,9 @@
+ const char *name;
+ void *address;
+ } lt_dlsymlist;
+-"
+- case $host in
+- *cygwin* | *mingw* | *cegcc* )
+- echo >> "$output_objdir/$my_dlsyms" "\
+-/* DATA imports from DLLs on WIN32 con't be const, because
+- runtime relocations are performed -- see ld's documentation
+- on pseudo-relocs. */"
+- lt_dlsym_const= ;;
+- *osf5*)
+- echo >> "$output_objdir/$my_dlsyms" "\
+-/* This system does not cope well with relocations in const data */"
+- lt_dlsym_const= ;;
+- *)
+- lt_dlsym_const=const ;;
+- esac
+-
+- echo >> "$output_objdir/$my_dlsyms" "\
+-extern $lt_dlsym_const lt_dlsymlist
++extern LT_DLSYM_CONST lt_dlsymlist
+ lt_${my_prefix}_LTX_preloaded_symbols[];
+-$lt_dlsym_const lt_dlsymlist
++LT_DLSYM_CONST lt_dlsymlist
+ lt_${my_prefix}_LTX_preloaded_symbols[] =
+ {\
+ { \"$my_originator\", (void *) 0 },"
+@@ -2736,7 +3493,7 @@
+ for arg in $LTCFLAGS; do
+ case $arg in
+ -pie | -fpie | -fPIE) ;;
+- *) symtab_cflags="$symtab_cflags $arg" ;;
++ *) func_append symtab_cflags " $arg" ;;
+ esac
+ done
+
+@@ -2796,9 +3553,11 @@
+ win32_libid_type="x86 archive import"
+ ;;
+ *ar\ archive*) # could be an import, or static
+- if $OBJDUMP -f "$1" | $SED -e '10q' 2>/dev/null |
+- $EGREP 'file format (pe-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
+- win32_nmres=`$NM -f posix -A "$1" |
++ # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
++ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
++ $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
++ func_to_tool_file "$1" func_convert_file_msys_to_w32
++ win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
+ $SED -n -e '
+ 1,100{
+ / I /{
+@@ -2827,6 +3586,131 @@
+ $ECHO "$win32_libid_type"
+ }
+
++# func_cygming_dll_for_implib ARG
++#
++# Platform-specific function to extract the
++# name of the DLL associated with the specified
++# import library ARG.
++# Invoked by eval'ing the libtool variable
++# $sharedlib_from_linklib_cmd
++# Result is available in the variable
++# $sharedlib_from_linklib_result
++func_cygming_dll_for_implib ()
++{
++ $opt_debug
++ sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
++}
++
++# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
++#
++# The is the core of a fallback implementation of a
++# platform-specific function to extract the name of the
++# DLL associated with the specified import library LIBNAME.
++#
++# SECTION_NAME is either .idata$6 or .idata$7, depending
++# on the platform and compiler that created the implib.
++#
++# Echos the name of the DLL associated with the
++# specified import library.
++func_cygming_dll_for_implib_fallback_core ()
++{
++ $opt_debug
++ match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
++ $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
++ $SED '/^Contents of section '"$match_literal"':/{
++ # Place marker at beginning of archive member dllname section
++ s/.*/====MARK====/
++ p
++ d
++ }
++ # These lines can sometimes be longer than 43 characters, but
++ # are always uninteresting
++ /:[ ]*file format pe[i]\{,1\}-/d
++ /^In archive [^:]*:/d
++ # Ensure marker is printed
++ /^====MARK====/p
++ # Remove all lines with less than 43 characters
++ /^.\{43\}/!d
++ # From remaining lines, remove first 43 characters
++ s/^.\{43\}//' |
++ $SED -n '
++ # Join marker and all lines until next marker into a single line
++ /^====MARK====/ b para
++ H
++ $ b para
++ b
++ :para
++ x
++ s/\n//g
++ # Remove the marker
++ s/^====MARK====//
++ # Remove trailing dots and whitespace
++ s/[\. \t]*$//
++ # Print
++ /./p' |
++ # we now have a list, one entry per line, of the stringified
++ # contents of the appropriate section of all members of the
++ # archive which possess that section. Heuristic: eliminate
++ # all those which have a first or second character that is
++ # a '.' (that is, objdump's representation of an unprintable
++ # character.) This should work for all archives with less than
++ # 0x302f exports -- but will fail for DLLs whose name actually
++ # begins with a literal '.' or a single character followed by
++ # a '.'.
++ #
++ # Of those that remain, print the first one.
++ $SED -e '/^\./d;/^.\./d;q'
++}
++
++# func_cygming_gnu_implib_p ARG
++# This predicate returns with zero status (TRUE) if
++# ARG is a GNU/binutils-style import library. Returns
++# with nonzero status (FALSE) otherwise.
++func_cygming_gnu_implib_p ()
++{
++ $opt_debug
++ func_to_tool_file "$1" func_convert_file_msys_to_w32
++ func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
++ test -n "$func_cygming_gnu_implib_tmp"
++}
++
++# func_cygming_ms_implib_p ARG
++# This predicate returns with zero status (TRUE) if
++# ARG is an MS-style import library. Returns
++# with nonzero status (FALSE) otherwise.
++func_cygming_ms_implib_p ()
++{
++ $opt_debug
++ func_to_tool_file "$1" func_convert_file_msys_to_w32
++ func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
++ test -n "$func_cygming_ms_implib_tmp"
++}
++
++# func_cygming_dll_for_implib_fallback ARG
++# Platform-specific function to extract the
++# name of the DLL associated with the specified
++# import library ARG.
++#
++# This fallback implementation is for use when $DLLTOOL
++# does not support the --identify-strict option.
++# Invoked by eval'ing the libtool variable
++# $sharedlib_from_linklib_cmd
++# Result is available in the variable
++# $sharedlib_from_linklib_result
++func_cygming_dll_for_implib_fallback ()
++{
++ $opt_debug
++ if func_cygming_gnu_implib_p "$1" ; then
++ # binutils import library
++ sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
++ elif func_cygming_ms_implib_p "$1" ; then
++ # ms-generated import library
++ sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
++ else
++ # unknown
++ sharedlib_from_linklib_result=""
++ fi
++}
+
+
+ # func_extract_an_archive dir oldlib
+@@ -2917,7 +3801,7 @@
+ darwin_file=
+ darwin_files=
+ for darwin_file in $darwin_filelist; do
+- darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
++ darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
+ $LIPO -create -output "$darwin_file" $darwin_files
+ done # $darwin_filelist
+ $RM -rf unfat-$$
+@@ -2932,7 +3816,7 @@
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ ;;
+ esac
+- my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
++ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
+ done
+
+ func_extract_archives_result="$my_oldobjs"
+@@ -3014,7 +3898,110 @@
+ _LTECHO_EOF'
+ }
+ ECHO=\"$qECHO\"
+- fi\
++ fi
++
++# Very basic option parsing. These options are (a) specific to
++# the libtool wrapper, (b) are identical between the wrapper
++# /script/ and the wrapper /executable/ which is used only on
++# windows platforms, and (c) all begin with the string "--lt-"
++# (application programs are unlikely to have options which match
++# this pattern).
++#
++# There are only two supported options: --lt-debug and
++# --lt-dump-script. There is, deliberately, no --lt-help.
++#
++# The first argument to this parsing function should be the
++# script's $0 value, followed by "$@".
++lt_option_debug=
++func_parse_lt_options ()
++{
++ lt_script_arg0=\$0
++ shift
++ for lt_opt
++ do
++ case \"\$lt_opt\" in
++ --lt-debug) lt_option_debug=1 ;;
++ --lt-dump-script)
++ lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
++ test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
++ lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
++ cat \"\$lt_dump_D/\$lt_dump_F\"
++ exit 0
++ ;;
++ --lt-*)
++ \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
++ exit 1
++ ;;
++ esac
++ done
++
++ # Print the debug banner immediately:
++ if test -n \"\$lt_option_debug\"; then
++ echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
++ fi
++}
++
++# Used when --lt-debug. Prints its arguments to stdout
++# (redirection is the responsibility of the caller)
++func_lt_dump_args ()
++{
++ lt_dump_args_N=1;
++ for lt_arg
++ do
++ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
++ lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
++ done
++}
++
++# Core function for launching the target application
++func_exec_program_core ()
++{
++"
++ case $host in
++ # Backslashes separate directories on plain windows
++ *-*-mingw | *-*-os2* | *-cegcc*)
++ $ECHO "\
++ if test -n \"\$lt_option_debug\"; then
++ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
++ func_lt_dump_args \${1+\"\$@\"} 1>&2
++ fi
++ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
++"
++ ;;
++
++ *)
++ $ECHO "\
++ if test -n \"\$lt_option_debug\"; then
++ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
++ func_lt_dump_args \${1+\"\$@\"} 1>&2
++ fi
++ exec \"\$progdir/\$program\" \${1+\"\$@\"}
++"
++ ;;
++ esac
++ $ECHO "\
++ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
++ exit 1
++}
++
++# A function to encapsulate launching the target application
++# Strips options in the --lt-* namespace from \$@ and
++# launches target application with the remaining arguments.
++func_exec_program ()
++{
++ for lt_wr_arg
++ do
++ case \$lt_wr_arg in
++ --lt-*) ;;
++ *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
++ esac
++ shift
++ done
++ func_exec_program_core \${1+\"\$@\"}
++}
++
++ # Parse options
++ func_parse_lt_options \"\$0\" \${1+\"\$@\"}
+
+ # Find the directory that this script lives in.
+ thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
+@@ -3078,7 +4065,7 @@
+
+ # relink executable if necessary
+ if test -n \"\$relink_command\"; then
+- if relink_command_output=\`eval \"\$relink_command\" 2>&1\`; then :
++ if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+ else
+ $ECHO \"\$relink_command_output\" >&2
+ $RM \"\$progdir/\$file\"
+@@ -3102,6 +4089,18 @@
+
+ if test -f \"\$progdir/\$program\"; then"
+
++ # fixup the dll searchpath if we need to.
++ #
++ # Fix the DLL searchpath if we need to. Do this before prepending
++ # to shlibpath, because on Windows, both are PATH and uninstalled
++ # libraries must come first.
++ if test -n "$dllsearchpath"; then
++ $ECHO "\
++ # Add the dll search path components to the executable PATH
++ PATH=$dllsearchpath:\$PATH
++"
++ fi
++
+ # Export our shlibpath_var if we have one.
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ $ECHO "\
+@@ -3116,35 +4115,10 @@
+ "
+ fi
+
+- # fixup the dll searchpath if we need to.
+- if test -n "$dllsearchpath"; then
+- $ECHO "\
+- # Add the dll search path components to the executable PATH
+- PATH=$dllsearchpath:\$PATH
+-"
+- fi
+-
+ $ECHO "\
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ # Run the actual program with our arguments.
+-"
+- case $host in
+- # Backslashes separate directories on plain windows
+- *-*-mingw | *-*-os2* | *-cegcc*)
+- $ECHO "\
+- exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+-"
+- ;;
+-
+- *)
+- $ECHO "\
+- exec \"\$progdir/\$program\" \${1+\"\$@\"}
+-"
+- ;;
+- esac
+- $ECHO "\
+- \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+- exit 1
++ func_exec_program \${1+\"\$@\"}
+ fi
+ else
+ # The program doesn't exist.
+@@ -3158,166 +4132,6 @@
+ }
+
+
+-# func_to_host_path arg
+-#
+-# Convert paths to host format when used with build tools.
+-# Intended for use with "native" mingw (where libtool itself
+-# is running under the msys shell), or in the following cross-
+-# build environments:
+-# $build $host
+-# mingw (msys) mingw [e.g. native]
+-# cygwin mingw
+-# *nix + wine mingw
+-# where wine is equipped with the `winepath' executable.
+-# In the native mingw case, the (msys) shell automatically
+-# converts paths for any non-msys applications it launches,
+-# but that facility isn't available from inside the cwrapper.
+-# Similar accommodations are necessary for $host mingw and
+-# $build cygwin. Calling this function does no harm for other
+-# $host/$build combinations not listed above.
+-#
+-# ARG is the path (on $build) that should be converted to
+-# the proper representation for $host. The result is stored
+-# in $func_to_host_path_result.
+-func_to_host_path ()
+-{
+- func_to_host_path_result="$1"
+- if test -n "$1"; then
+- case $host in
+- *mingw* )
+- lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+- case $build in
+- *mingw* ) # actually, msys
+- # awkward: cmd appends spaces to result
+- func_to_host_path_result=`( cmd //c echo "$1" ) 2>/dev/null |
+- $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
+- ;;
+- *cygwin* )
+- func_to_host_path_result=`cygpath -w "$1" |
+- $SED -e "$lt_sed_naive_backslashify"`
+- ;;
+- * )
+- # Unfortunately, winepath does not exit with a non-zero
+- # error code, so we are forced to check the contents of
+- # stdout. On the other hand, if the command is not
+- # found, the shell will set an exit code of 127 and print
+- # *an error message* to stdout. So we must check for both
+- # error code of zero AND non-empty stdout, which explains
+- # the odd construction:
+- func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
+- if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
+- func_to_host_path_result=`$ECHO "$func_to_host_path_tmp1" |
+- $SED -e "$lt_sed_naive_backslashify"`
+- else
+- # Allow warning below.
+- func_to_host_path_result=
+- fi
+- ;;
+- esac
+- if test -z "$func_to_host_path_result" ; then
+- func_error "Could not determine host path corresponding to"
+- func_error " \`$1'"
+- func_error "Continuing, but uninstalled executables may not work."
+- # Fallback:
+- func_to_host_path_result="$1"
+- fi
+- ;;
+- esac
+- fi
+-}
+-# end: func_to_host_path
+-
+-# func_to_host_pathlist arg
+-#
+-# Convert pathlists to host format when used with build tools.
+-# See func_to_host_path(), above. This function supports the
+-# following $build/$host combinations (but does no harm for
+-# combinations not listed here):
+-# $build $host
+-# mingw (msys) mingw [e.g. native]
+-# cygwin mingw
+-# *nix + wine mingw
+-#
+-# Path separators are also converted from $build format to
+-# $host format. If ARG begins or ends with a path separator
+-# character, it is preserved (but converted to $host format)
+-# on output.
+-#
+-# ARG is a pathlist (on $build) that should be converted to
+-# the proper representation on $host. The result is stored
+-# in $func_to_host_pathlist_result.
+-func_to_host_pathlist ()
+-{
+- func_to_host_pathlist_result="$1"
+- if test -n "$1"; then
+- case $host in
+- *mingw* )
+- lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+- # Remove leading and trailing path separator characters from
+- # ARG. msys behavior is inconsistent here, cygpath turns them
+- # into '.;' and ';.', and winepath ignores them completely.
+- func_stripname : : "$1"
+- func_to_host_pathlist_tmp1=$func_stripname_result
+- case $build in
+- *mingw* ) # Actually, msys.
+- # Awkward: cmd appends spaces to result.
+- func_to_host_pathlist_result=`
+- ( cmd //c echo "$func_to_host_pathlist_tmp1" ) 2>/dev/null |
+- $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
+- ;;
+- *cygwin* )
+- func_to_host_pathlist_result=`cygpath -w -p "$func_to_host_pathlist_tmp1" |
+- $SED -e "$lt_sed_naive_backslashify"`
+- ;;
+- * )
+- # unfortunately, winepath doesn't convert pathlists
+- func_to_host_pathlist_result=""
+- func_to_host_pathlist_oldIFS=$IFS
+- IFS=:
+- for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
+- IFS=$func_to_host_pathlist_oldIFS
+- if test -n "$func_to_host_pathlist_f" ; then
+- func_to_host_path "$func_to_host_pathlist_f"
+- if test -n "$func_to_host_path_result" ; then
+- if test -z "$func_to_host_pathlist_result" ; then
+- func_to_host_pathlist_result="$func_to_host_path_result"
+- else
+- func_append func_to_host_pathlist_result ";$func_to_host_path_result"
+- fi
+- fi
+- fi
+- done
+- IFS=$func_to_host_pathlist_oldIFS
+- ;;
+- esac
+- if test -z "$func_to_host_pathlist_result"; then
+- func_error "Could not determine the host path(s) corresponding to"
+- func_error " \`$1'"
+- func_error "Continuing, but uninstalled executables may not work."
+- # Fallback. This may break if $1 contains DOS-style drive
+- # specifications. The fix is not to complicate the expression
+- # below, but for the user to provide a working wine installation
+- # with winepath so that path translation in the cross-to-mingw
+- # case works properly.
+- lt_replace_pathsep_nix_to_dos="s|:|;|g"
+- func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
+- $SED -e "$lt_replace_pathsep_nix_to_dos"`
+- fi
+- # Now, add the leading and trailing path separators back
+- case "$1" in
+- :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
+- ;;
+- esac
+- case "$1" in
+- *: ) func_append func_to_host_pathlist_result ";"
+- ;;
+- esac
+- ;;
+- esac
+- fi
+-}
+-# end: func_to_host_pathlist
+-
+ # func_emit_cwrapperexe_src
+ # emit the source code for a wrapper executable on stdout
+ # Must ONLY be called from within func_mode_link because
+@@ -3334,10 +4148,6 @@
+
+ This wrapper executable should never be moved out of the build directory.
+ If it is, it will not operate correctly.
+-
+- Currently, it simply execs the wrapper *script* "$SHELL $output",
+- but could eventually absorb all of the scripts functionality and
+- exec $objdir/$outputname directly.
+ */
+ EOF
+ cat <<"EOF"
+@@ -3462,22 +4272,13 @@
+ if (stale) { free ((void *) stale); stale = 0; } \
+ } while (0)
+
+-#undef LTWRAPPER_DEBUGPRINTF
+-#if defined LT_DEBUGWRAPPER
+-# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
+-static void
+-ltwrapper_debugprintf (const char *fmt, ...)
+-{
+- va_list args;
+- va_start (args, fmt);
+- (void) vfprintf (stderr, fmt, args);
+- va_end (args);
+-}
++#if defined(LT_DEBUGWRAPPER)
++static int lt_debug = 1;
+ #else
+-# define LTWRAPPER_DEBUGPRINTF(args)
++static int lt_debug = 0;
+ #endif
+
+-const char *program_name = NULL;
++const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
+
+ void *xmalloc (size_t num);
+ char *xstrdup (const char *string);
+@@ -3487,7 +4288,10 @@
+ int make_executable (const char *path);
+ int check_executable (const char *path);
+ char *strendzap (char *str, const char *pat);
+-void lt_fatal (const char *message, ...);
++void lt_debugprintf (const char *file, int line, const char *fmt, ...);
++void lt_fatal (const char *file, int line, const char *message, ...);
++static const char *nonnull (const char *s);
++static const char *nonempty (const char *s);
+ void lt_setenv (const char *name, const char *value);
+ char *lt_extend_str (const char *orig_value, const char *add, int to_end);
+ void lt_update_exe_path (const char *name, const char *value);
+@@ -3497,14 +4301,14 @@
+ EOF
+
+ cat <<EOF
+-const char * MAGIC_EXE = "$magic_exe";
++volatile const char * MAGIC_EXE = "$magic_exe";
+ const char * LIB_PATH_VARNAME = "$shlibpath_var";
+ EOF
+
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+- func_to_host_pathlist "$temp_rpath"
++ func_to_host_path "$temp_rpath"
+ cat <<EOF
+-const char * LIB_PATH_VALUE = "$func_to_host_pathlist_result";
++const char * LIB_PATH_VALUE = "$func_to_host_path_result";
+ EOF
+ else
+ cat <<"EOF"
+@@ -3513,10 +4317,10 @@
+ fi
+
+ if test -n "$dllsearchpath"; then
+- func_to_host_pathlist "$dllsearchpath:"
++ func_to_host_path "$dllsearchpath:"
+ cat <<EOF
+ const char * EXE_PATH_VARNAME = "PATH";
+-const char * EXE_PATH_VALUE = "$func_to_host_pathlist_result";
++const char * EXE_PATH_VALUE = "$func_to_host_path_result";
+ EOF
+ else
+ cat <<"EOF"
+@@ -3539,12 +4343,10 @@
+ cat <<"EOF"
+
+ #define LTWRAPPER_OPTION_PREFIX "--lt-"
+-#define LTWRAPPER_OPTION_PREFIX_LENGTH 5
+
+-static const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH;
+ static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+-
+ static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script";
++static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug";
+
+ int
+ main (int argc, char *argv[])
+@@ -3561,10 +4363,13 @@
+ int i;
+
+ program_name = (char *) xstrdup (base_name (argv[0]));
+- LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0]));
+- LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
++ newargz = XMALLOC (char *, argc + 1);
+
+- /* very simple arg parsing; don't want to rely on getopt */
++ /* very simple arg parsing; don't want to rely on getopt
++ * also, copy all non cwrapper options to newargz, except
++ * argz[0], which is handled differently
++ */
++ newargc=0;
+ for (i = 1; i < argc; i++)
+ {
+ if (strcmp (argv[i], dumpscript_opt) == 0)
+@@ -3581,21 +4386,54 @@
+ lt_dump_script (stdout);
+ return 0;
+ }
++ if (strcmp (argv[i], debug_opt) == 0)
++ {
++ lt_debug = 1;
++ continue;
++ }
++ if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
++ {
++ /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
++ namespace, but it is not one of the ones we know about and
++ have already dealt with, above (inluding dump-script), then
++ report an error. Otherwise, targets might begin to believe
++ they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
++ namespace. The first time any user complains about this, we'll
++ need to make LTWRAPPER_OPTION_PREFIX a configure-time option
++ or a configure.ac-settable value.
++ */
++ lt_fatal (__FILE__, __LINE__,
++ "unrecognized %s option: '%s'",
++ ltwrapper_option_prefix, argv[i]);
++ }
++ /* otherwise ... */
++ newargz[++newargc] = xstrdup (argv[i]);
+ }
++ newargz[++newargc] = NULL;
++
++EOF
++ cat <<EOF
++ /* The GNU banner must be the first non-error debug message */
++ lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
++EOF
++ cat <<"EOF"
++ lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
++ lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
+
+- newargz = XMALLOC (char *, argc + 1);
+ tmp_pathspec = find_executable (argv[0]);
+ if (tmp_pathspec == NULL)
+- lt_fatal ("Couldn't find %s", argv[0]);
+- LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
+- tmp_pathspec));
++ lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
++ lt_debugprintf (__FILE__, __LINE__,
++ "(main) found exe (before symlink chase) at: %s\n",
++ tmp_pathspec);
+
+ actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+- LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
+- actual_cwrapper_path));
++ lt_debugprintf (__FILE__, __LINE__,
++ "(main) found exe (after symlink chase) at: %s\n",
++ actual_cwrapper_path);
+ XFREE (tmp_pathspec);
+
+- actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
++ actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
+ strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+ /* wrapper name transforms */
+@@ -3613,8 +4451,9 @@
+ target_name = tmp_pathspec;
+ tmp_pathspec = 0;
+
+- LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
+- target_name));
++ lt_debugprintf (__FILE__, __LINE__,
++ "(main) libtool target name: %s\n",
++ target_name);
+ EOF
+
+ cat <<EOF
+@@ -3664,35 +4503,19 @@
+
+ lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+ lt_setenv ("DUALCASE", "1"); /* for MSK sh */
+- lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
++ /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must
++ be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
++ because on Windows, both *_VARNAMEs are PATH but uninstalled
++ libraries must come first. */
+ lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
++ lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+
+- newargc=0;
+- for (i = 1; i < argc; i++)
+- {
+- if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
+- {
+- /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+- namespace, but it is not one of the ones we know about and
+- have already dealt with, above (inluding dump-script), then
+- report an error. Otherwise, targets might begin to believe
+- they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+- namespace. The first time any user complains about this, we'll
+- need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+- or a configure.ac-settable value.
+- */
+- lt_fatal ("Unrecognized option in %s namespace: '%s'",
+- ltwrapper_option_prefix, argv[i]);
+- }
+- /* otherwise ... */
+- newargz[++newargc] = xstrdup (argv[i]);
+- }
+- newargz[++newargc] = NULL;
+-
+- LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
++ lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
++ nonnull (lt_argv_zero));
+ for (i = 0; i < newargc; i++)
+ {
+- LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
++ lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
++ i, nonnull (newargz[i]));
+ }
+
+ EOF
+@@ -3706,7 +4529,9 @@
+ if (rval == -1)
+ {
+ /* failed to start process */
+- LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
++ lt_debugprintf (__FILE__, __LINE__,
++ "(main) failed to launch target \"%s\": %s\n",
++ lt_argv_zero, nonnull (strerror (errno)));
+ return 127;
+ }
+ return rval;
+@@ -3728,7 +4553,7 @@
+ {
+ void *p = (void *) malloc (num);
+ if (!p)
+- lt_fatal ("Memory exhausted");
++ lt_fatal (__FILE__, __LINE__, "memory exhausted");
+
+ return p;
+ }
+@@ -3762,8 +4587,8 @@
+ {
+ struct stat st;
+
+- LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n",
+- path ? (*path ? path : "EMPTY!") : "NULL!"));
++ lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
++ nonempty (path));
+ if ((!path) || (!*path))
+ return 0;
+
+@@ -3780,8 +4605,8 @@
+ int rval = 0;
+ struct stat st;
+
+- LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n",
+- path ? (*path ? path : "EMPTY!") : "NULL!"));
++ lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
++ nonempty (path));
+ if ((!path) || (!*path))
+ return 0;
+
+@@ -3807,8 +4632,8 @@
+ int tmp_len;
+ char *concat_name;
+
+- LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n",
+- wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
++ lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
++ nonempty (wrapper));
+
+ if ((wrapper == NULL) || (*wrapper == '\0'))
+ return NULL;
+@@ -3861,7 +4686,8 @@
+ {
+ /* empty path: current directory */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+- lt_fatal ("getcwd failed");
++ lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
++ nonnull (strerror (errno)));
+ tmp_len = strlen (tmp);
+ concat_name =
+ XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+@@ -3886,7 +4712,8 @@
+ }
+ /* Relative path | not found in path: prepend cwd */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+- lt_fatal ("getcwd failed");
++ lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
++ nonnull (strerror (errno)));
+ tmp_len = strlen (tmp);
+ concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+@@ -3912,8 +4739,9 @@
+ int has_symlinks = 0;
+ while (strlen (tmp_pathspec) && !has_symlinks)
+ {
+- LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
+- tmp_pathspec));
++ lt_debugprintf (__FILE__, __LINE__,
++ "checking path component for symlinks: %s\n",
++ tmp_pathspec);
+ if (lstat (tmp_pathspec, &s) == 0)
+ {
+ if (S_ISLNK (s.st_mode) != 0)
+@@ -3935,8 +4763,9 @@
+ }
+ else
+ {
+- char *errstr = strerror (errno);
+- lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
++ lt_fatal (__FILE__, __LINE__,
++ "error accessing file \"%s\": %s",
++ tmp_pathspec, nonnull (strerror (errno)));
+ }
+ }
+ XFREE (tmp_pathspec);
+@@ -3949,7 +4778,8 @@
+ tmp_pathspec = realpath (pathspec, buf);
+ if (tmp_pathspec == 0)
+ {
+- lt_fatal ("Could not follow symlinks for %s", pathspec);
++ lt_fatal (__FILE__, __LINE__,
++ "could not follow symlinks for %s", pathspec);
+ }
+ return xstrdup (tmp_pathspec);
+ #endif
+@@ -3975,11 +4805,25 @@
+ return str;
+ }
+
++void
++lt_debugprintf (const char *file, int line, const char *fmt, ...)
++{
++ va_list args;
++ if (lt_debug)
++ {
++ (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
++ va_start (args, fmt);
++ (void) vfprintf (stderr, fmt, args);
++ va_end (args);
++ }
++}
++
+ static void
+-lt_error_core (int exit_status, const char *mode,
++lt_error_core (int exit_status, const char *file,
++ int line, const char *mode,
+ const char *message, va_list ap)
+ {
+- fprintf (stderr, "%s: %s: ", program_name, mode);
++ fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
+ vfprintf (stderr, message, ap);
+ fprintf (stderr, ".\n");
+
+@@ -3988,20 +4832,32 @@
+ }
+
+ void
+-lt_fatal (const char *message, ...)
++lt_fatal (const char *file, int line, const char *message, ...)
+ {
+ va_list ap;
+ va_start (ap, message);
+- lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
++ lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
+ va_end (ap);
+ }
+
++static const char *
++nonnull (const char *s)
++{
++ return s ? s : "(null)";
++}
++
++static const char *
++nonempty (const char *s)
++{
++ return (s && !*s) ? "(empty)" : nonnull (s);
++}
++
+ void
+ lt_setenv (const char *name, const char *value)
+ {
+- LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
+- (name ? name : "<NULL>"),
+- (value ? value : "<NULL>")));
++ lt_debugprintf (__FILE__, __LINE__,
++ "(lt_setenv) setting '%s' to '%s'\n",
++ nonnull (name), nonnull (value));
+ {
+ #ifdef HAVE_SETENV
+ /* always make a copy, for consistency with !HAVE_SETENV */
+@@ -4049,9 +4905,9 @@
+ void
+ lt_update_exe_path (const char *name, const char *value)
+ {
+- LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+- (name ? name : "<NULL>"),
+- (value ? value : "<NULL>")));
++ lt_debugprintf (__FILE__, __LINE__,
++ "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
++ nonnull (name), nonnull (value));
+
+ if (name && *name && value && *value)
+ {
+@@ -4070,9 +4926,9 @@
+ void
+ lt_update_lib_path (const char *name, const char *value)
+ {
+- LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+- (name ? name : "<NULL>"),
+- (value ? value : "<NULL>")));
++ lt_debugprintf (__FILE__, __LINE__,
++ "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
++ nonnull (name), nonnull (value));
+
+ if (name && *name && value && *value)
+ {
+@@ -4222,7 +5078,7 @@
+ func_win32_import_lib_p ()
+ {
+ $opt_debug
+- case `eval "$file_magic_cmd \"\$1\" 2>/dev/null" | $SED -e 10q` in
++ case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
+ *import*) : ;;
+ *) false ;;
+ esac
+@@ -4401,9 +5257,9 @@
+ ;;
+ *)
+ if test "$prev" = dlfiles; then
+- dlfiles="$dlfiles $arg"
++ func_append dlfiles " $arg"
+ else
+- dlprefiles="$dlprefiles $arg"
++ func_append dlprefiles " $arg"
+ fi
+ prev=
+ continue
+@@ -4427,7 +5283,7 @@
+ *-*-darwin*)
+ case "$deplibs " in
+ *" $qarg.ltframework "*) ;;
+- *) deplibs="$deplibs $qarg.ltframework" # this is fixed later
++ *) func_append deplibs " $qarg.ltframework" # this is fixed later
+ ;;
+ esac
+ ;;
+@@ -4446,7 +5302,7 @@
+ moreargs=
+ for fil in `cat "$save_arg"`
+ do
+-# moreargs="$moreargs $fil"
++# func_append moreargs " $fil"
+ arg=$fil
+ # A libtool-controlled object.
+
+@@ -4475,7 +5331,7 @@
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+- dlfiles="$dlfiles $pic_object"
++ func_append dlfiles " $pic_object"
+ prev=
+ continue
+ else
+@@ -4487,7 +5343,7 @@
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+- dlprefiles="$dlprefiles $pic_object"
++ func_append dlprefiles " $pic_object"
+ prev=
+ fi
+
+@@ -4557,12 +5413,12 @@
+ if test "$prev" = rpath; then
+ case "$rpath " in
+ *" $arg "*) ;;
+- *) rpath="$rpath $arg" ;;
++ *) func_append rpath " $arg" ;;
+ esac
+ else
+ case "$xrpath " in
+ *" $arg "*) ;;
+- *) xrpath="$xrpath $arg" ;;
++ *) func_append xrpath " $arg" ;;
+ esac
+ fi
+ prev=
+@@ -4574,28 +5430,28 @@
+ continue
+ ;;
+ weak)
+- weak_libs="$weak_libs $arg"
++ func_append weak_libs " $arg"
+ prev=
+ continue
+ ;;
+ xcclinker)
+- linker_flags="$linker_flags $qarg"
+- compiler_flags="$compiler_flags $qarg"
++ func_append linker_flags " $qarg"
++ func_append compiler_flags " $qarg"
+ prev=
+ func_append compile_command " $qarg"
+ func_append finalize_command " $qarg"
+ continue
+ ;;
+ xcompiler)
+- compiler_flags="$compiler_flags $qarg"
++ func_append compiler_flags " $qarg"
+ prev=
+ func_append compile_command " $qarg"
+ func_append finalize_command " $qarg"
+ continue
+ ;;
+ xlinker)
+- linker_flags="$linker_flags $qarg"
+- compiler_flags="$compiler_flags $wl$qarg"
++ func_append linker_flags " $qarg"
++ func_append compiler_flags " $wl$qarg"
+ prev=
+ func_append compile_command " $wl$qarg"
+ func_append finalize_command " $wl$qarg"
+@@ -4686,15 +5542,16 @@
+ ;;
+
+ -L*)
+- func_stripname '-L' '' "$arg"
+- dir=$func_stripname_result
+- if test -z "$dir"; then
++ func_stripname "-L" '' "$arg"
++ if test -z "$func_stripname_result"; then
+ if test "$#" -gt 0; then
+ func_fatal_error "require no space between \`-L' and \`$1'"
+ else
+ func_fatal_error "need path for \`-L' option"
+ fi
+ fi
++ func_resolve_sysroot "$func_stripname_result"
++ dir=$func_resolve_sysroot_result
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+@@ -4706,10 +5563,16 @@
+ ;;
+ esac
+ case "$deplibs " in
+- *" -L$dir "*) ;;
++ *" -L$dir "* | *" $arg "*)
++ # Will only happen for absolute or sysroot arguments
++ ;;
+ *)
+- deplibs="$deplibs -L$dir"
+- lib_search_path="$lib_search_path $dir"
++ # Preserve sysroot, but never include relative directories
++ case $dir in
++ [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
++ *) func_append deplibs " -L$dir" ;;
++ esac
++ func_append lib_search_path " $dir"
+ ;;
+ esac
+ case $host in
+@@ -4718,12 +5581,12 @@
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+ ::) dllsearchpath=$dir;;
+- *) dllsearchpath="$dllsearchpath:$dir";;
++ *) func_append dllsearchpath ":$dir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ ::) dllsearchpath=$testbindir;;
+- *) dllsearchpath="$dllsearchpath:$testbindir";;
++ *) func_append dllsearchpath ":$testbindir";;
+ esac
+ ;;
+ esac
+@@ -4747,7 +5610,7 @@
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C and math libraries are in the System framework
+- deplibs="$deplibs System.ltframework"
++ func_append deplibs " System.ltframework"
+ continue
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+@@ -4758,9 +5621,6 @@
+ # Compiler inserts libc in the correct place for threads to work
+ test "X$arg" = "X-lc" && continue
+ ;;
+- *-*-linux*)
+- test "X$arg" = "X-lc" && continue
+- ;;
+ esac
+ elif test "X$arg" = "X-lc_r"; then
+ case $host in
+@@ -4770,7 +5630,7 @@
+ ;;
+ esac
+ fi
+- deplibs="$deplibs $arg"
++ func_append deplibs " $arg"
+ continue
+ ;;
+
+@@ -4782,8 +5642,8 @@
+ # Tru64 UNIX uses -model [arg] to determine the layout of C++
+ # classes, name mangling, and exception handling.
+ # Darwin uses the -arch flag to determine output architecture.
+- -model|-arch|-isysroot)
+- compiler_flags="$compiler_flags $arg"
++ -model|-arch|-isysroot|--sysroot)
++ func_append compiler_flags " $arg"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ prev=xcompiler
+@@ -4791,12 +5651,12 @@
+ ;;
+
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+- compiler_flags="$compiler_flags $arg"
++ func_append compiler_flags " $arg"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ case "$new_inherited_linker_flags " in
+ *" $arg "*) ;;
+- * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
++ * ) func_append new_inherited_linker_flags " $arg" ;;
+ esac
+ continue
+ ;;
+@@ -4863,13 +5723,17 @@
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
++ =*)
++ func_stripname '=' '' "$dir"
++ dir=$lt_sysroot$func_stripname_result
++ ;;
+ *)
+ func_fatal_error "only absolute run-paths are allowed"
+ ;;
+ esac
+ case "$xrpath " in
+ *" $dir "*) ;;
+- *) xrpath="$xrpath $dir" ;;
++ *) func_append xrpath " $dir" ;;
+ esac
+ continue
+ ;;
+@@ -4922,8 +5786,8 @@
+ for flag in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$flag"
+- arg="$arg $func_quote_for_eval_result"
+- compiler_flags="$compiler_flags $func_quote_for_eval_result"
++ func_append arg " $func_quote_for_eval_result"
++ func_append compiler_flags " $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$arg"
+@@ -4938,9 +5802,9 @@
+ for flag in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$flag"
+- arg="$arg $wl$func_quote_for_eval_result"
+- compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
+- linker_flags="$linker_flags $func_quote_for_eval_result"
++ func_append arg " $wl$func_quote_for_eval_result"
++ func_append compiler_flags " $wl$func_quote_for_eval_result"
++ func_append linker_flags " $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$arg"
+@@ -4968,24 +5832,27 @@
+ arg="$func_quote_for_eval_result"
+ ;;
+
+- # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+- # -r[0-9][0-9]* specifies the processor on the SGI compiler
+- # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+- # +DA*, +DD* enable 64-bit mode on the HP compiler
+- # -q* pass through compiler args for the IBM compiler
+- # -m*, -t[45]*, -txscale* pass through architecture-specific
+- # compiler args for GCC
+- # -F/path gives path to uninstalled frameworks, gcc on darwin
+- # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
+- # @file GCC response files
+- # -tp=* Portland pgcc target processor selection
++ # Flags to be passed through unchanged, with rationale:
++ # -64, -mips[0-9] enable 64-bit mode for the SGI compiler
++ # -r[0-9][0-9]* specify processor for the SGI compiler
++ # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
++ # +DA*, +DD* enable 64-bit mode for the HP compiler
++ # -q* compiler args for the IBM compiler
++ # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
++ # -F/path path to uninstalled frameworks, gcc on darwin
++ # -p, -pg, --coverage, -fprofile-* profiling flags for GCC
++ # @file GCC response files
++ # -tp=* Portland pgcc target processor selection
++ # --sysroot=* for sysroot support
++ # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+- -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*)
++ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
++ -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+- compiler_flags="$compiler_flags $arg"
++ func_append compiler_flags " $arg"
+ continue
+ ;;
+
+@@ -4997,7 +5864,7 @@
+
+ *.$objext)
+ # A standard object.
+- objs="$objs $arg"
++ func_append objs " $arg"
+ ;;
+
+ *.lo)
+@@ -5028,7 +5895,7 @@
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+- dlfiles="$dlfiles $pic_object"
++ func_append dlfiles " $pic_object"
+ prev=
+ continue
+ else
+@@ -5040,7 +5907,7 @@
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+- dlprefiles="$dlprefiles $pic_object"
++ func_append dlprefiles " $pic_object"
+ prev=
+ fi
+
+@@ -5085,24 +5952,25 @@
+
+ *.$libext)
+ # An archive.
+- deplibs="$deplibs $arg"
+- old_deplibs="$old_deplibs $arg"
++ func_append deplibs " $arg"
++ func_append old_deplibs " $arg"
+ continue
+ ;;
+
+ *.la)
+ # A libtool-controlled library.
+
++ func_resolve_sysroot "$arg"
+ if test "$prev" = dlfiles; then
+ # This library was specified with -dlopen.
+- dlfiles="$dlfiles $arg"
++ func_append dlfiles " $func_resolve_sysroot_result"
+ prev=
+ elif test "$prev" = dlprefiles; then
+ # The library was specified with -dlpreopen.
+- dlprefiles="$dlprefiles $arg"
++ func_append dlprefiles " $func_resolve_sysroot_result"
+ prev=
+ else
+- deplibs="$deplibs $arg"
++ func_append deplibs " $func_resolve_sysroot_result"
+ fi
+ continue
+ ;;
+@@ -5127,7 +5995,7 @@
+ func_fatal_help "the \`$prevarg' option requires an argument"
+
+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+- eval "arg=\"$export_dynamic_flag_spec\""
++ eval arg=\"$export_dynamic_flag_spec\"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ fi
+@@ -5144,11 +6012,13 @@
+ else
+ shlib_search_path=
+ fi
+- eval "sys_lib_search_path=\"$sys_lib_search_path_spec\""
+- eval "sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\""
++ eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
++ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+ func_dirname "$output" "/" ""
+ output_objdir="$func_dirname_result$objdir"
++ func_to_tool_file "$output_objdir/"
++ tool_output_objdir=$func_to_tool_file_result
+ # Create the object directory.
+ func_mkdir_p "$output_objdir"
+
+@@ -5169,12 +6039,12 @@
+ # Find all interdependent deplibs by searching for libraries
+ # that are linked more than once (e.g. -la -lb -la)
+ for deplib in $deplibs; do
+- if $opt_duplicate_deps ; then
++ if $opt_preserve_dup_deps ; then
+ case "$libs " in
+- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
++ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+ esac
+ fi
+- libs="$libs $deplib"
++ func_append libs " $deplib"
+ done
+
+ if test "$linkmode" = lib; then
+@@ -5187,9 +6057,9 @@
+ if $opt_duplicate_compiler_generated_deps; then
+ for pre_post_dep in $predeps $postdeps; do
+ case "$pre_post_deps " in
+- *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
++ *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
+ esac
+- pre_post_deps="$pre_post_deps $pre_post_dep"
++ func_append pre_post_deps " $pre_post_dep"
+ done
+ fi
+ pre_post_deps=
+@@ -5256,8 +6126,9 @@
+ for lib in $dlprefiles; do
+ # Ignore non-libtool-libs
+ dependency_libs=
++ func_resolve_sysroot "$lib"
+ case $lib in
+- *.la) func_source "$lib" ;;
++ *.la) func_source "$func_resolve_sysroot_result" ;;
+ esac
+
+ # Collect preopened libtool deplibs, except any this library
+@@ -5267,7 +6138,7 @@
+ deplib_base=$func_basename_result
+ case " $weak_libs " in
+ *" $deplib_base "*) ;;
+- *) deplibs="$deplibs $deplib" ;;
++ *) func_append deplibs " $deplib" ;;
+ esac
+ done
+ done
+@@ -5288,11 +6159,11 @@
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+- compiler_flags="$compiler_flags $deplib"
++ func_append compiler_flags " $deplib"
+ if test "$linkmode" = lib ; then
+ case "$new_inherited_linker_flags " in
+ *" $deplib "*) ;;
+- * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
++ * ) func_append new_inherited_linker_flags " $deplib" ;;
+ esac
+ fi
+ fi
+@@ -5377,7 +6248,7 @@
+ if test "$linkmode" = lib ; then
+ case "$new_inherited_linker_flags " in
+ *" $deplib "*) ;;
+- * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
++ * ) func_append new_inherited_linker_flags " $deplib" ;;
+ esac
+ fi
+ fi
+@@ -5390,7 +6261,8 @@
+ test "$pass" = conv && continue
+ newdependency_libs="$deplib $newdependency_libs"
+ func_stripname '-L' '' "$deplib"
+- newlib_search_path="$newlib_search_path $func_stripname_result"
++ func_resolve_sysroot "$func_stripname_result"
++ func_append newlib_search_path " $func_resolve_sysroot_result"
+ ;;
+ prog)
+ if test "$pass" = conv; then
+@@ -5404,7 +6276,8 @@
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ func_stripname '-L' '' "$deplib"
+- newlib_search_path="$newlib_search_path $func_stripname_result"
++ func_resolve_sysroot "$func_stripname_result"
++ func_append newlib_search_path " $func_resolve_sysroot_result"
+ ;;
+ *)
+ func_warning "\`-L' is ignored for archives/objects"
+@@ -5415,17 +6288,21 @@
+ -R*)
+ if test "$pass" = link; then
+ func_stripname '-R' '' "$deplib"
+- dir=$func_stripname_result
++ func_resolve_sysroot "$func_stripname_result"
++ dir=$func_resolve_sysroot_result
+ # Make sure the xrpath contains only unique directories.
+ case "$xrpath " in
+ *" $dir "*) ;;
+- *) xrpath="$xrpath $dir" ;;
++ *) func_append xrpath " $dir" ;;
+ esac
+ fi
+ deplibs="$deplib $deplibs"
+ continue
+ ;;
+- *.la) lib="$deplib" ;;
++ *.la)
++ func_resolve_sysroot "$deplib"
++ lib=$func_resolve_sysroot_result
++ ;;
+ *.$libext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+@@ -5488,11 +6365,11 @@
+ if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+ # If there is no dlopen support or we're linking statically,
+ # we need to preload.
+- newdlprefiles="$newdlprefiles $deplib"
++ func_append newdlprefiles " $deplib"
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+- newdlfiles="$newdlfiles $deplib"
++ func_append newdlfiles " $deplib"
+ fi
+ fi
+ continue
+@@ -5538,7 +6415,7 @@
+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+ case " $new_inherited_linker_flags " in
+ *" $tmp_inherited_linker_flag "*) ;;
+- *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
++ *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
+ esac
+ done
+ fi
+@@ -5546,8 +6423,8 @@
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan" ||
+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+- test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+- test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
++ test -n "$dlopen" && func_append dlfiles " $dlopen"
++ test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
+ fi
+
+ if test "$pass" = conv; then
+@@ -5558,20 +6435,20 @@
+ func_fatal_error "cannot find name of link library for \`$lib'"
+ fi
+ # It is a libtool convenience library, so add in its objects.
+- convenience="$convenience $ladir/$objdir/$old_library"
+- old_convenience="$old_convenience $ladir/$objdir/$old_library"
++ func_append convenience " $ladir/$objdir/$old_library"
++ func_append old_convenience " $ladir/$objdir/$old_library"
+ elif test "$linkmode" != prog && test "$linkmode" != lib; then
+ func_fatal_error "\`$lib' is not a convenience library"
+ fi
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ deplibs="$deplib $deplibs"
+- if $opt_duplicate_deps ; then
++ if $opt_preserve_dup_deps ; then
+ case "$tmp_libs " in
+- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
++ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+ esac
+ fi
+- tmp_libs="$tmp_libs $deplib"
++ func_append tmp_libs " $deplib"
+ done
+ continue
+ fi # $pass = conv
+@@ -5579,9 +6456,15 @@
+
+ # Get the name of the library we link against.
+ linklib=
+- for l in $old_library $library_names; do
+- linklib="$l"
+- done
++ if test -n "$old_library" &&
++ { test "$prefer_static_libs" = yes ||
++ test "$prefer_static_libs,$installed" = "built,no"; }; then
++ linklib=$old_library
++ else
++ for l in $old_library $library_names; do
++ linklib="$l"
++ done
++ fi
+ if test -z "$linklib"; then
+ func_fatal_error "cannot find name of link library for \`$lib'"
+ fi
+@@ -5598,9 +6481,9 @@
+ # statically, we need to preload. We also need to preload any
+ # dependent libraries so libltdl's deplib preloader doesn't
+ # bomb out in the load deplibs phase.
+- dlprefiles="$dlprefiles $lib $dependency_libs"
++ func_append dlprefiles " $lib $dependency_libs"
+ else
+- newdlfiles="$newdlfiles $lib"
++ func_append newdlfiles " $lib"
+ fi
+ continue
+ fi # $pass = dlopen
+@@ -5622,14 +6505,14 @@
+
+ # Find the relevant object directory and library name.
+ if test "X$installed" = Xyes; then
+- if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
++ if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ func_warning "library \`$lib' was moved."
+ dir="$ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ else
+- dir="$libdir"
+- absdir="$libdir"
++ dir="$lt_sysroot$libdir"
++ absdir="$lt_sysroot$libdir"
+ fi
+ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+ else
+@@ -5637,12 +6520,12 @@
+ dir="$ladir"
+ absdir="$abs_ladir"
+ # Remove this search path later
+- notinst_path="$notinst_path $abs_ladir"
++ func_append notinst_path " $abs_ladir"
+ else
+ dir="$ladir/$objdir"
+ absdir="$abs_ladir/$objdir"
+ # Remove this search path later
+- notinst_path="$notinst_path $abs_ladir"
++ func_append notinst_path " $abs_ladir"
+ fi
+ fi # $installed = yes
+ func_stripname 'lib' '.la' "$laname"
+@@ -5653,20 +6536,46 @@
+ if test -z "$libdir" && test "$linkmode" = prog; then
+ func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
+ fi
+- # Prefer using a static library (so that no silly _DYNAMIC symbols
+- # are required to link).
+- if test -n "$old_library"; then
+- newdlprefiles="$newdlprefiles $dir/$old_library"
+- # Keep a list of preopened convenience libraries to check
+- # that they are being used correctly in the link pass.
+- test -z "$libdir" && \
+- dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
+- # Otherwise, use the dlname, so that lt_dlopen finds it.
+- elif test -n "$dlname"; then
+- newdlprefiles="$newdlprefiles $dir/$dlname"
+- else
+- newdlprefiles="$newdlprefiles $dir/$linklib"
+- fi
++ case "$host" in
++ # special handling for platforms with PE-DLLs.
++ *cygwin* | *mingw* | *cegcc* )
++ # Linker will automatically link against shared library if both
++ # static and shared are present. Therefore, ensure we extract
++ # symbols from the import library if a shared library is present
++ # (otherwise, the dlopen module name will be incorrect). We do
++ # this by putting the import library name into $newdlprefiles.
++ # We recover the dlopen module name by 'saving' the la file
++ # name in a special purpose variable, and (later) extracting the
++ # dlname from the la file.
++ if test -n "$dlname"; then
++ func_tr_sh "$dir/$linklib"
++ eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
++ func_append newdlprefiles " $dir/$linklib"
++ else
++ func_append newdlprefiles " $dir/$old_library"
++ # Keep a list of preopened convenience libraries to check
++ # that they are being used correctly in the link pass.
++ test -z "$libdir" && \
++ func_append dlpreconveniencelibs " $dir/$old_library"
++ fi
++ ;;
++ * )
++ # Prefer using a static library (so that no silly _DYNAMIC symbols
++ # are required to link).
++ if test -n "$old_library"; then
++ func_append newdlprefiles " $dir/$old_library"
++ # Keep a list of preopened convenience libraries to check
++ # that they are being used correctly in the link pass.
++ test -z "$libdir" && \
++ func_append dlpreconveniencelibs " $dir/$old_library"
++ # Otherwise, use the dlname, so that lt_dlopen finds it.
++ elif test -n "$dlname"; then
++ func_append newdlprefiles " $dir/$dlname"
++ else
++ func_append newdlprefiles " $dir/$linklib"
++ fi
++ ;;
++ esac
+ fi # $pass = dlpreopen
+
+ if test -z "$libdir"; then
+@@ -5684,7 +6593,7 @@
+
+
+ if test "$linkmode" = prog && test "$pass" != link; then
+- newlib_search_path="$newlib_search_path $ladir"
++ func_append newlib_search_path " $ladir"
+ deplibs="$lib $deplibs"
+
+ linkalldeplibs=no
+@@ -5697,7 +6606,8 @@
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) func_stripname '-L' '' "$deplib"
+- newlib_search_path="$newlib_search_path $func_stripname_result"
++ func_resolve_sysroot "$func_stripname_result"
++ func_append newlib_search_path " $func_resolve_sysroot_result"
+ ;;
+ esac
+ # Need to link against all dependency_libs?
+@@ -5708,12 +6618,12 @@
+ # or/and link against static libraries
+ newdependency_libs="$deplib $newdependency_libs"
+ fi
+- if $opt_duplicate_deps ; then
++ if $opt_preserve_dup_deps ; then
+ case "$tmp_libs " in
+- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
++ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+ esac
+ fi
+- tmp_libs="$tmp_libs $deplib"
++ func_append tmp_libs " $deplib"
+ done # for deplib
+ continue
+ fi # $linkmode = prog...
+@@ -5728,7 +6638,7 @@
+ # Make sure the rpath contains only unique directories.
+ case "$temp_rpath:" in
+ *"$absdir:"*) ;;
+- *) temp_rpath="$temp_rpath$absdir:" ;;
++ *) func_append temp_rpath "$absdir:" ;;
+ esac
+ fi
+
+@@ -5740,7 +6650,7 @@
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+- *) compile_rpath="$compile_rpath $absdir"
++ *) func_append compile_rpath " $absdir" ;;
+ esac
+ ;;
+ esac
+@@ -5749,7 +6659,7 @@
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+- *) finalize_rpath="$finalize_rpath $libdir"
++ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ ;;
+ esac
+@@ -5774,12 +6684,12 @@
+ case $host in
+ *cygwin* | *mingw* | *cegcc*)
+ # No point in relinking DLLs because paths are not encoded
+- notinst_deplibs="$notinst_deplibs $lib"
++ func_append notinst_deplibs " $lib"
+ need_relink=no
+ ;;
+ *)
+ if test "$installed" = no; then
+- notinst_deplibs="$notinst_deplibs $lib"
++ func_append notinst_deplibs " $lib"
+ need_relink=yes
+ fi
+ ;;
+@@ -5814,7 +6724,7 @@
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+- *) compile_rpath="$compile_rpath $absdir"
++ *) func_append compile_rpath " $absdir" ;;
+ esac
+ ;;
+ esac
+@@ -5823,7 +6733,7 @@
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+- *) finalize_rpath="$finalize_rpath $libdir"
++ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ ;;
+ esac
+@@ -5835,7 +6745,7 @@
+ shift
+ realname="$1"
+ shift
+- eval "libname=\"$libname_spec\""
++ libname=`eval "\\$ECHO \"$libname_spec\""`
+ # use dlname if we got it. it's perfectly good, no?
+ if test -n "$dlname"; then
+ soname="$dlname"
+@@ -5848,7 +6758,7 @@
+ versuffix="-$major"
+ ;;
+ esac
+- eval "soname=\"$soname_spec\""
++ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+@@ -5877,7 +6787,7 @@
+ linklib=$newlib
+ fi # test -n "$old_archive_from_expsyms_cmds"
+
+- if test "$linkmode" = prog || test "$mode" != relink; then
++ if test "$linkmode" = prog || test "$opt_mode" != relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+@@ -5933,7 +6843,7 @@
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+- add_dir="$add_dir -L$inst_prefix_dir$libdir"
++ func_append add_dir " -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+@@ -5955,7 +6865,7 @@
+ if test -n "$add_shlibpath"; then
+ case :$compile_shlibpath: in
+ *":$add_shlibpath:"*) ;;
+- *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
++ *) func_append compile_shlibpath "$add_shlibpath:" ;;
+ esac
+ fi
+ if test "$linkmode" = prog; then
+@@ -5969,13 +6879,13 @@
+ test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+- *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
++ *) func_append finalize_shlibpath "$libdir:" ;;
+ esac
+ fi
+ fi
+ fi
+
+- if test "$linkmode" = prog || test "$mode" = relink; then
++ if test "$linkmode" = prog || test "$opt_mode" = relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+@@ -5989,7 +6899,7 @@
+ elif test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+- *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
++ *) func_append finalize_shlibpath "$libdir:" ;;
+ esac
+ add="-l$name"
+ elif test "$hardcode_automatic" = yes; then
+@@ -6001,12 +6911,12 @@
+ fi
+ else
+ # We cannot seem to hardcode it, guess we'll fake it.
+- add_dir="-L$libdir"
++ add_dir="-L$lt_sysroot$libdir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+- add_dir="$add_dir -L$inst_prefix_dir$libdir"
++ func_append add_dir " -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+@@ -6083,27 +6993,33 @@
+ temp_xrpath=$func_stripname_result
+ case " $xrpath " in
+ *" $temp_xrpath "*) ;;
+- *) xrpath="$xrpath $temp_xrpath";;
++ *) func_append xrpath " $temp_xrpath";;
+ esac;;
+- *) temp_deplibs="$temp_deplibs $libdir";;
++ *) func_append temp_deplibs " $libdir";;
+ esac
+ done
+ dependency_libs="$temp_deplibs"
+ fi
+
+- newlib_search_path="$newlib_search_path $absdir"
++ func_append newlib_search_path " $absdir"
+ # Link against this library
+ test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+ # ... and its dependency_libs
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ newdependency_libs="$deplib $newdependency_libs"
+- if $opt_duplicate_deps ; then
++ case $deplib in
++ -L*) func_stripname '-L' '' "$deplib"
++ func_resolve_sysroot "$func_stripname_result";;
++ *) func_resolve_sysroot "$deplib" ;;
++ esac
++ if $opt_preserve_dup_deps ; then
+ case "$tmp_libs " in
+- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
++ *" $func_resolve_sysroot_result "*)
++ func_append specialdeplibs " $func_resolve_sysroot_result" ;;
+ esac
+ fi
+- tmp_libs="$tmp_libs $deplib"
++ func_append tmp_libs " $func_resolve_sysroot_result"
+ done
+
+ if test "$link_all_deplibs" != no; then
+@@ -6113,8 +7029,10 @@
+ case $deplib in
+ -L*) path="$deplib" ;;
+ *.la)
++ func_resolve_sysroot "$deplib"
++ deplib=$func_resolve_sysroot_result
+ func_dirname "$deplib" "" "."
+- dir="$func_dirname_result"
++ dir=$func_dirname_result
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+@@ -6130,7 +7048,7 @@
+ case $host in
+ *-*-darwin*)
+ depdepl=
+- deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
++ eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+ if test -n "$deplibrary_names" ; then
+ for tmp in $deplibrary_names ; do
+ depdepl=$tmp
+@@ -6141,8 +7059,8 @@
+ if test -z "$darwin_install_name"; then
+ darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+ fi
+- compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
+- linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
++ func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
++ func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
+ path=
+ fi
+ fi
+@@ -6152,7 +7070,7 @@
+ ;;
+ esac
+ else
+- libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$deplib' is not a valid libtool archive"
+ test "$absdir" != "$libdir" && \
+@@ -6192,7 +7110,7 @@
+ for dir in $newlib_search_path; do
+ case "$lib_search_path " in
+ *" $dir "*) ;;
+- *) lib_search_path="$lib_search_path $dir" ;;
++ *) func_append lib_search_path " $dir" ;;
+ esac
+ done
+ newlib_search_path=
+@@ -6205,7 +7123,7 @@
+ fi
+ for var in $vars dependency_libs; do
+ # Add libraries to $var in reverse order
+- eval tmp_libs=\$$var
++ eval tmp_libs=\"\$$var\"
+ new_libs=
+ for deplib in $tmp_libs; do
+ # FIXME: Pedantically, this is the right thing to do, so
+@@ -6250,13 +7168,13 @@
+ -L*)
+ case " $tmp_libs " in
+ *" $deplib "*) ;;
+- *) tmp_libs="$tmp_libs $deplib" ;;
++ *) func_append tmp_libs " $deplib" ;;
+ esac
+ ;;
+- *) tmp_libs="$tmp_libs $deplib" ;;
++ *) func_append tmp_libs " $deplib" ;;
+ esac
+ done
+- eval $var=\$tmp_libs
++ eval $var=\"$tmp_libs\"
+ done # for var
+ fi
+ # Last step: remove runtime libs from dependency_libs
+@@ -6269,7 +7187,7 @@
+ ;;
+ esac
+ if test -n "$i" ; then
+- tmp_libs="$tmp_libs $i"
++ func_append tmp_libs " $i"
+ fi
+ done
+ dependency_libs=$tmp_libs
+@@ -6310,7 +7228,7 @@
+ # Now set the variables for building old libraries.
+ build_libtool_libs=no
+ oldlibs="$output"
+- objs="$objs$old_deplibs"
++ func_append objs "$old_deplibs"
+ ;;
+
+ lib)
+@@ -6319,8 +7237,8 @@
+ lib*)
+ func_stripname 'lib' '.la' "$outputname"
+ name=$func_stripname_result
+- eval "shared_ext=\"$shrext_cmds\""
+- eval "libname=\"$libname_spec\""
++ eval shared_ext=\"$shrext_cmds\"
++ eval libname=\"$libname_spec\"
+ ;;
+ *)
+ test "$module" = no && \
+@@ -6330,8 +7248,8 @@
+ # Add the "lib" prefix for modules if required
+ func_stripname '' '.la' "$outputname"
+ name=$func_stripname_result
+- eval "shared_ext=\"$shrext_cmds\""
+- eval "libname=\"$libname_spec\""
++ eval shared_ext=\"$shrext_cmds\"
++ eval libname=\"$libname_spec\"
+ else
+ func_stripname '' '.la' "$outputname"
+ libname=$func_stripname_result
+@@ -6346,7 +7264,7 @@
+ echo
+ $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
+ $ECHO "*** objects $objs is not portable!"
+- libobjs="$libobjs $objs"
++ func_append libobjs " $objs"
+ fi
+ fi
+
+@@ -6544,7 +7462,7 @@
+ done
+
+ # Make executables depend on our current version.
+- verstring="$verstring:${current}.0"
++ func_append verstring ":${current}.0"
+ ;;
+
+ qnx)
+@@ -6612,10 +7530,10 @@
+ fi
+
+ func_generate_dlsyms "$libname" "$libname" "yes"
+- libobjs="$libobjs $symfileobj"
++ func_append libobjs " $symfileobj"
+ test "X$libobjs" = "X " && libobjs=
+
+- if test "$mode" != relink; then
++ if test "$opt_mode" != relink; then
+ # Remove our outputs, but don't remove object files since they
+ # may have been created when compiling PIC objects.
+ removelist=
+@@ -6631,7 +7549,7 @@
+ continue
+ fi
+ fi
+- removelist="$removelist $p"
++ func_append removelist " $p"
+ ;;
+ *) ;;
+ esac
+@@ -6642,7 +7560,7 @@
+
+ # Now set the variables for building old libraries.
+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+- oldlibs="$oldlibs $output_objdir/$libname.$libext"
++ func_append oldlibs " $output_objdir/$libname.$libext"
+
+ # Transform .lo files to .o files.
+ oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
+@@ -6659,10 +7577,11 @@
+ # If the user specified any rpath flags, then add them.
+ temp_xrpath=
+ for libdir in $xrpath; do
+- temp_xrpath="$temp_xrpath -R$libdir"
++ func_replace_sysroot "$libdir"
++ func_append temp_xrpath " -R$func_replace_sysroot_result"
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+- *) finalize_rpath="$finalize_rpath $libdir" ;;
++ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ done
+ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+@@ -6676,7 +7595,7 @@
+ for lib in $old_dlfiles; do
+ case " $dlprefiles $dlfiles " in
+ *" $lib "*) ;;
+- *) dlfiles="$dlfiles $lib" ;;
++ *) func_append dlfiles " $lib" ;;
+ esac
+ done
+
+@@ -6686,7 +7605,7 @@
+ for lib in $old_dlprefiles; do
+ case "$dlprefiles " in
+ *" $lib "*) ;;
+- *) dlprefiles="$dlprefiles $lib" ;;
++ *) func_append dlprefiles " $lib" ;;
+ esac
+ done
+
+@@ -6698,7 +7617,7 @@
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C library is in the System framework
+- deplibs="$deplibs System.ltframework"
++ func_append deplibs " System.ltframework"
+ ;;
+ *-*-netbsd*)
+ # Don't link with libc until the a.out ld.so is fixed.
+@@ -6715,7 +7634,7 @@
+ *)
+ # Add libc to deplibs on all other systems if necessary.
+ if test "$build_libtool_need_lc" = "yes"; then
+- deplibs="$deplibs -lc"
++ func_append deplibs " -lc"
+ fi
+ ;;
+ esac
+@@ -6764,18 +7683,18 @@
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+- newdeplibs="$newdeplibs $i"
++ func_append newdeplibs " $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+- eval "libname=\"$libname_spec\""
+- eval "deplib_matches=\"$library_names_spec\""
++ libname=`eval "\\$ECHO \"$libname_spec\""`
++ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+ set dummy $deplib_matches; shift
+ deplib_match=$1
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+- newdeplibs="$newdeplibs $i"
++ func_append newdeplibs " $i"
+ else
+ droppeddeps=yes
+ echo
+@@ -6789,7 +7708,7 @@
+ fi
+ ;;
+ *)
+- newdeplibs="$newdeplibs $i"
++ func_append newdeplibs " $i"
+ ;;
+ esac
+ done
+@@ -6807,18 +7726,18 @@
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+- newdeplibs="$newdeplibs $i"
++ func_append newdeplibs " $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+- eval "libname=\"$libname_spec\""
+- eval "deplib_matches=\"$library_names_spec\""
++ libname=`eval "\\$ECHO \"$libname_spec\""`
++ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+ set dummy $deplib_matches; shift
+ deplib_match=$1
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+- newdeplibs="$newdeplibs $i"
++ func_append newdeplibs " $i"
+ else
+ droppeddeps=yes
+ echo
+@@ -6840,7 +7759,7 @@
+ fi
+ ;;
+ *)
+- newdeplibs="$newdeplibs $i"
++ func_append newdeplibs " $i"
+ ;;
+ esac
+ done
+@@ -6857,15 +7776,27 @@
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+- newdeplibs="$newdeplibs $a_deplib"
++ func_append newdeplibs " $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+- eval "libname=\"$libname_spec\""
++ libname=`eval "\\$ECHO \"$libname_spec\""`
++ if test -n "$file_magic_glob"; then
++ libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
++ else
++ libnameglob=$libname
++ fi
++ test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+- potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
++ if test "$want_nocaseglob" = yes; then
++ shopt -s nocaseglob
++ potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
++ $nocaseglob
++ else
++ potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
++ fi
+ for potent_lib in $potential_libs; do
+ # Follow soft links.
+ if ls -lLd "$potent_lib" 2>/dev/null |
+@@ -6885,10 +7816,10 @@
+ *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
+ esac
+ done
+- if eval "$file_magic_cmd \"\$potlib\"" 2>/dev/null |
++ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
+ $SED -e 10q |
+ $EGREP "$file_magic_regex" > /dev/null; then
+- newdeplibs="$newdeplibs $a_deplib"
++ func_append newdeplibs " $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+@@ -6913,7 +7844,7 @@
+ ;;
+ *)
+ # Add a -L argument.
+- newdeplibs="$newdeplibs $a_deplib"
++ func_append newdeplibs " $a_deplib"
+ ;;
+ esac
+ done # Gone through all deplibs.
+@@ -6929,20 +7860,20 @@
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+- newdeplibs="$newdeplibs $a_deplib"
++ func_append newdeplibs " $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+- eval "libname=\"$libname_spec\""
++ libname=`eval "\\$ECHO \"$libname_spec\""`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+ for potent_lib in $potential_libs; do
+ potlib="$potent_lib" # see symlink-check above in file_magic test
+ if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
+ $EGREP "$match_pattern_regex" > /dev/null; then
+- newdeplibs="$newdeplibs $a_deplib"
++ func_append newdeplibs " $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+@@ -6967,7 +7898,7 @@
+ ;;
+ *)
+ # Add a -L argument.
+- newdeplibs="$newdeplibs $a_deplib"
++ func_append newdeplibs " $a_deplib"
+ ;;
+ esac
+ done # Gone through all deplibs.
+@@ -7071,7 +8002,7 @@
+ *)
+ case " $deplibs " in
+ *" -L$path/$objdir "*)
+- new_libs="$new_libs -L$path/$objdir" ;;
++ func_append new_libs " -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+@@ -7081,10 +8012,10 @@
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+- *) new_libs="$new_libs $deplib" ;;
++ *) func_append new_libs " $deplib" ;;
+ esac
+ ;;
+- *) new_libs="$new_libs $deplib" ;;
++ *) func_append new_libs " $deplib" ;;
+ esac
+ done
+ deplibs="$new_libs"
+@@ -7101,10 +8032,12 @@
+ hardcode_libdirs=
+ dep_rpath=
+ rpath="$finalize_rpath"
+- test "$mode" != relink && rpath="$compile_rpath$rpath"
++ test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
+ for libdir in $rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
++ func_replace_sysroot "$libdir"
++ libdir=$func_replace_sysroot_result
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+@@ -7113,18 +8046,18 @@
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
++ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+- eval "flag=\"$hardcode_libdir_flag_spec\""
+- dep_rpath="$dep_rpath $flag"
++ eval flag=\"$hardcode_libdir_flag_spec\"
++ func_append dep_rpath " $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+- *) perm_rpath="$perm_rpath $libdir" ;;
++ *) func_apped perm_rpath " $libdir" ;;
+ esac
+ fi
+ done
+@@ -7133,40 +8066,38 @@
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ if test -n "$hardcode_libdir_flag_spec_ld"; then
+- eval "dep_rpath=\"$hardcode_libdir_flag_spec_ld\""
++ eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+ else
+- eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
++ eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+ fi
+ fi
+ if test -n "$runpath_var" && test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+- rpath="$rpath$dir:"
++ func_append rpath "$dir:"
+ done
+- eval $runpath_var=\$rpath\$$runpath_var
+- export $runpath_var
++ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+ fi
+ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+ fi
+
+ shlibpath="$finalize_shlibpath"
+- test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
++ test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+ if test -n "$shlibpath"; then
+- eval $shlibpath_var=\$shlibpath\$$shlibpath_var
+- export $shlibpath_var
++ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+ fi
+
+ # Get the real and link names of the library.
+- eval "shared_ext=\"$shrext_cmds\""
+- eval "library_names=\"$library_names_spec\""
++ eval shared_ext=\"$shrext_cmds\"
++ eval library_names=\"$library_names_spec\"
+ set dummy $library_names
+ shift
+ realname="$1"
+ shift
+
+ if test -n "$soname_spec"; then
+- eval "soname=\"$soname_spec\""
++ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+@@ -7178,7 +8109,7 @@
+ linknames=
+ for link
+ do
+- linknames="$linknames $link"
++ func_append linknames " $link"
+ done
+
+ # Use standard objects if they are pic
+@@ -7189,7 +8120,7 @@
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+ export_symbols="$output_objdir/$libname.uexp"
+- delfiles="$delfiles $export_symbols"
++ func_append delfiles " $export_symbols"
+ fi
+
+ orig_export_symbols=
+@@ -7220,13 +8151,45 @@
+ $opt_dry_run || $RM $export_symbols
+ cmds=$export_symbols_cmds
+ save_ifs="$IFS"; IFS='~'
+- for cmd in $cmds; do
++ for cmd1 in $cmds; do
+ IFS="$save_ifs"
+- eval "cmd=\"$cmd\""
+- func_len " $cmd"
+- len=$func_len_result
+- if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
++ # Take the normal branch if the nm_file_list_spec branch
++ # doesn't work or if tool conversion is not needed.
++ case $nm_file_list_spec~$to_tool_file_cmd in
++ *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
++ try_normal_branch=yes
++ eval cmd=\"$cmd1\"
++ func_len " $cmd"
++ len=$func_len_result
++ ;;
++ *)
++ try_normal_branch=no
++ ;;
++ esac
++ if test "$try_normal_branch" = yes \
++ && { test "$len" -lt "$max_cmd_len" \
++ || test "$max_cmd_len" -le -1; }
++ then
++ func_show_eval "$cmd" 'exit $?'
++ skipped_export=false
++ elif test -n "$nm_file_list_spec"; then
++ func_basename "$output"
++ output_la=$func_basename_result
++ save_libobjs=$libobjs
++ save_output=$output
++ output=${output_objdir}/${output_la}.nm
++ func_to_tool_file "$output"
++ libobjs=$nm_file_list_spec$func_to_tool_file_result
++ func_append delfiles " $output"
++ func_verbose "creating $NM input file list: $output"
++ for obj in $save_libobjs; do
++ func_to_tool_file "$obj"
++ $ECHO "$func_to_tool_file_result"
++ done > "$output"
++ eval cmd=\"$cmd1\"
+ func_show_eval "$cmd" 'exit $?'
++ output=$save_output
++ libobjs=$save_libobjs
+ skipped_export=false
+ else
+ # The command line is too long to execute in one step.
+@@ -7248,7 +8211,7 @@
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ tmp_export_symbols="$export_symbols"
+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+- $opt_dry_run || $ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"
++ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+ fi
+
+ if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
+@@ -7260,7 +8223,7 @@
+ # global variables. join(1) would be nice here, but unfortunately
+ # isn't a blessed tool.
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+- delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
++ func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+ export_symbols=$output_objdir/$libname.def
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+ fi
+@@ -7270,7 +8233,7 @@
+ case " $convenience " in
+ *" $test_deplib "*) ;;
+ *)
+- tmp_deplibs="$tmp_deplibs $test_deplib"
++ func_append tmp_deplibs " $test_deplib"
+ ;;
+ esac
+ done
+@@ -7286,43 +8249,43 @@
+ fi
+ if test -n "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+- eval "libobjs=\"\$libobjs $whole_archive_flag_spec\""
++ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ test "X$libobjs" = "X " && libobjs=
+ else
+ gentop="$output_objdir/${outputname}x"
+- generated="$generated $gentop"
++ func_append generated " $gentop"
+
+ func_extract_archives $gentop $convenience
+- libobjs="$libobjs $func_extract_archives_result"
++ func_append libobjs " $func_extract_archives_result"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+ fi
+
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+- eval "flag=\"$thread_safe_flag_spec\""
+- linker_flags="$linker_flags $flag"
++ eval flag=\"$thread_safe_flag_spec\"
++ func_append linker_flags " $flag"
+ fi
+
+ # Make a backup of the uninstalled library when relinking
+- if test "$mode" = relink; then
+- $opt_dry_run || (cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U) || exit $?
++ if test "$opt_mode" = relink; then
++ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
+ fi
+
+ # Do each of the archive commands.
+ if test "$module" = yes && test -n "$module_cmds" ; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+- eval "test_cmds=\"$module_expsym_cmds\""
++ eval test_cmds=\"$module_expsym_cmds\"
+ cmds=$module_expsym_cmds
+ else
+- eval "test_cmds=\"$module_cmds\""
++ eval test_cmds=\"$module_cmds\"
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+- eval "test_cmds=\"$archive_expsym_cmds\""
++ eval test_cmds=\"$archive_expsym_cmds\"
+ cmds=$archive_expsym_cmds
+ else
+- eval "test_cmds=\"$archive_cmds\""
++ eval test_cmds=\"$archive_cmds\"
+ cmds=$archive_cmds
+ fi
+ fi
+@@ -7366,10 +8329,13 @@
+ echo 'INPUT (' > $output
+ for obj in $save_libobjs
+ do
+- $ECHO "$obj" >> $output
++ func_to_tool_file "$obj"
++ $ECHO "$func_to_tool_file_result" >> $output
+ done
+ echo ')' >> $output
+- delfiles="$delfiles $output"
++ func_append delfiles " $output"
++ func_to_tool_file "$output"
++ output=$func_to_tool_file_result
+ elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
+ output=${output_objdir}/${output_la}.lnk
+ func_verbose "creating linker input file list: $output"
+@@ -7383,15 +8349,17 @@
+ fi
+ for obj
+ do
+- $ECHO "$obj" >> $output
++ func_to_tool_file "$obj"
++ $ECHO "$func_to_tool_file_result" >> $output
+ done
+- delfiles="$delfiles $output"
+- output=$firstobj\"$file_list_spec$output\"
++ func_append delfiles " $output"
++ func_to_tool_file "$output"
++ output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
+ else
+ if test -n "$save_libobjs"; then
+ func_verbose "creating reloadable object files..."
+ output=$output_objdir/$output_la-${k}.$objext
+- eval "test_cmds=\"$reload_cmds\""
++ eval test_cmds=\"$reload_cmds\"
+ func_len " $test_cmds"
+ len0=$func_len_result
+ len=$len0
+@@ -7411,12 +8379,12 @@
+ if test "$k" -eq 1 ; then
+ # The first file doesn't have a previous command to add.
+ reload_objs=$objlist
+- eval "concat_cmds=\"$reload_cmds\""
++ eval concat_cmds=\"$reload_cmds\"
+ else
+ # All subsequent reloadable object files will link in
+ # the last one created.
+ reload_objs="$objlist $last_robj"
+- eval "concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\""
++ eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
+ fi
+ last_robj=$output_objdir/$output_la-${k}.$objext
+ func_arith $k + 1
+@@ -7433,11 +8401,11 @@
+ # files will link in the last one created.
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ reload_objs="$objlist $last_robj"
+- eval "concat_cmds=\"\${concat_cmds}$reload_cmds\""
++ eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
+ if test -n "$last_robj"; then
+- eval "concat_cmds=\"\${concat_cmds}~\$RM $last_robj\""
++ eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
+ fi
+- delfiles="$delfiles $output"
++ func_append delfiles " $output"
+
+ else
+ output=
+@@ -7450,9 +8418,9 @@
+ libobjs=$output
+ # Append the command to create the export file.
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+- eval "concat_cmds=\"\$concat_cmds$export_symbols_cmds\""
++ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
+ if test -n "$last_robj"; then
+- eval "concat_cmds=\"\$concat_cmds~\$RM $last_robj\""
++ eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+ fi
+ fi
+
+@@ -7471,7 +8439,7 @@
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+- if test "$mode" = relink; then
++ if test "$opt_mode" = relink; then
+ ( cd "$output_objdir" && \
+ $RM "${realname}T" && \
+ $MV "${realname}U" "$realname" )
+@@ -7492,7 +8460,7 @@
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ tmp_export_symbols="$export_symbols"
+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+- $opt_dry_run || $ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"
++ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+ fi
+
+ if test -n "$orig_export_symbols"; then
+@@ -7504,7 +8472,7 @@
+ # global variables. join(1) would be nice here, but unfortunately
+ # isn't a blessed tool.
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+- delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
++ func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+ export_symbols=$output_objdir/$libname.def
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+ fi
+@@ -7515,7 +8483,7 @@
+ output=$save_output
+
+ if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+- eval "libobjs=\"\$libobjs $whole_archive_flag_spec\""
++ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+ # Expand the library linking commands again to reset the
+@@ -7539,23 +8507,23 @@
+
+ if test -n "$delfiles"; then
+ # Append the command to remove temporary files to $cmds.
+- eval "cmds=\"\$cmds~\$RM $delfiles\""
++ eval cmds=\"\$cmds~\$RM $delfiles\"
+ fi
+
+ # Add any objects from preloaded convenience libraries
+ if test -n "$dlprefiles"; then
+ gentop="$output_objdir/${outputname}x"
+- generated="$generated $gentop"
++ func_append generated " $gentop"
+
+ func_extract_archives $gentop $dlprefiles
+- libobjs="$libobjs $func_extract_archives_result"
++ func_append libobjs " $func_extract_archives_result"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+- eval "cmd=\"$cmd\""
++ eval cmd=\"$cmd\"
+ $opt_silent || {
+ func_quote_for_expand "$cmd"
+ eval "func_echo $func_quote_for_expand_result"
+@@ -7564,7 +8532,7 @@
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+- if test "$mode" = relink; then
++ if test "$opt_mode" = relink; then
+ ( cd "$output_objdir" && \
+ $RM "${realname}T" && \
+ $MV "${realname}U" "$realname" )
+@@ -7576,8 +8544,8 @@
+ IFS="$save_ifs"
+
+ # Restore the uninstalled library and exit
+- if test "$mode" = relink; then
+- $opt_dry_run || (cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname) || exit $?
++ if test "$opt_mode" = relink; then
++ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
+
+ if test -n "$convenience"; then
+ if test -z "$whole_archive_flag_spec"; then
+@@ -7656,17 +8624,20 @@
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+- eval "tmp_whole_archive_flags=\"$whole_archive_flag_spec\""
++ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+ reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
+ else
+ gentop="$output_objdir/${obj}x"
+- generated="$generated $gentop"
++ func_append generated " $gentop"
+
+ func_extract_archives $gentop $convenience
+ reload_conv_objs="$reload_objs $func_extract_archives_result"
+ fi
+ fi
+
++ # If we're not building shared, we need to use non_pic_objs
++ test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
++
+ # Create the old-style object.
+ reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+@@ -7690,7 +8661,7 @@
+ # Create an invalid libtool object if no PIC, so that we don't
+ # accidentally link it into a program.
+ # $show "echo timestamp > $libobj"
+- # $opt_dry_run || echo timestamp > $libobj || exit $?
++ # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
+ exit $EXIT_SUCCESS
+ fi
+
+@@ -7740,8 +8711,8 @@
+ if test "$tagname" = CXX ; then
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
+ 10.[0123])
+- compile_command="$compile_command ${wl}-bind_at_load"
+- finalize_command="$finalize_command ${wl}-bind_at_load"
++ func_append compile_command " ${wl}-bind_at_load"
++ func_append finalize_command " ${wl}-bind_at_load"
+ ;;
+ esac
+ fi
+@@ -7761,7 +8732,7 @@
+ *)
+ case " $compile_deplibs " in
+ *" -L$path/$objdir "*)
+- new_libs="$new_libs -L$path/$objdir" ;;
++ func_append new_libs " -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+@@ -7771,17 +8742,17 @@
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+- *) new_libs="$new_libs $deplib" ;;
++ *) func_append new_libs " $deplib" ;;
+ esac
+ ;;
+- *) new_libs="$new_libs $deplib" ;;
++ *) func_append new_libs " $deplib" ;;
+ esac
+ done
+ compile_deplibs="$new_libs"
+
+
+- compile_command="$compile_command $compile_deplibs"
+- finalize_command="$finalize_command $finalize_deplibs"
++ func_append compile_command " $compile_deplibs"
++ func_append finalize_command " $finalize_deplibs"
+
+ if test -n "$rpath$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+@@ -7789,7 +8760,7 @@
+ # This is the magic to use -rpath.
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+- *) finalize_rpath="$finalize_rpath $libdir" ;;
++ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ done
+ fi
+@@ -7808,18 +8779,18 @@
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
++ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+- eval "flag=\"$hardcode_libdir_flag_spec\""
+- rpath="$rpath $flag"
++ eval flag=\"$hardcode_libdir_flag_spec\"
++ func_append rpath " $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+- *) perm_rpath="$perm_rpath $libdir" ;;
++ *) func_append perm_rpath " $libdir" ;;
+ esac
+ fi
+ case $host in
+@@ -7828,12 +8799,12 @@
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+ ::) dllsearchpath=$libdir;;
+- *) dllsearchpath="$dllsearchpath:$libdir";;
++ *) func_append dllsearchpath ":$libdir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ ::) dllsearchpath=$testbindir;;
+- *) dllsearchpath="$dllsearchpath:$testbindir";;
++ *) func_append dllsearchpath ":$testbindir";;
+ esac
+ ;;
+ esac
+@@ -7842,7 +8813,7 @@
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+- eval "rpath=\" $hardcode_libdir_flag_spec\""
++ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ compile_rpath="$rpath"
+
+@@ -7859,18 +8830,18 @@
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
++ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+- eval "flag=\"$hardcode_libdir_flag_spec\""
+- rpath="$rpath $flag"
++ eval flag=\"$hardcode_libdir_flag_spec\"
++ func_append rpath " $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$finalize_perm_rpath " in
+ *" $libdir "*) ;;
+- *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
++ *) func_append finalize_perm_rpath " $libdir" ;;
+ esac
+ fi
+ done
+@@ -7878,7 +8849,7 @@
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+- eval "rpath=\" $hardcode_libdir_flag_spec\""
++ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ finalize_rpath="$rpath"
+
+@@ -7921,6 +8892,12 @@
+ exit_status=0
+ func_show_eval "$link_command" 'exit_status=$?'
+
++ if test -n "$postlink_cmds"; then
++ func_to_tool_file "$output"
++ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
++ func_execute_cmds "$postlink_cmds" 'exit $?'
++ fi
++
+ # Delete the generated files.
+ if test -f "$output_objdir/${outputname}S.${objext}"; then
+ func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
+@@ -7943,7 +8920,7 @@
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+- rpath="$rpath$dir:"
++ func_append rpath "$dir:"
+ done
+ compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+@@ -7951,7 +8928,7 @@
+ # We should set the runpath_var.
+ rpath=
+ for dir in $finalize_perm_rpath; do
+- rpath="$rpath$dir:"
++ func_append rpath "$dir:"
+ done
+ finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+@@ -7966,6 +8943,13 @@
+ $opt_dry_run || $RM $output
+ # Link the executable and exit
+ func_show_eval "$link_command" 'exit $?'
++
++ if test -n "$postlink_cmds"; then
++ func_to_tool_file "$output"
++ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
++ func_execute_cmds "$postlink_cmds" 'exit $?'
++ fi
++
+ exit $EXIT_SUCCESS
+ fi
+
+@@ -7999,6 +8983,12 @@
+
+ func_show_eval "$link_command" 'exit $?'
+
++ if test -n "$postlink_cmds"; then
++ func_to_tool_file "$output_objdir/$outputname"
++ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
++ func_execute_cmds "$postlink_cmds" 'exit $?'
++ fi
++
+ # Now create the wrapper script.
+ func_verbose "creating $output"
+
+@@ -8096,7 +9086,7 @@
+ else
+ oldobjs="$old_deplibs $non_pic_objects"
+ if test "$preload" = yes && test -f "$symfileobj"; then
+- oldobjs="$oldobjs $symfileobj"
++ func_append oldobjs " $symfileobj"
+ fi
+ fi
+ addlibs="$old_convenience"
+@@ -8104,10 +9094,10 @@
+
+ if test -n "$addlibs"; then
+ gentop="$output_objdir/${outputname}x"
+- generated="$generated $gentop"
++ func_append generated " $gentop"
+
+ func_extract_archives $gentop $addlibs
+- oldobjs="$oldobjs $func_extract_archives_result"
++ func_append oldobjs " $func_extract_archives_result"
+ fi
+
+ # Do each command in the archive commands.
+@@ -8118,10 +9108,10 @@
+ # Add any objects from preloaded convenience libraries
+ if test -n "$dlprefiles"; then
+ gentop="$output_objdir/${outputname}x"
+- generated="$generated $gentop"
++ func_append generated " $gentop"
+
+ func_extract_archives $gentop $dlprefiles
+- oldobjs="$oldobjs $func_extract_archives_result"
++ func_append oldobjs " $func_extract_archives_result"
+ fi
+
+ # POSIX demands no paths to be encoded in archives. We have
+@@ -8139,7 +9129,7 @@
+ else
+ echo "copying selected object files to avoid basename conflicts..."
+ gentop="$output_objdir/${outputname}x"
+- generated="$generated $gentop"
++ func_append generated " $gentop"
+ func_mkdir_p "$gentop"
+ save_oldobjs=$oldobjs
+ oldobjs=
+@@ -8163,18 +9153,28 @@
+ esac
+ done
+ func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+- oldobjs="$oldobjs $gentop/$newobj"
++ func_append oldobjs " $gentop/$newobj"
+ ;;
+- *) oldobjs="$oldobjs $obj" ;;
++ *) func_append oldobjs " $obj" ;;
+ esac
+ done
+ fi
+- eval "cmds=\"$old_archive_cmds\""
++ eval cmds=\"$old_archive_cmds\"
+
+ func_len " $cmds"
+ len=$func_len_result
+ if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ cmds=$old_archive_cmds
++ elif test -n "$archiver_list_spec"; then
++ func_verbose "using command file archive linking..."
++ for obj in $oldobjs
++ do
++ func_to_tool_file "$obj"
++ $ECHO "$func_to_tool_file_result"
++ done > $output_objdir/$libname.libcmd
++ func_to_tool_file "$output_objdir/$libname.libcmd"
++ oldobjs=" $archiver_list_spec$func_to_tool_file_result"
++ cmds=$old_archive_cmds
+ else
+ # the command line is too long to link in one step, link in parts
+ func_verbose "using piecewise archive linking..."
+@@ -8189,7 +9189,7 @@
+ do
+ last_oldobj=$obj
+ done
+- eval "test_cmds=\"$old_archive_cmds\""
++ eval test_cmds=\"$old_archive_cmds\"
+ func_len " $test_cmds"
+ len0=$func_len_result
+ len=$len0
+@@ -8208,7 +9208,7 @@
+ RANLIB=$save_RANLIB
+ fi
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+- eval "concat_cmds=\"\${concat_cmds}$old_archive_cmds\""
++ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+ objlist=
+ len=$len0
+ fi
+@@ -8216,9 +9216,9 @@
+ RANLIB=$save_RANLIB
+ oldobjs=$objlist
+ if test "X$oldobjs" = "X" ; then
+- eval "cmds=\"\$concat_cmds\""
++ eval cmds=\"\$concat_cmds\"
+ else
+- eval "cmds=\"\$concat_cmds~\$old_archive_cmds\""
++ eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+ fi
+ fi
+ fi
+@@ -8268,12 +9268,23 @@
+ *.la)
+ func_basename "$deplib"
+ name="$func_basename_result"
+- libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
++ func_resolve_sysroot "$deplib"
++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
+ test -z "$libdir" && \
+ func_fatal_error "\`$deplib' is not a valid libtool archive"
+- newdependency_libs="$newdependency_libs $libdir/$name"
++ func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
++ ;;
++ -L*)
++ func_stripname -L '' "$deplib"
++ func_replace_sysroot "$func_stripname_result"
++ func_append newdependency_libs " -L$func_replace_sysroot_result"
+ ;;
+- *) newdependency_libs="$newdependency_libs $deplib" ;;
++ -R*)
++ func_stripname -R '' "$deplib"
++ func_replace_sysroot "$func_stripname_result"
++ func_append newdependency_libs " -R$func_replace_sysroot_result"
++ ;;
++ *) func_append newdependency_libs " $deplib" ;;
+ esac
+ done
+ dependency_libs="$newdependency_libs"
+@@ -8284,12 +9295,14 @@
+ *.la)
+ func_basename "$lib"
+ name="$func_basename_result"
+- libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
++ func_resolve_sysroot "$lib"
++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
++
+ test -z "$libdir" && \
+ func_fatal_error "\`$lib' is not a valid libtool archive"
+- newdlfiles="$newdlfiles $libdir/$name"
++ func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
+ ;;
+- *) newdlfiles="$newdlfiles $lib" ;;
++ *) func_append newdlfiles " $lib" ;;
+ esac
+ done
+ dlfiles="$newdlfiles"
+@@ -8303,10 +9316,11 @@
+ # the library:
+ func_basename "$lib"
+ name="$func_basename_result"
+- libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
++ func_resolve_sysroot "$lib"
++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
+ test -z "$libdir" && \
+ func_fatal_error "\`$lib' is not a valid libtool archive"
+- newdlprefiles="$newdlprefiles $libdir/$name"
++ func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
+ ;;
+ esac
+ done
+@@ -8318,7 +9332,7 @@
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+- newdlfiles="$newdlfiles $abs"
++ func_append newdlfiles " $abs"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+@@ -8327,7 +9341,7 @@
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+- newdlprefiles="$newdlprefiles $abs"
++ func_append newdlprefiles " $abs"
+ done
+ dlprefiles="$newdlprefiles"
+ fi
+@@ -8412,7 +9426,7 @@
+ exit $EXIT_SUCCESS
+ }
+
+-{ test "$mode" = link || test "$mode" = relink; } &&
++{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
+ func_mode_link ${1+"$@"}
+
+
+@@ -8432,9 +9446,9 @@
+ for arg
+ do
+ case $arg in
+- -f) RM="$RM $arg"; rmforce=yes ;;
+- -*) RM="$RM $arg" ;;
+- *) files="$files $arg" ;;
++ -f) func_append RM " $arg"; rmforce=yes ;;
++ -*) func_append RM " $arg" ;;
++ *) func_append files " $arg" ;;
+ esac
+ done
+
+@@ -8443,24 +9457,23 @@
+
+ rmdirs=
+
+- origobjdir="$objdir"
+ for file in $files; do
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+ if test "X$dir" = X.; then
+- objdir="$origobjdir"
++ odir="$objdir"
+ else
+- objdir="$dir/$origobjdir"
++ odir="$dir/$objdir"
+ fi
+ func_basename "$file"
+ name="$func_basename_result"
+- test "$mode" = uninstall && objdir="$dir"
++ test "$opt_mode" = uninstall && odir="$dir"
+
+- # Remember objdir for removal later, being careful to avoid duplicates
+- if test "$mode" = clean; then
++ # Remember odir for removal later, being careful to avoid duplicates
++ if test "$opt_mode" = clean; then
+ case " $rmdirs " in
+- *" $objdir "*) ;;
+- *) rmdirs="$rmdirs $objdir" ;;
++ *" $odir "*) ;;
++ *) func_append rmdirs " $odir" ;;
+ esac
+ fi
+
+@@ -8486,18 +9499,17 @@
+
+ # Delete the libtool libraries and symlinks.
+ for n in $library_names; do
+- rmfiles="$rmfiles $objdir/$n"
++ func_append rmfiles " $odir/$n"
+ done
+- test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
++ test -n "$old_library" && func_append rmfiles " $odir/$old_library"
+
+- case "$mode" in
++ case "$opt_mode" in
+ clean)
+- case " $library_names " in
+- # " " in the beginning catches empty $dlname
++ case " $library_names " in
+ *" $dlname "*) ;;
+- *) rmfiles="$rmfiles $objdir/$dlname" ;;
++ *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
+ esac
+- test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
++ test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
+ ;;
+ uninstall)
+ if test -n "$library_names"; then
+@@ -8525,19 +9537,19 @@
+ # Add PIC object to the list of files to remove.
+ if test -n "$pic_object" &&
+ test "$pic_object" != none; then
+- rmfiles="$rmfiles $dir/$pic_object"
++ func_append rmfiles " $dir/$pic_object"
+ fi
+
+ # Add non-PIC object to the list of files to remove.
+ if test -n "$non_pic_object" &&
+ test "$non_pic_object" != none; then
+- rmfiles="$rmfiles $dir/$non_pic_object"
++ func_append rmfiles " $dir/$non_pic_object"
+ fi
+ fi
+ ;;
+
+ *)
+- if test "$mode" = clean ; then
++ if test "$opt_mode" = clean ; then
+ noexename=$name
+ case $file in
+ *.exe)
+@@ -8547,7 +9559,7 @@
+ noexename=$func_stripname_result
+ # $file with .exe has already been added to rmfiles,
+ # add $file without .exe
+- rmfiles="$rmfiles $file"
++ func_append rmfiles " $file"
+ ;;
+ esac
+ # Do a test to see if this is a libtool program.
+@@ -8556,7 +9568,7 @@
+ func_ltwrapper_scriptname "$file"
+ relink_command=
+ func_source $func_ltwrapper_scriptname_result
+- rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
++ func_append rmfiles " $func_ltwrapper_scriptname_result"
+ else
+ relink_command=
+ func_source $dir/$noexename
+@@ -8564,12 +9576,12 @@
+
+ # note $name still contains .exe if it was in $file originally
+ # as does the version of $file that was added into $rmfiles
+- rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
++ func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
+ if test "$fast_install" = yes && test -n "$relink_command"; then
+- rmfiles="$rmfiles $objdir/lt-$name"
++ func_append rmfiles " $odir/lt-$name"
+ fi
+ if test "X$noexename" != "X$name" ; then
+- rmfiles="$rmfiles $objdir/lt-${noexename}.c"
++ func_append rmfiles " $odir/lt-${noexename}.c"
+ fi
+ fi
+ fi
+@@ -8577,7 +9589,6 @@
+ esac
+ func_show_eval "$RM $rmfiles" 'exit_status=1'
+ done
+- objdir="$origobjdir"
+
+ # Try to remove the ${objdir}s in the directories where we deleted files
+ for dir in $rmdirs; do
+@@ -8589,16 +9600,16 @@
+ exit $exit_status
+ }
+
+-{ test "$mode" = uninstall || test "$mode" = clean; } &&
++{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
+ func_mode_uninstall ${1+"$@"}
+
+-test -z "$mode" && {
++test -z "$opt_mode" && {
+ help="$generic_help"
+ func_fatal_help "you must specify a MODE"
+ }
+
+ test -z "$exec_cmd" && \
+- func_fatal_help "invalid operation mode \`$mode'"
++ func_fatal_help "invalid operation mode \`$opt_mode'"
+
+ if test -n "$exec_cmd"; then
+ eval exec "$exec_cmd"
+Index: binutils-2.21/ltoptions.m4
+===================================================================
+--- binutils-2.21.orig/ltoptions.m4 2010-01-09 13:11:32.000000000 -0800
++++ binutils-2.21/ltoptions.m4 2011-01-07 10:49:16.406101000 -0800
+@@ -8,7 +8,7 @@
+ # unlimited permission to copy and/or distribute it, with or without
+ # modifications, as long as this notice is preserved.
+
+-# serial 6 ltoptions.m4
++# serial 7 ltoptions.m4
+
+ # This is to help aclocal find these macros, as it can't see m4_define.
+ AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+Index: binutils-2.21/ltversion.m4
+===================================================================
+--- binutils-2.21.orig/ltversion.m4 2010-01-09 13:11:32.000000000 -0800
++++ binutils-2.21/ltversion.m4 2011-01-07 10:49:16.406101000 -0800
+@@ -7,17 +7,17 @@
+ # unlimited permission to copy and/or distribute it, with or without
+ # modifications, as long as this notice is preserved.
+
+-# Generated from ltversion.in.
++# @configure_input@
+
+-# serial 3134 ltversion.m4
++# serial 3293 ltversion.m4
+ # This file is part of GNU Libtool
+
+-m4_define([LT_PACKAGE_VERSION], [2.2.7a])
+-m4_define([LT_PACKAGE_REVISION], [1.3134])
++m4_define([LT_PACKAGE_VERSION], [2.4])
++m4_define([LT_PACKAGE_REVISION], [1.3293])
+
+ AC_DEFUN([LTVERSION_VERSION],
+-[macro_version='2.2.7a'
+-macro_revision='1.3134'
++[macro_version='2.4'
++macro_revision='1.3293'
+ _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+ _LT_DECL(, macro_revision, 0)
+ ])
+Index: binutils-2.21/lt~obsolete.m4
+===================================================================
+--- binutils-2.21.orig/lt~obsolete.m4 2010-01-09 13:11:32.000000000 -0800
++++ binutils-2.21/lt~obsolete.m4 2011-01-07 10:49:16.406101000 -0800
+@@ -7,7 +7,7 @@
+ # unlimited permission to copy and/or distribute it, with or without
+ # modifications, as long as this notice is preserved.
+
+-# serial 4 lt~obsolete.m4
++# serial 5 lt~obsolete.m4
+
+ # These exist entirely to fool aclocal when bootstrapping libtool.
+ #
+Index: binutils-2.21/configure
+===================================================================
+--- binutils-2.21.orig/configure 2011-01-07 10:49:16.006101000 -0800
++++ binutils-2.21/configure 2011-01-07 10:49:17.906101000 -0800
+@@ -2670,7 +2670,7 @@
+ # binutils, gas and ld appear in that order because it makes sense to run
+ # "make check" in that particular order.
+ # If --enable-gold is used, "gold" may replace "ld".
+-host_tools="texinfo byacc flex bison binutils gas ld fixincludes gcc cgen sid sim gdb make patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar gnattools"
++host_tools="byacc flex bison binutils gas ld fixincludes gcc cgen sid sim gdb make patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar gnattools"
+
+ # libgcj represents the runtime libraries only used by gcj.
+ libgcj="target-libffi \
+@@ -3148,7 +3148,7 @@
+ am33_2.0-*-linux*)
+ noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
+ ;;
+- sh*-*-linux*)
++ sh-*-linux*)
+ noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
+ ;;
+ sh*-*-pe|mips*-*-pe|*arm-wince-pe)
+@@ -3487,7 +3487,7 @@
+ romp-*-*)
+ noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
+ ;;
+- sh*-*-* | sh64-*-*)
++ sh-*-* | sh64-*-*)
+ case "${host}" in
+ i[3456789]86-*-vsta) ;; # don't add gprof back in
+ i[3456789]86-*-go32*) ;; # don't add gprof back in
+@@ -7597,7 +7597,7 @@
+ # For an installed makeinfo, we require it to be from texinfo 4.7 or
+ # higher, else we use the "missing" dummy.
+ if ${MAKEINFO} --version \
+- | egrep 'texinfo[^0-9]*(4\.([7-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
++ | egrep 'texinfo[^0-9]*([1-3][0-9]|4.[4-9]|4.[1-9][0-9]+|[5-9])' >/dev/null 2>&1; then
+ :
+ else
+ MAKEINFO="$MISSING makeinfo"
+Index: binutils-2.21/bfd/configure
+===================================================================
+--- binutils-2.21.orig/bfd/configure 2010-12-08 00:37:34.000000000 -0800
++++ binutils-2.21/bfd/configure 2011-01-07 11:25:57.156101002 -0800
+@@ -667,6 +667,9 @@
+ LIPO
+ NMEDIT
+ DSYMUTIL
++MANIFEST_TOOL
++ac_ct_AR
++DLLTOOL
+ OBJDUMP
+ LN_S
+ NM
+@@ -779,6 +782,7 @@
+ with_pic
+ enable_fast_install
+ with_gnu_ld
++with_libtool_sysroot
+ enable_libtool_lock
+ enable_plugins
+ enable_largefile
+@@ -1453,6 +1457,8 @@
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
++ (or the compiler's sysroot if not specified).
+ --with-mmap try using mmap for BFD input files if available
+ --with-separate-debug-dir=DIR
+ Look for global separate debug info in DIR
+@@ -5383,8 +5389,8 @@
+
+
+
+-macro_version='2.2.7a'
+-macro_revision='1.3134'
++macro_version='2.4'
++macro_revision='1.3293'
+
+
+
+@@ -5424,7 +5430,7 @@
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+ $as_echo_n "checking how to print strings... " >&6; }
+ # Test print first, because it will be a builtin if present.
+-if test "X`print -r -- -n 2>/dev/null`" = X-n && \
++if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='print -r --'
+ elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+@@ -6110,8 +6116,8 @@
+ # Try some XSI features
+ xsi_shell=no
+ ( _lt_dummy="a/b/c"
+- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+- = c,a/b,, \
++ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
++ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+@@ -6160,6 +6166,80 @@
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
++$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
++if test "${lt_cv_to_host_file_cmd+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
++ ;;
++ esac
++ ;;
++ *-*-cygwin* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
++ ;;
++ esac
++ ;;
++ * ) # unhandled hosts (and "normal" native builds)
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++esac
++
++fi
++
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
++$as_echo "$lt_cv_to_host_file_cmd" >&6; }
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
++$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
++if test "${lt_cv_to_tool_file_cmd+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ #assume ordinary cross tools, or native build.
++lt_cv_to_tool_file_cmd=func_convert_file_noop
++case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ esac
++ ;;
++esac
++
++fi
++
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
++$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
++
++
++
++
++
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+ $as_echo_n "checking for $LD option to reload object files... " >&6; }
+ if test "${lt_cv_ld_reload_flag+set}" = set; then :
+@@ -6176,6 +6256,11 @@
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ case $host_os in
++ cygwin* | mingw* | pw32* | cegcc*)
++ if test "$GCC" != yes; then
++ reload_cmds=false
++ fi
++ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+@@ -6344,7 +6429,8 @@
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
++ # Keep this pattern in sync with the one in func_win32_libid.
++ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+@@ -6498,6 +6584,21 @@
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+ $as_echo "$lt_cv_deplibs_check_method" >&6; }
++
++file_magic_glob=
++want_nocaseglob=no
++if test "$build" = "$host"; then
++ case $host_os in
++ mingw* | pw32*)
++ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
++ want_nocaseglob=yes
++ else
++ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
++ fi
++ ;;
++ esac
++fi
++
+ file_magic_cmd=$lt_cv_file_magic_cmd
+ deplibs_check_method=$lt_cv_deplibs_check_method
+ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -6513,9 +6614,162 @@
+
+
+
++
++
++
++
++
++
++
++
++
++
+ if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}ar; ac_word=$2
++ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
++set dummy ${ac_tool_prefix}dlltool; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_DLLTOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$DLLTOOL"; then
++ ac_cv_prog_DLLTOOL="$DLLTOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++DLLTOOL=$ac_cv_prog_DLLTOOL
++if test -n "$DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
++$as_echo "$DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_DLLTOOL"; then
++ ac_ct_DLLTOOL=$DLLTOOL
++ # Extract the first word of "dlltool", so it can be a program name with args.
++set dummy dlltool; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_DLLTOOL"; then
++ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
++if test -n "$ac_ct_DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
++$as_echo "$ac_ct_DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_DLLTOOL" = x; then
++ DLLTOOL="false"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ DLLTOOL=$ac_ct_DLLTOOL
++ fi
++else
++ DLLTOOL="$ac_cv_prog_DLLTOOL"
++fi
++
++test -z "$DLLTOOL" && DLLTOOL=dlltool
++
++
++
++
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
++$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
++if test "${lt_cv_sharedlib_from_linklib_cmd+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_sharedlib_from_linklib_cmd='unknown'
++
++case $host_os in
++cygwin* | mingw* | pw32* | cegcc*)
++ # two different shell functions defined in ltmain.sh
++ # decide which to use based on capabilities of $DLLTOOL
++ case `$DLLTOOL --help 2>&1` in
++ *--identify-strict*)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
++ ;;
++ *)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
++ ;;
++ esac
++ ;;
++*)
++ # fallback: assume linklib IS sharedlib
++ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
++ ;;
++esac
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
++$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
++sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
++test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
++
++
++
++
++
++
++
++if test -n "$ac_tool_prefix"; then
++ for ac_prog in ar
++ do
++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
++set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_prog_AR+set}" = set; then :
+@@ -6531,7 +6785,7 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_prog_AR="${ac_tool_prefix}ar"
++ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6551,11 +6805,15 @@
+ fi
+
+
++ test -n "$AR" && break
++ done
+ fi
+-if test -z "$ac_cv_prog_AR"; then
++if test -z "$AR"; then
+ ac_ct_AR=$AR
+- # Extract the first word of "ar", so it can be a program name with args.
+-set dummy ar; ac_word=$2
++ for ac_prog in ar
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
+@@ -6571,7 +6829,7 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_prog_ac_ct_AR="ar"
++ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6590,6 +6848,10 @@
+ $as_echo "no" >&6; }
+ fi
+
++
++ test -n "$ac_ct_AR" && break
++done
++
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+@@ -6601,16 +6863,72 @@
+ esac
+ AR=$ac_ct_AR
+ fi
+-else
+- AR="$ac_cv_prog_AR"
+ fi
+
+-test -z "$AR" && AR=ar
+-test -z "$AR_FLAGS" && AR_FLAGS=cru
++: ${AR=ar}
++: ${AR_FLAGS=cru}
++
++
++
++
++
++
++
++
++
++
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
++$as_echo_n "checking for archiver @FILE support... " >&6; }
++if test "${lt_cv_ar_at_file+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_ar_at_file=no
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
+
++int
++main ()
++{
+
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ echo conftest.$ac_objext > conftest.lst
++ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -eq 0; then
++ # Ensure the archiver fails upon bogus file names.
++ rm -f conftest.$ac_objext libconftest.a
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -ne 0; then
++ lt_cv_ar_at_file=@
++ fi
++ fi
++ rm -f conftest.* libconftest.a
+
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
++$as_echo "$lt_cv_ar_at_file" >&6; }
++
++if test "x$lt_cv_ar_at_file" = xno; then
++ archiver_list_spec=
++else
++ archiver_list_spec=$lt_cv_ar_at_file
++fi
+
+
+
+@@ -6952,8 +7270,8 @@
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+ # Transform an extracted symbol line into symbol name and symbol address
+-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+ # Handle CRLF in mingw tool chain
+ opt_cr=
+@@ -6989,6 +7307,7 @@
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
++ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -7030,6 +7349,18 @@
+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<_LT_EOF > conftest.$ac_ext
++/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
++#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
++/* DATA imports from DLLs on WIN32 con't be const, because runtime
++ relocations are performed -- see ld's documentation on pseudo-relocs. */
++# define LT_DLSYM_CONST
++#elif defined(__osf__)
++/* This system does not cope well with relocations in const data. */
++# define LT_DLSYM_CONST
++#else
++# define LT_DLSYM_CONST const
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -7041,7 +7372,7 @@
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+ /* The mapping between symbol names and symbols. */
+-const struct {
++LT_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+ }
+@@ -7067,8 +7398,8 @@
+ _LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+- lt_save_LIBS="$LIBS"
+- lt_save_CFLAGS="$CFLAGS"
++ lt_globsym_save_LIBS=$LIBS
++ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+@@ -7078,8 +7409,8 @@
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+- LIBS="$lt_save_LIBS"
+- CFLAGS="$lt_save_CFLAGS"
++ LIBS=$lt_globsym_save_LIBS
++ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+@@ -7116,6 +7447,20 @@
+ $as_echo "ok" >&6; }
+ fi
+
++# Response file support.
++if test "$lt_cv_nm_interface" = "MS dumpbin"; then
++ nm_file_list_spec='@'
++elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
++ nm_file_list_spec='@'
++fi
++
++
++
++
++
++
++
++
+
+
+
+@@ -7135,6 +7480,41 @@
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
++$as_echo_n "checking for sysroot... " >&6; }
++
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
++else
++ with_libtool_sysroot=no
++fi
++
++
++lt_sysroot=
++case ${with_libtool_sysroot} in #(
++ yes)
++ if test "$GCC" = yes; then
++ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
++ fi
++ ;; #(
++ /*)
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
++ ;; #(
++ no|'')
++ ;; #(
++ *)
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
++ as_fn_error "The sysroot must be an absolute path." "$LINENO" 5
++ ;;
++esac
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
++$as_echo "${lt_sysroot:-no}" >&6; }
++
++
++
+
+
+ # Check whether --enable-libtool-lock was given.
+@@ -7330,6 +7710,123 @@
+
+ need_locks="$enable_libtool_lock"
+
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
++set dummy ${ac_tool_prefix}mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_MANIFEST_TOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$MANIFEST_TOOL"; then
++ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
++if test -n "$MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
++$as_echo "$MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
++ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
++ # Extract the first word of "mt", so it can be a program name with args.
++set dummy mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_ac_ct_MANIFEST_TOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_MANIFEST_TOOL"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
++if test -n "$ac_ct_MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
++$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_MANIFEST_TOOL" = x; then
++ MANIFEST_TOOL=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
++ fi
++else
++ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
++fi
++
++test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
++$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
++if test "${lt_cv_path_mainfest_tool+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_path_mainfest_tool=no
++ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
++ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
++ cat conftest.err >&5
++ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
++ lt_cv_path_mainfest_tool=yes
++ fi
++ rm -f conftest*
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
++$as_echo "$lt_cv_path_mainfest_tool" >&6; }
++if test "x$lt_cv_path_mainfest_tool" != xyes; then
++ MANIFEST_TOOL=:
++fi
++
++
++
++
++
+
+ case $host_os in
+ rhapsody* | darwin*)
+@@ -7893,6 +8390,8 @@
+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+ echo "$AR cru libconftest.a conftest.o" >&5
+ $AR cru libconftest.a conftest.o 2>&5
++ echo "$RANLIB libconftest.a" >&5
++ $RANLIB libconftest.a 2>&5
+ cat > conftest.c << _LT_EOF
+ int main() { return 0;}
+ _LT_EOF
+@@ -8057,7 +8556,8 @@
+ LIBTOOL_DEPS="$ltmain"
+
+ # Always use our own libtool.
+-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
++LIBTOOL='$(SHELL) $(top_builddir)'
++LIBTOOL="$LIBTOOL/${host_alias}-libtool"
+
+
+
+@@ -8146,7 +8646,7 @@
+ esac
+
+ # Global variables:
+-ofile=libtool
++ofile=${host_alias}-libtool
+ can_build_shared=yes
+
+ # All known linkers require a `.a' archive for static linking (except MSVC,
+@@ -8444,8 +8944,6 @@
+ lt_prog_compiler_pic=
+ lt_prog_compiler_static=
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+@@ -8610,6 +9108,12 @@
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
++ nagfor*)
++ # NAG Fortran compiler
++ lt_prog_compiler_wl='-Wl,-Wl,,'
++ lt_prog_compiler_pic='-PIC'
++ lt_prog_compiler_static='-Bstatic'
++ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+@@ -8672,7 +9176,7 @@
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ case $cc_basename in
+- f77* | f90* | f95*)
++ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+@@ -8729,13 +9233,17 @@
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+ esac
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+-$as_echo "$lt_prog_compiler_pic" >&6; }
+-
+-
+-
+-
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
++$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
++if test "${lt_cv_prog_compiler_pic+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
++$as_echo "$lt_cv_prog_compiler_pic" >&6; }
++lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+ #
+ # Check to make sure the PIC flag actually works.
+@@ -8796,6 +9304,11 @@
+
+
+
++
++
++
++
++
+ #
+ # Check to make sure the static flag actually works.
+ #
+@@ -9146,7 +9659,8 @@
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
++ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+@@ -9194,7 +9708,7 @@
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+- tmp_addflag=
++ tmp_addflag=' $pic_flag'
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+@@ -9245,12 +9759,12 @@
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
++ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
++ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+@@ -9264,8 +9778,8 @@
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+@@ -9283,8 +9797,8 @@
+
+ _LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9330,8 +9844,8 @@
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9461,7 +9975,13 @@
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if test "${lt_cv_aix_libpath_+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9474,22 +9994,29 @@
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+@@ -9501,7 +10028,13 @@
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if test "${lt_cv_aix_libpath_+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9514,22 +10047,29 @@
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+@@ -9574,20 +10114,63 @@
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+- hardcode_libdir_flag_spec=' '
+- allow_undefined_flag=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- old_archive_from_new_cmds='true'
+- # FIXME: Should let the user specify the lib program.
+- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+- fix_srcfile_path='`cygpath -w "$srcfile"`'
+- enable_shared_with_static_runtimes=yes
++ case $cc_basename in
++ cl*)
++ # Native MSVC
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ always_export_symbols=yes
++ file_list_spec='@'
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
++ else
++ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
++ fi~
++ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++ linknames='
++ # The linker will not automatically build a static lib if we build a DLL.
++ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
++ enable_shared_with_static_runtimes=yes
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ # Don't use ranlib
++ old_postinstall_cmds='chmod 644 $oldlib'
++ postlink_cmds='lt_outputfile="@OUTPUT@"~
++ lt_tool_outputfile="@TOOL_OUTPUT@"~
++ case $lt_outputfile in
++ *.exe|*.EXE) ;;
++ *)
++ lt_outputfile="$lt_outputfile.exe"
++ lt_tool_outputfile="$lt_tool_outputfile.exe"
++ ;;
++ esac~
++ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
++ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
++ $RM "$lt_outputfile.manifest";
++ fi'
++ ;;
++ *)
++ # Assume MSVC wrapper
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ old_archive_from_new_cmds='true'
++ # FIXME: Should let the user specify the lib program.
++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
++ enable_shared_with_static_runtimes=yes
++ ;;
++ esac
+ ;;
+
+ darwin* | rhapsody*)
+@@ -9652,7 +10235,7 @@
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+@@ -9660,7 +10243,7 @@
+
+ hpux9*)
+ if test "$GCC" = yes; then
+- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+@@ -9676,7 +10259,7 @@
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+@@ -9700,10 +10283,10 @@
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+@@ -9782,23 +10365,36 @@
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ # This should be the same for all languages, so no per-tag cache variable.
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
++$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
++if test "${lt_cv_irix_exported_symbol+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-int foo(void) {}
++int foo (void) { return 0; }
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+-
++ lt_cv_irix_exported_symbol=yes
++else
++ lt_cv_irix_exported_symbol=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+- LDFLAGS="$save_LDFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
++$as_echo "$lt_cv_irix_exported_symbol" >&6; }
++ if test "$lt_cv_irix_exported_symbol" = yes; then
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
++ fi
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+@@ -9883,7 +10479,7 @@
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+@@ -9902,9 +10498,9 @@
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
++ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+@@ -10480,8 +11076,9 @@
+ need_version=no
+ need_lib_prefix=no
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
++ case $GCC,$cc_basename in
++ yes,*)
++ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+@@ -10514,13 +11111,71 @@
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
++ dynamic_linker='Win32 ld.exe'
++ ;;
++
++ *,cl*)
++ # Native MSVC
++ libname_spec='$name'
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='${libname}.dll.lib'
++
++ case $build_os in
++ mingw*)
++ sys_lib_search_path_spec=
++ lt_save_ifs=$IFS
++ IFS=';'
++ for lt_path in $LIB
++ do
++ IFS=$lt_save_ifs
++ # Let DOS variable expansion print the short 8.3 style file name.
++ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
++ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
++ done
++ IFS=$lt_save_ifs
++ # Convert to MSYS style.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
++ ;;
++ cygwin*)
++ # Convert to unix form, then to dos form, then back to unix form
++ # but this time dos style (no spaces!) so that the unix form looks
++ # like /cygdrive/c/PROGRA~1:/cygdr...
++ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
++ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
++ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ ;;
++ *)
++ sys_lib_search_path_spec="$LIB"
++ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
++ # It is most probably a Windows format PATH.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ # FIXME: find the short name or the path components, as spaces are
++ # common. (e.g. "Program Files" -> "PROGRA~1")
++ ;;
++ esac
++
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $RM \$dlpath'
++ shlibpath_overrides_runpath=yes
++ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
++ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+- dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+@@ -10616,7 +11271,7 @@
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
++ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+ hardcode_into_libs=yes
+ ;;
+
+@@ -11412,7 +12067,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11415 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11456,10 +12111,10 @@
+ /* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -11518,7 +12173,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11521 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11562,10 +12217,10 @@
+ /* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -14897,7 +15552,7 @@
+ if test "$enable_shared" = "yes"; then
+ x=`sed -n -e 's/^[ ]*PICFLAG[ ]*=[ ]*//p' < ../libiberty/Makefile | sed -n '$p'`
+ if test -n "$x"; then
+- SHARED_LIBADD="-L`pwd`/../libiberty/pic -liberty"
++ SHARED_LIBADD="`pwd`/../libiberty/pic/libiberty.a"
+ fi
+
+ # More hacks to build DLLs on Windows.
+@@ -16473,13 +17128,20 @@
+ lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+ lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+ lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
++lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
++lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+ reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+ reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+ OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+ deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+ file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
++file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
++want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
++DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
++sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+ AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+ AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
++archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+ STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+ RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+ old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+@@ -16494,14 +17156,17 @@
+ lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+ lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
++nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
++lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+ objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+ MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
++lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+ lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+ need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
++MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+ DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+ NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+ LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+@@ -16534,12 +17199,12 @@
+ hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+ inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+ link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+-fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
+ always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+ export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+ exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+ include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+ prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
++postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+ file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+ variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+ need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+@@ -16594,8 +17259,13 @@
+ OBJDUMP \
+ deplibs_check_method \
+ file_magic_cmd \
++file_magic_glob \
++want_nocaseglob \
++DLLTOOL \
++sharedlib_from_linklib_cmd \
+ AR \
+ AR_FLAGS \
++archiver_list_spec \
+ STRIP \
+ RANLIB \
+ CC \
+@@ -16605,12 +17275,14 @@
+ lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
++nm_file_list_spec \
+ lt_prog_compiler_no_builtin_flag \
+-lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
++lt_prog_compiler_wl \
+ lt_prog_compiler_static \
+ lt_cv_prog_compiler_c_o \
+ need_locks \
++MANIFEST_TOOL \
+ DSYMUTIL \
+ NMEDIT \
+ LIPO \
+@@ -16626,7 +17298,6 @@
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+-fix_srcfile_path \
+ exclude_expsyms \
+ include_expsyms \
+ file_list_spec \
+@@ -16662,6 +17333,7 @@
+ module_expsym_cmds \
+ export_symbols_cmds \
+ prelink_cmds \
++postlink_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ finish_cmds \
+@@ -17441,7 +18113,8 @@
+ # NOTE: Changes made to this file will be lost: look at ltmain.sh.
+ #
+ # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+-# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
++# Inc.
+ # Written by Gordon Matzigkeit, 1996
+ #
+ # This file is part of GNU Libtool.
+@@ -17544,19 +18217,42 @@
+ # turn newlines into spaces.
+ NL2SP=$lt_lt_NL2SP
+
++# convert \$build file names to \$host format.
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++
++# convert \$build files to toolchain format.
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++
+ # An object symbol dumper.
+ OBJDUMP=$lt_OBJDUMP
+
+ # Method to check whether dependent libraries are shared objects.
+ deplibs_check_method=$lt_deplibs_check_method
+
+-# Command to use when deplibs_check_method == "file_magic".
++# Command to use when deplibs_check_method = "file_magic".
+ file_magic_cmd=$lt_file_magic_cmd
+
++# How to find potential files when deplibs_check_method = "file_magic".
++file_magic_glob=$lt_file_magic_glob
++
++# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
++want_nocaseglob=$lt_want_nocaseglob
++
++# DLL creation program.
++DLLTOOL=$lt_DLLTOOL
++
++# Command to associate shared and link libraries.
++sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
++
+ # The archiver.
+ AR=$lt_AR
++
++# Flags to create an archive.
+ AR_FLAGS=$lt_AR_FLAGS
+
++# How to feed a file listing to the archiver.
++archiver_list_spec=$lt_archiver_list_spec
++
+ # A symbol stripping program.
+ STRIP=$lt_STRIP
+
+@@ -17586,6 +18282,12 @@
+ # Transform the output of nm in a C name address pair when lib prefix is needed.
+ global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
++# Specify filename containing input files for \$NM.
++nm_file_list_spec=$lt_nm_file_list_spec
++
++# The root where to search for dependent libraries,and in which our libraries should be installed.
++lt_sysroot=$lt_sysroot
++
+ # The name of the directory that contains temporary libtool files.
+ objdir=$objdir
+
+@@ -17595,6 +18297,9 @@
+ # Must we lock files when doing compilation?
+ need_locks=$lt_need_locks
+
++# Manifest tool.
++MANIFEST_TOOL=$lt_MANIFEST_TOOL
++
+ # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+ DSYMUTIL=$lt_DSYMUTIL
+
+@@ -17709,12 +18414,12 @@
+ # Compiler flag to turn off builtin functions.
+ no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl
+-
+ # Additional compiler flags for building library objects.
+ pic_flag=$lt_lt_prog_compiler_pic
+
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl
++
+ # Compiler flag to prevent dynamic linking.
+ link_static_flag=$lt_lt_prog_compiler_static
+
+@@ -17801,9 +18506,6 @@
+ # Whether libtool must link a program against all its dependency libraries.
+ link_all_deplibs=$link_all_deplibs
+
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path=$lt_fix_srcfile_path
+-
+ # Set to "yes" if exported symbols are required.
+ always_export_symbols=$always_export_symbols
+
+@@ -17819,6 +18521,9 @@
+ # Commands necessary for linking programs (against libraries) with templates.
+ prelink_cmds=$lt_prelink_cmds
+
++# Commands necessary for finishing linking programs.
++postlink_cmds=$lt_postlink_cmds
++
+ # Specify filename containing input files.
+ file_list_spec=$lt_file_list_spec
+
+@@ -17851,210 +18556,169 @@
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- case $xsi_shell in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_dirname_and_basename file append nondir_replacement
+-# perform func_basename and func_dirname in a single function
+-# call:
+-# dirname: Compute the dirname of FILE. If nonempty,
+-# add APPEND to the result, otherwise set result
+-# to NONDIR_REPLACEMENT.
+-# value returned in "$func_dirname_result"
+-# basename: Compute filename of FILE.
+-# value retuned in "$func_basename_result"
+-# Implementation must be kept synchronized with func_dirname
+-# and func_basename. For efficiency, we do not delegate to
+-# those functions but instead duplicate the functionality here.
+-func_dirname_and_basename ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-func_stripname ()
+-{
+- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+- # positional parameters, so assign one to ordinary parameter first.
+- func_stripname_result=${3}
+- func_stripname_result=${func_stripname_result#"${1}"}
+- func_stripname_result=${func_stripname_result%"${2}"}
+-}
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=${1%%=*}
+- func_opt_split_arg=${1#*=}
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- case ${1} in
+- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+- *) func_lo2o_result=${1} ;;
+- esac
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=${1%.*}.lo
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=$(( $* ))
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=${#1}
+-}
+-
+-_LT_EOF
+- ;;
+- *) # Bourne compatible functions.
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- # Extract subdirectory from the argument.
+- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+- if test "X$func_dirname_result" = "X${1}"; then
+- func_dirname_result="${3}"
+- else
+- func_dirname_result="$func_dirname_result${2}"
+- fi
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+-}
+-
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-# func_strip_suffix prefix name
+-func_stripname ()
+-{
+- case ${2} in
+- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+- esac
+-}
+-
+-# sed scripts:
+-my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+-my_sed_long_arg='1s/^-[^=]*=//'
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=`expr "$@"`
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+-}
+-
+-_LT_EOF
+-esac
+-
+-case $lt_shell_append in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1+=\$2"
+-}
+-_LT_EOF
+- ;;
+- *)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1=\$$1\$2"
+-}
+-
+-_LT_EOF
+- ;;
+- esac
++ sed '$q' "$ltmain" >> "$cfgfile" \
++ || (rm -f "$cfgfile"; exit 1)
+
++ if test x"$xsi_shell" = xyes; then
++ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
++func_dirname ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_basename ()$/,/^} # func_basename /c\
++func_basename ()\
++{\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
++func_dirname_and_basename ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
++func_stripname ()\
++{\
++\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
++\ # positional parameters, so assign one to ordinary parameter first.\
++\ func_stripname_result=${3}\
++\ func_stripname_result=${func_stripname_result#"${1}"}\
++\ func_stripname_result=${func_stripname_result%"${2}"}\
++} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
++func_split_long_opt ()\
++{\
++\ func_split_long_opt_name=${1%%=*}\
++\ func_split_long_opt_arg=${1#*=}\
++} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
++func_split_short_opt ()\
++{\
++\ func_split_short_opt_arg=${1#??}\
++\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
++} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
++func_lo2o ()\
++{\
++\ case ${1} in\
++\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
++\ *) func_lo2o_result=${1} ;;\
++\ esac\
++} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_xform ()$/,/^} # func_xform /c\
++func_xform ()\
++{\
++ func_xform_result=${1%.*}.lo\
++} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_arith ()$/,/^} # func_arith /c\
++func_arith ()\
++{\
++ func_arith_result=$(( $* ))\
++} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_len ()$/,/^} # func_len /c\
++func_len ()\
++{\
++ func_len_result=${#1}\
++} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++fi
++
++if test x"$lt_shell_append" = xyes; then
++ sed -e '/^func_append ()$/,/^} # func_append /c\
++func_append ()\
++{\
++ eval "${1}+=\\${2}"\
++} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
++func_append_quoted ()\
++{\
++\ func_quote_for_eval "${2}"\
++\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
++} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ # Save a `func_append' function call where possible by direct use of '+='
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++else
++ # Save a `func_append' function call even when '+=' is not available
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++fi
++
++if test x"$_lt_function_replace_fail" = x":"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
++$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
++fi
+
+- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+
+- mv -f "$cfgfile" "$ofile" ||
++ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+Index: binutils-2.21/opcodes/configure
+===================================================================
+--- binutils-2.21.orig/opcodes/configure 2010-11-05 03:32:32.000000000 -0700
++++ binutils-2.21/opcodes/configure 2011-01-07 11:26:03.686101001 -0800
+@@ -647,6 +647,9 @@
+ LIPO
+ NMEDIT
+ DSYMUTIL
++MANIFEST_TOOL
++ac_ct_AR
++DLLTOOL
+ OBJDUMP
+ LN_S
+ NM
+@@ -759,6 +762,7 @@
+ with_pic
+ enable_fast_install
+ with_gnu_ld
++with_libtool_sysroot
+ enable_libtool_lock
+ enable_targets
+ enable_werror
+@@ -1417,6 +1421,8 @@
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
++ (or the compiler's sysroot if not specified).
+
+ Some influential environment variables:
+ CC C compiler command
+@@ -5112,8 +5118,8 @@
+
+
+
+-macro_version='2.2.7a'
+-macro_revision='1.3134'
++macro_version='2.4'
++macro_revision='1.3293'
+
+
+
+@@ -5153,7 +5159,7 @@
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+ $as_echo_n "checking how to print strings... " >&6; }
+ # Test print first, because it will be a builtin if present.
+-if test "X`print -r -- -n 2>/dev/null`" = X-n && \
++if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='print -r --'
+ elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+@@ -5839,8 +5845,8 @@
+ # Try some XSI features
+ xsi_shell=no
+ ( _lt_dummy="a/b/c"
+- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+- = c,a/b,, \
++ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
++ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+@@ -5889,6 +5895,80 @@
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
++$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
++if test "${lt_cv_to_host_file_cmd+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
++ ;;
++ esac
++ ;;
++ *-*-cygwin* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
++ ;;
++ esac
++ ;;
++ * ) # unhandled hosts (and "normal" native builds)
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++esac
++
++fi
++
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
++$as_echo "$lt_cv_to_host_file_cmd" >&6; }
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
++$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
++if test "${lt_cv_to_tool_file_cmd+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ #assume ordinary cross tools, or native build.
++lt_cv_to_tool_file_cmd=func_convert_file_noop
++case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ esac
++ ;;
++esac
++
++fi
++
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
++$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
++
++
++
++
++
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+ $as_echo_n "checking for $LD option to reload object files... " >&6; }
+ if test "${lt_cv_ld_reload_flag+set}" = set; then :
+@@ -5905,6 +5985,11 @@
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ case $host_os in
++ cygwin* | mingw* | pw32* | cegcc*)
++ if test "$GCC" != yes; then
++ reload_cmds=false
++ fi
++ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+@@ -6073,7 +6158,8 @@
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
++ # Keep this pattern in sync with the one in func_win32_libid.
++ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+@@ -6227,6 +6313,21 @@
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+ $as_echo "$lt_cv_deplibs_check_method" >&6; }
++
++file_magic_glob=
++want_nocaseglob=no
++if test "$build" = "$host"; then
++ case $host_os in
++ mingw* | pw32*)
++ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
++ want_nocaseglob=yes
++ else
++ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
++ fi
++ ;;
++ esac
++fi
++
+ file_magic_cmd=$lt_cv_file_magic_cmd
+ deplibs_check_method=$lt_cv_deplibs_check_method
+ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -6242,9 +6343,162 @@
+
+
+
++
++
++
++
++
++
++
++
++
++
+ if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}ar; ac_word=$2
++ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
++set dummy ${ac_tool_prefix}dlltool; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_DLLTOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$DLLTOOL"; then
++ ac_cv_prog_DLLTOOL="$DLLTOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++DLLTOOL=$ac_cv_prog_DLLTOOL
++if test -n "$DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
++$as_echo "$DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_DLLTOOL"; then
++ ac_ct_DLLTOOL=$DLLTOOL
++ # Extract the first word of "dlltool", so it can be a program name with args.
++set dummy dlltool; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_DLLTOOL"; then
++ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
++if test -n "$ac_ct_DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
++$as_echo "$ac_ct_DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_DLLTOOL" = x; then
++ DLLTOOL="false"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ DLLTOOL=$ac_ct_DLLTOOL
++ fi
++else
++ DLLTOOL="$ac_cv_prog_DLLTOOL"
++fi
++
++test -z "$DLLTOOL" && DLLTOOL=dlltool
++
++
++
++
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
++$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
++if test "${lt_cv_sharedlib_from_linklib_cmd+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_sharedlib_from_linklib_cmd='unknown'
++
++case $host_os in
++cygwin* | mingw* | pw32* | cegcc*)
++ # two different shell functions defined in ltmain.sh
++ # decide which to use based on capabilities of $DLLTOOL
++ case `$DLLTOOL --help 2>&1` in
++ *--identify-strict*)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
++ ;;
++ *)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
++ ;;
++ esac
++ ;;
++*)
++ # fallback: assume linklib IS sharedlib
++ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
++ ;;
++esac
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
++$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
++sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
++test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
++
++
++
++
++
++
++
++if test -n "$ac_tool_prefix"; then
++ for ac_prog in ar
++ do
++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
++set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_prog_AR+set}" = set; then :
+@@ -6260,7 +6514,7 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_prog_AR="${ac_tool_prefix}ar"
++ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6280,11 +6534,15 @@
+ fi
+
+
++ test -n "$AR" && break
++ done
+ fi
+-if test -z "$ac_cv_prog_AR"; then
++if test -z "$AR"; then
+ ac_ct_AR=$AR
+- # Extract the first word of "ar", so it can be a program name with args.
+-set dummy ar; ac_word=$2
++ for ac_prog in ar
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
+@@ -6300,7 +6558,7 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_prog_ac_ct_AR="ar"
++ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6319,6 +6577,10 @@
+ $as_echo "no" >&6; }
+ fi
+
++
++ test -n "$ac_ct_AR" && break
++done
++
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+@@ -6330,12 +6592,11 @@
+ esac
+ AR=$ac_ct_AR
+ fi
+-else
+- AR="$ac_cv_prog_AR"
+ fi
+
+-test -z "$AR" && AR=ar
+-test -z "$AR_FLAGS" && AR_FLAGS=cru
++: ${AR=ar}
++: ${AR_FLAGS=cru}
++
+
+
+
+@@ -6346,6 +6607,63 @@
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
++$as_echo_n "checking for archiver @FILE support... " >&6; }
++if test "${lt_cv_ar_at_file+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_ar_at_file=no
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ echo conftest.$ac_objext > conftest.lst
++ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -eq 0; then
++ # Ensure the archiver fails upon bogus file names.
++ rm -f conftest.$ac_objext libconftest.a
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -ne 0; then
++ lt_cv_ar_at_file=@
++ fi
++ fi
++ rm -f conftest.* libconftest.a
++
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
++$as_echo "$lt_cv_ar_at_file" >&6; }
++
++if test "x$lt_cv_ar_at_file" = xno; then
++ archiver_list_spec=
++else
++ archiver_list_spec=$lt_cv_ar_at_file
++fi
++
++
++
++
++
++
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+@@ -6681,8 +6999,8 @@
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+ # Transform an extracted symbol line into symbol name and symbol address
+-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+ # Handle CRLF in mingw tool chain
+ opt_cr=
+@@ -6718,6 +7036,7 @@
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
++ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -6759,6 +7078,18 @@
+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<_LT_EOF > conftest.$ac_ext
++/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
++#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
++/* DATA imports from DLLs on WIN32 con't be const, because runtime
++ relocations are performed -- see ld's documentation on pseudo-relocs. */
++# define LT_DLSYM_CONST
++#elif defined(__osf__)
++/* This system does not cope well with relocations in const data. */
++# define LT_DLSYM_CONST
++#else
++# define LT_DLSYM_CONST const
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -6770,7 +7101,7 @@
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+ /* The mapping between symbol names and symbols. */
+-const struct {
++LT_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+ }
+@@ -6796,8 +7127,8 @@
+ _LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+- lt_save_LIBS="$LIBS"
+- lt_save_CFLAGS="$CFLAGS"
++ lt_globsym_save_LIBS=$LIBS
++ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+@@ -6807,8 +7138,8 @@
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+- LIBS="$lt_save_LIBS"
+- CFLAGS="$lt_save_CFLAGS"
++ LIBS=$lt_globsym_save_LIBS
++ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+@@ -6845,6 +7176,14 @@
+ $as_echo "ok" >&6; }
+ fi
+
++# Response file support.
++if test "$lt_cv_nm_interface" = "MS dumpbin"; then
++ nm_file_list_spec='@'
++elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
++ nm_file_list_spec='@'
++fi
++
++
+
+
+
+@@ -6866,6 +7205,47 @@
+
+
+
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
++$as_echo_n "checking for sysroot... " >&6; }
++
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
++else
++ with_libtool_sysroot=no
++fi
++
++
++lt_sysroot=
++case ${with_libtool_sysroot} in #(
++ yes)
++ if test "$GCC" = yes; then
++ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
++ fi
++ ;; #(
++ /*)
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
++ ;; #(
++ no|'')
++ ;; #(
++ *)
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
++ as_fn_error "The sysroot must be an absolute path." "$LINENO" 5
++ ;;
++esac
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
++$as_echo "${lt_sysroot:-no}" >&6; }
++
++
++
++
++
+ # Check whether --enable-libtool-lock was given.
+ if test "${enable_libtool_lock+set}" = set; then :
+ enableval=$enable_libtool_lock;
+@@ -7059,6 +7439,123 @@
+
+ need_locks="$enable_libtool_lock"
+
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
++set dummy ${ac_tool_prefix}mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_MANIFEST_TOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$MANIFEST_TOOL"; then
++ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
++if test -n "$MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
++$as_echo "$MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
++ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
++ # Extract the first word of "mt", so it can be a program name with args.
++set dummy mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_ac_ct_MANIFEST_TOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_MANIFEST_TOOL"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
++if test -n "$ac_ct_MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
++$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_MANIFEST_TOOL" = x; then
++ MANIFEST_TOOL=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
++ fi
++else
++ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
++fi
++
++test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
++$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
++if test "${lt_cv_path_mainfest_tool+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_path_mainfest_tool=no
++ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
++ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
++ cat conftest.err >&5
++ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
++ lt_cv_path_mainfest_tool=yes
++ fi
++ rm -f conftest*
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
++$as_echo "$lt_cv_path_mainfest_tool" >&6; }
++if test "x$lt_cv_path_mainfest_tool" != xyes; then
++ MANIFEST_TOOL=:
++fi
++
++
++
++
++
+
+ case $host_os in
+ rhapsody* | darwin*)
+@@ -7622,6 +8119,8 @@
+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+ echo "$AR cru libconftest.a conftest.o" >&5
+ $AR cru libconftest.a conftest.o 2>&5
++ echo "$RANLIB libconftest.a" >&5
++ $RANLIB libconftest.a 2>&5
+ cat > conftest.c << _LT_EOF
+ int main() { return 0;}
+ _LT_EOF
+@@ -7787,7 +8286,8 @@
+ LIBTOOL_DEPS="$ltmain"
+
+ # Always use our own libtool.
+-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
++LIBTOOL='$(SHELL) $(top_builddir)'
++LIBTOOL="$LIBTOOL/${host_alias}-libtool"
+
+
+
+@@ -7876,7 +8376,7 @@
+ esac
+
+ # Global variables:
+-ofile=libtool
++ofile=${host_alias}-libtool
+ can_build_shared=yes
+
+ # All known linkers require a `.a' archive for static linking (except MSVC,
+@@ -8174,8 +8674,6 @@
+ lt_prog_compiler_pic=
+ lt_prog_compiler_static=
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+@@ -8340,6 +8838,12 @@
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
++ nagfor*)
++ # NAG Fortran compiler
++ lt_prog_compiler_wl='-Wl,-Wl,,'
++ lt_prog_compiler_pic='-PIC'
++ lt_prog_compiler_static='-Bstatic'
++ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+@@ -8402,7 +8906,7 @@
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ case $cc_basename in
+- f77* | f90* | f95*)
++ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+@@ -8459,13 +8963,17 @@
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+ esac
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+-$as_echo "$lt_prog_compiler_pic" >&6; }
+-
+-
+-
+-
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
++$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
++if test "${lt_cv_prog_compiler_pic+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
++$as_echo "$lt_cv_prog_compiler_pic" >&6; }
++lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+ #
+ # Check to make sure the PIC flag actually works.
+@@ -8526,6 +9034,11 @@
+
+
+
++
++
++
++
++
+ #
+ # Check to make sure the static flag actually works.
+ #
+@@ -8876,7 +9389,8 @@
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
++ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+@@ -8924,7 +9438,7 @@
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+- tmp_addflag=
++ tmp_addflag=' $pic_flag'
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+@@ -8975,12 +9489,12 @@
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
++ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
++ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+@@ -8994,8 +9508,8 @@
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+@@ -9013,8 +9527,8 @@
+
+ _LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9060,8 +9574,8 @@
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9191,7 +9705,13 @@
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if test "${lt_cv_aix_libpath_+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9204,22 +9724,29 @@
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+@@ -9231,7 +9758,13 @@
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if test "${lt_cv_aix_libpath_+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9244,22 +9777,29 @@
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+@@ -9304,20 +9844,63 @@
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+- hardcode_libdir_flag_spec=' '
+- allow_undefined_flag=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- old_archive_from_new_cmds='true'
+- # FIXME: Should let the user specify the lib program.
+- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+- fix_srcfile_path='`cygpath -w "$srcfile"`'
+- enable_shared_with_static_runtimes=yes
++ case $cc_basename in
++ cl*)
++ # Native MSVC
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ always_export_symbols=yes
++ file_list_spec='@'
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
++ else
++ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
++ fi~
++ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++ linknames='
++ # The linker will not automatically build a static lib if we build a DLL.
++ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
++ enable_shared_with_static_runtimes=yes
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ # Don't use ranlib
++ old_postinstall_cmds='chmod 644 $oldlib'
++ postlink_cmds='lt_outputfile="@OUTPUT@"~
++ lt_tool_outputfile="@TOOL_OUTPUT@"~
++ case $lt_outputfile in
++ *.exe|*.EXE) ;;
++ *)
++ lt_outputfile="$lt_outputfile.exe"
++ lt_tool_outputfile="$lt_tool_outputfile.exe"
++ ;;
++ esac~
++ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
++ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
++ $RM "$lt_outputfile.manifest";
++ fi'
++ ;;
++ *)
++ # Assume MSVC wrapper
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ old_archive_from_new_cmds='true'
++ # FIXME: Should let the user specify the lib program.
++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
++ enable_shared_with_static_runtimes=yes
++ ;;
++ esac
+ ;;
+
+ darwin* | rhapsody*)
+@@ -9382,7 +9965,7 @@
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+@@ -9390,7 +9973,7 @@
+
+ hpux9*)
+ if test "$GCC" = yes; then
+- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+@@ -9406,7 +9989,7 @@
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+@@ -9430,10 +10013,10 @@
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+@@ -9512,23 +10095,36 @@
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ # This should be the same for all languages, so no per-tag cache variable.
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
++$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
++if test "${lt_cv_irix_exported_symbol+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-int foo(void) {}
++int foo (void) { return 0; }
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+-
++ lt_cv_irix_exported_symbol=yes
++else
++ lt_cv_irix_exported_symbol=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+- LDFLAGS="$save_LDFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
++$as_echo "$lt_cv_irix_exported_symbol" >&6; }
++ if test "$lt_cv_irix_exported_symbol" = yes; then
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
++ fi
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+@@ -9613,7 +10209,7 @@
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+@@ -9632,9 +10228,9 @@
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
++ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+@@ -10210,8 +10806,9 @@
+ need_version=no
+ need_lib_prefix=no
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
++ case $GCC,$cc_basename in
++ yes,*)
++ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+@@ -10244,13 +10841,71 @@
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
++ dynamic_linker='Win32 ld.exe'
++ ;;
++
++ *,cl*)
++ # Native MSVC
++ libname_spec='$name'
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='${libname}.dll.lib'
++
++ case $build_os in
++ mingw*)
++ sys_lib_search_path_spec=
++ lt_save_ifs=$IFS
++ IFS=';'
++ for lt_path in $LIB
++ do
++ IFS=$lt_save_ifs
++ # Let DOS variable expansion print the short 8.3 style file name.
++ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
++ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
++ done
++ IFS=$lt_save_ifs
++ # Convert to MSYS style.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
++ ;;
++ cygwin*)
++ # Convert to unix form, then to dos form, then back to unix form
++ # but this time dos style (no spaces!) so that the unix form looks
++ # like /cygdrive/c/PROGRA~1:/cygdr...
++ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
++ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
++ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ ;;
++ *)
++ sys_lib_search_path_spec="$LIB"
++ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
++ # It is most probably a Windows format PATH.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ # FIXME: find the short name or the path components, as spaces are
++ # common. (e.g. "Program Files" -> "PROGRA~1")
++ ;;
++ esac
++
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $RM \$dlpath'
++ shlibpath_overrides_runpath=yes
++ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
++ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+- dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+@@ -10346,7 +11001,7 @@
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
++ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+ hardcode_into_libs=yes
+ ;;
+
+@@ -11142,7 +11797,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11145 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11186,10 +11841,10 @@
+ /* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -11248,7 +11903,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11251 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11292,10 +11947,10 @@
+ /* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -12328,7 +12983,7 @@
+ # since libbfd may not pull in the entirety of libiberty.
+ x=`sed -n -e 's/^[ ]*PICFLAG[ ]*=[ ]*//p' < ../libiberty/Makefile | sed -n '$p'`
+ if test -n "$x"; then
+- SHARED_LIBADD="-L`pwd`/../libiberty/pic -liberty"
++ SHARED_LIBADD="`pwd`/../libiberty/pic/libiberty.a"
+ fi
+
+ case "${host}" in
+@@ -13289,13 +13944,20 @@
+ lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+ lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+ lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
++lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
++lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+ reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+ reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+ OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+ deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+ file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
++file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
++want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
++DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
++sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+ AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+ AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
++archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+ STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+ RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+ old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+@@ -13310,14 +13972,17 @@
+ lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+ lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
++nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
++lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+ objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+ MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
++lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+ lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+ need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
++MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+ DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+ NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+ LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+@@ -13350,12 +14015,12 @@
+ hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+ inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+ link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+-fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
+ always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+ export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+ exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+ include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+ prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
++postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+ file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+ variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+ need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+@@ -13410,8 +14075,13 @@
+ OBJDUMP \
+ deplibs_check_method \
+ file_magic_cmd \
++file_magic_glob \
++want_nocaseglob \
++DLLTOOL \
++sharedlib_from_linklib_cmd \
+ AR \
+ AR_FLAGS \
++archiver_list_spec \
+ STRIP \
+ RANLIB \
+ CC \
+@@ -13421,12 +14091,14 @@
+ lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
++nm_file_list_spec \
+ lt_prog_compiler_no_builtin_flag \
+-lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
++lt_prog_compiler_wl \
+ lt_prog_compiler_static \
+ lt_cv_prog_compiler_c_o \
+ need_locks \
++MANIFEST_TOOL \
+ DSYMUTIL \
+ NMEDIT \
+ LIPO \
+@@ -13442,7 +14114,6 @@
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+-fix_srcfile_path \
+ exclude_expsyms \
+ include_expsyms \
+ file_list_spec \
+@@ -13478,6 +14149,7 @@
+ module_expsym_cmds \
+ export_symbols_cmds \
+ prelink_cmds \
++postlink_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ finish_cmds \
+@@ -14234,7 +14906,8 @@
+ # NOTE: Changes made to this file will be lost: look at ltmain.sh.
+ #
+ # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+-# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
++# Inc.
+ # Written by Gordon Matzigkeit, 1996
+ #
+ # This file is part of GNU Libtool.
+@@ -14337,19 +15010,42 @@
+ # turn newlines into spaces.
+ NL2SP=$lt_lt_NL2SP
+
++# convert \$build file names to \$host format.
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++
++# convert \$build files to toolchain format.
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++
+ # An object symbol dumper.
+ OBJDUMP=$lt_OBJDUMP
+
+ # Method to check whether dependent libraries are shared objects.
+ deplibs_check_method=$lt_deplibs_check_method
+
+-# Command to use when deplibs_check_method == "file_magic".
++# Command to use when deplibs_check_method = "file_magic".
+ file_magic_cmd=$lt_file_magic_cmd
+
++# How to find potential files when deplibs_check_method = "file_magic".
++file_magic_glob=$lt_file_magic_glob
++
++# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
++want_nocaseglob=$lt_want_nocaseglob
++
++# DLL creation program.
++DLLTOOL=$lt_DLLTOOL
++
++# Command to associate shared and link libraries.
++sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
++
+ # The archiver.
+ AR=$lt_AR
++
++# Flags to create an archive.
+ AR_FLAGS=$lt_AR_FLAGS
+
++# How to feed a file listing to the archiver.
++archiver_list_spec=$lt_archiver_list_spec
++
+ # A symbol stripping program.
+ STRIP=$lt_STRIP
+
+@@ -14379,6 +15075,12 @@
+ # Transform the output of nm in a C name address pair when lib prefix is needed.
+ global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
++# Specify filename containing input files for \$NM.
++nm_file_list_spec=$lt_nm_file_list_spec
++
++# The root where to search for dependent libraries,and in which our libraries should be installed.
++lt_sysroot=$lt_sysroot
++
+ # The name of the directory that contains temporary libtool files.
+ objdir=$objdir
+
+@@ -14388,6 +15090,9 @@
+ # Must we lock files when doing compilation?
+ need_locks=$lt_need_locks
+
++# Manifest tool.
++MANIFEST_TOOL=$lt_MANIFEST_TOOL
++
+ # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+ DSYMUTIL=$lt_DSYMUTIL
+
+@@ -14502,12 +15207,12 @@
+ # Compiler flag to turn off builtin functions.
+ no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl
+-
+ # Additional compiler flags for building library objects.
+ pic_flag=$lt_lt_prog_compiler_pic
+
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl
++
+ # Compiler flag to prevent dynamic linking.
+ link_static_flag=$lt_lt_prog_compiler_static
+
+@@ -14594,9 +15299,6 @@
+ # Whether libtool must link a program against all its dependency libraries.
+ link_all_deplibs=$link_all_deplibs
+
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path=$lt_fix_srcfile_path
+-
+ # Set to "yes" if exported symbols are required.
+ always_export_symbols=$always_export_symbols
+
+@@ -14612,6 +15314,9 @@
+ # Commands necessary for linking programs (against libraries) with templates.
+ prelink_cmds=$lt_prelink_cmds
+
++# Commands necessary for finishing linking programs.
++postlink_cmds=$lt_postlink_cmds
++
+ # Specify filename containing input files.
+ file_list_spec=$lt_file_list_spec
+
+@@ -14644,210 +15349,169 @@
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- case $xsi_shell in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_dirname_and_basename file append nondir_replacement
+-# perform func_basename and func_dirname in a single function
+-# call:
+-# dirname: Compute the dirname of FILE. If nonempty,
+-# add APPEND to the result, otherwise set result
+-# to NONDIR_REPLACEMENT.
+-# value returned in "$func_dirname_result"
+-# basename: Compute filename of FILE.
+-# value retuned in "$func_basename_result"
+-# Implementation must be kept synchronized with func_dirname
+-# and func_basename. For efficiency, we do not delegate to
+-# those functions but instead duplicate the functionality here.
+-func_dirname_and_basename ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-func_stripname ()
+-{
+- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+- # positional parameters, so assign one to ordinary parameter first.
+- func_stripname_result=${3}
+- func_stripname_result=${func_stripname_result#"${1}"}
+- func_stripname_result=${func_stripname_result%"${2}"}
+-}
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=${1%%=*}
+- func_opt_split_arg=${1#*=}
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- case ${1} in
+- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+- *) func_lo2o_result=${1} ;;
+- esac
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=${1%.*}.lo
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=$(( $* ))
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=${#1}
+-}
+-
+-_LT_EOF
+- ;;
+- *) # Bourne compatible functions.
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- # Extract subdirectory from the argument.
+- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+- if test "X$func_dirname_result" = "X${1}"; then
+- func_dirname_result="${3}"
+- else
+- func_dirname_result="$func_dirname_result${2}"
+- fi
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+-}
+-
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-# func_strip_suffix prefix name
+-func_stripname ()
+-{
+- case ${2} in
+- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+- esac
+-}
+-
+-# sed scripts:
+-my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+-my_sed_long_arg='1s/^-[^=]*=//'
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=`expr "$@"`
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+-}
+-
+-_LT_EOF
+-esac
+-
+-case $lt_shell_append in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1+=\$2"
+-}
+-_LT_EOF
+- ;;
+- *)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1=\$$1\$2"
+-}
+-
+-_LT_EOF
+- ;;
+- esac
++ sed '$q' "$ltmain" >> "$cfgfile" \
++ || (rm -f "$cfgfile"; exit 1)
+
++ if test x"$xsi_shell" = xyes; then
++ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
++func_dirname ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_basename ()$/,/^} # func_basename /c\
++func_basename ()\
++{\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
++func_dirname_and_basename ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
++func_stripname ()\
++{\
++\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
++\ # positional parameters, so assign one to ordinary parameter first.\
++\ func_stripname_result=${3}\
++\ func_stripname_result=${func_stripname_result#"${1}"}\
++\ func_stripname_result=${func_stripname_result%"${2}"}\
++} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
++func_split_long_opt ()\
++{\
++\ func_split_long_opt_name=${1%%=*}\
++\ func_split_long_opt_arg=${1#*=}\
++} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
++func_split_short_opt ()\
++{\
++\ func_split_short_opt_arg=${1#??}\
++\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
++} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
++func_lo2o ()\
++{\
++\ case ${1} in\
++\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
++\ *) func_lo2o_result=${1} ;;\
++\ esac\
++} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_xform ()$/,/^} # func_xform /c\
++func_xform ()\
++{\
++ func_xform_result=${1%.*}.lo\
++} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_arith ()$/,/^} # func_arith /c\
++func_arith ()\
++{\
++ func_arith_result=$(( $* ))\
++} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_len ()$/,/^} # func_len /c\
++func_len ()\
++{\
++ func_len_result=${#1}\
++} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++fi
++
++if test x"$lt_shell_append" = xyes; then
++ sed -e '/^func_append ()$/,/^} # func_append /c\
++func_append ()\
++{\
++ eval "${1}+=\\${2}"\
++} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
++func_append_quoted ()\
++{\
++\ func_quote_for_eval "${2}"\
++\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
++} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ # Save a `func_append' function call where possible by direct use of '+='
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++else
++ # Save a `func_append' function call even when '+=' is not available
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++fi
++
++if test x"$_lt_function_replace_fail" = x":"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
++$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
++fi
+
+- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+
+- mv -f "$cfgfile" "$ofile" ||
++ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+Index: binutils-2.21/binutils/configure
+===================================================================
+--- binutils-2.21.orig/binutils/configure 2010-11-05 03:32:55.000000000 -0700
++++ binutils-2.21/binutils/configure 2011-01-07 10:49:16.426101000 -0800
+@@ -654,8 +654,11 @@
+ LIPO
+ NMEDIT
+ DSYMUTIL
++MANIFEST_TOOL
+ RANLIB
++ac_ct_AR
+ AR
++DLLTOOL
+ OBJDUMP
+ LN_S
+ NM
+@@ -768,6 +771,7 @@
+ with_pic
+ enable_fast_install
+ with_gnu_ld
++with_libtool_sysroot
+ enable_libtool_lock
+ enable_targets
+ enable_werror
+@@ -1429,6 +1433,8 @@
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
++ (or the compiler's sysroot if not specified).
+ --with-gnu-ld assume the C compiler uses GNU ld default=no
+ --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
+ --without-libiconv-prefix don't search for libiconv in includedir and libdir
+@@ -5146,8 +5152,8 @@
+
+
+
+-macro_version='2.2.7a'
+-macro_revision='1.3134'
++macro_version='2.4'
++macro_revision='1.3293'
+
+
+
+@@ -5187,7 +5193,7 @@
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+ $as_echo_n "checking how to print strings... " >&6; }
+ # Test print first, because it will be a builtin if present.
+-if test "X`print -r -- -n 2>/dev/null`" = X-n && \
++if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='print -r --'
+ elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+@@ -5873,8 +5879,8 @@
+ # Try some XSI features
+ xsi_shell=no
+ ( _lt_dummy="a/b/c"
+- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+- = c,a/b,, \
++ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
++ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+@@ -5923,6 +5929,80 @@
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
++$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
++if test "${lt_cv_to_host_file_cmd+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
++ ;;
++ esac
++ ;;
++ *-*-cygwin* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
++ ;;
++ esac
++ ;;
++ * ) # unhandled hosts (and "normal" native builds)
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++esac
++
++fi
++
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
++$as_echo "$lt_cv_to_host_file_cmd" >&6; }
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
++$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
++if test "${lt_cv_to_tool_file_cmd+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ #assume ordinary cross tools, or native build.
++lt_cv_to_tool_file_cmd=func_convert_file_noop
++case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ esac
++ ;;
++esac
++
++fi
++
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
++$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
++
++
++
++
++
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+ $as_echo_n "checking for $LD option to reload object files... " >&6; }
+ if test "${lt_cv_ld_reload_flag+set}" = set; then :
+@@ -5939,6 +6019,11 @@
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ case $host_os in
++ cygwin* | mingw* | pw32* | cegcc*)
++ if test "$GCC" != yes; then
++ reload_cmds=false
++ fi
++ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+@@ -6107,7 +6192,8 @@
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
++ # Keep this pattern in sync with the one in func_win32_libid.
++ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+@@ -6261,6 +6347,21 @@
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+ $as_echo "$lt_cv_deplibs_check_method" >&6; }
++
++file_magic_glob=
++want_nocaseglob=no
++if test "$build" = "$host"; then
++ case $host_os in
++ mingw* | pw32*)
++ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
++ want_nocaseglob=yes
++ else
++ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
++ fi
++ ;;
++ esac
++fi
++
+ file_magic_cmd=$lt_cv_file_magic_cmd
+ deplibs_check_method=$lt_cv_deplibs_check_method
+ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -6276,9 +6377,162 @@
+
+
+
++
++
++
++
++
++
++
++
++
++
+ if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}ar; ac_word=$2
++ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
++set dummy ${ac_tool_prefix}dlltool; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_DLLTOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$DLLTOOL"; then
++ ac_cv_prog_DLLTOOL="$DLLTOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++DLLTOOL=$ac_cv_prog_DLLTOOL
++if test -n "$DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
++$as_echo "$DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_DLLTOOL"; then
++ ac_ct_DLLTOOL=$DLLTOOL
++ # Extract the first word of "dlltool", so it can be a program name with args.
++set dummy dlltool; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_DLLTOOL"; then
++ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
++if test -n "$ac_ct_DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
++$as_echo "$ac_ct_DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_DLLTOOL" = x; then
++ DLLTOOL="false"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ DLLTOOL=$ac_ct_DLLTOOL
++ fi
++else
++ DLLTOOL="$ac_cv_prog_DLLTOOL"
++fi
++
++test -z "$DLLTOOL" && DLLTOOL=dlltool
++
++
++
++
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
++$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
++if test "${lt_cv_sharedlib_from_linklib_cmd+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_sharedlib_from_linklib_cmd='unknown'
++
++case $host_os in
++cygwin* | mingw* | pw32* | cegcc*)
++ # two different shell functions defined in ltmain.sh
++ # decide which to use based on capabilities of $DLLTOOL
++ case `$DLLTOOL --help 2>&1` in
++ *--identify-strict*)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
++ ;;
++ *)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
++ ;;
++ esac
++ ;;
++*)
++ # fallback: assume linklib IS sharedlib
++ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
++ ;;
++esac
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
++$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
++sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
++test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
++
++
++
++
++
++
++
++if test -n "$ac_tool_prefix"; then
++ for ac_prog in ar
++ do
++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
++set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_prog_AR+set}" = set; then :
+@@ -6294,7 +6548,7 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_prog_AR="${ac_tool_prefix}ar"
++ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6314,11 +6568,15 @@
+ fi
+
+
++ test -n "$AR" && break
++ done
+ fi
+-if test -z "$ac_cv_prog_AR"; then
++if test -z "$AR"; then
+ ac_ct_AR=$AR
+- # Extract the first word of "ar", so it can be a program name with args.
+-set dummy ar; ac_word=$2
++ for ac_prog in ar
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
+@@ -6334,7 +6592,7 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_prog_ac_ct_AR="ar"
++ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6353,6 +6611,10 @@
+ $as_echo "no" >&6; }
+ fi
+
++
++ test -n "$ac_ct_AR" && break
++done
++
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+@@ -6364,12 +6626,10 @@
+ esac
+ AR=$ac_ct_AR
+ fi
+-else
+- AR="$ac_cv_prog_AR"
+ fi
+
+-test -z "$AR" && AR=ar
+-test -z "$AR_FLAGS" && AR_FLAGS=cru
++: ${AR=ar}
++: ${AR_FLAGS=cru}
+
+
+
+@@ -6381,6 +6641,64 @@
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
++$as_echo_n "checking for archiver @FILE support... " >&6; }
++if test "${lt_cv_ar_at_file+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_ar_at_file=no
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ echo conftest.$ac_objext > conftest.lst
++ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -eq 0; then
++ # Ensure the archiver fails upon bogus file names.
++ rm -f conftest.$ac_objext libconftest.a
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -ne 0; then
++ lt_cv_ar_at_file=@
++ fi
++ fi
++ rm -f conftest.* libconftest.a
++
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
++$as_echo "$lt_cv_ar_at_file" >&6; }
++
++if test "x$lt_cv_ar_at_file" = xno; then
++ archiver_list_spec=
++else
++ archiver_list_spec=$lt_cv_ar_at_file
++fi
++
++
++
++
++
++
++
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}strip; ac_word=$2
+@@ -6715,8 +7033,8 @@
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+ # Transform an extracted symbol line into symbol name and symbol address
+-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+ # Handle CRLF in mingw tool chain
+ opt_cr=
+@@ -6752,6 +7070,7 @@
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
++ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -6793,6 +7112,18 @@
+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<_LT_EOF > conftest.$ac_ext
++/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
++#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
++/* DATA imports from DLLs on WIN32 con't be const, because runtime
++ relocations are performed -- see ld's documentation on pseudo-relocs. */
++# define LT_DLSYM_CONST
++#elif defined(__osf__)
++/* This system does not cope well with relocations in const data. */
++# define LT_DLSYM_CONST
++#else
++# define LT_DLSYM_CONST const
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -6804,7 +7135,7 @@
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+ /* The mapping between symbol names and symbols. */
+-const struct {
++LT_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+ }
+@@ -6830,8 +7161,8 @@
+ _LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+- lt_save_LIBS="$LIBS"
+- lt_save_CFLAGS="$CFLAGS"
++ lt_globsym_save_LIBS=$LIBS
++ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+@@ -6841,8 +7172,8 @@
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+- LIBS="$lt_save_LIBS"
+- CFLAGS="$lt_save_CFLAGS"
++ LIBS=$lt_globsym_save_LIBS
++ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+@@ -6879,6 +7210,19 @@
+ $as_echo "ok" >&6; }
+ fi
+
++# Response file support.
++if test "$lt_cv_nm_interface" = "MS dumpbin"; then
++ nm_file_list_spec='@'
++elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
++ nm_file_list_spec='@'
++fi
++
++
++
++
++
++
++
+
+
+
+@@ -6899,6 +7243,42 @@
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
++$as_echo_n "checking for sysroot... " >&6; }
++
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
++else
++ with_libtool_sysroot=no
++fi
++
++
++lt_sysroot=
++case ${with_libtool_sysroot} in #(
++ yes)
++ if test "$GCC" = yes; then
++ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
++ fi
++ ;; #(
++ /*)
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
++ ;; #(
++ no|'')
++ ;; #(
++ *)
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
++ as_fn_error "The sysroot must be an absolute path." "$LINENO" 5
++ ;;
++esac
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
++$as_echo "${lt_sysroot:-no}" >&6; }
++
++
++
++
+
+ # Check whether --enable-libtool-lock was given.
+ if test "${enable_libtool_lock+set}" = set; then :
+@@ -7093,6 +7473,123 @@
+
+ need_locks="$enable_libtool_lock"
+
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
++set dummy ${ac_tool_prefix}mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_MANIFEST_TOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$MANIFEST_TOOL"; then
++ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
++if test -n "$MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
++$as_echo "$MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
++ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
++ # Extract the first word of "mt", so it can be a program name with args.
++set dummy mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_ac_ct_MANIFEST_TOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_MANIFEST_TOOL"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
++if test -n "$ac_ct_MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
++$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_MANIFEST_TOOL" = x; then
++ MANIFEST_TOOL=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
++ fi
++else
++ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
++fi
++
++test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
++$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
++if test "${lt_cv_path_mainfest_tool+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_path_mainfest_tool=no
++ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
++ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
++ cat conftest.err >&5
++ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
++ lt_cv_path_mainfest_tool=yes
++ fi
++ rm -f conftest*
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
++$as_echo "$lt_cv_path_mainfest_tool" >&6; }
++if test "x$lt_cv_path_mainfest_tool" != xyes; then
++ MANIFEST_TOOL=:
++fi
++
++
++
++
++
+
+ case $host_os in
+ rhapsody* | darwin*)
+@@ -7656,6 +8153,8 @@
+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+ echo "$AR cru libconftest.a conftest.o" >&5
+ $AR cru libconftest.a conftest.o 2>&5
++ echo "$RANLIB libconftest.a" >&5
++ $RANLIB libconftest.a 2>&5
+ cat > conftest.c << _LT_EOF
+ int main() { return 0;}
+ _LT_EOF
+@@ -7851,7 +8350,8 @@
+ LIBTOOL_DEPS="$ltmain"
+
+ # Always use our own libtool.
+-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
++LIBTOOL='$(SHELL) $(top_builddir)'
++LIBTOOL="$LIBTOOL/${host_alias}-libtool"
+
+
+
+@@ -7940,7 +8440,7 @@
+ esac
+
+ # Global variables:
+-ofile=libtool
++ofile=${host_alias}-libtool
+ can_build_shared=yes
+
+ # All known linkers require a `.a' archive for static linking (except MSVC,
+@@ -8238,8 +8738,6 @@
+ lt_prog_compiler_pic=
+ lt_prog_compiler_static=
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+@@ -8404,6 +8902,12 @@
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
++ nagfor*)
++ # NAG Fortran compiler
++ lt_prog_compiler_wl='-Wl,-Wl,,'
++ lt_prog_compiler_pic='-PIC'
++ lt_prog_compiler_static='-Bstatic'
++ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+@@ -8466,7 +8970,7 @@
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ case $cc_basename in
+- f77* | f90* | f95*)
++ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+@@ -8523,13 +9027,17 @@
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+ esac
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+-$as_echo "$lt_prog_compiler_pic" >&6; }
+-
+-
+-
+-
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
++$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
++if test "${lt_cv_prog_compiler_pic+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
++$as_echo "$lt_cv_prog_compiler_pic" >&6; }
++lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+ #
+ # Check to make sure the PIC flag actually works.
+@@ -8590,6 +9098,11 @@
+
+
+
++
++
++
++
++
+ #
+ # Check to make sure the static flag actually works.
+ #
+@@ -8940,7 +9453,8 @@
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
++ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+@@ -8988,7 +9502,7 @@
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+- tmp_addflag=
++ tmp_addflag=' $pic_flag'
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+@@ -9039,12 +9553,12 @@
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
++ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
++ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+@@ -9058,8 +9572,8 @@
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+@@ -9077,8 +9591,8 @@
+
+ _LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9124,8 +9638,8 @@
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9255,7 +9769,13 @@
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if test "${lt_cv_aix_libpath_+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9268,22 +9788,29 @@
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+@@ -9295,7 +9822,13 @@
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if test "${lt_cv_aix_libpath_+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9308,22 +9841,29 @@
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+@@ -9368,20 +9908,63 @@
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+- hardcode_libdir_flag_spec=' '
+- allow_undefined_flag=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- old_archive_from_new_cmds='true'
+- # FIXME: Should let the user specify the lib program.
+- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+- fix_srcfile_path='`cygpath -w "$srcfile"`'
+- enable_shared_with_static_runtimes=yes
++ case $cc_basename in
++ cl*)
++ # Native MSVC
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ always_export_symbols=yes
++ file_list_spec='@'
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
++ else
++ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
++ fi~
++ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++ linknames='
++ # The linker will not automatically build a static lib if we build a DLL.
++ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
++ enable_shared_with_static_runtimes=yes
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ # Don't use ranlib
++ old_postinstall_cmds='chmod 644 $oldlib'
++ postlink_cmds='lt_outputfile="@OUTPUT@"~
++ lt_tool_outputfile="@TOOL_OUTPUT@"~
++ case $lt_outputfile in
++ *.exe|*.EXE) ;;
++ *)
++ lt_outputfile="$lt_outputfile.exe"
++ lt_tool_outputfile="$lt_tool_outputfile.exe"
++ ;;
++ esac~
++ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
++ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
++ $RM "$lt_outputfile.manifest";
++ fi'
++ ;;
++ *)
++ # Assume MSVC wrapper
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ old_archive_from_new_cmds='true'
++ # FIXME: Should let the user specify the lib program.
++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
++ enable_shared_with_static_runtimes=yes
++ ;;
++ esac
+ ;;
+
+ darwin* | rhapsody*)
+@@ -9446,7 +10029,7 @@
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+@@ -9454,7 +10037,7 @@
+
+ hpux9*)
+ if test "$GCC" = yes; then
+- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+@@ -9470,7 +10053,7 @@
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+@@ -9494,10 +10077,10 @@
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+@@ -9576,23 +10159,36 @@
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ # This should be the same for all languages, so no per-tag cache variable.
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
++$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
++if test "${lt_cv_irix_exported_symbol+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-int foo(void) {}
++int foo (void) { return 0; }
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+-
++ lt_cv_irix_exported_symbol=yes
++else
++ lt_cv_irix_exported_symbol=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+- LDFLAGS="$save_LDFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
++$as_echo "$lt_cv_irix_exported_symbol" >&6; }
++ if test "$lt_cv_irix_exported_symbol" = yes; then
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
++ fi
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+@@ -9677,7 +10273,7 @@
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+@@ -9696,9 +10292,9 @@
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
++ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+@@ -10274,8 +10870,9 @@
+ need_version=no
+ need_lib_prefix=no
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
++ case $GCC,$cc_basename in
++ yes,*)
++ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+@@ -10308,13 +10905,71 @@
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
++ dynamic_linker='Win32 ld.exe'
++ ;;
++
++ *,cl*)
++ # Native MSVC
++ libname_spec='$name'
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='${libname}.dll.lib'
++
++ case $build_os in
++ mingw*)
++ sys_lib_search_path_spec=
++ lt_save_ifs=$IFS
++ IFS=';'
++ for lt_path in $LIB
++ do
++ IFS=$lt_save_ifs
++ # Let DOS variable expansion print the short 8.3 style file name.
++ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
++ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
++ done
++ IFS=$lt_save_ifs
++ # Convert to MSYS style.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
++ ;;
++ cygwin*)
++ # Convert to unix form, then to dos form, then back to unix form
++ # but this time dos style (no spaces!) so that the unix form looks
++ # like /cygdrive/c/PROGRA~1:/cygdr...
++ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
++ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
++ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ ;;
++ *)
++ sys_lib_search_path_spec="$LIB"
++ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
++ # It is most probably a Windows format PATH.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ # FIXME: find the short name or the path components, as spaces are
++ # common. (e.g. "Program Files" -> "PROGRA~1")
++ ;;
++ esac
++
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $RM \$dlpath'
++ shlibpath_overrides_runpath=yes
++ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
++ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+- dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+@@ -10410,7 +11065,7 @@
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
++ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+ hardcode_into_libs=yes
+ ;;
+
+@@ -11206,7 +11861,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11209 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11250,10 +11905,10 @@
+ /* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -11312,7 +11967,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11315 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11356,10 +12011,10 @@
+ /* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -14751,13 +15406,20 @@
+ lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+ lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+ lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
++lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
++lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+ reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+ reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+ OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+ deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+ file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
++file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
++want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
++DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
++sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+ AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+ AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
++archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+ STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+ RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+ old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+@@ -14772,14 +15434,17 @@
+ lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+ lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
++nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
++lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+ objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+ MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
++lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+ lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+ need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
++MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+ DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+ NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+ LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+@@ -14812,12 +15477,12 @@
+ hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+ inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+ link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+-fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
+ always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+ export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+ exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+ include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+ prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
++postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+ file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+ variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+ need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+@@ -14872,8 +15537,13 @@
+ OBJDUMP \
+ deplibs_check_method \
+ file_magic_cmd \
++file_magic_glob \
++want_nocaseglob \
++DLLTOOL \
++sharedlib_from_linklib_cmd \
+ AR \
+ AR_FLAGS \
++archiver_list_spec \
+ STRIP \
+ RANLIB \
+ CC \
+@@ -14883,12 +15553,14 @@
+ lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
++nm_file_list_spec \
+ lt_prog_compiler_no_builtin_flag \
+-lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
++lt_prog_compiler_wl \
+ lt_prog_compiler_static \
+ lt_cv_prog_compiler_c_o \
+ need_locks \
++MANIFEST_TOOL \
+ DSYMUTIL \
+ NMEDIT \
+ LIPO \
+@@ -14904,7 +15576,6 @@
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+-fix_srcfile_path \
+ exclude_expsyms \
+ include_expsyms \
+ file_list_spec \
+@@ -14940,6 +15611,7 @@
+ module_expsym_cmds \
+ export_symbols_cmds \
+ prelink_cmds \
++postlink_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ finish_cmds \
+@@ -15697,7 +16369,8 @@
+ # NOTE: Changes made to this file will be lost: look at ltmain.sh.
+ #
+ # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+-# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
++# Inc.
+ # Written by Gordon Matzigkeit, 1996
+ #
+ # This file is part of GNU Libtool.
+@@ -15800,19 +16473,42 @@
+ # turn newlines into spaces.
+ NL2SP=$lt_lt_NL2SP
+
++# convert \$build file names to \$host format.
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++
++# convert \$build files to toolchain format.
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++
+ # An object symbol dumper.
+ OBJDUMP=$lt_OBJDUMP
+
+ # Method to check whether dependent libraries are shared objects.
+ deplibs_check_method=$lt_deplibs_check_method
+
+-# Command to use when deplibs_check_method == "file_magic".
++# Command to use when deplibs_check_method = "file_magic".
+ file_magic_cmd=$lt_file_magic_cmd
+
++# How to find potential files when deplibs_check_method = "file_magic".
++file_magic_glob=$lt_file_magic_glob
++
++# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
++want_nocaseglob=$lt_want_nocaseglob
++
++# DLL creation program.
++DLLTOOL=$lt_DLLTOOL
++
++# Command to associate shared and link libraries.
++sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
++
+ # The archiver.
+ AR=$lt_AR
++
++# Flags to create an archive.
+ AR_FLAGS=$lt_AR_FLAGS
+
++# How to feed a file listing to the archiver.
++archiver_list_spec=$lt_archiver_list_spec
++
+ # A symbol stripping program.
+ STRIP=$lt_STRIP
+
+@@ -15842,6 +16538,12 @@
+ # Transform the output of nm in a C name address pair when lib prefix is needed.
+ global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
++# Specify filename containing input files for \$NM.
++nm_file_list_spec=$lt_nm_file_list_spec
++
++# The root where to search for dependent libraries,and in which our libraries should be installed.
++lt_sysroot=$lt_sysroot
++
+ # The name of the directory that contains temporary libtool files.
+ objdir=$objdir
+
+@@ -15851,6 +16553,9 @@
+ # Must we lock files when doing compilation?
+ need_locks=$lt_need_locks
+
++# Manifest tool.
++MANIFEST_TOOL=$lt_MANIFEST_TOOL
++
+ # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+ DSYMUTIL=$lt_DSYMUTIL
+
+@@ -15965,12 +16670,12 @@
+ # Compiler flag to turn off builtin functions.
+ no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl
+-
+ # Additional compiler flags for building library objects.
+ pic_flag=$lt_lt_prog_compiler_pic
+
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl
++
+ # Compiler flag to prevent dynamic linking.
+ link_static_flag=$lt_lt_prog_compiler_static
+
+@@ -16057,9 +16762,6 @@
+ # Whether libtool must link a program against all its dependency libraries.
+ link_all_deplibs=$link_all_deplibs
+
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path=$lt_fix_srcfile_path
+-
+ # Set to "yes" if exported symbols are required.
+ always_export_symbols=$always_export_symbols
+
+@@ -16075,6 +16777,9 @@
+ # Commands necessary for linking programs (against libraries) with templates.
+ prelink_cmds=$lt_prelink_cmds
+
++# Commands necessary for finishing linking programs.
++postlink_cmds=$lt_postlink_cmds
++
+ # Specify filename containing input files.
+ file_list_spec=$lt_file_list_spec
+
+@@ -16107,210 +16812,169 @@
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- case $xsi_shell in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_dirname_and_basename file append nondir_replacement
+-# perform func_basename and func_dirname in a single function
+-# call:
+-# dirname: Compute the dirname of FILE. If nonempty,
+-# add APPEND to the result, otherwise set result
+-# to NONDIR_REPLACEMENT.
+-# value returned in "$func_dirname_result"
+-# basename: Compute filename of FILE.
+-# value retuned in "$func_basename_result"
+-# Implementation must be kept synchronized with func_dirname
+-# and func_basename. For efficiency, we do not delegate to
+-# those functions but instead duplicate the functionality here.
+-func_dirname_and_basename ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-func_stripname ()
+-{
+- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+- # positional parameters, so assign one to ordinary parameter first.
+- func_stripname_result=${3}
+- func_stripname_result=${func_stripname_result#"${1}"}
+- func_stripname_result=${func_stripname_result%"${2}"}
+-}
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=${1%%=*}
+- func_opt_split_arg=${1#*=}
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- case ${1} in
+- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+- *) func_lo2o_result=${1} ;;
+- esac
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=${1%.*}.lo
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=$(( $* ))
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=${#1}
+-}
+-
+-_LT_EOF
+- ;;
+- *) # Bourne compatible functions.
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- # Extract subdirectory from the argument.
+- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+- if test "X$func_dirname_result" = "X${1}"; then
+- func_dirname_result="${3}"
+- else
+- func_dirname_result="$func_dirname_result${2}"
+- fi
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+-}
+-
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-# func_strip_suffix prefix name
+-func_stripname ()
+-{
+- case ${2} in
+- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+- esac
+-}
+-
+-# sed scripts:
+-my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+-my_sed_long_arg='1s/^-[^=]*=//'
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=`expr "$@"`
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+-}
+-
+-_LT_EOF
+-esac
+-
+-case $lt_shell_append in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1+=\$2"
+-}
+-_LT_EOF
+- ;;
+- *)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1=\$$1\$2"
+-}
+-
+-_LT_EOF
+- ;;
+- esac
++ sed '$q' "$ltmain" >> "$cfgfile" \
++ || (rm -f "$cfgfile"; exit 1)
+
++ if test x"$xsi_shell" = xyes; then
++ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
++func_dirname ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_basename ()$/,/^} # func_basename /c\
++func_basename ()\
++{\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
++func_dirname_and_basename ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
++func_stripname ()\
++{\
++\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
++\ # positional parameters, so assign one to ordinary parameter first.\
++\ func_stripname_result=${3}\
++\ func_stripname_result=${func_stripname_result#"${1}"}\
++\ func_stripname_result=${func_stripname_result%"${2}"}\
++} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
++func_split_long_opt ()\
++{\
++\ func_split_long_opt_name=${1%%=*}\
++\ func_split_long_opt_arg=${1#*=}\
++} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
++func_split_short_opt ()\
++{\
++\ func_split_short_opt_arg=${1#??}\
++\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
++} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
++func_lo2o ()\
++{\
++\ case ${1} in\
++\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
++\ *) func_lo2o_result=${1} ;;\
++\ esac\
++} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_xform ()$/,/^} # func_xform /c\
++func_xform ()\
++{\
++ func_xform_result=${1%.*}.lo\
++} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_arith ()$/,/^} # func_arith /c\
++func_arith ()\
++{\
++ func_arith_result=$(( $* ))\
++} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_len ()$/,/^} # func_len /c\
++func_len ()\
++{\
++ func_len_result=${#1}\
++} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++fi
++
++if test x"$lt_shell_append" = xyes; then
++ sed -e '/^func_append ()$/,/^} # func_append /c\
++func_append ()\
++{\
++ eval "${1}+=\\${2}"\
++} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
++func_append_quoted ()\
++{\
++\ func_quote_for_eval "${2}"\
++\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
++} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ # Save a `func_append' function call where possible by direct use of '+='
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++else
++ # Save a `func_append' function call even when '+=' is not available
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++fi
++
++if test x"$_lt_function_replace_fail" = x":"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
++$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
++fi
+
+- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+
+- mv -f "$cfgfile" "$ofile" ||
++ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+Index: binutils-2.21/gas/configure
+===================================================================
+--- binutils-2.21.orig/gas/configure 2010-11-05 03:33:36.000000000 -0700
++++ binutils-2.21/gas/configure 2011-01-07 10:49:16.426101000 -0800
+@@ -645,8 +645,11 @@
+ LIPO
+ NMEDIT
+ DSYMUTIL
++MANIFEST_TOOL
+ RANLIB
++ac_ct_AR
+ AR
++DLLTOOL
+ OBJDUMP
+ LN_S
+ NM
+@@ -759,6 +762,7 @@
+ with_pic
+ enable_fast_install
+ with_gnu_ld
++with_libtool_sysroot
+ enable_libtool_lock
+ enable_targets
+ enable_checking
+@@ -1420,6 +1424,8 @@
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
++ (or the compiler's sysroot if not specified).
+ --with-zlib include zlib support (auto/yes/no) default=auto
+
+ Some influential environment variables:
+@@ -5135,8 +5141,8 @@
+
+
+
+-macro_version='2.2.7a'
+-macro_revision='1.3134'
++macro_version='2.4'
++macro_revision='1.3293'
+
+
+
+@@ -5176,7 +5182,7 @@
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+ $as_echo_n "checking how to print strings... " >&6; }
+ # Test print first, because it will be a builtin if present.
+-if test "X`print -r -- -n 2>/dev/null`" = X-n && \
++if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='print -r --'
+ elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+@@ -5862,8 +5868,8 @@
+ # Try some XSI features
+ xsi_shell=no
+ ( _lt_dummy="a/b/c"
+- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+- = c,a/b,, \
++ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
++ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+@@ -5912,6 +5918,80 @@
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
++$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
++if test "${lt_cv_to_host_file_cmd+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
++ ;;
++ esac
++ ;;
++ *-*-cygwin* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
++ ;;
++ esac
++ ;;
++ * ) # unhandled hosts (and "normal" native builds)
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++esac
++
++fi
++
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
++$as_echo "$lt_cv_to_host_file_cmd" >&6; }
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
++$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
++if test "${lt_cv_to_tool_file_cmd+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ #assume ordinary cross tools, or native build.
++lt_cv_to_tool_file_cmd=func_convert_file_noop
++case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ esac
++ ;;
++esac
++
++fi
++
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
++$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
++
++
++
++
++
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+ $as_echo_n "checking for $LD option to reload object files... " >&6; }
+ if test "${lt_cv_ld_reload_flag+set}" = set; then :
+@@ -5928,6 +6008,11 @@
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ case $host_os in
++ cygwin* | mingw* | pw32* | cegcc*)
++ if test "$GCC" != yes; then
++ reload_cmds=false
++ fi
++ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+@@ -6096,7 +6181,8 @@
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
++ # Keep this pattern in sync with the one in func_win32_libid.
++ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+@@ -6250,6 +6336,21 @@
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+ $as_echo "$lt_cv_deplibs_check_method" >&6; }
++
++file_magic_glob=
++want_nocaseglob=no
++if test "$build" = "$host"; then
++ case $host_os in
++ mingw* | pw32*)
++ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
++ want_nocaseglob=yes
++ else
++ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
++ fi
++ ;;
++ esac
++fi
++
+ file_magic_cmd=$lt_cv_file_magic_cmd
+ deplibs_check_method=$lt_cv_deplibs_check_method
+ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -6265,9 +6366,162 @@
+
+
+
++
++
++
++
++
++
++
++
++
++
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
++set dummy ${ac_tool_prefix}dlltool; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_DLLTOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$DLLTOOL"; then
++ ac_cv_prog_DLLTOOL="$DLLTOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++DLLTOOL=$ac_cv_prog_DLLTOOL
++if test -n "$DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
++$as_echo "$DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_DLLTOOL"; then
++ ac_ct_DLLTOOL=$DLLTOOL
++ # Extract the first word of "dlltool", so it can be a program name with args.
++set dummy dlltool; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_DLLTOOL"; then
++ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
++if test -n "$ac_ct_DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
++$as_echo "$ac_ct_DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_DLLTOOL" = x; then
++ DLLTOOL="false"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ DLLTOOL=$ac_ct_DLLTOOL
++ fi
++else
++ DLLTOOL="$ac_cv_prog_DLLTOOL"
++fi
++
++test -z "$DLLTOOL" && DLLTOOL=dlltool
++
++
++
++
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
++$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
++if test "${lt_cv_sharedlib_from_linklib_cmd+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_sharedlib_from_linklib_cmd='unknown'
++
++case $host_os in
++cygwin* | mingw* | pw32* | cegcc*)
++ # two different shell functions defined in ltmain.sh
++ # decide which to use based on capabilities of $DLLTOOL
++ case `$DLLTOOL --help 2>&1` in
++ *--identify-strict*)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
++ ;;
++ *)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
++ ;;
++ esac
++ ;;
++*)
++ # fallback: assume linklib IS sharedlib
++ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
++ ;;
++esac
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
++$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
++sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
++test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
++
++
++
++
++
++
++
+ if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}ar; ac_word=$2
++ for ac_prog in ar
++ do
++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
++set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_prog_AR+set}" = set; then :
+@@ -6283,7 +6537,7 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_prog_AR="${ac_tool_prefix}ar"
++ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6303,11 +6557,15 @@
+ fi
+
+
++ test -n "$AR" && break
++ done
+ fi
+-if test -z "$ac_cv_prog_AR"; then
++if test -z "$AR"; then
+ ac_ct_AR=$AR
+- # Extract the first word of "ar", so it can be a program name with args.
+-set dummy ar; ac_word=$2
++ for ac_prog in ar
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
+@@ -6323,7 +6581,7 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_prog_ac_ct_AR="ar"
++ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6342,6 +6600,10 @@
+ $as_echo "no" >&6; }
+ fi
+
++
++ test -n "$ac_ct_AR" && break
++done
++
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+@@ -6353,16 +6615,72 @@
+ esac
+ AR=$ac_ct_AR
+ fi
+-else
+- AR="$ac_cv_prog_AR"
+ fi
+
+-test -z "$AR" && AR=ar
+-test -z "$AR_FLAGS" && AR_FLAGS=cru
++: ${AR=ar}
++: ${AR_FLAGS=cru}
++
++
++
++
++
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
++$as_echo_n "checking for archiver @FILE support... " >&6; }
++if test "${lt_cv_ar_at_file+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_ar_at_file=no
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
+
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ echo conftest.$ac_objext > conftest.lst
++ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -eq 0; then
++ # Ensure the archiver fails upon bogus file names.
++ rm -f conftest.$ac_objext libconftest.a
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -ne 0; then
++ lt_cv_ar_at_file=@
++ fi
++ fi
++ rm -f conftest.* libconftest.a
+
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
++$as_echo "$lt_cv_ar_at_file" >&6; }
+
++if test "x$lt_cv_ar_at_file" = xno; then
++ archiver_list_spec=
++else
++ archiver_list_spec=$lt_cv_ar_at_file
++fi
+
+
+
+@@ -6704,8 +7022,8 @@
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+ # Transform an extracted symbol line into symbol name and symbol address
+-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+ # Handle CRLF in mingw tool chain
+ opt_cr=
+@@ -6741,6 +7059,7 @@
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
++ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -6782,6 +7101,18 @@
+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<_LT_EOF > conftest.$ac_ext
++/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
++#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
++/* DATA imports from DLLs on WIN32 con't be const, because runtime
++ relocations are performed -- see ld's documentation on pseudo-relocs. */
++# define LT_DLSYM_CONST
++#elif defined(__osf__)
++/* This system does not cope well with relocations in const data. */
++# define LT_DLSYM_CONST
++#else
++# define LT_DLSYM_CONST const
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -6793,7 +7124,7 @@
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+ /* The mapping between symbol names and symbols. */
+-const struct {
++LT_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+ }
+@@ -6819,8 +7150,8 @@
+ _LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+- lt_save_LIBS="$LIBS"
+- lt_save_CFLAGS="$CFLAGS"
++ lt_globsym_save_LIBS=$LIBS
++ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+@@ -6830,8 +7161,8 @@
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+- LIBS="$lt_save_LIBS"
+- CFLAGS="$lt_save_CFLAGS"
++ LIBS=$lt_globsym_save_LIBS
++ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+@@ -6868,6 +7199,19 @@
+ $as_echo "ok" >&6; }
+ fi
+
++# Response file support.
++if test "$lt_cv_nm_interface" = "MS dumpbin"; then
++ nm_file_list_spec='@'
++elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
++ nm_file_list_spec='@'
++fi
++
++
++
++
++
++
++
+
+
+
+@@ -6888,6 +7232,42 @@
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
++$as_echo_n "checking for sysroot... " >&6; }
++
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
++else
++ with_libtool_sysroot=no
++fi
++
++
++lt_sysroot=
++case ${with_libtool_sysroot} in #(
++ yes)
++ if test "$GCC" = yes; then
++ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
++ fi
++ ;; #(
++ /*)
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
++ ;; #(
++ no|'')
++ ;; #(
++ *)
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
++ as_fn_error "The sysroot must be an absolute path." "$LINENO" 5
++ ;;
++esac
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
++$as_echo "${lt_sysroot:-no}" >&6; }
++
++
++
++
+
+ # Check whether --enable-libtool-lock was given.
+ if test "${enable_libtool_lock+set}" = set; then :
+@@ -7082,6 +7462,123 @@
+
+ need_locks="$enable_libtool_lock"
+
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
++set dummy ${ac_tool_prefix}mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_MANIFEST_TOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$MANIFEST_TOOL"; then
++ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
++if test -n "$MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
++$as_echo "$MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
++ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
++ # Extract the first word of "mt", so it can be a program name with args.
++set dummy mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_ac_ct_MANIFEST_TOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_MANIFEST_TOOL"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
++if test -n "$ac_ct_MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
++$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_MANIFEST_TOOL" = x; then
++ MANIFEST_TOOL=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
++ fi
++else
++ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
++fi
++
++test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
++$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
++if test "${lt_cv_path_mainfest_tool+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_path_mainfest_tool=no
++ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
++ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
++ cat conftest.err >&5
++ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
++ lt_cv_path_mainfest_tool=yes
++ fi
++ rm -f conftest*
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
++$as_echo "$lt_cv_path_mainfest_tool" >&6; }
++if test "x$lt_cv_path_mainfest_tool" != xyes; then
++ MANIFEST_TOOL=:
++fi
++
++
++
++
++
+
+ case $host_os in
+ rhapsody* | darwin*)
+@@ -7645,6 +8142,8 @@
+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+ echo "$AR cru libconftest.a conftest.o" >&5
+ $AR cru libconftest.a conftest.o 2>&5
++ echo "$RANLIB libconftest.a" >&5
++ $RANLIB libconftest.a 2>&5
+ cat > conftest.c << _LT_EOF
+ int main() { return 0;}
+ _LT_EOF
+@@ -7840,7 +8339,8 @@
+ LIBTOOL_DEPS="$ltmain"
+
+ # Always use our own libtool.
+-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
++LIBTOOL='$(SHELL) $(top_builddir)'
++LIBTOOL="$LIBTOOL/${host_alias}-libtool"
+
+
+
+@@ -7929,7 +8429,7 @@
+ esac
+
+ # Global variables:
+-ofile=libtool
++ofile=${host_alias}-libtool
+ can_build_shared=yes
+
+ # All known linkers require a `.a' archive for static linking (except MSVC,
+@@ -8227,8 +8727,6 @@
+ lt_prog_compiler_pic=
+ lt_prog_compiler_static=
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+@@ -8393,6 +8891,12 @@
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
++ nagfor*)
++ # NAG Fortran compiler
++ lt_prog_compiler_wl='-Wl,-Wl,,'
++ lt_prog_compiler_pic='-PIC'
++ lt_prog_compiler_static='-Bstatic'
++ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+@@ -8455,7 +8959,7 @@
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ case $cc_basename in
+- f77* | f90* | f95*)
++ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+@@ -8512,13 +9016,17 @@
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+ esac
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+-$as_echo "$lt_prog_compiler_pic" >&6; }
+-
+-
+-
+-
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
++$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
++if test "${lt_cv_prog_compiler_pic+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
++$as_echo "$lt_cv_prog_compiler_pic" >&6; }
++lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+ #
+ # Check to make sure the PIC flag actually works.
+@@ -8579,6 +9087,11 @@
+
+
+
++
++
++
++
++
+ #
+ # Check to make sure the static flag actually works.
+ #
+@@ -8929,7 +9442,8 @@
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
++ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+@@ -8977,7 +9491,7 @@
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+- tmp_addflag=
++ tmp_addflag=' $pic_flag'
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+@@ -9028,12 +9542,12 @@
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
++ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
++ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+@@ -9047,8 +9561,8 @@
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+@@ -9066,8 +9580,8 @@
+
+ _LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9113,8 +9627,8 @@
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9244,7 +9758,13 @@
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if test "${lt_cv_aix_libpath_+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9257,22 +9777,29 @@
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+@@ -9284,7 +9811,13 @@
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if test "${lt_cv_aix_libpath_+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9297,22 +9830,29 @@
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+@@ -9357,20 +9897,63 @@
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+- hardcode_libdir_flag_spec=' '
+- allow_undefined_flag=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- old_archive_from_new_cmds='true'
+- # FIXME: Should let the user specify the lib program.
+- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+- fix_srcfile_path='`cygpath -w "$srcfile"`'
+- enable_shared_with_static_runtimes=yes
++ case $cc_basename in
++ cl*)
++ # Native MSVC
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ always_export_symbols=yes
++ file_list_spec='@'
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
++ else
++ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
++ fi~
++ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++ linknames='
++ # The linker will not automatically build a static lib if we build a DLL.
++ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
++ enable_shared_with_static_runtimes=yes
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ # Don't use ranlib
++ old_postinstall_cmds='chmod 644 $oldlib'
++ postlink_cmds='lt_outputfile="@OUTPUT@"~
++ lt_tool_outputfile="@TOOL_OUTPUT@"~
++ case $lt_outputfile in
++ *.exe|*.EXE) ;;
++ *)
++ lt_outputfile="$lt_outputfile.exe"
++ lt_tool_outputfile="$lt_tool_outputfile.exe"
++ ;;
++ esac~
++ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
++ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
++ $RM "$lt_outputfile.manifest";
++ fi'
++ ;;
++ *)
++ # Assume MSVC wrapper
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ old_archive_from_new_cmds='true'
++ # FIXME: Should let the user specify the lib program.
++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
++ enable_shared_with_static_runtimes=yes
++ ;;
++ esac
+ ;;
+
+ darwin* | rhapsody*)
+@@ -9435,7 +10018,7 @@
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+@@ -9443,7 +10026,7 @@
+
+ hpux9*)
+ if test "$GCC" = yes; then
+- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+@@ -9459,7 +10042,7 @@
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+@@ -9483,10 +10066,10 @@
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+@@ -9565,23 +10148,36 @@
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ # This should be the same for all languages, so no per-tag cache variable.
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
++$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
++if test "${lt_cv_irix_exported_symbol+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-int foo(void) {}
++int foo (void) { return 0; }
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+-
++ lt_cv_irix_exported_symbol=yes
++else
++ lt_cv_irix_exported_symbol=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+- LDFLAGS="$save_LDFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
++$as_echo "$lt_cv_irix_exported_symbol" >&6; }
++ if test "$lt_cv_irix_exported_symbol" = yes; then
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
++ fi
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+@@ -9666,7 +10262,7 @@
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+@@ -9685,9 +10281,9 @@
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
++ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+@@ -10263,8 +10859,9 @@
+ need_version=no
+ need_lib_prefix=no
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
++ case $GCC,$cc_basename in
++ yes,*)
++ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+@@ -10297,13 +10894,71 @@
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
++ dynamic_linker='Win32 ld.exe'
++ ;;
++
++ *,cl*)
++ # Native MSVC
++ libname_spec='$name'
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='${libname}.dll.lib'
++
++ case $build_os in
++ mingw*)
++ sys_lib_search_path_spec=
++ lt_save_ifs=$IFS
++ IFS=';'
++ for lt_path in $LIB
++ do
++ IFS=$lt_save_ifs
++ # Let DOS variable expansion print the short 8.3 style file name.
++ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
++ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
++ done
++ IFS=$lt_save_ifs
++ # Convert to MSYS style.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
++ ;;
++ cygwin*)
++ # Convert to unix form, then to dos form, then back to unix form
++ # but this time dos style (no spaces!) so that the unix form looks
++ # like /cygdrive/c/PROGRA~1:/cygdr...
++ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
++ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
++ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ ;;
++ *)
++ sys_lib_search_path_spec="$LIB"
++ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
++ # It is most probably a Windows format PATH.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ # FIXME: find the short name or the path components, as spaces are
++ # common. (e.g. "Program Files" -> "PROGRA~1")
++ ;;
++ esac
++
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $RM \$dlpath'
++ shlibpath_overrides_runpath=yes
++ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
++ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+- dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+@@ -10399,7 +11054,7 @@
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
++ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+ hardcode_into_libs=yes
+ ;;
+
+@@ -11195,7 +11850,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11198 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11239,10 +11894,10 @@
+ /* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -11301,7 +11956,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11304 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11345,10 +12000,10 @@
+ /* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -14941,13 +15596,20 @@
+ lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+ lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+ lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
++lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
++lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+ reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+ reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+ OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+ deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+ file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
++file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
++want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
++DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
++sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+ AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+ AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
++archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+ STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+ RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+ old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+@@ -14962,14 +15624,17 @@
+ lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+ lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
++nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
++lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+ objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+ MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
++lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+ lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+ need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
++MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+ DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+ NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+ LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+@@ -15002,12 +15667,12 @@
+ hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+ inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+ link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+-fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
+ always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+ export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+ exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+ include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+ prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
++postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+ file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+ variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+ need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+@@ -15062,8 +15727,13 @@
+ OBJDUMP \
+ deplibs_check_method \
+ file_magic_cmd \
++file_magic_glob \
++want_nocaseglob \
++DLLTOOL \
++sharedlib_from_linklib_cmd \
+ AR \
+ AR_FLAGS \
++archiver_list_spec \
+ STRIP \
+ RANLIB \
+ CC \
+@@ -15073,12 +15743,14 @@
+ lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
++nm_file_list_spec \
+ lt_prog_compiler_no_builtin_flag \
+-lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
++lt_prog_compiler_wl \
+ lt_prog_compiler_static \
+ lt_cv_prog_compiler_c_o \
+ need_locks \
++MANIFEST_TOOL \
+ DSYMUTIL \
+ NMEDIT \
+ LIPO \
+@@ -15094,7 +15766,6 @@
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+-fix_srcfile_path \
+ exclude_expsyms \
+ include_expsyms \
+ file_list_spec \
+@@ -15130,6 +15801,7 @@
+ module_expsym_cmds \
+ export_symbols_cmds \
+ prelink_cmds \
++postlink_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ finish_cmds \
+@@ -15894,7 +16566,8 @@
+ # NOTE: Changes made to this file will be lost: look at ltmain.sh.
+ #
+ # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+-# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
++# Inc.
+ # Written by Gordon Matzigkeit, 1996
+ #
+ # This file is part of GNU Libtool.
+@@ -15997,19 +16670,42 @@
+ # turn newlines into spaces.
+ NL2SP=$lt_lt_NL2SP
+
++# convert \$build file names to \$host format.
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++
++# convert \$build files to toolchain format.
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++
+ # An object symbol dumper.
+ OBJDUMP=$lt_OBJDUMP
+
+ # Method to check whether dependent libraries are shared objects.
+ deplibs_check_method=$lt_deplibs_check_method
+
+-# Command to use when deplibs_check_method == "file_magic".
++# Command to use when deplibs_check_method = "file_magic".
+ file_magic_cmd=$lt_file_magic_cmd
+
++# How to find potential files when deplibs_check_method = "file_magic".
++file_magic_glob=$lt_file_magic_glob
++
++# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
++want_nocaseglob=$lt_want_nocaseglob
++
++# DLL creation program.
++DLLTOOL=$lt_DLLTOOL
++
++# Command to associate shared and link libraries.
++sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
++
+ # The archiver.
+ AR=$lt_AR
++
++# Flags to create an archive.
+ AR_FLAGS=$lt_AR_FLAGS
+
++# How to feed a file listing to the archiver.
++archiver_list_spec=$lt_archiver_list_spec
++
+ # A symbol stripping program.
+ STRIP=$lt_STRIP
+
+@@ -16039,6 +16735,12 @@
+ # Transform the output of nm in a C name address pair when lib prefix is needed.
+ global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
++# Specify filename containing input files for \$NM.
++nm_file_list_spec=$lt_nm_file_list_spec
++
++# The root where to search for dependent libraries,and in which our libraries should be installed.
++lt_sysroot=$lt_sysroot
++
+ # The name of the directory that contains temporary libtool files.
+ objdir=$objdir
+
+@@ -16048,6 +16750,9 @@
+ # Must we lock files when doing compilation?
+ need_locks=$lt_need_locks
+
++# Manifest tool.
++MANIFEST_TOOL=$lt_MANIFEST_TOOL
++
+ # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+ DSYMUTIL=$lt_DSYMUTIL
+
+@@ -16162,12 +16867,12 @@
+ # Compiler flag to turn off builtin functions.
+ no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl
+-
+ # Additional compiler flags for building library objects.
+ pic_flag=$lt_lt_prog_compiler_pic
+
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl
++
+ # Compiler flag to prevent dynamic linking.
+ link_static_flag=$lt_lt_prog_compiler_static
+
+@@ -16254,9 +16959,6 @@
+ # Whether libtool must link a program against all its dependency libraries.
+ link_all_deplibs=$link_all_deplibs
+
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path=$lt_fix_srcfile_path
+-
+ # Set to "yes" if exported symbols are required.
+ always_export_symbols=$always_export_symbols
+
+@@ -16272,6 +16974,9 @@
+ # Commands necessary for linking programs (against libraries) with templates.
+ prelink_cmds=$lt_prelink_cmds
+
++# Commands necessary for finishing linking programs.
++postlink_cmds=$lt_postlink_cmds
++
+ # Specify filename containing input files.
+ file_list_spec=$lt_file_list_spec
+
+@@ -16304,210 +17009,169 @@
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- case $xsi_shell in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_dirname_and_basename file append nondir_replacement
+-# perform func_basename and func_dirname in a single function
+-# call:
+-# dirname: Compute the dirname of FILE. If nonempty,
+-# add APPEND to the result, otherwise set result
+-# to NONDIR_REPLACEMENT.
+-# value returned in "$func_dirname_result"
+-# basename: Compute filename of FILE.
+-# value retuned in "$func_basename_result"
+-# Implementation must be kept synchronized with func_dirname
+-# and func_basename. For efficiency, we do not delegate to
+-# those functions but instead duplicate the functionality here.
+-func_dirname_and_basename ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-func_stripname ()
+-{
+- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+- # positional parameters, so assign one to ordinary parameter first.
+- func_stripname_result=${3}
+- func_stripname_result=${func_stripname_result#"${1}"}
+- func_stripname_result=${func_stripname_result%"${2}"}
+-}
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=${1%%=*}
+- func_opt_split_arg=${1#*=}
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- case ${1} in
+- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+- *) func_lo2o_result=${1} ;;
+- esac
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=${1%.*}.lo
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=$(( $* ))
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=${#1}
+-}
+-
+-_LT_EOF
+- ;;
+- *) # Bourne compatible functions.
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- # Extract subdirectory from the argument.
+- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+- if test "X$func_dirname_result" = "X${1}"; then
+- func_dirname_result="${3}"
+- else
+- func_dirname_result="$func_dirname_result${2}"
+- fi
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+-}
+-
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-# func_strip_suffix prefix name
+-func_stripname ()
+-{
+- case ${2} in
+- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+- esac
+-}
+-
+-# sed scripts:
+-my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+-my_sed_long_arg='1s/^-[^=]*=//'
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=`expr "$@"`
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+-}
+-
+-_LT_EOF
+-esac
+-
+-case $lt_shell_append in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1+=\$2"
+-}
+-_LT_EOF
+- ;;
+- *)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1=\$$1\$2"
+-}
+-
+-_LT_EOF
+- ;;
+- esac
++ sed '$q' "$ltmain" >> "$cfgfile" \
++ || (rm -f "$cfgfile"; exit 1)
+
++ if test x"$xsi_shell" = xyes; then
++ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
++func_dirname ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_basename ()$/,/^} # func_basename /c\
++func_basename ()\
++{\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
++func_dirname_and_basename ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
++func_stripname ()\
++{\
++\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
++\ # positional parameters, so assign one to ordinary parameter first.\
++\ func_stripname_result=${3}\
++\ func_stripname_result=${func_stripname_result#"${1}"}\
++\ func_stripname_result=${func_stripname_result%"${2}"}\
++} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
++func_split_long_opt ()\
++{\
++\ func_split_long_opt_name=${1%%=*}\
++\ func_split_long_opt_arg=${1#*=}\
++} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
++func_split_short_opt ()\
++{\
++\ func_split_short_opt_arg=${1#??}\
++\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
++} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
++func_lo2o ()\
++{\
++\ case ${1} in\
++\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
++\ *) func_lo2o_result=${1} ;;\
++\ esac\
++} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_xform ()$/,/^} # func_xform /c\
++func_xform ()\
++{\
++ func_xform_result=${1%.*}.lo\
++} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_arith ()$/,/^} # func_arith /c\
++func_arith ()\
++{\
++ func_arith_result=$(( $* ))\
++} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_len ()$/,/^} # func_len /c\
++func_len ()\
++{\
++ func_len_result=${#1}\
++} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++fi
++
++if test x"$lt_shell_append" = xyes; then
++ sed -e '/^func_append ()$/,/^} # func_append /c\
++func_append ()\
++{\
++ eval "${1}+=\\${2}"\
++} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
++func_append_quoted ()\
++{\
++\ func_quote_for_eval "${2}"\
++\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
++} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ # Save a `func_append' function call where possible by direct use of '+='
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++else
++ # Save a `func_append' function call even when '+=' is not available
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++fi
++
++if test x"$_lt_function_replace_fail" = x":"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
++$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
++fi
+
+- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+
+- mv -f "$cfgfile" "$ofile" ||
++ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+Index: binutils-2.21/gprof/configure
+===================================================================
+--- binutils-2.21.orig/gprof/configure 2011-01-07 10:49:15.956101000 -0800
++++ binutils-2.21/gprof/configure 2011-01-07 10:49:16.436101000 -0800
+@@ -629,8 +629,11 @@
+ LIPO
+ NMEDIT
+ DSYMUTIL
++MANIFEST_TOOL
+ RANLIB
++ac_ct_AR
+ AR
++DLLTOOL
+ OBJDUMP
+ LN_S
+ NM
+@@ -743,6 +746,7 @@
+ with_pic
+ enable_fast_install
+ with_gnu_ld
++with_libtool_sysroot
+ enable_libtool_lock
+ enable_nls
+ enable_maintainer_mode
+@@ -1397,6 +1401,8 @@
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
++ (or the compiler's sysroot if not specified).
+
+ Some influential environment variables:
+ CC C compiler command
+@@ -5065,8 +5071,8 @@
+
+
+
+-macro_version='2.2.7a'
+-macro_revision='1.3134'
++macro_version='2.4'
++macro_revision='1.3293'
+
+
+
+@@ -5106,7 +5112,7 @@
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+ $as_echo_n "checking how to print strings... " >&6; }
+ # Test print first, because it will be a builtin if present.
+-if test "X`print -r -- -n 2>/dev/null`" = X-n && \
++if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='print -r --'
+ elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+@@ -5792,8 +5798,8 @@
+ # Try some XSI features
+ xsi_shell=no
+ ( _lt_dummy="a/b/c"
+- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+- = c,a/b,, \
++ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
++ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+@@ -5842,6 +5848,80 @@
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
++$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
++if test "${lt_cv_to_host_file_cmd+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
++ ;;
++ esac
++ ;;
++ *-*-cygwin* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
++ ;;
++ esac
++ ;;
++ * ) # unhandled hosts (and "normal" native builds)
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++esac
++
++fi
++
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
++$as_echo "$lt_cv_to_host_file_cmd" >&6; }
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
++$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
++if test "${lt_cv_to_tool_file_cmd+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ #assume ordinary cross tools, or native build.
++lt_cv_to_tool_file_cmd=func_convert_file_noop
++case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ esac
++ ;;
++esac
++
++fi
++
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
++$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
++
++
++
++
++
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+ $as_echo_n "checking for $LD option to reload object files... " >&6; }
+ if test "${lt_cv_ld_reload_flag+set}" = set; then :
+@@ -5858,6 +5938,11 @@
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ case $host_os in
++ cygwin* | mingw* | pw32* | cegcc*)
++ if test "$GCC" != yes; then
++ reload_cmds=false
++ fi
++ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+@@ -6026,7 +6111,8 @@
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
++ # Keep this pattern in sync with the one in func_win32_libid.
++ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+@@ -6103,11 +6189,6 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+-linux-uclibc*)
+- lt_cv_deplibs_check_method=pass_all
+- lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
+- ;;
+-
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+@@ -6185,6 +6266,21 @@
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+ $as_echo "$lt_cv_deplibs_check_method" >&6; }
++
++file_magic_glob=
++want_nocaseglob=no
++if test "$build" = "$host"; then
++ case $host_os in
++ mingw* | pw32*)
++ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
++ want_nocaseglob=yes
++ else
++ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
++ fi
++ ;;
++ esac
++fi
++
+ file_magic_cmd=$lt_cv_file_magic_cmd
+ deplibs_check_method=$lt_cv_deplibs_check_method
+ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -6200,9 +6296,162 @@
+
+
+
++
++
++
++
++
++
++
++
++
++
+ if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}ar; ac_word=$2
++ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
++set dummy ${ac_tool_prefix}dlltool; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_DLLTOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$DLLTOOL"; then
++ ac_cv_prog_DLLTOOL="$DLLTOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++DLLTOOL=$ac_cv_prog_DLLTOOL
++if test -n "$DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
++$as_echo "$DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_DLLTOOL"; then
++ ac_ct_DLLTOOL=$DLLTOOL
++ # Extract the first word of "dlltool", so it can be a program name with args.
++set dummy dlltool; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_DLLTOOL"; then
++ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
++if test -n "$ac_ct_DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
++$as_echo "$ac_ct_DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_DLLTOOL" = x; then
++ DLLTOOL="false"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ DLLTOOL=$ac_ct_DLLTOOL
++ fi
++else
++ DLLTOOL="$ac_cv_prog_DLLTOOL"
++fi
++
++test -z "$DLLTOOL" && DLLTOOL=dlltool
++
++
++
++
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
++$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
++if test "${lt_cv_sharedlib_from_linklib_cmd+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_sharedlib_from_linklib_cmd='unknown'
++
++case $host_os in
++cygwin* | mingw* | pw32* | cegcc*)
++ # two different shell functions defined in ltmain.sh
++ # decide which to use based on capabilities of $DLLTOOL
++ case `$DLLTOOL --help 2>&1` in
++ *--identify-strict*)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
++ ;;
++ *)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
++ ;;
++ esac
++ ;;
++*)
++ # fallback: assume linklib IS sharedlib
++ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
++ ;;
++esac
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
++$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
++sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
++test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
++
++
++
++
++
++
++
++if test -n "$ac_tool_prefix"; then
++ for ac_prog in ar
++ do
++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
++set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_prog_AR+set}" = set; then :
+@@ -6218,7 +6467,7 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_prog_AR="${ac_tool_prefix}ar"
++ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6238,11 +6487,15 @@
+ fi
+
+
++ test -n "$AR" && break
++ done
+ fi
+-if test -z "$ac_cv_prog_AR"; then
++if test -z "$AR"; then
+ ac_ct_AR=$AR
+- # Extract the first word of "ar", so it can be a program name with args.
+-set dummy ar; ac_word=$2
++ for ac_prog in ar
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
+@@ -6258,7 +6511,7 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_prog_ac_ct_AR="ar"
++ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6277,6 +6530,10 @@
+ $as_echo "no" >&6; }
+ fi
+
++
++ test -n "$ac_ct_AR" && break
++done
++
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+@@ -6288,16 +6545,72 @@
+ esac
+ AR=$ac_ct_AR
+ fi
+-else
+- AR="$ac_cv_prog_AR"
+ fi
+
+-test -z "$AR" && AR=ar
+-test -z "$AR_FLAGS" && AR_FLAGS=cru
++: ${AR=ar}
++: ${AR_FLAGS=cru}
++
++
++
++
++
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
++$as_echo_n "checking for archiver @FILE support... " >&6; }
++if test "${lt_cv_ar_at_file+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_ar_at_file=no
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
+
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ echo conftest.$ac_objext > conftest.lst
++ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -eq 0; then
++ # Ensure the archiver fails upon bogus file names.
++ rm -f conftest.$ac_objext libconftest.a
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -ne 0; then
++ lt_cv_ar_at_file=@
++ fi
++ fi
++ rm -f conftest.* libconftest.a
+
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
++$as_echo "$lt_cv_ar_at_file" >&6; }
+
++if test "x$lt_cv_ar_at_file" = xno; then
++ archiver_list_spec=
++else
++ archiver_list_spec=$lt_cv_ar_at_file
++fi
+
+
+
+@@ -6639,8 +6952,8 @@
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+ # Transform an extracted symbol line into symbol name and symbol address
+-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+ # Handle CRLF in mingw tool chain
+ opt_cr=
+@@ -6676,6 +6989,7 @@
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
++ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -6717,6 +7031,18 @@
+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<_LT_EOF > conftest.$ac_ext
++/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
++#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
++/* DATA imports from DLLs on WIN32 con't be const, because runtime
++ relocations are performed -- see ld's documentation on pseudo-relocs. */
++# define LT_DLSYM_CONST
++#elif defined(__osf__)
++/* This system does not cope well with relocations in const data. */
++# define LT_DLSYM_CONST
++#else
++# define LT_DLSYM_CONST const
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -6728,7 +7054,7 @@
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+ /* The mapping between symbol names and symbols. */
+-const struct {
++LT_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+ }
+@@ -6754,8 +7080,8 @@
+ _LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+- lt_save_LIBS="$LIBS"
+- lt_save_CFLAGS="$CFLAGS"
++ lt_globsym_save_LIBS=$LIBS
++ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+@@ -6765,8 +7091,8 @@
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+- LIBS="$lt_save_LIBS"
+- CFLAGS="$lt_save_CFLAGS"
++ LIBS=$lt_globsym_save_LIBS
++ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+@@ -6803,6 +7129,17 @@
+ $as_echo "ok" >&6; }
+ fi
+
++# Response file support.
++if test "$lt_cv_nm_interface" = "MS dumpbin"; then
++ nm_file_list_spec='@'
++elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
++ nm_file_list_spec='@'
++fi
++
++
++
++
++
+
+
+
+@@ -6824,6 +7161,44 @@
+
+
+
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
++$as_echo_n "checking for sysroot... " >&6; }
++
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
++else
++ with_libtool_sysroot=no
++fi
++
++
++lt_sysroot=
++case ${with_libtool_sysroot} in #(
++ yes)
++ if test "$GCC" = yes; then
++ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
++ fi
++ ;; #(
++ /*)
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
++ ;; #(
++ no|'')
++ ;; #(
++ *)
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
++ as_fn_error "The sysroot must be an absolute path." "$LINENO" 5
++ ;;
++esac
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
++$as_echo "${lt_sysroot:-no}" >&6; }
++
++
++
++
++
+ # Check whether --enable-libtool-lock was given.
+ if test "${enable_libtool_lock+set}" = set; then :
+ enableval=$enable_libtool_lock;
+@@ -7017,6 +7392,123 @@
+
+ need_locks="$enable_libtool_lock"
+
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
++set dummy ${ac_tool_prefix}mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_MANIFEST_TOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$MANIFEST_TOOL"; then
++ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
++if test -n "$MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
++$as_echo "$MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
++ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
++ # Extract the first word of "mt", so it can be a program name with args.
++set dummy mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_ac_ct_MANIFEST_TOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_MANIFEST_TOOL"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
++if test -n "$ac_ct_MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
++$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_MANIFEST_TOOL" = x; then
++ MANIFEST_TOOL=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
++ fi
++else
++ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
++fi
++
++test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
++$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
++if test "${lt_cv_path_mainfest_tool+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_path_mainfest_tool=no
++ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
++ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
++ cat conftest.err >&5
++ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
++ lt_cv_path_mainfest_tool=yes
++ fi
++ rm -f conftest*
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
++$as_echo "$lt_cv_path_mainfest_tool" >&6; }
++if test "x$lt_cv_path_mainfest_tool" != xyes; then
++ MANIFEST_TOOL=:
++fi
++
++
++
++
++
+
+ case $host_os in
+ rhapsody* | darwin*)
+@@ -7580,6 +8072,8 @@
+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+ echo "$AR cru libconftest.a conftest.o" >&5
+ $AR cru libconftest.a conftest.o 2>&5
++ echo "$RANLIB libconftest.a" >&5
++ $RANLIB libconftest.a 2>&5
+ cat > conftest.c << _LT_EOF
+ int main() { return 0;}
+ _LT_EOF
+@@ -7775,7 +8269,8 @@
+ LIBTOOL_DEPS="$ltmain"
+
+ # Always use our own libtool.
+-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
++LIBTOOL='$(SHELL) $(top_builddir)'
++LIBTOOL="$LIBTOOL/${host_alias}-libtool"
+
+
+
+@@ -7864,7 +8359,7 @@
+ esac
+
+ # Global variables:
+-ofile=libtool
++ofile=${host_alias}-libtool
+ can_build_shared=yes
+
+ # All known linkers require a `.a' archive for static linking (except MSVC,
+@@ -8162,8 +8657,6 @@
+ lt_prog_compiler_pic=
+ lt_prog_compiler_static=
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+@@ -8328,6 +8821,12 @@
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
++ nagfor*)
++ # NAG Fortran compiler
++ lt_prog_compiler_wl='-Wl,-Wl,,'
++ lt_prog_compiler_pic='-PIC'
++ lt_prog_compiler_static='-Bstatic'
++ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+@@ -8390,7 +8889,7 @@
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ case $cc_basename in
+- f77* | f90* | f95*)
++ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+@@ -8447,13 +8946,17 @@
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+ esac
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+-$as_echo "$lt_prog_compiler_pic" >&6; }
+-
+-
+-
+-
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
++$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
++if test "${lt_cv_prog_compiler_pic+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
++$as_echo "$lt_cv_prog_compiler_pic" >&6; }
++lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+ #
+ # Check to make sure the PIC flag actually works.
+@@ -8514,6 +9017,11 @@
+
+
+
++
++
++
++
++
+ #
+ # Check to make sure the static flag actually works.
+ #
+@@ -8864,7 +9372,8 @@
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
++ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+@@ -8912,7 +9421,7 @@
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+- tmp_addflag=
++ tmp_addflag=' $pic_flag'
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+@@ -8963,12 +9472,12 @@
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
++ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
++ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+@@ -8982,8 +9491,8 @@
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+@@ -9001,8 +9510,8 @@
+
+ _LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9048,8 +9557,8 @@
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9179,7 +9688,13 @@
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if test "${lt_cv_aix_libpath_+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9192,22 +9707,29 @@
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+@@ -9219,7 +9741,13 @@
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if test "${lt_cv_aix_libpath_+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9232,22 +9760,29 @@
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+@@ -9292,20 +9827,63 @@
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+- hardcode_libdir_flag_spec=' '
+- allow_undefined_flag=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- old_archive_from_new_cmds='true'
+- # FIXME: Should let the user specify the lib program.
+- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+- fix_srcfile_path='`cygpath -w "$srcfile"`'
+- enable_shared_with_static_runtimes=yes
++ case $cc_basename in
++ cl*)
++ # Native MSVC
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ always_export_symbols=yes
++ file_list_spec='@'
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
++ else
++ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
++ fi~
++ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++ linknames='
++ # The linker will not automatically build a static lib if we build a DLL.
++ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
++ enable_shared_with_static_runtimes=yes
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ # Don't use ranlib
++ old_postinstall_cmds='chmod 644 $oldlib'
++ postlink_cmds='lt_outputfile="@OUTPUT@"~
++ lt_tool_outputfile="@TOOL_OUTPUT@"~
++ case $lt_outputfile in
++ *.exe|*.EXE) ;;
++ *)
++ lt_outputfile="$lt_outputfile.exe"
++ lt_tool_outputfile="$lt_tool_outputfile.exe"
++ ;;
++ esac~
++ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
++ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
++ $RM "$lt_outputfile.manifest";
++ fi'
++ ;;
++ *)
++ # Assume MSVC wrapper
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ old_archive_from_new_cmds='true'
++ # FIXME: Should let the user specify the lib program.
++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
++ enable_shared_with_static_runtimes=yes
++ ;;
++ esac
+ ;;
+
+ darwin* | rhapsody*)
+@@ -9370,7 +9948,7 @@
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+@@ -9378,7 +9956,7 @@
+
+ hpux9*)
+ if test "$GCC" = yes; then
+- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+@@ -9394,7 +9972,7 @@
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+@@ -9418,10 +9996,10 @@
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+@@ -9500,23 +10078,36 @@
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ # This should be the same for all languages, so no per-tag cache variable.
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
++$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
++if test "${lt_cv_irix_exported_symbol+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-int foo(void) {}
++int foo (void) { return 0; }
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+-
++ lt_cv_irix_exported_symbol=yes
++else
++ lt_cv_irix_exported_symbol=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+- LDFLAGS="$save_LDFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
++$as_echo "$lt_cv_irix_exported_symbol" >&6; }
++ if test "$lt_cv_irix_exported_symbol" = yes; then
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
++ fi
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+@@ -9601,7 +10192,7 @@
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+@@ -9620,9 +10211,9 @@
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
++ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+@@ -10198,8 +10789,9 @@
+ need_version=no
+ need_lib_prefix=no
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
++ case $GCC,$cc_basename in
++ yes,*)
++ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+@@ -10232,13 +10824,71 @@
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
++ dynamic_linker='Win32 ld.exe'
++ ;;
++
++ *,cl*)
++ # Native MSVC
++ libname_spec='$name'
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='${libname}.dll.lib'
++
++ case $build_os in
++ mingw*)
++ sys_lib_search_path_spec=
++ lt_save_ifs=$IFS
++ IFS=';'
++ for lt_path in $LIB
++ do
++ IFS=$lt_save_ifs
++ # Let DOS variable expansion print the short 8.3 style file name.
++ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
++ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
++ done
++ IFS=$lt_save_ifs
++ # Convert to MSYS style.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
++ ;;
++ cygwin*)
++ # Convert to unix form, then to dos form, then back to unix form
++ # but this time dos style (no spaces!) so that the unix form looks
++ # like /cygdrive/c/PROGRA~1:/cygdr...
++ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
++ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
++ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ ;;
++ *)
++ sys_lib_search_path_spec="$LIB"
++ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
++ # It is most probably a Windows format PATH.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ # FIXME: find the short name or the path components, as spaces are
++ # common. (e.g. "Program Files" -> "PROGRA~1")
++ ;;
++ esac
++
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $RM \$dlpath'
++ shlibpath_overrides_runpath=yes
++ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
++ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+- dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+@@ -10334,7 +10984,7 @@
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
++ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+ hardcode_into_libs=yes
+ ;;
+
+@@ -11130,7 +11780,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11128 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11174,10 +11824,10 @@
+ /* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -11236,7 +11886,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11234 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11280,10 +11930,10 @@
+ /* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -12825,13 +13475,20 @@
+ lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+ lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+ lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
++lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
++lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+ reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+ reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+ OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+ deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+ file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
++file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
++want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
++DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
++sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+ AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+ AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
++archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+ STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+ RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+ old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+@@ -12846,14 +13503,17 @@
+ lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+ lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
++nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
++lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+ objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+ MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
++lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+ lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+ need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
++MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+ DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+ NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+ LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+@@ -12886,12 +13546,12 @@
+ hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+ inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+ link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+-fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
+ always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+ export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+ exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+ include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+ prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
++postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+ file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+ variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+ need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+@@ -12946,8 +13606,13 @@
+ OBJDUMP \
+ deplibs_check_method \
+ file_magic_cmd \
++file_magic_glob \
++want_nocaseglob \
++DLLTOOL \
++sharedlib_from_linklib_cmd \
+ AR \
+ AR_FLAGS \
++archiver_list_spec \
+ STRIP \
+ RANLIB \
+ CC \
+@@ -12957,12 +13622,14 @@
+ lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
++nm_file_list_spec \
+ lt_prog_compiler_no_builtin_flag \
+-lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
++lt_prog_compiler_wl \
+ lt_prog_compiler_static \
+ lt_cv_prog_compiler_c_o \
+ need_locks \
++MANIFEST_TOOL \
+ DSYMUTIL \
+ NMEDIT \
+ LIPO \
+@@ -12978,7 +13645,6 @@
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+-fix_srcfile_path \
+ exclude_expsyms \
+ include_expsyms \
+ file_list_spec \
+@@ -13014,6 +13680,7 @@
+ module_expsym_cmds \
+ export_symbols_cmds \
+ prelink_cmds \
++postlink_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ finish_cmds \
+@@ -13770,7 +14437,8 @@
+ # NOTE: Changes made to this file will be lost: look at ltmain.sh.
+ #
+ # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+-# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
++# Inc.
+ # Written by Gordon Matzigkeit, 1996
+ #
+ # This file is part of GNU Libtool.
+@@ -13873,19 +14541,42 @@
+ # turn newlines into spaces.
+ NL2SP=$lt_lt_NL2SP
+
++# convert \$build file names to \$host format.
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++
++# convert \$build files to toolchain format.
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++
+ # An object symbol dumper.
+ OBJDUMP=$lt_OBJDUMP
+
+ # Method to check whether dependent libraries are shared objects.
+ deplibs_check_method=$lt_deplibs_check_method
+
+-# Command to use when deplibs_check_method == "file_magic".
++# Command to use when deplibs_check_method = "file_magic".
+ file_magic_cmd=$lt_file_magic_cmd
+
++# How to find potential files when deplibs_check_method = "file_magic".
++file_magic_glob=$lt_file_magic_glob
++
++# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
++want_nocaseglob=$lt_want_nocaseglob
++
++# DLL creation program.
++DLLTOOL=$lt_DLLTOOL
++
++# Command to associate shared and link libraries.
++sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
++
+ # The archiver.
+ AR=$lt_AR
++
++# Flags to create an archive.
+ AR_FLAGS=$lt_AR_FLAGS
+
++# How to feed a file listing to the archiver.
++archiver_list_spec=$lt_archiver_list_spec
++
+ # A symbol stripping program.
+ STRIP=$lt_STRIP
+
+@@ -13915,6 +14606,12 @@
+ # Transform the output of nm in a C name address pair when lib prefix is needed.
+ global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
++# Specify filename containing input files for \$NM.
++nm_file_list_spec=$lt_nm_file_list_spec
++
++# The root where to search for dependent libraries,and in which our libraries should be installed.
++lt_sysroot=$lt_sysroot
++
+ # The name of the directory that contains temporary libtool files.
+ objdir=$objdir
+
+@@ -13924,6 +14621,9 @@
+ # Must we lock files when doing compilation?
+ need_locks=$lt_need_locks
+
++# Manifest tool.
++MANIFEST_TOOL=$lt_MANIFEST_TOOL
++
+ # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+ DSYMUTIL=$lt_DSYMUTIL
+
+@@ -14038,12 +14738,12 @@
+ # Compiler flag to turn off builtin functions.
+ no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl
+-
+ # Additional compiler flags for building library objects.
+ pic_flag=$lt_lt_prog_compiler_pic
+
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl
++
+ # Compiler flag to prevent dynamic linking.
+ link_static_flag=$lt_lt_prog_compiler_static
+
+@@ -14130,9 +14830,6 @@
+ # Whether libtool must link a program against all its dependency libraries.
+ link_all_deplibs=$link_all_deplibs
+
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path=$lt_fix_srcfile_path
+-
+ # Set to "yes" if exported symbols are required.
+ always_export_symbols=$always_export_symbols
+
+@@ -14148,6 +14845,9 @@
+ # Commands necessary for linking programs (against libraries) with templates.
+ prelink_cmds=$lt_prelink_cmds
+
++# Commands necessary for finishing linking programs.
++postlink_cmds=$lt_postlink_cmds
++
+ # Specify filename containing input files.
+ file_list_spec=$lt_file_list_spec
+
+@@ -14180,210 +14880,169 @@
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- case $xsi_shell in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_dirname_and_basename file append nondir_replacement
+-# perform func_basename and func_dirname in a single function
+-# call:
+-# dirname: Compute the dirname of FILE. If nonempty,
+-# add APPEND to the result, otherwise set result
+-# to NONDIR_REPLACEMENT.
+-# value returned in "$func_dirname_result"
+-# basename: Compute filename of FILE.
+-# value retuned in "$func_basename_result"
+-# Implementation must be kept synchronized with func_dirname
+-# and func_basename. For efficiency, we do not delegate to
+-# those functions but instead duplicate the functionality here.
+-func_dirname_and_basename ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-func_stripname ()
+-{
+- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+- # positional parameters, so assign one to ordinary parameter first.
+- func_stripname_result=${3}
+- func_stripname_result=${func_stripname_result#"${1}"}
+- func_stripname_result=${func_stripname_result%"${2}"}
+-}
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=${1%%=*}
+- func_opt_split_arg=${1#*=}
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- case ${1} in
+- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+- *) func_lo2o_result=${1} ;;
+- esac
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=${1%.*}.lo
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=$(( $* ))
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=${#1}
+-}
+-
+-_LT_EOF
+- ;;
+- *) # Bourne compatible functions.
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- # Extract subdirectory from the argument.
+- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+- if test "X$func_dirname_result" = "X${1}"; then
+- func_dirname_result="${3}"
+- else
+- func_dirname_result="$func_dirname_result${2}"
+- fi
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+-}
+-
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-# func_strip_suffix prefix name
+-func_stripname ()
+-{
+- case ${2} in
+- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+- esac
+-}
+-
+-# sed scripts:
+-my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+-my_sed_long_arg='1s/^-[^=]*=//'
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=`expr "$@"`
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+-}
+-
+-_LT_EOF
+-esac
+-
+-case $lt_shell_append in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1+=\$2"
+-}
+-_LT_EOF
+- ;;
+- *)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1=\$$1\$2"
+-}
+-
+-_LT_EOF
+- ;;
+- esac
++ sed '$q' "$ltmain" >> "$cfgfile" \
++ || (rm -f "$cfgfile"; exit 1)
+
++ if test x"$xsi_shell" = xyes; then
++ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
++func_dirname ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_basename ()$/,/^} # func_basename /c\
++func_basename ()\
++{\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
++func_dirname_and_basename ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
++func_stripname ()\
++{\
++\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
++\ # positional parameters, so assign one to ordinary parameter first.\
++\ func_stripname_result=${3}\
++\ func_stripname_result=${func_stripname_result#"${1}"}\
++\ func_stripname_result=${func_stripname_result%"${2}"}\
++} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
++func_split_long_opt ()\
++{\
++\ func_split_long_opt_name=${1%%=*}\
++\ func_split_long_opt_arg=${1#*=}\
++} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
++func_split_short_opt ()\
++{\
++\ func_split_short_opt_arg=${1#??}\
++\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
++} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
++func_lo2o ()\
++{\
++\ case ${1} in\
++\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
++\ *) func_lo2o_result=${1} ;;\
++\ esac\
++} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_xform ()$/,/^} # func_xform /c\
++func_xform ()\
++{\
++ func_xform_result=${1%.*}.lo\
++} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_arith ()$/,/^} # func_arith /c\
++func_arith ()\
++{\
++ func_arith_result=$(( $* ))\
++} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_len ()$/,/^} # func_len /c\
++func_len ()\
++{\
++ func_len_result=${#1}\
++} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++fi
++
++if test x"$lt_shell_append" = xyes; then
++ sed -e '/^func_append ()$/,/^} # func_append /c\
++func_append ()\
++{\
++ eval "${1}+=\\${2}"\
++} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
++func_append_quoted ()\
++{\
++\ func_quote_for_eval "${2}"\
++\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
++} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ # Save a `func_append' function call where possible by direct use of '+='
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++else
++ # Save a `func_append' function call even when '+=' is not available
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++fi
++
++if test x"$_lt_function_replace_fail" = x":"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
++$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
++fi
+
+- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+
+- mv -f "$cfgfile" "$ofile" ||
++ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+Index: binutils-2.21/ld/configure
+===================================================================
+--- binutils-2.21.orig/ld/configure 2010-11-23 05:50:32.000000000 -0800
++++ binutils-2.21/ld/configure 2011-01-07 10:49:16.436101000 -0800
+@@ -643,8 +643,11 @@
+ LIPO
+ NMEDIT
+ DSYMUTIL
++MANIFEST_TOOL
+ RANLIB
++ac_ct_AR
+ AR
++DLLTOOL
+ OBJDUMP
+ LN_S
+ NM
+@@ -776,6 +779,7 @@
+ with_pic
+ enable_fast_install
+ with_gnu_ld
++with_libtool_sysroot
+ enable_libtool_lock
+ enable_nls
+ '
+@@ -1436,6 +1440,8 @@
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
++ (or the compiler's sysroot if not specified).
+
+ Some influential environment variables:
+ CC C compiler command
+@@ -5562,8 +5568,8 @@
+
+
+
+-macro_version='2.2.7a'
+-macro_revision='1.3134'
++macro_version='2.4'
++macro_revision='1.3293'
+
+
+
+@@ -5603,7 +5609,7 @@
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+ $as_echo_n "checking how to print strings... " >&6; }
+ # Test print first, because it will be a builtin if present.
+-if test "X`print -r -- -n 2>/dev/null`" = X-n && \
++if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='print -r --'
+ elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+@@ -6289,8 +6295,8 @@
+ # Try some XSI features
+ xsi_shell=no
+ ( _lt_dummy="a/b/c"
+- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+- = c,a/b,, \
++ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
++ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+@@ -6339,6 +6345,80 @@
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
++$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
++if test "${lt_cv_to_host_file_cmd+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
++ ;;
++ esac
++ ;;
++ *-*-cygwin* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
++ ;;
++ *-*-cygwin* )
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++ * ) # otherwise, assume *nix
++ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
++ ;;
++ esac
++ ;;
++ * ) # unhandled hosts (and "normal" native builds)
++ lt_cv_to_host_file_cmd=func_convert_file_noop
++ ;;
++esac
++
++fi
++
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
++$as_echo "$lt_cv_to_host_file_cmd" >&6; }
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
++$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
++if test "${lt_cv_to_tool_file_cmd+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ #assume ordinary cross tools, or native build.
++lt_cv_to_tool_file_cmd=func_convert_file_noop
++case $host in
++ *-*-mingw* )
++ case $build in
++ *-*-mingw* ) # actually msys
++ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
++ ;;
++ esac
++ ;;
++esac
++
++fi
++
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
++$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
++
++
++
++
++
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+ $as_echo_n "checking for $LD option to reload object files... " >&6; }
+ if test "${lt_cv_ld_reload_flag+set}" = set; then :
+@@ -6355,6 +6435,11 @@
+ esac
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ case $host_os in
++ cygwin* | mingw* | pw32* | cegcc*)
++ if test "$GCC" != yes; then
++ reload_cmds=false
++ fi
++ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+@@ -6523,7 +6608,8 @@
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
++ # Keep this pattern in sync with the one in func_win32_libid.
++ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+@@ -6677,6 +6763,21 @@
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+ $as_echo "$lt_cv_deplibs_check_method" >&6; }
++
++file_magic_glob=
++want_nocaseglob=no
++if test "$build" = "$host"; then
++ case $host_os in
++ mingw* | pw32*)
++ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
++ want_nocaseglob=yes
++ else
++ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
++ fi
++ ;;
++ esac
++fi
++
+ file_magic_cmd=$lt_cv_file_magic_cmd
+ deplibs_check_method=$lt_cv_deplibs_check_method
+ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -6692,9 +6793,162 @@
+
+
+
++
++
++
++
++
++
++
++
++
++
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
++set dummy ${ac_tool_prefix}dlltool; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_DLLTOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$DLLTOOL"; then
++ ac_cv_prog_DLLTOOL="$DLLTOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++DLLTOOL=$ac_cv_prog_DLLTOOL
++if test -n "$DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
++$as_echo "$DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_DLLTOOL"; then
++ ac_ct_DLLTOOL=$DLLTOOL
++ # Extract the first word of "dlltool", so it can be a program name with args.
++set dummy dlltool; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_DLLTOOL"; then
++ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
++if test -n "$ac_ct_DLLTOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
++$as_echo "$ac_ct_DLLTOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_DLLTOOL" = x; then
++ DLLTOOL="false"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ DLLTOOL=$ac_ct_DLLTOOL
++ fi
++else
++ DLLTOOL="$ac_cv_prog_DLLTOOL"
++fi
++
++test -z "$DLLTOOL" && DLLTOOL=dlltool
++
++
++
++
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
++$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
++if test "${lt_cv_sharedlib_from_linklib_cmd+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_sharedlib_from_linklib_cmd='unknown'
++
++case $host_os in
++cygwin* | mingw* | pw32* | cegcc*)
++ # two different shell functions defined in ltmain.sh
++ # decide which to use based on capabilities of $DLLTOOL
++ case `$DLLTOOL --help 2>&1` in
++ *--identify-strict*)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
++ ;;
++ *)
++ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
++ ;;
++ esac
++ ;;
++*)
++ # fallback: assume linklib IS sharedlib
++ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
++ ;;
++esac
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
++$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
++sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
++test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
++
++
++
++
++
++
++
+ if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}ar; ac_word=$2
++ for ac_prog in ar
++ do
++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
++set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_prog_AR+set}" = set; then :
+@@ -6710,7 +6964,7 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_prog_AR="${ac_tool_prefix}ar"
++ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6730,11 +6984,15 @@
+ fi
+
+
++ test -n "$AR" && break
++ done
+ fi
+-if test -z "$ac_cv_prog_AR"; then
++if test -z "$AR"; then
+ ac_ct_AR=$AR
+- # Extract the first word of "ar", so it can be a program name with args.
+-set dummy ar; ac_word=$2
++ for ac_prog in ar
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
+@@ -6750,7 +7008,7 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_prog_ac_ct_AR="ar"
++ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -6769,6 +7027,10 @@
+ $as_echo "no" >&6; }
+ fi
+
++
++ test -n "$ac_ct_AR" && break
++done
++
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+@@ -6780,16 +7042,72 @@
+ esac
+ AR=$ac_ct_AR
+ fi
+-else
+- AR="$ac_cv_prog_AR"
+ fi
+
+-test -z "$AR" && AR=ar
+-test -z "$AR_FLAGS" && AR_FLAGS=cru
++: ${AR=ar}
++: ${AR_FLAGS=cru}
++
++
++
++
++
++
++
++
++
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
++$as_echo_n "checking for archiver @FILE support... " >&6; }
++if test "${lt_cv_ar_at_file+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_ar_at_file=no
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
+
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ echo conftest.$ac_objext > conftest.lst
++ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -eq 0; then
++ # Ensure the archiver fails upon bogus file names.
++ rm -f conftest.$ac_objext libconftest.a
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
++ (eval $lt_ar_try) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ if test "$ac_status" -ne 0; then
++ lt_cv_ar_at_file=@
++ fi
++ fi
++ rm -f conftest.* libconftest.a
+
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
++$as_echo "$lt_cv_ar_at_file" >&6; }
+
++if test "x$lt_cv_ar_at_file" = xno; then
++ archiver_list_spec=
++else
++ archiver_list_spec=$lt_cv_ar_at_file
++fi
+
+
+
+@@ -7131,8 +7449,8 @@
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+ # Transform an extracted symbol line into symbol name and symbol address
+-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+ # Handle CRLF in mingw tool chain
+ opt_cr=
+@@ -7168,6 +7486,7 @@
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
++ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+@@ -7209,6 +7528,18 @@
+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<_LT_EOF > conftest.$ac_ext
++/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
++#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
++/* DATA imports from DLLs on WIN32 con't be const, because runtime
++ relocations are performed -- see ld's documentation on pseudo-relocs. */
++# define LT_DLSYM_CONST
++#elif defined(__osf__)
++/* This system does not cope well with relocations in const data. */
++# define LT_DLSYM_CONST
++#else
++# define LT_DLSYM_CONST const
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -7220,7 +7551,7 @@
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+ /* The mapping between symbol names and symbols. */
+-const struct {
++LT_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+ }
+@@ -7246,8 +7577,8 @@
+ _LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+- lt_save_LIBS="$LIBS"
+- lt_save_CFLAGS="$CFLAGS"
++ lt_globsym_save_LIBS=$LIBS
++ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+@@ -7257,8 +7588,8 @@
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+- LIBS="$lt_save_LIBS"
+- CFLAGS="$lt_save_CFLAGS"
++ LIBS=$lt_globsym_save_LIBS
++ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+@@ -7295,6 +7626,19 @@
+ $as_echo "ok" >&6; }
+ fi
+
++# Response file support.
++if test "$lt_cv_nm_interface" = "MS dumpbin"; then
++ nm_file_list_spec='@'
++elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
++ nm_file_list_spec='@'
++fi
++
++
++
++
++
++
++
+
+
+
+@@ -7315,6 +7659,42 @@
+
+
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
++$as_echo_n "checking for sysroot... " >&6; }
++
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
++else
++ with_libtool_sysroot=no
++fi
++
++
++lt_sysroot=
++case ${with_libtool_sysroot} in #(
++ yes)
++ if test "$GCC" = yes; then
++ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
++ fi
++ ;; #(
++ /*)
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
++ ;; #(
++ no|'')
++ ;; #(
++ *)
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
++ as_fn_error "The sysroot must be an absolute path." "$LINENO" 5
++ ;;
++esac
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
++$as_echo "${lt_sysroot:-no}" >&6; }
++
++
++
++
+
+ # Check whether --enable-libtool-lock was given.
+ if test "${enable_libtool_lock+set}" = set; then :
+@@ -7509,6 +7889,123 @@
+
+ need_locks="$enable_libtool_lock"
+
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
++set dummy ${ac_tool_prefix}mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_MANIFEST_TOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$MANIFEST_TOOL"; then
++ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
++if test -n "$MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
++$as_echo "$MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
++ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
++ # Extract the first word of "mt", so it can be a program name with args.
++set dummy mt; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_prog_ac_ct_MANIFEST_TOOL+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$ac_ct_MANIFEST_TOOL"; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
++if test -n "$ac_ct_MANIFEST_TOOL"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
++$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++ if test "x$ac_ct_MANIFEST_TOOL" = x; then
++ MANIFEST_TOOL=":"
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
++ fi
++else
++ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
++fi
++
++test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
++$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
++if test "${lt_cv_path_mainfest_tool+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_path_mainfest_tool=no
++ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
++ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
++ cat conftest.err >&5
++ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
++ lt_cv_path_mainfest_tool=yes
++ fi
++ rm -f conftest*
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
++$as_echo "$lt_cv_path_mainfest_tool" >&6; }
++if test "x$lt_cv_path_mainfest_tool" != xyes; then
++ MANIFEST_TOOL=:
++fi
++
++
++
++
++
+
+ case $host_os in
+ rhapsody* | darwin*)
+@@ -8072,6 +8569,8 @@
+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+ echo "$AR cru libconftest.a conftest.o" >&5
+ $AR cru libconftest.a conftest.o 2>&5
++ echo "$RANLIB libconftest.a" >&5
++ $RANLIB libconftest.a 2>&5
+ cat > conftest.c << _LT_EOF
+ int main() { return 0;}
+ _LT_EOF
+@@ -8267,7 +8766,8 @@
+ LIBTOOL_DEPS="$ltmain"
+
+ # Always use our own libtool.
+-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
++LIBTOOL='$(SHELL) $(top_builddir)'
++LIBTOOL="$LIBTOOL/${host_alias}-libtool"
+
+
+
+@@ -8356,7 +8856,7 @@
+ esac
+
+ # Global variables:
+-ofile=libtool
++ofile=${host_alias}-libtool
+ can_build_shared=yes
+
+ # All known linkers require a `.a' archive for static linking (except MSVC,
+@@ -8654,8 +9154,6 @@
+ lt_prog_compiler_pic=
+ lt_prog_compiler_static=
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+@@ -8820,6 +9318,12 @@
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
++ nagfor*)
++ # NAG Fortran compiler
++ lt_prog_compiler_wl='-Wl,-Wl,,'
++ lt_prog_compiler_pic='-PIC'
++ lt_prog_compiler_static='-Bstatic'
++ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+@@ -8882,7 +9386,7 @@
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ case $cc_basename in
+- f77* | f90* | f95*)
++ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+@@ -8939,13 +9443,17 @@
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+ esac
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+-$as_echo "$lt_prog_compiler_pic" >&6; }
+-
+-
+-
+-
+
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
++$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
++if test "${lt_cv_prog_compiler_pic+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
++$as_echo "$lt_cv_prog_compiler_pic" >&6; }
++lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+ #
+ # Check to make sure the PIC flag actually works.
+@@ -9006,6 +9514,11 @@
+
+
+
++
++
++
++
++
+ #
+ # Check to make sure the static flag actually works.
+ #
+@@ -9356,7 +9869,8 @@
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
++ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+@@ -9404,7 +9918,7 @@
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+- tmp_addflag=
++ tmp_addflag=' $pic_flag'
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+@@ -9455,12 +9969,12 @@
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
++ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
++ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+@@ -9474,8 +9988,8 @@
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+@@ -9493,8 +10007,8 @@
+
+ _LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9540,8 +10054,8 @@
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+@@ -9671,7 +10185,13 @@
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if test "${lt_cv_aix_libpath_+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9684,22 +10204,29 @@
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+@@ -9711,7 +10238,13 @@
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ if test "${lt_cv_aix_libpath+set}" = set; then
++ aix_libpath=$lt_cv_aix_libpath
++else
++ if test "${lt_cv_aix_libpath_+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+ int
+@@ -9724,22 +10257,29 @@
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+
+-lt_aix_libpath_sed='
+- /Import File Strings/,/^$/ {
+- /^0/ {
+- s/^0 *\(.*\)$/\1/
+- p
+- }
+- }'
+-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-# Check for a 64-bit object if we didn't find anything.
+-if test -z "$aix_libpath"; then
+- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+-fi
++ lt_aix_libpath_sed='
++ /Import File Strings/,/^$/ {
++ /^0/ {
++ s/^0 *\([^ ]*\) *$/\1/
++ p
++ }
++ }'
++ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ # Check for a 64-bit object if we didn't find anything.
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
++ fi
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
++ if test -z "$lt_cv_aix_libpath_"; then
++ lt_cv_aix_libpath_="/usr/lib:/lib"
++ fi
++
++fi
++
++ aix_libpath=$lt_cv_aix_libpath_
++fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+@@ -9784,20 +10324,63 @@
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+- hardcode_libdir_flag_spec=' '
+- allow_undefined_flag=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # Tell ltmain to make .dll files, not .so files.
+- shrext_cmds=".dll"
+- # FIXME: Setting linknames here is a bad hack.
+- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- old_archive_from_new_cmds='true'
+- # FIXME: Should let the user specify the lib program.
+- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+- fix_srcfile_path='`cygpath -w "$srcfile"`'
+- enable_shared_with_static_runtimes=yes
++ case $cc_basename in
++ cl*)
++ # Native MSVC
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ always_export_symbols=yes
++ file_list_spec='@'
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
++ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
++ else
++ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
++ fi~
++ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++ linknames='
++ # The linker will not automatically build a static lib if we build a DLL.
++ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
++ enable_shared_with_static_runtimes=yes
++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
++ # Don't use ranlib
++ old_postinstall_cmds='chmod 644 $oldlib'
++ postlink_cmds='lt_outputfile="@OUTPUT@"~
++ lt_tool_outputfile="@TOOL_OUTPUT@"~
++ case $lt_outputfile in
++ *.exe|*.EXE) ;;
++ *)
++ lt_outputfile="$lt_outputfile.exe"
++ lt_tool_outputfile="$lt_tool_outputfile.exe"
++ ;;
++ esac~
++ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
++ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
++ $RM "$lt_outputfile.manifest";
++ fi'
++ ;;
++ *)
++ # Assume MSVC wrapper
++ hardcode_libdir_flag_spec=' '
++ allow_undefined_flag=unsupported
++ # Tell ltmain to make .lib files, not .a files.
++ libext=lib
++ # Tell ltmain to make .dll files, not .so files.
++ shrext_cmds=".dll"
++ # FIXME: Setting linknames here is a bad hack.
++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
++ # The linker will automatically build a .lib file if we build a DLL.
++ old_archive_from_new_cmds='true'
++ # FIXME: Should let the user specify the lib program.
++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
++ enable_shared_with_static_runtimes=yes
++ ;;
++ esac
+ ;;
+
+ darwin* | rhapsody*)
+@@ -9862,7 +10445,7 @@
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+@@ -9870,7 +10453,7 @@
+
+ hpux9*)
+ if test "$GCC" = yes; then
+- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
++ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+@@ -9886,7 +10469,7 @@
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+@@ -9910,10 +10493,10 @@
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+@@ -9992,23 +10575,36 @@
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+- save_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ # This should be the same for all languages, so no per-tag cache variable.
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
++$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
++if test "${lt_cv_irix_exported_symbol+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-int foo(void) {}
++int foo (void) { return 0; }
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+-
++ lt_cv_irix_exported_symbol=yes
++else
++ lt_cv_irix_exported_symbol=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+- LDFLAGS="$save_LDFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
++$as_echo "$lt_cv_irix_exported_symbol" >&6; }
++ if test "$lt_cv_irix_exported_symbol" = yes; then
++ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
++ fi
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+@@ -10093,7 +10689,7 @@
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
++ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+@@ -10112,9 +10708,9 @@
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
++ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
++ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+@@ -10690,8 +11286,9 @@
+ need_version=no
+ need_lib_prefix=no
+
+- case $GCC,$host_os in
+- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
++ case $GCC,$cc_basename in
++ yes,*)
++ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+@@ -10724,13 +11321,71 @@
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
++ dynamic_linker='Win32 ld.exe'
++ ;;
++
++ *,cl*)
++ # Native MSVC
++ libname_spec='$name'
++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='${libname}.dll.lib'
++
++ case $build_os in
++ mingw*)
++ sys_lib_search_path_spec=
++ lt_save_ifs=$IFS
++ IFS=';'
++ for lt_path in $LIB
++ do
++ IFS=$lt_save_ifs
++ # Let DOS variable expansion print the short 8.3 style file name.
++ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
++ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
++ done
++ IFS=$lt_save_ifs
++ # Convert to MSYS style.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
++ ;;
++ cygwin*)
++ # Convert to unix form, then to dos form, then back to unix form
++ # but this time dos style (no spaces!) so that the unix form looks
++ # like /cygdrive/c/PROGRA~1:/cygdr...
++ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
++ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
++ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ ;;
++ *)
++ sys_lib_search_path_spec="$LIB"
++ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
++ # It is most probably a Windows format PATH.
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
++ else
++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
++ fi
++ # FIXME: find the short name or the path components, as spaces are
++ # common. (e.g. "Program Files" -> "PROGRA~1")
++ ;;
++ esac
++
++ # DLL is installed to $(libdir)/../bin by postinstall_cmds
++ postinstall_cmds='base_file=`basename \${file}`~
++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
++ dldir=$destdir/`dirname \$dlpath`~
++ test -d \$dldir || mkdir -p \$dldir~
++ $install_prog $dir/$dlname \$dldir/$dlname'
++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
++ dlpath=$dir/\$dldll~
++ $RM \$dlpath'
++ shlibpath_overrides_runpath=yes
++ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
++ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+- dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+@@ -10826,7 +11481,7 @@
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
++ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+ hardcode_into_libs=yes
+ ;;
+
+@@ -11622,7 +12277,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11625 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11666,10 +12321,10 @@
+ /* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -11728,7 +12383,7 @@
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11731 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11772,10 +12427,10 @@
+ /* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+-void fnord () __attribute__((visibility("default")));
++int fnord () __attribute__((visibility("default")));
+ #endif
+
+-void fnord () { int i=42; }
++int fnord () { return 42; }
+ int main ()
+ {
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+@@ -14063,13 +14718,20 @@
+ lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+ lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+ lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
++lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
++lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+ reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+ reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+ OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+ deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+ file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
++file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
++want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
++DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
++sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+ AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+ AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
++archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+ STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+ RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+ old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+@@ -14084,14 +14746,17 @@
+ lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+ lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
++nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
++lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+ objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+ MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
++lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+ lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+ lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+ need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
++MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+ DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+ NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+ LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+@@ -14124,12 +14789,12 @@
+ hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+ inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+ link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+-fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
+ always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+ export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+ exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+ include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+ prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
++postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+ file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+ variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+ need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+@@ -14184,8 +14849,13 @@
+ OBJDUMP \
+ deplibs_check_method \
+ file_magic_cmd \
++file_magic_glob \
++want_nocaseglob \
++DLLTOOL \
++sharedlib_from_linklib_cmd \
+ AR \
+ AR_FLAGS \
++archiver_list_spec \
+ STRIP \
+ RANLIB \
+ CC \
+@@ -14195,12 +14865,14 @@
+ lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
++nm_file_list_spec \
+ lt_prog_compiler_no_builtin_flag \
+-lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
++lt_prog_compiler_wl \
+ lt_prog_compiler_static \
+ lt_cv_prog_compiler_c_o \
+ need_locks \
++MANIFEST_TOOL \
+ DSYMUTIL \
+ NMEDIT \
+ LIPO \
+@@ -14216,7 +14888,6 @@
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+-fix_srcfile_path \
+ exclude_expsyms \
+ include_expsyms \
+ file_list_spec \
+@@ -14252,6 +14923,7 @@
+ module_expsym_cmds \
+ export_symbols_cmds \
+ prelink_cmds \
++postlink_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ finish_cmds \
+@@ -15047,7 +15719,8 @@
+ # NOTE: Changes made to this file will be lost: look at ltmain.sh.
+ #
+ # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+-# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
++# Inc.
+ # Written by Gordon Matzigkeit, 1996
+ #
+ # This file is part of GNU Libtool.
+@@ -15150,19 +15823,42 @@
+ # turn newlines into spaces.
+ NL2SP=$lt_lt_NL2SP
+
++# convert \$build file names to \$host format.
++to_host_file_cmd=$lt_cv_to_host_file_cmd
++
++# convert \$build files to toolchain format.
++to_tool_file_cmd=$lt_cv_to_tool_file_cmd
++
+ # An object symbol dumper.
+ OBJDUMP=$lt_OBJDUMP
+
+ # Method to check whether dependent libraries are shared objects.
+ deplibs_check_method=$lt_deplibs_check_method
+
+-# Command to use when deplibs_check_method == "file_magic".
++# Command to use when deplibs_check_method = "file_magic".
+ file_magic_cmd=$lt_file_magic_cmd
+
++# How to find potential files when deplibs_check_method = "file_magic".
++file_magic_glob=$lt_file_magic_glob
++
++# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
++want_nocaseglob=$lt_want_nocaseglob
++
++# DLL creation program.
++DLLTOOL=$lt_DLLTOOL
++
++# Command to associate shared and link libraries.
++sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
++
+ # The archiver.
+ AR=$lt_AR
++
++# Flags to create an archive.
+ AR_FLAGS=$lt_AR_FLAGS
+
++# How to feed a file listing to the archiver.
++archiver_list_spec=$lt_archiver_list_spec
++
+ # A symbol stripping program.
+ STRIP=$lt_STRIP
+
+@@ -15192,6 +15888,12 @@
+ # Transform the output of nm in a C name address pair when lib prefix is needed.
+ global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
++# Specify filename containing input files for \$NM.
++nm_file_list_spec=$lt_nm_file_list_spec
++
++# The root where to search for dependent libraries,and in which our libraries should be installed.
++lt_sysroot=$lt_sysroot
++
+ # The name of the directory that contains temporary libtool files.
+ objdir=$objdir
+
+@@ -15201,6 +15903,9 @@
+ # Must we lock files when doing compilation?
+ need_locks=$lt_need_locks
+
++# Manifest tool.
++MANIFEST_TOOL=$lt_MANIFEST_TOOL
++
+ # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+ DSYMUTIL=$lt_DSYMUTIL
+
+@@ -15315,12 +16020,12 @@
+ # Compiler flag to turn off builtin functions.
+ no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+-# How to pass a linker flag through the compiler.
+-wl=$lt_lt_prog_compiler_wl
+-
+ # Additional compiler flags for building library objects.
+ pic_flag=$lt_lt_prog_compiler_pic
+
++# How to pass a linker flag through the compiler.
++wl=$lt_lt_prog_compiler_wl
++
+ # Compiler flag to prevent dynamic linking.
+ link_static_flag=$lt_lt_prog_compiler_static
+
+@@ -15407,9 +16112,6 @@
+ # Whether libtool must link a program against all its dependency libraries.
+ link_all_deplibs=$link_all_deplibs
+
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path=$lt_fix_srcfile_path
+-
+ # Set to "yes" if exported symbols are required.
+ always_export_symbols=$always_export_symbols
+
+@@ -15425,6 +16127,9 @@
+ # Commands necessary for linking programs (against libraries) with templates.
+ prelink_cmds=$lt_prelink_cmds
+
++# Commands necessary for finishing linking programs.
++postlink_cmds=$lt_postlink_cmds
++
+ # Specify filename containing input files.
+ file_list_spec=$lt_file_list_spec
+
+@@ -15457,210 +16162,169 @@
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+-
+- case $xsi_shell in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_dirname_and_basename file append nondir_replacement
+-# perform func_basename and func_dirname in a single function
+-# call:
+-# dirname: Compute the dirname of FILE. If nonempty,
+-# add APPEND to the result, otherwise set result
+-# to NONDIR_REPLACEMENT.
+-# value returned in "$func_dirname_result"
+-# basename: Compute filename of FILE.
+-# value retuned in "$func_basename_result"
+-# Implementation must be kept synchronized with func_dirname
+-# and func_basename. For efficiency, we do not delegate to
+-# those functions but instead duplicate the functionality here.
+-func_dirname_and_basename ()
+-{
+- case ${1} in
+- */*) func_dirname_result="${1%/*}${2}" ;;
+- * ) func_dirname_result="${3}" ;;
+- esac
+- func_basename_result="${1##*/}"
+-}
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-func_stripname ()
+-{
+- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+- # positional parameters, so assign one to ordinary parameter first.
+- func_stripname_result=${3}
+- func_stripname_result=${func_stripname_result#"${1}"}
+- func_stripname_result=${func_stripname_result%"${2}"}
+-}
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=${1%%=*}
+- func_opt_split_arg=${1#*=}
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- case ${1} in
+- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+- *) func_lo2o_result=${1} ;;
+- esac
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=${1%.*}.lo
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=$(( $* ))
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=${#1}
+-}
+-
+-_LT_EOF
+- ;;
+- *) # Bourne compatible functions.
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_dirname file append nondir_replacement
+-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+-# otherwise set result to NONDIR_REPLACEMENT.
+-func_dirname ()
+-{
+- # Extract subdirectory from the argument.
+- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+- if test "X$func_dirname_result" = "X${1}"; then
+- func_dirname_result="${3}"
+- else
+- func_dirname_result="$func_dirname_result${2}"
+- fi
+-}
+-
+-# func_basename file
+-func_basename ()
+-{
+- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+-}
+-
+-
+-# func_stripname prefix suffix name
+-# strip PREFIX and SUFFIX off of NAME.
+-# PREFIX and SUFFIX must not contain globbing or regex special
+-# characters, hashes, percent signs, but SUFFIX may contain a leading
+-# dot (in which case that matches only a dot).
+-# func_strip_suffix prefix name
+-func_stripname ()
+-{
+- case ${2} in
+- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+- esac
+-}
+-
+-# sed scripts:
+-my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+-my_sed_long_arg='1s/^-[^=]*=//'
+-
+-# func_opt_split
+-func_opt_split ()
+-{
+- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+-}
+-
+-# func_lo2o object
+-func_lo2o ()
+-{
+- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+-}
+-
+-# func_xform libobj-or-source
+-func_xform ()
+-{
+- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+-}
+-
+-# func_arith arithmetic-term...
+-func_arith ()
+-{
+- func_arith_result=`expr "$@"`
+-}
+-
+-# func_len string
+-# STRING may not start with a hyphen.
+-func_len ()
+-{
+- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+-}
+-
+-_LT_EOF
+-esac
+-
+-case $lt_shell_append in
+- yes)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1+=\$2"
+-}
+-_LT_EOF
+- ;;
+- *)
+- cat << \_LT_EOF >> "$cfgfile"
+-
+-# func_append var value
+-# Append VALUE to the end of shell variable VAR.
+-func_append ()
+-{
+- eval "$1=\$$1\$2"
+-}
+-
+-_LT_EOF
+- ;;
+- esac
++ sed '$q' "$ltmain" >> "$cfgfile" \
++ || (rm -f "$cfgfile"; exit 1)
+
++ if test x"$xsi_shell" = xyes; then
++ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
++func_dirname ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_basename ()$/,/^} # func_basename /c\
++func_basename ()\
++{\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
++func_dirname_and_basename ()\
++{\
++\ case ${1} in\
++\ */*) func_dirname_result="${1%/*}${2}" ;;\
++\ * ) func_dirname_result="${3}" ;;\
++\ esac\
++\ func_basename_result="${1##*/}"\
++} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
++func_stripname ()\
++{\
++\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
++\ # positional parameters, so assign one to ordinary parameter first.\
++\ func_stripname_result=${3}\
++\ func_stripname_result=${func_stripname_result#"${1}"}\
++\ func_stripname_result=${func_stripname_result%"${2}"}\
++} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
++func_split_long_opt ()\
++{\
++\ func_split_long_opt_name=${1%%=*}\
++\ func_split_long_opt_arg=${1#*=}\
++} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
++func_split_short_opt ()\
++{\
++\ func_split_short_opt_arg=${1#??}\
++\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
++} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
++func_lo2o ()\
++{\
++\ case ${1} in\
++\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
++\ *) func_lo2o_result=${1} ;;\
++\ esac\
++} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_xform ()$/,/^} # func_xform /c\
++func_xform ()\
++{\
++ func_xform_result=${1%.*}.lo\
++} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_arith ()$/,/^} # func_arith /c\
++func_arith ()\
++{\
++ func_arith_result=$(( $* ))\
++} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_len ()$/,/^} # func_len /c\
++func_len ()\
++{\
++ func_len_result=${#1}\
++} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++fi
++
++if test x"$lt_shell_append" = xyes; then
++ sed -e '/^func_append ()$/,/^} # func_append /c\
++func_append ()\
++{\
++ eval "${1}+=\\${2}"\
++} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
++func_append_quoted ()\
++{\
++\ func_quote_for_eval "${2}"\
++\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
++} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++test 0 -eq $? || _lt_function_replace_fail=:
++
++
++ # Save a `func_append' function call where possible by direct use of '+='
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++else
++ # Save a `func_append' function call even when '+=' is not available
++ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
++ && mv -f "$cfgfile.tmp" "$cfgfile" \
++ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
++ test 0 -eq $? || _lt_function_replace_fail=:
++fi
++
++if test x"$_lt_function_replace_fail" = x":"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
++$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
++fi
+
+- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+- || (rm -f "$cfgfile"; exit 1)
+
+- mv -f "$cfgfile" "$ofile" ||
++ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+Index: binutils-2.21/bfd/configure.in
+===================================================================
+--- binutils-2.21.orig/bfd/configure.in 2011-01-07 11:24:12.586101000 -0800
++++ binutils-2.21/bfd/configure.in 2011-01-07 11:24:45.206101000 -0800
+@@ -532,7 +532,7 @@
+ x=`sed -n -e 's/^[ ]*PICFLAG[ ]*=[ ]*//p' < ../libiberty/Makefile | sed -n '$p'`
+ changequote([,])dnl
+ if test -n "$x"; then
+- SHARED_LIBADD="-L`pwd`/../libiberty/pic -liberty"
++ SHARED_LIBADD="`pwd`/../libiberty/pic/libiberty.a"
+ fi
+
+ # More hacks to build DLLs on Windows.
+Index: binutils-2.21/opcodes/configure.in
+===================================================================
+--- binutils-2.21.orig/opcodes/configure.in 2011-01-07 11:24:12.606100958 -0800
++++ binutils-2.21/opcodes/configure.in 2011-01-07 11:25:36.816101002 -0800
+@@ -134,7 +134,7 @@
+ x=`sed -n -e 's/^[ ]*PICFLAG[ ]*=[ ]*//p' < ../libiberty/Makefile | sed -n '$p'`
+ changequote([,])dnl
+ if test -n "$x"; then
+- SHARED_LIBADD="-L`pwd`/../libiberty/pic -liberty"
++ SHARED_LIBADD="`pwd`/../libiberty/pic/libiberty.a"
+ fi
+
+ case "${host}" in
diff --git a/meta/recipes-devtools/binutils/binutils-2.21/libtool-rpath-fix.patch b/meta/recipes-devtools/binutils/binutils-2.21/libtool-rpath-fix.patch
new file mode 100644
index 0000000000..a0058c1a4f
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils-2.21/libtool-rpath-fix.patch
@@ -0,0 +1,36 @@
+Enabling sysroot support in libtool exposed a bug where the final
+library had an RPATH encoded into it which still pointed to the
+sysroot. This works around the issue until it gets sorted out
+upstream.
+
+Fix suggested by Richard Purdie <richard.purdie@linuxfoundation.org>
+Signed-off-by: Scott Garman <scott.a.garman@intel.com>
+
+diff -urN binutils-2.21.orig//ltmain.sh binutils-2.21/ltmain.sh
+--- binutils-2.21.orig//ltmain.sh 2011-01-18 11:50:40.821710085 -0800
++++ binutils-2.21/ltmain.sh 2011-01-18 11:51:38.774952785 -0800
+@@ -8035,9 +8035,11 @@
+ test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
+ for libdir in $rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
++ func_replace_sysroot "$libdir"
++ libdir=$func_replace_sysroot_result
++ func_stripname '=' '' "$libdir"
++ libdir=$func_stripname_result
+ if test -n "$hardcode_libdir_separator"; then
+- func_replace_sysroot "$libdir"
+- libdir=$func_replace_sysroot_result
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+@@ -8770,6 +8772,10 @@
+ hardcode_libdirs=
+ for libdir in $compile_rpath $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
++ func_replace_sysroot "$libdir"
++ libdir=$func_replace_sysroot_result
++ func_stripname '=' '' "$libdir"
++ libdir=$func_stripname_result
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
diff --git a/meta/recipes-devtools/binutils/binutils-cross-canadian.inc b/meta/recipes-devtools/binutils/binutils-cross-canadian.inc
index 2fca81dbeb..95e535a1b7 100644
--- a/meta/recipes-devtools/binutils/binutils-cross-canadian.inc
+++ b/meta/recipes-devtools/binutils/binutils-cross-canadian.inc
@@ -1,16 +1,16 @@
inherit cross-canadian
-
DESCRIPTION = "A GNU collection of cross-canadian binary utilities for ${TARGET_ARCH} target"
PN = "binutils-cross-canadian-${TRANSLATED_TARGET_ARCH}"
BPN = "binutils"
DEPENDS = "flex-native bison-native virtual/${HOST_PREFIX}gcc-crosssdk virtual/libc-nativesdk zlib-nativesdk gettext-nativesdk"
EXTRA_OECONF = "--with-sysroot=${SDKPATH}/sysroots/${TARGET_SYS} \
- --program-prefix=${TARGET_PREFIX}"
+ --program-prefix=${TARGET_PREFIX} \
+ --disable-werror"
do_install () {
- autotools_do_install
+ autotools_do_install
# We're not interested in the libs or headers, these would come from the
# nativesdk or target version of the binutils recipe
diff --git a/meta/recipes-devtools/binutils/binutils-cross-canadian_2.20.1.bb b/meta/recipes-devtools/binutils/binutils-cross-canadian_2.20.1.bb
deleted file mode 100644
index 1621b77e9d..0000000000
--- a/meta/recipes-devtools/binutils/binutils-cross-canadian_2.20.1.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require binutils_${PV}.bb
-require binutils-cross-canadian.inc
-PR = "r6"
diff --git a/meta/recipes-devtools/binutils/binutils-cross-canadian_2.21.bb b/meta/recipes-devtools/binutils/binutils-cross-canadian_2.21.bb
new file mode 100644
index 0000000000..7dad2a620b
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils-cross-canadian_2.21.bb
@@ -0,0 +1,3 @@
+require binutils_${PV}.bb
+require binutils-cross-canadian.inc
+PR = "r0"
diff --git a/meta/recipes-devtools/binutils/binutils-cross.inc b/meta/recipes-devtools/binutils/binutils-cross.inc
index 8c75e4ffe7..4b909720de 100644
--- a/meta/recipes-devtools/binutils/binutils-cross.inc
+++ b/meta/recipes-devtools/binutils/binutils-cross.inc
@@ -2,10 +2,10 @@ inherit cross
PROVIDES = "virtual/${TARGET_PREFIX}binutils"
EXTRA_OECONF = "--with-sysroot=${STAGING_DIR_TARGET} \
- --program-prefix=${TARGET_PREFIX} \
- --disable-install-libbfd \
+ --program-prefix=${TARGET_PREFIX} \
+ --disable-install-libbfd \
--disable-werror \
- --enable-poison-system-directories"
+ --enable-poison-system-directories"
do_install () {
oe_runmake 'DESTDIR=${D}' install
diff --git a/meta/recipes-devtools/binutils/binutils-cross_2.20.1.bb b/meta/recipes-devtools/binutils/binutils-cross_2.20.1.bb
deleted file mode 100644
index 8c7e4bc1a3..0000000000
--- a/meta/recipes-devtools/binutils/binutils-cross_2.20.1.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require binutils_${PV}.bb
-require binutils-cross.inc
-
diff --git a/meta/recipes-devtools/binutils/binutils-cross_2.21.bb b/meta/recipes-devtools/binutils/binutils-cross_2.21.bb
new file mode 100644
index 0000000000..01d99db419
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils-cross_2.21.bb
@@ -0,0 +1,2 @@
+require binutils_${PV}.bb
+require binutils-cross.inc
diff --git a/meta/recipes-devtools/binutils/binutils-crosssdk_2.20.1.bb b/meta/recipes-devtools/binutils/binutils-crosssdk_2.20.1.bb
deleted file mode 100644
index 88627f87be..0000000000
--- a/meta/recipes-devtools/binutils/binutils-crosssdk_2.20.1.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require binutils-cross_${PV}.bb
-
-inherit crosssdk
-
-PROVIDES = "virtual/${TARGET_PREFIX}binutils-crosssdk"
-
-PR = "r4"
-
-do_configure_prepend () {
- sed -i 's#/usr/local/lib /lib /usr/lib#${SDKPATHNATIVE}/lib ${SDKPATHNATIVE}/usr/lib /usr/local/lib /lib /usr/lib#' ${S}/ld/configure.tgt
-}
-
diff --git a/meta/recipes-devtools/binutils/binutils-crosssdk_2.21.bb b/meta/recipes-devtools/binutils/binutils-crosssdk_2.21.bb
new file mode 100644
index 0000000000..0d6efffa2f
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils-crosssdk_2.21.bb
@@ -0,0 +1,12 @@
+require binutils-cross_${PV}.bb
+
+inherit crosssdk
+
+PROVIDES = "virtual/${TARGET_PREFIX}binutils-crosssdk"
+
+PR = "r0"
+
+do_configure_prepend () {
+ sed -i 's#/usr/local/lib /lib /usr/lib#${SDKPATHNATIVE}/lib ${SDKPATHNATIVE}/usr/lib /usr/local/lib /lib /usr/lib#' ${S}/ld/configure.tgt
+}
+
diff --git a/meta/recipes-devtools/binutils/binutils.inc b/meta/recipes-devtools/binutils/binutils.inc
index 8669d7f871..d9e859ef2b 100644
--- a/meta/recipes-devtools/binutils/binutils.inc
+++ b/meta/recipes-devtools/binutils/binutils.inc
@@ -1,9 +1,11 @@
SUMMARY = "A GNU collection of binary utilities"
-DESCRIPTION = "The GNU Binutils are a collection of binary tools. The main ones are ld (GNU Linker), and as \
-(GNU Assembler). This package also includes addition tools such as addr2line (Converts addresses into filenames \
-and line numbers), ar (utility for creating, modifying and extracting archives), nm (list symbols in object \
-files), objcopy (copy and translate object files), objdump (Display object information), and other tools and \
-related libraries."
+DESCRIPTION = "The GNU Binutils are a collection of binary tools. \
+The main ones are ld (GNU Linker), and as (GNU Assembler). This \
+package also includes addition tools such as addr2line (Converts \
+addresses into filenames and line numbers), ar (utility for creating, \
+modifying and extracting archives), nm (list symbols in object \
+files), objcopy (copy and translate object files), objdump (Display \
+object information), and other tools and related libraries."
HOMEPAGE = "http://www.gnu.org/software/binutils/"
BUGTRACKER = "http://sourceware.org/bugzilla/"
SECTION = "devel"
@@ -44,8 +46,8 @@ FILES_${PN}-symlinks = " \
B = "${S}/build.${HOST_SYS}.${TARGET_SYS}"
EXTRA_OECONF = "--program-prefix=${TARGET_PREFIX} \
- --enable-install-libbfd \
- --enable-shared"
+ --enable-install-libbfd \
+ --enable-shared"
EXTRA_OECONF_virtclass-native = "--enable-target=all --enable-64-bit-bfd --enable-install-libbfd"
@@ -73,8 +75,6 @@ export CC_FOR_BUILD = "${BUILD_CC}"
export CPP_FOR_BUILD = "${BUILD_CPP}"
export CFLAGS_FOR_BUILD = "${BUILD_CFLAGS}"
-export CC = "${CCACHE}${HOST_PREFIX}gcc ${HOST_CC_ARCH}"
-
do_configure () {
(cd ${S}; gnu-configize) || die "Failed to run gnu-configize"
oe_runconf
@@ -143,9 +143,7 @@ pkg_postinst_${PN}-symlinks () {
update-alternatives --install ${bindir}/strings strings ${TARGET_SYS}-strings 100
}
-
pkg_prerm_${PN}-symlinks () {
update-alternatives --remove ar ${TARGET_SYS}-ar
update-alternatives --remove strings ${TARGET_SYS}-strings
}
-
diff --git a/meta/recipes-devtools/binutils/binutils_2.20.1.bb b/meta/recipes-devtools/binutils/binutils_2.20.1.bb
deleted file mode 100644
index b7212e7996..0000000000
--- a/meta/recipes-devtools/binutils/binutils_2.20.1.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-require binutils.inc
-
-PR = "r3"
-
-LIC_FILES_CHKSUM="\
- file://src-release;endline=17;md5=4830a9ef968f3b18dd5e9f2c00db2d35\
- file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552\
- file://COPYING.LIB;md5=9f604d8a4f8e74f4f5140845a21b6674\
- file://COPYING3;md5=d32239bcb673463ab874e80d47fae504\
- file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6\
- file://gas/COPYING;md5=d32239bcb673463ab874e80d47fae504\
- file://include/COPYING;md5=59530bdf33659b29e73d4adb9f9f6552\
- file://include/COPYING3;md5=d32239bcb673463ab874e80d47fae504\
- file://libiberty/COPYING.LIB;md5=a916467b91076e631dd8edb7424769c7\
- file://bfd/COPYING;md5=d32239bcb673463ab874e80d47fae504\
- "
-
-SRC_URI = "\
- ${GNU_MIRROR}/binutils/binutils-${PV}.tar.bz2;name=tarball \
- file://binutils-uclibc-100-uclibc-conf.patch \
- file://110-arm-eabi-conf.patch \
- file://binutils-uclibc-300-001_ld_makefile_patch.patch \
- file://binutils-uclibc-300-006_better_file_error.patch \
- file://binutils-uclibc-300-012_check_ldrunpath_length.patch \
- file://binutils-uclibc-gas-needs-libm.patch \
- file://binutils-x86_64_i386_biarch.patch \
- file://binutils-mips-pie.patch \
- file://binutils-libtool.patch \
- file://libiberty_path_fix.patch \
- file://binutils-poison.patch \
- "
-
-SRC_URI[tarball.md5sum] = "9cdfb9d6ec0578c166d3beae5e15c4e5"
-SRC_URI[tarball.sha256sum] = "228b84722d87e88e7fdd36869e590e649ab523a0800a7d53df906498afe6f6f8"
-
-# powerpc patches
-SRC_URI += "\
- file://binutils-2.16.1-e300c2c3.patch \
- "
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/binutils/binutils_2.21.bb b/meta/recipes-devtools/binutils/binutils_2.21.bb
new file mode 100644
index 0000000000..270c720c39
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils_2.21.bb
@@ -0,0 +1,37 @@
+require binutils.inc
+
+PR = "r0"
+
+LIC_FILES_CHKSUM="\
+ file://src-release;endline=17;md5=4830a9ef968f3b18dd5e9f2c00db2d35\
+ file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552\
+ file://COPYING.LIB;md5=9f604d8a4f8e74f4f5140845a21b6674\
+ file://COPYING3;md5=d32239bcb673463ab874e80d47fae504\
+ file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6\
+ file://gas/COPYING;md5=d32239bcb673463ab874e80d47fae504\
+ file://include/COPYING;md5=59530bdf33659b29e73d4adb9f9f6552\
+ file://include/COPYING3;md5=d32239bcb673463ab874e80d47fae504\
+ file://libiberty/COPYING.LIB;md5=a916467b91076e631dd8edb7424769c7\
+ file://bfd/COPYING;md5=d32239bcb673463ab874e80d47fae504\
+ "
+
+SRC_URI = "\
+ ${GNU_MIRROR}/binutils/binutils-${PV}.tar.bz2 \
+ file://binutils-uclibc-100-uclibc-conf.patch \
+ file://110-arm-eabi-conf.patch \
+ file://binutils-uclibc-300-001_ld_makefile_patch.patch \
+ file://binutils-uclibc-300-006_better_file_error.patch \
+ file://binutils-uclibc-300-012_check_ldrunpath_length.patch \
+ file://binutils-uclibc-gas-needs-libm.patch \
+ file://binutils-x86_64_i386_biarch.patch \
+ file://libtool-2.4-update.patch \
+ file://binutils-2.19.1-ld-sysroot.patch \
+ file://libiberty_path_fix.patch \
+ file://binutils-poison.patch \
+ file://libtool-rpath-fix.patch \
+ "
+
+SRC_URI[md5sum] = "c84c5acc9d266f1a7044b51c85a823f5"
+SRC_URI[sha256sum] = "60abec5bf448eb930a5a15acb8712612377dc8bcfb13dfd5131228f70561d0c7"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/binutils/files/better_file_error.patch b/meta/recipes-devtools/binutils/files/better_file_error.patch
deleted file mode 100644
index 38ef52966e..0000000000
--- a/meta/recipes-devtools/binutils/files/better_file_error.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff -urN binutils-2.11.92.0.5/bfd/opncls.c binutils-2.11.92.0.5.new/bfd/opncls.c
---- binutils-2.11.92.0.5/bfd/opncls.c Mon Oct 1 18:25:21 2001
-+++ binutils-2.11.92.0.5.new/bfd/opncls.c Sat Oct 13 11:26:59 2001
-@@ -127,6 +127,13 @@
- {
- bfd *nbfd;
- const bfd_target *target_vec;
-+ struct stat s;
-+
-+ if (stat (filename, &s) == 0)
-+ if (S_ISDIR(s.st_mode)) {
-+ bfd_set_error (bfd_error_file_not_recognized);
-+ return NULL;
-+ }
-
- nbfd = _bfd_new_bfd ();
- if (nbfd == NULL)
diff --git a/meta/recipes-devtools/binutils/files/ld_makefile.patch b/meta/recipes-devtools/binutils/files/ld_makefile.patch
deleted file mode 100644
index c1d2ac1ece..0000000000
--- a/meta/recipes-devtools/binutils/files/ld_makefile.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- binutils-2.11.90.0.19.orig/ld/Makefile.am
-+++ binutils-2.11.90.0.19/ld/Makefile.am
-@@ -19,7 +19,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
-
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
---- binutils-2.11.90.0.19.orig/ld/Makefile.in
-+++ binutils-2.11.90.0.19/ld/Makefile.in
-@@ -123,7 +123,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
-
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
diff --git a/meta/recipes-devtools/binutils/files/objdump_fix.patch b/meta/recipes-devtools/binutils/files/objdump_fix.patch
deleted file mode 100644
index 90ad732c06..0000000000
--- a/meta/recipes-devtools/binutils/files/objdump_fix.patch
+++ /dev/null
@@ -1,134 +0,0 @@
-From binutils-return-38148-listarch-binutils=sources dot redhat dot com at sources dot redhat dot com Tue Feb 22 19:24:15 2005
-Return-Path: <binutils-return-38148-listarch-binutils=sources dot redhat dot com at sources dot redhat dot com>
-Delivered-To: listarch-binutils at sources dot redhat dot com
-Received: (qmail 4446 invoked by alias); 22 Feb 2005 19:24:15 -0000
-Mailing-List: contact binutils-help at sources dot redhat dot com; run by ezmlm
-Precedence: bulk
-List-Subscribe: <mailto:binutils-subscribe at sources dot redhat dot com>
-List-Archive: <http://sources.redhat.com/ml/binutils/>
-List-Post: <mailto:binutils at sources dot redhat dot com>
-List-Help: <mailto:binutils-help at sources dot redhat dot com>, <http://sources dot redhat dot com/ml/#faqs>
-Sender: binutils-owner at sources dot redhat dot com
-Delivered-To: mailing list binutils at sources dot redhat dot com
-Received: (qmail 4401 invoked from network); 22 Feb 2005 19:24:08 -0000
-Received: from unknown (HELO bgo1smout1.broadpark.no) (217.13.4.94)
- by sourceware dot org with SMTP; 22 Feb 2005 19:24:08 -0000
-Received: from bgo1sminn1.broadpark.no ([217.13.4.93])
- by bgo1smout1 dot broadpark dot no
- (Sun Java System Messaging Server 6 dot 1 HotFix 0 dot 05 (built Oct 21 2004))
- with ESMTP id <0ICB007QZUZCC0C0 at bgo1smout1 dot broadpark dot no> for
- binutils at sources dot redhat dot com; Tue, 22 Feb 2005 20:18:48 +0100 (CET)
-Received: from [127.0.0.1] ([80.202.165.9]) by bgo1sminn1.broadpark.no
- (Sun Java System Messaging Server 6 dot 1 HotFix 0 dot 05 (built Oct 21 2004))
- with ESMTP id <0ICB006NCVBVHE21 at bgo1sminn1 dot broadpark dot no> for
- binutils at sources dot redhat dot com; Tue, 22 Feb 2005 20:26:20 +0100 (CET)
-Date: Tue, 22 Feb 2005 20:24:08 +0100
-From: =?ISO-8859-1?Q?Stig_Petter_Olsr=F8d?= <stigpo at users dot sourceforge dot net>
-Subject: [PATCH] objdump relocation fixes for ARM disassembly
-To: binutils at sources dot redhat dot com
-Message-id: <421B86D8.8080604@users.sourceforge.net>
-MIME-version: 1.0
-Content-type: text/plain; charset=ISO-8859-1; format=flowed
-Content-transfer-encoding: 7BIT
-User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206)
-
-Hello,
-
-objdump disassembly did not relocate correctly for the ARM processor. It seems
-that the test for triggering the INSN_HAS_RELOC flag was void (one test killed the other,
-since octets would always be zero) and all relocations would thus fail. I changed the test
-so the flag is set when we are about to disassemble an insn that the current relocation
-entry points to. I also changed objdump_print_addr to use the current relocation entry if
-the insn has such an entry. This causes the symbol printed to be correct for both external
-symbols (from the undefined section) and local symbols.
-
-This has only been tested for the ARM processor, but I don't think it should break other
-DISASSEMBLER_NEEDS_RELOCS processors either.
-
-
-binutils/
-
-2005-02-22 Stig Petter Olsroed <stigpo@users.sourceforge.net>
-
- * objdump.c (disassemble_bytes): Fixed relocation check for
- DISASSEMBLER_NEEDS_RELOCS platforms to properly trigger the
- INSN_HAS_RELOC flag. Set the current relocation entry in
- objdump_disasm_info to allow printing the proper symbol.
- (objdump_print_addr): Use the relocation entry in
- objdump_disasm_info to lookup the correct symbol for
- DISASSEMBLER_NEEDS_RELOCS platforms.
-
---- 1/binutils/objdump.c 2005-02-22 01:50:06.000000000 +0100
-+++ 2/binutils/objdump.c 2005-02-22 14:27:33.066960900 +0100
-@@ -128,6 +128,7 @@
- arelent ** dynrelbuf;
- long dynrelcount;
- disassembler_ftype disassemble_fn;
-+ arelent * reloc;
- };
-
- /* Architecture to disassemble for, or default if NULL. */
-@@ -852,6 +853,8 @@
- {
- struct objdump_disasm_info *aux;
- asymbol *sym;
-+ arelent *q;
-+ int skip_find = 0;
-
- if (sorted_symcount < 1)
- {
-@@ -861,6 +864,22 @@
- }
-
- aux = (struct objdump_disasm_info *) info->application_data;
-+
-+ q = aux->reloc;
-+ if (q != NULL)
-+ {
-+ if (q->sym_ptr_ptr != NULL && *q->sym_ptr_ptr != NULL)
-+ {
-+ /* Adjust the vma to the reloc */
-+ vma += bfd_asymbol_value (*q->sym_ptr_ptr);
-+ if (bfd_is_und_section (bfd_get_section (*q->sym_ptr_ptr)))
-+ {
-+ skip_find = 1;
-+ sym = *q->sym_ptr_ptr;
-+ }
-+ }
-+ }
-+ if (!skip_find)
- sym = find_symbol_for_address (vma, info, NULL);
- objdump_print_addr_with_sym (aux->abfd, aux->sec, sym, vma, info,
- skip_zeroes);
-@@ -1350,16 +1369,22 @@
- info->bytes_per_chunk = 0;
-
- #ifdef DISASSEMBLER_NEEDS_RELOCS
-- /* FIXME: This is wrong. It tests the number of octets
-- in the last instruction, not the current one. */
-- if (*relppp < relppend
-- && (**relppp)->address >= rel_offset + addr_offset
-- && ((**relppp)->address
-- < rel_offset + addr_offset + octets / opb))
-+ /* Check if the current relocation entry applies to the
-+ instruction we are about to disassemble.
-+ This works for ARM at least.
-+ */
-+ if ((*relppp) < relppend
-+ && ((**relppp)->address == rel_offset + addr_offset))
-+ {
- info->flags = INSN_HAS_RELOC;
-+ aux->reloc = **relppp;
-+ }
- else
- #endif
-+ {
- info->flags = 0;
-+ aux->reloc = NULL;
-+ }
-
- octets = (*disassemble_fn) (section->vma + addr_offset, info);
- info->fprintf_func = (fprintf_ftype) fprintf;
-
-
-
diff --git a/meta/recipes-devtools/binutils/files/plt32trunc.patch b/meta/recipes-devtools/binutils/files/plt32trunc.patch
deleted file mode 100644
index 4990f5dbb6..0000000000
--- a/meta/recipes-devtools/binutils/files/plt32trunc.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- binutils/bfd/elf32-arm.h.orig 2004-04-22 22:11:15.000000000 -0400
-+++ binutils/bfd/elf32-arm.h 2004-04-22 22:28:37.000000000 -0400
-@@ -2229,6 +2229,8 @@ elf32_arm_relocate_section (output_bfd,
- case R_ARM_PC24:
- case R_ARM_ABS32:
- case R_ARM_THM_PC22:
-+ case R_ARM_PLT32:
-+
- if (info->shared
- && (
- (!info->symbolic && h->dynindx != -1)
-@@ -2262,11 +2264,6 @@ elf32_arm_relocate_section (output_bfd,
- relocation = 0;
- break;
-
-- case R_ARM_PLT32:
-- if (h->plt.offset != (bfd_vma)-1)
-- relocation = 0;
-- break;
--
- default:
- if (unresolved_reloc)
- _bfd_error_handler
-
diff --git a/meta/recipes-devtools/binutils/files/signed_char_fix.patch b/meta/recipes-devtools/binutils/files/signed_char_fix.patch
deleted file mode 100644
index b3709dabed..0000000000
--- a/meta/recipes-devtools/binutils/files/signed_char_fix.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -urN binutils-2.11.92.0.12.3/opcodes/i386-dis.c binutils-2.11.92.0.12.3.new/opcodes/i386-dis.c
---- binutils-2.11.92.0.12.3/opcodes/i386-dis.c Fri Nov 16 17:05:55 2001
-+++ binutils-2.11.92.0.12.3.new/opcodes/i386-dis.c Mon Dec 31 15:55:04 2001
-@@ -1830,7 +1830,7 @@
- * The function returns the length of this instruction in bytes.
- */
-
--static char intel_syntax;
-+static signed char intel_syntax;
- static char open_char;
- static char close_char;
- static char separator_char;
diff --git a/meta/recipes-devtools/bison/bison_2.4.3.bb b/meta/recipes-devtools/bison/bison_2.4.3.bb
index 03fd463fd8..fa2f15400a 100644
--- a/meta/recipes-devtools/bison/bison_2.4.3.bb
+++ b/meta/recipes-devtools/bison/bison_2.4.3.bb
@@ -10,7 +10,7 @@ SECTION = "devel"
PRIORITY = "optional"
DEPENDS = "gettext bison-native"
-PR = "r0"
+PR = "r1"
BASE_SRC_URI = "${GNU_MIRROR}/bison/bison-${PV}.tar.gz \
file://m4.patch;patch=1"
@@ -27,4 +27,10 @@ SRC_URI_virtclass-native = "${BASE_SRC_URI}"
inherit autotools
acpaths = "-I ${S}/m4"
+do_install_append_virtclass-native() {
+ create_wrapper ${D}/${bindir}/bison \
+ M4=${STAGING_BINDIR_NATIVE}/m4 \
+ BISON_PKGDATADIR=${STAGING_DATADIR_NATIVE}/bison
+}
+#bison-native encodes the staging M4 path
BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/cdrtools/cdrtools-native_2.01.bb b/meta/recipes-devtools/cdrtools/cdrtools-native_2.01.bb
index 2421b23640..769e5e258a 100644
--- a/meta/recipes-devtools/cdrtools/cdrtools-native_2.01.bb
+++ b/meta/recipes-devtools/cdrtools/cdrtools-native_2.01.bb
@@ -7,6 +7,8 @@ DESCRIPTION="A set of tools for CD recording, including cdrecord"
HOMEPAGE="http://cdrecord.berlios.de/old/private/cdrecord.html"
PR = "r2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
SRC_URI="ftp://ftp.berlios.de/pub/cdrecord/cdrtools-${PV}.tar.bz2 \
file://no_usr_src.patch;patch=1 \
file://glibc-conflict-rename.patch;patch=1"
diff --git a/meta/recipes-devtools/desktop-file-utils/desktop-file-utils-native_0.15.bb b/meta/recipes-devtools/desktop-file-utils/desktop-file-utils-native_0.15.bb
index 9603982ea6..3ed7475b7f 100644
--- a/meta/recipes-devtools/desktop-file-utils/desktop-file-utils-native_0.15.bb
+++ b/meta/recipes-devtools/desktop-file-utils/desktop-file-utils-native_0.15.bb
@@ -1,8 +1,9 @@
SECTION = "console/utils"
HOMEPAGE = "http://www.freedesktop.org/wiki/Software/desktop-file-utils"
DESCRIPTION = "command line utilities to work with *.desktop files"
-LICENSE = "GPL"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
DEPENDS = "glib-2.0-native"
SRC_URI = "http://freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-${PV}.tar.gz"
diff --git a/meta/recipes-devtools/distcc/distcc_2.18.3.bb b/meta/recipes-devtools/distcc/distcc_2.18.3.bb
index 1b14a6b119..b6b7b7878a 100644
--- a/meta/recipes-devtools/distcc/distcc_2.18.3.bb
+++ b/meta/recipes-devtools/distcc/distcc_2.18.3.bb
@@ -4,10 +4,10 @@ compilation of C/C++/ObjC code across machines on a network."
SECTION = "devel"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-PR = "r5"
+PR = "r6"
DEPENDS = "avahi gtk+"
-RRECOMMENDS = "avahi-daemon"
+RRECOMMENDS_${PN} = "avahi-daemon"
# Upstream change this patch periodically so store locally
# http://0pointer.de/public/distcc-avahi.patch
diff --git a/meta/recipes-devtools/docbook-dsssl-stylesheets/docbook-dsssl-stylesheets-native_1.79.bb b/meta/recipes-devtools/docbook-dsssl-stylesheets/docbook-dsssl-stylesheets-native_1.79.bb
new file mode 100644
index 0000000000..92de638783
--- /dev/null
+++ b/meta/recipes-devtools/docbook-dsssl-stylesheets/docbook-dsssl-stylesheets-native_1.79.bb
@@ -0,0 +1,52 @@
+SUMMARY = "DSSSL stylesheets used to transform SGML and XML DocBook files"
+DESCRIPTION = "DSSSL stylesheets used to transform SGML and XML DocBook files"
+HOMEPAGE= "http://docbook.sourceforge.net"
+# Simple persmissive
+LICENSE = "DSSSL"
+LIC_FILES_CHKSUM = "file://README;beginline=41;endline=74;md5=875385159b2ee76ecf56136ae7f542d6"
+
+DEPENDS = "sgml-common-native"
+
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/docbook/docbook-dsssl-${PV}.tar.bz2"
+
+SRC_URI[md5sum] = "bc192d23266b9a664ca0aba4a7794c7c"
+SRC_URI[sha256sum] = "2f329e120bee9ef42fbdd74ddd60e05e49786c5a7953a0ff4c680ae6bdf0e2bc"
+
+S = "${WORKDIR}/docbook-dsssl-${PV}"
+
+inherit native
+
+SYSROOT_PREPROCESS_FUNCS += "docbook_dssl_stylesheets_native_mangle"
+
+do_install () {
+ # Refer to http://www.linuxfromscratch.org/blfs/view/stable/pst/docbook-dsssl.html
+ # for details.
+ install -d ${D}${bindir}
+ install -m 0755 bin/collateindex.pl ${D}${bindir}
+
+ install -d ${D}${datadir}/sgml/docbook/dsssl-stylesheets-${PV}
+ install -m 0644 catalog ${D}${datadir}/sgml/docbook/dsssl-stylesheets-${PV}
+ cp -PpRr common ${D}${datadir}/sgml/docbook/dsssl-stylesheets-${PV}
+
+ install-catalog --add ${sysconfdir}/sgml/dsssl-docbook-stylesheets.cat \
+ ${D}${datadir}/sgml/docbook/dsssl-stylesheets-${PV}/catalog
+
+ install-catalog --add ${sysconfdir}/sgml/dsssl-docbook-stylesheets.cat \
+ ${D}${datadir}/sgml/docbook/dsssl-stylesheets-${PV}/common/catalog
+
+ install-catalog --add ${sysconfdir}/sgml/sgml-docbook.cat \
+ ${sysconfdir}/sgml/dsssl-docbook-stylesheets.cat
+
+ # Move these to the image directory so they get staged properly.
+ install -d ${D}${sysconfdir}/sgml
+ cp ${sysconfdir}/sgml/dsssl-docbook-stylesheets.cat ${D}${sysconfdir}/sgml/
+ cp ${sysconfdir}/sgml/sgml-docbook.cat ${D}${sysconfdir}/sgml/
+ cp ${sysconfdir}/sgml/catalog ${D}${sysconfdir}/sgml/
+}
+
+docbook_dssl_stylesheets_native_mangle () {
+ # Remove the image directory path ${D} from the .cat file.
+ sed -i -e "s|${D}||g" ${SYSROOT_DESTDIR}${sysconfdir}/sgml/dsssl-docbook-stylesheets.cat
+}
diff --git a/meta/recipes-devtools/docbook-sgml-dtd/docbook-sgml-dtd-3.1-native.bb b/meta/recipes-devtools/docbook-sgml-dtd/docbook-sgml-dtd-3.1-native.bb
new file mode 100644
index 0000000000..a7df4f9761
--- /dev/null
+++ b/meta/recipes-devtools/docbook-sgml-dtd/docbook-sgml-dtd-3.1-native.bb
@@ -0,0 +1,23 @@
+require docbook-sgml-dtd-native.inc
+
+LICENSE = "OASIS"
+LIC_FILES_CHKSUM = "file://LICENSE-OASIS;md5=c608985dd5f7f215e669e7639a0b1d2e"
+
+DTD_VERSION = "3.1"
+
+PR = "${INC_PR}.0"
+
+# Note: the upstream sources are not distributed with a license file.
+# LICENSE-OASIS is included as a "patch" to workaround this. When
+# upgrading this recipe, please verify whether this is still needed.
+SRC_URI = "http://www.docbook.org/sgml/3.1/docbk31.zip \
+ file://LICENSE-OASIS"
+
+SRC_URI[md5sum] = "432749c0c806dbae81c8bcb70da3b5d3"
+SRC_URI[sha256sum] = "20261d2771b9a052abfa3d8fab1aa62be05791a010281c566f9073bf0e644538"
+
+do_compile() {
+ # Refer to http://www.linuxfromscratch.org/blfs/view/stable/pst/sgml-dtd-3.html
+ # for details.
+ sed -i -e '/ISO 8879/d' -e 's|DTDDECL "-//OASIS//DTD DocBook V3.1//EN"|SGMLDECL|g' docbook.cat
+}
diff --git a/meta/recipes-devtools/docbook-sgml-dtd/docbook-sgml-dtd-4.1-native.bb b/meta/recipes-devtools/docbook-sgml-dtd/docbook-sgml-dtd-4.1-native.bb
new file mode 100644
index 0000000000..88c9396360
--- /dev/null
+++ b/meta/recipes-devtools/docbook-sgml-dtd/docbook-sgml-dtd-4.1-native.bb
@@ -0,0 +1,23 @@
+require docbook-sgml-dtd-native.inc
+
+LICENSE = "OASIS"
+LIC_FILES_CHKSUM = "file://LICENSE-OASIS;md5=c608985dd5f7f215e669e7639a0b1d2e"
+
+DTD_VERSION = "4.1"
+
+PR = "${INC_PR}.0"
+
+# Note: the upstream sources are not distributed with a license file.
+# LICENSE-OASIS is included as a "patch" to workaround this. When
+# upgrading this recipe, please verify whether this is still needed.
+SRC_URI = "http://docbook.org/sgml/4.1/docbk41.zip \
+ file://LICENSE-OASIS"
+
+SRC_URI[md5sum] = "489f6ff2a2173eb1e14216c10533ede2"
+SRC_URI[sha256sum] = "deaafcf0a3677692e7ad4412c0e41c1db3e9da6cdcdb3dd32b2cc1f9c97d6311"
+
+do_compile() {
+ # Refer to http://www.linuxfromscratch.org/blfs/view/stable/pst/sgml-dtd.html
+ # for details.
+ sed -i -e '/ISO 8879/d' -e '/gml/d' docbook.cat
+}
diff --git a/meta/recipes-devtools/docbook-sgml-dtd/docbook-sgml-dtd-4.5-native.bb b/meta/recipes-devtools/docbook-sgml-dtd/docbook-sgml-dtd-4.5-native.bb
new file mode 100644
index 0000000000..6c464f4215
--- /dev/null
+++ b/meta/recipes-devtools/docbook-sgml-dtd/docbook-sgml-dtd-4.5-native.bb
@@ -0,0 +1,17 @@
+require docbook-sgml-dtd-native.inc
+
+LICENSE = "OASIS"
+LIC_FILES_CHKSUM = "file://LICENSE-OASIS;md5=c608985dd5f7f215e669e7639a0b1d2e"
+
+DTD_VERSION = "4.5"
+
+PR = "${INC_PR}.0"
+
+SRC_URI[md5sum] = "07c581f4bbcba6d3aac85360a19f95f7"
+SRC_URI[sha256sum] = "8043e514e80c6c19cb146b5d37937d1305bf3abf9b0097c36df7f70f611cdf43"
+
+do_compile() {
+ # Refer to http://www.linuxfromscratch.org/blfs/view/stable/pst/sgml-dtd.html
+ # for details.
+ sed -i -e '/ISO 8879/d' -e'/gml/d' docbook.cat
+}
diff --git a/meta/recipes-devtools/docbook-sgml-dtd/docbook-sgml-dtd-native.inc b/meta/recipes-devtools/docbook-sgml-dtd/docbook-sgml-dtd-native.inc
new file mode 100644
index 0000000000..162051f62b
--- /dev/null
+++ b/meta/recipes-devtools/docbook-sgml-dtd/docbook-sgml-dtd-native.inc
@@ -0,0 +1,53 @@
+# The DTDs of the various versions have to be installed in parallel and
+# should not replace each other. The installation step is common for
+# all versions and just differs in ${DTD_VERSION} which is set in each
+# version recipe.
+#
+# The DTDs do have some quirks (see LFS documentation).
+SUMMARY = "Document type definitions for verification of SGML data files"
+DESCRIPTION = "Document type definitions for verification of SGML data \
+files against the DocBook rule set"
+HOMEPAGE = "http://www.docbook.org/sgml/"
+
+DEPENDS = "sgml-common-native"
+
+# Note: the upstream sources are not distributed with a license file.
+# LICENSE-OASIS is included as a "patch" to workaround this. When
+# upgrading this recipe, please verify whether this is still needed.
+SRC_URI = "http://www.docbook.org/sgml/${DTD_VERSION}/docbook-${DTD_VERSION}.zip \
+ file://LICENSE-OASIS"
+
+# The .zip file extracts to the current dir
+S = "${WORKDIR}"
+
+INC_PR = "r0"
+
+SYSROOT_PREPROCESS_FUNCS += "docbook_sgml_dtd_native_mangle"
+
+inherit native
+
+do_install () {
+ # Refer to http://www.linuxfromscratch.org/blfs/view/stable/pst/sgml-dtd.html
+ # for details.
+ install -d -m 755 ${D}${datadir}/sgml/docbook/sgml-dtd-${DTD_VERSION}
+ install docbook.cat ${D}${datadir}/sgml/docbook/sgml-dtd-${DTD_VERSION}/catalog
+ cp -PpRr *.dtd *.mod *.dcl ${D}${datadir}/sgml/docbook/sgml-dtd-${DTD_VERSION}
+
+ install-catalog \
+ --add ${sysconfdir}/sgml/sgml-docbook-dtd-${DTD_VERSION}.cat \
+ ${D}${datadir}/sgml/docbook/sgml-dtd-${DTD_VERSION}/catalog
+
+ install-catalog \
+ --add ${sysconfdir}/sgml/sgml-docbook-dtd-${DTD_VERSION}.cat \
+ ${sysconfdir}/sgml/sgml-docbook.cat
+
+ # Copy the generated catalog to the image directory for staging.
+ install -d ${D}${sysconfdir}/sgml
+ cp ${sysconfdir}/sgml/sgml-docbook-dtd-${DTD_VERSION}.cat ${D}${sysconfdir}/sgml/
+}
+
+docbook_sgml_dtd_native_mangle () {
+ # Remove the image directory path ${D} from the .cat files.
+ sed -i -e "s|${D}||g" ${SYSROOT_DESTDIR}${sysconfdir}/sgml/sgml-docbook.cat || true
+ sed -i -e "s|${D}||g" ${SYSROOT_DESTDIR}${sysconfdir}/sgml/sgml-docbook-dtd-${DTD_VERSION}.cat
+}
diff --git a/meta/recipes-devtools/docbook-sgml-dtd/files/LICENSE-OASIS b/meta/recipes-devtools/docbook-sgml-dtd/files/LICENSE-OASIS
new file mode 100644
index 0000000000..6da7f5b8c7
--- /dev/null
+++ b/meta/recipes-devtools/docbook-sgml-dtd/files/LICENSE-OASIS
@@ -0,0 +1,16 @@
+Permission to use, copy, modify and distribute the DocBook XML DTD
+and its accompanying documentation for any purpose and without fee
+is hereby granted in perpetuity, provided that the above copyright
+notice and this paragraph appear in all copies. The copyright
+holders make no representation about the suitability of the DTD for
+any purpose. It is provided "as is" without expressed or implied
+warranty.
+
+If you modify the DocBook DTD in any way, except for declaring and
+referencing additional sets of general entities and declaring
+additional notations, label your DTD as a variant of DocBook. See
+the maintenance documentation for more information.
+
+Please direct all questions, bug reports, or suggestions for
+changes to the docbook@lists.oasis-open.org mailing list. For more
+information, see http://www.oasis-open.org/docbook/.
diff --git a/meta/recipes-devtools/dpkg/dpkg.inc b/meta/recipes-devtools/dpkg/dpkg.inc
index 59da5dc9fa..6a04997776 100644
--- a/meta/recipes-devtools/dpkg/dpkg.inc
+++ b/meta/recipes-devtools/dpkg/dpkg.inc
@@ -5,8 +5,8 @@ SECTION = "base"
SRC_URI = "${DEBIAN_MIRROR}/main/d/dpkg/dpkg_${PV}.tar.bz2 \
file://ignore_extra_fields.patch;patch=1"
-DEPENDS = "zlib bzip2"
-DEPENDS_virtclass-native = "bzip2-native zlib-native virtual/update-alternatives-native gettext-native"
+DEPENDS = "zlib bzip2 perl"
+DEPENDS_virtclass-native = "bzip2-native zlib-native virtual/update-alternatives-native gettext-native perl-native"
RDEPENDS_${PN} = "${VIRTUAL-RUNTIME_update-alternatives}"
RDEPENDS_${PN}_virtclass-native = ""
diff --git a/meta/recipes-devtools/dpkg/dpkg_1.15.8.5.bb b/meta/recipes-devtools/dpkg/dpkg_1.15.8.5.bb
deleted file mode 100644
index ed247d453a..0000000000
--- a/meta/recipes-devtools/dpkg/dpkg_1.15.8.5.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-require dpkg.inc
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-
-SRC_URI += "file://noman.patch;patch=1 \
- file://check_snprintf.patch \
- file://check_version.patch"
-
-SRC_URI[md5sum] = "b9b817389e655ec2c12465de5c619011"
-SRC_URI[sha256sum] = "2ef55e8eb6c1e8c3dfb54c8ccc9a883fec7540b705c5179ca7a198bebe2f18bc"
-
-PR = "r3"
-
-EXTRA_OECONF = "--without-static-progs \
- --without-dselect \
- --with-start-stop-daemon \
- --with-zlib \
- --with-bz2lib \
- --without-selinux \
- --without-sgml-doc"
-
-BBCLASSEXTEND = "native"
-
-do_install_append_virtclass-native () {
- rm ${D}${bindir}/update-alternatives
-}
diff --git a/meta/recipes-devtools/dpkg/dpkg_1.15.8.7.bb b/meta/recipes-devtools/dpkg/dpkg_1.15.8.7.bb
new file mode 100644
index 0000000000..8df960d288
--- /dev/null
+++ b/meta/recipes-devtools/dpkg/dpkg_1.15.8.7.bb
@@ -0,0 +1,25 @@
+require dpkg.inc
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+SRC_URI += "file://noman.patch;patch=1 \
+ file://check_snprintf.patch \
+ file://check_version.patch"
+
+SRC_URI[md5sum] = "d1731d4147c1ea3b537a4d094519a6dc"
+SRC_URI[sha256sum] = "1ec1376471b04717a4497e5d7a27cd545248c92116898ce0c53ced8ea94267b5"
+
+PR = "r1"
+
+EXTRA_OECONF = "--without-static-progs \
+ --without-dselect \
+ --with-start-stop-daemon \
+ --with-zlib \
+ --with-bz2lib \
+ --without-selinux \
+ --without-sgml-doc"
+
+BBCLASSEXTEND = "native"
+
+do_install_append_virtclass-native () {
+ rm ${D}${bindir}/update-alternatives
+}
diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.41.12.bb b/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.41.12.bb
index 3f9195a4c4..ffe6dce17d 100644
--- a/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.41.12.bb
+++ b/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.41.12.bb
@@ -1,6 +1,6 @@
require e2fsprogs.inc
-PR = "r19"
+PR = "r20"
SRC_URI += "file://quotefix.patch;patch=1 \
file://acinclude.m4"
@@ -34,7 +34,7 @@ do_install () {
}
# blkid used to be part of e2fsprogs but is useful outside, add it
-# as an RDEPENDS so that anything relying on it being in e2fsprogs
+# as an RDEPENDS_${PN} so that anything relying on it being in e2fsprogs
# still works
RDEPENDS_e2fsprogs = "e2fsprogs-blkid e2fsprogs-badblocks"
diff --git a/meta/recipes-devtools/elfutils/elfutils-0.108/warnings.patch b/meta/recipes-devtools/elfutils/elfutils-0.108/warnings.patch
deleted file mode 100644
index 680e0441fe..0000000000
--- a/meta/recipes-devtools/elfutils/elfutils-0.108/warnings.patch
+++ /dev/null
@@ -1,132 +0,0 @@
-Index: elfutils-0.108/configure.ac
-===================================================================
---- elfutils-0.108.orig/configure.ac 2006-04-10 19:18:34.000000000 +0100
-+++ elfutils-0.108/configure.ac 2006-04-10 19:19:33.000000000 +0100
-@@ -49,6 +49,10 @@
- dnl Add all the languages for which translations are available.
- ALL_LINGUAS=
-
-+if test X"$CFLAGS" = X; then
-+ CFLAGS="-Wall -g -O2"
-+fi
-+
- AC_PROG_CC
- AC_PROG_RANLIB
- AC_PROG_YACC
-Index: elfutils-0.108/lib/Makefile.am
-===================================================================
---- elfutils-0.108.orig/lib/Makefile.am 2006-04-10 19:18:34.000000000 +0100
-+++ elfutils-0.108/lib/Makefile.am 2006-04-10 19:19:33.000000000 +0100
-@@ -21,7 +21,7 @@
- else
- AM_CFLAGS =
- endif
--AM_CFLAGS += -fpic -Wall -Wshadow -Werror -Wunused -Wextra $($(*F)_CFLAGS)
-+AM_CFLAGS += -fpic -Wshadow -Wunused $($(*F)_CFLAGS)
- INCLUDES = -I$(srcdir)/../libelf -I..
-
- noinst_LIBRARIES = libeu.a
-Index: elfutils-0.108/libasm/Makefile.am
-===================================================================
---- elfutils-0.108.orig/libasm/Makefile.am 2006-04-10 19:18:34.000000000 +0100
-+++ elfutils-0.108/libasm/Makefile.am 2006-04-10 19:19:33.000000000 +0100
-@@ -18,7 +18,7 @@
- else
- AM_CFLAGS =
- endif
--AM_CFLAGS += -Wall -Wshadow -Werror -Wunused -Wextra -Wformat=2
-+AM_CFLAGS += -Wshadow -Wunused -Wformat=2
- INCLUDES = -I. -I$(srcdir) -I.. -I$(top_srcdir)/libelf -I$(top_srcdir)/libebl \
- -I$(top_srcdir)/lib
- GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include)
-Index: elfutils-0.108/libcpu/Makefile.am
-===================================================================
---- elfutils-0.108.orig/libcpu/Makefile.am 2006-04-10 19:18:34.000000000 +0100
-+++ elfutils-0.108/libcpu/Makefile.am 2006-04-10 19:19:33.000000000 +0100
-@@ -13,7 +13,7 @@
- ## 3001 King Ranch Road, Ukiah, CA 95482.
- ##
- DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H
--AM_CFLAGS = -Wall -Wshadow -Werror -Wextra -Wformat=2 -Wunused
-+AM_CFLAGS = -Wshadow -Wformat=2 -Wunused
- INCLUDES = -I$(srcdir)
-
- noinst_LIBRARIES = libcpu_i386.a
-Index: elfutils-0.108/libdw/Makefile.am
-===================================================================
---- elfutils-0.108.orig/libdw/Makefile.am 2006-04-10 19:18:34.000000000 +0100
-+++ elfutils-0.108/libdw/Makefile.am 2006-04-10 19:19:33.000000000 +0100
-@@ -18,7 +18,7 @@
- else
- AM_CFLAGS =
- endif
--AM_CFLAGS += -Wall -Werror -Wshadow -Wunused -Wformat=2 -Wextra -std=gnu99
-+AM_CFLAGS += -Wshadow -Wunused -Wformat=2 -std=gnu99
- INCLUDES = -I. -I$(srcdir) -I$(srcdir)/../libelf -I.. -I$(srcdir)/../lib
- VERSION = 1
-
-Index: elfutils-0.108/libebl/Makefile.am
-===================================================================
---- elfutils-0.108.orig/libebl/Makefile.am 2006-04-10 19:18:34.000000000 +0100
-+++ elfutils-0.108/libebl/Makefile.am 2006-04-10 19:19:33.000000000 +0100
-@@ -18,7 +18,7 @@
- else
- AM_CFLAGS =
- endif
--AM_CFLAGS += -fpic -Wall -Wshadow -Werror -Wunused -Wextra -Wformat=2 \
-+AM_CFLAGS += -fpic -Wshadow -Wunused -Wformat=2 \
- -std=gnu99
-
- INCLUDES = -I$(srcdir) -I$(top_srcdir)/libelf -I$(top_srcdir)/lib -I..
-Index: elfutils-0.108/libelf/Makefile.am
-===================================================================
---- elfutils-0.108.orig/libelf/Makefile.am 2006-04-10 19:18:34.000000000 +0100
-+++ elfutils-0.108/libelf/Makefile.am 2006-04-10 19:19:33.000000000 +0100
-@@ -21,7 +21,7 @@
- else
- AM_CFLAGS =
- endif
--AM_CFLAGS += -Wall -Wshadow -Werror -Wunused -Wextra -Wformat=2 -std=gnu99 \
-+AM_CFLAGS += -Wshadow -Wunused -Wformat=2 -std=gnu99 \
- $($(*F)_CFLAGS)
- INCLUDES = -I$(srcdir) -I$(top_srcdir)/lib -I..
- GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include)
-Index: elfutils-0.108/src/Makefile.am
-===================================================================
---- elfutils-0.108.orig/src/Makefile.am 2006-04-10 19:18:34.000000000 +0100
-+++ elfutils-0.108/src/Makefile.am 2006-04-10 19:20:19.000000000 +0100
-@@ -15,14 +15,12 @@
- DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H $(YYDEBUG) \
- -DSRCDIR=\"$(shell cd $(srcdir);pwd)\" -DOBJDIR=\"$(shell pwd)\"
- if MUDFLAP
--AM_CFLAGS = -Wall -Wshadow -Wunused -Wextra -std=gnu99 -fmudflap \
-+AM_CFLAGS = -Wshadow -Wunused -std=gnu99 -fmudflap \
- $(native_ld_cflags) $(if $($(*F)_no_Wunused),,-Wunused) \
- $(if $($(*F)_no_Wformat),,-Wformat=2)
- else
--AM_CFLAGS = -Wall -Wshadow -std=gnu99 $(native_ld_cflags) \
-- $(if $($(*F)_no_Werror),,-Werror) \
-- $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
-- $(if $($(*F)_no_Wformat),,-Wformat=2)
-+AM_CFLAGS = -Wshadow -std=gnu99 $(native_ld_cflags) \
-+ $(if $($(*F)_no_Werror),,)
- endif
- if MUDFLAP
- libmudflap = -lmudflap
-Index: elfutils-0.108/tests/Makefile.am
-===================================================================
---- elfutils-0.108.orig/tests/Makefile.am 2006-04-10 19:18:34.000000000 +0100
-+++ elfutils-0.108/tests/Makefile.am 2006-04-10 19:19:33.000000000 +0100
-@@ -14,10 +14,10 @@
- ##
- DEFS = -DHAVE_CONFIG_H -D_GNU_SOURCE
- if MUDFLAP
--AM_CFLAGS = -Wall -Werror -std=gnu99 -fmudflap\
-+AM_CFLAGS = -std=gnu99 -fmudflap\
- $(if $($(*F)_no_Wformat),-Wno-format,-Wformat=2)
- else
--AM_CFLAGS = -Wall -Werror -std=gnu99 \
-+AM_CFLAGS = -std=gnu99 \
- $(if $($(*F)_no_Wformat),-Wno-format,-Wformat=2)
- AM_LDFLAGS = -Wl,-rpath,\$$ORIGIN/../libasm:\$$ORIGIN/../libdw:\$$ORIGIN/../libebl:\$$ORIGIN/../libelf
- endif
diff --git a/meta/recipes-devtools/elfutils/elfutils-0.89/warnings.patch b/meta/recipes-devtools/elfutils/elfutils-0.89/warnings.patch
deleted file mode 100644
index 2a1ea09a61..0000000000
--- a/meta/recipes-devtools/elfutils/elfutils-0.89/warnings.patch
+++ /dev/null
@@ -1,98 +0,0 @@
---- elfutils-0.89/configure.ac~warnings.patch 2003-09-26 02:04:04.000000000 -0400
-+++ elfutils-0.89/configure.ac 2004-05-01 00:16:33.000000000 -0400
-@@ -28,6 +28,10 @@
-
- ALL_LINGUAS=
-
-+if test X"$CFLAGS" = X; then
-+ CFLAGS="-Wall -Werror -g -O2"
-+fi
-+
- AC_PROG_CC
- AC_PROG_CPP
- AC_PROG_GCC_TRADITIONAL
---- elfutils-0.89/./lib/Makefile.am~warnings.patch 2003-09-22 18:57:58.000000000 -0400
-+++ elfutils-0.89/./lib/Makefile.am 2004-05-01 00:12:43.000000000 -0400
-@@ -14,7 +14,7 @@
- ## 3001 King Ranch Road, Ukiah, CA 95482.
- ##
- DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H
--AM_CFLAGS = -Wall -Werror -fpic
-+AM_CFLAGS = -fpic
- INCLUDES = -I$(srcdir)/../libelf -I..
-
- noinst_LIBRARIES = libeu.a
---- elfutils-0.89/./libelf/Makefile.am~warnings.patch 2003-08-12 02:45:24.000000000 -0400
-+++ elfutils-0.89/./libelf/Makefile.am 2004-05-01 00:12:43.000000000 -0400
-@@ -14,7 +14,6 @@
- ## 3001 King Ranch Road, Ukiah, CA 95482.
- ##
- DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H
--AM_CFLAGS = -Wall -Werror
- INCLUDES = -I$(srcdir) -I$(top_srcdir)/lib -I..
- GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include)
- VERSION = 1
---- elfutils-0.89/./libebl/Makefile.am~warnings.patch 2003-09-22 18:53:17.000000000 -0400
-+++ elfutils-0.89/./libebl/Makefile.am 2004-05-01 00:12:43.000000000 -0400
-@@ -14,7 +14,7 @@
- ## 3001 King Ranch Road, Ukiah, CA 95482.
- ##
- DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -Wall
--AM_CFLAGS = -Wall -Werror -DOBJDIR=\"$(shell pwd)\" -fpic
-+AM_CFLAGS = -DOBJDIR=\"$(shell pwd)\" -fpic
- INCLUDES = -I$(srcdir) -I$(top_srcdir)/libelf -I$(top_srcdir)/lib -I..
- VERSION = 1
- PACKAGE_VERSION = @PACKAGE_VERSION@
---- elfutils-0.89/./libdwarf/Makefile.am~warnings.patch 2003-08-12 02:46:05.000000000 -0400
-+++ elfutils-0.89/./libdwarf/Makefile.am 2004-05-01 00:12:43.000000000 -0400
-@@ -14,7 +14,6 @@
- ## 3001 King Ranch Road, Ukiah, CA 95482.
- ##
- DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DDWARF_DEBUG
--AM_CFLAGS = -Wall -Werror
- INCLUDES = -I. -I$(srcdir) -I$(srcdir)/../libelf -I.. -I$(srcdir)/../lib
- VERSION = 1
-
---- elfutils-0.89/./libdw/Makefile.am~warnings.patch 2003-08-12 02:46:18.000000000 -0400
-+++ elfutils-0.89/./libdw/Makefile.am 2004-05-01 00:12:43.000000000 -0400
-@@ -17,7 +17,6 @@
- ## Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- ##
- DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H
--AM_CFLAGS = -Wall -Werror -Wshadow
- INCLUDES = -I. -I$(srcdir) -I$(srcdir)/../libelf -I.. -I$(srcdir)/../lib
- VERSION = 1
-
---- elfutils-0.89/./libasm/Makefile.am~warnings.patch 2003-08-13 05:21:25.000000000 -0400
-+++ elfutils-0.89/./libasm/Makefile.am 2004-05-01 00:12:43.000000000 -0400
-@@ -14,7 +14,6 @@
- ## 3001 King Ranch Road, Ukiah, CA 95482.
- ##
- DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H
--AM_CFLAGS = -Wall -Werror
- INCLUDES = -I. -I$(srcdir) -I.. -I$(top_srcdir)/libelf -I$(top_srcdir)/libebl \
- -I$(top_srcdir)/lib
- GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include)
---- elfutils-0.89/./src/Makefile.am~warnings.patch 2003-09-22 18:57:09.000000000 -0400
-+++ elfutils-0.89/./src/Makefile.am 2004-05-01 00:12:43.000000000 -0400
-@@ -14,8 +14,8 @@
- ## 3001 King Ranch Road, Ukiah, CA 95482.
- ##
- DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -Wall -Wshadow $(YYDEBUG) \
-- $(if $($(*F)_no_Werror),,-Werror) $(native_ld_cflags)
--AM_CFLAGS = -Wall -DSRCDIR=\"$(shell cd $(srcdir);pwd)\" -DOBJDIR=\"$(shell pwd)\"
-+ $(if $(filter -Werror,$(CFLAGS)),$(if $($(*F)_no_Werror),,-Werror)) $(native_ld_cflags)
-+AM_CFLAGS = -DSRCDIR=\"$(shell cd $(srcdir);pwd)\" -DOBJDIR=\"$(shell pwd)\"
- INCLUDES = -I$(srcdir) -I$(srcdir)/../libelf -I$(srcdir)/../libebl -I$(srcdir)/../lib -I$(srcdir)/../libdwarf -I..
-
- YACC = @YACC@ -d
---- elfutils-0.89/./tests/Makefile.am~warnings.patch 2003-08-13 05:19:04.000000000 -0400
-+++ elfutils-0.89/./tests/Makefile.am 2004-05-01 00:12:43.000000000 -0400
-@@ -14,7 +14,6 @@
- ## 3001 King Ranch Road, Ukiah, CA 95482.
- ##
- DEFS = -DHAVE_CONFIG_H -D_GNU_SOURCE
--AM_CFLAGS = -Wall -Werror
- AM_LDFLAGS = -Wl,-rpath,\$$ORIGIN/../libasm:\$$ORIGIN/../libdwarf:\$$ORIGIN/../libdw:\$$ORIGIN/../libebl:\$$ORIGIN/../libelf
- INCLUDES = -I$(top_srcdir)/libasm -I$(top_srcdir)/libdwarf \
- -I$(top_srcdir)/libdw \
diff --git a/meta/recipes-devtools/elfutils/elfutils_0.108.bb b/meta/recipes-devtools/elfutils/elfutils_0.108.bb
deleted file mode 100644
index 67f34a0acd..0000000000
--- a/meta/recipes-devtools/elfutils/elfutils_0.108.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SECTION = "base"
-LICENSE = "OSL"
-DESCRIPTION = "A collection of utilities and DSOs to handle compiled objects."
-DEPENDS = "libtool"
-PR = "r2"
-
-SRC_URI = "http://distro.ibiblio.org/pub/linux/distributions/gentoo/distfiles/elfutils-${PV}.tar.gz \
- file://warnings.patch;patch=1"
-
-inherit autotools
-
-# Package binaries that overlap with binutils separately
-PACKAGES =+ "${PN}-binutils"
-FILES_${PN}-binutils = "\
- ${bindir}/addr2line \
- ${bindir}/ld \
- ${bindir}/nm \
- ${bindir}/readelf \
- ${bindir}/size \
- ${bindir}/strip"
-# Fix library issues
-FILES_${PN} =+ "${libdir}/*-${PV}.so"
-
-# The elfutils package contains symlinks that trip up insane
-INSANE_SKIP_elfutils = "1"
diff --git a/meta/recipes-devtools/elfutils/elfutils_0.89.bb b/meta/recipes-devtools/elfutils/elfutils_0.89.bb
deleted file mode 100644
index 24cb37ad1f..0000000000
--- a/meta/recipes-devtools/elfutils/elfutils_0.89.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-SECTION = "base"
-LICENSE = "OSL"
-DESCRIPTION = "A collection of utilities and DSOs to handle compiled objects."
-DEPENDS = "libtool"
-
-SRC_URI = "http://distro.ibiblio.org/pub/linux/distributions/gentoo/distfiles/elfutils-${PV}.tar.gz \
- file://warnings.patch;patch=1"
-
-inherit autotools
-
diff --git a/meta/recipes-devtools/flex/flex.inc b/meta/recipes-devtools/flex/flex.inc
index 93fa7e81a4..54c400c044 100644
--- a/meta/recipes-devtools/flex/flex.inc
+++ b/meta/recipes-devtools/flex/flex.inc
@@ -11,3 +11,6 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/flex/flex-${PV}.tar.bz2 "
inherit autotools
+do_install_append_virtclass-native() {
+ create_wrapper ${D}/${bindir}/flex M4=${STAGING_BINDIR_NATIVE}/m4
+}
diff --git a/meta/recipes-devtools/flex/flex_2.5.35.bb b/meta/recipes-devtools/flex/flex_2.5.35.bb
index 4fdce33ccf..28a4f1f06b 100644
--- a/meta/recipes-devtools/flex/flex_2.5.35.bb
+++ b/meta/recipes-devtools/flex/flex_2.5.35.bb
@@ -1,5 +1,5 @@
require flex.inc
-PR = "r1"
+PR = "r2"
LICENSE="BSD"
LIC_FILES_CHKSUM = "file://COPYING;md5=e4742cf92e89040b39486a6219b68067"
BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/gcc/gcc-4.5.1.inc b/meta/recipes-devtools/gcc/gcc-4.5.1.inc
index 3edc4d43dc..6c600c1896 100644
--- a/meta/recipes-devtools/gcc/gcc-4.5.1.inc
+++ b/meta/recipes-devtools/gcc/gcc-4.5.1.inc
@@ -30,6 +30,7 @@ SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
file://fedora/gcc43-rh341221.patch;striplevel=0 \
file://fedora/gcc43-java-debug-iface-type.patch;striplevel=0 \
file://fedora/gcc43-i386-libgomp.patch;striplevel=0 \
+ file://fedora/gcc45-no-add-needed.patch;striplevel=0 \
file://103-uclibc-conf-noupstream.patch \
file://200-uclibc-locale.patch \
file://203-uclibc-locale-no__x.patch;striplevel=1 \
@@ -54,6 +55,7 @@ SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
file://optional_libstdc.patch \
file://disable_relax_pic_calls_flag.patch \
file://gcc-poison-parameters.patch \
+ file://GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch \
"
SRC_URI_append_sh3 = " file://sh3-installfix-fixheaders.patch;patch=1 "
diff --git a/meta/recipes-devtools/gcc/gcc-4.5.1/GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch b/meta/recipes-devtools/gcc/gcc-4.5.1/GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch
new file mode 100644
index 0000000000..9ae01c3fc7
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-4.5.1/GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch
@@ -0,0 +1,33 @@
+# by default c++ include directories are not relative to "--sysroot"
+# which brings one trouble when using the toolchain in an environment
+# where the build directory generating that toolchain doesn't exist,
+# e.g. in sstate, machine specific sysroot and relocatable SDK
+# toolchain. This patch now enables c++ include paths under sysroot.
+# This way it's enough as long as "--sysroot" is correctly enabled
+# in the new environment.
+#
+# Signed-off-by Kevin Tian <kevin.tian@intel.com>, 2010-12-30
+
+diff --git a/gcc/cppdefault.c b/gcc/cppdefault.c
+index 5024f48..9b47d1c 100644
+--- a/gcc/cppdefault.c
++++ b/gcc/cppdefault.c
+@@ -48,15 +48,15 @@ const struct default_include cpp_include_defaults[]
+ = {
+ #ifdef GPLUSPLUS_INCLUDE_DIR
+ /* Pick up GNU C++ generic include files. */
+- { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 0, 0 },
++ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 1, 0 },
+ #endif
+ #ifdef GPLUSPLUS_TOOL_INCLUDE_DIR
+ /* Pick up GNU C++ target-dependent include files. */
+- { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 0, 1 },
++ { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 1, 1 },
+ #endif
+ #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR
+ /* Pick up GNU C++ backward and deprecated include files. */
+- { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 0, 0 },
++ { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 1, 0 },
+ #endif
+ #ifdef LOCAL_INCLUDE_DIR
+ /* /usr/local/include comes before the fixincluded header files. */
diff --git a/meta/recipes-devtools/gcc/gcc-4.5.1/fedora/gcc45-no-add-needed.patch b/meta/recipes-devtools/gcc/gcc-4.5.1/fedora/gcc45-no-add-needed.patch
new file mode 100644
index 0000000000..23704d3b71
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-4.5.1/fedora/gcc45-no-add-needed.patch
@@ -0,0 +1,52 @@
+2010-02-08 Roland McGrath <roland@redhat.com>
+
+ * config/rs6000/sysv4.h (LINK_EH_SPEC): Pass --no-add-needed to the
+ linker.
+ * config/linux.h (LINK_EH_SPEC): Likewise.
+ * config/alpha/elf.h (LINK_EH_SPEC): Likewise.
+ * config/ia64/linux.h (LINK_EH_SPEC): Likewise.
+
+--- gcc/config/alpha/elf.h.~1~
++++ gcc/config/alpha/elf.h
+@@ -421,7 +421,7 @@ extern int alpha_this_gpdisp_sequence_nu
+ I imagine that other systems will catch up. In the meantime, it
+ doesn't harm to make sure that the data exists to be used later. */
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
+ #endif
+
+ /* A C statement (sans semicolon) to output to the stdio stream STREAM
+--- gcc/config/ia64/linux.h.~1~
++++ gcc/config/ia64/linux.h
+@@ -58,7 +58,7 @@ do { \
+ Signalize that because we have fde-glibc, we don't need all C shared libs
+ linked against -lgcc_s. */
+ #undef LINK_EH_SPEC
+-#define LINK_EH_SPEC ""
++#define LINK_EH_SPEC "--no-add-needed "
+
+ #define MD_UNWIND_SUPPORT "config/ia64/linux-unwind.h"
+
+--- gcc/config/linux.h.~1~
++++ gcc/config/linux.h
+@@ -89,7 +89,7 @@ see the files COPYING3 and COPYING.RUNTI
+ } while (0)
+
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
+ #endif
+
+ /* Define this so we can compile MS code for use with WINE. */
+--- gcc/config/rs6000/sysv4.h.~1~
++++ gcc/config/rs6000/sysv4.h
+@@ -917,7 +917,7 @@ SVR4_ASM_SPEC \
+ %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}}}"
+
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++# define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
+ #endif
+
+ #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \
diff --git a/meta/recipes-devtools/gcc/gcc-configure-cross.inc b/meta/recipes-devtools/gcc/gcc-configure-cross.inc
index 3da92e24a1..346d1640d1 100644
--- a/meta/recipes-devtools/gcc/gcc-configure-cross.inc
+++ b/meta/recipes-devtools/gcc/gcc-configure-cross.inc
@@ -5,7 +5,7 @@ USE_NLS = '${@base_conditional( "TARGET_OS", "linux-uclibc", "no", "", d )}'
EXTRA_OECONF += " --enable-poison-system-directories "
EXTRA_OECONF_PATHS = "--with-local-prefix=${STAGING_DIR_TARGET}${target_exec_prefix} \
- --with-gxx-include-dir=${STAGING_DIR_TARGET}/${target_includedir}/c++ \
+ --with-gxx-include-dir=${target_includedir}/c++ \
--with-sysroot=${STAGING_DIR_TARGET} \
--with-build-sysroot=${STAGING_DIR_TARGET}"
@@ -20,5 +20,3 @@ do_compile_prepend () {
LIBGCCS_VAR = "-lgcc_s"
LIBGCCS_VAR_avr32 = ""
-
-do_package_write_ipk[depends] += "virtual/libc:do_package"
diff --git a/meta/recipes-devtools/gcc/gcc-configure-runtime.inc b/meta/recipes-devtools/gcc/gcc-configure-runtime.inc
index f9ad61d129..6cc11e2ffe 100644
--- a/meta/recipes-devtools/gcc/gcc-configure-runtime.inc
+++ b/meta/recipes-devtools/gcc/gcc-configure-runtime.inc
@@ -31,28 +31,14 @@ do_compile () {
}
do_install () {
- target=`echo ${MULTIMACH_TARGET_SYS} | sed -e s#-nativesdk##`
-
- # Install libgcc from our gcc-cross saved data
- install -d ${D}${base_libdir} ${D}${libdir}
- cp -fpPR ${STAGING_INCDIR_NATIVE}/gcc-build-internal-$target/* ${D}
-
for d in ${RUNTIMETARGET}; do
cd ${B}/$d/
oe_runmake 'DESTDIR=${D}' install
done
-
- # Move libgcc_s into /lib
- mkdir -p ${D}${base_libdir}
- if [ -f ${D}${libdir}/nof/libgcc_s.so ]; then
- mv ${D}${libdir}/nof/libgcc* ${D}${base_libdir}
- else
- mv ${D}${libdir}/libgcc* ${D}${base_libdir} || true
- fi
}
INHIBIT_DEFAULT_DEPS = "1"
-DEPENDS = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
+DEPENDS = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++ libgcc"
PROVIDES = "virtual/${TARGET_PREFIX}compilerlibs"
BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/gcc/gcc-configure-sdk.inc b/meta/recipes-devtools/gcc/gcc-configure-sdk.inc
index 0eb33adda8..756e74e48d 100644
--- a/meta/recipes-devtools/gcc/gcc-configure-sdk.inc
+++ b/meta/recipes-devtools/gcc/gcc-configure-sdk.inc
@@ -5,7 +5,7 @@ USE_NLS = '${@base_conditional( "TARGET_OS", "linux-uclibc", "no", "", d )}'
USE_NLS = '${@base_conditional( "TARGET_OS", "linux-uclibcgnueabi", "no", "", d )}'
EXTRA_OECONF_PATHS = "--with-local-prefix=${SDKPATH}/sysroots/${TARGET_SYS}${target_exec_prefix} \
- --with-gxx-include-dir=${SDKPATH}/sysroots/${TARGET_SYS}${target_includedir}/c++ \
+ --with-gxx-include-dir=${target_includedir}/c++ \
--with-build-time-tools=${STAGING_DIR_NATIVE}${prefix_native}/${TARGET_SYS}/bin \
--with-sysroot=${SDKPATH}/sysroots/${TARGET_SYS} \
--with-build-sysroot=${STAGING_DIR_TARGET}"
diff --git a/meta/recipes-devtools/gcc/gcc-cross-canadian_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-cross-canadian_4.5.1.bb
index 98e239d92c..3eea4bcafe 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-canadian_4.5.1.bb
+++ b/meta/recipes-devtools/gcc/gcc-cross-canadian_4.5.1.bb
@@ -5,7 +5,7 @@ require gcc-cross-canadian.inc
require gcc-configure-sdk.inc
require gcc-package-sdk.inc
-PR = "r1"
+PR = "r3"
DEPENDS += "gmp-nativesdk mpfr-nativesdk libmpc-nativesdk elfutils-nativesdk"
RDEPENDS_${PN} += "mpfr-nativesdk libmpc-nativesdk elfutils-nativesdk"
diff --git a/meta/recipes-devtools/gcc/gcc-cross-initial.inc b/meta/recipes-devtools/gcc/gcc-cross-initial.inc
index f582de9843..4e2e343936 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-initial.inc
+++ b/meta/recipes-devtools/gcc/gcc-cross-initial.inc
@@ -2,6 +2,8 @@ DEPENDS = "virtual/${TARGET_PREFIX}binutils gettext-native ${NATIVEDEPS}"
PROVIDES = "virtual/${TARGET_PREFIX}gcc-initial"
PACKAGES = ""
+CROSS_TARGET_SYS_DIR_append = ".${PN}"
+
# This is intended to be a -very- basic config
# sysroot is needed in case we use libc-initial
EXTRA_OECONF = "--with-local-prefix=${STAGING_DIR_TARGET}${target_prefix} \
diff --git a/meta/recipes-devtools/gcc/gcc-cross-initial_4.3.3.bb b/meta/recipes-devtools/gcc/gcc-cross-initial_4.3.3.bb
index 081b7d60fb..28ac1abe18 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-initial_4.3.3.bb
+++ b/meta/recipes-devtools/gcc/gcc-cross-initial_4.3.3.bb
@@ -1,5 +1,5 @@
require gcc-cross_${PV}.bb
require gcc-cross-initial.inc
-PR = "r4"
+PR = "r5"
diff --git a/meta/recipes-devtools/gcc/gcc-cross-initial_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-cross-initial_4.5.1.bb
index e3aea8b356..b2c257d9d4 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-initial_4.5.1.bb
+++ b/meta/recipes-devtools/gcc/gcc-cross-initial_4.5.1.bb
@@ -1,5 +1,5 @@
require gcc-cross_${PV}.bb
require gcc-cross-initial.inc
-PR = "r0"
+PR = "r2"
diff --git a/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc b/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc
index 72a42411b1..2e5283d691 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc
+++ b/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc
@@ -3,6 +3,8 @@ DEPENDS += "virtual/${TARGET_PREFIX}libc-initial gettext-native"
PROVIDES = "virtual/${TARGET_PREFIX}gcc-intermediate"
PACKAGES = ""
+CROSS_TARGET_SYS_DIR_append = ".${PN}"
+
# This is intended to be a -very- basic config
# sysroot is needed in case we use libc-initial
EXTRA_OECONF = "--with-local-prefix=${STAGING_DIR_TARGET}${target_prefix} \
@@ -12,11 +14,14 @@ EXTRA_OECONF = "--with-local-prefix=${STAGING_DIR_TARGET}${target_prefix} \
--enable-languages=c \
${OPTSPACE} \
--program-prefix=${TARGET_PREFIX} \
- --with-sysroot=${STAGING_DIR_TARGET} \
- --with-build-sysroot=${STAGING_DIR_TARGET} \
+ --with-sysroot=${STAGING_DIR_TCBOOTSTRAP} \
+ --with-build-sysroot=${STAGING_DIR_TCBOOTSTRAP} \
${EXTRA_OECONF_INTERMEDIATE} \
${@get_gcc_fpu_setting(bb, d)}"
+do_populate_sysroot[sstate-inputdirs] = "${SYSROOT_DESTDIR}/${STAGING_DIR_HOST} ${SYSROOT_DESTDIR}/${STAGING_DIR_TARGET}/${target_base_libdir}"
+do_populate_sysroot[sstate-outputdirs] = "${STAGING_DIR_HOST} ${STAGING_DIR_TCBOOTSTRAP}/${target_base_libdir}"
+
do_compile () {
oe_runmake
}
@@ -25,4 +30,30 @@ do_install () {
oe_runmake 'DESTDIR=${D}' install
install -d ${D}${target_base_libdir}/
mv ${D}${exec_prefix}/${TARGET_SYS}/lib/* ${D}${target_base_libdir}/
+
+ # We don't really need this (here shares/ contains man/, info/, locale/).
+ rm -rf ${D}${datadir}/
+
+ # We use libiberty from binutils
+ rm -f ${D}${exec_prefix}/lib/lib/libiberty.a
+
+ # Insert symlinks into libexec so when tools without a prefix are searched for, the correct ones are
+ # found. These need to be relative paths so they work in different locations.
+ dest=${D}${libexecdir}/gcc/${TARGET_SYS}/${BINV}/
+ install -d $dest
+ for t in ar as ld nm objcopy objdump ranlib strip g77 gcc cpp gfortran; do
+ ln -sf ${BINRELPATH}/${TARGET_PREFIX}$t $dest$t
+ done
+}
+
+#
+# Override the default sysroot staging copy since this won't look like a target system
+#
+sysroot_stage_all() {
+ sysroot_stage_dir ${D} ${SYSROOT_DESTDIR}
+ install -d ${SYSROOT_DESTDIR}${STAGING_DIR_TARGET}${target_base_libdir}/
+ install -d ${SYSROOT_DESTDIR}${STAGING_DIR_TARGET}${target_libdir}/
+ mv ${SYSROOT_DESTDIR}${target_base_libdir}/* ${SYSROOT_DESTDIR}${STAGING_DIR_TARGET}${target_base_libdir}/ || true
+ mv ${SYSROOT_DESTDIR}${target_libdir}/* ${SYSROOT_DESTDIR}${STAGING_DIR_TARGET}${target_libdir}/ || true
}
+
diff --git a/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.3.3.bb b/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.3.3.bb
index 9a30cb5119..a8473b0ebe 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.3.3.bb
+++ b/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.3.3.bb
@@ -1,4 +1,4 @@
require gcc-cross_${PV}.bb
require gcc-cross-intermediate.inc
-PR = "r4"
+PR = "r5"
diff --git a/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.5.1.bb
index 4cabe0eb4b..e65d5df671 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.5.1.bb
+++ b/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.5.1.bb
@@ -1,4 +1,4 @@
require gcc-cross_${PV}.bb
require gcc-cross-intermediate.inc
-PR = "r0"
+PR = "r3"
diff --git a/meta/recipes-devtools/gcc/gcc-cross_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-cross_4.5.1.bb
index 445869d1f5..399cdf9296 100644
--- a/meta/recipes-devtools/gcc/gcc-cross_4.5.1.bb
+++ b/meta/recipes-devtools/gcc/gcc-cross_4.5.1.bb
@@ -1,4 +1,4 @@
-PR = "r0"
+PR = "r2"
require gcc-${PV}.inc
require gcc-cross4.inc
diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.3.3.bb b/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.3.3.bb
index 5daa31b888..b42de471da 100644
--- a/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.3.3.bb
+++ b/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.3.3.bb
@@ -1,3 +1,3 @@
require gcc-cross-initial_${PV}.bb
require gcc-crosssdk-initial.inc
-PR = "r5"
+PR = "r6"
diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.5.1.bb
index 22cb4904b7..240caf56f7 100644
--- a/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.5.1.bb
+++ b/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.5.1.bb
@@ -1,4 +1,4 @@
require gcc-cross-initial_${PV}.bb
require gcc-crosssdk-initial.inc
-PR = "r0"
+PR = "r2"
diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk-intermediate_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-crosssdk-intermediate_4.5.1.bb
index ba42ca0e5c..a6653ddfcc 100644
--- a/meta/recipes-devtools/gcc/gcc-crosssdk-intermediate_4.5.1.bb
+++ b/meta/recipes-devtools/gcc/gcc-crosssdk-intermediate_4.5.1.bb
@@ -1,4 +1,4 @@
require gcc-cross-intermediate_${PV}.bb
require gcc-crosssdk-intermediate.inc
-PR = "r0"
+PR = "r2"
diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-crosssdk_4.5.1.bb
index 6f0a5406d0..129e8d31a4 100644
--- a/meta/recipes-devtools/gcc/gcc-crosssdk_4.5.1.bb
+++ b/meta/recipes-devtools/gcc/gcc-crosssdk_4.5.1.bb
@@ -1,4 +1,4 @@
require gcc-cross_${PV}.bb
require gcc-crosssdk.inc
-PR = "r0"
+PR = "r2"
diff --git a/meta/recipes-devtools/gcc/gcc-package-runtime.inc b/meta/recipes-devtools/gcc/gcc-package-runtime.inc
index 40a9ed0d70..e8c901131e 100644
--- a/meta/recipes-devtools/gcc/gcc-package-runtime.inc
+++ b/meta/recipes-devtools/gcc/gcc-package-runtime.inc
@@ -1,6 +1,4 @@
PACKAGES = "\
- libgcc \
- libgcc-dev \
libstdc++ \
libstdc++-precompile-dev \
libstdc++-dev \
@@ -14,12 +12,6 @@ PACKAGES = "\
libmudflap-dev \
"
-FILES_libgcc = "${base_libdir}/libgcc*.so.*"
-FILES_libgcc-dev = " \
- ${base_libdir}/libgcc*.so \
- ${libdir}/${TARGET_SYS}/${BINV}/crt* \
- ${libdir}/${TARGET_SYS}/${BINV}/libgcc*"
-
FILES_libg2c = "${target_libdir}/libg2c.so.*"
FILES_libg2c-dev = "\
${libdir}/libg2c.so \
diff --git a/meta/recipes-devtools/gcc/gcc-runtime_4.3.3.bb b/meta/recipes-devtools/gcc/gcc-runtime_4.3.3.bb
index 6b375f323a..99f927a8f3 100644
--- a/meta/recipes-devtools/gcc/gcc-runtime_4.3.3.bb
+++ b/meta/recipes-devtools/gcc/gcc-runtime_4.3.3.bb
@@ -1,4 +1,4 @@
-PR = "r17"
+PR = "r18"
require gcc-${PV}.inc
require gcc-configure-runtime.inc
diff --git a/meta/recipes-devtools/gcc/gcc-runtime_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-runtime_4.5.1.bb
index 4d2302d35b..093f9bf963 100644
--- a/meta/recipes-devtools/gcc/gcc-runtime_4.5.1.bb
+++ b/meta/recipes-devtools/gcc/gcc-runtime_4.5.1.bb
@@ -1,4 +1,4 @@
-PR = "r0"
+PR = "r2"
require gcc-${PV}.inc
require gcc-configure-runtime.inc
diff --git a/meta/recipes-devtools/gcc/gcc_4.5.1.bb b/meta/recipes-devtools/gcc/gcc_4.5.1.bb
index 81c1fa9c2d..919d4b0938 100644
--- a/meta/recipes-devtools/gcc/gcc_4.5.1.bb
+++ b/meta/recipes-devtools/gcc/gcc_4.5.1.bb
@@ -1,4 +1,4 @@
-PR = "r0"
+PR = "r2"
require gcc-${PV}.inc
require gcc-configure-target.inc
require gcc-package-target.inc
diff --git a/meta/recipes-devtools/gcc/libgcc_4.5.1.bb b/meta/recipes-devtools/gcc/libgcc_4.5.1.bb
new file mode 100644
index 0000000000..b6cf2685e5
--- /dev/null
+++ b/meta/recipes-devtools/gcc/libgcc_4.5.1.bb
@@ -0,0 +1,46 @@
+require gcc-${PV}.inc
+
+PR = "r0"
+
+INHIBIT_DEFAULT_DEPS = "1"
+DEPENDS = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
+
+PACKAGES = "\
+ ${PN} \
+ ${PN}-dev \
+ "
+
+FILES_${PN} = "${base_libdir}/libgcc*.so.*"
+FILES_${PN}-dev = " \
+ ${base_libdir}/libgcc*.so \
+ ${libdir}/${TARGET_SYS}/${BINV}/crt* \
+ ${libdir}/${TARGET_SYS}/${BINV}/libgcc*"
+
+do_fetch[noexec] = "1"
+do_unpack[noexec] = "1"
+do_patch[noexec] = "1"
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install () {
+ target=`echo ${MULTIMACH_TARGET_SYS} | sed -e s#-nativesdk##`
+
+ # Install libgcc from our gcc-cross saved data
+ install -d ${D}${base_libdir} ${D}${libdir}
+ cp -fpPR ${STAGING_INCDIR_NATIVE}/gcc-build-internal-$target/* ${D}
+
+ # Move libgcc_s into /lib
+ mkdir -p ${D}${base_libdir}
+ if [ -f ${D}${libdir}/nof/libgcc_s.so ]; then
+ mv ${D}${libdir}/nof/libgcc* ${D}${base_libdir}
+ else
+ mv ${D}${libdir}/libgcc* ${D}${base_libdir} || true
+ fi
+}
+
+do_package_write_ipk[depends] += "virtual/libc:do_package"
+do_package_write_deb[depends] += "virtual/libc:do_package"
+do_package_write_rpm[depends] += "virtual/libc:do_package"
+
+BBCLASSEXTEND = "nativesdk"
+
diff --git a/meta/recipes-devtools/gdb/gdb-common.inc b/meta/recipes-devtools/gdb/gdb-common.inc
index 16b653e46e..84e36baed6 100644
--- a/meta/recipes-devtools/gdb/gdb-common.inc
+++ b/meta/recipes-devtools/gdb/gdb-common.inc
@@ -5,6 +5,10 @@ SECTION = "devel"
PRIORITY = "optional"
DEPENDS = "ncurses readline elfutils"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
+ file://COPYING.LIB;md5=9f604d8a4f8e74f4f5140845a21b6674 \
+ file://COPYING3;md5=d32239bcb673463ab874e80d47fae504 \
+ file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6"
inherit autotools
SRC_URI = "${GNU_MIRROR}/gdb/gdb-${PV}.tar.gz \
diff --git a/meta/recipes-devtools/git/git_1.7.3.2.bb b/meta/recipes-devtools/git/git_1.7.3.2.bb
deleted file mode 100644
index 1f7f937995..0000000000
--- a/meta/recipes-devtools/git/git_1.7.3.2.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require git.inc
-
-PR = "r0"
-
-EXTRA_OECONF += "ac_cv_snprintf_returns_bogus=no ac_cv_c_c99_format=yes \
- ac_cv_fread_reads_directories=${ac_cv_fread_reads_directories=yes} \
- "
-
-SRC_URI[md5sum] = "902f7f07a789fedc0d2ac03656b85969"
-SRC_URI[sha256sum] = "bc4cf6bc7c116056050ef43b051691828d7101327b23311d424b02eaee553e71"
diff --git a/meta/recipes-devtools/git/git_1.7.3.4.bb b/meta/recipes-devtools/git/git_1.7.3.4.bb
new file mode 100644
index 0000000000..2765ef793e
--- /dev/null
+++ b/meta/recipes-devtools/git/git_1.7.3.4.bb
@@ -0,0 +1,10 @@
+require git.inc
+
+PR = "r0"
+
+EXTRA_OECONF += "ac_cv_snprintf_returns_bogus=no ac_cv_c_c99_format=yes \
+ ac_cv_fread_reads_directories=${ac_cv_fread_reads_directories=yes} \
+ "
+
+SRC_URI[md5sum] = "3a2602016f98c529cda7b9fad1a6e216"
+SRC_URI[sha256sum] = "3e5e2b6547ee4aae82b4c5f589ff084996e9e6e0e2b52c92365e6baa1e4a0171"
diff --git a/meta/recipes-devtools/guilt/guilt-native_0.33.bb b/meta/recipes-devtools/guilt/guilt-native_0.33.bb
index 62d91f6953..fad0340ecc 100644
--- a/meta/recipes-devtools/guilt/guilt-native_0.33.bb
+++ b/meta/recipes-devtools/guilt/guilt-native_0.33.bb
@@ -1,5 +1,7 @@
DESCRIPTION = "guilt is quilt like tool for git"
-LICENSE = "GPL"
+LICENSE = "GPLv2"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=b6f3400dc1a01cebafe8a52b3f344135"
PR = r0
PV = "0.33"
@@ -27,4 +29,4 @@ do_compile() {
do_install() {
oe_runmake PREFIX=${D}/${base_prefix}/usr install
-} \ No newline at end of file
+}
diff --git a/meta/recipes-devtools/icon-naming-utils/icon-naming-utils-native_0.8.7.bb b/meta/recipes-devtools/icon-naming-utils/icon-naming-utils-native_0.8.7.bb
index ef41c538af..18aa3745d3 100644
--- a/meta/recipes-devtools/icon-naming-utils/icon-naming-utils-native_0.8.7.bb
+++ b/meta/recipes-devtools/icon-naming-utils/icon-naming-utils-native_0.8.7.bb
@@ -2,6 +2,8 @@ LICENSE = "GPLv2"
DEPENDS = "libxml-simple-perl-native"
PR = "r1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
SRC_URI = "http://tango.freedesktop.org/releases/icon-naming-utils-0.8.7.tar.gz"
S = "${WORKDIR}/icon-naming-utils-${PV}"
diff --git a/meta/recipes-devtools/installer/adt-installer/adt_installer b/meta/recipes-devtools/installer/adt-installer/adt_installer
new file mode 100755
index 0000000000..1f481ded61
--- /dev/null
+++ b/meta/recipes-devtools/installer/adt-installer/adt_installer
@@ -0,0 +1,367 @@
+#/bin/bash
+# Yocto ADT Installer
+#
+# Copyright 2010-2011 by Intel Corp.
+#
+# 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
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+
+usage ()
+{
+
+ INST_ARCH=`uname -m`
+ INST_OS=`uname -o| tr '[A-Z]' '[a-z]'`
+ INST_KR=`uname -r| tr '[A-Z]' '[a-z]'`
+
+ echo_info "#########################################################################"
+ echo_info "# Welcome to Yocto Application Developement Tools (ADT) Installer"
+ echo_info "# "
+ echo_info "# Host Machine:\t\t\t\t"$INST_ARCH
+ echo_info "# OS info:\t\t\t\t$INST_KR"
+ echo_info "# Yocto ADT version to be installed:\t$YOCTOADT_VERSION"
+ echo_info "# supported target architectures:\t$YOCTOADT_SUPPORTED_TARGETS"
+ echo_info "# supported target root_fs images:\t$YOCTOADT_SUPPORTED_ROOTFS"
+ echo_info "#########################################################################\n"
+
+ echo_info "Systemwide installation. Installation will occur under $INSTALL_FOLDER\n"
+ echo_info "############################################################################"
+ echo_info "# Your system installation configurations from adt_installer.conf"
+ echo_info "############################################################################"
+
+ echo_info "# Cross toolchains:\t\t$YOCTOADT_TARGETS"
+ echo_info "# Install Qemu:\t\t\t$YOCTOADT_QEMU"
+ echo_info "# Install NFS utilities:\t$YOCTOADT_NFS_UTIL"
+ #echo_info "# Install bitbake + UI:\t\t$YOCTOADT_BITBAKE"
+ #echo_info "# Install poky metadata:\t$YOCTOADT_METADATA"
+ #echo_info "############################################################################\n"
+
+ echo_info "\n##############################################################################"
+ echo_info "# Your rootfs image(s) and target sysroot selections from adt_installer.conf"
+ echo_info "##############################################################################"
+prompt=1
+for arch_type in $YOCTOADT_SUPPORTED_TARGETS; do
+ download_images $arch_type $prompt
+done
+ echo_info "############################################################################\n"
+ select_install_type
+}
+
+validate_config()
+{
+
+ for selected_arch_type in $YOCTOADT_TARGETS; do
+ found=0
+ for supported_arch_type in $YOCTOADT_SUPPORTED_TARGETS; do
+ if [ "$selected_arch_type" == "$supported_arch_type" ]; then
+ found=1
+ break
+ fi
+ done
+ if [ $found == 0 ]; then
+ echo_info "[ADT_INST] Error: YOCTADT_TARGETS in adt_installer.conf contains invalid entries: $YOCTOADT_TARGETS. Valid values are: $YOCTOADT_SUPPORTED_TARGETS"
+ echo -e "\n#############################################################################"
+ echo -e "# Meet error(s) when installing Yocto ADT! Please check log file for details. "
+ echo -e "#############################################################################\n"
+ exit -1
+ fi
+ done
+
+ for arch_type in $YOCTOADT_SUPPORTED_TARGETS; do
+ #select_target_var="\$YOCTOADT_TARGET_$arch_type"
+ #select_target=`eval echo $select_target_var`
+
+ #if [ "$select_target" != "Y" ] || [ "$selected_target" != "y" ]; then
+ # continue;
+ #fi
+
+ target_sysroot_image_var="\$YOCTOADT_TARGET_SYSROOT_IMAGE_$arch_type"
+ target_sysroot_image=`eval echo $target_sysroot_image_var`
+
+
+ select_rootfs_var="\$YOCTOADT_ROOTFS_$arch_type"
+ select_rootfs=`eval echo $select_rootfs_var`
+
+ if [ "$select_rootfs" == "" ] && [ "$target_sysroot_image" == "" ]; then
+ continue;
+ fi
+
+ for image_type in $select_rootfs; do
+#validate rootfs type defined in YOCTOADT_ROOTFS_{ARCH} is valid and in YOCTOADT_SUPPORTED_ROOTFS
+ found=0
+ for supported_rootfs_type in $YOCTOADT_SUPPORTED_ROOTFS; do
+ if [ "$image_type" == "$supported_rootfs_type" ]; then
+ found=1
+ break
+ fi
+ done
+ if [ $found == 0 ]; then
+#the rootfs type listed for downloading is not valid
+ echo_info "[ADT_INST] Error: Selected YOCTOADT_ROOTFS_$arch_type value: $image_type, is not valid! Valid values are: $YOCTOADT_SUPPORTED_ROOTFS "
+ echo -e "\n#############################################################################"
+ echo -e "# Meet error(s) when installing Yocto ADT! Please check log file for details. "
+ echo -e "#############################################################################\n"
+ exit -1
+ fi
+ done
+
+ found=0
+ for image_type in $select_rootfs; do
+#validate that rootfs to be extracted must be in the item: YOCTOADT_ROOTFS_${ARCH}
+ if [ "$target_sysroot_image" == "$image_type" ]; then
+ found=1
+ break
+ fi
+ done
+# the rootfs image to be extracted is not selected
+ if [ $found == 0 ]; then
+ echo_info "[ADT_INST] Error: YOCTOADT_TARGET_SYSROOT_IMAGE_$arch_type selection: $target_sysroot_image is not included in YOCTOADT_ROOTFS_$arch_type selections: $select_rootfs"
+ echo -e "\n#############################################################################"
+ echo -e "# Meet error(s) when installing Yocto ADT! Please check log file for details. "
+ echo -e "#############################################################################\n"
+ exit -1
+ fi
+ done
+}
+
+
+#detect opkg installed or not, for installing sdk, we will use
+#this installed local opkg
+install_opkg()
+{
+if [ ! -x "$LOCAL_OPKG_LOC/bin/opkg-cl" ]; then
+ echo_info "OPKG is not setup, setting up opkg in local, which is required for installing yocto ADT...\n"
+
+ if [ -d $LOCAL_OPKG_LOC ]; then
+ echo_info "Deleting old OPKG folder, which doesn't contain executables... "
+ rm -rf $LOCAL_OPKG_LOC
+ fi
+
+ parent_folder=`eval echo $PWD`
+ cd $LOCAL_OPKG_FOLDER
+ check_result
+
+ opkg_source_dir=`ls -d opkg-*`
+
+ if [ $opkg_source_dir == "" ]; then
+ echo_info "[ADT_INST] Error: OPKG source directory is not found!"
+ echo -e "\n#############################################################################"
+ echo -e "# Meet error(s) when installing Yocto ADT! Please check log file for details. "
+ echo -e "#############################################################################\n"
+ exit -1
+ fi
+
+ cd $opkg_source_dir
+ check_result
+
+ echo_info "Configure opkg ...\n"
+ ./configure --prefix=$parent_folder/$LOCAL_OPKG_LOC --with-opkglibdir=$OPKG_LIBDIR --disable-curl --disable-ssl-curl --disable-gpg --disable-shave >> $parent_folder/$YOCTOADT_INSTALL_LOG_FILE
+ check_result
+
+ echo_info "Make opkg ...\n"
+ make &>> $parent_folder/$YOCTOADT_INSTALL_LOG_FILE
+ check_result
+
+ echo_info "Make Install opkg ...\n"
+ make install &>> $parent_folder/$YOCTOADT_INSTALL_LOG_FILE
+ #if meet error when installing opkg, cancel the installation
+ check_result
+
+ cd $parent_folder
+ echo_info "Successfully installed OPKG.\n"
+fi
+}
+
+confirm_download()
+{
+#avoid repeated reminding
+if [ "$override_oldfile" == 1 ]; then
+ return $pre_result
+else
+ override_oldfile=1
+fi
+
+while true; do
+ #echo_info "[ADT_INST] Files [$1] already exists. If you continue downloading, old files will be overrided."
+ #echo_info "[ADT_INST] Further prompts will not be given if there're more existing files to be downloaded."
+ #echo_info "[ADT_INST] Do you want to continue downloading? Please enter Y/N:"
+ echo_info "\nFile [$1] already exists, which means you've downloaded the qemu kernel and rootfs file(s) before. If you choose continue downloading, old files will be overridden."
+ echo_info "[ADT_INST] Do you want to continue downloading? Please enter Y/N:"
+ read YOCTOADT_INSTALL
+ YOCTOADT_INSTALL=`tr '[a-z]' '[A-Z]'<<<"$YOCTOADT_INSTALL"`
+ if [ "$YOCTOADT_INSTALL" == "Y" ]; then
+ pre_result=0
+ return 0
+ elif [ "$YOCTOADT_INSTALL" == "N" ]; then
+ pre_result=1
+ return 1
+ fi
+done
+}
+
+download_file()
+{
+if [ -f "$LOCAL_DOWNLOAD/$1" ]; then
+ confirm_download $1
+ result="$?"
+ if [ ! "$result" == "0" ]; then
+ return
+ else
+ echo "Removing old file [$1]"
+ rm -rf "$LOCAL_DOWNLOAD/$1"
+ fi
+fi
+echo_info "Downloading file: $1..."
+wget "$YOCTOADT_IPKG_REPO/$1" -P $LOCAL_DOWNLOAD --progress=bar:force 2>&1 | tee -a "$YOCTOADT_INSTALL_LOG_FILE"
+}
+
+
+
+#Need two input params, $1 -- arch_type(arm powerpc x86 mips) $2 rootfs_image_type (a list of sdk sato minimal lsb)
+get_qemu_image()
+{
+ if [ "$1" == "x86" ]; then
+ qemu_kernel="bzImage-qemu$1.bin"
+ elif [ "$1" == "mips" ]; then
+ qemu_kernel="vmlinux-qemu$1.bin"
+ else
+ qemu_kernel="zImage-qemu$1.bin"
+ fi
+
+ #echo_info "[ADT_INST] Downloading qemu kernel binary: $qemu_kernel"
+ download_file qemu$1/$qemu_kernel
+ check_result
+
+ for image_type in $select_rootfs; do
+ #echo_info "[ADT_INST] Downloading rootfs file: poky-image-$image_type-qemu$1.tar.bz2"
+ filename="poky-image-$image_type-qemu$1.tar.bz2"
+ download_file qemu$1/$filename
+ check_result
+ done
+}
+
+download_images()
+{
+ #select_target_var="\$YOCTOADT_TARGET_$1"
+ #select_target=`eval echo $select_target_var`
+
+ #if [ "$select_target" == "Y" ]; then
+ select_rootfs_var="\$YOCTOADT_ROOTFS_$1"
+ select_sysroot_image_var="\$YOCTOADT_TARGET_SYSROOT_IMAGE_$1"
+ select_sysroot_var="\$YOCTOADT_TARGET_SYSROOT_LOC_$1"
+ select_rootfs=`eval echo $select_rootfs_var`
+ select_sysroot_image=`eval echo $select_sysroot_image_var`
+ select_sysroot=`eval echo $select_sysroot_var`
+
+ if [ "$select_rootfs" != "" ]; then
+ if [ $2 ]; then
+ #echo_info "\n############################################################################"
+ #echo_info "# To be downloaded rootfs image details defined in adt_installer.conf"
+ #echo_info "############################################################################"
+ echo_info "# Target architecture:\t\t$1"
+ echo_info "# Root_fs images:\t\t$select_rootfs"
+ echo_info "# Target sysroot image:\t\t$select_sysroot_image"
+ echo_info "# Target sysroot loc:\t\t$select_sysroot"
+ echo_info "\n"
+ #echo_info "############################################################################\n"
+ else
+ get_qemu_image $1 $select_rootfs
+ fi
+ fi
+}
+
+
+
+
+#Main body of installer
+
+clear
+
+run_path=`dirname $0`
+cd $run_path
+
+if [ ! -f "scripts/util" ]; then
+ echo -e "[ADT_INST] Error: Script file: util, can't be found under: $run_path!"
+ echo -e "\n#############################################################################"
+ echo -e "# Meet error(s) when installing Yocto ADT! Please check log file for details. "
+ echo -e "#############################################################################\n"
+ exit -1
+fi
+
+if [ ! -f "scripts/adt_installer_internal" ]; then
+ echo -e "[ADT_INST] Error: Script file: adt_installer_internal, can't be found under: $run_path!"
+ echo -e "\n#############################################################################"
+ echo -e "# Meet error(s) when installing Yocto ADT! Please check log file for details. "
+ echo -e "#############################################################################\n"
+ exit -1
+fi
+
+config_file="adt_installer.conf"
+if [ ! -f "$config_file" ]; then
+ echo_info "[ADT_INST] Error: Installation configuration file: adt_installer.conf is not found!\n"
+ echo_info "\n##################################################################################"
+ echo_info "# Meet error(s) when installing Yocto ADT. Please check log file for details. "
+ echo_info "##################################################################################\n"
+ exit -1
+fi
+
+. scripts/data_define
+. scripts/util
+
+
+if [ -f "$YOCTOADT_INSTALL_LOG_FILE" ]; then
+ rm $YOCTOADT_INSTALL_LOG_FILE
+fi
+
+
+usage
+
+user_inst_type="$?"
+
+validate_config
+check_result
+#firstly we need to install opkg host
+install_opkg
+
+#Create folders for holding rootfs/qemu images
+if [ ! -d "$LOCAL_DOWNLOAD" ]; then
+ echo_info "Creating new images downloading folder: $LOCAL_DOWNLOAD ..."
+ mkdir -p $LOCAL_DOWNLOAD
+fi
+
+#downloading required qemu images/rootfs
+if [ "$user_inst_type" == "0" ]; then
+ override_oldfile=1
+else
+ override_oldfile=0
+fi
+
+for arch_type in $YOCTOADT_SUPPORTED_TARGETS; do
+ download_images $arch_type
+done
+
+scripts/adt_installer_internal $user_inst_type
+
+result="$?"
+#echo_info "\n############################################################"
+if [ "$result" == "0" ]; then
+ echo_info "\n############################################################"
+ echo_info "# Yocto ADT has been successfully installed."
+ echo_info "############################################################\n"
+fi
+
diff --git a/meta/recipes-devtools/installer/adt-installer/adt_installer.conf b/meta/recipes-devtools/installer/adt-installer/adt_installer.conf
new file mode 100644
index 0000000000..db602f6d6d
--- /dev/null
+++ b/meta/recipes-devtools/installer/adt-installer/adt_installer.conf
@@ -0,0 +1,52 @@
+# Yocto ADT Installer Configuration File
+#
+# Copyright 2010-2011 by Intel Corp.
+#
+# 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
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+
+# Your yocto distro repository, this should include IPKG based packages and root filesystem files where the installation is based on
+
+YOCTOADT_IPKG_REPO="http://adtrepo.yoctoproject.org/1.0/rootfs"
+
+# The following are for system wide setup
+# Target architectures that you want to setup host cross dev environment for
+# valid values are: powerpc, mips, arm, x86, x86_64 with space separation between entries
+YOCTOADT_TARGETS="arm x86"
+# Whether install qemu or not, valid entries are: Y/N
+YOCTOADT_QEMU="Y"
+# Whether install user-mode nfs or not, valid entries are: Y/N. If you want to use Yocto Eclipse plug-in as your dev IDE, you need to select both qemu and NFS
+YOCTOADT_NFS_UTIL="Y"
+
+# These 2 values will be supported in the furture installer
+#YOCTOADT_BITBAKE="Y"
+#YOCTOADT_METADATA="Y"
+
+#The followings are for setting up specific target architecture
+#YOCTOADT_ROOTFS_$arch is for specifying what root filesystem image files you want to download from the repository. The valid values to replace $arch are: arm, x86, x86_64, powerpc, mips. The valid image files are: minimal, sato, sdk and lsb. If you want to download multiple images, the entries are space separated
+YOCTOADT_ROOTFS_arm="minimal sato"
+#Specify which root filesystem file to use to extract as target sysroot. Please ensure the entry is in the list of downloaded root filesystem files that specified above in YOCTOADT_ROOTFS_$arch
+YOCTOADT_TARGET_SYSROOT_IMAGE_arm="minimal"
+#The location where the target sysroot will be setup
+YOCTOADT_TARGET_SYSROOT_LOC_arm="$HOME/test-yocto/arm"
+
+#Here's another example for setting up target arch of x86, by uncommenting it will trigger the installer to download and setup 2 sysroot environment for 2 target arches: arm and x86. If you want to add more target arch support, you can append more entries by following these samples
+#YOCTOADT_ROOTFS_x86="sdk"
+#YOCTOADT_TARGET_SYSROOT_IMAGE_x86="sdk"
+#YOCTOADT_TARGET_SYSROOT_LOC_x86="$HOME/test-yocto/x86"
diff --git a/meta/recipes-devtools/installer/adt-installer/opkg/conf/opkg-sdk-i686.conf b/meta/recipes-devtools/installer/adt-installer/opkg/conf/opkg-sdk-i686.conf
new file mode 100644
index 0000000000..1d8c89a840
--- /dev/null
+++ b/meta/recipes-devtools/installer/adt-installer/opkg/conf/opkg-sdk-i686.conf
@@ -0,0 +1,6 @@
+arch all 1
+arch any 6
+arch noarch 11
+arch i686-nativesdk 16
+src yp http://adtrepo.yoctoproject.org/1.0/adt-ipk
+src yp-i686-nativesdk http://adtrepo.yoctoproject.org/1.0/adt-ipk/i686-nativesdk
diff --git a/meta/recipes-devtools/installer/adt-installer/opkg/conf/opkg-sdk-x86_64.conf b/meta/recipes-devtools/installer/adt-installer/opkg/conf/opkg-sdk-x86_64.conf
new file mode 100644
index 0000000000..6b14f98630
--- /dev/null
+++ b/meta/recipes-devtools/installer/adt-installer/opkg/conf/opkg-sdk-x86_64.conf
@@ -0,0 +1,6 @@
+arch all 1
+arch any 6
+arch noarch 11
+arch x86_64-nativesdk 16
+src yp http://adtrepo.yoctoproject.org/1.0/adt-ipk
+src yp-x86_64-nativesdk http://adtrepo.yoctoproject.org/1.0/adt-ipk/x86_64-nativesdk
diff --git a/meta/recipes-devtools/installer/adt-installer/scripts/adt_installer_internal b/meta/recipes-devtools/installer/adt-installer/scripts/adt_installer_internal
new file mode 100755
index 0000000000..9653284e5a
--- /dev/null
+++ b/meta/recipes-devtools/installer/adt-installer/scripts/adt_installer_internal
@@ -0,0 +1,210 @@
+#!/bin/bash
+
+# Yocto ADT Installer
+#
+# Copyright 2010-2011 by Intel Corp.
+#
+# 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
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+parse_config()
+{
+ INST_ARCH=`uname -m`
+
+ case $INST_ARCH in
+ i[3-6]86)
+ OPKG_CONFIG_FILE=$YOCTOADT_OPKG_CONF_FILE_32
+ #POKY_NATIVE_SYSROOT="$INSTALL_FOLDER/sysroots/i586-pokysdk-linux/"
+ POKY_NATIVE_SYSROOT="$INSTALL_FOLDER/sysroots/$INST_ARCH-pokysdk-linux/"
+ ;;
+ x86_64)
+ OPKG_CONFIG_FILE=$YOCTOADT_OPKG_CONF_FILE_64
+ POKY_NATIVE_SYSROOT="$INSTALL_FOLDER/sysroots/x86_64-pokysdk-linux/"
+ ;;
+ *)
+ echo_info "[ADT_INST] Error: Installation Machine is not supported!"
+ exit -1
+ ;;
+ esac
+}
+
+
+#let us install a qemu-native firstly
+#installation step 2
+install_native_sdk()
+{
+
+echo_info "\nStart installing selected native ADT for archs: $YOCTOADT_TARGETS..."
+
+# where the packages are installed. Currently only / is supported
+NATIVE_INSTALL_DIR="/"
+
+if [ -d "$INSTALL_FOLDER" ]; then
+ echo_info "\nNative ADT installation directory \"$INSTALL_FOLDER\" already exists! Continue installation will override its contents!"
+ confirm_install $1
+fi
+
+#Now begin to install native sdk and extract qemu rootfs which needs privilege rights
+echo_info "#######################################################################"
+echo_info "Please note from this point on installation requires sudo password ..."
+echo_info "#######################################################################"
+username='id -nu'
+#we need to make this directory firstly since opkg need to use it.
+OPKG_LOCK_DIR="$NATIVE_INSTALL_DIR/$OPKG_LIBDIR/opkg"
+if [ ! -d "$OPKG_LOCK_DIR" ]; then
+ sudo mkdir -p $OPKG_LOCK_DIR
+ echo_info "Successfully create directory $OPKG_LOCK_DIR. "
+#if user delete /opt/poky, while dangling folders there, report error
+elif [ ! -d "$INSTALL_FOLDER" ]; then
+ echo_info "\nDangling opkg cache folder $OPKG_LOCK_DIR detected. Continue installation will remove the folder!"
+ confirm_install $1
+ sudo rm -rf $OPKG_LOCK_DIR
+ sudo mkdir -p $OPKG_LOCK_DIR
+#if user are updating installing, just let him/her go, give her/him prompt
+else
+ echo_info "ADT has already been installed. Will update its contents..."
+fi
+
+#first update repository
+OPKG_CMD="sudo $LOCAL_OPKG_LOC/bin/opkg-cl"
+
+echo_info "Updating opkg..."
+$OPKG_CMD -f $OPKG_CONFIG_FILE -o $NATIVE_INSTALL_DIR update &>> $YOCTOADT_INSTALL_LOG_FILE
+echo_info "opkg update process ended..."
+check_result
+
+#install below must sdk-host packages
+OPKG_INSTALL_CMD="$OPKG_CMD --force-overwrite"
+OPKG_INSTALL_NATIVE_CMD="$OPKG_INSTALL_CMD -f $OPKG_CONFIG_FILE -o $NATIVE_INSTALL_DIR install"
+
+echo_info "Installing pseudo nativesdk ...\n"
+$OPKG_INSTALL_NATIVE_CMD pseudo-nativesdk &>> $YOCTOADT_INSTALL_LOG_FILE
+check_result
+echo_info "Installing opkg nativesdk ...\n"
+$OPKG_INSTALL_NATIVE_CMD opkg-nativesdk &>> $YOCTOADT_INSTALL_LOG_FILE
+check_result
+echo_info "Installing pkgconfig nativesdk ...\n"
+$OPKG_INSTALL_NATIVE_CMD pkgconfig-nativesdk &>> $YOCTOADT_INSTALL_LOG_FILE
+check_result
+
+for native_target_type in $YOCTOADT_TARGETS; do
+ native_target_type=`echo "$native_target_type" | sed -e 's/x86_64/x86-64/' -e 's/x86$/i586/'`
+ echo_info "Installing cross toolchain for $native_target_type ..."
+ echo_info "Installing binutils for $native_target_type ..."
+ $OPKG_INSTALL_NATIVE_CMD binutils-cross-canadian-$native_target_type &>> $YOCTOADT_INSTALL_LOG_FILE
+ check_result
+ echo_info "Installing gcc for $native_target_type ..."
+ $OPKG_INSTALL_NATIVE_CMD gcc-cross-canadian-$native_target_type &>> $YOCTOADT_INSTALL_LOG_FILE
+ check_result
+ echo_info "Installing gdb for $native_target_type ..."
+ $OPKG_INSTALL_NATIVE_CMD gdb-cross-canadian-$native_target_type &>> $YOCTOADT_INSTALL_LOG_FILE
+ check_result
+
+ echo_info "Installing envrionement file for $native_target_type ..."
+ $OPKG_INSTALL_NATIVE_CMD meta-environment-$native_target_type &>> $YOCTOADT_INSTALL_LOG_FILE
+ check_result
+
+done
+
+# Link the ld.so.cache file into the hosts filesystem
+if [ ! -f "$POKY_NATIVE_SYSROOT/etc/ld.so.cache" ]; then
+echo_info "Link the ld.so.cache file into the host filesystem"
+sudo ln -s /etc/ld.so.cache $POKY_NATIVE_SYSROOT/etc/ld.so.cache
+check_result
+fi
+
+if [ "$YOCTOADT_QEMU" == "Y" ] || [ "$YOCTOADT_QEMU" = "y" ]; then
+ echo_info "\nInstalling qemu native ..."
+ $OPKG_INSTALL_NATIVE_CMD qemu-nativesdk &>> $YOCTOADT_INSTALL_LOG_FILE
+ check_result
+ $OPKG_INSTALL_NATIVE_CMD qemu-helper-nativesdk &>> $YOCTOADT_INSTALL_LOG_FILE
+ check_result
+fi
+
+if [ "$YOCTOADT_NFS_UTIL" == "Y" ] || [ "$YOCTOADT_NFS_UTIL" == "y" ]; then
+ echo_info "\nInstalling unfs ..."
+ $OPKG_INSTALL_NATIVE_CMD unfs-server-nativesdk &>> $YOCTOADT_INSTALL_LOG_FILE
+ check_result
+fi
+
+echo_info "\nSuccessfully installed selected native ADT!"
+}
+
+#Need three input params, $1 -- arch_type(arm powerpc x86 mips) #2 -- user installation type
+#customer or scilent
+
+install_target()
+{
+
+# rootfs extraction directory
+target_sysroot_var="\$YOCTOADT_TARGET_SYSROOT_LOC_$1"
+target_sysroot=`eval echo $target_sysroot_var`
+
+if [ "$target_sysroot" == "" ]; then
+ return 0
+fi
+
+target_sysroot_image_var="\$YOCTOADT_TARGET_SYSROOT_IMAGE_$1"
+target_sysroot_image=`eval echo $target_sysroot_image_var`
+if [ "$target_sysroot_image" == "" ]; then
+ echo_info "[ADT_INST] Error: YOCTOADT_TARGET_SYSROOT_IMAGE_$1 selection is empty, failed to create target sysroot!"
+ return 1
+fi
+
+echo_info "Installing target sysroot for arch: $1, rootfs type: $target_sysroot_image, location: $target_sysroot"
+
+sysroot_image_name="poky-image-$target_sysroot_image-qemu$1.tar.bz2"
+ #echo_info "Extracting rootfs: $sysroot_image_name, using pseudo..."
+
+scripts/extract_rootfs $sysroot_image_name $target_sysroot $POKY_NATIVE_SYSROOT $user_inst_type
+check_result
+
+echo_info "Updating environment script with target sysroot location."
+if [ "$1" == "x86" ]; then
+ env_filename=`ls $INSTALL_FOLDER/environment-setup-i586*`
+else
+ env_filename=`ls $INSTALL_FOLDER/environment-setup-$1*`
+fi
+if [ ! -z "$env_filename" ]; then
+ sudo sed -i -e "s%##SDKTARGETSYSROOT##%$target_sysroot%g" $env_filename
+else
+ echo_info "[ADT_INST] Error: Failed to find environment script for arch: $1"
+ return 1
+fi
+
+
+}
+
+
+#Main part
+. scripts/data_define
+. scripts/util
+
+parse_config
+
+#secondly we will start to install native tools
+user_inst_type=$1
+install_native_sdk $user_inst_type
+check_result
+
+for arch_type in $YOCTOADT_SUPPORTED_TARGETS; do
+ install_target $arch_type
+ check_result
+done
+
+
diff --git a/meta/recipes-devtools/installer/adt-installer/scripts/data_define b/meta/recipes-devtools/installer/adt-installer/scripts/data_define
new file mode 100644
index 0000000000..2895c4f188
--- /dev/null
+++ b/meta/recipes-devtools/installer/adt-installer/scripts/data_define
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# Yocto ADT Installer
+#
+# Copyright 2010-2011 by Intel Corp.
+#
+# 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
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+config_file="adt_installer.conf"
+source $config_file
+
+LOCAL_OPKG_LOC="./opkg/build/opkg"
+LOCAL_OPKG_FOLDER="./opkg/build"
+OPKG_LIBDIR="/var/lib"
+
+# List all supported root fs types and target types,
+# it will be used in user configuration validity checking
+YOCTOADT_SUPPORTED_ROOTFS="minimal sato sdk lsb"
+YOCTOADT_SUPPORTED_TARGETS="x86 x86_64 arm powerpc mips"
+# Different host (32 bit or 64 bit) will have different opkg
+# configuration files
+YOCTOADT_OPKG_CONF_FILE_32="./opkg/conf/opkg-sdk-i686.conf"
+YOCTOADT_OPKG_CONF_FILE_64="./opkg/conf/opkg-sdk-x86_64.conf"
+INSTALL_FOLDER=/opt/poky/$YOCTOADT_VERSION
diff --git a/meta/recipes-devtools/installer/adt-installer/scripts/extract_rootfs b/meta/recipes-devtools/installer/adt-installer/scripts/extract_rootfs
new file mode 100755
index 0000000000..3dd47f0f75
--- /dev/null
+++ b/meta/recipes-devtools/installer/adt-installer/scripts/extract_rootfs
@@ -0,0 +1,67 @@
+#!/bin/bash
+
+# Yocto ADT Installer
+#
+# Copyright 2010-2011 by Intel Corp.
+#
+# 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
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+extract_rootfs()
+{
+
+ native_sysroot=$3
+ target_sysroot=$2
+ PSEUDO_COMMAND="$native_sysroot/usr/bin/pseudo"
+ PSEUDO_OPTS="-P $natvie_sysroot/usr"
+ TAR_OPTS="-xjf"
+ PSEUDO_OPTS="-P $native_sysroot/usr"
+
+
+ rm -rf $PSEUDO_LOCALSTATEDIR
+
+ if [ -d "$target_sysroot" ]; then
+ echo_info "\nTarget sysroot location: $target_sysroot, already exists! If you continue installation, this folder will be re-created."
+ confirm_install $4
+ rm -rf "$target_sysroot"
+ fi
+
+ if [ ! -d "$target_sysroot" ]; then
+ echo_info "Creating directory $target_sysroot..."
+ mkdir -p "$target_sysroot"
+ fi
+
+ mkdir -p "$target_sysroot/var/pseudo"
+ touch "$target_sysroot/var/pseudo/pseudo.pid"
+ PSEUDO_LOCALSTATEDIR="$target_sysroot/var/pseudo"
+ export PSEUDO_LOCALSTATEDIR
+
+ echo_info "Extracting rootfs: $1, using pseudo..."
+ $PSEUDO_COMMAND $PSEUDO_OPTS tar -C $2 "$TAR_OPTS" $LOCAL_DOWNLOAD/$1 &>> $YOCTOADT_INSTALL_LOG_FILE
+ check_result
+}
+
+#Main part
+. scripts/util
+
+#Parameter detail is listed below:
+#Param 4: Silent install or customize install
+#Param 3: POKY_NATIVE_SYSROOT
+#Param 2: user defined rootfs extraction directory
+#param 1: sysroot image name
+extract_rootfs $1 $2 $3 $4
diff --git a/meta/recipes-devtools/installer/adt-installer/scripts/util b/meta/recipes-devtools/installer/adt-installer/scripts/util
new file mode 100644
index 0000000000..4b88feea5a
--- /dev/null
+++ b/meta/recipes-devtools/installer/adt-installer/scripts/util
@@ -0,0 +1,104 @@
+#!/bin/bash
+
+# Yocto ADT Installer
+#
+# Copyright 2010-2011 by Intel Corp.
+#
+# 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
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+echo_info()
+{
+ echo -e $1 | tee -a $YOCTOADT_INSTALL_LOG_FILE
+}
+
+select_install_type()
+{
+# If choosing silent install, all older installation data will be
+# overriden without user's interaction
+while true; do
+ #echo_info "[ADT_INST] Silent install means overrides all existing older"
+ #echo_info "[ADT_INST] data and the installation needs least user interaction"
+ #echo_info "[ADT_INST] If you want to use silent installation, please enter S:"
+ #echo_info "[ADT_INST] If you want to customize installation, please enter C:"
+ #echo_info "[ADT_INST} If you want to exit current installation, please enter X:"
+ echo_info "There're two ways you can do installation: silent mode or interactive mode. To choose silent mode, which means you opt for the system to override the existing data under the specified installation directories without prompting for your confirmation. Please be cautious with this selection which may trigger your losing data. With the interactive mode, you have to closely monitor the installation process, since it will prompt you each step it needs to override some existing data. To choose silent mode, please enter [S], for interactive mode, please enter [I] or [X] to exit the installation."
+ echo_info "[ADT_INST] Please enter your selections here:"
+ read YOCTOADT_SEL
+ YOCTOADT_SEL=`tr '[a-z]' '[A-Z]'<<<"$YOCTOADT_SEL"`
+ if [ "$YOCTOADT_SEL" == "S" ]; then
+ return "0"
+ elif [ "$YOCTOADT_SEL" == "I" ]; then
+ return "1"
+ elif [ "$YOCTOADT_SEL" == "X" ]; then
+ echo_info "\n############################################################"
+ echo_info "# User cancelled installation!"
+ echo_info "############################################################\n"
+ exit 1
+ fi
+done
+
+
+}
+
+confirm_install()
+{
+# below are prompt, make sure user still want to install even meet
+# some prompts
+
+#User likes to enjoy silent installation, we will not break his
+#installation process here
+if [ "$1" == "0" ]; then
+ return
+fi
+
+while true; do
+ echo_info "[ADT_INST] Do you want to continue installation? Please enter Y/N:"
+ read YOCTOADT_INSTALL
+ YOCTOADT_INSTALL=`tr '[a-z]' '[A-Z]'<<<"$YOCTOADT_INSTALL"`
+ if [ "$YOCTOADT_INSTALL" == "Y" ]; then
+ break
+ elif [ "$YOCTOADT_INSTALL" == "N" ]; then
+ echo_info "\n############################################################"
+ echo_info "# User cancelled installation!"
+ echo_info "############################################################\n"
+ exit 1
+ fi
+done
+}
+
+check_result()
+{
+ result="$?"
+ if [ "$result" == "-1" ]; then
+ echo_info "\n#############################################################################"
+ echo_info "# Meet error(s) when installing Yocto ADT! Please check log file for details. "
+ echo_info "#############################################################################\n"
+ exit -1
+ elif [ "$result" == "1" ]; then
+ exit -1
+ fi
+}
+
+# yocto adt installation log file
+YOCTOADT_INSTALL_LOG_FILE="adt_installer.log"
+# Temp folders holding qemu/rootfs downloaded images
+# It will be put into the installation folder
+LOCAL_DOWNLOAD="./download_image"
+
+
diff --git a/meta/recipes-devtools/installer/adt-installer_1.0.bb b/meta/recipes-devtools/installer/adt-installer_1.0.bb
new file mode 100644
index 0000000000..e8659716c8
--- /dev/null
+++ b/meta/recipes-devtools/installer/adt-installer_1.0.bb
@@ -0,0 +1,84 @@
+# Yocto ADT Installer bb file
+#
+# Copyright 2010-2011 by Intel Corp.
+#
+# 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
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+
+DESCRIPTION = "Meta package for creating sdk installer tarball"
+LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
+ file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+LICENSE = "MIT"
+
+ALLOW_EMPTY = "1"
+
+PACKAGES = ""
+PACKAGE_ARCH = "all"
+
+PR = "r0"
+
+ADT_DEPLOY = "${TMPDIR}/deploy/sdk/"
+ADT_DIR = "${WORKDIR}/adt-installer/"
+YOCTOADT_VERSION = "${SDK_VERSION}"
+
+inherit deploy
+
+SRC_URI = "http://opkg.googlecode.com/files/opkg-0.1.8.tar.gz \
+ file://adt_installer \
+ file://scripts/adt_installer_internal \
+ file://scripts/util \
+ file://scripts/data_define \
+ file://scripts/extract_rootfs \
+ file://adt_installer.conf \
+ file://opkg/conf/opkg-sdk-x86_64.conf \
+ file://opkg/conf/opkg-sdk-i686.conf \
+ "
+SRC_URI[md5sum] = "c714ce0e4863bf1315e3b6913ffe3299"
+SRC_URI[sha256sum] = "ff94bf30bd662d49c4b5057e3a0818d062731adaa555d59abd677ec32a3c1c60"
+
+fakeroot do_deploy () {
+ cd ${WORKDIR}
+ mkdir -p ${ADT_DEPLOY}
+ rm -f ${ADT_DEPLOY}/adt-installer.tar.bz2
+ rm -rf ${ADT_DIR}
+ mkdir -p ${ADT_DIR}/opkg/build
+ cp -r opkg ${ADT_DIR}/
+ cp -r opkg-0.1.8 ${ADT_DIR}/opkg/build/
+ cp -r scripts ${ADT_DIR}/
+ cp adt_installer ${ADT_DIR}
+ cp adt_installer.conf ${ADT_DIR}
+ echo 'YOCTOADT_VERSION=${SDK_VERSION}' > ${ADT_DIR}/temp.conf
+ cat ${ADT_DIR}/adt_installer.conf >> ${ADT_DIR}/temp.conf
+ mv ${ADT_DIR}/temp.conf ${ADT_DIR}/adt_installer.conf
+ tar cfj adt_installer.tar.bz2 adt-installer
+ cp ${WORKDIR}/adt_installer.tar.bz2 ${ADT_DEPLOY}
+}
+
+do_patch[noexec] = "1"
+do_install[noexec] = "1"
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+do_package[noexec] = "1"
+do_package_write[noexec] = "1"
+do_package_write_ipk[noexec] = "1"
+do_package_write_rpm[noexec] = "1"
+do_package_write_deb[noexec] = "1"
+do_poplulate_sysroot[noexec] = "1"
+
+addtask deploy before do_populate_sysroot after do_unpack
diff --git a/meta/recipes-devtools/intltool/intltool.inc b/meta/recipes-devtools/intltool/intltool.inc
index f9bdf93b7b..9df79f580b 100644
--- a/meta/recipes-devtools/intltool/intltool.inc
+++ b/meta/recipes-devtools/intltool/intltool.inc
@@ -8,8 +8,8 @@ SRC_URI = "${GNOME_MIRROR}/intltool/${URLV}/intltool-${PV}.tar.bz2"
S = "${WORKDIR}/intltool-${PV}"
DEPENDS = "libxml-parser-perl-native"
-#RDEPENDS = "libxml-parser-perl"
-RRECOMMENDS = "perl-modules"
+#RDEPENDS_${PN} = "libxml-parser-perl"
+RRECOMMENDS_${PN} = "perl-modules"
inherit autotools pkgconfig
diff --git a/meta/recipes-devtools/intltool/intltool_0.40.6.bb b/meta/recipes-devtools/intltool/intltool_0.40.6.bb
index 4b5fe820e8..88d441cb93 100644
--- a/meta/recipes-devtools/intltool/intltool_0.40.6.bb
+++ b/meta/recipes-devtools/intltool/intltool_0.40.6.bb
@@ -1,7 +1,7 @@
require intltool.inc
LICENSE="GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-PR = "r0"
+PR = "r1"
SRC_URI_append = " file://intltool-nowarn-0.40.0.patch"
diff --git a/meta/recipes-devtools/libtool/libtool-2.4.inc b/meta/recipes-devtools/libtool/libtool-2.4.inc
new file mode 100644
index 0000000000..e3d17b71d5
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool-2.4.inc
@@ -0,0 +1,13 @@
+require libtool.inc
+DEPENDS = "libtool-native"
+
+PACKAGES =+ "libltdl libltdl-dev libltdl-dbg"
+FILES_${PN} += "${datadir}/aclocal*"
+FILES_libltdl = "${libdir}/libltdl.so.*"
+FILES_libltdl-dev = "${libdir}/libltdl.* ${includedir}/ltdl.h"
+FILES_libltdl-dbg = "${libdir}/.debug/"
+
+SRC_URI[md5sum] = "b32b04148ecdd7344abc6fe8bd1bb021"
+SRC_URI[sha256sum] = "13df57ab63a94e196c5d6e95d64e53262834fe780d5e82c28f177f9f71ddf62e"
+
+EXTRA_OECONF = "--with-sysroot" \ No newline at end of file
diff --git a/meta/recipes-devtools/libtool/libtool-cross_2.4.bb b/meta/recipes-devtools/libtool/libtool-cross_2.4.bb
index 6ea96a5537..e3b40f2560 100644
--- a/meta/recipes-devtools/libtool/libtool-cross_2.4.bb
+++ b/meta/recipes-devtools/libtool/libtool-cross_2.4.bb
@@ -1,11 +1,8 @@
-require libtool_${PV}.bb
+require libtool-${PV}.inc
-PR = "r0"
+PR = "r1"
PACKAGES = ""
-SRC_URI_append = " file://cross_compile.patch \
- file://prefix.patch "
-
-DEPENDS += "libtool-native"
+SRC_URI += "file://prefix.patch"
do_configure_prepend () {
# Remove any existing libtool m4 since old stale versions would break
@@ -29,6 +26,6 @@ do_install () {
SYSROOT_PREPROCESS_FUNCS += "libtoolcross_sysroot_preprocess"
libtoolcross_sysroot_preprocess () {
- install -d ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}/
- install -m 755 ${D}${bindir}/${HOST_SYS}-libtool ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}/${HOST_SYS}-libtool
+ install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}
+ install -m 755 ${D}${bindir}/${HOST_SYS}-libtool ${SYSROOT_DESTDIR}${bindir_crossscripts}/${HOST_SYS}-libtool
}
diff --git a/meta/recipes-devtools/libtool/libtool-native_2.4.bb b/meta/recipes-devtools/libtool/libtool-native_2.4.bb
index 4ad660b507..4163e8972a 100644
--- a/meta/recipes-devtools/libtool/libtool-native_2.4.bb
+++ b/meta/recipes-devtools/libtool/libtool-native_2.4.bb
@@ -1,13 +1,14 @@
-require libtool_${PV}.bb
+require libtool-${PV}.inc
DEPENDS = ""
-PR = "r0"
-SRC_URI_append = " file://cross_compile.patch \
- file://prefix.patch "
+PR = "r1"
+SRC_URI += "file://prefix.patch"
inherit native
+EXTRA_OECONF = " --with-libtool-sysroot=${STAGING_DIR_NATIVE}"
+
do_configure_prepend () {
# Remove any existing libtool m4 since old stale versions would break
# any upgrade
@@ -21,5 +22,3 @@ do_install () {
install -m 0755 ${HOST_SYS}-libtool ${D}${bindir}/${HOST_SYS}-libtool
}
-SRC_URI[md5sum] = "b32b04148ecdd7344abc6fe8bd1bb021"
-SRC_URI[sha256sum] = "13df57ab63a94e196c5d6e95d64e53262834fe780d5e82c28f177f9f71ddf62e"
diff --git a/meta/recipes-devtools/libtool/libtool-nativesdk_2.4.bb b/meta/recipes-devtools/libtool/libtool-nativesdk_2.4.bb
index c9f24a95bf..45c9af66c6 100644
--- a/meta/recipes-devtools/libtool/libtool-nativesdk_2.4.bb
+++ b/meta/recipes-devtools/libtool/libtool-nativesdk_2.4.bb
@@ -1,8 +1,7 @@
-require libtool_${PV}.bb
+require libtool-${PV}.inc
-PR = "r0"
-SRC_URI_append = " file://cross_compile.patch \
- file://prefix.patch "
+PR = "r1"
+SRC_URI += "file://prefix.patch"
inherit nativesdk
@@ -22,6 +21,6 @@ do_install () {
SYSROOT_PREPROCESS_FUNCS += "libtoolnativesdk_sysroot_preprocess"
libtoolnativesdk_sysroot_preprocess () {
- install -d ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}/
- install -m 755 ${D}${bindir}/${HOST_SYS}-libtool ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}/${HOST_SYS}-libtool
+ install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+ install -m 755 ${D}${bindir}/${HOST_SYS}-libtool ${SYSROOT_DESTDIR}${bindir_crossscripts}/${HOST_SYS}-libtool
}
diff --git a/meta/recipes-devtools/libtool/libtool.inc b/meta/recipes-devtools/libtool/libtool.inc
index 9690e3b7bf..8701c820d2 100644
--- a/meta/recipes-devtools/libtool/libtool.inc
+++ b/meta/recipes-devtools/libtool/libtool.inc
@@ -1,14 +1,26 @@
SUMMARY = "Generic library support script"
-DESCRIPTION = "This is GNU libtool, a generic library support script. Libtool hides \
-the complexity of generating special library types (such as shared \
-libraries) behind a consistent interface."
+DESCRIPTION = "This is GNU libtool, a generic library support script. \
+Libtool hides the complexity of generating special library types \
+(such as shared libraries) behind a consistent interface."
HOMEPAGE = "http://www.gnu.org/software/libtool/libtool.html"
SECTION = "devel"
LICENSE = "GPLv2, LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
- file://libltdl/COPYING.LIB;md5=e3eda01d9815f8d24aae2dbd89b68b06 "
+ file://libltdl/COPYING.LIB;md5=e3eda01d9815f8d24aae2dbd89b68b06"
SRC_URI = "${GNU_MIRROR}/libtool/libtool-${PV}.tar.gz \
file://trailingslash.patch \
- file://prefix-manpage-fix.patch "
+ file://prefix-manpage-fix.patch \
+ file://rename-with-sysroot.patch \
+ file://resolve-sysroot.patch \
+ file://use-sysroot-in-libpath.patch \
+ file://fix-final-rpath.patch"
+do_compile_prepend () {
+ # Sometimes this file doesn't get rebuilt, force the issue
+ rm -f ${S}/libltdl/config/ltmain.sh
+ make libltdl/config/ltmain.sh
+}
+
+inherit autotools
+EXTRA_AUTORECONF = "--exclude=libtoolize"
diff --git a/meta/recipes-devtools/libtool/libtool/cross_compile.patch b/meta/recipes-devtools/libtool/libtool/cross_compile.patch
deleted file mode 100644
index 28539ff039..0000000000
--- a/meta/recipes-devtools/libtool/libtool/cross_compile.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-Tweaks to make cross-compiling work combined and updated from various
-older patches, some by Chris Larson.
-Not upstreable in this form.
-
-RP - 01/05/2008
-
-Index: libtool-2.4/libltdl/config/ltmain.m4sh
-===================================================================
---- libtool-2.4.orig/libltdl/config/ltmain.m4sh
-+++ libtool-2.4/libltdl/config/ltmain.m4sh
-@@ -6121,8 +6121,6 @@ func_mode_link ()
- add="$libdir/$linklib"
- fi
- else
-- # We cannot seem to hardcode it, guess we'll fake it.
-- add_dir="-L$libdir"
- # Try looking first in the location we're being installed to.
- if test -n "$inst_prefix_dir"; then
- case $libdir in
-@@ -6277,7 +6275,17 @@ func_mode_link ()
- fi
- ;;
- *)
-- path="-L$absdir/$objdir"
-+ # OE sets installed=no in staging. We need to look in $objdir and $absdir,
-+ # preferring $objdir. RP 31/04/2008
-+ if test -f "$absdir/$objdir/$depdepl" ; then
-+ depdepl="$absdir/$objdir/$depdepl"
-+ path="-L$absdir/$objdir"
-+ elif test -f "$absdir/$depdepl" ; then
-+ depdepl="$absdir/$depdepl"
-+ path="-L$absdir"
-+ else
-+ path="-L$absdir/$objdir"
-+ fi
- ;;
- esac
- else
diff --git a/meta/recipes-devtools/libtool/libtool/fix-final-rpath.patch b/meta/recipes-devtools/libtool/libtool/fix-final-rpath.patch
new file mode 100644
index 0000000000..402e2c6b51
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/fix-final-rpath.patch
@@ -0,0 +1,36 @@
+Enalbing sysroot support exposed a bug where the final library
+had an RPATH encoded into it which still pointed to the sysroot.
+This works around the issue until it gets sorted out upstream.
+
+Fix suggested by Richard Purdie <richard.purdie@intel.com>
+Signed-off-by: Scott Garman <scott.a.garman@intel.com>
+
+Index: libtool-2.4/libltdl/config/ltmain.m4sh
+===================================================================
+--- libtool-2.4.orig/libltdl/config/ltmain.m4sh 2011-01-13 14:10:14.580025108 +0000
++++ libtool-2.4/libltdl/config/ltmain.m4sh 2011-01-13 15:10:18.540025113 +0000
+@@ -7246,9 +7246,11 @@
+ test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
+ for libdir in $rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
++ func_replace_sysroot "$libdir"
++ libdir=$func_replace_sysroot_result
++ func_stripname '=' '' "$libdir"
++ libdir=$func_stripname_result
+ if test -n "$hardcode_libdir_separator"; then
+- func_replace_sysroot "$libdir"
+- libdir=$func_replace_sysroot_result
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+@@ -7981,6 +7983,10 @@
+ hardcode_libdirs=
+ for libdir in $compile_rpath $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
++ func_replace_sysroot "$libdir"
++ libdir=$func_replace_sysroot_result
++ func_stripname '=' '' "$libdir"
++ libdir=$func_stripname_result
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
diff --git a/meta/recipes-devtools/libtool/libtool/rename-with-sysroot.patch b/meta/recipes-devtools/libtool/libtool/rename-with-sysroot.patch
new file mode 100644
index 0000000000..8455d950df
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/rename-with-sysroot.patch
@@ -0,0 +1,824 @@
+This patch renames the --with-sysroot option to --with-libtool-sysroot
+to avoid namespace conflict with binutils, gcc and other toolchain
+components.
+
+I also reported the problem to libtool here
+
+http://lists.gnu.org/archive/html/libtool/2010-10/msg00048.html
+
+-Khem Raj <raj.khem@gmail.com>
+
+Index: libtool-2.4/configure
+===================================================================
+--- libtool-2.4.orig/configure
++++ libtool-2.4/configure
+@@ -786,7 +786,7 @@ enable_static
+ with_pic
+ enable_fast_install
+ with_gnu_ld
+-with_sysroot
++with_libtool_sysroot
+ enable_libtool_lock
+ with_gnu_ld
+ '
+@@ -1451,7 +1451,7 @@ Optional Packages:
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+- --with-sysroot=DIR Search for dependent libraries within DIR
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
+ (or the compiler's sysroot if not specified).
+
+ Some influential environment variables:
+@@ -6798,29 +6798,29 @@ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+ $as_echo_n "checking for sysroot... " >&6; }
+
+-# Check whether --with-sysroot was given.
+-if test "${with_sysroot+set}" = set; then :
+- withval=$with_sysroot;
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
+ else
+- with_sysroot=no
++ with_libtool_sysroot=no
+ fi
+
+
+ lt_sysroot=
+-case ${with_sysroot} in #(
++case ${with_libtool_sysroot} in #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+-$as_echo "${with_sysroot}" >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+ ;;
+ esac
+Index: libtool-2.4/libltdl/configure
+===================================================================
+--- libtool-2.4.orig/libltdl/configure
++++ libtool-2.4/libltdl/configure
+@@ -739,7 +739,7 @@ with_pic
+ enable_fast_install
+ enable_dependency_tracking
+ with_gnu_ld
+-with_sysroot
++with_libtool_sysroot
+ enable_libtool_lock
+ enable_ltdl_install
+ '
+@@ -1388,7 +1388,7 @@ Optional Packages:
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+- --with-sysroot=DIR Search for dependent libraries within DIR
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
+ (or the compiler's sysroot if not specified).
+
+ Some influential environment variables:
+@@ -6004,29 +6004,29 @@ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+ $as_echo_n "checking for sysroot... " >&6; }
+
+-# Check whether --with-sysroot was given.
+-if test "${with_sysroot+set}" = set; then :
+- withval=$with_sysroot;
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
+ else
+- with_sysroot=no
++ with_libtool_sysroot=no
+ fi
+
+
+ lt_sysroot=
+-case ${with_sysroot} in #(
++case ${with_libtool_sysroot} in #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+-$as_echo "${with_sysroot}" >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+ ;;
+ esac
+Index: libtool-2.4/libltdl/m4/libtool.m4
+===================================================================
+--- libtool-2.4.orig/libltdl/m4/libtool.m4
++++ libtool-2.4/libltdl/m4/libtool.m4
+@@ -1180,27 +1180,27 @@ _LT_DECL([], [ECHO], [1], [An echo progr
+ # ----------------
+ AC_DEFUN([_LT_WITH_SYSROOT],
+ [AC_MSG_CHECKING([for sysroot])
+-AC_ARG_WITH([sysroot],
+-[ --with-sysroot[=DIR] Search for dependent libraries within DIR
++AC_ARG_WITH([libtool-sysroot],
++[ --with-libtool-sysroot[=DIR] Search for dependent libraries within DIR
+ (or the compiler's sysroot if not specified).],
+-[], [with_sysroot=no])
++[], [with_libtool_sysroot=no])
+
+ dnl lt_sysroot will always be passed unquoted. We quote it here
+ dnl in case the user passed a directory name.
+ lt_sysroot=
+-case ${with_sysroot} in #(
++case ${with_libtool_sysroot} in #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+- AC_MSG_RESULT([${with_sysroot}])
++ AC_MSG_RESULT([${with_libtool_sysroot}])
+ AC_MSG_ERROR([The sysroot must be an absolute path.])
+ ;;
+ esac
+Index: libtool-2.4/tests/cdemo/configure
+===================================================================
+--- libtool-2.4.orig/tests/cdemo/configure
++++ libtool-2.4/tests/cdemo/configure
+@@ -726,7 +726,7 @@ enable_static
+ with_pic
+ enable_fast_install
+ with_gnu_ld
+-with_sysroot
++with_libtool_sysroot
+ enable_libtool_lock
+ '
+ ac_precious_vars='build_alias
+@@ -1373,7 +1373,7 @@ Optional Packages:
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+- --with-sysroot=DIR Search for dependent libraries within DIR
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
+ (or the compiler's sysroot if not specified).
+
+ Some influential environment variables:
+@@ -5884,29 +5884,29 @@ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+ $as_echo_n "checking for sysroot... " >&6; }
+
+-# Check whether --with-sysroot was given.
+-if test "${with_sysroot+set}" = set; then :
+- withval=$with_sysroot;
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
+ else
+- with_sysroot=no
++ with_libtool_sysroot=no
+ fi
+
+
+ lt_sysroot=
+-case ${with_sysroot} in #(
++case ${with_libtool_sysroot} in #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+-$as_echo "${with_sysroot}" >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+ ;;
+ esac
+Index: libtool-2.4/tests/demo/configure
+===================================================================
+--- libtool-2.4.orig/tests/demo/configure
++++ libtool-2.4/tests/demo/configure
+@@ -730,7 +730,7 @@ enable_static
+ with_pic
+ enable_fast_install
+ with_gnu_ld
+-with_sysroot
++with_libtool_sysroot
+ enable_libtool_lock
+ '
+ ac_precious_vars='build_alias
+@@ -1377,7 +1377,7 @@ Optional Packages:
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+- --with-sysroot=DIR Search for dependent libraries within DIR
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
+ (or the compiler's sysroot if not specified).
+
+ Some influential environment variables:
+@@ -5882,29 +5882,29 @@ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+ $as_echo_n "checking for sysroot... " >&6; }
+
+-# Check whether --with-sysroot was given.
+-if test "${with_sysroot+set}" = set; then :
+- withval=$with_sysroot;
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
+ else
+- with_sysroot=no
++ with_libtool_sysroot=no
+ fi
+
+
+ lt_sysroot=
+-case ${with_sysroot} in #(
++case ${with_libtool_sysroot} in #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+-$as_echo "${with_sysroot}" >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+ ;;
+ esac
+Index: libtool-2.4/tests/depdemo/configure
+===================================================================
+--- libtool-2.4.orig/tests/depdemo/configure
++++ libtool-2.4/tests/depdemo/configure
+@@ -728,7 +728,7 @@ enable_static
+ with_pic
+ enable_fast_install
+ with_gnu_ld
+-with_sysroot
++with_libtool_sysroot
+ enable_libtool_lock
+ '
+ ac_precious_vars='build_alias
+@@ -1375,7 +1375,7 @@ Optional Packages:
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+- --with-sysroot=DIR Search for dependent libraries within DIR
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
+ (or the compiler's sysroot if not specified).
+
+ Some influential environment variables:
+@@ -5879,29 +5879,29 @@ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+ $as_echo_n "checking for sysroot... " >&6; }
+
+-# Check whether --with-sysroot was given.
+-if test "${with_sysroot+set}" = set; then :
+- withval=$with_sysroot;
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
+ else
+- with_sysroot=no
++ with_libtool_sysroot=no
+ fi
+
+
+ lt_sysroot=
+-case ${with_sysroot} in #(
++case ${with_libtool_sysroot} in #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+-$as_echo "${with_sysroot}" >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+ ;;
+ esac
+Index: libtool-2.4/tests/f77demo/configure
+===================================================================
+--- libtool-2.4.orig/tests/f77demo/configure
++++ libtool-2.4/tests/f77demo/configure
+@@ -730,7 +730,7 @@ enable_static
+ with_pic
+ enable_fast_install
+ with_gnu_ld
+-with_sysroot
++with_libtool_sysroot
+ enable_libtool_lock
+ '
+ ac_precious_vars='build_alias
+@@ -1382,7 +1382,7 @@ Optional Packages:
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+- --with-sysroot=DIR Search for dependent libraries within DIR
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
+ (or the compiler's sysroot if not specified).
+
+ Some influential environment variables:
+@@ -6864,29 +6864,29 @@ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+ $as_echo_n "checking for sysroot... " >&6; }
+
+-# Check whether --with-sysroot was given.
+-if test "${with_sysroot+set}" = set; then :
+- withval=$with_sysroot;
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
+ else
+- with_sysroot=no
++ with_libtool_sysroot=no
+ fi
+
+
+ lt_sysroot=
+-case ${with_sysroot} in #(
++case ${with_libtool_sysroot} in #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+-$as_echo "${with_sysroot}" >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+ ;;
+ esac
+Index: libtool-2.4/tests/fcdemo/configure
+===================================================================
+--- libtool-2.4.orig/tests/fcdemo/configure
++++ libtool-2.4/tests/fcdemo/configure
+@@ -731,7 +731,7 @@ enable_static
+ with_pic
+ enable_fast_install
+ with_gnu_ld
+-with_sysroot
++with_libtool_sysroot
+ enable_libtool_lock
+ '
+ ac_precious_vars='build_alias
+@@ -1383,7 +1383,7 @@ Optional Packages:
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+- --with-sysroot=DIR Search for dependent libraries within DIR
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
+ (or the compiler's sysroot if not specified).
+
+ Some influential environment variables:
+@@ -6963,29 +6963,29 @@ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+ $as_echo_n "checking for sysroot... " >&6; }
+
+-# Check whether --with-sysroot was given.
+-if test "${with_sysroot+set}" = set; then :
+- withval=$with_sysroot;
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
+ else
+- with_sysroot=no
++ with_libtool_sysroot=no
+ fi
+
+
+ lt_sysroot=
+-case ${with_sysroot} in #(
++case ${with_libtool_sysroot} in #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+-$as_echo "${with_sysroot}" >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+ ;;
+ esac
+Index: libtool-2.4/tests/mdemo/configure
+===================================================================
+--- libtool-2.4.orig/tests/mdemo/configure
++++ libtool-2.4/tests/mdemo/configure
+@@ -734,7 +734,7 @@ enable_static
+ with_pic
+ enable_fast_install
+ with_gnu_ld
+-with_sysroot
++with_libtool_sysroot
+ enable_libtool_lock
+ '
+ ac_precious_vars='build_alias
+@@ -1381,7 +1381,7 @@ Optional Packages:
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+- --with-sysroot=DIR Search for dependent libraries within DIR
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
+ (or the compiler's sysroot if not specified).
+
+ Some influential environment variables:
+@@ -5911,29 +5911,29 @@ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+ $as_echo_n "checking for sysroot... " >&6; }
+
+-# Check whether --with-sysroot was given.
+-if test "${with_sysroot+set}" = set; then :
+- withval=$with_sysroot;
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
+ else
+- with_sysroot=no
++ with_libtool_sysroot=no
+ fi
+
+
+ lt_sysroot=
+-case ${with_sysroot} in #(
++case ${with_libtool_sysroot} in #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+-$as_echo "${with_sysroot}" >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+ ;;
+ esac
+Index: libtool-2.4/tests/mdemo2/configure
+===================================================================
+--- libtool-2.4.orig/tests/mdemo2/configure
++++ libtool-2.4/tests/mdemo2/configure
+@@ -726,7 +726,7 @@ enable_static
+ with_pic
+ enable_fast_install
+ with_gnu_ld
+-with_sysroot
++with_libtool_sysroot
+ enable_libtool_lock
+ '
+ ac_precious_vars='build_alias
+@@ -1373,7 +1373,7 @@ Optional Packages:
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+- --with-sysroot=DIR Search for dependent libraries within DIR
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
+ (or the compiler's sysroot if not specified).
+
+ Some influential environment variables:
+@@ -5884,29 +5884,29 @@ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+ $as_echo_n "checking for sysroot... " >&6; }
+
+-# Check whether --with-sysroot was given.
+-if test "${with_sysroot+set}" = set; then :
+- withval=$with_sysroot;
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
+ else
+- with_sysroot=no
++ with_libtool_sysroot=no
+ fi
+
+
+ lt_sysroot=
+-case ${with_sysroot} in #(
++case ${with_libtool_sysroot} in #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+-$as_echo "${with_sysroot}" >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+ ;;
+ esac
+Index: libtool-2.4/tests/pdemo/configure
+===================================================================
+--- libtool-2.4.orig/tests/pdemo/configure
++++ libtool-2.4/tests/pdemo/configure
+@@ -729,7 +729,7 @@ enable_static
+ with_pic
+ enable_fast_install
+ with_gnu_ld
+-with_sysroot
++with_libtool_sysroot
+ enable_libtool_lock
+ '
+ ac_precious_vars='build_alias
+@@ -1376,7 +1376,7 @@ Optional Packages:
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+- --with-sysroot=DIR Search for dependent libraries within DIR
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
+ (or the compiler's sysroot if not specified).
+
+ Some influential environment variables:
+@@ -5887,29 +5887,29 @@ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+ $as_echo_n "checking for sysroot... " >&6; }
+
+-# Check whether --with-sysroot was given.
+-if test "${with_sysroot+set}" = set; then :
+- withval=$with_sysroot;
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
+ else
+- with_sysroot=no
++ with_libtool_sysroot=no
+ fi
+
+
+ lt_sysroot=
+-case ${with_sysroot} in #(
++case ${with_libtool_sysroot} in #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+-$as_echo "${with_sysroot}" >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+ ;;
+ esac
+Index: libtool-2.4/tests/sysroot.at
+===================================================================
+--- libtool-2.4.orig/tests/sysroot.at
++++ libtool-2.4/tests/sysroot.at
+@@ -64,7 +64,7 @@ while read file; do
+ done])
+
+ LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
+-configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
++configure_options="$configure_options --with-libtool-sysroot=$sysroot --prefix=$prefix"
+
+ #???
+ if test "$shlibpath_var" = PATH; then
+@@ -114,7 +114,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([lib2.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ ]])
+@@ -155,7 +155,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([prog.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ ]])
+Index: libtool-2.4/tests/tagdemo/configure
+===================================================================
+--- libtool-2.4.orig/tests/tagdemo/configure
++++ libtool-2.4/tests/tagdemo/configure
+@@ -736,7 +736,7 @@ enable_static
+ with_pic
+ enable_fast_install
+ with_gnu_ld
+-with_sysroot
++with_libtool_sysroot
+ enable_libtool_lock
+ with_gnu_ld
+ '
+@@ -1392,7 +1392,7 @@ Optional Packages:
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+- --with-sysroot=DIR Search for dependent libraries within DIR
++ --with-libtool-sysroot=DIR Search for dependent libraries within DIR
+ (or the compiler's sysroot if not specified).
+
+ Some influential environment variables:
+@@ -6907,29 +6907,29 @@ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+ $as_echo_n "checking for sysroot... " >&6; }
+
+-# Check whether --with-sysroot was given.
+-if test "${with_sysroot+set}" = set; then :
+- withval=$with_sysroot;
++# Check whether --with-libtool-sysroot was given.
++if test "${with_libtool_sysroot+set}" = set; then :
++ withval=$with_libtool_sysroot;
+ else
+- with_sysroot=no
++ with_libtool_sysroot=no
+ fi
+
+
+ lt_sysroot=
+-case ${with_sysroot} in #(
++case ${with_libtool_sysroot} in #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+-$as_echo "${with_sysroot}" >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libtool_sysroot}" >&5
++$as_echo "${with_libtool_sysroot}" >&6; }
+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+ ;;
+ esac
+Index: libtool-2.4/tests/testsuite
+===================================================================
+--- libtool-2.4.orig/tests/testsuite
++++ libtool-2.4/tests/testsuite
+@@ -25277,7 +25277,7 @@ $at_traceon; }
+
+
+ LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
+-configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
++configure_options="$configure_options --with-libtool-sysroot=$sysroot --prefix=$prefix"
+
+ #???
+ if test "$shlibpath_var" = PATH; then
+@@ -25475,7 +25475,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([lib2.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ _ATEOF
+@@ -25652,7 +25652,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([prog.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ _ATEOF
+@@ -25993,7 +25993,7 @@ $at_traceon; }
+
+
+ LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
+-configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
++configure_options="$configure_options --with-libtool-sysroot=$sysroot --prefix=$prefix"
+
+ #???
+ if test "$shlibpath_var" = PATH; then
+@@ -26191,7 +26191,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([lib2.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ _ATEOF
+@@ -26368,7 +26368,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([prog.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ _ATEOF
+@@ -26709,7 +26709,7 @@ $at_traceon; }
+
+
+ LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
+-configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
++configure_options="$configure_options --with-libtool-sysroot=$sysroot --prefix=$prefix"
+
+ #???
+ if test "$shlibpath_var" = PATH; then
+@@ -26907,7 +26907,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([lib2.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ _ATEOF
+@@ -27084,7 +27084,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([prog.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ _ATEOF
diff --git a/meta/recipes-devtools/libtool/libtool/resolve-sysroot.patch b/meta/recipes-devtools/libtool/libtool/resolve-sysroot.patch
new file mode 100644
index 0000000000..54f7f5b736
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/resolve-sysroot.patch
@@ -0,0 +1,40 @@
+Sometimes .las have =/a/b/c.la in dependency_libs. This should be
+resolved to sysroot.
+
+-Khem Raj <raj.khem@gmail.com>
+
+Index: libtool-2.4/libltdl/config/ltmain.m4sh
+===================================================================
+--- libtool-2.4.orig/libltdl/config/ltmain.m4sh
++++ libtool-2.4/libltdl/config/ltmain.m4sh
+@@ -8479,7 +8479,8 @@ EOF
+ *.la)
+ func_basename "$deplib"
+ name="$func_basename_result"
+- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
++ func_resolve_sysroot "$deplib"
++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
+ test -z "$libdir" && \
+ func_fatal_error "\`$deplib' is not a valid libtool archive"
+ func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
+@@ -8505,7 +8506,9 @@ EOF
+ *.la)
+ func_basename "$lib"
+ name="$func_basename_result"
+- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
++ func_resolve_sysroot "$lib"
++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
++
+ test -z "$libdir" && \
+ func_fatal_error "\`$lib' is not a valid libtool archive"
+ func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
+@@ -8524,7 +8527,8 @@ EOF
+ # the library:
+ func_basename "$lib"
+ name="$func_basename_result"
+- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
++ func_resolve_sysroot "$lib"
++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
+ test -z "$libdir" && \
+ func_fatal_error "\`$lib' is not a valid libtool archive"
+ func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
diff --git a/meta/recipes-devtools/libtool/libtool/use-sysroot-in-libpath.patch b/meta/recipes-devtools/libtool/libtool/use-sysroot-in-libpath.patch
new file mode 100644
index 0000000000..4d9e90c144
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/use-sysroot-in-libpath.patch
@@ -0,0 +1,20 @@
+When using sysroot we should append it to libdir, which is helpful in
+cross builds as the system is staged in the sysroot. For normal builds,
+i.e. when lt_sysroot is not set, it will still behave the same and add
+-L/usr/lib to the relink command.
+
+-Khem Raj <raj.khem@gmail.com>
+
+Index: libtool-2.4/libltdl/config/ltmain.m4sh
+===================================================================
+--- libtool-2.4.orig/libltdl/config/ltmain.m4sh
++++ libtool-2.4/libltdl/config/ltmain.m4sh
+@@ -6122,7 +6122,7 @@ func_mode_link ()
+ fi
+ else
+ # We cannot seem to hardcode it, guess we'll fake it.
+- add_dir="-L$libdir"
++ add_dir="-L$lt_sysroot$libdir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
diff --git a/meta/recipes-devtools/libtool/libtool_2.4.bb b/meta/recipes-devtools/libtool/libtool_2.4.bb
index b5ec33e840..a820bed0dd 100644
--- a/meta/recipes-devtools/libtool/libtool_2.4.bb
+++ b/meta/recipes-devtools/libtool/libtool_2.4.bb
@@ -1,23 +1,6 @@
-require libtool.inc
-DEPENDS = "libtool-native"
+require libtool-${PV}.inc
-PR = "r0"
-
-PACKAGES =+ "libltdl libltdl-dev libltdl-dbg"
-FILES_${PN} += "${datadir}/aclocal*"
-FILES_libltdl = "${libdir}/libltdl.so.*"
-FILES_libltdl-dev = "${libdir}/libltdl.* ${includedir}/ltdl.h"
-FILES_libltdl-dbg = "${libdir}/.debug/"
-
-inherit autotools
-
-EXTRA_AUTORECONF = "--exclude=libtoolize"
-
-do_compile_prepend () {
- # Sometimes this file doesn't get rebuilt, force the issue
- rm -f ${S}/libltdl/config/ltmain.sh
- make libltdl/config/ltmain.sh
-}
+PR = "r1"
#
# We want the results of libtool-cross preserved - don't stage anything ourselves.
@@ -25,12 +8,8 @@ do_compile_prepend () {
SYSROOT_PREPROCESS_FUNCS += "libtool_sysroot_preprocess"
libtool_sysroot_preprocess () {
- if [ "${PN}" == "libtool" ]; then
- rm -rf ${SYSROOT_DESTDIR}${STAGING_DIR_TARGET}${bindir}/*
- rm -rf ${SYSROOT_DESTDIR}${STAGING_DIR_TARGET}${datadir}/aclocal/*
- rm -rf ${SYSROOT_DESTDIR}${STAGING_DIR_TARGET}${datadir}/libtool/config/*
- fi
+ rm -rf ${SYSROOT_DESTDIR}${bindir}/*
+ rm -rf ${SYSROOT_DESTDIR}${datadir}/aclocal/*
+ rm -rf ${SYSROOT_DESTDIR}${datadir}/libtool/config/*
}
-SRC_URI[md5sum] = "b32b04148ecdd7344abc6fe8bd1bb021"
-SRC_URI[sha256sum] = "13df57ab63a94e196c5d6e95d64e53262834fe780d5e82c28f177f9f71ddf62e"
diff --git a/meta/recipes-devtools/mklibs/files/ac_init_fix.patch b/meta/recipes-devtools/mklibs/files/ac_init_fix.patch
new file mode 100644
index 0000000000..7325931537
--- /dev/null
+++ b/meta/recipes-devtools/mklibs/files/ac_init_fix.patch
@@ -0,0 +1,17 @@
+Get the version of mklibs by simpler means. The MKLIBS_VERSION string in the
+configure.ac file is replaced with real version string by the
+do_configure_prepend() function from the recipe .bb file.
+
+Nitin A Kamble <nitin.a.kamble@intel.com>
+Date: 2011/01/24
+
+Index: mklibs/configure.ac
+===================================================================
+--- mklibs.orig/configure.ac 2010-02-21 17:34:56.000000000 -0800
++++ mklibs/configure.ac 2011-01-24 18:52:19.943242079 -0800
+@@ -1,4 +1,4 @@
+-AC_INIT([mklibs],m4_esyscmd(dpkg-parsechangelog | perl -ne 'print $1 if m/^Version: (.*)$/;'))
++AC_INIT([mklibs], MKLIBS_VERSION)
+ AM_INIT_AUTOMAKE([foreign no-define])
+ AC_CONFIG_HEADERS([config.h])
+ AM_MAINTAINER_MODE
diff --git a/meta/recipes-devtools/mklibs/mklibs-native_0.1.31.bb b/meta/recipes-devtools/mklibs/mklibs-native_0.1.31.bb
new file mode 100644
index 0000000000..2044d125ef
--- /dev/null
+++ b/meta/recipes-devtools/mklibs/mklibs-native_0.1.31.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "mklibs produces cut-down shared libraries that contain only the routines required by a particular set of executables."
+HOMEPAGE = "https://code.launchpad.net/mklibs"
+SECTION = "devel"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://debian/copyright;md5=98d31037b13d896e33890738ef01af64"
+DEPENDS = "python-native"
+
+PR = "r0"
+
+SRC_URI = "http://ftp.de.debian.org/debian/pool/main/m/mklibs/${BPN}_${PV}.tar.gz \
+ file://ac_init_fix.patch\
+"
+
+SRC_URI[md5sum] = "f4df0307ccbdf60070e42277513f27ed"
+SRC_URI[sha256sum] = "8f5595621eb09d52871c771861e81b032d10c31d15e5dd61fa7f5a9e5b7de405"
+
+S = "${WORKDIR}/${BPN}"
+
+inherit autotools gettext native
+
+do_configure_prepend() {
+ sed "s+MKLIBS_VERSION+${PV}+" ${S}/configure.ac
+}
diff --git a/meta/recipes-devtools/mtd/mtd-utils_1.4.1.bb b/meta/recipes-devtools/mtd/mtd-utils_1.4.1.bb
index 8189bffae3..5e6db0ed58 100644
--- a/meta/recipes-devtools/mtd/mtd-utils_1.4.1.bb
+++ b/meta/recipes-devtools/mtd/mtd-utils_1.4.1.bb
@@ -11,7 +11,7 @@ SRC_URI = "git://git.infradead.org/mtd-utils.git;protocol=git;tag=v${PV} \
S = "${WORKDIR}/git/"
-PR = "r0"
+PR = "r1"
EXTRA_OEMAKE = "'CC=${CC}' 'CFLAGS=${CFLAGS} -I${S}/include -DWITHOUT_XATTR' 'BUILDDIR=${S}'"
diff --git a/meta/recipes-devtools/openjade/openjade-1.3.2/autoconf.patch b/meta/recipes-devtools/openjade/openjade-1.3.2/autoconf.patch
new file mode 100644
index 0000000000..fe8df5bb4a
--- /dev/null
+++ b/meta/recipes-devtools/openjade/openjade-1.3.2/autoconf.patch
@@ -0,0 +1,173 @@
+Patch obtained from OpenEmbedded.
+
+Signed-off-by: Scott Garman <scott.a.garman@intel.com>
+-- config/acinclude.m4
++++ config/acinclude.m4 2002/04/08 23:13:37
+@@ -0,0 +1,61 @@
++dnl Configure-time switch with default
++dnl
++dnl Each switch defines an --enable-FOO and --disable-FOO option in
++dnl the resulting configure script.
++dnl
++dnl Usage:
++dnl SMR_SWITCH(name, description, default, pos-def, neg-def)
++dnl
++dnl where:
++dnl
++dnl name name of switch; generates --enable-name & --disable-name
++dnl options
++dnl description help string is set to this prefixed by "enable" or
++dnl "disable", whichever is the non-default value
++dnl default either "on" or "off"; specifies default if neither
++dnl --enable-name nor --disable-name is specified
++dnl pos-def a symbol to AC_DEFINE if switch is on (optional)
++dnl neg-def a symbol to AC_DEFINE if switch is off (optional)
++dnl
++AC_DEFUN(SMR_SWITCH, [
++ AC_MSG_CHECKING(whether to enable $2)
++ AC_ARG_ENABLE(
++ $1,
++ ifelse($3, on,
++ [ --disable-[$1] disable [$2]],
++ [ --enable-[$1] enable [$2]]),
++ [ if test "$enableval" = yes; then
++ AC_MSG_RESULT(yes)
++ ifelse($4, , , AC_DEFINE($4))
++ else
++ AC_MSG_RESULT(no)
++ ifelse($5, , , AC_DEFINE($5))
++ fi ],
++ ifelse($3, on,
++ [ AC_MSG_RESULT(yes)
++ ifelse($4, , , AC_DEFINE($4)) ],
++ [ AC_MSG_RESULT(no)
++ ifelse($5, , , AC_DEFINE($5))]))])
++
++dnl
++dnl Examine size_t and define SIZE_T_IS_UINT, if size_t is an unsigned int
++dnl
++AC_DEFUN(OJ_SIZE_T_IS_UINT,[
++ AC_REQUIRE([AC_TYPE_SIZE_T])
++ AC_MSG_CHECKING(whether size_t is unsigned int)
++ ac_cv_size_t_is_uint=no
++ AC_LANG_SAVE
++ AC_LANG_CPLUSPLUS
++ AC_TRY_COMPILE([#include <unistd.h>
++
++ template<class T> class foo { };
++
++ ], [
++ foo<size_t> x;
++ foo<unsigned int> y;
++ x = y;
++ ],ac_cv_size_t_is_uint=yes)
++ AC_LANG_RESTORE
++ AC_MSG_RESULT($ac_cv_size_t_is_uint)
++ test "$ac_cv_size_t_is_uint" = "yes" && AC_DEFINE(SIZE_T_IS_UINT)
++])
+Index: openjade-1.3.2/config/acinclude.m4
+===================================================================
+--- openjade-1.3.2.orig/config/acinclude.m4
++++ openjade-1.3.2/config/acinclude.m4
+@@ -1,3 +1,64 @@
++dnl Configure-time switch with default
++dnl
++dnl Each switch defines an --enable-FOO and --disable-FOO option in
++dnl the resulting configure script.
++dnl
++dnl Usage:
++dnl SMR_SWITCH(name, description, default, pos-def, neg-def)
++dnl
++dnl where:
++dnl
++dnl name name of switch; generates --enable-name & --disable-name
++dnl options
++dnl description help string is set to this prefixed by "enable" or
++dnl "disable", whichever is the non-default value
++dnl default either "on" or "off"; specifies default if neither
++dnl --enable-name nor --disable-name is specified
++dnl pos-def a symbol to AC_DEFINE if switch is on (optional)
++dnl neg-def a symbol to AC_DEFINE if switch is off (optional)
++dnl
++AC_DEFUN(SMR_SWITCH, [
++ AC_MSG_CHECKING(whether to enable $2)
++ AC_ARG_ENABLE(
++ $1,
++ ifelse($3, on,
++ [ --disable-[$1] disable [$2]],
++ [ --enable-[$1] enable [$2]]),
++ [ if test "$enableval" = yes; then
++ AC_MSG_RESULT(yes)
++ ifelse($4, , , AC_DEFINE($4))
++ else
++ AC_MSG_RESULT(no)
++ ifelse($5, , , AC_DEFINE($5))
++ fi ],
++ ifelse($3, on,
++ [ AC_MSG_RESULT(yes)
++ ifelse($4, , , AC_DEFINE($4)) ],
++ [ AC_MSG_RESULT(no)
++ ifelse($5, , , AC_DEFINE($5))]))])
++
++dnl
++dnl Examine size_t and define SIZE_T_IS_UINT, if size_t is an unsigned int
++dnl
++AC_DEFUN(OJ_SIZE_T_IS_UINT,[
++ AC_REQUIRE([AC_TYPE_SIZE_T])
++ AC_MSG_CHECKING(whether size_t is unsigned int)
++ ac_cv_size_t_is_uint=no
++ AC_LANG_SAVE
++ AC_LANG_CPLUSPLUS
++ AC_TRY_COMPILE([#include <unistd.h>
++
++ template<class T> class foo { };
++
++ ], [
++ foo<size_t> x;
++ foo<unsigned int> y;
++ x = y;
++ ],ac_cv_size_t_is_uint=yes)
++ AC_LANG_RESTORE
++ AC_MSG_RESULT($ac_cv_size_t_is_uint)
++ test "$ac_cv_size_t_is_uint" = "yes" && AC_DEFINE(SIZE_T_IS_UINT)
++])
+ dnl
+ dnl Examine size_t and define SIZE_T_IS_UINT, if size_t is an unsigned int
+ dnl
+Index: openjade-1.3.2/config/aclocal.m4
+===================================================================
+--- openjade-1.3.2.orig/config/aclocal.m4
++++ openjade-1.3.2/config/aclocal.m4
+@@ -3352,7 +3352,7 @@ dnl Each switch defines an --enable-FOO
+ dnl the resulting configure script.
+ dnl
+ dnl Usage:
+-dnl smr_SWITCH(name, description, default, pos-def, neg-def)
++dnl SMR_SWITCH(name, description, default, pos-def, neg-def)
+ dnl
+ dnl where:
+ dnl
+@@ -3365,7 +3365,7 @@ dnl --enable-name nor --disa
+ dnl pos-def a symbol to AC_DEFINE if switch is on (optional)
+ dnl neg-def a symbol to AC_DEFINE if switch is off (optional)
+ dnl
+-AC_DEFUN(smr_SWITCH, [
++AC_DEFUN(SMR_SWITCH, [
+ AC_MSG_CHECKING(whether to enable $2)
+ AC_ARG_ENABLE(
+ $1,
+Index: openjade-1.3.2/config/configure.in
+===================================================================
+--- openjade-1.3.2.orig/config/configure.in
++++ openjade-1.3.2/config/configure.in
+@@ -243,8 +243,8 @@ AC_ARG_ENABLE(http,
+ dnl
+ dnl optional backends
+ dnl
+-smr_SWITCH(mif, support for FrameMaker MIF output, on, JADE_MIF, DUMMY)
+-smr_SWITCH(html, support for HTML+CSS output, on, JADE_HTML, DUMMY)
++SMR_SWITCH(mif, support for FrameMaker MIF output, on, JADE_MIF, DUMMY)
++SMR_SWITCH(html, support for HTML+CSS output, on, JADE_HTML, DUMMY)
+
+
+ dnl
diff --git a/meta/recipes-devtools/openjade/openjade-1.3.2/configure.patch b/meta/recipes-devtools/openjade/openjade-1.3.2/configure.patch
new file mode 100644
index 0000000000..2dcaa4d9e6
--- /dev/null
+++ b/meta/recipes-devtools/openjade/openjade-1.3.2/configure.patch
@@ -0,0 +1,68 @@
+Patch obtained from OpenEmbedded.
+
+Signed-off-by: Scott Garman <scott.a.garman@intel.com>
+--- /dev/null 2003-09-23 18:19:32.000000000 -0400
++++ openjade-1.3.2/config/acinclude.m4 2004-01-20 14:39:20.000000000 -0500
+@@ -0,0 +1,62 @@
++dnl
++dnl Examine size_t and define SIZE_T_IS_UINT, if size_t is an unsigned int
++dnl
++AC_DEFUN(OJ_SIZE_T_IS_UINT,[
++ AC_REQUIRE([AC_TYPE_SIZE_T])
++ AC_MSG_CHECKING(whether size_t is unsigned int)
++ ac_cv_size_t_is_uint=no
++ AC_LANG_SAVE
++ AC_LANG_CPLUSPLUS
++ AC_TRY_COMPILE([#include <unistd.h>
++
++ template<class T> class foo { };
++
++ ], [
++ foo<size_t> x;
++ foo<unsigned int> y;
++ x = y;
++ ],ac_cv_size_t_is_uint=yes)
++ AC_LANG_RESTORE
++ AC_MSG_RESULT($ac_cv_size_t_is_uint)
++ test "$ac_cv_size_t_is_uint" = "yes" && AC_DEFINE(SIZE_T_IS_UINT)
++])
++
++dnl Configure-time switch with default
++dnl
++dnl Each switch defines an --enable-FOO and --disable-FOO option in
++dnl the resulting configure script.
++dnl
++dnl Usage:
++dnl smr_SWITCH(name, description, default, pos-def, neg-def)
++dnl
++dnl where:
++dnl
++dnl name name of switch; generates --enable-name & --disable-name
++dnl options
++dnl description help string is set to this prefixed by "enable" or
++dnl "disable", whichever is the non-default value
++dnl default either "on" or "off"; specifies default if neither
++dnl --enable-name nor --disable-name is specified
++dnl pos-def a symbol to AC_DEFINE if switch is on (optional)
++dnl neg-def a symbol to AC_DEFINE if switch is off (optional)
++dnl
++AC_DEFUN(smr_SWITCH, [
++ AC_MSG_CHECKING(whether to enable $2)
++ AC_ARG_ENABLE(
++ $1,
++ ifelse($3, on,
++ [ --disable-[$1] disable [$2]],
++ [ --enable-[$1] enable [$2]]),
++ [ if test "$enableval" = yes; then
++ AC_MSG_RESULT(yes)
++ ifelse($4, , , AC_DEFINE($4))
++ else
++ AC_MSG_RESULT(no)
++ ifelse($5, , , AC_DEFINE($5))
++ fi ],
++ ifelse($3, on,
++ [ AC_MSG_RESULT(yes)
++ ifelse($4, , , AC_DEFINE($4)) ],
++ [ AC_MSG_RESULT(no)
++ ifelse($5, , , AC_DEFINE($5))]))])
++
diff --git a/meta/recipes-devtools/openjade/openjade-1.3.2/makefile.patch b/meta/recipes-devtools/openjade/openjade-1.3.2/makefile.patch
new file mode 100644
index 0000000000..ac5c7447f6
--- /dev/null
+++ b/meta/recipes-devtools/openjade/openjade-1.3.2/makefile.patch
@@ -0,0 +1,34 @@
+Patch obtained from OpenEmbedded.
+
+Signed-off-by: Scott Garman <scott.a.garman@intel.com>
+Index: openjade-1.3.2/spgrove/Makefile.sub
+===================================================================
+--- openjade-1.3.2.orig/spgrove/Makefile.sub
++++ openjade-1.3.2/spgrove/Makefile.sub
+@@ -1,8 +1,8 @@
+ LTVERSION=0:1:0
+ LIB=ospgrove
+ INCLUDE=-I$(srcdir)/../grove
+-DEPLIBS=-lm -L$(TOP)/grove -L$(TOP)/grove/.libs \
+- -L$(TOP)/lib -L$(TOP)/lib/.libs \
++DEPLIBS=-lm $(TOP)/grove \
++ $(TOP)/lib \
+ $(LIB_THREADS)
+ OBJS=GroveApp.o GroveBuilder.o SdNode.o
+ GENSRCS=grove_inst.cxx
+Index: openjade-1.3.2/style/Makefile.sub
+===================================================================
+--- openjade-1.3.2.orig/style/Makefile.sub
++++ openjade-1.3.2/style/Makefile.sub
+@@ -1,8 +1,8 @@
+ LTVERSION=0:1:0
+ LIB=ostyle
+-DEPLIBS=-lm -L$(TOP)/grove -L$(TOP)/grove/.libs \
+- -L$(TOP)/lib -L$(TOP)/lib/.libs \
+- -L$(TOP)/spgrove -L$(TOP)/spgrove/.libs
++DEPLIBS=-lm $(TOP)/grove \
++ $(TOP)/lib \
++ $(TOP)/spgrove
+ OBJS=LangObj.o \
+ Collector.o \
+ DssslApp.o \
diff --git a/meta/recipes-devtools/openjade/openjade-1.3.2/oj-native-libosp-fix.patch b/meta/recipes-devtools/openjade/openjade-1.3.2/oj-native-libosp-fix.patch
new file mode 100644
index 0000000000..48e38048ba
--- /dev/null
+++ b/meta/recipes-devtools/openjade/openjade-1.3.2/oj-native-libosp-fix.patch
@@ -0,0 +1,15 @@
+Patch obtained from OpenEmbedded.
+
+Signed-off-by: Scott Garman <scott.a.garman@intel.com>
+Index: openjade-1.3.2/Makefile.prog.in
+===================================================================
+--- openjade-1.3.2.orig/Makefile.prog.in 2007-12-21 14:48:00.000000000 +0100
++++ openjade-1.3.2/Makefile.prog.in 2007-12-21 14:50:12.000000000 +0100
+@@ -13,6 +13,7 @@
+ ALL_LIBS = $(XLIBS) $(LIBS)
+ Makefile.lt:
+ echo 'LT_LIBS='`echo $(ALL_LIBS)|sed 's/\.a/.la/g'` >Makefile.lt
++ sed -i -e "s|libosp.la|libosp.so|" Makefile.lt
+
+ PROG:=$(shell echo "$(PROG)" | sed '@program_transform_name@')
+
diff --git a/meta/recipes-devtools/openjade/openjade_1.3.2.bb b/meta/recipes-devtools/openjade/openjade_1.3.2.bb
new file mode 100644
index 0000000000..f2ad8aef7c
--- /dev/null
+++ b/meta/recipes-devtools/openjade/openjade_1.3.2.bb
@@ -0,0 +1,66 @@
+SUMMARY = "Tools for working with DSSSL stylesheets for SGML and XML documents"
+DESCRIPTION = "OpenJade is a suite of tools for validating, \
+processing, and applying DSSSL (Document Style Semantics and \
+Specification Language) stylesheets to SGML and XML documents."
+HOMEPAGE = "http://openjade.sourceforge.net"
+SECTION = "base"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=641ff1e4511f0a87044ad42f87cb1045"
+
+PR = "r0"
+
+DEPENDS = "opensp"
+RDEPENDS_${PN} = "sgml-common"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/openjade/openjade-${PV}.tar.gz \
+ file://configure.patch \
+ file://autoconf.patch \
+ file://makefile.patch \
+ "
+
+SRC_URI[md5sum] = "7df692e3186109cc00db6825b777201e"
+SRC_URI[sha256sum] = "1d2d7996cc94f9b87d0c51cf0e028070ac177c4123ecbfd7ac1cb8d0b7d322d1"
+
+SRC_URI_append_virtclass-native = " file://oj-native-libosp-fix.patch"
+
+inherit autotools
+
+EXTRA_OECONF = "--enable-spincludedir=${STAGING_INCDIR}/OpenSP \
+ --enable-splibdir=${STAGING_LIBDIR}"
+
+acpaths = "-I ${S}/config"
+
+# Trailing whitespace is important. Otherwise compiler arguments will be messed
+# up, resulting in a fail in do_configure.
+CFLAGS_prepend = "-I${S}/include "
+
+do_configure_append () {
+ cp config/configure.in .
+}
+
+do_install_append () {
+ # Refer to http://www.linuxfromscratch.org/blfs/view/stable/pst/openjade.html
+ # for details.
+ install -m 0755 ${S}/jade/.libs/openjade ${D}${bindir}/openjade
+ ln -sf openjade ${D}${bindir}/jade
+
+ oe_libinstall -a -so -C style libostyle ${D}${libdir}
+ oe_libinstall -a -so -C spgrove libospgrove ${D}${libdir}
+ oe_libinstall -a -so -C grove libogrove ${D}${libdir}
+
+ install -d ${D}${datadir}/sgml/openjade-${PV}
+ install -m 644 dsssl/catalog ${D}${datadir}/sgml/openjade-${PV}
+ install -m 644 dsssl/*.{dtd,dsl,sgm} ${D}${datadir}/sgml/openjade-${PV}
+
+ # The catalog must live in the sysroot and it must be there for
+ # install-catalog to do its thing.
+ install -d ${datadir}/sgml/openjade-${PV}
+ install -m 644 dsssl/catalog ${datadir}/sgml/openjade-${PV}/catalog
+ install-catalog --add ${sysconfdir}/sgml/openjade-${PV}.cat \
+ ${datadir}/sgml/openjade-${PV}/catalog
+
+ install-catalog --add ${sysconfdir}/sgml/sgml-docbook.cat \
+ ${sysconfdir}/sgml/openjade-${PV}.cat
+}
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/opensp/opensp/attributevalue.patch b/meta/recipes-devtools/opensp/opensp/attributevalue.patch
new file mode 100644
index 0000000000..4f3507e19b
--- /dev/null
+++ b/meta/recipes-devtools/opensp/opensp/attributevalue.patch
@@ -0,0 +1,62 @@
+Patch obtained from OpenEmbedded.
+
+Signed-off-by: Scott Garman <scott.a.garman@intel.com>
+--- OpenSP-1.5/include/Attribute.h~attributevalue 2000-03-09 13:30:56.000000000 -0500
++++ OpenSP-1.5/include/Attribute.h 2004-01-20 14:11:36.000000000 -0500
+@@ -31,6 +31,28 @@
+ class AttributeContext;
+ class Syntax;
+
++class SP_API AttributeValue : public Resource {
++public:
++ enum Type {
++ implied,
++ cdata,
++ tokenized
++ };
++ AttributeValue();
++ virtual ~AttributeValue();
++ virtual AttributeSemantics *makeSemantics(const DeclaredValue *,
++ AttributeContext &,
++ const StringC &,
++ unsigned &,
++ unsigned &) const;
++ virtual Type info(const Text *&, const StringC *&) const = 0;
++ virtual const Text *text() const;
++ virtual Boolean recoverUnquoted(const StringC &, const Location &,
++ AttributeContext &, const StringC &);
++ static Boolean handleAsUnterminated(const Text &, AttributeContext &);
++};
++
++
+ class SP_API AttributeDefinitionDesc {
+ public:
+ AttributeDefinitionDesc() { }
+@@ -380,27 +402,6 @@
+ ConstPtr<Notation> notation_;
+ };
+
+-class SP_API AttributeValue : public Resource {
+-public:
+- enum Type {
+- implied,
+- cdata,
+- tokenized
+- };
+- AttributeValue();
+- virtual ~AttributeValue();
+- virtual AttributeSemantics *makeSemantics(const DeclaredValue *,
+- AttributeContext &,
+- const StringC &,
+- unsigned &,
+- unsigned &) const;
+- virtual Type info(const Text *&, const StringC *&) const = 0;
+- virtual const Text *text() const;
+- virtual Boolean recoverUnquoted(const StringC &, const Location &,
+- AttributeContext &, const StringC &);
+- static Boolean handleAsUnterminated(const Text &, AttributeContext &);
+-};
+-
+ class SP_API ImpliedAttributeValue : public AttributeValue {
+ public:
+ ImpliedAttributeValue();
diff --git a/meta/recipes-devtools/opensp/opensp/fix-docdir.patch b/meta/recipes-devtools/opensp/opensp/fix-docdir.patch
new file mode 100644
index 0000000000..5e2fc8b745
--- /dev/null
+++ b/meta/recipes-devtools/opensp/opensp/fix-docdir.patch
@@ -0,0 +1,14 @@
+Patch obtained from OpenEmbedded.
+
+Signed-off-by: Scott Garman <scott.a.garman@intel.com>
+Index: OpenSP-1.5/doc/Makefile.am
+===================================================================
+--- OpenSP-1.5.orig/doc/Makefile.am 2000-05-06 09:10:32.000000000 +1000
++++ OpenSP-1.5/doc/Makefile.am 2007-06-02 12:46:50.000000000 +1000
+@@ -1,6 +1,5 @@
+ ## Process this file with automake to produce Makefile.in
+
+-docdir = $(prefix)/doc
+ pkgdocdir = $(docdir)/@PACKAGE@
+
+ MAINTAINERCLEANFILES = Makefile.in
diff --git a/meta/recipes-devtools/opensp/opensp/m4.patch b/meta/recipes-devtools/opensp/opensp/m4.patch
new file mode 100644
index 0000000000..a8504c5818
--- /dev/null
+++ b/meta/recipes-devtools/opensp/opensp/m4.patch
@@ -0,0 +1,1925 @@
+Patch obtained from OpenEmbedded.
+
+Signed-off-by: Scott Garman <scott.a.garman@intel.com>
+--- /dev/null 2003-09-23 18:19:32.000000000 -0400
++++ OpenSP-1.5/m4/codeset.m4 2004-01-20 03:01:28.000000000 -0500
+@@ -0,0 +1,23 @@
++# codeset.m4 serial AM1 (gettext-0.10.40)
++dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++
++AC_DEFUN([AM_LANGINFO_CODESET],
++[
++ AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
++ [AC_TRY_LINK([#include <langinfo.h>],
++ [char* cs = nl_langinfo(CODESET);],
++ am_cv_langinfo_codeset=yes,
++ am_cv_langinfo_codeset=no)
++ ])
++ if test $am_cv_langinfo_codeset = yes; then
++ AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
++ [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
++ fi
++])
+--- /dev/null 2003-09-23 18:19:32.000000000 -0400
++++ OpenSP-1.5/m4/gettext.m4 2004-01-20 03:01:28.000000000 -0500
+@@ -0,0 +1,587 @@
++# gettext.m4 serial 17 (gettext-0.11.5)
++dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
++dnl Bruno Haible <haible@clisp.cons.org>, 2000-2002.
++
++dnl Macro to add for using GNU gettext.
++
++dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
++dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
++dnl default (if it is not specified or empty) is 'no-libtool'.
++dnl INTLSYMBOL should be 'external' for packages with no intl directory,
++dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory.
++dnl If INTLSYMBOL is 'use-libtool', then a libtool library
++dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
++dnl depending on --{enable,disable}-{shared,static} and on the presence of
++dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
++dnl $(top_builddir)/intl/libintl.a will be created.
++dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
++dnl implementations (in libc or libintl) without the ngettext() function
++dnl will be ignored. If NEEDSYMBOL is specified and is
++dnl 'need-formatstring-macros', then GNU gettext implementations that don't
++dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
++dnl INTLDIR is used to find the intl libraries. If empty,
++dnl the value `$(top_builddir)/intl/' is used.
++dnl
++dnl The result of the configuration is one of three cases:
++dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
++dnl and used.
++dnl Catalog format: GNU --> install in $(datadir)
++dnl Catalog extension: .mo after installation, .gmo in source tree
++dnl 2) GNU gettext has been found in the system's C library.
++dnl Catalog format: GNU --> install in $(datadir)
++dnl Catalog extension: .mo after installation, .gmo in source tree
++dnl 3) No internationalization, always use English msgid.
++dnl Catalog format: none
++dnl Catalog extension: none
++dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
++dnl The use of .gmo is historical (it was needed to avoid overwriting the
++dnl GNU format catalogs when building on a platform with an X/Open gettext),
++dnl but we keep it in order not to force irrelevant filename changes on the
++dnl maintainers.
++dnl
++AC_DEFUN([AM_GNU_GETTEXT],
++[
++ dnl Argument checking.
++ ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
++ [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
++])])])])])
++ ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
++ [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
++])])])])
++ define(gt_included_intl, ifelse([$1], [external], [no], [yes]))
++ define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], []))
++
++ AC_REQUIRE([AM_PO_SUBDIRS])dnl
++ ifelse(gt_included_intl, yes, [
++ AC_REQUIRE([AM_INTL_SUBDIR])dnl
++ ])
++
++ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++ AC_REQUIRE([AC_LIB_RPATH])
++
++ dnl Sometimes libintl requires libiconv, so first search for libiconv.
++ dnl Ideally we would do this search only after the
++ dnl if test "$USE_NLS" = "yes"; then
++ dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then
++ dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
++ dnl the configure script would need to contain the same shell code
++ dnl again, outside any 'if'. There are two solutions:
++ dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
++ dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
++ dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
++ dnl documented, we avoid it.
++ ifelse(gt_included_intl, yes, , [
++ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
++ ])
++
++ AC_MSG_CHECKING([whether NLS is requested])
++ dnl Default is enabled NLS
++ AC_ARG_ENABLE(nls,
++ [ --disable-nls do not use Native Language Support],
++ USE_NLS=$enableval, USE_NLS=yes)
++ AC_MSG_RESULT($USE_NLS)
++ AC_SUBST(USE_NLS)
++
++ ifelse(gt_included_intl, yes, [
++ BUILD_INCLUDED_LIBINTL=no
++ USE_INCLUDED_LIBINTL=no
++ ])
++ LIBINTL=
++ LTLIBINTL=
++ POSUB=
++
++ dnl If we use NLS figure out what method
++ if test "$USE_NLS" = "yes"; then
++ gt_use_preinstalled_gnugettext=no
++ ifelse(gt_included_intl, yes, [
++ AC_MSG_CHECKING([whether included gettext is requested])
++ AC_ARG_WITH(included-gettext,
++ [ --with-included-gettext use the GNU gettext library included here],
++ nls_cv_force_use_gnu_gettext=$withval,
++ nls_cv_force_use_gnu_gettext=no)
++ AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
++
++ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
++ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
++ ])
++ dnl User does not insist on using GNU NLS library. Figure out what
++ dnl to use. If GNU gettext is available we use this. Else we have
++ dnl to fall back to GNU NLS library.
++
++ dnl Add a version number to the cache macros.
++ define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1)))
++ define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc])
++ define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl])
++
++ AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc,
++ [AC_TRY_LINK([#include <libintl.h>
++]ifelse([$2], [need-formatstring-macros],
++[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
++#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
++#endif
++changequote(,)dnl
++typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
++changequote([,])dnl
++], [])[extern int _nl_msg_cat_cntr;
++extern int *_nl_domain_bindings;],
++ [bindtextdomain ("", "");
++return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings],
++ gt_cv_func_gnugettext_libc=yes,
++ gt_cv_func_gnugettext_libc=no)])
++
++ if test "$gt_cv_func_gnugettext_libc" != "yes"; then
++ dnl Sometimes libintl requires libiconv, so first search for libiconv.
++ ifelse(gt_included_intl, yes, , [
++ AM_ICONV_LINK
++ ])
++ dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
++ dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
++ dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
++ dnl even if libiconv doesn't exist.
++ AC_LIB_LINKFLAGS_BODY([intl])
++ AC_CACHE_CHECK([for GNU gettext in libintl],
++ gt_cv_func_gnugettext_libintl,
++ [gt_save_CPPFLAGS="$CPPFLAGS"
++ CPPFLAGS="$CPPFLAGS $INCINTL"
++ gt_save_LIBS="$LIBS"
++ LIBS="$LIBS $LIBINTL"
++ dnl Now see whether libintl exists and does not depend on libiconv.
++ AC_TRY_LINK([#include <libintl.h>
++]ifelse([$2], [need-formatstring-macros],
++[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
++#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
++#endif
++changequote(,)dnl
++typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
++changequote([,])dnl
++], [])[extern int _nl_msg_cat_cntr;
++extern
++#ifdef __cplusplus
++"C"
++#endif
++const char *_nl_expand_alias ();],
++ [bindtextdomain ("", "");
++return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
++ gt_cv_func_gnugettext_libintl=yes,
++ gt_cv_func_gnugettext_libintl=no)
++ dnl Now see whether libintl exists and depends on libiconv.
++ if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then
++ LIBS="$LIBS $LIBICONV"
++ AC_TRY_LINK([#include <libintl.h>
++]ifelse([$2], [need-formatstring-macros],
++[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
++#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
++#endif
++changequote(,)dnl
++typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
++changequote([,])dnl
++], [])[extern int _nl_msg_cat_cntr;
++extern
++#ifdef __cplusplus
++"C"
++#endif
++const char *_nl_expand_alias ();],
++ [bindtextdomain ("", "");
++return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
++ [LIBINTL="$LIBINTL $LIBICONV"
++ LTLIBINTL="$LTLIBINTL $LTLIBICONV"
++ gt_cv_func_gnugettext_libintl=yes
++ ])
++ fi
++ CPPFLAGS="$gt_save_CPPFLAGS"
++ LIBS="$gt_save_LIBS"])
++ fi
++
++ dnl If an already present or preinstalled GNU gettext() is found,
++ dnl use it. But if this macro is used in GNU gettext, and GNU
++ dnl gettext is already preinstalled in libintl, we update this
++ dnl libintl. (Cf. the install rule in intl/Makefile.in.)
++ if test "$gt_cv_func_gnugettext_libc" = "yes" \
++ || { test "$gt_cv_func_gnugettext_libintl" = "yes" \
++ && test "$PACKAGE" != gettext; }; then
++ gt_use_preinstalled_gnugettext=yes
++ else
++ dnl Reset the values set by searching for libintl.
++ LIBINTL=
++ LTLIBINTL=
++ INCINTL=
++ fi
++
++ ifelse(gt_included_intl, yes, [
++ if test "$gt_use_preinstalled_gnugettext" != "yes"; then
++ dnl GNU gettext is not found in the C library.
++ dnl Fall back on included GNU gettext library.
++ nls_cv_use_gnu_gettext=yes
++ fi
++ fi
++
++ if test "$nls_cv_use_gnu_gettext" = "yes"; then
++ dnl Mark actions used to generate GNU NLS library.
++ INTLOBJS="\$(GETTOBJS)"
++ BUILD_INCLUDED_LIBINTL=yes
++ USE_INCLUDED_LIBINTL=yes
++ LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV"
++ LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV"
++ LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
++ fi
++
++ if test "$gt_use_preinstalled_gnugettext" = "yes" \
++ || test "$nls_cv_use_gnu_gettext" = "yes"; then
++ dnl Mark actions to use GNU gettext tools.
++ CATOBJEXT=.gmo
++ fi
++ ])
++
++ if test "$gt_use_preinstalled_gnugettext" = "yes" \
++ || test "$nls_cv_use_gnu_gettext" = "yes"; then
++ AC_DEFINE(ENABLE_NLS, 1,
++ [Define to 1 if translation of program messages to the user's native language
++ is requested.])
++ else
++ USE_NLS=no
++ fi
++ fi
++
++ if test "$USE_NLS" = "yes"; then
++
++ if test "$gt_use_preinstalled_gnugettext" = "yes"; then
++ if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
++ AC_MSG_CHECKING([how to link with libintl])
++ AC_MSG_RESULT([$LIBINTL])
++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
++ fi
++
++ dnl For backward compatibility. Some packages may be using this.
++ AC_DEFINE(HAVE_GETTEXT, 1,
++ [Define if the GNU gettext() function is already present or preinstalled.])
++ AC_DEFINE(HAVE_DCGETTEXT, 1,
++ [Define if the GNU dcgettext() function is already present or preinstalled.])
++ fi
++
++ dnl We need to process the po/ directory.
++ POSUB=po
++ fi
++
++ ifelse(gt_included_intl, yes, [
++ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
++ dnl to 'yes' because some of the testsuite requires it.
++ if test "$PACKAGE" = gettext; then
++ BUILD_INCLUDED_LIBINTL=yes
++ fi
++
++ dnl Make all variables we use known to autoconf.
++ AC_SUBST(BUILD_INCLUDED_LIBINTL)
++ AC_SUBST(USE_INCLUDED_LIBINTL)
++ AC_SUBST(CATOBJEXT)
++ AC_SUBST(INTLOBJS)
++
++ dnl For backward compatibility. Some configure.ins may be using this.
++ nls_cv_header_intl=
++ nls_cv_header_libgt=
++
++ dnl For backward compatibility. Some Makefiles may be using this.
++ DATADIRNAME=share
++ AC_SUBST(DATADIRNAME)
++
++ dnl For backward compatibility. Some Makefiles may be using this.
++ INSTOBJEXT=.mo
++ AC_SUBST(INSTOBJEXT)
++
++ dnl For backward compatibility. Some Makefiles may be using this.
++ GENCAT=gencat
++ AC_SUBST(GENCAT)
++
++ dnl Enable libtool support if the surrounding package wishes it.
++ INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
++ AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
++ ])
++
++ dnl For backward compatibility. Some Makefiles may be using this.
++ INTLLIBS="$LIBINTL"
++ AC_SUBST(INTLLIBS)
++
++ dnl Make all documented variables known to autoconf.
++ AC_SUBST(LIBINTL)
++ AC_SUBST(LTLIBINTL)
++ AC_SUBST(POSUB)
++])
++
++
++dnl Checks for all prerequisites of the po subdirectory,
++dnl except for USE_NLS.
++AC_DEFUN([AM_PO_SUBDIRS],
++[
++ AC_REQUIRE([AC_PROG_MAKE_SET])dnl
++ AC_REQUIRE([AC_PROG_INSTALL])dnl
++ AC_REQUIRE([AM_MKINSTALLDIRS])dnl
++
++ dnl Perform the following tests also if --disable-nls has been given,
++ dnl because they are needed for "make dist" to work.
++
++ dnl Search for GNU msgfmt in the PATH.
++ dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
++ dnl The second test excludes FreeBSD msgfmt.
++ AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
++ [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 &&
++ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
++ :)
++ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
++
++ dnl Search for GNU xgettext 0.11 or newer in the PATH.
++ dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
++ dnl The second test excludes FreeBSD xgettext.
++ AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
++ [$ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 &&
++ (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
++ :)
++ dnl Remove leftover from FreeBSD xgettext call.
++ rm -f messages.po
++
++ dnl Search for GNU msgmerge 0.11 or newer in the PATH.
++ AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
++ [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :)
++
++ dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
++ dnl Test whether we really found GNU msgfmt.
++ if test "$GMSGFMT" != ":"; then
++ dnl If it is no GNU msgfmt we define it as : so that the
++ dnl Makefiles still can work.
++ if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 &&
++ (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
++ : ;
++ else
++ GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
++ AC_MSG_RESULT(
++ [found $GMSGFMT program is not GNU msgfmt; ignore it])
++ GMSGFMT=":"
++ fi
++ fi
++
++ dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
++ dnl Test whether we really found GNU xgettext.
++ if test "$XGETTEXT" != ":"; then
++ dnl If it is no GNU xgettext we define it as : so that the
++ dnl Makefiles still can work.
++ if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 &&
++ (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
++ : ;
++ else
++ AC_MSG_RESULT(
++ [found xgettext program is not GNU xgettext; ignore it])
++ XGETTEXT=":"
++ fi
++ dnl Remove leftover from FreeBSD xgettext call.
++ rm -f messages.po
++ fi
++
++ AC_OUTPUT_COMMANDS([
++ for ac_file in $CONFIG_FILES; do
++ # Support "outfile[:infile[:infile...]]"
++ case "$ac_file" in
++ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
++ esac
++ # PO directories have a Makefile.in generated from Makefile.in.in.
++ case "$ac_file" in */Makefile.in)
++ # Adjust a relative srcdir.
++ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
++ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
++ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
++ # In autoconf-2.13 it is called $ac_given_srcdir.
++ # In autoconf-2.50 it is called $srcdir.
++ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
++ case "$ac_given_srcdir" in
++ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
++ /*) top_srcdir="$ac_given_srcdir" ;;
++ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
++ esac
++ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
++ rm -f "$ac_dir/POTFILES"
++ test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
++ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
++ # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend
++ # on $ac_dir but don't depend on user-specified configuration
++ # parameters.
++ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
++ # The LINGUAS file contains the set of available languages.
++ if test -n "$ALL_LINGUAS"; then
++ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
++ fi
++ ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
++ # Hide the ALL_LINGUAS assigment from automake.
++ eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
++ fi
++ case "$ac_given_srcdir" in
++ .) srcdirpre= ;;
++ *) srcdirpre='$(srcdir)/' ;;
++ esac
++ POFILES=
++ GMOFILES=
++ UPDATEPOFILES=
++ DUMMYPOFILES=
++ for lang in $ALL_LINGUAS; do
++ POFILES="$POFILES $srcdirpre$lang.po"
++ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
++ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
++ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
++ done
++ # CATALOGS depends on both $ac_dir and the user's LINGUAS
++ # environment variable.
++ INST_LINGUAS=
++ if test -n "$ALL_LINGUAS"; then
++ for presentlang in $ALL_LINGUAS; do
++ useit=no
++ if test "%UNSET%" != "$LINGUAS"; then
++ desiredlanguages="$LINGUAS"
++ else
++ desiredlanguages="$ALL_LINGUAS"
++ fi
++ for desiredlang in $desiredlanguages; do
++ # Use the presentlang catalog if desiredlang is
++ # a. equal to presentlang, or
++ # b. a variant of presentlang (because in this case,
++ # presentlang can be used as a fallback for messages
++ # which are not translated in the desiredlang catalog).
++ case "$desiredlang" in
++ "$presentlang"*) useit=yes;;
++ esac
++ done
++ if test $useit = yes; then
++ INST_LINGUAS="$INST_LINGUAS $presentlang"
++ fi
++ done
++ fi
++ CATALOGS=
++ if test -n "$INST_LINGUAS"; then
++ for lang in $INST_LINGUAS; do
++ CATALOGS="$CATALOGS $lang.gmo"
++ done
++ fi
++ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
++ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
++ for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
++ if test -f "$f"; then
++ case "$f" in
++ *.orig | *.bak | *~) ;;
++ *) cat "$f" >> "$ac_dir/Makefile" ;;
++ esac
++ fi
++ done
++ fi
++ ;;
++ esac
++ done],
++ [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
++ # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it
++ # from automake.
++ eval 'ALL_LINGUAS''="$ALL_LINGUAS"'
++ # Capture the value of LINGUAS because we need it to compute CATALOGS.
++ LINGUAS="${LINGUAS-%UNSET%}"
++ ])
++])
++
++
++dnl Checks for all prerequisites of the intl subdirectory,
++dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
++dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
++AC_DEFUN([AM_INTL_SUBDIR],
++[
++ AC_REQUIRE([AC_PROG_INSTALL])dnl
++ AC_REQUIRE([AM_MKINSTALLDIRS])dnl
++ AC_REQUIRE([AC_PROG_CC])dnl
++ AC_REQUIRE([AC_CANONICAL_HOST])dnl
++ AC_REQUIRE([AC_PROG_RANLIB])dnl
++ AC_REQUIRE([AC_ISC_POSIX])dnl
++ AC_REQUIRE([AC_HEADER_STDC])dnl
++ AC_REQUIRE([AC_C_CONST])dnl
++ AC_REQUIRE([AC_C_INLINE])dnl
++ AC_REQUIRE([AC_TYPE_OFF_T])dnl
++ AC_REQUIRE([AC_TYPE_SIZE_T])dnl
++ AC_REQUIRE([AC_FUNC_ALLOCA])dnl
++ AC_REQUIRE([AC_FUNC_MMAP])dnl
++ AC_REQUIRE([jm_GLIBC21])dnl
++ AC_REQUIRE([gt_INTDIV0])dnl
++ AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl
++ AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl
++ AC_REQUIRE([gt_INTTYPES_PRI])dnl
++
++ AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \
++stdlib.h string.h unistd.h sys/param.h])
++ AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \
++geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \
++strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next])
++
++ AM_ICONV
++ AM_LANGINFO_CODESET
++ if test $ac_cv_header_locale_h = yes; then
++ AM_LC_MESSAGES
++ fi
++
++ dnl intl/plural.c is generated from intl/plural.y. It requires bison,
++ dnl because plural.y uses bison specific features. It requires at least
++ dnl bison-1.26 because earlier versions generate a plural.c that doesn't
++ dnl compile.
++ dnl bison is only needed for the maintainer (who touches plural.y). But in
++ dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
++ dnl the rule in general Makefile. Now, some people carelessly touch the
++ dnl files or have a broken "make" program, hence the plural.c rule will
++ dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
++ dnl present or too old.
++ AC_CHECK_PROGS([INTLBISON], [bison])
++ if test -z "$INTLBISON"; then
++ ac_verc_fail=yes
++ else
++ dnl Found it, now check the version.
++ AC_MSG_CHECKING([version of bison])
++changequote(<<,>>)dnl
++ ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
++ case $ac_prog_version in
++ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
++ 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
++changequote([,])dnl
++ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
++ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
++ esac
++ AC_MSG_RESULT([$ac_prog_version])
++ fi
++ if test $ac_verc_fail = yes; then
++ INTLBISON=:
++ fi
++])
++
++
++AC_DEFUN([AM_MKINSTALLDIRS],
++[
++ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
++ dnl find the mkinstalldirs script in another subdir but $(top_srcdir).
++ dnl Try to locate is.
++ MKINSTALLDIRS=
++ if test -n "$ac_aux_dir"; then
++ MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
++ fi
++ if test -z "$MKINSTALLDIRS"; then
++ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
++ fi
++ AC_SUBST(MKINSTALLDIRS)
++])
++
++
++dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
++AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
+--- /dev/null 2003-09-23 18:19:32.000000000 -0400
++++ OpenSP-1.5/m4/glibc21.m4 2004-01-20 03:01:28.000000000 -0500
+@@ -0,0 +1,32 @@
++# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40)
++dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++# Test for the GNU C Library, version 2.1 or newer.
++# From Bruno Haible.
++
++AC_DEFUN([jm_GLIBC21],
++ [
++ AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer,
++ ac_cv_gnu_library_2_1,
++ [AC_EGREP_CPP([Lucky GNU user],
++ [
++#include <features.h>
++#ifdef __GNU_LIBRARY__
++ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
++ Lucky GNU user
++ #endif
++#endif
++ ],
++ ac_cv_gnu_library_2_1=yes,
++ ac_cv_gnu_library_2_1=no)
++ ]
++ )
++ AC_SUBST(GLIBC21)
++ GLIBC21="$ac_cv_gnu_library_2_1"
++ ]
++)
+--- /dev/null 2003-09-23 18:19:32.000000000 -0400
++++ OpenSP-1.5/m4/iconv.m4 2004-01-20 03:01:28.000000000 -0500
+@@ -0,0 +1,103 @@
++# iconv.m4 serial AM4 (gettext-0.11.3)
++dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++
++AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
++[
++ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++ AC_REQUIRE([AC_LIB_RPATH])
++
++ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
++ dnl accordingly.
++ AC_LIB_LINKFLAGS_BODY([iconv])
++])
++
++AC_DEFUN([AM_ICONV_LINK],
++[
++ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
++ dnl those with the standalone portable GNU libiconv installed).
++
++ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
++ dnl accordingly.
++ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
++
++ dnl Add $INCICONV to CPPFLAGS before performing the following checks,
++ dnl because if the user has installed libiconv and not disabled its use
++ dnl via --without-libiconv-prefix, he wants to use it. The first
++ dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
++ am_save_CPPFLAGS="$CPPFLAGS"
++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
++
++ AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
++ am_cv_func_iconv="no, consider installing GNU libiconv"
++ am_cv_lib_iconv=no
++ AC_TRY_LINK([#include <stdlib.h>
++#include <iconv.h>],
++ [iconv_t cd = iconv_open("","");
++ iconv(cd,NULL,NULL,NULL,NULL);
++ iconv_close(cd);],
++ am_cv_func_iconv=yes)
++ if test "$am_cv_func_iconv" != yes; then
++ am_save_LIBS="$LIBS"
++ LIBS="$LIBS $LIBICONV"
++ AC_TRY_LINK([#include <stdlib.h>
++#include <iconv.h>],
++ [iconv_t cd = iconv_open("","");
++ iconv(cd,NULL,NULL,NULL,NULL);
++ iconv_close(cd);],
++ am_cv_lib_iconv=yes
++ am_cv_func_iconv=yes)
++ LIBS="$am_save_LIBS"
++ fi
++ ])
++ if test "$am_cv_func_iconv" = yes; then
++ AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
++ fi
++ if test "$am_cv_lib_iconv" = yes; then
++ AC_MSG_CHECKING([how to link with libiconv])
++ AC_MSG_RESULT([$LIBICONV])
++ else
++ dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
++ dnl either.
++ CPPFLAGS="$am_save_CPPFLAGS"
++ LIBICONV=
++ LTLIBICONV=
++ fi
++ AC_SUBST(LIBICONV)
++ AC_SUBST(LTLIBICONV)
++])
++
++AC_DEFUN([AM_ICONV],
++[
++ AM_ICONV_LINK
++ if test "$am_cv_func_iconv" = yes; then
++ AC_MSG_CHECKING([for iconv declaration])
++ AC_CACHE_VAL(am_cv_proto_iconv, [
++ AC_TRY_COMPILE([
++#include <stdlib.h>
++#include <iconv.h>
++extern
++#ifdef __cplusplus
++"C"
++#endif
++#if defined(__STDC__) || defined(__cplusplus)
++size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
++#else
++size_t iconv();
++#endif
++], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
++ am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
++ am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
++ AC_MSG_RESULT([$]{ac_t:-
++ }[$]am_cv_proto_iconv)
++ AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
++ [Define as const if the declaration of iconv() needs const.])
++ fi
++])
+--- /dev/null 2003-09-23 18:19:32.000000000 -0400
++++ OpenSP-1.5/m4/intdiv0.m4 2004-01-20 03:01:28.000000000 -0500
+@@ -0,0 +1,72 @@
++# intdiv0.m4 serial 1 (gettext-0.11.3)
++dnl Copyright (C) 2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++
++AC_DEFUN([gt_INTDIV0],
++[
++ AC_REQUIRE([AC_PROG_CC])dnl
++ AC_REQUIRE([AC_CANONICAL_HOST])dnl
++
++ AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
++ gt_cv_int_divbyzero_sigfpe,
++ [
++ AC_TRY_RUN([
++#include <stdlib.h>
++#include <signal.h>
++
++static void
++#ifdef __cplusplus
++sigfpe_handler (int sig)
++#else
++sigfpe_handler (sig) int sig;
++#endif
++{
++ /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */
++ exit (sig != SIGFPE);
++}
++
++int x = 1;
++int y = 0;
++int z;
++int nan;
++
++int main ()
++{
++ signal (SIGFPE, sigfpe_handler);
++/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */
++#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
++ signal (SIGTRAP, sigfpe_handler);
++#endif
++/* Linux/SPARC yields signal SIGILL. */
++#if defined (__sparc__) && defined (__linux__)
++ signal (SIGILL, sigfpe_handler);
++#endif
++
++ z = x / y;
++ nan = y / y;
++ exit (1);
++}
++], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no,
++ [
++ # Guess based on the CPU.
++ case "$host_cpu" in
++ alpha* | i[34567]86 | m68k | s390*)
++ gt_cv_int_divbyzero_sigfpe="guessing yes";;
++ *)
++ gt_cv_int_divbyzero_sigfpe="guessing no";;
++ esac
++ ])
++ ])
++ case "$gt_cv_int_divbyzero_sigfpe" in
++ *yes) value=1;;
++ *) value=0;;
++ esac
++ AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value,
++ [Define if integer division by zero raises signal SIGFPE.])
++])
+--- /dev/null 2003-09-23 18:19:32.000000000 -0400
++++ OpenSP-1.5/m4/inttypes_h.m4 2004-01-20 03:01:28.000000000 -0500
+@@ -0,0 +1,28 @@
++# inttypes_h.m4 serial 4 (gettext-0.11.4)
++dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Paul Eggert.
++
++# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
++# doesn't clash with <sys/types.h>, and declares uintmax_t.
++
++AC_DEFUN([jm_AC_HEADER_INTTYPES_H],
++[
++ AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h,
++ [AC_TRY_COMPILE(
++ [#include <sys/types.h>
++#include <inttypes.h>],
++ [uintmax_t i = (uintmax_t) -1;],
++ jm_ac_cv_header_inttypes_h=yes,
++ jm_ac_cv_header_inttypes_h=no)])
++ if test $jm_ac_cv_header_inttypes_h = yes; then
++ AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1,
++[Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
++ and declares uintmax_t. ])
++ fi
++])
+--- /dev/null 2003-09-23 18:19:32.000000000 -0400
++++ OpenSP-1.5/m4/inttypes.m4 2004-01-20 03:01:28.000000000 -0500
+@@ -0,0 +1,27 @@
++# inttypes.m4 serial 1 (gettext-0.11.4)
++dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Paul Eggert.
++
++# Define HAVE_INTTYPES_H if <inttypes.h> exists and doesn't clash with
++# <sys/types.h>.
++
++AC_DEFUN([gt_HEADER_INTTYPES_H],
++[
++ AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h,
++ [
++ AC_TRY_COMPILE(
++ [#include <sys/types.h>
++#include <inttypes.h>],
++ [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no)
++ ])
++ if test $gt_cv_header_inttypes_h = yes; then
++ AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1,
++ [Define if <inttypes.h> exists and doesn't clash with <sys/types.h>.])
++ fi
++])
+--- /dev/null 2003-09-23 18:19:32.000000000 -0400
++++ OpenSP-1.5/m4/inttypes-pri.m4 2004-01-20 03:01:28.000000000 -0500
+@@ -0,0 +1,32 @@
++# inttypes-pri.m4 serial 1 (gettext-0.11.4)
++dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++
++# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
++# macros to non-string values. This is the case on AIX 4.3.3.
++
++AC_DEFUN([gt_INTTYPES_PRI],
++[
++ AC_REQUIRE([gt_HEADER_INTTYPES_H])
++ if test $gt_cv_header_inttypes_h = yes; then
++ AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
++ gt_cv_inttypes_pri_broken,
++ [
++ AC_TRY_COMPILE([#include <inttypes.h>
++#ifdef PRId32
++char *p = PRId32;
++#endif
++], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes)
++ ])
++ fi
++ if test "$gt_cv_inttypes_pri_broken" = yes; then
++ AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1,
++ [Define if <inttypes.h> exists and defines unusable PRI* macros.])
++ fi
++])
+--- /dev/null 2003-09-23 18:19:32.000000000 -0400
++++ OpenSP-1.5/m4/lcmessage.m4 2004-01-20 03:01:28.000000000 -0500
+@@ -0,0 +1,32 @@
++# lcmessage.m4 serial 3 (gettext-0.11.3)
++dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl Ulrich Drepper <drepper@cygnus.com>, 1995.
++
++# Check whether LC_MESSAGES is available in <locale.h>.
++
++AC_DEFUN([AM_LC_MESSAGES],
++[
++ AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
++ [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
++ am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
++ if test $am_cv_val_LC_MESSAGES = yes; then
++ AC_DEFINE(HAVE_LC_MESSAGES, 1,
++ [Define if your <locale.h> file defines LC_MESSAGES.])
++ fi
++])
+--- /dev/null 2003-09-23 18:19:32.000000000 -0400
++++ OpenSP-1.5/m4/progtest.m4 2004-01-20 03:01:28.000000000 -0500
+@@ -0,0 +1,59 @@
++# progtest.m4 serial 2 (gettext-0.10.40)
++dnl Copyright (C) 1996-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl Ulrich Drepper <drepper@cygnus.com>, 1996.
++
++# Search path for a program which passes the given test.
++
++dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
++dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
++AC_DEFUN([AM_PATH_PROG_WITH_TEST],
++[# Extract the first word of "$2", so it can be a program name with args.
++set dummy $2; ac_word=[$]2
++AC_MSG_CHECKING([for $ac_word])
++AC_CACHE_VAL(ac_cv_path_$1,
++[case "[$]$1" in
++ /*)
++ ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
++ ;;
++ *)
++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
++ for ac_dir in ifelse([$5], , $PATH, [$5]); do
++ test -z "$ac_dir" && ac_dir=.
++ if test -f $ac_dir/$ac_word; then
++ if [$3]; then
++ ac_cv_path_$1="$ac_dir/$ac_word"
++ break
++ fi
++ fi
++ done
++ IFS="$ac_save_ifs"
++dnl If no 4th arg is given, leave the cache variable unset,
++dnl so AC_PATH_PROGS will keep looking.
++ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
++])dnl
++ ;;
++esac])dnl
++$1="$ac_cv_path_$1"
++if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
++ AC_MSG_RESULT([$]$1)
++else
++ AC_MSG_RESULT(no)
++fi
++AC_SUBST($1)dnl
++])
+--- /dev/null 2003-09-23 18:19:32.000000000 -0400
++++ OpenSP-1.5/m4/stdint_h.m4 2004-01-20 03:01:28.000000000 -0500
+@@ -0,0 +1,28 @@
++# stdint_h.m4 serial 2 (gettext-0.11.4)
++dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Paul Eggert.
++
++# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
++# doesn't clash with <sys/types.h>, and declares uintmax_t.
++
++AC_DEFUN([jm_AC_HEADER_STDINT_H],
++[
++ AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h,
++ [AC_TRY_COMPILE(
++ [#include <sys/types.h>
++#include <stdint.h>],
++ [uintmax_t i = (uintmax_t) -1;],
++ jm_ac_cv_header_stdint_h=yes,
++ jm_ac_cv_header_stdint_h=no)])
++ if test $jm_ac_cv_header_stdint_h = yes; then
++ AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1,
++[Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
++ and declares uintmax_t. ])
++ fi
++])
+--- /dev/null 2003-09-23 18:19:32.000000000 -0400
++++ OpenSP-1.5/m4/uintmax_t.m4 2004-01-20 03:01:28.000000000 -0500
+@@ -0,0 +1,29 @@
++# uintmax_t.m4 serial 6 (gettext-0.11)
++dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Paul Eggert.
++
++AC_PREREQ(2.13)
++
++# Define uintmax_t to `unsigned long' or `unsigned long long'
++# if <inttypes.h> does not exist.
++
++AC_DEFUN([jm_AC_TYPE_UINTMAX_T],
++[
++ AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
++ AC_REQUIRE([jm_AC_HEADER_STDINT_H])
++ if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then
++ AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG])
++ test $ac_cv_type_unsigned_long_long = yes \
++ && ac_type='unsigned long long' \
++ || ac_type='unsigned long'
++ AC_DEFINE_UNQUOTED(uintmax_t, $ac_type,
++ [Define to unsigned long or unsigned long long
++ if <inttypes.h> and <stdint.h> don't define.])
++ fi
++])
+--- /dev/null 2003-09-23 18:19:32.000000000 -0400
++++ OpenSP-1.5/m4/ulonglong.m4 2004-01-20 03:01:28.000000000 -0500
+@@ -0,0 +1,23 @@
++# ulonglong.m4 serial 2 (fileutils-4.0.32, gettext-0.10.40)
++dnl Copyright (C) 1999-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Paul Eggert.
++
++AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG],
++[
++ AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long,
++ [AC_TRY_LINK([unsigned long long ull = 1; int i = 63;],
++ [unsigned long long ullmax = (unsigned long long) -1;
++ return ull << i | ull >> i | ullmax / ull | ullmax % ull;],
++ ac_cv_type_unsigned_long_long=yes,
++ ac_cv_type_unsigned_long_long=no)])
++ if test $ac_cv_type_unsigned_long_long = yes; then
++ AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1,
++ [Define if you have the unsigned long long type.])
++ fi
++])
+--- /dev/null 2003-09-23 18:19:32.000000000 -0400
++++ OpenSP-1.5/m4/lib-ld.m4 2004-01-20 03:02:17.000000000 -0500
+@@ -0,0 +1,97 @@
++# lib-ld.m4 serial 1 (gettext-0.11)
++dnl Copyright (C) 1996-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl Subroutines of libtool.m4,
++dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
++dnl with libtool.m4.
++
++dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
++AC_DEFUN([AC_LIB_PROG_LD_GNU],
++[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
++[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
++if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
++ acl_cv_prog_gnu_ld=yes
++else
++ acl_cv_prog_gnu_ld=no
++fi])
++with_gnu_ld=$acl_cv_prog_gnu_ld
++])
++
++dnl From libtool-1.4. Sets the variable LD.
++AC_DEFUN([AC_LIB_PROG_LD],
++[AC_ARG_WITH(gnu-ld,
++[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
++test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
++AC_REQUIRE([AC_PROG_CC])dnl
++AC_REQUIRE([AC_CANONICAL_HOST])dnl
++ac_prog=ld
++if test "$GCC" = yes; then
++ # Check if gcc -print-prog-name=ld gives a path.
++ AC_MSG_CHECKING([for ld used by GCC])
++ case $host in
++ *-*-mingw*)
++ # gcc leaves a trailing carriage return which upsets mingw
++ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
++ *)
++ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
++ esac
++ case $ac_prog in
++ # Accept absolute paths.
++ [[\\/]* | [A-Za-z]:[\\/]*)]
++ [re_direlt='/[^/][^/]*/\.\./']
++ # Canonicalize the path of ld
++ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
++ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
++ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
++ done
++ test -z "$LD" && LD="$ac_prog"
++ ;;
++ "")
++ # If it fails, then pretend we aren't using GCC.
++ ac_prog=ld
++ ;;
++ *)
++ # If it is relative, then search for the first ld in PATH.
++ with_gnu_ld=unknown
++ ;;
++ esac
++elif test "$with_gnu_ld" = yes; then
++ AC_MSG_CHECKING([for GNU ld])
++else
++ AC_MSG_CHECKING([for non-GNU ld])
++fi
++AC_CACHE_VAL(acl_cv_path_LD,
++[if test -z "$LD"; then
++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
++ for ac_dir in $PATH; do
++ test -z "$ac_dir" && ac_dir=.
++ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
++ acl_cv_path_LD="$ac_dir/$ac_prog"
++ # Check to see if the program is GNU ld. I'd rather use --version,
++ # but apparently some GNU ld's only accept -v.
++ # Break only if it was the GNU/non-GNU ld that we prefer.
++ if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
++ test "$with_gnu_ld" != no && break
++ else
++ test "$with_gnu_ld" != yes && break
++ fi
++ fi
++ done
++ IFS="$ac_save_ifs"
++else
++ acl_cv_path_LD="$LD" # Let the user override the test with a path.
++fi])
++LD="$acl_cv_path_LD"
++if test -n "$LD"; then
++ AC_MSG_RESULT($LD)
++else
++ AC_MSG_RESULT(no)
++fi
++test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
++AC_LIB_PROG_LD_GNU
++])
+--- /dev/null 2003-09-23 18:19:32.000000000 -0400
++++ OpenSP-1.5/m4/lib-link.m4 2004-01-20 03:02:17.000000000 -0500
+@@ -0,0 +1,554 @@
++# lib-link.m4 serial 3 (gettext-0.11.3)
++dnl Copyright (C) 2001-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++
++dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
++dnl the libraries corresponding to explicit and implicit dependencies.
++dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
++dnl augments the CPPFLAGS variable.
++AC_DEFUN([AC_LIB_LINKFLAGS],
++[
++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++ AC_REQUIRE([AC_LIB_RPATH])
++ define([Name],[translit([$1],[./-], [___])])
++ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
++ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
++ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
++ AC_LIB_LINKFLAGS_BODY([$1], [$2])
++ ac_cv_lib[]Name[]_libs="$LIB[]NAME"
++ ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
++ ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
++ ])
++ LIB[]NAME="$ac_cv_lib[]Name[]_libs"
++ LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
++ INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
++ AC_SUBST([LIB]NAME)
++ AC_SUBST([LTLIB]NAME)
++ dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
++ dnl results of this search when this library appears as a dependency.
++ HAVE_LIB[]NAME=yes
++ undefine([Name])
++ undefine([NAME])
++])
++
++dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
++dnl searches for libname and the libraries corresponding to explicit and
++dnl implicit dependencies, together with the specified include files and
++dnl the ability to compile and link the specified testcode. If found, it
++dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
++dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
++dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
++dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
++AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
++[
++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++ AC_REQUIRE([AC_LIB_RPATH])
++ define([Name],[translit([$1],[./-], [___])])
++ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
++ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
++
++ dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
++ dnl accordingly.
++ AC_LIB_LINKFLAGS_BODY([$1], [$2])
++
++ dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
++ dnl because if the user has installed lib[]Name and not disabled its use
++ dnl via --without-lib[]Name-prefix, he wants to use it.
++ ac_save_CPPFLAGS="$CPPFLAGS"
++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
++
++ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
++ ac_save_LIBS="$LIBS"
++ LIBS="$LIBS $LIB[]NAME"
++ AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
++ LIBS="$ac_save_LIBS"
++ ])
++ if test "$ac_cv_lib[]Name" = yes; then
++ HAVE_LIB[]NAME=yes
++ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
++ AC_MSG_CHECKING([how to link with lib[]$1])
++ AC_MSG_RESULT([$LIB[]NAME])
++ else
++ HAVE_LIB[]NAME=no
++ dnl If $LIB[]NAME didn't lead to a usable library, we don't need
++ dnl $INC[]NAME either.
++ CPPFLAGS="$ac_save_CPPFLAGS"
++ LIB[]NAME=
++ LTLIB[]NAME=
++ fi
++ AC_SUBST([HAVE_LIB]NAME)
++ AC_SUBST([LIB]NAME)
++ AC_SUBST([LTLIB]NAME)
++ undefine([Name])
++ undefine([NAME])
++])
++
++dnl Determine the platform dependent parameters needed to use rpath:
++dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator,
++dnl hardcode_direct, hardcode_minus_L,
++dnl sys_lib_search_path_spec, sys_lib_dlsearch_path_spec.
++AC_DEFUN([AC_LIB_RPATH],
++[
++ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
++ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
++ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
++ AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
++ AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
++ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
++ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
++ . ./conftest.sh
++ rm -f ./conftest.sh
++ acl_cv_rpath=done
++ ])
++ wl="$acl_cv_wl"
++ libext="$acl_cv_libext"
++ shlibext="$acl_cv_shlibext"
++ hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
++ hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
++ hardcode_direct="$acl_cv_hardcode_direct"
++ hardcode_minus_L="$acl_cv_hardcode_minus_L"
++ sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec"
++ sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec"
++ dnl Determine whether the user wants rpath handling at all.
++ AC_ARG_ENABLE(rpath,
++ [ --disable-rpath do not hardcode runtime library paths],
++ :, enable_rpath=yes)
++])
++
++dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
++dnl the libraries corresponding to explicit and implicit dependencies.
++dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
++AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
++[
++ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
++ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
++ dnl By default, look in $includedir and $libdir.
++ use_additional=yes
++ AC_LIB_WITH_FINAL_PREFIX([
++ eval additional_includedir=\"$includedir\"
++ eval additional_libdir=\"$libdir\"
++ ])
++ AC_ARG_WITH([lib$1-prefix],
++[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
++ --without-lib$1-prefix don't search for lib$1 in includedir and libdir],
++[
++ if test "X$withval" = "Xno"; then
++ use_additional=no
++ else
++ if test "X$withval" = "X"; then
++ AC_LIB_WITH_FINAL_PREFIX([
++ eval additional_includedir=\"$includedir\"
++ eval additional_libdir=\"$libdir\"
++ ])
++ else
++ additional_includedir="$withval/include"
++ additional_libdir="$withval/lib"
++ fi
++ fi
++])
++ dnl Search the library and its dependencies in $additional_libdir and
++ dnl $LDFLAGS. Using breadth-first-seach.
++ LIB[]NAME=
++ LTLIB[]NAME=
++ INC[]NAME=
++ rpathdirs=
++ ltrpathdirs=
++ names_already_handled=
++ names_next_round='$1 $2'
++ while test -n "$names_next_round"; do
++ names_this_round="$names_next_round"
++ names_next_round=
++ for name in $names_this_round; do
++ already_handled=
++ for n in $names_already_handled; do
++ if test "$n" = "$name"; then
++ already_handled=yes
++ break
++ fi
++ done
++ if test -z "$already_handled"; then
++ names_already_handled="$names_already_handled $name"
++ dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
++ dnl or AC_LIB_HAVE_LINKFLAGS call.
++ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
++ eval value=\"\$HAVE_LIB$uppername\"
++ if test -n "$value"; then
++ if test "$value" = yes; then
++ eval value=\"\$LIB$uppername\"
++ test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
++ eval value=\"\$LTLIB$uppername\"
++ test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
++ else
++ dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
++ dnl that this library doesn't exist. So just drop it.
++ :
++ fi
++ else
++ dnl Search the library lib$name in $additional_libdir and $LDFLAGS
++ dnl and the already constructed $LIBNAME/$LTLIBNAME.
++ found_dir=
++ found_la=
++ found_so=
++ found_a=
++ if test $use_additional = yes; then
++ if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
++ found_dir="$additional_libdir"
++ found_so="$additional_libdir/lib$name.$shlibext"
++ if test -f "$additional_libdir/lib$name.la"; then
++ found_la="$additional_libdir/lib$name.la"
++ fi
++ else
++ if test -f "$additional_libdir/lib$name.$libext"; then
++ found_dir="$additional_libdir"
++ found_a="$additional_libdir/lib$name.$libext"
++ if test -f "$additional_libdir/lib$name.la"; then
++ found_la="$additional_libdir/lib$name.la"
++ fi
++ fi
++ fi
++ fi
++ if test "X$found_dir" = "X"; then
++ for x in $LDFLAGS $LTLIB[]NAME; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ case "$x" in
++ -L*)
++ dir=`echo "X$x" | sed -e 's/^X-L//'`
++ if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
++ found_dir="$dir"
++ found_so="$dir/lib$name.$shlibext"
++ if test -f "$dir/lib$name.la"; then
++ found_la="$dir/lib$name.la"
++ fi
++ else
++ if test -f "$dir/lib$name.$libext"; then
++ found_dir="$dir"
++ found_a="$dir/lib$name.$libext"
++ if test -f "$dir/lib$name.la"; then
++ found_la="$dir/lib$name.la"
++ fi
++ fi
++ fi
++ ;;
++ esac
++ if test "X$found_dir" != "X"; then
++ break
++ fi
++ done
++ fi
++ if test "X$found_dir" != "X"; then
++ dnl Found the library.
++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
++ if test "X$found_so" != "X"; then
++ dnl Linking with a shared library. We attempt to hardcode its
++ dnl directory into the executable's runpath, unless it's the
++ dnl standard /usr/lib.
++ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
++ dnl No hardcoding is needed.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
++ else
++ dnl Use an explicit option to hardcode DIR into the resulting
++ dnl binary.
++ dnl Potentially add DIR to ltrpathdirs.
++ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
++ haveit=
++ for x in $ltrpathdirs; do
++ if test "X$x" = "X$found_dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ ltrpathdirs="$ltrpathdirs $found_dir"
++ fi
++ dnl The hardcoding into $LIBNAME is system dependent.
++ if test "$hardcode_direct" = yes; then
++ dnl Using DIR/libNAME.so during linking hardcodes DIR into the
++ dnl resulting binary.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
++ else
++ if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
++ dnl Use an explicit option to hardcode DIR into the resulting
++ dnl binary.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
++ dnl Potentially add DIR to rpathdirs.
++ dnl The rpathdirs will be appended to $LIBNAME at the end.
++ haveit=
++ for x in $rpathdirs; do
++ if test "X$x" = "X$found_dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ rpathdirs="$rpathdirs $found_dir"
++ fi
++ else
++ dnl Rely on "-L$found_dir".
++ dnl But don't add it if it's already contained in the LDFLAGS
++ dnl or the already constructed $LIBNAME
++ haveit=
++ for x in $LDFLAGS $LIB[]NAME; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ if test "X$x" = "X-L$found_dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
++ fi
++ if test "$hardcode_minus_L" != no; then
++ dnl FIXME: Not sure whether we should use
++ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
++ dnl here.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
++ else
++ dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH
++ dnl here, because this doesn't fit in flags passed to the
++ dnl compiler. So give up. No hardcoding. This affects only
++ dnl very old systems.
++ dnl FIXME: Not sure whether we should use
++ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
++ dnl here.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
++ fi
++ fi
++ fi
++ fi
++ else
++ if test "X$found_a" != "X"; then
++ dnl Linking with a static library.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
++ else
++ dnl We shouldn't come here, but anyway it's good to have a
++ dnl fallback.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
++ fi
++ fi
++ dnl Assume the include files are nearby.
++ additional_includedir=
++ case "$found_dir" in
++ */lib | */lib/)
++ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
++ additional_includedir="$basedir/include"
++ ;;
++ esac
++ if test "X$additional_includedir" != "X"; then
++ dnl Potentially add $additional_includedir to $INCNAME.
++ dnl But don't add it
++ dnl 1. if it's the standard /usr/include,
++ dnl 2. if it's /usr/local/include and we are using GCC on Linux,
++ dnl 3. if it's already present in $CPPFLAGS or the already
++ dnl constructed $INCNAME,
++ dnl 4. if it doesn't exist as a directory.
++ if test "X$additional_includedir" != "X/usr/include"; then
++ haveit=
++ if test "X$additional_includedir" = "X/usr/local/include"; then
++ if test -n "$GCC"; then
++ case $host_os in
++ linux*) haveit=yes;;
++ esac
++ fi
++ fi
++ if test -z "$haveit"; then
++ for x in $CPPFLAGS $INC[]NAME; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ if test "X$x" = "X-I$additional_includedir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ if test -d "$additional_includedir"; then
++ dnl Really add $additional_includedir to $INCNAME.
++ INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
++ fi
++ fi
++ fi
++ fi
++ fi
++ dnl Look for dependencies.
++ if test -n "$found_la"; then
++ dnl Read the .la file. It defines the variables
++ dnl dlname, library_names, old_library, dependency_libs, current,
++ dnl age, revision, installed, dlopen, dlpreopen, libdir.
++ save_libdir="$libdir"
++ case "$found_la" in
++ */* | *\\*) . "$found_la" ;;
++ *) . "./$found_la" ;;
++ esac
++ libdir="$save_libdir"
++ dnl We use only dependency_libs.
++ for dep in $dependency_libs; do
++ case "$dep" in
++ -L*)
++ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
++ dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
++ dnl But don't add it
++ dnl 1. if it's the standard /usr/lib,
++ dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
++ dnl 3. if it's already present in $LDFLAGS or the already
++ dnl constructed $LIBNAME,
++ dnl 4. if it doesn't exist as a directory.
++ if test "X$additional_libdir" != "X/usr/lib"; then
++ haveit=
++ if test "X$additional_libdir" = "X/usr/local/lib"; then
++ if test -n "$GCC"; then
++ case $host_os in
++ linux*) haveit=yes;;
++ esac
++ fi
++ fi
++ if test -z "$haveit"; then
++ haveit=
++ for x in $LDFLAGS $LIB[]NAME; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ if test "X$x" = "X-L$additional_libdir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ if test -d "$additional_libdir"; then
++ dnl Really add $additional_libdir to $LIBNAME.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
++ fi
++ fi
++ haveit=
++ for x in $LDFLAGS $LTLIB[]NAME; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ if test "X$x" = "X-L$additional_libdir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ if test -d "$additional_libdir"; then
++ dnl Really add $additional_libdir to $LTLIBNAME.
++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
++ fi
++ fi
++ fi
++ fi
++ ;;
++ -R*)
++ dir=`echo "X$dep" | sed -e 's/^X-R//'`
++ if test "$enable_rpath" != no; then
++ dnl Potentially add DIR to rpathdirs.
++ dnl The rpathdirs will be appended to $LIBNAME at the end.
++ haveit=
++ for x in $rpathdirs; do
++ if test "X$x" = "X$dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ rpathdirs="$rpathdirs $dir"
++ fi
++ dnl Potentially add DIR to ltrpathdirs.
++ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
++ haveit=
++ for x in $ltrpathdirs; do
++ if test "X$x" = "X$dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ ltrpathdirs="$ltrpathdirs $dir"
++ fi
++ fi
++ ;;
++ -l*)
++ dnl Handle this in the next round.
++ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
++ ;;
++ *.la)
++ dnl Handle this in the next round. Throw away the .la's
++ dnl directory; it is already contained in a preceding -L
++ dnl option.
++ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
++ ;;
++ *)
++ dnl Most likely an immediate library name.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
++ ;;
++ esac
++ done
++ fi
++ else
++ dnl Didn't find the library; assume it is in the system directories
++ dnl known to the linker and runtime loader. (All the system
++ dnl directories known to the linker should also be known to the
++ dnl runtime loader, otherwise the system is severely misconfigured.)
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
++ fi
++ fi
++ fi
++ done
++ done
++ if test "X$rpathdirs" != "X"; then
++ if test -n "$hardcode_libdir_separator"; then
++ dnl Weird platform: only the last -rpath option counts, the user must
++ dnl pass all path elements in one option. We can arrange that for a
++ dnl single library, but not when more than one $LIBNAMEs are used.
++ alldirs=
++ for found_dir in $rpathdirs; do
++ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
++ done
++ dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl.
++ acl_save_libdir="$libdir"
++ libdir="$alldirs"
++ eval flag=\"$hardcode_libdir_flag_spec\"
++ libdir="$acl_save_libdir"
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
++ else
++ dnl The -rpath options are cumulative.
++ for found_dir in $rpathdirs; do
++ acl_save_libdir="$libdir"
++ libdir="$found_dir"
++ eval flag=\"$hardcode_libdir_flag_spec\"
++ libdir="$acl_save_libdir"
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
++ done
++ fi
++ fi
++ if test "X$ltrpathdirs" != "X"; then
++ dnl When using libtool, the option that works for both libraries and
++ dnl executables is -R. The -R options are cumulative.
++ for found_dir in $ltrpathdirs; do
++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
++ done
++ fi
++])
++
++dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
++dnl unless already present in VAR.
++dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
++dnl contains two or three consecutive elements that belong together.
++AC_DEFUN([AC_LIB_APPENDTOVAR],
++[
++ for element in [$2]; do
++ haveit=
++ for x in $[$1]; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ if test "X$x" = "X$element"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ [$1]="${[$1]}${[$1]:+ }$element"
++ fi
++ done
++])
+--- /dev/null 2003-09-23 18:19:32.000000000 -0400
++++ OpenSP-1.5/m4/lib-prefix.m4 2004-01-20 03:02:17.000000000 -0500
+@@ -0,0 +1,148 @@
++# lib-prefix.m4 serial 1 (gettext-0.11)
++dnl Copyright (C) 2001-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++
++dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
++dnl to access previously installed libraries. The basic assumption is that
++dnl a user will want packages to use other packages he previously installed
++dnl with the same --prefix option.
++dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
++dnl libraries, but is otherwise very convenient.
++AC_DEFUN([AC_LIB_PREFIX],
++[
++ AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
++ AC_REQUIRE([AC_PROG_CC])
++ AC_REQUIRE([AC_CANONICAL_HOST])
++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++ dnl By default, look in $includedir and $libdir.
++ use_additional=yes
++ AC_LIB_WITH_FINAL_PREFIX([
++ eval additional_includedir=\"$includedir\"
++ eval additional_libdir=\"$libdir\"
++ ])
++ AC_ARG_WITH([lib-prefix],
++[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
++ --without-lib-prefix don't search for libraries in includedir and libdir],
++[
++ if test "X$withval" = "Xno"; then
++ use_additional=no
++ else
++ if test "X$withval" = "X"; then
++ AC_LIB_WITH_FINAL_PREFIX([
++ eval additional_includedir=\"$includedir\"
++ eval additional_libdir=\"$libdir\"
++ ])
++ else
++ additional_includedir="$withval/include"
++ additional_libdir="$withval/lib"
++ fi
++ fi
++])
++ if test $use_additional = yes; then
++ dnl Potentially add $additional_includedir to $CPPFLAGS.
++ dnl But don't add it
++ dnl 1. if it's the standard /usr/include,
++ dnl 2. if it's already present in $CPPFLAGS,
++ dnl 3. if it's /usr/local/include and we are using GCC on Linux,
++ dnl 4. if it doesn't exist as a directory.
++ if test "X$additional_includedir" != "X/usr/include"; then
++ haveit=
++ for x in $CPPFLAGS; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ if test "X$x" = "X-I$additional_includedir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ if test "X$additional_includedir" = "X/usr/local/include"; then
++ if test -n "$GCC"; then
++ case $host_os in
++ linux*) haveit=yes;;
++ esac
++ fi
++ fi
++ if test -z "$haveit"; then
++ if test -d "$additional_includedir"; then
++ dnl Really add $additional_includedir to $CPPFLAGS.
++ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
++ fi
++ fi
++ fi
++ fi
++ dnl Potentially add $additional_libdir to $LDFLAGS.
++ dnl But don't add it
++ dnl 1. if it's the standard /usr/lib,
++ dnl 2. if it's already present in $LDFLAGS,
++ dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
++ dnl 4. if it doesn't exist as a directory.
++ if test "X$additional_libdir" != "X/usr/lib"; then
++ haveit=
++ for x in $LDFLAGS; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ if test "X$x" = "X-L$additional_libdir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ if test "X$additional_libdir" = "X/usr/local/lib"; then
++ if test -n "$GCC"; then
++ case $host_os in
++ linux*) haveit=yes;;
++ esac
++ fi
++ fi
++ if test -z "$haveit"; then
++ if test -d "$additional_libdir"; then
++ dnl Really add $additional_libdir to $LDFLAGS.
++ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
++ fi
++ fi
++ fi
++ fi
++ fi
++])
++
++dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
++dnl acl_final_exec_prefix, containing the values to which $prefix and
++dnl $exec_prefix will expand at the end of the configure script.
++AC_DEFUN([AC_LIB_PREPARE_PREFIX],
++[
++ dnl Unfortunately, prefix and exec_prefix get only finally determined
++ dnl at the end of configure.
++ if test "X$prefix" = "XNONE"; then
++ acl_final_prefix="$ac_default_prefix"
++ else
++ acl_final_prefix="$prefix"
++ fi
++ if test "X$exec_prefix" = "XNONE"; then
++ acl_final_exec_prefix='${prefix}'
++ else
++ acl_final_exec_prefix="$exec_prefix"
++ fi
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
++ prefix="$acl_save_prefix"
++])
++
++dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
++dnl variables prefix and exec_prefix bound to the values they will have
++dnl at the end of the configure script.
++AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
++[
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ acl_save_exec_prefix="$exec_prefix"
++ exec_prefix="$acl_final_exec_prefix"
++ $1
++ exec_prefix="$acl_save_exec_prefix"
++ prefix="$acl_save_prefix"
++])
diff --git a/meta/recipes-devtools/opensp/opensp/rangmap-fix.patch b/meta/recipes-devtools/opensp/opensp/rangmap-fix.patch
new file mode 100644
index 0000000000..cc849ca3a8
--- /dev/null
+++ b/meta/recipes-devtools/opensp/opensp/rangmap-fix.patch
@@ -0,0 +1,15 @@
+Patch obtained from OpenEmbedded.
+
+Signed-off-by: Scott Garman <scott.a.garman@intel.com>
+Index: OpenSP-1.5/include/RangeMap.cxx
+===================================================================
+--- OpenSP-1.5.orig/include/RangeMap.cxx 2000-02-26 03:55:21.000000000 +1100
++++ OpenSP-1.5/include/RangeMap.cxx 2007-06-02 11:48:17.000000000 +1000
+@@ -7,6 +7,7 @@
+ #include "RangeMap.h"
+ #include "ISet.h"
+ #include "types.h"
++#include "constant.h"
+
+ #ifdef SP_NAMESPACE
+ namespace SP_NAMESPACE {
diff --git a/meta/recipes-devtools/opensp/opensp_1.5.bb b/meta/recipes-devtools/opensp/opensp_1.5.bb
new file mode 100644
index 0000000000..bda87cb06d
--- /dev/null
+++ b/meta/recipes-devtools/opensp/opensp_1.5.bb
@@ -0,0 +1,27 @@
+SUMMARY = "An SGML parser"
+DESCRIPTION = "An SGML parser used by the OpenJade suite of utilities."
+HOMEPAGE = "http://openjade.sourceforge.net"
+SECTION = "libs"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=641ff1e4511f0a87044ad42f87cb1045"
+
+PR = "r0"
+
+# At -Os it encounters calls to some inline functions which are then
+# not found in any other objects with gcc 4.5
+FULL_OPTIMIZATION += "-O2"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/openjade/OpenSP-${PV}.tar.gz \
+ file://m4.patch \
+ file://attributevalue.patch \
+ file://rangmap-fix.patch \
+ file://fix-docdir.patch"
+
+SRC_URI[md5sum] = "87f56e79ae0c20397f4207d61d154303"
+SRC_URI[sha256sum] = "987eeb9460185950e066e5db3b5fa531e53e213742b545288405552a5a7bb704"
+
+S = "${WORKDIR}/OpenSP-${PV}"
+
+inherit autotools gettext
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/opkg-utils/opkg-utils_svn.bb b/meta/recipes-devtools/opkg-utils/opkg-utils_svn.bb
index 087d25498f..8560f36c5b 100644
--- a/meta/recipes-devtools/opkg-utils/opkg-utils_svn.bb
+++ b/meta/recipes-devtools/opkg-utils/opkg-utils_svn.bb
@@ -5,10 +5,10 @@ PRIORITY = "optional"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
file://opkg.py;beginline=1;endline=18;md5=15917491ad6bf7acc666ca5f7cc1e083"
-RDEPENDS = "python"
-RDEPENDS_virtclass-native = ""
-PV = "0.1.8+svnr${SRCREV}"
-PR = "r1"
+RDEPENDS_${PN} = "python"
+RDEPENDS_${PN}_virtclass-native = ""
+PV = "0.1.8+svnr${SRCPV}"
+PR = "r2"
SRC_URI = "svn://svn.openmoko.org/trunk/src/host/;module=opkg-utils;proto=http \
file://index-ignore-filenotfound.patch"
diff --git a/meta/recipes-devtools/opkg/opkg-0.1.8/opkg_unarchive.patch b/meta/recipes-devtools/opkg/opkg-0.1.8/opkg_unarchive.patch
deleted file mode 100644
index 4b12448155..0000000000
--- a/meta/recipes-devtools/opkg/opkg-0.1.8/opkg_unarchive.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Rebase for the latest version
-Dongxiao Xu <dongxiao.xu@intel.com>
-
-diff -ruN opkg-0.1.8-orig/libbb/unarchive.c opkg-0.1.8/libbb/unarchive.c
---- opkg-0.1.8-orig/libbb/unarchive.c 2010-07-20 09:39:02.266424893 +0800
-+++ opkg-0.1.8/libbb/unarchive.c 2010-07-20 09:39:50.474435569 +0800
-@@ -523,6 +523,10 @@
- }
- }
-
-+ if (strlen(tar_entry->name) > 100) {
-+ tar_entry->name[100] = 0;
-+ }
-+
- // tar_entry->name = xstrdup(tar.formated.name);
-
- /*
diff --git a/meta/recipes-devtools/opkg/opkg.inc b/meta/recipes-devtools/opkg/opkg.inc
index add1563c47..c3174917a5 100644
--- a/meta/recipes-devtools/opkg/opkg.inc
+++ b/meta/recipes-devtools/opkg/opkg.inc
@@ -31,3 +31,6 @@ EXTRA_OECONF_virtclass-nativesdk = "--with-opkglibdir=${target_localstatedir}/li
#RPROVIDES_${PN} += "update-alternatives-native"
BBCLASSEXTEND = "native nativesdk"
+
+PKGSUFFIX = ""
+PKGSUFFIX_virtclass-nativesdk = "-nativesdk"
diff --git a/meta/recipes-devtools/opkg/opkg/logfix.patch b/meta/recipes-devtools/opkg/opkg/logfix.patch
deleted file mode 100644
index da06f00bd0..0000000000
--- a/meta/recipes-devtools/opkg/opkg/logfix.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Patch to remove "duplicate" bits of logs from opkg output, which
-massively simplifies do_rootfs logs. The reason is we get unflushed
-data passed to the children and duplicated.
-
-RP - 26/1/10
-
-Index: trunk/libbb/gz_open.c
-===================================================================
---- trunk.orig/libbb/gz_open.c 2010-01-26 23:12:10.000000000 +0000
-+++ trunk/libbb/gz_open.c 2010-01-26 23:12:17.000000000 +0000
-@@ -38,6 +38,12 @@
- perror_msg("pipe");
- return(NULL);
- }
-+
-+ /* If we don't flush, we end up with two copies of anything pending,
-+ one from the parent, one from the child */
-+ fflush(stdout);
-+ fflush(stderr);
-+
- if ((*pid = fork()) == -1) {
- perror_msg("fork");
- return(NULL);
diff --git a/meta/recipes-devtools/opkg/opkg_0.1.8.bb b/meta/recipes-devtools/opkg/opkg_0.1.8.bb
index 4eb3ff9a11..6815474207 100644
--- a/meta/recipes-devtools/opkg/opkg_0.1.8.bb
+++ b/meta/recipes-devtools/opkg/opkg_0.1.8.bb
@@ -15,11 +15,11 @@ SRC_URI = "http://opkg.googlecode.com/files/opkg-${PV}.tar.gz \
PR = "r3"
-PACKAGES =+ "libopkg-dev libopkg update-alternatives-cworth"
+PACKAGES =+ "libopkg${PKGSUFFIX}-dev libopkg${PKGSUFFIX} update-alternatives-cworth${PKGSUFFIX}"
-FILES_update-alternatives-cworth = "${bindir}/update-alternatives"
-FILES_libopkg-dev = "${libdir}/*.a ${libdir}/*.la ${libdir}/*.so"
-FILES_libopkg = "${libdir}/*.so.* ${localstatedir}/lib/opkg/"
+FILES_update-alternatives-cworth${PKGSUFFIX} = "${bindir}/update-alternatives"
+FILES_libopkg${PKGSUFFIX}-dev = "${libdir}/*.a ${libdir}/*.la ${libdir}/*.so"
+FILES_libopkg${PKGSUFFIX} = "${libdir}/*.so.* ${localstatedir}/lib/opkg/"
# We need to create the lock directory
do_install_append() {
diff --git a/meta/recipes-devtools/opkg/opkg_svn.bb b/meta/recipes-devtools/opkg/opkg_svn.bb
index 518c767354..76ec838875 100644
--- a/meta/recipes-devtools/opkg/opkg_svn.bb
+++ b/meta/recipes-devtools/opkg/opkg_svn.bb
@@ -9,21 +9,20 @@ RDEPENDS_${PN}_virtclass-nativesdk = ""
PACKAGE_ARCH_update-alternatives-cworth = "all"
SRC_URI = "svn://opkg.googlecode.com/svn;module=trunk;proto=http \
- file://opkg_unarchive.patch \
file://add_vercmp.patch \
file://headerfix.patch \
- file://logfix.patch"
+"
S = "${WORKDIR}/trunk"
-PV = "0.0+svnr${SRCREV}"
-PR = "r15"
+PV = "0.1.8+svnr${SRCPV}"
+PR = "r1"
-PACKAGES =+ "libopkg-dev libopkg update-alternatives-cworth"
+PACKAGES =+ "libopkg${PKGSUFFIX}-dev libopkg${PKGSUFFIX} update-alternatives-cworth${PKGSUFFIX}"
-FILES_update-alternatives-cworth = "${bindir}/update-alternatives"
-FILES_libopkg-dev = "${libdir}/*.a ${libdir}/*.la ${libdir}/*.so"
-FILES_libopkg = "${libdir}/*.so.* ${localstatedir}/lib/opkg/"
+FILES_update-alternatives-cworth${PKGSUFFIX} = "${bindir}/update-alternatives"
+FILES_libopkg${PKGSUFFIX}-dev = "${libdir}/*.a ${libdir}/*.la ${libdir}/*.so"
+FILES_libopkg${PKGSUFFIX} = "${libdir}/*.so.* ${localstatedir}/lib/opkg/"
# We need to create the lock directory
do_install_append() {
diff --git a/meta/recipes-devtools/patch/patch_2.6.1.bb b/meta/recipes-devtools/patch/patch_2.6.1.bb
index 8d07a7811c..39d6fc6c68 100644
--- a/meta/recipes-devtools/patch/patch_2.6.1.bb
+++ b/meta/recipes-devtools/patch/patch_2.6.1.bb
@@ -6,7 +6,7 @@ PR = "r0"
SRC_URI += " file://global-reject-file.diff;patch=1 "
SRC_URI[md5sum] = "d758eb96d3f75047efc004a720d33daf"
-SRC_URI[sha256sum] = "ecb5c6469d732bcf01d6ec1afe9e64f1668caba5bfdb103c28d7f537ba3cdb8a"
+SRC_URI[sha256sum] = "d1563731e9cffed11cc5f011b2b8e074c325e86a383a91889b5c5b80b09781b9"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
diff --git a/meta/recipes-devtools/pax-utils/pax-utils_0.2.1.bb b/meta/recipes-devtools/pax-utils/pax-utils_0.2.1.bb
deleted file mode 100644
index f19934c223..0000000000
--- a/meta/recipes-devtools/pax-utils/pax-utils_0.2.1.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "Security-focused ELF files checking tool"
-DESCRIPTION = "This is a small set of various PaX aware and related utilities for ELF binaries. It can check ELF \
-binary files and running processes for issues that might be relevant when using ELF binaries along with PaX, \
-such as non-PIC code or executable stack and heap."
-HOMEPAGE = "http://www.gentoo.org/proj/en/hardened/pax-utils.xml"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
-SRC_URI = "http://gentoo.osuosl.org/distfiles/pax-utils-${PV}.tar.bz2"
-
-SRC_URI[md5sum] = "2bf53234580e02294453a40c864f5871"
-SRC_URI[sha256sum] = "6a5beefb686e425eb6829bc716d2b32b64c2e854287c212c9853bc2beb705c3a"
-
-PR = "r0"
-
-do_install() {
- oe_runmake PREFIX=${D}${prefix} DESTDIR=${D} install
-}
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/pax-utils/pax-utils_0.2.2.bb b/meta/recipes-devtools/pax-utils/pax-utils_0.2.2.bb
new file mode 100644
index 0000000000..6bb33e7138
--- /dev/null
+++ b/meta/recipes-devtools/pax-utils/pax-utils_0.2.2.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Security-focused ELF files checking tool"
+DESCRIPTION = "This is a small set of various PaX aware and related \
+utilities for ELF binaries. It can check ELF binary files and running \
+processes for issues that might be relevant when using ELF binaries \
+along with PaX, such as non-PIC code or executable stack and heap."
+HOMEPAGE = "http://www.gentoo.org/proj/en/hardened/pax-utils.xml"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
+
+SRC_URI = "http://gentoo.osuosl.org/distfiles/pax-utils-${PV}.tar.bz2"
+
+SRC_URI[md5sum] = "93a2e993ec7a83627c39ddf92988e191"
+SRC_URI[sha256sum] = "eac86abe7871ee12452d221c1e7c21acb9ba78ba2cba1daa587d3c93c77acd07"
+
+PR = "r0"
+
+do_install() {
+ oe_runmake PREFIX=${D}${prefix} DESTDIR=${D} install
+}
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/perl/files/letgcc-find-errno.patch b/meta/recipes-devtools/perl/files/letgcc-find-errno.patch
index 24722ee964..47f972d039 100644
--- a/meta/recipes-devtools/perl/files/letgcc-find-errno.patch
+++ b/meta/recipes-devtools/perl/files/letgcc-find-errno.patch
@@ -8,10 +8,12 @@ external toolchain since perl will search in ${STAGING_INCDIR} for
errno.h (when using gcc) and that isn't where it's located - its
wherever the external toolchain keeps it's headers.
---- perl-5.8.8/ext/Errno/Errno_pm.PL 2007/04/30 14:10:10 1.1
-+++ perl-5.8.8/ext/Errno/Errno_pm.PL 2007/04/30 14:21:35
-@@ -11,8 +11,18 @@
- open OUT, ">Errno.pm" or die "Cannot open Errno.pm: $!";
+Index: perl-5.12.2/ext/Errno/Errno_pm.PL
+===================================================================
+--- perl-5.12.2.orig/ext/Errno/Errno_pm.PL
++++ perl-5.12.2/ext/Errno/Errno_pm.PL
+@@ -17,8 +17,18 @@ unlink "Errno.tmp" if -f "Errno.tmp";
+ open OUT, ">Errno.tmp" or die "Cannot open Errno.tmp: $!";
select OUT;
my $file;
-my @files = get_files();
@@ -31,12 +33,12 @@ wherever the external toolchain keeps it's headers.
# MinGW complains "warning: #pragma system_header ignored outside include
# file" if the header files are processed individually, so include them
# all in .c file and process that instead.
-@@ -44,7 +54,7 @@
+@@ -53,7 +63,7 @@ sub process_file {
chomp($file = `cygpath -w "$file"`);
}
- return unless defined $file and -f $file;
+# return unless defined $file and -f $file;
- # warn "Processing $file\n";
+ # warn "Processing $file\n";
local *FH;
diff --git a/meta/recipes-devtools/perl/files/perl-5.8.8-gcc-4.2.patch b/meta/recipes-devtools/perl/files/perl-5.8.8-gcc-4.2.patch
deleted file mode 100644
index 653a4758f4..0000000000
--- a/meta/recipes-devtools/perl/files/perl-5.8.8-gcc-4.2.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-See http://bugs.openembedded.net/show_bug.cgi?id=2168
-Fix for gcc 4.2
-
---- perl-5.8.8/makedepend.SH.ark 2006-11-01 16:32:05.000000000 +0100
-+++ perl-5.8.8/makedepend.SH 2006-11-01 16:32:15.000000000 +0100
-@@ -167,6 +167,7 @@
- -e '/^#.*<builtin>/d' \
- -e '/^#.*<built-in>/d' \
- -e '/^#.*<command line>/d' \
-+ -e '/^#.*<command-line>/d' \
- -e '/^#.*"-"/d' \
- -e '/: file path prefix .* never used$/d' \
- -e 's#\.[0-9][0-9]*\.c#'"$file.c#" \
diff --git a/meta/recipes-devtools/perl/liburi-perl_1.56 b/meta/recipes-devtools/perl/liburi-perl_1.56.bb
index 76a1231388..76a1231388 100644
--- a/meta/recipes-devtools/perl/liburi-perl_1.56
+++ b/meta/recipes-devtools/perl/liburi-perl_1.56.bb
diff --git a/meta/recipes-devtools/perl/libxml-simple-perl_2.18.bb b/meta/recipes-devtools/perl/libxml-simple-perl_2.18.bb
index 136e117c85..ca57776dac 100644
--- a/meta/recipes-devtools/perl/libxml-simple-perl_2.18.bb
+++ b/meta/recipes-devtools/perl/libxml-simple-perl_2.18.bb
@@ -2,7 +2,7 @@ SECTION = "libs"
LICENSE = "Artistic"
LIC_FILES_CHKSUM = "file://README;beginline=70;md5=94aa5d46682b411a53a5494cfb22640e"
DEPENDS += "libxml-parser-perl"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://www.cpan.org/modules/by-module/XML/XML-Simple-${PV}.tar.gz"
@@ -11,4 +11,6 @@ SRC_URI[sha256sum] = "a54967c188cda3e20f496c83be4de3f1740eeaa83c0380712ecd969ad8
S = "${WORKDIR}/XML-Simple-${PV}"
+EXTRA_PERLFLAGS = "-I ${STAGING_LIBDIR_NATIVE}/perl/${@get_perl_version(d)}"
+
inherit cpan
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/09_fix_installperl.patch b/meta/recipes-devtools/perl/perl-5.12.2/09_fix_installperl.patch
new file mode 100644
index 0000000000..6f2531b952
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/09_fix_installperl.patch
@@ -0,0 +1,19 @@
+Correctly identify arch-specific modules in ext/ where the .pm files
+are under lib.
+
+Ensure that POSIX/SigAction is kept with the rest of the POSIX module
+under archlib.
+
+Index: perl-5.12.2/installperl
+===================================================================
+--- perl-5.12.2.orig/installperl
++++ perl-5.12.2/installperl
+@@ -750,7 +750,7 @@ sub installlib {
+ }
+
+ if (-f $_) {
+- if (/\.(?:al|ix)$/ && !($dir =~ m[^auto/(.*)$])) {
++ if (/\.(?:al|ix)$/ && !($dir =~ m[^auto/(.*)$] && $archpms{$1})) {
+ $installlib = $installprivlib;
+ #We're installing *.al and *.ix files into $installprivlib,
+ #but we have to delete old *.al and *.ix files from the 5.000
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/Makefile.SH.patch b/meta/recipes-devtools/perl/perl-5.12.2/Makefile.SH.patch
new file mode 100644
index 0000000000..103fe978bc
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/Makefile.SH.patch
@@ -0,0 +1,288 @@
+Index: perl-5.12.2/Makefile.SH
+===================================================================
+--- perl-5.12.2.orig/Makefile.SH
++++ perl-5.12.2/Makefile.SH
+@@ -50,12 +50,12 @@ case "$useshrplib" in
+ true)
+ # Prefix all runs of 'miniperl' and 'perl' with
+ # $ldlibpth so that ./perl finds *this* shared libperl.
+- case "$LD_LIBRARY_PATH" in
+- '')
+- ldlibpth="LD_LIBRARY_PATH=`pwd`";;
+- *)
+- ldlibpth="LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}";;
+- esac
++# case "$LD_LIBRARY_PATH" in
++# '')
++# ldlibpth="LD_LIBRARY_PATH=`pwd`";;
++# *)
++# ldlibpth="LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}";;
++# esac
+
+ pldlflags="$cccdlflags"
+ static_ldflags=''
+@@ -133,7 +133,8 @@ true)
+ ldlibpth=''
+ ;;
+ *)
+- eval "ldlibpth=\"$ldlibpthname=`pwd`:\$$ldlibpthname\""
++# We compile in the library path in OE from cross-compile, so lets not do this
++# eval "ldlibpth=\"$ldlibpthname=`pwd`:\$$ldlibpthname\""
+ ;;
+ esac
+ # Strip off any trailing :'s
+@@ -154,18 +155,7 @@ true)
+ # INSTALL file, under "Building a shared perl library".
+ # If there is no pre-existing $libperl, we don't need
+ # to do anything further.
+- if test -f $archlib/CORE/$libperl; then
+- rm -f preload
+- cat <<'EOT' > preload
+-#! /bin/sh
+-lib=$1
+-shift
+-test -r $lib && export LD_PRELOAD="$lib $LD_PRELOAD"
+-exec "$@"
+-EOT
+- chmod 755 preload
+- ldlibpth="$ldlibpth `pwd`/preload `pwd`/$libperl"
+- fi
++ echo linux libraries overwritten by cross-compile patches
+ ;;
+ os390) test -f /bin/env && ldlibpth="/bin/env $ldlibpth"
+ ;;
+@@ -553,9 +543,19 @@ splintfiles = $(c1)
+ .c.s:
+ $(CCCMDSRC) -S $*.c
+
+-all: $(FIRSTMAKEFILE) $(MINIPERL_EXE) miniperl $(generated_pods) $(private) $(unidatafiles) $(public) $(dynamic_ext) $(nonxs_ext) extras.make
+- @echo " ";
+- @echo " Everything is up to date. Type '$(MAKE) test' to run test suite."
++#all: $(FIRSTMAKEFILE) $(MINIPERL_EXE) miniperl $(generated_pods) $(private) $(unidatafiles) $(public) $(dynamic_ext) $(nonxs_ext) extras.make
++# @echo " ";
++# @echo " Everything is up to date. Type '$(MAKE) test' to run test suite."
++
++all: $(FIRSTMAKEFILE) $(MINIPERL_EXE) miniperl $(unidatafiles)
++
++more: $(generated_pods) $(private) $(public)
++
++more2: $(dynamic_ext)
++
++more3: $(nonxs_ext)
++
++more4: extras.make
+
+ .PHONY: all translators utilities
+
+@@ -563,16 +563,16 @@ all: $(FIRSTMAKEFILE) $(MINIPERL_EXE) mi
+ # by make_patchnum.pl.
+ git_version.h: lib/Config_git.pl
+
+-lib/Config_git.pl: $(MINIPERL_EXE) make_patchnum.pl
++lib/Config_git.pl: make_patchnum.pl
+ $(MINIPERL) make_patchnum.pl
+
+ # make sure that we recompile perl.c if the git version changes
+ perl$(OBJ_EXT): git_version.h
+
+-translators: $(MINIPERL_EXE) $(CONFIGPM) $(dynamic_ext) FORCE
++translators: $(CONFIGPM) $(dynamic_ext) FORCE
+ @echo " "; echo " Making x2p stuff"; cd x2p; $(LDLIBPTH) $(MAKE) all
+
+-utilities: $(MINIPERL_EXE) $(CONFIGPM) $(plextract) FORCE
++utilities: $(CONFIGPM) $(plextract) FORCE
+ @echo " "; echo " Making utilities"; cd utils; $(LDLIBPTH) $(MAKE) all
+
+
+@@ -747,7 +747,7 @@ $(LIBPERL): $& $(obj) $(DYNALOADER) $(LI
+ true)
+ $spitshell >>$Makefile <<'!NO!SUBS!'
+ rm -f $@
+- $(LD) -o $@ $(SHRPLDFLAGS) $(obj) $(DYNALOADER) $(libs)
++ $(LD) -o $@ $(SHRPLDFLAGS) $(obj) $(DYNALOADER) $(libs) -Wl,-soname,libperl.so.5
+ !NO!SUBS!
+ case "$osname" in
+ aix)
+@@ -788,7 +788,9 @@ $(MINIPERL_EXE): $& miniperlmain$(OBJ_EX
+ $(CC) -o $(MINIPERL_EXE) $(CLDFLAGS) \
+ $(mini_obj) \
+ miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) $(libs)
+- $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
++ mv -f miniperl miniperl-target
++ ln -s hostperl miniperl
++# $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
+ !NO!SUBS!
+ ;;
+ next4*)
+@@ -796,7 +798,9 @@ $(MINIPERL_EXE): $& miniperlmain$(OBJ_EX
+ $(MINIPERL_EXE): $& miniperlmain$(OBJ_EXT) $(mini_obj) perlmini$(OBJ_EXT) opmini$(OBJ_EXT)
+ $(CC) -o $(MINIPERL_EXE) $(mini_obj) \
+ miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) $(libs)
+- $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
++ mv -f miniperl miniperl-target
++ ln -s hostperl miniperl
++# $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
+ !NO!SUBS!
+ ;;
+ darwin*)
+@@ -818,7 +822,9 @@ $(MINIPERL_EXE): $& miniperlmain$(OBJ_EX
+ $(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o $(MINIPERL_EXE) \
+ $(mini_obj) \
+ miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) $(libs)
+- $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
++ mv -f miniperl miniperl-target
++ ln -s hostperl miniperl
++# $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
+ !NO!SUBS!
+ ;;
+ *)
+@@ -828,7 +834,10 @@ $(MINIPERL_EXE): $& miniperlmain$(OBJ_EX
+ $(LDLIBPTH) $(CC) $(CLDFLAGS) -o $(MINIPERL_EXE) \
+ $(mini_obj) \
+ miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) $(libs)
+- $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
++
++ mv -f miniperl miniperl-target
++ ln -s hostperl miniperl
++# $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
+ !NO!SUBS!
+ ;;
+ esac
+@@ -950,7 +959,7 @@ case "${osname}" in
+ catamount)
+ $spitshell >>$Makefile <<!GROK!THIS!
+ .PHONY: makeppport
+-makeppport: \$(MINIPERL_EXE) \$(CONFIGPM)
++makeppport: \$(CONFIGPM)
+ -@for f in Makefile.PL PPPort_pm.PL PPPort_xs.PL ppport_h.PL; do \
+ (cd ext/Devel-PPPort && `pwd`/run.sh ../../$(MINIPERL_EXE) -I../../lib \$\$f); \
+ done
+@@ -960,7 +969,7 @@ makeppport: \$(MINIPERL_EXE) \$(CONFIGPM
+ *)
+ $spitshell >>$Makefile <<'!NO!SUBS!'
+ .PHONY: makeppport
+-makeppport: $(MINIPERL_EXE) $(CONFIGPM) $(nonxs_ext)
++makeppport: $(CONFIGPM) $(nonxs_ext)
+ $(MINIPERL) $(Icwd) mkppport
+
+ !NO!SUBS!
+@@ -970,30 +979,30 @@ esac
+ $spitshell >>$Makefile <<'!NO!SUBS!'
+
+ .PHONY: preplibrary
+-preplibrary: $(MINIPERL_EXE) $(CONFIGPM) lib/re.pm $(PREPLIBRARY_LIBPERL)
++preplibrary: $(CONFIGPM) lib/re.pm $(PREPLIBRARY_LIBPERL)
+
+ $(CONFIGPM_FROM_CONFIG_SH): $(CONFIGPOD)
+
+-$(CONFIGPOD): config.sh $(MINIPERL_EXE) configpm Porting/Glossary lib/Config_git.pl
++$(CONFIGPOD): config.sh configpm Porting/Glossary lib/Config_git.pl
+ $(MINIPERL) configpm
+
+-lib/ExtUtils/Miniperl.pm: miniperlmain.c $(MINIPERL_EXE) minimod.pl $(CONFIGPM)
++lib/ExtUtils/Miniperl.pm: miniperlmain.c minimod.pl $(CONFIGPM)
+ $(MINIPERL) minimod.pl > lib/ExtUtils/Miniperl.pm
+
+ lib/re.pm: ext/re/re.pm
+ @-rm -f $@
+ cp ext/re/re.pm lib/re.pm
+
+-$(plextract): $(MINIPERL_EXE) $(CONFIGPM) x2p/s2p $(dynamic_ext)
++$(plextract): $(CONFIGPM) x2p/s2p $(dynamic_ext)
+ @-rm -f $@
+ $(MINIPERL) $@.PL
+
+-x2p/s2p: $(MINIPERL_EXE) $(CONFIGPM) $(dynamic_ext) x2p/s2p.PL
++x2p/s2p: $(CONFIGPM) $(dynamic_ext) x2p/s2p.PL
+ cd x2p; $(LDLIBPTH) $(MAKE) s2p
+
+ unidatafiles $(unidatafiles) pod/perluniprops.pod: uni.data
+
+-uni.data: $(MINIPERL_EXE) $(CONFIGPM) lib/unicore/mktables $(nonxs_ext)
++uni.data: $(CONFIGPM) lib/unicore/mktables $(nonxs_ext)
+ $(MINIPERL) $(Icwd) lib/unicore/mktables -C lib/unicore -P pod -maketest -makelist -p
+ # Commented out so always runs, mktables looks at far more files than we
+ # can in this makefile to decide if needs to run or not
+@@ -1002,21 +1011,21 @@ uni.data: $(MINIPERL_EXE) $(CONFIGPM) li
+ # $(PERL_EXE) and ext because buildtoc uses Text::Wrap uses re
+ # But also this ensures that all extensions are built before we try to scan
+ # them, which picks up Devel::PPPort's documentation.
+-pod/perltoc.pod: $(perltoc_pod_prereqs) $(PERL_EXE) $(ext) pod/buildtoc
+- $(RUN_PERL) -f -Ilib pod/buildtoc --build-toc -q
++pod/perltoc.pod: $(perltoc_pod_prereqs) $(ext) pod/buildtoc
++ $(MINIPERL) -f -Ilib pod/buildtoc --build-toc -q
+
+ pod/perlapi.pod: pod/perlintern.pod
+
+-pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc
++pod/perlintern.pod: autodoc.pl embed.fnc
+ $(MINIPERL) autodoc.pl
+
+-pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST
++pod/perlmodlib.pod: pod/perlmodlib.PL MANIFEST
+ $(MINIPERL) $(Icwd) pod/perlmodlib.PL -q
+
+ pod/perldelta.pod: pod/perl5122delta.pod
+ $(LNS) perl5122delta.pod pod/perldelta.pod
+
+-extra.pods: $(MINIPERL_EXE)
++extra.pods:
+ -@test ! -f extra.pods || rm -f `cat extra.pods`
+ -@rm -f extra.pods
+ -@for x in `grep -l '^=[a-z]' README.* | grep -v README.vms` ; do \
+@@ -1059,11 +1068,7 @@ no-install:
+ INSTALL_DEPENDENCE = all
+
+ install.perl: $(INSTALL_DEPENDENCE) installperl
+- $(RUN_PERL) installperl --destdir=$(DESTDIR) $(INSTALLFLAGS) $(STRIPFLAGS)
+- -@test ! -s extras.lst || $(MAKE) extras.install
+-
+-install.man: all installman
+- $(RUN_PERL) installman --destdir=$(DESTDIR) $(INSTALLFLAGS)
++ ./hostperl -Ifake_config_library -Ilib -MConfig installperl --destdir=$(DESTDIR) $(INSTALLFLAGS) $(STRIPFLAGS)
+
+ # XXX Experimental. Hardwired values, but useful for testing.
+ # Eventually Configure could ask for some of these values.
+@@ -1160,16 +1165,16 @@ manicheck: FORCE
+ #
+ # DynaLoader may be needed for extensions that use Makefile.PL.
+
+-$(DYNALOADER): $(MINIPERL_EXE) preplibrary FORCE $(nonxs_ext)
++$(DYNALOADER): preplibrary FORCE $(nonxs_ext)
+ $(MINIPERL) make_ext.pl $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) LINKTYPE=static $(STATIC_LDFLAGS)
+
+-d_dummy $(dynamic_ext): $(MINIPERL_EXE) preplibrary makeppport $(DYNALOADER) FORCE $(PERLEXPORT)
++d_dummy $(dynamic_ext): preplibrary makeppport $(DYNALOADER) FORCE $(PERLEXPORT)
+ $(MINIPERL) make_ext.pl $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) LINKTYPE=dynamic
+
+-s_dummy $(static_ext): $(MINIPERL_EXE) preplibrary makeppport $(DYNALOADER) FORCE
++s_dummy $(static_ext): preplibrary makeppport $(DYNALOADER) FORCE
+ $(MINIPERL) make_ext.pl $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) LINKTYPE=static $(STATIC_LDFLAGS)
+
+-n_dummy $(nonxs_ext): $(MINIPERL_EXE) preplibrary FORCE
++n_dummy $(nonxs_ext): preplibrary FORCE
+ $(MINIPERL) make_ext.pl $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
+ !NO!SUBS!
+
+@@ -1367,10 +1372,10 @@ _test:
+
+ test_prep_pre: preplibrary utilities $(nonxs_ext)
+
+-test_prep: test_prep_pre $(MINIPERL_EXE) $(unidatafiles) $(PERL_EXE) $(dynamic_ext) $(TEST_PERL_DLL) runtests
++test_prep: test_prep_pre $(unidatafiles) $(PERL_EXE) $(dynamic_ext) $(TEST_PERL_DLL) runtests
+ cd t && (rm -f $(PERL_EXE); $(LNS) ../$(PERL_EXE) $(PERL_EXE))
+
+-test_prep_reonly: $(MINIPERL_EXE) $(PERL_EXE) $(dynamic_ext_re) $(TEST_PERL_DLL)
++test_prep_reonly: $(PERL_EXE) $(dynamic_ext_re) $(TEST_PERL_DLL)
+ $(MINIPERL) make_ext.pl $(dynamic_ext_re) MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) LINKTYPE=dynamic
+ cd t && (rm -f $(PERL_EXE); $(LNS) ../$(PERL_EXE) $(PERL_EXE))
+
+@@ -1461,7 +1466,7 @@ minitest.prep:
+
+ # Can't depend on lib/Config.pm because that might be where miniperl
+ # is crashing.
+-minitest: $(MINIPERL_EXE) lib/re.pm minitest.prep
++minitest: lib/re.pm minitest.prep
+ - cd t && (rm -f $(PERL_EXE); $(LNS) ../$(MINIPERL_EXE) $(PERL_EXE)) \
+ && $(RUN_PERL) TEST -minitest base/*.t comp/*.t cmd/*.t run/*.t io/*.t re/*.t op/*.t uni/*.t </dev/tty
+
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/Makefile.patch b/meta/recipes-devtools/perl/perl-5.12.2/Makefile.patch
new file mode 100644
index 0000000000..e7226ff708
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/Makefile.patch
@@ -0,0 +1,57 @@
+Index: perl-5.12.2/Cross/Makefile
+===================================================================
+--- perl-5.12.2.orig/Cross/Makefile
++++ perl-5.12.2/Cross/Makefile
+@@ -2,7 +2,8 @@
+ #
+ ## $Id: Makefile,v 1.5 2003/12/12 00:48:19 red Exp red $
+
+-export TOPDIR=${shell pwd}
++override TOPDIR=${shell pwd}
++export TOPDIR
+ include $(TOPDIR)/config
+ export CFLAGS
+ export SYS=$(ARCH)-$(OS)
+@@ -12,7 +13,7 @@ export OPTIMIZATION = -O2
+
+ export CC = $(CROSS)gcc
+ export CXX = $(CROSS)g++
+-export LD = $(CROSS)ld
++export LD = $(CC)
+ export STRIP = $(CROSS)strip
+ export AR = $(CROSS)ar
+ export RANLIB = $(CROSS)ranlib
+@@ -34,17 +35,6 @@ CFLAGS+=$(FULL_OPTIMIZATION)
+ all:
+ @echo Please read the README file before doing anything else.
+
+-gen_patch:
+- diff -Bbur ../Makefile.SH Makefile.SH > Makefile.SH.patch
+- diff -Bbur ../installperl installperl > installperl.patch
+-
+-patch:
+- cd .. ; if [ ! -e ./CROSS_PATCHED ] ; then \
+- patch -p1 < Cross/Makefile.SH.patch; \
+- patch -p1 < Cross/installperl.patch ; mv installperl installperl-patched; \
+- sed -e 's/XXSTRIPXX/$(SYS)/' installperl-patched > installperl; \
+- touch CROSS_PATCHED ; fi
+-
+ perl:
+ @echo Perl cross-build directory is $(TOPDIR)
+ @echo Target arch is $(SYS)
+@@ -54,11 +44,11 @@ perl:
+ $(TOPDIR)/generate_config_sh config.sh-$(SYS) > $(TOPDIR)/../config.sh
+ cd $(TOPDIR)/.. ; ./Configure -S ; make depend ; make ; make more
+ cd $(TOPDIR)/.. ; mkdir -p fake_config_library ; cp lib/Config.pm lib/Config_heavy.pl fake_config_library
+- cd $(TOPDIR)/.. ; $(MAKE) more2 "PERLRUN=/usr/bin/perl -I$(TOPDIR)/../fake_config_library -MConfig"
+- cd $(TOPDIR)/.. ; $(MAKE) more3 "PERLRUN=/usr/bin/perl -I$(TOPDIR)/../fake_config_library -MConfig"
+- cd $(TOPDIR)/.. ; $(MAKE) more4 "PERLRUN=/usr/bin/perl -I$(TOPDIR)/../fake_config_library -MConfig"
++ cd $(TOPDIR)/.. ; $(MAKE) more2 "PERLRUN=hostperl -I$(TOPDIR)/../fake_config_library -MConfig"
++ cd $(TOPDIR)/.. ; $(MAKE) more3 "PERLRUN=hostperl -I$(TOPDIR)/../fake_config_library -MConfig"
++ cd $(TOPDIR)/.. ; $(MAKE) more4 "PERLRUN=hostperl -I$(TOPDIR)/../fake_config_library -MConfig"
+ cd $(TOPDIR)/.. ; rm -rf install_me_here
+- cd $(TOPDIR)/.. ; make install-strip
++# cd $(TOPDIR)/.. ; make install-strip
+ cd $(TOPDIR)/.. ; sh -x Cross/warp
+
+
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/asm-pageh-fix.patch b/meta/recipes-devtools/perl/perl-5.12.2/asm-pageh-fix.patch
new file mode 100644
index 0000000000..c972108244
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/asm-pageh-fix.patch
@@ -0,0 +1,19 @@
+Perl inclues asm/page.h in order to get the definition for getpagesize which
+has been definied in unistd.h since glibc 2.1. Some recent version of linux
+libc headers removed the asm/page.h resulting in failures here for some
+people.
+
+Index: perl-5.12.2/cpan/IPC-SysV/SysV.xs
+===================================================================
+--- perl-5.12.2.orig/cpan/IPC-SysV/SysV.xs 2001-07-01 04:46:07.000000000 +1000
++++ perl-5.12.2/cpan/IPC-SysV/SysV.xs 2001-07-01 04:46:07.000000000 +1000
+@@ -3,9 +3,6 @@
+ #include "XSUB.h"
+
+ #include <sys/types.h>
+-#ifdef __linux__
+-# include <asm/page.h>
+-#endif
+ #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
+ #ifndef HAS_SEM
+ # include <sys/ipc.h>
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/config.sh b/meta/recipes-devtools/perl/perl-5.12.2/config.sh
new file mode 100644
index 0000000000..12d44a8383
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/config.sh
@@ -0,0 +1,1086 @@
+#!/bin/sh
+#
+# This file was produced by running the Configure script. It holds all the
+# definitions figured out by Configure. Should you modify one of these values,
+# do not forget to propagate your changes by running "Configure -der". You may
+# instead choose to run each of the .SH files by yourself, or "Configure -S".
+#
+
+# Package name : perl5
+# Source directory : .
+# Configuration time: Thu Dec 23 03:57:51 UTC 2010
+# Configured by : Open Embedded
+# Target system : linux qemux86 2.6.37-rc5-yocto-standard+ #1 preempt mon dec 20 14:21:27 pst 2010 i686 gnulinux
+
+: Configure command line arguments.
+config_arg0='Configure'
+config_args='-des -Doptimize=-O2 -Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Open Embedded -Dinstallprefix=@DESTDIR@ -Dprefix=/usr -Dvendorprefix=/usr -Dsiteprefix=/usr -Dotherlibdirs=/usr/lib/perl5/5.12.2 -Duseshrplib -Dusethreads -Duseithreads -Duselargefiles -Ud_dosuid -Dd_semctl_semun -Ui_db -Ui_ndbm -Ui_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinstallusrbinperl -Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less -isr'
+config_argc=28
+config_arg1='-des'
+config_arg2='-Doptimize=-O2'
+config_arg3='-Dmyhostname=localhost'
+config_arg4='-Dperladmin=root@localhost'
+config_arg5='-Dcc=gcc'
+config_arg6='-Dcf_by=Open Embedded'
+config_arg7='-Dinstallprefix=@DESTDIR@'
+config_arg8='-Dprefix=/usr'
+config_arg9='-Dvendorprefix=/usr'
+config_arg10='-Dsiteprefix=/usr'
+config_arg11='-Dotherlibdirs=/usr/lib/perl5/5.12.2'
+config_arg12='-Duseshrplib'
+config_arg13='-Dusethreads'
+config_arg14='-Duseithreads'
+config_arg15='-Duselargefiles'
+config_arg16='-Ud_dosuid'
+config_arg17='-Dd_semctl_semun'
+config_arg18='-Ui_db'
+config_arg19='-Ui_ndbm'
+config_arg20='-Ui_gdbm'
+config_arg21='-Di_shadow'
+config_arg22='-Di_syslog'
+config_arg23='-Dman3ext=3pm'
+config_arg24='-Duseperlio'
+config_arg25='-Dinstallusrbinperl'
+config_arg26='-Ubincompat5005'
+config_arg27='-Uversiononly'
+config_arg28='-Dpager=/usr/bin/less -isr'
+
+Author=''
+Date='$Date'
+Header=''
+Id='$Id'
+Locker=''
+Log='$Log'
+RCSfile='$RCSfile'
+Revision='$Revision'
+Source=''
+State=''
+_a='.a'
+_exe=''
+_o='.o'
+afs='false'
+afsroot='/afs'
+ansi2knr=''
+aphostname=''
+api_revision='5'
+api_subversion='0'
+api_version='12'
+api_versionstring='5.12.0'
+ar='ar'
+archlib='/usr/lib/perl5/5.12.2/@ARCH@-thread-multi'
+archlibexp='/usr/lib/perl5/5.12.2/@ARCH@-thread-multi'
+archname64=''
+archname='@ARCH@-thread-multi'
+archobjs=''
+asctime_r_proto='REENTRANT_PROTO_B_SB'
+awk='awk'
+baserev='5.0'
+bash=''
+bin='/usr/bin'
+bin_ELF='define'
+binexp='/usr/bin'
+bison='bison'
+byacc='byacc'
+c=''
+castflags='0'
+cat='cat'
+cc='gcc'
+cccdlflags='-fPIC'
+ccdlflags='-Wl,-E -Wl,-rpath,/usr/lib/perl5/5.12.2/@ARCH@-thread-multi/CORE'
+ccflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
+ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
+ccname='gcc'
+ccsymbols=''
+ccversion=''
+cf_by='Open Embedded'
+cf_email='Open Embedded@localhost.localdomain'
+charbits='8'
+charsize='1'
+chgrp=''
+chmod='chmod'
+chown=''
+clocktype='clock_t'
+comm='comm'
+compress=''
+contains='grep'
+cp='cp'
+cpio=''
+cpp='cpp'
+cpp_stuff='42'
+cppccsymbols=''
+cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector'
+cpplast='-'
+cppminus='-'
+cpprun='gcc -E'
+cppstdin='gcc -E'
+crypt_r_proto='REENTRANT_PROTO_B_CCS'
+cryptlib=''
+csh='csh'
+ctermid_r_proto='0'
+ctime_r_proto='REENTRANT_PROTO_B_SB'
+d_Gconvert='gcvt((x),(n),(b))'
+d_PRIEUldbl='define'
+d_PRIFUldbl='define'
+d_PRIGUldbl='define'
+d_PRIXU64='define'
+d_PRId64='define'
+d_PRIeldbl='define'
+d_PRIfldbl='define'
+d_PRIgldbl='define'
+d_PRIi64='define'
+d_PRIo64='define'
+d_PRIu64='define'
+d_PRIx64='define'
+d_SCNfldbl='define'
+d__fwalk='undef'
+d_access='define'
+d_accessx='undef'
+d_aintl='undef'
+d_alarm='define'
+d_archlib='define'
+d_asctime64='undef'
+d_asctime_r='define'
+d_atolf='undef'
+d_atoll='define'
+d_attribute_deprecated='define'
+d_attribute_format='define'
+d_attribute_malloc='define'
+d_attribute_nonnull='define'
+d_attribute_noreturn='define'
+d_attribute_pure='define'
+d_attribute_unused='define'
+d_attribute_warn_unused_result='define'
+d_bcmp='define'
+d_bcopy='define'
+d_bsd='undef'
+d_bsdgetpgrp='undef'
+d_bsdsetpgrp='undef'
+d_builtin_choose_expr='define'
+d_builtin_expect='define'
+d_bzero='define'
+d_c99_variadic_macros='define'
+d_casti32='undef'
+d_castneg='define'
+d_charvspr='undef'
+d_chown='define'
+d_chroot='define'
+d_chsize='undef'
+d_class='undef'
+d_clearenv='define'
+d_closedir='define'
+d_cmsghdr_s='define'
+d_const='define'
+d_copysignl='define'
+d_cplusplus='undef'
+d_crypt='define'
+d_crypt_r='define'
+d_csh='undef'
+d_ctermid='define'
+d_ctermid_r='undef'
+d_ctime64='undef'
+d_ctime_r='define'
+d_cuserid='define'
+d_dbl_dig='define'
+d_dbminitproto='undef'
+d_difftime64='undef'
+d_difftime='define'
+d_dir_dd_fd='undef'
+d_dirfd='define'
+d_dirnamlen='undef'
+d_dlerror='define'
+d_dlopen='define'
+d_dlsymun='undef'
+d_dosuid='undef'
+d_drand48_r='define'
+d_drand48proto='define'
+d_dup2='define'
+d_eaccess='define'
+d_endgrent='define'
+d_endgrent_r='undef'
+d_endhent='define'
+d_endhostent_r='undef'
+d_endnent='define'
+d_endnetent_r='undef'
+d_endpent='define'
+d_endprotoent_r='undef'
+d_endpwent='define'
+d_endpwent_r='undef'
+d_endsent='define'
+d_endservent_r='undef'
+d_eofnblk='define'
+d_eunice='undef'
+d_faststdio='define'
+d_fchdir='define'
+d_fchmod='define'
+d_fchown='define'
+d_fcntl='define'
+d_fcntl_can_lock='define'
+d_fd_macros='define'
+d_fd_set='define'
+d_fds_bits='define'
+d_fgetpos='define'
+d_finite='define'
+d_finitel='define'
+d_flexfnam='define'
+d_flock='define'
+d_flockproto='define'
+d_fork='define'
+d_fp_class='undef'
+d_fpathconf='define'
+d_fpclass='undef'
+d_fpclassify='undef'
+d_fpclassl='undef'
+d_fpos64_t='undef'
+d_frexpl='define'
+d_fs_data_s='undef'
+d_fseeko='define'
+d_fsetpos='define'
+d_fstatfs='define'
+d_fstatvfs='define'
+d_fsync='define'
+d_ftello='define'
+d_ftime='undef'
+d_futimes='define'
+d_gdbm_ndbm_h_uses_prototypes='undef'
+d_gdbmndbm_h_uses_prototypes='undef'
+d_getaddrinfo='define'
+d_getcwd='define'
+d_getespwnam='undef'
+d_getfsstat='undef'
+d_getgrent='define'
+d_getgrent_r='define'
+d_getgrgid_r='define'
+d_getgrnam_r='define'
+d_getgrps='define'
+d_gethbyaddr='define'
+d_gethbyname='define'
+d_gethent='define'
+d_gethname='define'
+d_gethostbyaddr_r='define'
+d_gethostbyname_r='define'
+d_gethostent_r='define'
+d_gethostprotos='define'
+d_getitimer='define'
+d_getlogin='define'
+d_getlogin_r='define'
+d_getmnt='undef'
+d_getmntent='define'
+d_getnameinfo='define'
+d_getnbyaddr='define'
+d_getnbyname='define'
+d_getnent='define'
+d_getnetbyaddr_r='define'
+d_getnetbyname_r='define'
+d_getnetent_r='define'
+d_getnetprotos='define'
+d_getpagsz='define'
+d_getpbyname='define'
+d_getpbynumber='define'
+d_getpent='define'
+d_getpgid='define'
+d_getpgrp2='undef'
+d_getpgrp='define'
+d_getppid='define'
+d_getprior='define'
+d_getprotobyname_r='define'
+d_getprotobynumber_r='define'
+d_getprotoent_r='define'
+d_getprotoprotos='define'
+d_getprpwnam='undef'
+d_getpwent='define'
+d_getpwent_r='define'
+d_getpwnam_r='define'
+d_getpwuid_r='define'
+d_getsbyname='define'
+d_getsbyport='define'
+d_getsent='define'
+d_getservbyname_r='define'
+d_getservbyport_r='define'
+d_getservent_r='define'
+d_getservprotos='define'
+d_getspnam='define'
+d_getspnam_r='define'
+d_gettimeod='define'
+d_gmtime64='undef'
+d_gmtime_r='define'
+d_gnulibc='define'
+d_grpasswd='define'
+d_hasmntopt='define'
+d_htonl='define'
+d_ilogbl='define'
+d_inc_version_list='undef'
+d_index='undef'
+d_inetaton='define'
+d_inetntop='define'
+d_inetpton='define'
+d_int64_t='define'
+d_isascii='define'
+d_isfinite='undef'
+d_isinf='define'
+d_isnan='define'
+d_isnanl='define'
+d_killpg='define'
+d_lchown='define'
+d_ldbl_dig='define'
+d_libm_lib_version='define'
+d_link='define'
+d_localtime64='undef'
+d_localtime_r='define'
+d_localtime_r_needs_tzset='define'
+d_locconv='define'
+d_lockf='define'
+d_longdbl='define'
+d_longlong='define'
+d_lseekproto='define'
+d_lstat='define'
+d_madvise='define'
+d_malloc_good_size='undef'
+d_malloc_size='undef'
+d_mblen='define'
+d_mbstowcs='define'
+d_mbtowc='define'
+d_memchr='define'
+d_memcmp='define'
+d_memcpy='define'
+d_memmove='define'
+d_memset='define'
+d_mkdir='define'
+d_mkdtemp='define'
+d_mkfifo='define'
+d_mkstemp='define'
+d_mkstemps='define'
+d_mktime64='undef'
+d_mktime='define'
+d_mmap='define'
+d_modfl='define'
+d_modfl_pow32_bug='undef'
+d_modflproto='define'
+d_mprotect='define'
+d_msg='define'
+d_msg_ctrunc='define'
+d_msg_dontroute='define'
+d_msg_oob='define'
+d_msg_peek='define'
+d_msg_proxy='define'
+d_msgctl='define'
+d_msgget='define'
+d_msghdr_s='define'
+d_msgrcv='define'
+d_msgsnd='define'
+d_msync='define'
+d_munmap='define'
+d_mymalloc='undef'
+d_ndbm='undef'
+d_ndbm_h_uses_prototypes='undef'
+d_nice='define'
+d_nl_langinfo='define'
+d_nv_zero_is_allbits_zero='define'
+d_off64_t='define'
+d_old_pthread_create_joinable='undef'
+d_oldpthreads='undef'
+d_oldsock='undef'
+d_open3='define'
+d_pathconf='define'
+d_pause='define'
+d_perl_otherlibdirs='define'
+d_phostname='undef'
+d_pipe='define'
+d_poll='define'
+d_portable='define'
+d_procselfexe='define'
+d_pseudofork='undef'
+d_pthread_atfork='define'
+d_pthread_attr_setscope='define'
+d_pthread_yield='define'
+d_pwage='undef'
+d_pwchange='undef'
+d_pwclass='undef'
+d_pwcomment='undef'
+d_pwexpire='undef'
+d_pwgecos='define'
+d_pwpasswd='define'
+d_pwquota='undef'
+d_qgcvt='define'
+d_quad='define'
+d_random_r='define'
+d_readdir64_r='define'
+d_readdir='define'
+d_readdir_r='define'
+d_readlink='define'
+d_readv='define'
+d_recvmsg='define'
+d_rename='define'
+d_rewinddir='define'
+d_rmdir='define'
+d_safebcpy='undef'
+d_safemcpy='undef'
+d_sanemcmp='define'
+d_sbrkproto='define'
+d_scalbnl='define'
+d_sched_yield='define'
+d_scm_rights='define'
+d_seekdir='define'
+d_select='define'
+d_sem='define'
+d_semctl='define'
+d_semctl_semid_ds='define'
+d_semctl_semun='define'
+d_semget='define'
+d_semop='define'
+d_sendmsg='define'
+d_setegid='define'
+d_seteuid='define'
+d_setgrent='define'
+d_setgrent_r='undef'
+d_setgrps='define'
+d_sethent='define'
+d_sethostent_r='undef'
+d_setitimer='define'
+d_setlinebuf='define'
+d_setlocale='define'
+d_setlocale_r='undef'
+d_setnent='define'
+d_setnetent_r='undef'
+d_setpent='define'
+d_setpgid='define'
+d_setpgrp2='undef'
+d_setpgrp='define'
+d_setprior='define'
+d_setproctitle='undef'
+d_setprotoent_r='undef'
+d_setpwent='define'
+d_setpwent_r='undef'
+d_setregid='define'
+d_setresgid='define'
+d_setresuid='define'
+d_setreuid='define'
+d_setrgid='undef'
+d_setruid='undef'
+d_setsent='define'
+d_setservent_r='undef'
+d_setsid='define'
+d_setvbuf='define'
+d_sfio='undef'
+d_shm='define'
+d_shmat='define'
+d_shmatprototype='define'
+d_shmctl='define'
+d_shmdt='define'
+d_shmget='define'
+d_sigaction='define'
+d_signbit='define'
+d_sigprocmask='define'
+d_sigsetjmp='define'
+d_sitearch='define'
+d_snprintf='define'
+d_sockatmark='define'
+d_sockatmarkproto='define'
+d_socket='define'
+d_socklen_t='define'
+d_sockpair='define'
+d_socks5_init='undef'
+d_sprintf_returns_strlen='define'
+d_sqrtl='define'
+d_srand48_r='define'
+d_srandom_r='define'
+d_sresgproto='define'
+d_sresuproto='define'
+d_statblks='define'
+d_statfs_f_flags='undef'
+d_statfs_s='define'
+d_statvfs='define'
+d_stdio_cnt_lval='undef'
+d_stdio_ptr_lval='define'
+d_stdio_ptr_lval_nochange_cnt='undef'
+d_stdio_ptr_lval_sets_cnt='define'
+d_stdio_stream_array='undef'
+d_stdiobase='define'
+d_stdstdio='define'
+d_strchr='define'
+d_strcoll='define'
+d_strctcpy='define'
+d_strerrm='strerror(e)'
+d_strerror='define'
+d_strerror_r='define'
+d_strftime='define'
+d_strlcat='undef'
+d_strlcpy='undef'
+d_strtod='define'
+d_strtol='define'
+d_strtold='define'
+d_strtoll='define'
+d_strtoq='define'
+d_strtoul='define'
+d_strtoull='define'
+d_strtouq='define'
+d_strxfrm='define'
+d_suidsafe='undef'
+d_symlink='define'
+d_syscall='define'
+d_syscallproto='define'
+d_sysconf='define'
+d_sysernlst=''
+d_syserrlst='define'
+d_system='define'
+d_tcgetpgrp='define'
+d_tcsetpgrp='define'
+d_telldir='define'
+d_telldirproto='define'
+d_time='define'
+d_timegm='define'
+d_times='define'
+d_tm_tm_gmtoff='define'
+d_tm_tm_zone='define'
+d_tmpnam_r='define'
+d_truncate='define'
+d_ttyname_r='define'
+d_tzname='define'
+d_ualarm='define'
+d_umask='define'
+d_uname='define'
+d_union_semun='undef'
+d_unordered='undef'
+d_unsetenv='define'
+d_usleep='define'
+d_usleepproto='define'
+d_ustat='define'
+d_vendorarch='define'
+d_vendorbin='define'
+d_vendorlib='define'
+d_vendorscript='define'
+d_vfork='undef'
+d_void_closedir='undef'
+d_voidsig='define'
+d_voidtty=''
+d_volatile='define'
+d_vprintf='define'
+d_vsnprintf='define'
+d_wait4='define'
+d_waitpid='define'
+d_wcstombs='define'
+d_wctomb='define'
+d_writev='define'
+d_xenix='undef'
+date='date'
+db_hashtype='u_int32_t'
+db_prefixtype='size_t'
+db_version_major=''
+db_version_minor=''
+db_version_patch=''
+defvoidused='15'
+direntrytype='struct dirent'
+dlext='so'
+dlsrc='dl_dlopen.xs'
+doublesize='8'
+drand01='drand48()'
+drand48_r_proto='REENTRANT_PROTO_I_ST'
+dtrace=''
+dynamic_ext='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/Glob Filter/Util/Call Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via GDBM_File SDBM_File Socket Storable Sys/Hostname Sys/Syslog Text/Soundex Time/HiRes Time/Piece Unicode/Normalize XS/APItest XS/APItest/KeywordRPN XS/Typemap attributes mro re threads threads/shared'
+eagain='EAGAIN'
+ebcdic='undef'
+echo='echo'
+egrep='egrep'
+emacs=''
+endgrent_r_proto='0'
+endhostent_r_proto='0'
+endnetent_r_proto='0'
+endprotoent_r_proto='0'
+endpwent_r_proto='0'
+endservent_r_proto='0'
+eunicefix=':'
+exe_ext=''
+expr='expr'
+extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/Glob Filter/Util/Call Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via GDBM_File SDBM_File Socket Storable Sys/Hostname Sys/Syslog Text/Soundex Time/HiRes Time/Piece Unicode/Normalize XS/APItest XS/APItest/KeywordRPN XS/Typemap attributes mro re threads threads/shared Archive/Extract Archive/Tar Attribute/Handlers AutoLoader B/Debug B/Deparse B/Lint CGI CPAN CPANPLUS CPANPLUS/Dist/Build Class/ISA Devel/SelfStubber Digest Errno ExtUtils/CBuilder ExtUtils/Command ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/ParseXS File/Fetch File/Path File/Temp FileCache Filter/Simple Getopt/Long I18N/LangTags IO/Compress IO/Zlib IPC/Cmd IPC/Open2 IPC/Open3 Locale/Codes Locale/Maketext Locale/Maketext/Simple Log/Message Log/Message/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/Build Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Pluggable NEXT Net/Ping Object/Accessor Package/Constants Params/Check Parse/CPAN/Meta PerlIO/via/QuotedPrint Pod/Escapes Pod/LaTeX Pod/Parser Pod/Perldoc Pod/Plainer Pod/Simple Safe SelfLoader Shell Switch Term/ANSIColor Term/Cap Term/UI Test Test/Harness Test/Simple Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Memoize Tie/RefHash Time/Local Unicode/Collate XSLoader autodie autouse base bignum constant encoding/warnings if lib libnet parent podlators'
+extern_C='extern'
+extras=''
+fflushNULL='define'
+fflushall='undef'
+find=''
+firstmakefile='makefile'
+flex=''
+fpossize='16'
+fpostype='fpos_t'
+freetype='void'
+from=':'
+full_ar='/usr/bin/ar'
+full_csh='csh'
+full_sed='/bin/sed'
+gccansipedantic=''
+gccosandvers=''
+gccversion='4.5.1'
+getgrent_r_proto='REENTRANT_PROTO_I_SBWR'
+getgrgid_r_proto='REENTRANT_PROTO_I_TSBWR'
+getgrnam_r_proto='REENTRANT_PROTO_I_CSBWR'
+gethostbyaddr_r_proto='REENTRANT_PROTO_I_TsISBWRE'
+gethostbyname_r_proto='REENTRANT_PROTO_I_CSBWRE'
+gethostent_r_proto='REENTRANT_PROTO_I_SBWRE'
+getlogin_r_proto='REENTRANT_PROTO_I_BW'
+getnetbyaddr_r_proto='REENTRANT_PROTO_I_uISBWRE'
+getnetbyname_r_proto='REENTRANT_PROTO_I_CSBWRE'
+getnetent_r_proto='REENTRANT_PROTO_I_SBWRE'
+getprotobyname_r_proto='REENTRANT_PROTO_I_CSBWR'
+getprotobynumber_r_proto='REENTRANT_PROTO_I_ISBWR'
+getprotoent_r_proto='REENTRANT_PROTO_I_SBWR'
+getpwent_r_proto='REENTRANT_PROTO_I_SBWR'
+getpwnam_r_proto='REENTRANT_PROTO_I_CSBWR'
+getpwuid_r_proto='REENTRANT_PROTO_I_TSBWR'
+getservbyname_r_proto='REENTRANT_PROTO_I_CCSBWR'
+getservbyport_r_proto='REENTRANT_PROTO_I_ICSBWR'
+getservent_r_proto='REENTRANT_PROTO_I_SBWR'
+getspnam_r_proto='REENTRANT_PROTO_I_CSBWR'
+gidsign='1'
+gidsize='4'
+gidtype='gid_t'
+glibpth='/usr/shlib /lib /usr/lib /usr/lib/386 /lib/386 /usr/ccs/lib /usr/ucblib /usr/local/lib '
+gmake='gmake'
+gmtime_r_proto='REENTRANT_PROTO_S_TS'
+gnulibc_version='2.12.1'
+grep='grep'
+groupcat='cat /etc/group'
+groupstype='gid_t'
+gzip='gzip'
+h_fcntl='false'
+h_sysfile='true'
+hint='recommended'
+hostcat='cat /etc/hosts'
+html1dir=' '
+html1direxp=''
+html3dir=' '
+html3direxp=''
+i16size='2'
+i16type='short'
+i32size='4'
+i64size='8'
+i8size='1'
+i8type='signed char'
+i_arpainet='define'
+i_assert='define'
+i_bsdioctl=''
+i_crypt='define'
+i_db='undef'
+i_dbm='undef'
+i_dirent='define'
+i_dld='undef'
+i_dlfcn='define'
+i_fcntl='undef'
+i_float='define'
+i_fp='undef'
+i_fp_class='undef'
+i_gdbm='undef'
+i_gdbm_ndbm='undef'
+i_gdbmndbm='undef'
+i_grp='define'
+i_ieeefp='undef'
+i_inttypes='define'
+i_langinfo='define'
+i_libutil='undef'
+i_limits='define'
+i_locale='define'
+i_machcthr='undef'
+i_malloc='define'
+i_mallocmalloc='undef'
+i_math='define'
+i_memory='undef'
+i_mntent='define'
+i_ndbm='undef'
+i_netdb='define'
+i_neterrno='undef'
+i_netinettcp='define'
+i_niin='define'
+i_poll='define'
+i_prot='undef'
+i_pthread='define'
+i_pwd='define'
+i_rpcsvcdbm='undef'
+i_sfio='undef'
+i_sgtty='undef'
+i_shadow='define'
+i_socks='undef'
+i_stdarg='define'
+i_stddef='define'
+i_stdlib='define'
+i_string='define'
+i_sunmath='undef'
+i_sysaccess='undef'
+i_sysdir='define'
+i_sysfile='define'
+i_sysfilio='undef'
+i_sysin='undef'
+i_sysioctl='define'
+i_syslog='define'
+i_sysmman='define'
+i_sysmode='undef'
+i_sysmount='define'
+i_sysndir='undef'
+i_sysparam='define'
+i_syspoll='define'
+i_sysresrc='define'
+i_syssecrt='undef'
+i_sysselct='define'
+i_syssockio='undef'
+i_sysstat='define'
+i_sysstatfs='define'
+i_sysstatvfs='define'
+i_systime='define'
+i_systimek='undef'
+i_systimes='define'
+i_systypes='define'
+i_sysuio='define'
+i_sysun='define'
+i_sysutsname='define'
+i_sysvfs='define'
+i_syswait='define'
+i_termio='undef'
+i_termios='define'
+i_time='define'
+i_unistd='define'
+i_ustat='define'
+i_utime='define'
+i_values='define'
+i_varargs='undef'
+i_varhdr='stdarg.h'
+i_vfork='undef'
+ignore_versioned_solibs='y'
+inc_version_list=' '
+inc_version_list_init='0'
+incpath=''
+inews=''
+initialinstalllocation='/usr/bin'
+installarchlib='@DESTDIR@/lib/perl5/5.12.2/@ARCH@-thread-multi'
+installbin='@DESTDIR@/bin'
+installhtml1dir=''
+installhtml3dir=''
+installman1dir=''
+installman3dir=''
+installprefix='@DESTDIR@'
+installprefixexp='@DESTDIR@'
+installprivlib='@DESTDIR@/lib/perl5/5.12.2'
+installscript='@DESTDIR@/bin'
+installsitearch='@DESTDIR@/lib/perl5/site_perl/5.12.2/@ARCH@-thread-multi'
+installsitebin='@DESTDIR@/bin'
+installsitehtml1dir=''
+installsitehtml3dir=''
+installsitelib='@DESTDIR@/lib/perl5/site_perl/5.12.2'
+installsiteman1dir=''
+installsiteman3dir=''
+installsitescript='@DESTDIR@/bin'
+installstyle='lib/perl5'
+installusrbinperl='define'
+installvendorarch='@DESTDIR@/lib/perl5/vendor_perl/5.12.2/@ARCH@-thread-multi'
+installvendorbin='@DESTDIR@/bin'
+installvendorhtml1dir=''
+installvendorhtml3dir=''
+installvendorlib='@DESTDIR@/lib/perl5/vendor_perl/5.12.2'
+installvendorman1dir=''
+installvendorman3dir=''
+installvendorscript='@DESTDIR@/bin'
+intsize='4'
+issymlink='test -h'
+ivdformat='"ld"'
+ivtype='long'
+known_extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Text/Soundex Time/HiRes Time/Piece Unicode/Normalize VMS/DCLsym VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/APItest/KeywordRPN XS/Typemap attributes mro re threads threads/shared '
+ksh=''
+ld='gcc'
+lddlflags='-shared -O2 -fstack-protector'
+ldflags=' -fstack-protector'
+ldflags_uselargefiles=''
+ldlibpthname='LD_LIBRARY_PATH'
+less='less'
+lib_ext='.a'
+libc='/lib/libc-2.12.1.so'
+libperl='libperl.so'
+libpth='/lib /usr/lib'
+libs='-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc'
+libsdirs=' /usr/lib'
+libsfiles=' libnsl.so libgdbm.so libdb.so libdl.so libm.so libcrypt.so libutil.so libpthread.so libc.so'
+libsfound=' /usr/lib/libnsl.so /usr/lib/libgdbm.so /usr/lib/libdb.so /usr/lib/libdl.so /usr/lib/libm.so /usr/lib/libcrypt.so /usr/lib/libutil.so /usr/lib/libpthread.so /usr/lib/libc.so'
+libspath=' /lib /usr/lib'
+libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun m crypt sec util pthread c cposix posix ucb BSD gdbm_compat'
+libswanted_uselargefiles=''
+line=''
+lint=''
+lkflags=''
+ln='ln'
+lns='/bin/ln -s'
+localtime_r_proto='REENTRANT_PROTO_S_TS'
+locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include'
+loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib'
+longlongsize='8'
+lp=''
+lpr=''
+ls='ls'
+lseeksize='8'
+lseektype='off_t'
+mad='undef'
+madlyh=''
+madlyobj=''
+madlysrc=''
+mail=''
+mailx=''
+make='make'
+make_set_make='#'
+mallocobj=''
+mallocsrc=''
+malloctype='void *'
+man1dir=' '
+man1direxp=''
+man1ext='0'
+man3dir=' '
+man3direxp=''
+man3ext='0'
+mips_type=''
+mistrustnm=''
+mkdir='mkdir'
+mmaptype='void *'
+modetype='mode_t'
+more='more'
+multiarch='undef'
+mv=''
+myarchname='@ARCH@'
+mydomain='.localdomain'
+myhostname='localhost'
+n='-n'
+netdb_hlen_type='size_t'
+netdb_name_type='const char *'
+netdb_net_type='in_addr_t'
+nm='nm'
+nm_opt=''
+nm_so_opt='--dynamic'
+nonxs_ext='Archive/Extract Archive/Tar Attribute/Handlers AutoLoader B/Debug B/Deparse B/Lint CGI CPAN CPANPLUS CPANPLUS/Dist/Build Class/ISA Devel/SelfStubber Digest Errno ExtUtils/CBuilder ExtUtils/Command ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/ParseXS File/Fetch File/Path File/Temp FileCache Filter/Simple Getopt/Long I18N/LangTags IO/Compress IO/Zlib IPC/Cmd IPC/Open2 IPC/Open3 Locale/Codes Locale/Maketext Locale/Maketext/Simple Log/Message Log/Message/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/Build Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Pluggable NEXT Net/Ping Object/Accessor Package/Constants Params/Check Parse/CPAN/Meta PerlIO/via/QuotedPrint Pod/Escapes Pod/LaTeX Pod/Parser Pod/Perldoc Pod/Plainer Pod/Simple Safe SelfLoader Shell Switch Term/ANSIColor Term/Cap Term/UI Test Test/Harness Test/Simple Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Memoize Tie/RefHash Time/Local Unicode/Collate XSLoader autodie autouse base bignum constant encoding/warnings if lib libnet parent podlators'
+nroff='nroff'
+nvEUformat='"E"'
+nvFUformat='"F"'
+nvGUformat='"G"'
+nv_overflows_integers_at='256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0'
+nveformat='"e"'
+nvfformat='"f"'
+nvgformat='"g"'
+nvsize='8'
+nvtype='double'
+o_nonblock='O_NONBLOCK'
+obj_ext='.o'
+old_pthread_create_joinable=''
+optimize='-O2'
+orderlib='false'
+osname='linux'
+osvers='2.6.37-rc5-yocto-standard+'
+otherlibdirs='/usr/lib/perl5/5.12.2'
+package='perl5'
+pager='/usr/bin/less -isr'
+passcat='cat /etc/passwd'
+patchlevel='12'
+path_sep=':'
+perl5='/usr/bin/perl'
+perl=''
+perl_patchlevel=''
+perladmin='root@localhost'
+perllibs='-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc'
+perlpath='/usr/bin/perl'
+pg='pg'
+phostname=''
+pidtype='pid_t'
+plibpth=''
+pmake=''
+pr=''
+prefix='/usr'
+prefixexp='/usr'
+privlib='/usr/lib/perl5/5.12.2'
+privlibexp='/usr/lib/perl5/5.12.2'
+procselfexe='"/proc/self/exe"'
+prototype='define'
+randbits='48'
+randfunc='drand48'
+random_r_proto='REENTRANT_PROTO_I_St'
+randseedtype='long'
+ranlib=':'
+rd_nodata='-1'
+readdir64_r_proto='REENTRANT_PROTO_I_TSR'
+readdir_r_proto='REENTRANT_PROTO_I_TSR'
+revision='5'
+rm='rm'
+rm_try='/bin/rm -f try try a.out .out try.[cho] try..o core core.try* try.core*'
+rmail=''
+run=''
+runnm='false'
+sPRIEUldbl='"LE"'
+sPRIFUldbl='"LF"'
+sPRIGUldbl='"LG"'
+sPRIeldbl='"Le"'
+sPRIfldbl='"Lf"'
+sPRIgldbl='"Lg"'
+sSCNfldbl='"Lf"'
+sched_yield='sched_yield()'
+scriptdir='/usr/bin'
+scriptdirexp='/usr/bin'
+sed='sed'
+seedfunc='srand48'
+selecttype='fd_set *'
+sendmail=''
+setgrent_r_proto='0'
+sethostent_r_proto='0'
+setlocale_r_proto='0'
+setnetent_r_proto='0'
+setprotoent_r_proto='0'
+setpwent_r_proto='0'
+setservent_r_proto='0'
+sh='/bin/sh'
+shar=''
+sharpbang='#!'
+shmattype='void *'
+shortsize='2'
+shrpenv=''
+shsharp='true'
+sig_count='65'
+sig_name='ZERO HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS NUM32 NUM33 RTMIN NUM35 NUM36 NUM37 NUM38 NUM39 NUM40 NUM41 NUM42 NUM43 NUM44 NUM45 NUM46 NUM47 NUM48 NUM49 NUM50 NUM51 NUM52 NUM53 NUM54 NUM55 NUM56 NUM57 NUM58 NUM59 NUM60 NUM61 NUM62 NUM63 RTMAX IOT CLD POLL UNUSED '
+sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "BUS", "FPE", "KILL", "USR1", "SEGV", "USR2", "PIPE", "ALRM", "TERM", "STKFLT", "CHLD", "CONT", "STOP", "TSTP", "TTIN", "TTOU", "URG", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "IO", "PWR", "SYS", "NUM32", "NUM33", "RTMIN", "NUM35", "NUM36", "NUM37", "NUM38", "NUM39", "NUM40", "NUM41", "NUM42", "NUM43", "NUM44", "NUM45", "NUM46", "NUM47", "NUM48", "NUM49", "NUM50", "NUM51", "NUM52", "NUM53", "NUM54", "NUM55", "NUM56", "NUM57", "NUM58", "NUM59", "NUM60", "NUM61", "NUM62", "NUM63", "RTMAX", "IOT", "CLD", "POLL", "UNUSED", 0'
+sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 6 17 29 31 '
+sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 31, 0'
+sig_size='69'
+signal_t='void'
+sitearch='/usr/lib/perl5/site_perl/5.12.2/@ARCH@-thread-multi'
+sitearchexp='/usr/lib/perl5/site_perl/5.12.2/@ARCH@-thread-multi'
+sitebin='/usr/bin'
+sitebinexp='/usr/bin'
+sitehtml1dir=''
+sitehtml1direxp=''
+sitehtml3dir=''
+sitehtml3direxp=''
+sitelib='/usr/lib/perl5/site_perl/5.12.2'
+sitelib_stem='/usr/lib/perl5/site_perl'
+sitelibexp='/usr/lib/perl5/site_perl/5.12.2'
+siteman1dir=''
+siteman1direxp=''
+siteman3dir=''
+siteman3direxp=''
+siteprefix='/usr'
+siteprefixexp='/usr'
+sitescript='/usr/bin'
+sitescriptexp='/usr/bin'
+sizetype='size_t'
+sleep=''
+smail=''
+so='so'
+sockethdr=''
+socketlib=''
+socksizetype='socklen_t'
+sort='sort'
+spackage='Perl5'
+spitshell='cat'
+srand48_r_proto='REENTRANT_PROTO_I_LS'
+srandom_r_proto='REENTRANT_PROTO_I_TS'
+src='.'
+ssizetype='ssize_t'
+startperl='#!/usr/bin/perl'
+startsh='#!/bin/sh'
+static_ext=' '
+stdchar='char'
+stdio_base='((fp)->_IO_read_base)'
+stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)'
+stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
+stdio_filbuf=''
+stdio_ptr='((fp)->_IO_read_ptr)'
+stdio_stream_array=''
+strerror_r_proto='REENTRANT_PROTO_B_IBW'
+strings='/usr/include/string.h'
+submit=''
+subversion='2'
+sysman='/usr/share/man/man1'
+tail=''
+tar=''
+targetarch=''
+tbl=''
+tee=''
+test='test'
+timeincl='/usr/include/sys/time.h /usr/include/time.h '
+timetype='time_t'
+tmpnam_r_proto='REENTRANT_PROTO_B_B'
+to=':'
+touch='touch'
+tr='tr'
+trnl='\n'
+troff=''
+ttyname_r_proto='REENTRANT_PROTO_I_IBW'
+u16size='2'
+u16type='unsigned short'
+u32size='4'
+u64size='8'
+u8size='1'
+u8type='unsigned char'
+uidsign='1'
+uidsize='4'
+uidtype='uid_t'
+uname='uname'
+uniq='uniq'
+use5005threads='undef'
+usecrosscompile='undef'
+usedevel='undef'
+usedl='define'
+usedtrace='undef'
+usefaststdio='undef'
+useithreads='define'
+uselargefiles='define'
+uselongdouble='undef'
+usemallocwrap='define'
+usemorebits='undef'
+usemultiplicity='define'
+usemymalloc='n'
+usenm='false'
+useopcode='true'
+useperlio='define'
+useposix='true'
+usereentrant='undef'
+userelocatableinc='undef'
+usesfio='false'
+useshrplib='true'
+usesitecustomize='undef'
+usesocks='undef'
+usethreads='define'
+usevendorprefix='define'
+usevfork='false'
+usrinc='/usr/include'
+uuname=''
+uvXUformat='"lX"'
+uvoformat='"lo"'
+uvtype='unsigned long'
+uvuformat='"lu"'
+uvxformat='"lx"'
+vaproto='define'
+vendorarch='/usr/lib/perl5/vendor_perl/5.12.2/@ARCH@-thread-multi'
+vendorarchexp='/usr/lib/perl5/vendor_perl/5.12.2/@ARCH@-thread-multi'
+vendorbin='/usr/bin'
+vendorbinexp='/usr/bin'
+vendorhtml1dir=' '
+vendorhtml1direxp=''
+vendorhtml3dir=' '
+vendorhtml3direxp=''
+vendorlib='/usr/lib/perl5/vendor_perl/5.12.2'
+vendorlib_stem='/usr/lib/perl5/vendor_perl'
+vendorlibexp='/usr/lib/perl5/vendor_perl/5.12.2'
+vendorman1dir=' '
+vendorman1direxp=''
+vendorman3dir=' '
+vendorman3direxp=''
+vendorprefix='/usr'
+vendorprefixexp='/usr'
+vendorscript='/usr/bin'
+vendorscriptexp='/usr/bin'
+version='5.12.2'
+version_patchlevel_string='version 12 subversion 2'
+versiononly='undef'
+vi=''
+voidflags='15'
+xlibpth='/usr/lib/386 /lib/386'
+yacc='yacc'
+yaccflags=''
+zcat=''
+zip='zip'
+PERL_REVISION=5
+PERL_VERSION=12
+PERL_SUBVERSION=2
+PERL_API_REVISION=5
+PERL_API_VERSION=12
+PERL_API_SUBVERSION=0
+PERL_PATCHLEVEL=''
+PERL_CONFIG_SH=true
+: Variables propagated from previous config.sh file.
+libdb_needs_pthread='N'
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/config.sh-32 b/meta/recipes-devtools/perl/perl-5.12.2/config.sh-32
new file mode 100644
index 0000000000..7259a0c6ae
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/config.sh-32
@@ -0,0 +1,38 @@
+alignbytes='4'
+cf_time='Thu Dec 23 03:57:51 UTC 2010'
+cppsymbols='_FILE_OFFSET_BITS=64 _GNU_SOURCE=1 _LARGEFILE64_SOURCE=1 _LARGEFILE_SOURCE=1 _POSIX_C_SOURCE=200809L _POSIX_SOURCE=1 _REENTRANT=1 _XOPEN_SOURCE=700 _XOPEN_SOURCE_EXTENDED=1 __BIGGEST_ALIGNMENT__=16 __CHAR16_TYPE__=short\ unsigned\ int __CHAR32_TYPE__=unsigned\ int __CHAR_BIT__=8 __DBL_DENORM_MIN__=((double)4.94065645841246544177e-324L) __DBL_DIG__=15 __DBL_EPSILON__=((double)2.22044604925031308085e-16L) __DBL_HAS_DENORM__=1 __DBL_HAS_INFINITY__=1 __DBL_HAS_QUIET_NAN__=1 __DBL_MANT_DIG__=53 __DBL_MAX_10_EXP__=308 __DBL_MAX_EXP__=1024 __DBL_MAX__=((double)1.79769313486231570815e+308L) __DBL_MIN_10_EXP__=(-307) __DBL_MIN_EXP__=(-1021) __DBL_MIN__=((double)2.22507385850720138309e-308L) __DEC128_EPSILON__=1E-33DL __DEC128_MANT_DIG__=34 __DEC128_MAX_EXP__=6145 __DEC128_MAX__=9.999999999999999999999999999999999E6144DL __DEC128_MIN_EXP__=(-6142) __DEC128_MIN__=1E-6143DL __DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL __DEC32_EPSILON__=1E-6DF __DEC32_MANT_DIG__=7 __DEC32_MAX_EXP__=97 __DEC32_MAX__=9.999999E96DF __DEC32_MIN_EXP__=(-94) __DEC32_MIN__=1E-95DF __DEC32_SUBNORMAL_MIN__=0.000001E-95DF __DEC64_EPSILON__=1E-15DD __DEC64_MANT_DIG__=16 __DEC64_MAX_EXP__=385 __DEC64_MAX__=9.999999999999999E384DD __DEC64_MIN_EXP__=(-382) __DEC64_MIN__=1E-383DD __DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD __DECIMAL_BID_FORMAT__=1 __DECIMAL_DIG__=21 __DEC_EVAL_METHOD__=2 __ELF__=1 __FINITE_MATH_ONLY__=0 __FLT_DENORM_MIN__=1.40129846432481707092e-45F __FLT_DIG__=6 __FLT_EPSILON__=1.19209289550781250000e-7F __FLT_EVAL_METHOD__=2 __FLT_HAS_DENORM__=1 __FLT_HAS_INFINITY__=1 __FLT_HAS_QUIET_NAN__=1 __FLT_MANT_DIG__=24 __FLT_MAX_10_EXP__=38 __FLT_MAX_EXP__=128 __FLT_MAX__=3.40282346638528859812e+38F __FLT_MIN_10_EXP__=(-37) __FLT_MIN_EXP__=(-125) __FLT_MIN__=1.17549435082228750797e-38F __FLT_RADIX__=2 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8=1 __GLIBC_MINOR__=12 __GLIBC__=2 __GNUC_GNU_INLINE__=1 __GNUC_MINOR__=5 __GNUC_PATCHLEVEL__=1 __GNUC__=4 __GNU_LIBRARY__=6 __GXX_ABI_VERSION=1002 __INT16_C(c)=c __INT16_MAX__=32767 __INT16_TYPE__=short\ int __INT32_C(c)=c __INT32_MAX__=2147483647 __INT32_TYPE__=int __INT64_C(c)=cLL __INT64_MAX__=9223372036854775807LL __INT64_TYPE__=long\ long\ int __INT8_C(c)=c __INT8_MAX__=127 __INT8_TYPE__=signed\ char __INTMAX_C(c)=cLL __INTMAX_MAX__=9223372036854775807LL __INTMAX_TYPE__=long\ long\ int __INTPTR_MAX__=2147483647 __INTPTR_TYPE__=int __INT_FAST16_MAX__=2147483647 __INT_FAST16_TYPE__=int __INT_FAST32_MAX__=2147483647 __INT_FAST32_TYPE__=int __INT_FAST64_MAX__=9223372036854775807LL __INT_FAST64_TYPE__=long\ long\ int __INT_FAST8_MAX__=127 __INT_FAST8_TYPE__=signed\ char __INT_LEAST16_MAX__=32767 __INT_LEAST16_TYPE__=short\ int __INT_LEAST32_MAX__=2147483647 __INT_LEAST32_TYPE__=int __INT_LEAST64_MAX__=9223372036854775807LL __INT_LEAST64_TYPE__=long\ long\ int __INT_LEAST8_MAX__=127 __INT_LEAST8_TYPE__=signed\ char __INT_MAX__=2147483647 __LDBL_DENORM_MIN__=3.64519953188247460253e-4951L __LDBL_DIG__=18 __LDBL_EPSILON__=1.08420217248550443401e-19L __LDBL_HAS_DENORM__=1 __LDBL_HAS_INFINITY__=1 __LDBL_HAS_QUIET_NAN__=1 __LDBL_MANT_DIG__=64 __LDBL_MAX_10_EXP__=4932 __LDBL_MAX_EXP__=16384 __LDBL_MAX__=1.18973149535723176502e+4932L __LDBL_MIN_10_EXP__=(-4931) __LDBL_MIN_EXP__=(-16381) __LDBL_MIN__=3.36210314311209350626e-4932L __LONG_LONG_MAX__=9223372036854775807LL __LONG_MAX__=2147483647L __PRAGMA_REDEFINE_EXTNAME=1 __PTRDIFF_MAX__=2147483647 __PTRDIFF_TYPE__=int __REGISTER_PREFIX__= __SCHAR_MAX__=127 __SHRT_MAX__=32767 __SIG_ATOMIC_MAX__=2147483647 __SIG_ATOMIC_MIN__=(-2147483647\ -\ 1) __SIG_ATOMIC_TYPE__=int __SIZEOF_DOUBLE__=8 __SIZEOF_FLOAT__=4 __SIZEOF_INT__=4 __SIZEOF_LONG_DOUBLE__=12 __SIZEOF_LONG_LONG__=8 __SIZEOF_LONG__=4 __SIZEOF_POINTER__=4 __SIZEOF_PTRDIFF_T__=4 __SIZEOF_SHORT__=2 __SIZEOF_SIZE_T__=4 __SIZEOF_WCHAR_T__=4 __SIZEOF_WINT_T__=4 __SIZE_MAX__=4294967295U __SIZE_TYPE__=unsigned\ int __STDC_HOSTED__=1 __STDC__=1 __UINT16_C(c)=c __UINT16_MAX__=65535 __UINT16_TYPE__=short\ unsigned\ int __UINT32_C(c)=cU __UINT32_MAX__=4294967295U __UINT32_TYPE__=unsigned\ int __UINT64_C(c)=cULL __UINT64_MAX__=18446744073709551615ULL __UINT64_TYPE__=long\ long\ unsigned\ int __UINT8_C(c)=c __UINT8_MAX__=255 __UINT8_TYPE__=unsigned\ char __UINTMAX_C(c)=cULL __UINTMAX_MAX__=18446744073709551615ULL __UINTMAX_TYPE__=long\ long\ unsigned\ int __UINTPTR_MAX__=4294967295U __UINTPTR_TYPE__=unsigned\ int __UINT_FAST16_MAX__=4294967295U __UINT_FAST16_TYPE__=unsigned\ int __UINT_FAST32_MAX__=4294967295U __UINT_FAST32_TYPE__=unsigned\ int __UINT_FAST64_MAX__=18446744073709551615ULL __UINT_FAST64_TYPE__=long\ long\ unsigned\ int __UINT_FAST8_MAX__=255 __UINT_FAST8_TYPE__=unsigned\ char __UINT_LEAST16_MAX__=65535 __UINT_LEAST16_TYPE__=short\ unsigned\ int __UINT_LEAST32_MAX__=4294967295U __UINT_LEAST32_TYPE__=unsigned\ int __UINT_LEAST64_MAX__=18446744073709551615ULL __UINT_LEAST64_TYPE__=long\ long\ unsigned\ int __UINT_LEAST8_MAX__=255 __UINT_LEAST8_TYPE__=unsigned\ char __USER_LABEL_PREFIX__= __USE_BSD=1 __USE_FILE_OFFSET64=1 __USE_GNU=1 __USE_LARGEFILE64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_POSIX=1 __USE_REENTRANT=1 __USE_SVID=1 __USE_UNIX98=1 __USE_XOPEN=1 __USE_XOPEN_EXTENDED=1 __VERSION__="4.5.1" __WCHAR_MAX__=2147483647L __WCHAR_MIN__=(-2147483647L\ -\ 1) __WCHAR_TYPE__=long\ int __WINT_MAX__=4294967295U __WINT_MIN__=0U __WINT_TYPE__=unsigned\ int __gnu_linux__=1 __i386=1 __i386__=1 __i586=1 __i586__=1 __linux=1 __linux__=1 __pentium=1 __pentium__=1 __tune_i586__=1 __tune_pentium__=1 __unix=1 __unix__=1 i386=1 linux=1 unix=1'
+d_nv_preserves_uv='define'
+d_printf_format_null='define'
+d_u32align='undef'
+gidformat='"lu"'
+i32type='long'
+i64type='long long'
+ivsize='4'
+longdblsize='12'
+longsize='4'
+myuname='linux qemux86 2.6.37-rc5-yocto-standard+ #1 preempt mon dec 20 14:21:27 pst 2010 i686 gnulinux '
+need_va_copy='undef'
+netdb_host_type='const void *'
+nv_preserves_uv_bits='32'
+ptrsize='4'
+quadkind='3'
+quadtype='long long'
+sGMTIME_max='2147483647'
+sGMTIME_min='-2147483648'
+sLOCALTIME_max='2147483647'
+sLOCALTIME_min='-2147483648'
+sPRIXU64='"LX"'
+sPRId64='"Ld"'
+sPRIi64='"Li"'
+sPRIo64='"Lo"'
+sPRIu64='"Lu"'
+sPRIx64='"Lx"'
+selectminbits='32'
+sizesize='4'
+u32type='unsigned long'
+u64type='unsigned long long'
+uidformat='"lu"'
+uquadtype='unsigned long long'
+use64bitall='undef'
+use64bitint='undef'
+uvsize='4'
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/config.sh-32-be b/meta/recipes-devtools/perl/perl-5.12.2/config.sh-32-be
index a59a9abb5e..a59a9abb5e 100644
--- a/meta/recipes-devtools/perl/perl-5.8.8/config.sh-32-be
+++ b/meta/recipes-devtools/perl/perl-5.12.2/config.sh-32-be
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/config.sh-32-le b/meta/recipes-devtools/perl/perl-5.12.2/config.sh-32-le
index 10e4226567..10e4226567 100644
--- a/meta/recipes-devtools/perl/perl-5.8.8/config.sh-32-le
+++ b/meta/recipes-devtools/perl/perl-5.12.2/config.sh-32-le
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/config.sh-64 b/meta/recipes-devtools/perl/perl-5.12.2/config.sh-64
new file mode 100644
index 0000000000..6929d3a09d
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/config.sh-64
@@ -0,0 +1,38 @@
+alignbytes='8'
+cf_time='Thu Dec 23 02:06:42 UTC 2010'
+cppsymbols='_FILE_OFFSET_BITS=64 _GNU_SOURCE=1 _LARGEFILE64_SOURCE=1 _LARGEFILE_SOURCE=1 _LP64=1 _POSIX_C_SOURCE=200809L _POSIX_SOURCE=1 _REENTRANT=1 _XOPEN_SOURCE=700 _XOPEN_SOURCE_EXTENDED=1 __BIGGEST_ALIGNMENT__=16 __CHAR16_TYPE__=short\ unsigned\ int __CHAR32_TYPE__=unsigned\ int __CHAR_BIT__=8 __DBL_DENORM_MIN__=((double)4.94065645841246544177e-324L) __DBL_DIG__=15 __DBL_EPSILON__=((double)2.22044604925031308085e-16L) __DBL_HAS_DENORM__=1 __DBL_HAS_INFINITY__=1 __DBL_HAS_QUIET_NAN__=1 __DBL_MANT_DIG__=53 __DBL_MAX_10_EXP__=308 __DBL_MAX_EXP__=1024 __DBL_MAX__=((double)1.79769313486231570815e+308L) __DBL_MIN_10_EXP__=(-307) __DBL_MIN_EXP__=(-1021) __DBL_MIN__=((double)2.22507385850720138309e-308L) __DEC128_EPSILON__=1E-33DL __DEC128_MANT_DIG__=34 __DEC128_MAX_EXP__=6145 __DEC128_MAX__=9.999999999999999999999999999999999E6144DL __DEC128_MIN_EXP__=(-6142) __DEC128_MIN__=1E-6143DL __DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL __DEC32_EPSILON__=1E-6DF __DEC32_MANT_DIG__=7 __DEC32_MAX_EXP__=97 __DEC32_MAX__=9.999999E96DF __DEC32_MIN_EXP__=(-94) __DEC32_MIN__=1E-95DF __DEC32_SUBNORMAL_MIN__=0.000001E-95DF __DEC64_EPSILON__=1E-15DD __DEC64_MANT_DIG__=16 __DEC64_MAX_EXP__=385 __DEC64_MAX__=9.999999999999999E384DD __DEC64_MIN_EXP__=(-382) __DEC64_MIN__=1E-383DD __DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD __DECIMAL_BID_FORMAT__=1 __DECIMAL_DIG__=21 __DEC_EVAL_METHOD__=2 __ELF__=1 __FINITE_MATH_ONLY__=0 __FLT_DENORM_MIN__=1.40129846432481707092e-45F __FLT_DIG__=6 __FLT_EPSILON__=1.19209289550781250000e-7F __FLT_EVAL_METHOD__=0 __FLT_HAS_DENORM__=1 __FLT_HAS_INFINITY__=1 __FLT_HAS_QUIET_NAN__=1 __FLT_MANT_DIG__=24 __FLT_MAX_10_EXP__=38 __FLT_MAX_EXP__=128 __FLT_MAX__=3.40282346638528859812e+38F __FLT_MIN_10_EXP__=(-37) __FLT_MIN_EXP__=(-125) __FLT_MIN__=1.17549435082228750797e-38F __FLT_RADIX__=2 __GCC_HAVE_DWARF2_CFI_ASM=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8=1 __GLIBC_MINOR__=12 __GLIBC__=2 __GNUC_GNU_INLINE__=1 __GNUC_MINOR__=5 __GNUC_PATCHLEVEL__=1 __GNUC__=4 __GNU_LIBRARY__=6 __GXX_ABI_VERSION=1002 __INT16_C(c)=c __INT16_MAX__=32767 __INT16_TYPE__=short\ int __INT32_C(c)=c __INT32_MAX__=2147483647 __INT32_TYPE__=int __INT64_C(c)=cL __INT64_MAX__=9223372036854775807L __INT64_TYPE__=long\ int __INT8_C(c)=c __INT8_MAX__=127 __INT8_TYPE__=signed\ char __INTMAX_C(c)=cL __INTMAX_MAX__=9223372036854775807L __INTMAX_TYPE__=long\ int __INTPTR_MAX__=9223372036854775807L __INTPTR_TYPE__=long\ int __INT_FAST16_MAX__=9223372036854775807L __INT_FAST16_TYPE__=long\ int __INT_FAST32_MAX__=9223372036854775807L __INT_FAST32_TYPE__=long\ int __INT_FAST64_MAX__=9223372036854775807L __INT_FAST64_TYPE__=long\ int __INT_FAST8_MAX__=127 __INT_FAST8_TYPE__=signed\ char __INT_LEAST16_MAX__=32767 __INT_LEAST16_TYPE__=short\ int __INT_LEAST32_MAX__=2147483647 __INT_LEAST32_TYPE__=int __INT_LEAST64_MAX__=9223372036854775807L __INT_LEAST64_TYPE__=long\ int __INT_LEAST8_MAX__=127 __INT_LEAST8_TYPE__=signed\ char __INT_MAX__=2147483647 __LDBL_DENORM_MIN__=3.64519953188247460253e-4951L __LDBL_DIG__=18 __LDBL_EPSILON__=1.08420217248550443401e-19L __LDBL_HAS_DENORM__=1 __LDBL_HAS_INFINITY__=1 __LDBL_HAS_QUIET_NAN__=1 __LDBL_MANT_DIG__=64 __LDBL_MAX_10_EXP__=4932 __LDBL_MAX_EXP__=16384 __LDBL_MAX__=1.18973149535723176502e+4932L __LDBL_MIN_10_EXP__=(-4931) __LDBL_MIN_EXP__=(-16381) __LDBL_MIN__=3.36210314311209350626e-4932L __LONG_LONG_MAX__=9223372036854775807LL __LONG_MAX__=9223372036854775807L __LP64__=1 __MMX__=1 __PRAGMA_REDEFINE_EXTNAME=1 __PTRDIFF_MAX__=9223372036854775807L __PTRDIFF_TYPE__=long\ int __REGISTER_PREFIX__= __SCHAR_MAX__=127 __SHRT_MAX__=32767 __SIG_ATOMIC_MAX__=2147483647 __SIG_ATOMIC_MIN__=(-2147483647\ -\ 1) __SIG_ATOMIC_TYPE__=int __SIZEOF_DOUBLE__=8 __SIZEOF_FLOAT__=4 __SIZEOF_INT__=4 __SIZEOF_LONG_DOUBLE__=16 __SIZEOF_LONG_LONG__=8 __SIZEOF_LONG__=8 __SIZEOF_POINTER__=8 __SIZEOF_PTRDIFF_T__=8 __SIZEOF_SHORT__=2 __SIZEOF_SIZE_T__=8 __SIZEOF_WCHAR_T__=4 __SIZEOF_WINT_T__=4 __SIZE_MAX__=18446744073709551615UL __SIZE_TYPE__=long\ unsigned\ int __SSE2_MATH__=1 __SSE2__=1 __SSE_MATH__=1 __SSE__=1 __STDC_HOSTED__=1 __STDC__=1 __UINT16_C(c)=c __UINT16_MAX__=65535 __UINT16_TYPE__=short\ unsigned\ int __UINT32_C(c)=cU __UINT32_MAX__=4294967295U __UINT32_TYPE__=unsigned\ int __UINT64_C(c)=cUL __UINT64_MAX__=18446744073709551615UL __UINT64_TYPE__=long\ unsigned\ int __UINT8_C(c)=c __UINT8_MAX__=255 __UINT8_TYPE__=unsigned\ char __UINTMAX_C(c)=cUL __UINTMAX_MAX__=18446744073709551615UL __UINTMAX_TYPE__=long\ unsigned\ int __UINTPTR_MAX__=18446744073709551615UL __UINTPTR_TYPE__=long\ unsigned\ int __UINT_FAST16_MAX__=18446744073709551615UL __UINT_FAST16_TYPE__=long\ unsigned\ int __UINT_FAST32_MAX__=18446744073709551615UL __UINT_FAST32_TYPE__=long\ unsigned\ int __UINT_FAST64_MAX__=18446744073709551615UL __UINT_FAST64_TYPE__=long\ unsigned\ int __UINT_FAST8_MAX__=255 __UINT_FAST8_TYPE__=unsigned\ char __UINT_LEAST16_MAX__=65535 __UINT_LEAST16_TYPE__=short\ unsigned\ int __UINT_LEAST32_MAX__=4294967295U __UINT_LEAST32_TYPE__=unsigned\ int __UINT_LEAST64_MAX__=18446744073709551615UL __UINT_LEAST64_TYPE__=long\ unsigned\ int __UINT_LEAST8_MAX__=255 __UINT_LEAST8_TYPE__=unsigned\ char __USER_LABEL_PREFIX__= __USE_BSD=1 __USE_FILE_OFFSET64=1 __USE_GNU=1 __USE_LARGEFILE64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_POSIX=1 __USE_REENTRANT=1 __USE_SVID=1 __USE_UNIX98=1 __USE_XOPEN=1 __USE_XOPEN_EXTENDED=1 __VERSION__="4.5.1" __WCHAR_MAX__=2147483647 __WCHAR_MIN__=(-2147483647\ -\ 1) __WCHAR_TYPE__=int __WINT_MAX__=4294967295U __WINT_MIN__=0U __WINT_TYPE__=unsigned\ int __amd64=1 __amd64__=1 __gnu_linux__=1 __k8=1 __k8__=1 __linux=1 __linux__=1 __unix=1 __unix__=1 __x86_64=1 __x86_64__=1 linux=1 unix=1'
+d_nv_preserves_uv='undef'
+d_printf_format_null='undef'
+d_u32align='define'
+gidformat='"u"'
+i32type='int'
+i64type='long'
+ivsize='8'
+longdblsize='16'
+longsize='8'
+myuname='linux qemux86-64 2.6.37-rc5-yocto-standard+ #1 smp preempt mon dec 20 17:19:50 pst 2010 x86_64 gnulinux '
+need_va_copy='define'
+netdb_host_type='char *'
+nv_preserves_uv_bits='53'
+ptrsize='8'
+quadkind='2'
+quadtype='long'
+sGMTIME_max='67768036191676799'
+sGMTIME_min='-62167219200'
+sLOCALTIME_max='67768036191676799'
+sLOCALTIME_min='-62167219200'
+sPRIXU64='"lX"'
+sPRId64='"ld"'
+sPRIi64='"li"'
+sPRIo64='"lo"'
+sPRIu64='"lu"'
+sPRIx64='"lx"'
+selectminbits='64'
+sizesize='8'
+u32type='unsigned int'
+u64type='unsigned long'
+uidformat='"u"'
+uquadtype='unsigned long'
+use64bitall='define'
+use64bitint='define'
+uvsize='8'
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/config.sh-64-be b/meta/recipes-devtools/perl/perl-5.12.2/config.sh-64-be
index c08ce3c431..c08ce3c431 100644
--- a/meta/recipes-devtools/perl/perl-5.8.8/config.sh-64-be
+++ b/meta/recipes-devtools/perl/perl-5.12.2/config.sh-64-be
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/config.sh-64-le b/meta/recipes-devtools/perl/perl-5.12.2/config.sh-64-le
index 277d2a9bee..277d2a9bee 100644
--- a/meta/recipes-devtools/perl/perl-5.8.8/config.sh-64-le
+++ b/meta/recipes-devtools/perl/perl-5.12.2/config.sh-64-le
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/cross-generate_uudmap.patch b/meta/recipes-devtools/perl/perl-5.12.2/cross-generate_uudmap.patch
new file mode 100644
index 0000000000..f6218c1bbb
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/cross-generate_uudmap.patch
@@ -0,0 +1,13 @@
+Index: perl-5.10.1/Makefile.SH
+===================================================================
+--- perl-5.10.1.orig/Makefile.SH 2010-02-12 19:06:17.000000000 +0300
++++ perl-5.10.1/Makefile.SH 2010-02-12 19:10:13.000000000 +0300
+@@ -596,7 +596,7 @@
+ \$(RUN) ./generate_uudmap\$(HOST_EXE_EXT) >uudmap.h
+
+ generate_uudmap\$(HOST_EXE_EXT): generate_uudmap\$(OBJ_EXT)
+- \$(CC) -o generate_uudmap\$(EXE_EXT) \$(LDFLAGS) generate_uudmap\$(OBJ_EXT) \$(libs)
++ \$(BUILD_CC) -o generate_uudmap\$(EXE_EXT) generate_uudmap.c
+
+ !GROK!THIS!
+ $spitshell >>$Makefile <<'!NO!SUBS!'
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/arm_optim.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/arm_optim.diff
new file mode 100644
index 0000000000..383df6b358
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/arm_optim.diff
@@ -0,0 +1,32 @@
+From: Niko Tyni <ntyni@debian.org>
+Description: Downgrade the optimization of sv.c on arm due to a gcc-4.4 bug
+Bug-Debian: http://bugs.debian.org/580334
+
+Regression from gcc-4.3, not reported yet.
+
+ perl -e '"-2" =~ /(.+)/; @foo=(); push @foo, $_ for $1..undef; print @foo ? "ok\n" : "not ok\n"'
+
+
+---
+ cflags.SH | 6 +++++-
+ 1 files changed, 5 insertions(+), 1 deletions(-)
+
+diff --git a/cflags.SH b/cflags.SH
+index a5d71b9..6914ba6 100755
+--- a/cflags.SH
++++ b/cflags.SH
+@@ -312,7 +312,11 @@ for file do
+ regexec) ;;
+ run) ;;
+ scope) ;;
+- sv) ;;
++ sv)
++ case $archname in
++ arm-*|armeb-*)
++ optimize=-O0;;
++ esac;;
+ taint) ;;
+ toke) ;;
+ universal) ;;
+--
+tg: (c823880..) debian/arm_optim (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/arm_thread_stress_timeout.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/arm_thread_stress_timeout.diff
new file mode 100644
index 0000000000..34b8a2c1a1
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/arm_thread_stress_timeout.diff
@@ -0,0 +1,23 @@
+Subject: Raise the timeout of ext/threads/shared/t/stress.t to accommodate slower build hosts
+Bug-Debian: http://bugs.debian.org/501970
+
+
+---
+ dist/threads-shared/t/stress.t | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/dist/threads-shared/t/stress.t b/dist/threads-shared/t/stress.t
+index adfd1ed..652a3e6 100755
+--- a/dist/threads-shared/t/stress.t
++++ b/dist/threads-shared/t/stress.t
+@@ -34,7 +34,7 @@ use threads::shared;
+ {
+ my $cnt = 50;
+
+- my $TIMEOUT = 60;
++ my $TIMEOUT = 150;
+
+ my $mutex = 1;
+ share($mutex);
+--
+tg: (c823880..) debian/arm_thread_stress_timeout (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/cpan_config_path.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/cpan_config_path.diff
new file mode 100644
index 0000000000..799d15e5d1
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/cpan_config_path.diff
@@ -0,0 +1,22 @@
+Subject: Set location of CPAN::Config to /etc/perl as /usr may not be writable.
+
+
+---
+ cpan/CPAN/lib/CPAN/HandleConfig.pm | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/cpan/CPAN/lib/CPAN/HandleConfig.pm b/cpan/CPAN/lib/CPAN/HandleConfig.pm
+index 76cd81e..65a3b27 100644
+--- a/cpan/CPAN/lib/CPAN/HandleConfig.pm
++++ b/cpan/CPAN/lib/CPAN/HandleConfig.pm
+@@ -543,7 +543,7 @@ sub load {
+ $configpm = $INC{"CPAN/MyConfig.pm"};
+ $redo++;
+ } else {
+- my($path_to_cpan) = File::Basename::dirname($INC{"CPAN.pm"});
++ my($path_to_cpan) = '/etc/perl';
+ my($configpmdir) = File::Spec->catdir($path_to_cpan,"CPAN");
+ my($configpmtest) = File::Spec->catfile($configpmdir,"Config.pm");
+ my $inc_key;
+--
+tg: (c823880..) debian/cpan_config_path (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/cpan_definstalldirs.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/cpan_definstalldirs.diff
new file mode 100644
index 0000000000..f64af15eea
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/cpan_definstalldirs.diff
@@ -0,0 +1,35 @@
+Subject: Provide a sensible INSTALLDIRS default for modules installed from CPAN.
+
+Some modules which are included in core set INSTALLDIRS => 'perl'
+explicitly in Makefile.PL or Build.PL. This makes sense for the normal @INC
+ordering, but not ours.
+
+
+---
+ cpan/CPAN/lib/CPAN/FirstTime.pm | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/cpan/CPAN/lib/CPAN/FirstTime.pm b/cpan/CPAN/lib/CPAN/FirstTime.pm
+index 53ffbf1..53976ff 100644
+--- a/cpan/CPAN/lib/CPAN/FirstTime.pm
++++ b/cpan/CPAN/lib/CPAN/FirstTime.pm
+@@ -947,7 +947,7 @@ sub init {
+ my_prompt_loop(prefer_installer => 'MB', $matcher, 'MB|EUMM|RAND');
+
+ if (!$matcher or 'makepl_arg make_arg' =~ /$matcher/) {
+- my_dflt_prompt(makepl_arg => "", $matcher);
++ my_dflt_prompt(makepl_arg => "INSTALLDIRS=site", $matcher);
+ my_dflt_prompt(make_arg => "", $matcher);
+ if ( $CPAN::Config->{makepl_arg} =~ /LIBS=|INC=/ ) {
+ $CPAN::Frontend->mywarn(
+@@ -969,7 +969,7 @@ sub init {
+ my_dflt_prompt(make_install_arg => $CPAN::Config->{make_arg} || "",
+ $matcher);
+
+- my_dflt_prompt(mbuildpl_arg => "", $matcher);
++ my_dflt_prompt(mbuildpl_arg => "--installdirs site", $matcher);
+ my_dflt_prompt(mbuild_arg => "", $matcher);
+
+ if (exists $CPAN::HandleConfig::keys{mbuild_install_build_command}
+--
+tg: (c823880..) debian/cpan_definstalldirs (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/cpanplus_config_path.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/cpanplus_config_path.diff
new file mode 100644
index 0000000000..6956218f8a
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/cpanplus_config_path.diff
@@ -0,0 +1,43 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Save local versions of CPANPLUS::Config::System into /etc/perl.
+
+This is a configuration file and needs to go in /etc by policy.
+Besides, /usr may not even be writable.
+
+This mirrors the Debian setup of CPAN.pm in debian/cpan_config_path.
+
+See #533707.
+
+---
+ cpan/CPANPLUS/lib/CPANPLUS/Configure.pm | 1 +
+ cpan/CPANPLUS/lib/CPANPLUS/Internals/Constants.pm | 3 +++
+ 2 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/cpan/CPANPLUS/lib/CPANPLUS/Configure.pm b/cpan/CPANPLUS/lib/CPANPLUS/Configure.pm
+index baac91d..a3794de 100644
+--- a/cpan/CPANPLUS/lib/CPANPLUS/Configure.pm
++++ b/cpan/CPANPLUS/lib/CPANPLUS/Configure.pm
+@@ -276,6 +276,7 @@ Saves the configuration to the package name you provided.
+ If this package is not C<CPANPLUS::Config::System>, it will
+ be saved in your C<.cpanplus> directory, otherwise it will
+ be attempted to be saved in the system wide directory.
++(On Debian systems, this system wide directory is /etc/perl.)
+
+ If no argument is provided, it will default to your personal
+ config.
+diff --git a/cpan/CPANPLUS/lib/CPANPLUS/Internals/Constants.pm b/cpan/CPANPLUS/lib/CPANPLUS/Internals/Constants.pm
+index 1a38200..6ee0d82 100644
+--- a/cpan/CPANPLUS/lib/CPANPLUS/Internals/Constants.pm
++++ b/cpan/CPANPLUS/lib/CPANPLUS/Internals/Constants.pm
+@@ -199,6 +199,9 @@ use constant CONFIG_USER_FILE => sub {
+ ) . '.pm';
+ };
+ use constant CONFIG_SYSTEM_FILE => sub {
++ # Debian-specific shortcut
++ return '/etc/perl/CPANPLUS/Config/System.pm';
++
+ require CPANPLUS::Internals;
+ require File::Basename;
+ my $dir = File::Basename::dirname(
+--
+tg: (c823880..) debian/cpanplus_config_path (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/cpanplus_definstalldirs.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/cpanplus_definstalldirs.diff
new file mode 100644
index 0000000000..3a1e209943
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/cpanplus_definstalldirs.diff
@@ -0,0 +1,52 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Configure CPANPLUS to use the site directories by default.
+Closes: 533707
+
+The core modules usually default to INSTALLDIRS=perl (ExtUtils::MakeMaker)
+or installdirs=core (Module::Build), so we need to explicitly ask for
+the site destination to get upgraded versions into /usr/local.
+
+See also the sister patch, debian/cpan_definstalldirs .
+
+---
+ cpan/CPANPLUS/lib/CPANPLUS/Config/System.pm | 30 +++++++++++++++++++++++++++
+ 1 files changed, 30 insertions(+), 0 deletions(-)
+
+diff --git a/cpan/CPANPLUS/lib/CPANPLUS/Config/System.pm b/cpan/CPANPLUS/lib/CPANPLUS/Config/System.pm
+new file mode 100644
+index 0000000..5e6e11e
+--- /dev/null
++++ b/cpan/CPANPLUS/lib/CPANPLUS/Config/System.pm
+@@ -0,0 +1,30 @@
++### minimal pod, so you can find it with perldoc -l, etc
++=pod
++
++=head1 NAME
++
++CPANPLUS::Config::System
++
++=head1 DESCRIPTION
++
++This is a CPANPLUS configuration file that sets appropriate default
++settings on Debian systems.
++
++The only preconfigured settings are C<makemakerflags> (set to
++C<INSTALLDIRS=site>) and C<buildflags> (set to C<--installdirs site>).
++
++These settings will not have any effect if
++C</etc/perl/CPANPLUS/Config/System.pm> is present.
++
++=cut
++
++
++package CPANPLUS::Config::System;
++
++sub setup {
++ my $conf = shift;
++ $conf->set_conf( makemakerflags => 'INSTALLDIRS=site' );
++ $conf->set_conf( buildflags => '--installdirs site' );
++}
++
++1;
+--
+tg: (c823880..) debian/cpanplus_definstalldirs (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/db_file_ver.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/db_file_ver.diff
new file mode 100644
index 0000000000..8d0e61b1d1
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/db_file_ver.diff
@@ -0,0 +1,32 @@
+Subject: Remove overly restrictive DB_File version check.
+Bug-Debian: http://bugs.debian.org/340047
+
+Package dependencies ensure the correct library is linked at run-time.
+
+
+---
+ cpan/DB_File/version.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/cpan/DB_File/version.c b/cpan/DB_File/version.c
+index 47158d3..67ccdff 100644
+--- a/cpan/DB_File/version.c
++++ b/cpan/DB_File/version.c
+@@ -48,6 +48,7 @@ __getBerkeleyDBInfo()
+
+ (void)db_version(&Major, &Minor, &Patch) ;
+
++#ifndef DEBIAN
+ /* Check that the versions of db.h and libdb.a are the same */
+ if (Major != DB_VERSION_MAJOR || Minor != DB_VERSION_MINOR )
+ /* || Patch != DB_VERSION_PATCH) */
+@@ -55,6 +56,7 @@ __getBerkeleyDBInfo()
+ croak("\nDB_File was build with libdb version %d.%d.%d,\nbut you are attempting to run it with libdb version %d.%d.%d\n",
+ DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
+ Major, Minor, Patch) ;
++#endif /* DEBIAN */
+
+ /* check that libdb is recent enough -- we need 2.3.4 or greater */
+ if (Major == 2 && (Minor < 3 || (Minor == 3 && Patch < 4)))
+--
+tg: (c823880..) debian/db_file_ver (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/deprecate-with-apt.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/deprecate-with-apt.diff
new file mode 100644
index 0000000000..a515035d9b
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/deprecate-with-apt.diff
@@ -0,0 +1,59 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Point users to Debian packages of deprecated core modules
+Bug-Debian: http://bugs.debian.org/580034
+
+Class::ISA, Switch, Pod::Plainer, and (partially) Shell were
+deprecated from the Perl core in 5.12.0.
+
+To get a clean transition, perl-modules is going to recommend the separate
+Debian packages of these for one release cycle so that they will be
+pulled in by default on upgrades.
+
+However, on systems configured to ignore recommendations the deprecation
+warnings will still be useful, so modify them slightly to point to the
+separate packages instead.
+
+---
+ lib/deprecate.pm | 18 +++++++++++++++++-
+ 1 files changed, 17 insertions(+), 1 deletions(-)
+
+diff --git a/lib/deprecate.pm b/lib/deprecate.pm
+index 7b92e0b..9db7330 100644
+--- a/lib/deprecate.pm
++++ b/lib/deprecate.pm
+@@ -7,6 +7,16 @@ our $VERSION = 0.01;
+ our %Config;
+ unless (%Config) { require Config; *Config = \%Config::Config; }
+
++# Debian-specific change: recommend the separate Debian packages of
++# deprecated modules where available
++
++my %DEBIAN_PACKAGES = (
++ "Class::ISA" => "libclass-isa-perl",
++ "Pod::Plainer" => "libpod-plainer-perl",
++ "Switch" => "libswitch-perl",
++ "Shell" => "libshell-perl",
++);
++
+ sub import {
+ my ($package, $file, $line) = caller;
+ my $expect_leaf = "$package.pm";
+@@ -44,9 +54,15 @@ EOM
+ if (defined $callers_bitmask
+ && (vec($callers_bitmask, $warnings::Offsets{deprecated}, 1)
+ || vec($callers_bitmask, $warnings::Offsets{all}, 1))) {
+- warn <<"EOM";
++ if (my $deb = $DEBIAN_PACKAGES{$package}) {
++ warn <<"EOM";
++$package will be removed from the Perl core distribution in the next major release. Please install the separate $deb package. It is being used at $call_file, line $call_line.
++EOM
++ } else {
++ warn <<"EOM";
+ $package will be removed from the Perl core distribution in the next major release. Please install it from CPAN. It is being used at $call_file, line $call_line.
+ EOM
++ }
+ }
+ return;
+ }
+--
+tg: (c823880..) debian/deprecate-with-apt (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/devel-ppport-ia64-optim.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/devel-ppport-ia64-optim.diff
new file mode 100644
index 0000000000..9e4d9cfdf9
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/devel-ppport-ia64-optim.diff
@@ -0,0 +1,32 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Work around an ICE on ia64
+Closes: 548943
+
+Temporarily work around an internal compiler error in Devel::PPPort
+on ia64+gcc-4.3.
+
+
+---
+ cpan/Devel-PPPort/Makefile.PL | 7 +++++++
+ 1 files changed, 7 insertions(+), 0 deletions(-)
+
+diff --git a/cpan/Devel-PPPort/Makefile.PL b/cpan/Devel-PPPort/Makefile.PL
+index 67eebc1..f1ef7a2 100644
+--- a/cpan/Devel-PPPort/Makefile.PL
++++ b/cpan/Devel-PPPort/Makefile.PL
+@@ -75,6 +75,13 @@ sub configure
+ push @moreopts, INSTALLDIRS => ($] >= 5.007003 ? 'perl' : 'site');
+ }
+
++
++ # temporary Debian hack, see http://bugs.debian.org/548943
++ require Config;
++ if ($Config::Config{archname} =~ /^ia64/) {
++ push @moreopts, OPTIMIZE => '-g -O0';
++ }
++
+ if ($opt{'apicheck'}) {
+ $PL_FILES{'apicheck_c.PL'} = 'apicheck.c';
+ push @C_FILES, qw{ apicheck.c };
+--
+tg: (c823880..) debian/devel-ppport-ia64-optim (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/disable-zlib-bundling.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/disable-zlib-bundling.diff
new file mode 100644
index 0000000000..f540067214
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/disable-zlib-bundling.diff
@@ -0,0 +1,29 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Disable zlib bundling in Compress::Raw::Zlib
+
+Compress::Raw::Zlib statically links its bundled version of zlib
+by default, but we use the system library instead.
+
+---
+ cpan/Compress-Raw-Zlib/config.in | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/cpan/Compress-Raw-Zlib/config.in b/cpan/Compress-Raw-Zlib/config.in
+index c56cc03..2c6659b 100644
+--- a/cpan/Compress-Raw-Zlib/config.in
++++ b/cpan/Compress-Raw-Zlib/config.in
+@@ -16,9 +16,9 @@
+ # Setting the Gzip OS Code
+ #
+
+-BUILD_ZLIB = True
+-INCLUDE = ./zlib-src
+-LIB = ./zlib-src
++BUILD_ZLIB = False
++INCLUDE = /usr/include
++LIB = /usr/lib
+
+ OLD_ZLIB = False
+ GZIP_OS_CODE = AUTO_DETECT
+--
+tg: (c823880..) debian/disable-zlib-bundling (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/doc_info.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/doc_info.diff
new file mode 100644
index 0000000000..ec7eba98f9
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/doc_info.diff
@@ -0,0 +1,34 @@
+Subject: Replace generic man(1) instructions with Debian-specific information.
+
+Indicate that the user needs to install the perl-doc package.
+
+
+---
+ pod/perl.pod | 12 ++++++++++--
+ 1 files changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/pod/perl.pod b/pod/perl.pod
+index e48e526..3b0bbf6 100644
+--- a/pod/perl.pod
++++ b/pod/perl.pod
+@@ -241,8 +241,16 @@ For ease of access, the Perl manual has been split up into several sections.
+ perlwin32 Perl notes for Windows
+
+
+-On a Unix-like system, these documentation files will usually also be
+-available as manpages for use with the F<man> program.
++On Debian systems, you need to install the B<perl-doc> package which
++contains the majority of the standard Perl documentation and the
++F<perldoc> program.
++
++Extensive additional documentation for Perl modules is available, both
++those distributed with Perl and third-party modules which are packaged
++or locally installed.
++
++You should be able to view Perl's documentation with your man(1)
++program or perldoc(1).
+
+ In general, if something strange has gone wrong with your program and you're
+ not sure where you should look for help, try the B<-w> switch first. It will
+--
+tg: (c823880..) debian/doc_info (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/enc2xs_inc.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/enc2xs_inc.diff
new file mode 100644
index 0000000000..227dc10581
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/enc2xs_inc.diff
@@ -0,0 +1,49 @@
+Subject: Tweak enc2xs to follow symlinks and ignore missing @INC directories.
+Bug-Debian: http://bugs.debian.org/290336
+
+- ignore missing directories,
+- follow symlinks (/usr/share/perl/5.8 -> 5.8.4).
+
+
+---
+ cpan/Encode/bin/enc2xs | 8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/cpan/Encode/bin/enc2xs b/cpan/Encode/bin/enc2xs
+index 773c0a0..049ecf9 100644
+--- a/cpan/Encode/bin/enc2xs
++++ b/cpan/Encode/bin/enc2xs
+@@ -924,11 +924,11 @@ use vars qw(
+ sub find_e2x{
+ eval { require File::Find; };
+ my (@inc, %e2x_dir);
+- for my $inc (@INC){
++ for my $inc (grep -d, @INC){
+ push @inc, $inc unless $inc eq '.'; #skip current dir
+ }
+ File::Find::find(
+- sub {
++ { wanted => sub {
+ my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
+ $atime,$mtime,$ctime,$blksize,$blocks)
+ = lstat($_) or return;
+@@ -938,7 +938,7 @@ sub find_e2x{
+ $e2x_dir{$File::Find::dir} ||= $mtime;
+ }
+ return;
+- }, @inc);
++ }, follow => 1}, @inc);
+ warn join("\n", keys %e2x_dir), "\n";
+ for my $d (sort {$e2x_dir{$a} <=> $e2x_dir{$b}} keys %e2x_dir){
+ $_E2X = $d;
+@@ -1005,7 +1005,7 @@ sub make_configlocal_pm {
+ $LocalMod{$enc} ||= $mod;
+ }
+ };
+- File::Find::find({wanted => $wanted}, @INC);
++ File::Find::find({wanted => $wanted, follow => 1}, grep -d, @INC);
+ $_ModLines = "";
+ for my $enc ( sort keys %LocalMod ) {
+ $_ModLines .=
+--
+tg: (c823880..) debian/enc2xs_inc (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/errno_ver.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/errno_ver.diff
new file mode 100644
index 0000000000..f4370086ba
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/errno_ver.diff
@@ -0,0 +1,32 @@
+Subject: Remove Errno version check due to upgrade problems with long-running processes.
+Bug-Debian: http://bugs.debian.org/343351
+
+Remove version check which can cause problems for long running
+processes embedding perl when upgrading to a newer version,
+compatible, but built on a different machine.
+
+
+---
+ ext/Errno/Errno_pm.PL | 5 -----
+ 1 files changed, 0 insertions(+), 5 deletions(-)
+
+diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL
+index 124b8fc..b554cd4 100644
+--- a/ext/Errno/Errno_pm.PL
++++ b/ext/Errno/Errno_pm.PL
+@@ -341,13 +341,8 @@ EOF
+ package Errno;
+ our (\@EXPORT_OK,\%EXPORT_TAGS,\@ISA,\$VERSION,\%errno,\$AUTOLOAD);
+ use Exporter ();
+-use Config;
+ use strict;
+
+-"\$Config{'archname'}-\$Config{'osvers'}" eq
+-"$Config{'archname'}-$Config{'osvers'}" or
+- die "Errno architecture ($Config{'archname'}-$Config{'osvers'}) does not match executable architecture (\$Config{'archname'}-\$Config{'osvers'})";
+-
+ \$VERSION = "$VERSION";
+ \$VERSION = eval \$VERSION;
+ \@ISA = qw(Exporter);
+--
+tg: (c823880..) debian/errno_ver (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/extutils_hacks.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/extutils_hacks.diff
new file mode 100644
index 0000000000..9134cac9f2
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/extutils_hacks.diff
@@ -0,0 +1,313 @@
+Subject: Various debian-specific ExtUtils changes
+
+ * Respect umask during installation, and set as appropriate for each of
+ perl, vendor and site (policy requires group writable site dirs).
+
+ * Don't install .packlist or perllocal.pod for perl or vendor.
+ * Fiddle with *PREFIX and variables written to the makefile so that
+ install directories may be changed when make is run by passing
+ PREFIX= to the "make install" command (used when packaging
+ modules).
+
+ * Set location of libperl.a to /usr/lib.
+ * Note that libperl-dev package is required for embedded linking.
+ * Change install target dependencies to facilitate parallel makes.
+
+
+---
+ cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm | 12 +++---
+ cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm | 44 +++++-----------------
+ cpan/ExtUtils-MakeMaker/t/INST.t | 4 +--
+ cpan/ExtUtils-MakeMaker/t/INST_PREFIX.t | 10 +++---
+ dist/ExtUtils-Install/lib/ExtUtils/Install.pm | 18 +++++-----
+ lib/ExtUtils/Embed.pm | 3 ++
+ 6 files changed, 34 insertions(+), 57 deletions(-)
+
+diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm
+index 4905aeb..a80ac20 100644
+--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm
++++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm
+@@ -701,8 +701,6 @@ all POD files in MAN1PODS and MAN3PODS.
+ sub manifypods_target {
+ my($self) = shift;
+
+- my $man1pods = '';
+- my $man3pods = '';
+ my $dependencies = '';
+
+ # populate manXpods & dependencies:
+@@ -718,7 +716,7 @@ END
+ foreach my $section (qw(1 3)) {
+ my $pods = $self->{"MAN${section}PODS"};
+ push @man_cmds, $self->split_command(<<CMD, %$pods);
+- \$(NOECHO) \$(POD2MAN) --section=$section --perm_rw=\$(PERM_RW)
++ \$(NOECHO) \$(POD2MAN) --section=\$(MAN${section}EXT) --perm_rw=\$(PERM_RW)
+ CMD
+ }
+
+@@ -1428,9 +1426,11 @@ sub init_INSTALL_from_PREFIX {
+ $self->{SITEPREFIX} ||= $sprefix;
+ $self->{VENDORPREFIX} ||= $vprefix;
+
+- # Lots of MM extension authors like to use $(PREFIX) so we
+- # put something sensible in there no matter what.
+- $self->{PREFIX} = '$('.uc $self->{INSTALLDIRS}.'PREFIX)';
++ my $p = $self->{PREFIX} = $self->{PERLPREFIX};
++ for my $t (qw/PERL SITE VENDOR/)
++ {
++ $self->{"${t}PREFIX"} =~ s!^\Q$p\E(?=/|$)!\$(PREFIX)!;
++ }
+ }
+
+ my $arch = $Config{archname};
+diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
+index 239d6df..940de38 100644
+--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
++++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
+@@ -2046,9 +2046,7 @@ doc__install : doc_site_install
+ $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+ pure_perl_install :: all
+- $(NOECHO) $(MOD_INSTALL) \
+- read }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
+- write }.$self->catfile('$(DESTINSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
++ $(NOECHO) umask 022; $(MOD_INSTALL) \
+ $(INST_LIB) $(DESTINSTALLPRIVLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
+ $(INST_BIN) $(DESTINSTALLBIN) \
+@@ -2060,7 +2058,7 @@ pure_perl_install :: all
+
+
+ pure_site_install :: all
+- $(NOECHO) $(MOD_INSTALL) \
++ $(NOECHO) umask 02; $(MOD_INSTALL) \
+ read }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \
+ write }.$self->catfile('$(DESTINSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{ \
+ $(INST_LIB) $(DESTINSTALLSITELIB) \
+@@ -2073,9 +2071,7 @@ pure_site_install :: all
+ }.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{
+
+ pure_vendor_install :: all
+- $(NOECHO) $(MOD_INSTALL) \
+- read }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \
+- write }.$self->catfile('$(DESTINSTALLVENDORARCH)','auto','$(FULLEXT)','.packlist').q{ \
++ $(NOECHO) umask 022; $(MOD_INSTALL) \
+ $(INST_LIB) $(DESTINSTALLVENDORLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
+ $(INST_BIN) $(DESTINSTALLVENDORBIN) \
+@@ -2084,37 +2080,19 @@ pure_vendor_install :: all
+ $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
+
+ doc_perl_install :: all
+- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+- -$(NOECHO) $(DOC_INSTALL) \
+- "Module" "$(NAME)" \
+- "installed into" "$(INSTALLPRIVLIB)" \
+- LINKTYPE "$(LINKTYPE)" \
+- VERSION "$(VERSION)" \
+- EXE_FILES "$(EXE_FILES)" \
+- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
+
+ doc_site_install :: all
+- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+- -$(NOECHO) $(DOC_INSTALL) \
++ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLSITEARCH)/perllocal.pod
++ -$(NOECHO) umask 02; $(MKPATH) $(DESTINSTALLSITEARCH)
++ -$(NOECHO) umask 02; $(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLSITELIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
++ >> }.$self->catfile('$(DESTINSTALLSITEARCH)','perllocal.pod').q{
+
+ doc_vendor_install :: all
+- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+- -$(NOECHO) $(DOC_INSTALL) \
+- "Module" "$(NAME)" \
+- "installed into" "$(INSTALLVENDORLIB)" \
+- LINKTYPE "$(LINKTYPE)" \
+- VERSION "$(VERSION)" \
+- EXE_FILES "$(EXE_FILES)" \
+- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
+
+ };
+
+@@ -2123,13 +2101,12 @@ uninstall :: uninstall_from_$(INSTALLDIRS)dirs
+ $(NOECHO) $(NOOP)
+
+ uninstall_from_perldirs ::
+- $(NOECHO) $(UNINSTALL) }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{
+
+ uninstall_from_sitedirs ::
+ $(NOECHO) $(UNINSTALL) }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{
+
+ uninstall_from_vendordirs ::
+- $(NOECHO) $(UNINSTALL) }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{
++
+ };
+
+ join("",@m);
+@@ -2402,7 +2379,7 @@ MAP_PRELIBS = $Config{perllibs} $Config{cryptlib}
+ ($lperl = $libperl) =~ s/\$\(A\)/$self->{LIB_EXT}/;
+ }
+ unless ($libperl && -f $lperl) { # Ilya's code...
+- my $dir = $self->{PERL_SRC} || "$self->{PERL_ARCHLIB}/CORE";
++ my $dir = $self->{PERL_SRC} || "/usr/lib";
+ $dir = "$self->{PERL_ARCHLIB}/.." if $self->{UNINSTALLED_PERL};
+ $libperl ||= "libperl$self->{LIB_EXT}";
+ $libperl = "$dir/$libperl";
+@@ -2998,8 +2975,7 @@ sub prefixify {
+ print STDERR " prefixify $var => $path\n" if $Verbose >= 2;
+ print STDERR " from $sprefix to $rprefix\n" if $Verbose >= 2;
+
+- if( $self->{ARGS}{PREFIX} &&
+- $path !~ s{^\Q$sprefix\E\b}{$rprefix}s )
++ if( $path !~ s{^\Q$sprefix\E\b}{$rprefix}s && $self->{ARGS}{PREFIX} )
+ {
+
+ print STDERR " cannot prefix, using default.\n" if $Verbose >= 2;
+diff --git a/cpan/ExtUtils-MakeMaker/t/INST.t b/cpan/ExtUtils-MakeMaker/t/INST.t
+index 8a140eb..cf1410e 100755
+--- a/cpan/ExtUtils-MakeMaker/t/INST.t
++++ b/cpan/ExtUtils-MakeMaker/t/INST.t
+@@ -59,9 +59,7 @@ isa_ok( $mm, 'ExtUtils::MakeMaker' );
+ is( $mm->{NAME}, 'Big::Dummy', 'NAME' );
+ is( $mm->{VERSION}, 0.01, 'VERSION' );
+
+-my $config_prefix = $Config{installprefixexp} || $Config{installprefix} ||
+- $Config{prefixexp} || $Config{prefix};
+-is( $mm->{PERLPREFIX}, $config_prefix, 'PERLPREFIX' );
++is( $mm->{PERLPREFIX}, '$(PREFIX)', 'PERLPREFIX' );
+
+ is( !!$mm->{PERL_CORE}, !!$ENV{PERL_CORE}, 'PERL_CORE' );
+
+diff --git a/cpan/ExtUtils-MakeMaker/t/INST_PREFIX.t b/cpan/ExtUtils-MakeMaker/t/INST_PREFIX.t
+index 8bb9db8..316546d 100755
+--- a/cpan/ExtUtils-MakeMaker/t/INST_PREFIX.t
++++ b/cpan/ExtUtils-MakeMaker/t/INST_PREFIX.t
+@@ -10,7 +10,7 @@ BEGIN {
+ }
+
+ use strict;
+-use Test::More tests => 52;
++use Test::More tests => 47;
+ use MakeMaker::Test::Utils;
+ use MakeMaker::Test::Setup::BFD;
+ use ExtUtils::MakeMaker;
+@@ -56,16 +56,16 @@ like( $stdout->read, qr{
+ Writing\ $Makefile\ for\ Big::Dummy\n
+ }x );
+
+-is( $mm->{PREFIX}, '$(SITEPREFIX)', 'PREFIX set based on INSTALLDIRS' );
++#is( $mm->{PREFIX}, '$(SITEPREFIX)', 'PREFIX set based on INSTALLDIRS' );
+
+ isa_ok( $mm, 'ExtUtils::MakeMaker' );
+
+ is( $mm->{NAME}, 'Big::Dummy', 'NAME' );
+ is( $mm->{VERSION}, 0.01, 'VERSION' );
+
+-foreach my $prefix (qw(PREFIX PERLPREFIX SITEPREFIX VENDORPREFIX)) {
+- unlike( $mm->{$prefix}, qr/\$\(PREFIX\)/ );
+-}
++#foreach my $prefix (qw(PREFIX PERLPREFIX SITEPREFIX VENDORPREFIX)) {
++# unlike( $mm->{$prefix}, qr/\$\(PREFIX\)/ );
++#}
+
+
+ my $PREFIX = File::Spec->catdir('foo', 'bar');
+diff --git a/dist/ExtUtils-Install/lib/ExtUtils/Install.pm b/dist/ExtUtils-Install/lib/ExtUtils/Install.pm
+index da58365..d6d5c11 100644
+--- a/dist/ExtUtils-Install/lib/ExtUtils/Install.pm
++++ b/dist/ExtUtils-Install/lib/ExtUtils/Install.pm
+@@ -468,7 +468,7 @@ sub _can_write_dir {
+
+ =pod
+
+-=item _mkpath($dir,$show,$mode,$verbose,$dry_run)
++=item _mkpath($dir,$show,$verbose,$dry_run)
+
+ Wrapper around File::Path::mkpath() to handle errors.
+
+@@ -485,13 +485,13 @@ writable.
+ =cut
+
+ sub _mkpath {
+- my ($dir,$show,$mode,$verbose,$dry_run)=@_;
++ my ($dir,$show,$verbose,$dry_run)=@_;
+ if ( $verbose && $verbose > 1 && ! -d $dir) {
+ $show= 1;
+- printf "mkpath(%s,%d,%#o)\n", $dir, $show, $mode;
++ printf "mkpath(%s,%d)\n", $dir, $show;
+ }
+ if (!$dry_run) {
+- if ( ! eval { File::Path::mkpath($dir,$show,$mode); 1 } ) {
++ if ( ! eval { File::Path::mkpath($dir,$show); 1 } ) {
+ _choke("Can't create '$dir'","$@");
+ }
+
+@@ -796,7 +796,7 @@ sub install { #XXX OS-SPECIFIC
+ _chdir($cwd);
+ }
+ foreach my $targetdir (sort keys %check_dirs) {
+- _mkpath( $targetdir, 0, 0755, $verbose, $dry_run );
++ _mkpath( $targetdir, 0, $verbose, $dry_run );
+ }
+ foreach my $found (@found_files) {
+ my ($diff, $ffd, $origfile, $mode, $size, $atime, $mtime,
+@@ -810,7 +810,7 @@ sub install { #XXX OS-SPECIFIC
+ $targetfile= _unlink_or_rename( $targetfile, 'tryhard', 'install' )
+ unless $dry_run;
+ } elsif ( ! -d $targetdir ) {
+- _mkpath( $targetdir, 0, 0755, $verbose, $dry_run );
++ _mkpath( $targetdir, 0, $verbose, $dry_run );
+ }
+ print "Installing $targetfile\n";
+
+@@ -850,7 +850,7 @@ sub install { #XXX OS-SPECIFIC
+
+ if ($pack{'write'}) {
+ $dir = install_rooted_dir(dirname($pack{'write'}));
+- _mkpath( $dir, 0, 0755, $verbose, $dry_run );
++ _mkpath( $dir, 0, $verbose, $dry_run );
+ print "Writing $pack{'write'}\n" if $verbose;
+ $packlist->write(install_rooted_file($pack{'write'})) unless $dry_run;
+ }
+@@ -1190,7 +1190,7 @@ be prepended as a directory to each installed file (and directory).
+ sub pm_to_blib {
+ my($fromto,$autodir,$pm_filter) = @_;
+
+- _mkpath($autodir,0,0755);
++ _mkpath($autodir,0);
+ while(my($from, $to) = each %$fromto) {
+ if( -f $to && -s $from == -s $to && -M $to < -M $from ) {
+ print "Skip $to (unchanged)\n";
+@@ -1213,7 +1213,7 @@ sub pm_to_blib {
+ # we wont try hard here. its too likely to mess things up.
+ forceunlink($to);
+ } else {
+- _mkpath(dirname($to),0,0755);
++ _mkpath(dirname($to),0);
+ }
+ if ($need_filtering) {
+ run_filter($pm_filter, $from, $to);
+diff --git a/lib/ExtUtils/Embed.pm b/lib/ExtUtils/Embed.pm
+index 24ae909..12d421d 100644
+--- a/lib/ExtUtils/Embed.pm
++++ b/lib/ExtUtils/Embed.pm
+@@ -305,6 +305,9 @@ and extensions in your C/C++ applications.
+ Typically, an application B<Makefile> will invoke ExtUtils::Embed
+ functions while building your application.
+
++Note that on Debian systems the B<libperl-dev> package is required for
++compiling applications which embed an interpreter.
++
+ =head1 @EXPORT
+
+ ExtUtils::Embed exports the following functions:
+--
+tg: (c823880..) debian/extutils_hacks (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/fakeroot.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/fakeroot.diff
new file mode 100644
index 0000000000..e3430ce2b6
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/fakeroot.diff
@@ -0,0 +1,43 @@
+Subject: Postpone LD_LIBRARY_PATH evaluation to the binary targets.
+
+Modify the setting of LD_LIBRARY_PATH to append pre-existing values at the
+time the rule is evaluated rather than when the Makefile is created.
+
+This is required when building packages with dpkg-buildpackage and fakeroot,
+since fakeroot (which now sets LD_LIBRARY_PATH) is not used for the "build"
+rule where the Makefile is created, but is for the clean/binary* targets.
+
+
+---
+ Makefile.SH | 9 ++-------
+ 1 files changed, 2 insertions(+), 7 deletions(-)
+
+diff --git a/Makefile.SH b/Makefile.SH
+index c039938..15184d8 100755
+--- a/Makefile.SH
++++ b/Makefile.SH
+@@ -50,12 +50,7 @@ case "$useshrplib" in
+ true)
+ # Prefix all runs of 'miniperl' and 'perl' with
+ # $ldlibpth so that ./perl finds *this* shared libperl.
+- case "$LD_LIBRARY_PATH" in
+- '')
+- ldlibpth="LD_LIBRARY_PATH=`pwd`";;
+- *)
+- ldlibpth="LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}";;
+- esac
++ ldlibpth=LD_LIBRARY_PATH=`pwd`'$${LD_LIBRARY_PATH:+:}$$LD_LIBRARY_PATH'
+
+ pldlflags="$cccdlflags"
+ static_ldflags=''
+@@ -126,7 +121,7 @@ true)
+ ;;
+ esac
+ case "$ldlibpthname" in
+- '') ;;
++ ''|LD_LIBRARY_PATH) ;;
+ *)
+ case "$osname" in
+ os2)
+--
+tg: (c823880..) debian/fakeroot (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/autodie-flock.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/autodie-flock.diff
new file mode 100644
index 0000000000..f8908ac872
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/autodie-flock.diff
@@ -0,0 +1,98 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Allow for flock returning EAGAIN instead of EWOULDBLOCK on linux/parisc
+Bug-Debian: http://bugs.debian.org/543731
+Origin: upstream, http://github.com/pfenwick/autodie/commit/037738e11a6097734b0e1dabdd77b92e5fe35219
+
+
+---
+ cpan/autodie/lib/Fatal.pm | 14 +++++++++++++-
+ cpan/autodie/t/flock.t | 12 ++++++++++--
+ 2 files changed, 23 insertions(+), 3 deletions(-)
+
+diff --git a/cpan/autodie/lib/Fatal.pm b/cpan/autodie/lib/Fatal.pm
+old mode 100644
+new mode 100755
+index 18e71ed..c17a257
+--- a/cpan/autodie/lib/Fatal.pm
++++ b/cpan/autodie/lib/Fatal.pm
+@@ -5,6 +5,7 @@ use Carp;
+ use strict;
+ use warnings;
+ use Tie::RefHash; # To cache subroutine refs
++use Config;
+
+ use constant PERL510 => ( $] >= 5.010 );
+
+@@ -52,6 +53,10 @@ our %_EWOULDBLOCK = (
+ MSWin32 => 33,
+ );
+
++# the linux parisc port has separate EAGAIN and EWOULDBLOCK,
++# and the kernel returns EAGAIN
++my $try_EAGAIN = ($^O eq 'linux' and $Config{archname} =~ /hppa|parisc/) ? 1 : 0;
++
+ # We have some tags that can be passed in for use with import.
+ # These are all assumed to be CORE::
+
+@@ -720,6 +725,11 @@ sub _one_invocation {
+ my $EWOULDBLOCK = eval { POSIX::EWOULDBLOCK(); }
+ || $_EWOULDBLOCK{$^O}
+ || _autocroak("Internal error - can't overload flock - EWOULDBLOCK not defined on this system.");
++ my $EAGAIN = $EWOULDBLOCK;
++ if ($try_EAGAIN) {
++ $EAGAIN = eval { POSIX::EAGAIN(); }
++ || _autocroak("Internal error - can't overload flock - EAGAIN not defined on this system.");
++ }
+
+ require Fcntl; # For Fcntl::LOCK_NB
+
+@@ -735,7 +745,9 @@ sub _one_invocation {
+ # If we failed, but we're using LOCK_NB and
+ # returned EWOULDBLOCK, it's not a real error.
+
+- if (\$_[1] & Fcntl::LOCK_NB() and \$! == $EWOULDBLOCK ) {
++ if (\$_[1] & Fcntl::LOCK_NB() and
++ (\$! == $EWOULDBLOCK or
++ ($try_EAGAIN and \$! == $EAGAIN ))) {
+ return \$retval;
+ }
+
+diff --git a/cpan/autodie/t/flock.t b/cpan/autodie/t/flock.t
+index a7550ba..6421a56 100755
+--- a/cpan/autodie/t/flock.t
++++ b/cpan/autodie/t/flock.t
+@@ -2,7 +2,8 @@
+ use strict;
+ use Test::More;
+ use Fcntl qw(:flock);
+-use POSIX qw(EWOULDBLOCK);
++use POSIX qw(EWOULDBLOCK EAGAIN);
++use Config;
+
+ require Fatal;
+
+@@ -10,6 +11,9 @@ my $EWOULDBLOCK = eval { EWOULDBLOCK() }
+ || $Fatal::_EWOULDBLOCK{$^O}
+ || plan skip_all => "EWOULDBLOCK not defined on this system";
+
++my $try_EAGAIN = ($^O eq 'linux' and $Config{archname} =~ /hppa|parisc/) ? 1 : 0;
++my $EAGAIN = eval { EAGAIN() };
++
+ my ($self_fh, $self_fh2);
+
+ eval {
+@@ -55,7 +59,11 @@ eval {
+ $return = flock($self_fh2, LOCK_EX | LOCK_NB);
+ };
+
+-is($!+0, $EWOULDBLOCK, "Double-flocking should be EWOULDBLOCK");
++if (!$try_EAGAIN) {
++ is($!+0, $EWOULDBLOCK, "Double-flocking should be EWOULDBLOCK");
++} else {
++ ok($!+0 == $EWOULDBLOCK || $!+0 == $EAGAIN, "Double-flocking should be EWOULDBLOCK or EAGAIN");
++}
+ ok(!$return, "flocking a file twice should fail");
+ is($@, "", "Non-blocking flock should not fail on EWOULDBLOCK");
+
+--
+tg: (c823880..) fixes/autodie-flock (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/concat-stack-corruption.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/concat-stack-corruption.diff
new file mode 100644
index 0000000000..6feb8401fe
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/concat-stack-corruption.diff
@@ -0,0 +1,37 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Fix stack pointer corruption in pp_concat() with 'use encoding'
+Bug-Debian: http://bugs.debian.org/596105
+Bug: http://rt.perl.org/rt3/Ticket/Display.html?id=78674
+Origin: upstream, http://perl5.git.perl.org/perl.git/commit/e3393f51d48d8b790e26324eb0336fac9689fa46
+
+If the stack is reallocated during pp_concat() and 'use encoding' in
+effect, the stack pointer gets corrupted, causing memory allocation bugs
+and the like.
+
+---
+ pp_hot.c | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/pp_hot.c b/pp_hot.c
+index 3371e88..e9cccf3 100644
+--- a/pp_hot.c
++++ b/pp_hot.c
+@@ -271,6 +271,8 @@ PP(pp_concat)
+ rbyte = !DO_UTF8(right);
+ }
+ if (lbyte != rbyte) {
++ /* sv_utf8_upgrade_nomg() may reallocate the stack */
++ PUTBACK;
+ if (lbyte)
+ sv_utf8_upgrade_nomg(TARG);
+ else {
+@@ -279,6 +281,7 @@ PP(pp_concat)
+ sv_utf8_upgrade_nomg(right);
+ rpv = SvPV_const(right, rlen);
+ }
++ SPAGAIN;
+ }
+ sv_catpvn_nomg(TARG, rpv, rlen);
+
+--
+tg: (c823880..) fixes/concat-stack-corruption (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/cpanplus-without-home.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/cpanplus-without-home.diff
new file mode 100644
index 0000000000..5f85894a97
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/cpanplus-without-home.diff
@@ -0,0 +1,30 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Fix CPANPLUS test failures when HOME doesn't exist
+Bug: http://rt.cpan.org/Public/Bug/Display.html?id=52988
+Bug-Debian: http://bugs.debian.org/577011
+Origin: upstream
+
+The Debian autobuilders are configured with a non-existing $ENV{HOME},
+triggering a bug in CPANPLUS that causes test failures.
+
+Fix from CPANPLUS-0.9001.
+
+---
+ cpan/CPANPLUS/lib/CPANPLUS/Internals/Utils.pm | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/cpan/CPANPLUS/lib/CPANPLUS/Internals/Utils.pm b/cpan/CPANPLUS/lib/CPANPLUS/Internals/Utils.pm
+index 27d2abc..8475c36 100644
+--- a/cpan/CPANPLUS/lib/CPANPLUS/Internals/Utils.pm
++++ b/cpan/CPANPLUS/lib/CPANPLUS/Internals/Utils.pm
+@@ -5,7 +5,7 @@ use strict;
+ use CPANPLUS::Error;
+ use CPANPLUS::Internals::Constants;
+
+-use Cwd qw[chdir];
++use Cwd qw[chdir cwd];
+ use File::Copy;
+ use Params::Check qw[check];
+ use Module::Load::Conditional qw[can_load];
+--
+tg: (c823880..) fixes/cpanplus-without-home (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/h2ph-gcc-4.5.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/h2ph-gcc-4.5.diff
new file mode 100644
index 0000000000..c2baf2fa76
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/h2ph-gcc-4.5.diff
@@ -0,0 +1,106 @@
+Author: Robin Barker <rmbarker@cpan.org>
+Subject: h2ph fix for gcc 4.5
+Bug-Debian: http://bugs.debian.org/599933
+Origin: upstream, http://perl5.git.perl.org/perl.git/commit/8d66b3f930dc6d88b524d103e304308ae73a46e7
+
+Fix h2ph and test. Needed to build with GCC 4.5.
+
+
+---
+ lib/h2ph.t | 12 ++++++++++--
+ utils/h2ph.PL | 28 +++++++++++++++++++++++-----
+ 2 files changed, 33 insertions(+), 7 deletions(-)
+
+diff --git a/lib/h2ph.t b/lib/h2ph.t
+index 27dd7b9..8d62d46 100755
+--- a/lib/h2ph.t
++++ b/lib/h2ph.t
+@@ -18,7 +18,7 @@ if (!(-e $extracted_program)) {
+ exit 0;
+ }
+
+-plan(4);
++plan(5);
+
+ # quickly compare two text files
+ sub txt_compare {
+@@ -41,8 +41,16 @@ $result = runperl( progfile => 'lib/h2ph.pht',
+ stderr => 1 );
+ like( $result, qr/syntax OK$/, "output compiles");
+
++$result = runperl( progfile => '_h2ph_pre.ph',
++ switches => ['-c'],
++ stderr => 1 );
++like( $result, qr/syntax OK$/, "preamble compiles");
++
+ $result = runperl( switches => ["-w"],
+- prog => '$SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht);');
++ stderr => 1,
++ prog => <<'PROG' );
++$SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht);
++PROG
+ is( $result, '', "output free of warnings" );
+
+ # cleanup
+diff --git a/utils/h2ph.PL b/utils/h2ph.PL
+index 8f56db4..1255807 100644
+--- a/utils/h2ph.PL
++++ b/utils/h2ph.PL
+@@ -401,7 +401,10 @@ if ($opt_e && (scalar(keys %bad_file) > 0)) {
+ exit $Exit;
+
+ sub expr {
+- $new = '"(assembly code)"' and return if /\b__asm__\b/; # freak out.
++ if (/\b__asm__\b/) { # freak out
++ $new = '"(assembly code)"';
++ return
++ }
+ my $joined_args;
+ if(keys(%curargs)) {
+ $joined_args = join('|', keys(%curargs));
+@@ -770,7 +773,7 @@ sub inc_dirs
+ sub build_preamble_if_necessary
+ {
+ # Increment $VERSION every time this function is modified:
+- my $VERSION = 2;
++ my $VERSION = 3;
+ my $preamble = "$Dest_dir/_h2ph_pre.ph";
+
+ # Can we skip building the preamble file?
+@@ -798,7 +801,16 @@ sub build_preamble_if_necessary
+ # parenthesized value: d=(v)
+ $define{$_} = $1;
+ }
+- if ($define{$_} =~ /^([+-]?(\d+)?\.\d+([eE][+-]?\d+)?)[FL]?$/) {
++ if (/^(\w+)\((\w)\)$/) {
++ my($macro, $arg) = ($1, $2);
++ my $def = $define{$_};
++ $def =~ s/$arg/\$\{$arg\}/g;
++ print PREAMBLE <<DEFINE;
++unless (defined &$macro) { sub $macro(\$) { my (\$$arg) = \@_; \"$def\" } }
++
++DEFINE
++ } elsif
++ ($define{$_} =~ /^([+-]?(\d+)?\.\d+([eE][+-]?\d+)?)[FL]?$/) {
+ # float:
+ print PREAMBLE
+ "unless (defined &$_) { sub $_() { $1 } }\n\n";
+@@ -807,8 +819,14 @@ sub build_preamble_if_necessary
+ print PREAMBLE
+ "unless (defined &$_) { sub $_() { $1 } }\n\n";
+ } elsif ($define{$_} =~ /^\w+$/) {
+- print PREAMBLE
+- "unless (defined &$_) { sub $_() { &$define{$_} } }\n\n";
++ my $def = $define{$_};
++ if ($isatype{$def}) {
++ print PREAMBLE
++ "unless (defined &$_) { sub $_() { \"$def\" } }\n\n";
++ } else {
++ print PREAMBLE
++ "unless (defined &$_) { sub $_() { &$def } }\n\n";
++ }
+ } else {
+ print PREAMBLE
+ "unless (defined &$_) { sub $_() { \"",
+--
+tg: (c823880..) fixes/h2ph-gcc-4.5 (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/hurd-ccflags.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/hurd-ccflags.diff
new file mode 100644
index 0000000000..b9ea6770f2
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/hurd-ccflags.diff
@@ -0,0 +1,26 @@
+Author: Samuel Thibault <sthibault@debian.org>
+Subject: Make hints/gnu.sh append to $ccflags rather than overriding them
+Bug-Debian: http://bugs.debian.org/587901
+
+Don't override possible extra $ccflags values given to Configure
+on GNU/Hurd.
+
+---
+ hints/gnu.sh | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/hints/gnu.sh b/hints/gnu.sh
+index 2cfce54..c1ba2db 100644
+--- a/hints/gnu.sh
++++ b/hints/gnu.sh
+@@ -19,7 +19,7 @@ lddlflags='-shared'
+ ccdlflags='-Wl,-E'
+
+ # Debian bug #258618
+-ccflags='-D_GNU_SOURCE'
++ccflags="-D_GNU_SOURCE $ccflags"
+
+ # The following routines are only available as stubs in GNU libc.
+ # XXX remove this once metaconf detects the GNU libc stubs.
+--
+tg: (c823880..) fixes/hurd-ccflags (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/lc-numeric-docs.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/lc-numeric-docs.diff
new file mode 100644
index 0000000000..bb5c0e8c10
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/lc-numeric-docs.diff
@@ -0,0 +1,95 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: LC_NUMERIC documentation fixes
+Bug-Debian: http://bugs.debian.org/379329
+Bug: http://rt.perl.org/rt3/Ticket/Display.html?id=78452
+Origin: upstream, http://perl5.git.perl.org/perl.git/commit/903eb63f7d8d47a38971a8e9af7201b9927882cf
+
+LC_NUMERIC documentation updates fixing two errors:
+
+ - the early parts of perllocale.pod still say printf() uses LC_NUMERIC
+ with just 'use locale' when actually a POSIX::setlocale() call is
+ also needed
+
+ - format() hasn't used LC_NUMERIC unconditionally since 5.005_03
+ (commit 097ee67dff1c60f201bc09435bc6eaeeafcd8123).
+
+Test cases from the upstream commit dropped for the sake of simplicity.
+
+---
+ pod/perlform.pod | 20 ++++++++------------
+ pod/perllocale.pod | 15 ++++++---------
+ 2 files changed, 14 insertions(+), 21 deletions(-)
+
+diff --git a/pod/perlform.pod b/pod/perlform.pod
+index 3cfa1b7..df0f0a1 100644
+--- a/pod/perlform.pod
++++ b/pod/perlform.pod
+@@ -166,9 +166,9 @@ token on the first line. If an expression evaluates to a number with a
+ decimal part, and if the corresponding picture specifies that the decimal
+ part should appear in the output (that is, any picture except multiple "#"
+ characters B<without> an embedded "."), the character used for the decimal
+-point is B<always> determined by the current LC_NUMERIC locale. This
+-means that, if, for example, the run-time environment happens to specify a
+-German locale, "," will be used instead of the default ".". See
++point is determined by the current LC_NUMERIC locale if C<use locale> is in
++effect. This means that, if, for example, the run-time environment happens
++to specify a German locale, "," will be used instead of the default ".". See
+ L<perllocale> and L<"WARNINGS"> for more information.
+
+
+@@ -442,15 +442,11 @@ Lexical variables (declared with "my") are not visible within a
+ format unless the format is declared within the scope of the lexical
+ variable. (They weren't visible at all before version 5.001.)
+
+-Formats are the only part of Perl that unconditionally use information
+-from a program's locale; if a program's environment specifies an
+-LC_NUMERIC locale, it is always used to specify the decimal point
+-character in formatted output. Perl ignores all other aspects of locale
+-handling unless the C<use locale> pragma is in effect. Formatted output
+-cannot be controlled by C<use locale> because the pragma is tied to the
+-block structure of the program, and, for historical reasons, formats
+-exist outside that block structure. See L<perllocale> for further
+-discussion of locale handling.
++If a program's environment specifies an LC_NUMERIC locale and C<use
++locale> is in effect when the format is declared, the locale is used
++to specify the decimal point character in formatted output. Formatted
++output cannot be controlled by C<use locale> at the time when write()
++is called. See L<perllocale> for further discussion of locale handling.
+
+ Within strings that are to be displayed in a fixed length text field,
+ each control character is substituted by a space. (But remember the
+diff --git a/pod/perllocale.pod b/pod/perllocale.pod
+index 0dbabe7..0bec423 100644
+--- a/pod/perllocale.pod
++++ b/pod/perllocale.pod
+@@ -115,8 +115,7 @@ ucfirst(), and lcfirst()) use C<LC_CTYPE>
+
+ =item *
+
+-B<The formatting functions> (printf(), sprintf() and write()) use
+-C<LC_NUMERIC>
++B<Format declarations> (format()) use C<LC_NUMERIC>
+
+ =item *
+
+@@ -967,13 +966,11 @@ system's implementation of the locale system than by Perl.
+
+ =head2 write() and LC_NUMERIC
+
+-Formats are the only part of Perl that unconditionally use information
+-from a program's locale; if a program's environment specifies an
+-LC_NUMERIC locale, it is always used to specify the decimal point
+-character in formatted output. Formatted output cannot be controlled by
+-C<use locale> because the pragma is tied to the block structure of the
+-program, and, for historical reasons, formats exist outside that block
+-structure.
++If a program's environment specifies an LC_NUMERIC locale and C<use
++locale> is in effect when the format is declared, the locale is used
++to specify the decimal point character in formatted output. Formatted
++output cannot be controlled by C<use locale> at the time when write()
++is called.
+
+ =head2 Freely available locale definitions
+
+--
+tg: (c823880..) fixes/lc-numeric-docs (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/lc-numeric-sprintf.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/lc-numeric-sprintf.diff
new file mode 100644
index 0000000000..6a39820012
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/lc-numeric-sprintf.diff
@@ -0,0 +1,29 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Fix sprintf not to ignore LC_NUMERIC with constants
+Bug-Debian: http://bugs.debian.org/601549
+Bug: http://rt.perl.org/rt3/Ticket/Display.html?id=78632
+Origin: upstream, http://perl5.git.perl.org/perl.git/commit/b3fd61496ebc585b1115807e3195f17714662a09
+
+Don't fold constants in sprintf() if locales are used
+
+An upstream regression in 5.10.1 made sprintf() ignore LC_NUMERIC for
+numeric constants.
+
+---
+ op.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/op.c b/op.c
+index e94f158..3c6badb 100644
+--- a/op.c
++++ b/op.c
+@@ -2503,6 +2503,7 @@ S_fold_constants(pTHX_ register OP *o)
+ case OP_SLE:
+ case OP_SGE:
+ case OP_SCMP:
++ case OP_SPRINTF:
+ /* XXX what about the numeric ops? */
+ if (PL_hints & HINT_LOCALE)
+ goto nope;
+--
+tg: (c823880..) fixes/lc-numeric-sprintf (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/net_smtp_docs.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/net_smtp_docs.diff
new file mode 100644
index 0000000000..6dc97129bb
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/net_smtp_docs.diff
@@ -0,0 +1,23 @@
+Subject: Document the Net::SMTP 'Port' option
+Bug-Debian: http://bugs.debian.org/100195
+Bug: http://rt.cpan.org/Public/Bug/Display.html?id=36038
+
+
+---
+ cpan/libnet/Net/SMTP.pm | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/cpan/libnet/Net/SMTP.pm b/cpan/libnet/Net/SMTP.pm
+index a28496d..07b2498 100644
+--- a/cpan/libnet/Net/SMTP.pm
++++ b/cpan/libnet/Net/SMTP.pm
+@@ -625,6 +625,7 @@ Net::SMTP will attempt to extract the address from the value passed.
+
+ B<Debug> - Enable debugging information
+
++B<Port> - Select a port on the remote host to connect to (default is 25)
+
+ Example:
+
+--
+tg: (c823880..) fixes/net_smtp_docs (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/processPL.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/processPL.diff
new file mode 100644
index 0000000000..5a444e3f69
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/fixes/processPL.diff
@@ -0,0 +1,43 @@
+Subject: Always use PERLRUNINST when building perl modules.
+Bug-Debian: http://bugs.debian.org/357264
+Bug: http://rt.cpan.org/Public/Bug/Display.html?id=17224
+
+Revert part of upstream change 24524 to always use PERLRUNINST when
+building perl modules: Some PDL demos expect blib to be implicitly
+searched.
+
+
+---
+ cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm | 5 +----
+ 1 files changed, 1 insertions(+), 4 deletions(-)
+
+diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
+index 239d6df..294d266 100644
+--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
++++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
+@@ -3043,14 +3043,11 @@ sub processPL {
+ # pm_to_blib depends on then it can't depend on pm_to_blib
+ # else we have a dependency loop.
+ my $pm_dep;
+- my $perlrun;
+ if( defined $self->{PM}{$target} ) {
+ $pm_dep = '';
+- $perlrun = 'PERLRUN';
+ }
+ else {
+ $pm_dep = 'pm_to_blib';
+- $perlrun = 'PERLRUNINST';
+ }
+
+ $m .= <<MAKE_FRAG;
+@@ -3059,7 +3056,7 @@ all :: $target
+ \$(NOECHO) \$(NOOP)
+
+ $target :: $plfile $pm_dep
+- \$($perlrun) $plfile $target
++ \$(PERLRUNINST) $plfile $target
+ MAKE_FRAG
+
+ }
+--
+tg: (c823880..) fixes/processPL (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/instmodsh_doc.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/instmodsh_doc.diff
new file mode 100644
index 0000000000..5670863ac5
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/instmodsh_doc.diff
@@ -0,0 +1,26 @@
+Subject: Debian policy doesn't install .packlist files for core or vendor.
+
+
+---
+ cpan/ExtUtils-MakeMaker/bin/instmodsh | 4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+diff --git a/cpan/ExtUtils-MakeMaker/bin/instmodsh b/cpan/ExtUtils-MakeMaker/bin/instmodsh
+index 5874aa6..6a2f03e 100644
+--- a/cpan/ExtUtils-MakeMaker/bin/instmodsh
++++ b/cpan/ExtUtils-MakeMaker/bin/instmodsh
+@@ -18,9 +18,11 @@ instmodsh - A shell to examine installed modules
+
+ =head1 DESCRIPTION
+
+-A little interface to ExtUtils::Installed to examine installed modules,
++A little interface to ExtUtils::Installed to examine locally* installed modules,
+ validate your packlists and even create a tarball from an installed module.
+
++*On Debian system, B<core> and B<vendor> modules are managed by C<dpkg>.
++
+ =head1 SEE ALSO
+
+ ExtUtils::Installed
+--
+tg: (c823880..) debian/instmodsh_doc (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/ld_run_path.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/ld_run_path.diff
new file mode 100644
index 0000000000..ffcfab9d5d
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/ld_run_path.diff
@@ -0,0 +1,23 @@
+Subject: Remove standard libs from LD_RUN_PATH as per Debian policy.
+
+
+---
+ .../ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm
+index b807e97..6c955d7 100644
+--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm
++++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm
+@@ -53,6 +53,9 @@ sub _unix_os2_ext {
+ my($pwd) = cwd(); # from Cwd.pm
+ my($found) = 0;
+
++ # Debian-specific: don't use LD_RUN_PATH for standard dirs
++ $ld_run_path_seen{$_}++ for qw(/lib /usr/lib /usr/X11R6/lib);
++
+ foreach my $thislib (split ' ', $potential_libs) {
+
+ # Handle possible linker path arguments.
+--
+tg: (c823880..) debian/ld_run_path (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/libnet_config_path.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/libnet_config_path.diff
new file mode 100644
index 0000000000..41bca9702b
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/libnet_config_path.diff
@@ -0,0 +1,35 @@
+Subject: Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable.
+
+
+---
+ cpan/libnet/Net/Config.pm | 7 +++----
+ 1 files changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/cpan/libnet/Net/Config.pm b/cpan/libnet/Net/Config.pm
+index db51c1f..8404593 100644
+--- a/cpan/libnet/Net/Config.pm
++++ b/cpan/libnet/Net/Config.pm
+@@ -57,9 +57,8 @@ my %nc = (
+ }
+ TRY_INTERNET_CONFIG
+
+-my $file = __FILE__;
++my $file = '/etc/perl/Net/libnet.cfg';
+ my $ref;
+-$file =~ s/Config.pm/libnet.cfg/;
+ if (-f $file) {
+ $ref = eval { local $SIG{__DIE__}; do $file };
+ if (ref($ref) eq 'HASH') {
+@@ -132,8 +131,8 @@ Net::Config - Local configuration data for libnet
+ C<Net::Config> holds configuration data for the modules in the libnet
+ distribution. During installation you will be asked for these values.
+
+-The configuration data is held globally in a file in the perl installation
+-tree, but a user may override any of these values by providing their own. This
++The configuration data is held globally in C</etc/perl/Net/libnet.cfg>,
++but a user may override any of these values by providing their own. This
+ can be done by having a C<.libnetrc> file in their home directory. This file
+ should return a reference to a HASH containing the keys described below.
+ For example
+--
+tg: (c823880..) debian/libnet_config_path (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/m68k_thread_stress.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/m68k_thread_stress.diff
new file mode 100644
index 0000000000..cda6089a01
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/m68k_thread_stress.diff
@@ -0,0 +1,43 @@
+Subject: Disable some threads tests on m68k for now due to missing TLS.
+Closes: #495826, #517938
+
+
+---
+ dist/threads-shared/t/stress.t | 4 ++++
+ dist/threads-shared/t/waithires.t | 6 ++++++
+ 2 files changed, 10 insertions(+), 0 deletions(-)
+
+diff --git a/dist/threads-shared/t/stress.t b/dist/threads-shared/t/stress.t
+index adfd1ed..8573f1a 100755
+--- a/dist/threads-shared/t/stress.t
++++ b/dist/threads-shared/t/stress.t
+@@ -11,6 +11,10 @@ BEGIN {
+ print("1..0 # SKIP Broken under HP-UX 10.20\n");
+ exit(0);
+ }
++ if ($^O eq 'linux' && $Config{archname} =~ /^m68k/) {
++ print("1..0 # Skip: no TLS on m68k yet <http://bugs.debian.org/495826>\n");
++ exit(0);
++ }
+ }
+
+ use ExtUtils::testlib;
+diff --git a/dist/threads-shared/t/waithires.t b/dist/threads-shared/t/waithires.t
+index e3a1086..633374e 100755
+--- a/dist/threads-shared/t/waithires.t
++++ b/dist/threads-shared/t/waithires.t
+@@ -16,6 +16,12 @@ BEGIN {
+ if (! eval 'use Time::HiRes "time"; 1') {
+ Test::skip_all('Time::HiRes not available');
+ }
++
++ if ($^O eq 'linux' && $Config{archname} =~ /^m68k/) {
++ print("1..0 # Skip: no TLS on m68k yet <http://bugs.debian.org/495826>\n");
++ exit(0);
++ }
++
+ }
+
+ use ExtUtils::testlib;
+--
+tg: (c823880..) debian/m68k_thread_stress (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/mod_paths.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/mod_paths.diff
new file mode 100644
index 0000000000..bfa4721c43
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/mod_paths.diff
@@ -0,0 +1,98 @@
+Subject: Tweak @INC ordering for Debian
+
+Our order is:
+
+ etc (for config files)
+ site (5.8.1)
+ vendor (all)
+ core (5.8.1)
+ site (version-indep)
+ site (pre-5.8.1)
+
+The rationale being that an admin (via site), or module packager
+(vendor) can chose to shadow core modules when there is a newer
+version than is included in core.
+
+
+---
+ perl.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 58 insertions(+), 0 deletions(-)
+
+diff --git a/perl.c b/perl.c
+index 05cea40..023d6a0 100644
+--- a/perl.c
++++ b/perl.c
+@@ -4125,6 +4125,11 @@ S_init_perllib(pTHX)
+ INCPUSH_ADD_SUB_DIRS|INCPUSH_CAN_RELOCATE);
+ #endif
+
++#ifdef DEBIAN
++ /* for configuration where /usr is mounted ro (CPAN::Config, Net::Config) */
++ S_incpush_use_sep(aTHX_ STR_WITH_LEN("/etc/perl"), 0x0);
++#endif
++
+ #ifdef SITEARCH_EXP
+ /* sitearch is always relative to sitelib on Windows for
+ * DLL-based path intuition to work correctly */
+@@ -4242,6 +4247,59 @@ S_init_perllib(pTHX)
+ INCPUSH_ADD_OLD_VERS|INCPUSH_CAN_RELOCATE);
+ #endif
+
++#ifdef DEBIAN
++ /* Non-versioned site directory for local modules and for
++ compatability with the previous packages' site dirs */
++ S_incpush_use_sep(aTHX_ STR_WITH_LEN("/usr/local/lib/site_perl"),
++ INCPUSH_ADD_SUB_DIRS);
++
++#ifdef PERL_INC_VERSION_LIST
++ {
++ struct stat s;
++
++ /* add small buffer in case old versions are longer than the
++ current version */
++ char sitearch[sizeof(SITEARCH_EXP)+16] = SITEARCH_EXP;
++ char sitelib[sizeof(SITELIB_EXP)+16] = SITELIB_EXP;
++ char const *vers[] = { PERL_INC_VERSION_LIST };
++ char const **p;
++
++ char *arch_vers = strrchr(sitearch, '/');
++ char *lib_vers = strrchr(sitelib, '/');
++
++ if (arch_vers && isdigit(*++arch_vers))
++ *arch_vers = 0;
++ else
++ arch_vers = 0;
++
++ if (lib_vers && isdigit(*++lib_vers))
++ *lib_vers = 0;
++ else
++ lib_vers = 0;
++
++ /* there is some duplication here as incpush does something
++ similar internally, but required as sitearch is not a
++ subdirectory of sitelib */
++ for (p = vers; *p; p++)
++ {
++ if (arch_vers)
++ {
++ strcpy(arch_vers, *p);
++ if (PerlLIO_stat(sitearch, &s) >= 0 && S_ISDIR(s.st_mode))
++ S_incpush_use_sep(aTHX_ sitearch, strlen(sitearch), 0x0);
++ }
++
++ if (lib_vers)
++ {
++ strcpy(lib_vers, *p);
++ if (PerlLIO_stat(sitelib, &s) >= 0 && S_ISDIR(s.st_mode))
++ S_incpush_use_sep(aTHX_ sitelib, strlen(sitelib), 0x0);
++ }
++ }
++ }
++#endif
++#endif
++
+ #ifdef PERL_OTHERLIBDIRS
+ S_incpush_use_sep(aTHX_ STR_WITH_LEN(PERL_OTHERLIBDIRS),
+ INCPUSH_ADD_OLD_VERS|INCPUSH_ADD_ARCHONLY_SUB_DIRS
+--
+tg: (c823880..) debian/mod_paths (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/module_build_man_extensions.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/module_build_man_extensions.diff
new file mode 100644
index 0000000000..320a90d84a
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/module_build_man_extensions.diff
@@ -0,0 +1,31 @@
+Subject: Adjust Module::Build manual page extensions for the Debian Perl policy
+Bug-Debian: http://bugs.debian.org/479460
+
+---
+ cpan/Module-Build/lib/Module/Build/Base.pm | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/cpan/Module-Build/lib/Module/Build/Base.pm b/cpan/Module-Build/lib/Module/Build/Base.pm
+index 5bd8ec7..b4e606a 100644
+--- a/cpan/Module-Build/lib/Module/Build/Base.pm
++++ b/cpan/Module-Build/lib/Module/Build/Base.pm
+@@ -3071,7 +3071,7 @@ sub manify_bin_pods {
+ foreach my $file (keys %$files) {
+ # Pod::Simple based parsers only support one document per instance.
+ # This is expected to change in a future version (Pod::Simple > 3.03).
+- my $parser = Pod::Man->new( section => 1 ); # binaries go in section 1
++ my $parser = Pod::Man->new( section => '1p' ); # binaries go in section 1p
+ my $manpage = $self->man1page_name( $file ) . '.' .
+ $self->config( 'man1ext' );
+ my $outfile = File::Spec->catfile($mandir, $manpage);
+@@ -3096,7 +3096,7 @@ sub manify_lib_pods {
+ while (my ($file, $relfile) = each %$files) {
+ # Pod::Simple based parsers only support one document per instance.
+ # This is expected to change in a future version (Pod::Simple > 3.03).
+- my $parser = Pod::Man->new( section => 3 ); # libraries go in section 3
++ my $parser = Pod::Man->new( section => '3pm' ); # libraries go in section 3pm
+ my $manpage = $self->man3page_name( $relfile ) . '.' .
+ $self->config( 'man3ext' );
+ my $outfile = File::Spec->catfile( $mandir, $manpage);
+--
+tg: (c823880..) debian/module_build_man_extensions (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/perlivp.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/perlivp.diff
new file mode 100644
index 0000000000..c63c1e81b8
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/perlivp.diff
@@ -0,0 +1,38 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Make perlivp skip include directories in /usr/local
+Closes: 510895
+
+On Sat, Jan 10, 2009 at 12:37:18AM +1100, Brendan O'Dea wrote:
+> On Wed, Jan 7, 2009 at 12:21 AM, Niko Tyni <ntyni@debian.org> wrote:
+
+> > We could create the directories in a postinst script, but I'm not sure
+> > I see the point. They will be created automatically when installing
+> > CPAN modules.
+>
+> The directories are intentionally not created, as this way they are
+> excluded from the search path at start-up, saving a bunch of wasted
+> stats at use/require time in the common case that the user has not
+> installed any local packages. As Niko points out, they will be
+> created as required.
+
+
+Signed-off-by: Niko Tyni <ntyni@debian.org>
+
+---
+ utils/perlivp.PL | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/utils/perlivp.PL b/utils/perlivp.PL
+index 9783261..156146f 100644
+--- a/utils/perlivp.PL
++++ b/utils/perlivp.PL
+@@ -142,6 +142,7 @@ my $INC_total = 0;
+ my $INC_there = 0;
+ foreach (@INC) {
+ next if $_ eq '.'; # skip -d test here
++ next if m|/usr/local|; # not shipped on Debian
+ if ($^O eq 'MacOS') {
+ next if $_ eq ':'; # skip -d test here
+ next if $_ eq 'Dev:Pseudo:'; # why is this in @INC?
+--
+tg: (c823880..) debian/perlivp (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/prune_libs.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/prune_libs.diff
new file mode 100644
index 0000000000..4d73717db4
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/prune_libs.diff
@@ -0,0 +1,36 @@
+Subject: Prune the list of libraries wanted to what we actually need.
+Bug-Debian: http://bugs.debian.org/128355
+
+We want to keep the dependencies on perl-base as small as possible,
+and some of the original list may be present on buildds (see Bug#128355).
+
+
+---
+ Configure | 5 ++---
+ 1 files changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/Configure b/Configure
+index 3a8732b..6013c86 100755
+--- a/Configure
++++ b/Configure
+@@ -1363,8 +1363,7 @@ libswanted_uselargefiles=''
+ : set usesocks on the Configure command line to enable socks.
+ : List of libraries we want.
+ : If anyone needs extra -lxxx, put those in a hint file.
+-libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
+-libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
++libswanted='gdbm gdbm_compat db dl m c crypt'
+ : We probably want to search /usr/shlib before most other libraries.
+ : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
+ glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
+@@ -22179,7 +22178,7 @@ sunos*X4*)
+ ;;
+ *) case "$usedl" in
+ $define|true|[yY]*)
+- set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -lgdbm_compat @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
++ set X `echo " $libs " | sed -e 's@ -lgdbm @ @' -e 's@ -lgdbm_compat @ @' -e 's@ -ldb @ @'`
+ shift
+ perllibs="$*"
+ ;;
+--
+tg: (c823880..) debian/prune_libs (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/debian/squelch-locale-warnings.diff b/meta/recipes-devtools/perl/perl-5.12.2/debian/squelch-locale-warnings.diff
new file mode 100644
index 0000000000..091dec45cb
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/debian/squelch-locale-warnings.diff
@@ -0,0 +1,53 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Squelch locale warnings in Debian package maintainer scripts
+Bug-Debian: http://bugs.debian.org/508764
+
+The system locales are rather frequently out of sync with the C library
+during package upgrades, causing a huge amount of useless Perl locale
+warnings. Squelch them when running package maintainer scripts, detected
+by the DPKG_RUNNING_VERSION environment variable.
+
+Any real locale problem will show up after the system upgrade too, and
+the warning will be triggered normally again at that point.
+
+---
+ locale.c | 4 ++++
+ pod/perllocale.pod | 8 ++++++++
+ 2 files changed, 12 insertions(+), 0 deletions(-)
+
+diff --git a/locale.c b/locale.c
+index 16ccce8..2592b3c 100644
+--- a/locale.c
++++ b/locale.c
+@@ -359,6 +359,10 @@ Perl_init_i18nl10n(pTHX_ int printwarn)
+ char *p;
+ const bool locwarn = (printwarn > 1 ||
+ (printwarn &&
++
++ /* Debian specific change - see http://bugs.debian.org/508764 */
++ (!PerlEnv_getenv("DPKG_RUNNING_VERSION")) &&
++
+ (!(p = PerlEnv_getenv("PERL_BADLANG")) || atoi(p))));
+
+ if (locwarn) {
+diff --git a/pod/perllocale.pod b/pod/perllocale.pod
+index 0dbabe7..60b7bab 100644
+--- a/pod/perllocale.pod
++++ b/pod/perllocale.pod
+@@ -844,6 +844,14 @@ B<NOTE>: PERL_BADLANG only gives you a way to hide the warning message.
+ The message tells about some problem in your system's locale support,
+ and you should investigate what the problem is.
+
++=item DPKG_RUNNING_VERSION
++
++On Debian systems, if the DPKG_RUNNING_VERSION environment variable is
++set (to any value), the locale failure warnings will be suppressed just
++like with a zero PERL_BADLANG setting. This is done to avoid floods
++of spurious warnings during system upgrades.
++See L<http://bugs.debian.org/508764>.
++
+ =back
+
+ The following environment variables are not specific to Perl: They are
+--
+tg: (c823880..) debian/squelch-locale-warnings (depends on: upstream)
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/generate-sh.patch b/meta/recipes-devtools/perl/perl-5.12.2/generate-sh.patch
index ceb74196d6..ceb74196d6 100644
--- a/meta/recipes-devtools/perl/perl-5.8.8/generate-sh.patch
+++ b/meta/recipes-devtools/perl/perl-5.12.2/generate-sh.patch
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/installperl.patch b/meta/recipes-devtools/perl/perl-5.12.2/installperl.patch
new file mode 100644
index 0000000000..d20961c4f8
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/installperl.patch
@@ -0,0 +1,15 @@
+Index: perl-5.12.2/installperl
+===================================================================
+--- perl-5.12.2.orig/installperl
++++ perl-5.12.2/installperl
+@@ -3,8 +3,8 @@
+ BEGIN {
+ require 5.004;
+ chdir '..' if !-d 'lib' and -d '../lib';
+- @INC = 'lib';
+- $ENV{PERL5LIB} = 'lib';
++# @INC = 'lib';
++# $ENV{PERL5LIB} = 'lib';
+
+ # This needs to be at BEGIN time, before any use of Config
+ require './install_lib.pl';
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/native-nopacklist.patch b/meta/recipes-devtools/perl/perl-5.12.2/native-nopacklist.patch
new file mode 100644
index 0000000000..92b02d4af0
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/native-nopacklist.patch
@@ -0,0 +1,80 @@
+Part of 52_debian_extutils_hacks.patch just to exclude the installation of .packlist files
+
+Index: perl-5.12.2/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
+===================================================================
+--- perl-5.12.2.orig/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
++++ perl-5.12.2/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
+@@ -2047,8 +2047,6 @@ doc__install : doc_site_install
+
+ pure_perl_install :: all
+ $(NOECHO) $(MOD_INSTALL) \
+- read }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
+- write }.$self->catfile('$(DESTINSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
+ $(INST_LIB) $(DESTINSTALLPRIVLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
+ $(INST_BIN) $(DESTINSTALLBIN) \
+@@ -2074,8 +2072,6 @@ pure_site_install :: all
+
+ pure_vendor_install :: all
+ $(NOECHO) $(MOD_INSTALL) \
+- read }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \
+- write }.$self->catfile('$(DESTINSTALLVENDORARCH)','auto','$(FULLEXT)','.packlist').q{ \
+ $(INST_LIB) $(DESTINSTALLVENDORLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
+ $(INST_BIN) $(DESTINSTALLVENDORBIN) \
+@@ -2084,37 +2080,19 @@ pure_vendor_install :: all
+ $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
+
+ doc_perl_install :: all
+- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+- -$(NOECHO) $(DOC_INSTALL) \
+- "Module" "$(NAME)" \
+- "installed into" "$(INSTALLPRIVLIB)" \
+- LINKTYPE "$(LINKTYPE)" \
+- VERSION "$(VERSION)" \
+- EXE_FILES "$(EXE_FILES)" \
+- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
+
+ doc_site_install :: all
+- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
++ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLSITEARCH)/perllocal.pod
++ -$(NOECHO) $(MKPATH) $(DESTINSTALLSITEARCH)
+ -$(NOECHO) $(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLSITELIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
++ >> }.$self->catfile('$(DESTINSTALLSITEARCH)','perllocal.pod').q{
+
+ doc_vendor_install :: all
+- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+- -$(NOECHO) $(DOC_INSTALL) \
+- "Module" "$(NAME)" \
+- "installed into" "$(INSTALLVENDORLIB)" \
+- LINKTYPE "$(LINKTYPE)" \
+- VERSION "$(VERSION)" \
+- EXE_FILES "$(EXE_FILES)" \
+- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
+
+ };
+
+@@ -2123,13 +2101,12 @@ uninstall :: uninstall_from_$(INSTALLDIR
+ $(NOECHO) $(NOOP)
+
+ uninstall_from_perldirs ::
+- $(NOECHO) $(UNINSTALL) }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{
+
+ uninstall_from_sitedirs ::
+ $(NOECHO) $(UNINSTALL) }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{
+
+ uninstall_from_vendordirs ::
+- $(NOECHO) $(UNINSTALL) }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{
++
+ };
+
+ join("",@m);
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/native-perlinc.patch b/meta/recipes-devtools/perl/perl-5.12.2/native-perlinc.patch
new file mode 100644
index 0000000000..bf145ba6b2
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/native-perlinc.patch
@@ -0,0 +1,24 @@
+Index: perl-5.8.8/lib/ExtUtils/MM_Unix.pm
+===================================================================
+--- perl-5.12.2.orig/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm 2008-10-31 22:01:35.000000000 +0000
++++ perl-5.12.2/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm 2008-10-31 22:01:35.000000000 +0000
+@@ -1597,6 +1597,19 @@
+ $self->{PERL_LIB} ||= $Config{privlibexp};
+ $self->{PERL_ARCHLIB} ||= $Config{archlibexp};
+ $self->{PERL_INC} = $self->catdir("$self->{PERL_ARCHLIB}","CORE"); # wild guess for now
++ # Check for environment override so we'll find the headers in the correct place
++ if (defined $ENV{PERL_LIB})
++ {
++ $self->{PERL_LIB} = $ENV{PERL_LIB};
++ }
++ if (defined $ENV{PERL_ARCHLIB})
++ {
++ $self->{PERL_ARCHLIB} = $ENV{PERL_ARCHLIB};
++ }
++ if (defined $ENV{PERL_INC})
++ {
++ $self->{PERL_INC} = $ENV{PERL_INC};
++ }
+ my $perl_h;
+
+ if (not -f ($perl_h = $self->catfile($self->{PERL_INC},"perl.h"))
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/native-ssp.patch b/meta/recipes-devtools/perl/perl-5.12.2/native-ssp.patch
index 1c825f50d0..1c825f50d0 100644
--- a/meta/recipes-devtools/perl/perl-5.8.8/native-ssp.patch
+++ b/meta/recipes-devtools/perl/perl-5.12.2/native-ssp.patch
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/perl-configpm-switch.patch b/meta/recipes-devtools/perl/perl-5.12.2/perl-configpm-switch.patch
index ac519a0271..ac519a0271 100644
--- a/meta/recipes-devtools/perl/perl-5.8.8/perl-configpm-switch.patch
+++ b/meta/recipes-devtools/perl/perl-5.12.2/perl-configpm-switch.patch
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/perl-configure.sh b/meta/recipes-devtools/perl/perl-5.12.2/perl-configure.sh
new file mode 100755
index 0000000000..c29e966c05
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/perl-configure.sh
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+#
+# Generate the common perl configuration
+# Needs to be run on a host that matches the bitsize of the target platform
+#
+
+echo sh Configure -des \
+ -Doptimize=-O2 \
+ -Dmyhostname=localhost \
+ -Dperladmin=root@localhost \
+ -Dcc=gcc \
+ -Dcf_by='Open Embedded' \
+ -Dinstallprefix=@DESTDIR@ \
+ -Dprefix=/usr \
+ -Dvendorprefix=/usr \
+ -Dsiteprefix=/usr \
+ -Dotherlibdirs=/usr/lib/perl5/5.12.2 \
+ -Duseshrplib \
+ -Dusethreads \
+ -Duseithreads \
+ -Duselargefiles \
+ -Ud_dosuid \
+ -Dd_semctl_semun \
+ -Ui_db \
+ -Ui_ndbm \
+ -Ui_gdbm \
+ -Di_shadow \
+ -Di_syslog \
+ -Dman3ext=3pm \
+ -Duseperlio \
+ -Dinstallusrbinperl \
+ -Ubincompat5005 \
+ -Uversiononly \
+ -Dpager='/usr/bin/less -isr'
+
+cp -f config.sh config.sh.COMMON
+
+TARGETOS=$(grep myarchname config.sh.COMMON | sed "s#.*'\(.*\)'.*#\1#")
+
+sed -r -i config.sh.COMMON \
+ -e "s#(install.*=')(/usr)/local(.*')#\1@DESTDIR@\2\3#g" \
+ -e 's#'$TARGETOS'#@ARCH@#g'
diff --git a/meta/recipes-devtools/perl/perl-5.12.2/perl-dynloader.patch b/meta/recipes-devtools/perl/perl-5.12.2/perl-dynloader.patch
new file mode 100644
index 0000000000..061a8236fd
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.12.2/perl-dynloader.patch
@@ -0,0 +1,23 @@
+Allow the location that .so files are searched for for dynamic
+loading to be changed via an environment variable. This is to allow
+us to load .so's from the host system while building for the target
+system.
+
+--- perl-5.12.2/dist/XSLoader/XSLoader_pm.PL 2007/04/20 09:03:08 1.1
++++ perl-5.12.2/dist/XSLoader/XSLoader_pm.PL 2007/04/20 09:03:08
+@@ -65,6 +65,15 @@
+ print OUT <<'EOT';
+ my $modpname = join('/',@modparts);
+ my $modlibname = (caller())[1];
++ # OE: Allow env to form dynamic loader to look in a different place
++ # This is so it finds the host .so files, not the targets
++ if (defined $ENV{PERLHOSTLIB})
++ {
++ my $hostlib = $ENV{PERLHOSTLIB};
++ print STDERR "*** Module name IN: $modlibname\n";
++ $modlibname =~ s#(?<!/)(\.\./)*lib/#$hostlib#g;
++ print STDERR "*** Module name OUT: $modlibname\n";
++ }
+ my $c = @modparts;
+ $modlibname =~ s,[\\/][^\\/]+$,, while $c--; # Q&D basename
+ my $file = "$modlibname/auto/$modpname/$modfname.$dl_dlext";
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/perl-enable-gdbm.patch b/meta/recipes-devtools/perl/perl-5.12.2/perl-enable-gdbm.patch
index c0874c372d..c0874c372d 100644
--- a/meta/recipes-devtools/perl/perl-5.8.8/perl-enable-gdbm.patch
+++ b/meta/recipes-devtools/perl/perl-5.12.2/perl-enable-gdbm.patch
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/perl-moreconfig.patch b/meta/recipes-devtools/perl/perl-5.12.2/perl-moreconfig.patch
index 590c72536b..590c72536b 100644
--- a/meta/recipes-devtools/perl/perl-5.8.8/perl-moreconfig.patch
+++ b/meta/recipes-devtools/perl/perl-5.12.2/perl-moreconfig.patch
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/09_fix_installperl.patch b/meta/recipes-devtools/perl/perl-5.8.8/09_fix_installperl.patch
deleted file mode 100644
index f550537d02..0000000000
--- a/meta/recipes-devtools/perl/perl-5.8.8/09_fix_installperl.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-Correctly identify arch-specific modules in ext/ where the .pm files
-are under lib.
-
-Ensure that POSIX/SigAction is kept with the rest of the POSIX module
-under archlib.
-
-diff --exclude=debian -Naur perl-5.8.8.orig/installperl perl-5.8.8/installperl
---- perl-5.8.8.orig/installperl 2006-01-29 02:35:28.000000000 +1100
-+++ perl-5.8.8/installperl 2006-05-31 22:54:41.000000000 +1000
-@@ -156,11 +156,8 @@
- if ("$File::Find::dir/$_" =~ m{^ext\b(.*)/([^/]+)\.pm$}) {
- my($path, $modname) = ($1,$2);
-
-- # strip trailing component first
-- $path =~ s{/[^/]*$}{};
--
-- # strip optional "/lib";
-- $path =~ s{/lib\b}{};
-+ # strip to optional "/lib", or remove trailing component
-+ $path =~ s{.*/lib\b}{} or $path =~ s{/[^/]*$}{};
-
- # strip any leading /
- $path =~ s{^/}{};
-@@ -851,7 +848,7 @@
- }
-
- if (-f $_) {
-- if (/\.(?:al|ix)$/ && !($dir =~ m[^auto/(.*)$] && $archpms{$1})) {
-+ if (/\.(?:al|ix)$/ && !($dir =~ m[^auto/(.*)$])) {
- $installlib = $installprivlib;
- #We're installing *.al and *.ix files into $installprivlib,
- #but we have to delete old *.al and *.ix files from the 5.000
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/52_debian_extutils_hacks.patch b/meta/recipes-devtools/perl/perl-5.8.8/52_debian_extutils_hacks.patch
deleted file mode 100644
index 8a964f9338..0000000000
--- a/meta/recipes-devtools/perl/perl-5.8.8/52_debian_extutils_hacks.patch
+++ /dev/null
@@ -1,234 +0,0 @@
-Various debian-specific ExtUtils changes:
-
- * Respect umask during installation, and set as appropriate for each of
- perl, vendor and site (policy requires group writable site dirs).
-
- * Don't install .packlist or perllocal.pod for perl or vendor.
- * Fiddle with *PREFIX and variables written to the makefile so that
- install directories may be changed when make is run by passing
- PREFIX= to the "make install" command (used when packaging
- modules).
-
- * Set location of libperl.a to /usr/lib.
- * Note that libperl-dev package is required for embedded linking.
-
-diff -Naur --exclude=debian perl-5.8.8.orig/lib/ExtUtils/Embed.pm perl-5.8.8/lib/ExtUtils/Embed.pm
---- perl-5.8.8.orig/lib/ExtUtils/Embed.pm 2004-08-03 20:41:49.000000000 +1000
-+++ perl-5.8.8/lib/ExtUtils/Embed.pm 2006-02-05 10:42:11.000000000 +1100
-@@ -300,6 +300,9 @@
- Typically, an application B<Makefile> will invoke ExtUtils::Embed
- functions while building your application.
-
-+Note that on Debian systems the B<libperl-dev> package is required for
-+compiling applications which embed an interpreter.
-+
- =head1 @EXPORT
-
- ExtUtils::Embed exports the following functions:
-diff -Naur --exclude=debian perl-5.8.8.orig/lib/ExtUtils/Install.pm perl-5.8.8/lib/ExtUtils/Install.pm
---- perl-5.8.8.orig/lib/ExtUtils/Install.pm 2005-10-21 22:00:01.000000000 +1000
-+++ perl-5.8.8/lib/ExtUtils/Install.pm 2006-02-05 10:42:11.000000000 +1100
-@@ -173,8 +173,8 @@
- if (-f $targetfile){
- forceunlink($targetfile) unless $nonono;
- } else {
-- mkpath($targetdir,0,0755) unless $nonono;
-- print "mkpath($targetdir,0,0755)\n" if $verbose>1;
-+ mkpath($targetdir) unless $nonono;
-+ print "mkpath($targetdir)\n" if $verbose>1;
- }
- copy($sourcefile, $targetfile) unless $nonono;
- print "Installing $targetfile\n";
-diff -Naur --exclude=debian perl-5.8.8.orig/lib/ExtUtils/MM_Any.pm perl-5.8.8/lib/ExtUtils/MM_Any.pm
---- perl-5.8.8.orig/lib/ExtUtils/MM_Any.pm 2005-04-13 17:49:53.000000000 +1000
-+++ perl-5.8.8/lib/ExtUtils/MM_Any.pm 2006-02-05 11:17:52.000000000 +1100
-@@ -645,8 +645,6 @@
- sub manifypods_target {
- my($self) = shift;
-
-- my $man1pods = '';
-- my $man3pods = '';
- my $dependencies = '';
-
- # populate manXpods & dependencies:
-@@ -666,7 +664,7 @@
- foreach my $section (qw(1 3)) {
- my $pods = $self->{"MAN${section}PODS"};
- push @man_cmds, $self->split_command(<<CMD, %$pods);
-- \$(NOECHO) \$(POD2MAN) --section=$section --perm_rw=\$(PERM_RW)
-+ \$(NOECHO) \$(POD2MAN) --section=\$(MAN${section}EXT) --perm_rw=\$(PERM_RW)
- CMD
- }
-
-@@ -1080,9 +1078,11 @@
- $self->{SITEPREFIX} ||= $sprefix;
- $self->{VENDORPREFIX} ||= $vprefix;
-
-- # Lots of MM extension authors like to use $(PREFIX) so we
-- # put something sensible in there no matter what.
-- $self->{PREFIX} = '$('.uc $self->{INSTALLDIRS}.'PREFIX)';
-+ my $p = $self->{PREFIX} = $self->{PERLPREFIX};
-+ for my $t (qw/PERL SITE VENDOR/)
-+ {
-+ $self->{"${t}PREFIX"} =~ s!^\Q$p\E(?=/|$)!\$(PREFIX)!;
-+ }
- }
-
- my $arch = $Config{archname};
-diff -Naur --exclude=debian perl-5.8.8.orig/lib/ExtUtils/MM_Unix.pm perl-5.8.8/lib/ExtUtils/MM_Unix.pm
---- perl-5.8.8.orig/lib/ExtUtils/MM_Unix.pm 2005-05-21 19:42:56.000000000 +1000
-+++ perl-5.8.8/lib/ExtUtils/MM_Unix.pm 2006-02-05 17:40:19.000000000 +1100
-@@ -2054,9 +2054,7 @@
- $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
-
- pure_perl_install ::
-- $(NOECHO) $(MOD_INSTALL) \
-- read }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
-- write }.$self->catfile('$(DESTINSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
-+ $(NOECHO) umask 022; $(MOD_INSTALL) \
- $(INST_LIB) $(DESTINSTALLPRIVLIB) \
- $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
- $(INST_BIN) $(DESTINSTALLBIN) \
-@@ -2068,7 +2066,7 @@
-
-
- pure_site_install ::
-- $(NOECHO) $(MOD_INSTALL) \
-+ $(NOECHO) umask 02; $(MOD_INSTALL) \
- read }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \
- write }.$self->catfile('$(DESTINSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{ \
- $(INST_LIB) $(DESTINSTALLSITELIB) \
-@@ -2081,9 +2079,7 @@
- }.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{
-
- pure_vendor_install ::
-- $(NOECHO) $(MOD_INSTALL) \
-- read }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \
-- write }.$self->catfile('$(DESTINSTALLVENDORARCH)','auto','$(FULLEXT)','.packlist').q{ \
-+ $(NOECHO) umask 022; $(MOD_INSTALL) \
- $(INST_LIB) $(DESTINSTALLVENDORLIB) \
- $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
- $(INST_BIN) $(DESTINSTALLVENDORBIN) \
-@@ -2092,37 +2088,19 @@
- $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
-
- doc_perl_install ::
-- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
-- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
-- -$(NOECHO) $(DOC_INSTALL) \
-- "Module" "$(NAME)" \
-- "installed into" "$(INSTALLPRIVLIB)" \
-- LINKTYPE "$(LINKTYPE)" \
-- VERSION "$(VERSION)" \
-- EXE_FILES "$(EXE_FILES)" \
-- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
-
- doc_site_install ::
-- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
-- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
-- -$(NOECHO) $(DOC_INSTALL) \
-+ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLSITEARCH)/perllocal.pod
-+ -$(NOECHO) umask 02; $(MKPATH) $(DESTINSTALLSITEARCH)
-+ -$(NOECHO) umask 02; $(DOC_INSTALL) \
- "Module" "$(NAME)" \
- "installed into" "$(INSTALLSITELIB)" \
- LINKTYPE "$(LINKTYPE)" \
- VERSION "$(VERSION)" \
- EXE_FILES "$(EXE_FILES)" \
-- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
-+ >> }.$self->catfile('$(DESTINSTALLSITEARCH)','perllocal.pod').q{
-
- doc_vendor_install ::
-- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
-- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
-- -$(NOECHO) $(DOC_INSTALL) \
-- "Module" "$(NAME)" \
-- "installed into" "$(INSTALLVENDORLIB)" \
-- LINKTYPE "$(LINKTYPE)" \
-- VERSION "$(VERSION)" \
-- EXE_FILES "$(EXE_FILES)" \
-- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
-
- };
-
-@@ -2131,13 +2109,12 @@
- $(NOECHO) $(NOOP)
-
- uninstall_from_perldirs ::
-- $(NOECHO) $(UNINSTALL) }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{
-
- uninstall_from_sitedirs ::
- $(NOECHO) $(UNINSTALL) }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{
-
- uninstall_from_vendordirs ::
-- $(NOECHO) $(UNINSTALL) }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{
-+
- };
-
- join("",@m);
-@@ -2415,7 +2392,7 @@
- ($lperl = $libperl) =~ s/\$\(A\)/$self->{LIB_EXT}/;
- }
- unless ($libperl && -f $lperl) { # Ilya's code...
-- my $dir = $self->{PERL_SRC} || "$self->{PERL_ARCHLIB}/CORE";
-+ my $dir = $self->{PERL_SRC} || "/usr/lib";
- $dir = "$self->{PERL_ARCHLIB}/.." if $self->{UNINSTALLED_PERL};
- $libperl ||= "libperl$self->{LIB_EXT}";
- $libperl = "$dir/$libperl";
-@@ -3007,8 +2984,7 @@
- print STDERR " prefixify $var => $path\n" if $Verbose >= 2;
- print STDERR " from $sprefix to $rprefix\n" if $Verbose >= 2;
-
-- if( $self->{ARGS}{PREFIX} && $self->file_name_is_absolute($path) &&
-- $path !~ s{^\Q$sprefix\E\b}{$rprefix}s )
-+ if( $path !~ s{^\Q$sprefix\E\b}{$rprefix}s && $self->{ARGS}{PREFIX} )
- {
-
- print STDERR " cannot prefix, using default.\n" if $Verbose >= 2;
-diff -Naur --exclude=debian perl-5.8.8.orig/lib/ExtUtils/t/INST.t perl-5.8.8/lib/ExtUtils/t/INST.t
---- perl-5.8.8.orig/lib/ExtUtils/t/INST.t 2005-10-21 19:12:39.000000000 +1000
-+++ perl-5.8.8/lib/ExtUtils/t/INST.t 2006-02-05 17:48:56.000000000 +1100
-@@ -65,9 +65,7 @@
- is( $mm->{NAME}, 'Big::Dummy', 'NAME' );
- is( $mm->{VERSION}, 0.01, 'VERSION' );
-
--my $config_prefix = $Config{installprefixexp} || $Config{installprefix} ||
-- $Config{prefixexp} || $Config{prefix};
--is( $mm->{PERLPREFIX}, $config_prefix, 'PERLPREFIX' );
-+is( $mm->{PERLPREFIX}, '$(PREFIX)', 'PERLPREFIX' );
-
- is( !!$mm->{PERL_CORE}, !!$ENV{PERL_CORE}, 'PERL_CORE' );
-
-diff -Naur --exclude=debian perl-5.8.8.orig/lib/ExtUtils/t/INST_PREFIX.t perl-5.8.8/lib/ExtUtils/t/INST_PREFIX.t
---- perl-5.8.8.orig/lib/ExtUtils/t/INST_PREFIX.t 2005-10-21 22:00:19.000000000 +1000
-+++ perl-5.8.8/lib/ExtUtils/t/INST_PREFIX.t 2006-02-05 17:48:06.000000000 +1100
-@@ -16,7 +16,7 @@
- }
-
- use strict;
--use Test::More tests => 52;
-+use Test::More tests => 47;
- use MakeMaker::Test::Utils;
- use MakeMaker::Test::Setup::BFD;
- use ExtUtils::MakeMaker;
-@@ -62,16 +62,16 @@
- Writing\ $Makefile\ for\ Big::Dummy\n
- }x );
-
--is( $mm->{PREFIX}, '$(SITEPREFIX)', 'PREFIX set based on INSTALLDIRS' );
-+#is( $mm->{PREFIX}, '$(SITEPREFIX)', 'PREFIX set based on INSTALLDIRS' );
-
- isa_ok( $mm, 'ExtUtils::MakeMaker' );
-
- is( $mm->{NAME}, 'Big::Dummy', 'NAME' );
- is( $mm->{VERSION}, 0.01, 'VERSION' );
-
--foreach my $prefix (qw(PREFIX PERLPREFIX SITEPREFIX VENDORPREFIX)) {
-- unlike( $mm->{$prefix}, qr/\$\(PREFIX\)/ );
--}
-+#foreach my $prefix (qw(PREFIX PERLPREFIX SITEPREFIX VENDORPREFIX)) {
-+# unlike( $mm->{$prefix}, qr/\$\(PREFIX\)/ );
-+#}
-
-
- my $PREFIX = File::Spec->catdir('foo', 'bar');
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/53_debian_mod_paths.patch b/meta/recipes-devtools/perl/perl-5.8.8/53_debian_mod_paths.patch
deleted file mode 100644
index df74bc598d..0000000000
--- a/meta/recipes-devtools/perl/perl-5.8.8/53_debian_mod_paths.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-Tweak @INC so that the ordering is:
-
- etc (for config files)
- site (5.8.1)
- vendor (all)
- core (5.8.1)
- site (version-indep)
- site (pre-5.8.1)
-
-The rationale being that an admin (via site), or module packager
-(vendor) can chose to shadow core modules when there is a newer
-version than is included in core.
-
-diff -Naur --exclude=debian perl-5.8.8.orig/perl.c perl-5.8.8/perl.c
---- perl-5.8.8.orig/perl.c 2006-01-31 23:34:47.000000000 +1100
-+++ perl-5.8.8/perl.c 2006-02-02 23:36:38.000000000 +1100
-@@ -4776,9 +4776,14 @@
- incpush(APPLLIB_EXP, TRUE, TRUE, TRUE);
- #endif
-
-+#if 1
-+ /* for configuration where /usr is mounted ro (CPAN::Config, Net::Config) */
-+ incpush("/etc/perl", FALSE, FALSE, FALSE);
-+#else
- #ifdef ARCHLIB_EXP
- incpush(ARCHLIB_EXP, FALSE, FALSE, TRUE);
- #endif
-+#endif
- #ifdef MACOS_TRADITIONAL
- {
- Stat_t tmpstatbuf;
-@@ -4803,11 +4808,13 @@
- #ifndef PRIVLIB_EXP
- # define PRIVLIB_EXP "/usr/local/lib/perl5:/usr/local/lib/perl"
- #endif
-+#if 0
- #if defined(WIN32)
- incpush(PRIVLIB_EXP, TRUE, FALSE, TRUE);
- #else
- incpush(PRIVLIB_EXP, FALSE, FALSE, TRUE);
- #endif
-+#endif
-
- #ifdef SITEARCH_EXP
- /* sitearch is always relative to sitelib on Windows for
-@@ -4850,6 +4857,61 @@
- incpush(PERL_VENDORLIB_STEM, FALSE, TRUE, TRUE);
- #endif
-
-+#if 1
-+ incpush(ARCHLIB_EXP, FALSE, FALSE, TRUE);
-+ incpush(PRIVLIB_EXP, FALSE, FALSE, TRUE);
-+
-+ /* Non-versioned site directory for local modules and for
-+ compatability with the previous packages' site dirs */
-+ incpush("/usr/local/lib/site_perl", TRUE, FALSE, FALSE);
-+
-+#ifdef PERL_INC_VERSION_LIST
-+ {
-+ struct stat s;
-+
-+ /* add small buffer in case old versions are longer than the
-+ current version */
-+ char sitearch[sizeof(SITEARCH_EXP)+16] = SITEARCH_EXP;
-+ char sitelib[sizeof(SITELIB_EXP)+16] = SITELIB_EXP;
-+ char const *vers[] = { PERL_INC_VERSION_LIST };
-+ char const **p;
-+
-+ char *arch_vers = strrchr(sitearch, '/');
-+ char *lib_vers = strrchr(sitelib, '/');
-+
-+ if (arch_vers && isdigit(*++arch_vers))
-+ *arch_vers = 0;
-+ else
-+ arch_vers = 0;
-+
-+ if (lib_vers && isdigit(*++lib_vers))
-+ *lib_vers = 0;
-+ else
-+ lib_vers = 0;
-+
-+ /* there is some duplication here as incpush does something
-+ similar internally, but required as sitearch is not a
-+ subdirectory of sitelib */
-+ for (p = vers; *p; p++)
-+ {
-+ if (arch_vers)
-+ {
-+ strcpy(arch_vers, *p);
-+ if (PerlLIO_stat(sitearch, &s) >= 0 && S_ISDIR(s.st_mode))
-+ incpush(sitearch, FALSE, FALSE, FALSE);
-+ }
-+
-+ if (lib_vers)
-+ {
-+ strcpy(lib_vers, *p);
-+ if (PerlLIO_stat(sitelib, &s) >= 0 && S_ISDIR(s.st_mode))
-+ incpush(sitelib, FALSE, FALSE, FALSE);
-+ }
-+ }
-+ }
-+#endif
-+#endif
-+
- #ifdef PERL_OTHERLIBDIRS
- incpush(PERL_OTHERLIBDIRS, TRUE, TRUE, TRUE);
- #endif
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/54_debian_perldoc-r.patch b/meta/recipes-devtools/perl/perl-5.8.8/54_debian_perldoc-r.patch
deleted file mode 100644
index 432cd857a7..0000000000
--- a/meta/recipes-devtools/perl/perl-5.8.8/54_debian_perldoc-r.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-In a Debian installation, not all directories in @INC need exist (the
-site directories for example are created on demand).
-
-Suggested by Joey Hess <joeyh@debian.org>.
-
-diff -Naur --exclude=debian perl-5.8.8.orig/lib/Pod/Perldoc.pm perl-5.8.8/lib/Pod/Perldoc.pm
---- perl-5.8.8.orig/lib/Pod/Perldoc.pm 2004-12-29 23:15:33.000000000 +1100
-+++ perl-5.8.8/lib/Pod/Perldoc.pm 2006-02-02 23:38:49.000000000 +1100
-@@ -1533,6 +1533,7 @@
- $self->{'target'} = (splitdir $s)[-1]; # XXX: why not use File::Basename?
- for ($i=0; $i<@dirs; $i++) {
- $dir = $dirs[$i];
-+ next unless -d $dir; # some dirs in @INC are optional
- ($dir = VMS::Filespec::unixpath($dir)) =~ s!/\z!! if IS_VMS;
- if ( (! $self->opt_m && ( $ret = $self->check_file($dir,"$s.pod")))
- or ( $ret = $self->check_file($dir,"$s.pm"))
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/58_debian_cpan_config_path.patch b/meta/recipes-devtools/perl/perl-5.8.8/58_debian_cpan_config_path.patch
deleted file mode 100644
index b38c70c515..0000000000
--- a/meta/recipes-devtools/perl/perl-5.8.8/58_debian_cpan_config_path.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Set location of CPAN::Config to /etc/perl as /usr may not be writable.
-
-diff -Naur --exclude=debian perl-5.8.8.orig/lib/CPAN.pm perl-5.8.8/lib/CPAN.pm
---- perl-5.8.8.orig/lib/CPAN.pm 2006-02-01 01:11:22.000000000 +1100
-+++ perl-5.8.8/lib/CPAN.pm 2006-02-02 23:49:26.000000000 +1100
-@@ -1246,7 +1246,7 @@
- $configpm = $INC{"CPAN/MyConfig.pm"};
- $redo++;
- } else {
-- my($path_to_cpan) = File::Basename::dirname($INC{"CPAN.pm"});
-+ my($path_to_cpan) = '/etc/perl';
- my($configpmdir) = File::Spec->catdir($path_to_cpan,"CPAN");
- my($configpmtest) = File::Spec->catfile($configpmdir,"Config.pm");
- if (-d $configpmdir or File::Path::mkpath($configpmdir)) {
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/60_debian_libnet_config_path.patch b/meta/recipes-devtools/perl/perl-5.8.8/60_debian_libnet_config_path.patch
deleted file mode 100644
index 7842ce115c..0000000000
--- a/meta/recipes-devtools/perl/perl-5.8.8/60_debian_libnet_config_path.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable.
-
-diff -Naur --exclude=debian perl-5.8.8.orig/lib/Net/Config.pm perl-5.8.8/lib/Net/Config.pm
---- perl-5.8.8.orig/lib/Net/Config.pm 2002-03-01 01:04:31.000000000 +1100
-+++ perl-5.8.8/lib/Net/Config.pm 2006-02-03 00:00:55.000000000 +1100
-@@ -57,9 +57,8 @@
- }
- TRY_INTERNET_CONFIG
-
--my $file = __FILE__;
-+my $file = '/etc/perl/Net/libnet.cfg';
- my $ref;
--$file =~ s/Config.pm/libnet.cfg/;
- if ( -f $file ) {
- $ref = eval { local $SIG{__DIE__}; do $file };
- if (ref($ref) eq 'HASH') {
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/62_debian_cpan_definstalldirs.patch b/meta/recipes-devtools/perl/perl-5.8.8/62_debian_cpan_definstalldirs.patch
deleted file mode 100644
index 682061dd8b..0000000000
--- a/meta/recipes-devtools/perl/perl-5.8.8/62_debian_cpan_definstalldirs.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Some modules which are included in core set INSTALLDIRS => 'perl'
-explicitly in Makefile.PL. This makes sense for the normal @INC
-ordering, but not ours. Provide a sensible default.
-
-diff -Naur --exclude=debian perl-5.8.8.orig/lib/CPAN/FirstTime.pm perl-5.8.8/lib/CPAN/FirstTime.pm
---- perl-5.8.8.orig/lib/CPAN/FirstTime.pm 2006-01-31 08:08:57.000000000 +1100
-+++ perl-5.8.8/lib/CPAN/FirstTime.pm 2006-02-03 00:05:24.000000000 +1100
-@@ -358,7 +358,7 @@
-
- };
-
-- $default = $CPAN::Config->{makepl_arg} || "";
-+ $default = $CPAN::Config->{makepl_arg} || "INSTALLDIRS=site";
- $CPAN::Config->{makepl_arg} =
- prompt("Parameters for the 'perl Makefile.PL' command?
- Typical frequently used settings:
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/64_debian_enc2xs_inc.patch b/meta/recipes-devtools/perl/perl-5.8.8/64_debian_enc2xs_inc.patch
deleted file mode 100644
index c207a9380a..0000000000
--- a/meta/recipes-devtools/perl/perl-5.8.8/64_debian_enc2xs_inc.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Tweak enc2xs to handle Debian @INC: ignore missing directories,
-follow symlinks (/usr/share/perl/5.8 -> 5.8.4).
-
-diff -Naur --exclude=debian perl-5.8.8.orig/ext/Encode/bin/enc2xs perl-5.8.8/ext/Encode/bin/enc2xs
---- perl-5.8.8.orig/ext/Encode/bin/enc2xs 2004-09-03 01:53:51.000000000 +1000
-+++ perl-5.8.8/ext/Encode/bin/enc2xs 2006-02-03 00:21:32.000000000 +1100
-@@ -909,10 +909,11 @@
- eval { require File::Find; };
- my (@inc, %e2x_dir);
- for my $inc (@INC){
-+ next unless -d $inc; # skip non-existent directories
- push @inc, $inc unless $inc eq '.'; #skip current dir
- }
- File::Find::find(
-- sub {
-+ { wanted => sub {
- my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
- $atime,$mtime,$ctime,$blksize,$blocks)
- = lstat($_) or return;
-@@ -922,7 +923,7 @@
- $e2x_dir{$File::Find::dir} ||= $mtime;
- }
- return;
-- }, @inc);
-+ }, follow => 1}, @inc);
- warn join("\n", keys %e2x_dir), "\n";
- for my $d (sort {$e2x_dir{$a} <=> $e2x_dir{$b}} keys %e2x_dir){
- $_E2X = $d;
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/Makefile.SH.patch b/meta/recipes-devtools/perl/perl-5.8.8/Makefile.SH.patch
deleted file mode 100644
index ab9c4b7d63..0000000000
--- a/meta/recipes-devtools/perl/perl-5.8.8/Makefile.SH.patch
+++ /dev/null
@@ -1,253 +0,0 @@
-Index: perl-5.8.8/Makefile.SH
-===================================================================
---- perl-5.8.8.orig/Makefile.SH 2006-01-24 23:49:44.000000000 +1100
-+++ perl-5.8.8/Makefile.SH 2007-06-14 13:29:37.000000000 +1000
-@@ -43,12 +43,12 @@
- true)
- # Prefix all runs of 'miniperl' and 'perl' with
- # $ldlibpth so that ./perl finds *this* shared libperl.
-- case "$LD_LIBRARY_PATH" in
-- '')
-- ldlibpth="LD_LIBRARY_PATH=`pwd`";;
-- *)
-- ldlibpth="LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}";;
-- esac
-+# case "$LD_LIBRARY_PATH" in
-+# '')
-+# ldlibpth="LD_LIBRARY_PATH=`pwd`";;
-+# *)
-+# ldlibpth="LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}";;
-+# esac
-
- pldlflags="$cccdlflags"
- static_target='static_pic'
-@@ -108,7 +108,8 @@
- ldlibpth=''
- ;;
- *)
-- eval "ldlibpth=\"$ldlibpthname=`pwd`:\$$ldlibpthname\""
-+# We compile in the library path in OE from cross-compile, so lets not do this
-+# eval "ldlibpth=\"$ldlibpthname=`pwd`:\$$ldlibpthname\""
- ;;
- esac
- # Strip off any trailing :'s
-@@ -129,18 +130,7 @@
- # INSTALL file, under "Building a shared perl library".
- # If there is no pre-existing $libperl, we don't need
- # to do anything further.
-- if test -f $archlib/CORE/$libperl; then
-- rm -f preload
-- cat <<'EOT' > preload
--#! /bin/sh
--lib=$1
--shift
--test -r $lib && export LD_PRELOAD="$lib $LD_PRELOAD"
--exec "$@"
--EOT
-- chmod 755 preload
-- ldlibpth="$ldlibpth `pwd`/preload `pwd`/$libperl"
-- fi
-+ echo linux libraries overwritten by cross-compile patches
- ;;
- os390) test -f /bin/env && ldlibpth="/bin/env $ldlibpth"
- ;;
-@@ -401,9 +391,19 @@
- .c.s:
- $(CCCMDSRC) -S $*.c
-
--all: $(FIRSTMAKEFILE) miniperl$(EXE_EXT) extra.pods $(private) $(unidatafiles) $(public) $(dynamic_ext) $(nonxs_ext) extras.make
-- @echo " ";
-- @echo " Everything is up to date. Type '$(MAKE) test' to run test suite."
-+#all: $(FIRSTMAKEFILE) miniperl$(EXE_EXT) extra.pods $(private) $(unidatafiles) $(public) $(dynamic_ext) $(nonxs_ext) extras.make
-+# @echo " ";
-+# @echo " Everything is up to date. Type '$(MAKE) test' to run test suite."
-+
-+all: $(FIRSTMAKEFILE) miniperl$(EXE_EXT) $(unidatafiles)
-+
-+more: extra.pods $(private) $(public)
-+
-+more2: $(dynamic_ext)
-+
-+more3: $(nonxs_ext)
-+
-+more4: extras.make
-
- .PHONY: all compile translators utilities
-
-@@ -413,10 +413,10 @@
- cd x2p; $(MAKE) compile;
- cd pod; $(MAKE) compile;
-
--translators: miniperl$(EXE_EXT) $(CONFIGPM) FORCE
-+translators: $(CONFIGPM) FORCE
- @echo " "; echo " Making x2p stuff"; cd x2p; $(LDLIBPTH) $(MAKE) all
-
--utilities: miniperl$(EXE_EXT) $(CONFIGPM) $(plextract) lib/lib.pm FORCE
-+utilities: $(CONFIGPM) $(plextract) lib/lib.pm FORCE
- @echo " "; echo " Making utilities"; cd utils; $(LDLIBPTH) $(MAKE) all
-
-
-@@ -550,7 +550,7 @@
- case "$useshrplib" in
- true)
- $spitshell >>Makefile <<'!NO!SUBS!'
-- $(LD) -o $@ $(SHRPLDFLAGS) perl$(OBJ_EXT) $(obj) $(libs)
-+ $(LD) -o $@ $(SHRPLDFLAGS) perl$(OBJ_EXT) $(obj) $(libs) -Wl,-soname,libperl.so.5
- !NO!SUBS!
- case "$osname" in
- aix)
-@@ -591,7 +591,9 @@
- $(CC) -o miniperl $(CLDFLAGS) \
- `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \
- miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perl$(OBJ_EXT) $(libs)
-- $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
-+ mv -f miniperl miniperl-target
-+ ln -s hostperl miniperl
-+# $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
- !NO!SUBS!
- ;;
- next4*)
-@@ -599,7 +601,9 @@
- miniperl: $& miniperlmain$(OBJ_EXT) $(LIBPERL) opmini$(OBJ_EXT)
- $(CC) -o miniperl `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \
- miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perl$(OBJ_EXT) $(libs)
-- $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
-+ mv -f miniperl miniperl-target
-+ ln -s hostperl miniperl
-+# $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
- !NO!SUBS!
- ;;
- darwin*)
-@@ -620,7 +624,9 @@
- -@rm -f miniperl.xok
- $(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o miniperl \
- miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(LLIBPERL) $(libs)
-- $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
-+ mv -f miniperl miniperl-target
-+ ln -s hostperl miniperl
-+# $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
- !NO!SUBS!
- ;;
- *)
-@@ -629,7 +635,9 @@
- -@rm -f miniperl.xok
- $(LDLIBPTH) $(CC) $(CLDFLAGS) -o miniperl \
- miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(LLIBPERL) $(libs)
-- $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
-+ mv -f miniperl miniperl-target
-+ ln -s hostperl miniperl
-+# $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
- !NO!SUBS!
- ;;
- esac
-@@ -766,7 +774,7 @@
- # We need to autosplit in two steps because VOS can't handle so many args
- #
- .PHONY: preplibrary
--preplibrary: miniperl$(EXE_EXT) $(CONFIGPM) lib/lib.pm $(PREPLIBRARY_LIBPERL)
-+preplibrary: $(CONFIGPM) lib/lib.pm $(PREPLIBRARY_LIBPERL)
- @sh ./makedir lib/auto
- @echo " AutoSplitting perl library"
- $(LDLIBPTH) ./miniperl -Ilib -e 'use AutoSplit; \
-@@ -775,35 +783,35 @@
- autosplit_lib_modules(@ARGV)' lib/*/*.pm
- $(MAKE) lib/re.pm
-
--lib/Config.pod: config.sh miniperl$(EXE_EXT) configpm Porting/Glossary
-+lib/Config.pod: config.sh configpm Porting/Glossary
- $(LDLIBPTH) ./miniperl -Ilib configpm --heavy=lib/Config_heavy.pl lib/Config.pm
-
- $(CONFIGPM): lib/Config.pod
-
--lib/ExtUtils/Miniperl.pm: miniperlmain.c miniperl$(EXE_EXT) minimod.pl $(CONFIGPM)
-+lib/ExtUtils/Miniperl.pm: miniperlmain.c minimod.pl $(CONFIGPM)
- $(LDLIBPTH) ./miniperl minimod.pl > lib/ExtUtils/Miniperl.pm
-
- lib/re.pm: ext/re/re.pm
- cp ext/re/re.pm lib/re.pm
-
--$(plextract): miniperl$(EXE_EXT) $(CONFIGPM) x2p/s2p
-+$(plextract): $(CONFIGPM) x2p/s2p
- @-rm -f $@
- $(LDLIBPTH) ./miniperl -I`pwd`/lib $@.PL
-
--x2p/s2p: miniperl$(EXE_EXT) $(CONFIGPM) x2p/s2p.PL
-+x2p/s2p: $(CONFIGPM) x2p/s2p.PL
- cd x2p; $(LDLIBPTH) $(MAKE) s2p
-
--lib/lib.pm: miniperl$(EXE_EXT) $(CONFIGPM)
-+lib/lib.pm: $(CONFIGPM)
- @-rm -f $@
- $(LDLIBPTH) ./miniperl -Ilib lib/lib_pm.PL
-
- unidatafiles $(unidatafiles): uni.data
-
--uni.data: miniperl$(EXE_EXT) $(CONFIGPM) lib/unicore/mktables
-+uni.data: $(CONFIGPM) lib/unicore/mktables
- cd lib/unicore && $(LDLIBPTH) ../../miniperl -I../../lib mktables -w
- touch uni.data
-
--extra.pods: miniperl$(EXE_EXT)
-+extra.pods:
- -@test -f extra.pods && rm -f `cat extra.pods`
- -@rm -f extra.pods
- -@for x in `grep -l '^=[a-z]' README.* | grep -v README.vms` ; do \
-@@ -850,18 +858,7 @@
- INSTALL_DEPENDENCE = all
-
- install.perl: $(INSTALL_DEPENDENCE) installperl
-- if [ -n "$(COMPILE)" ]; \
-- then \
-- cd utils; $(MAKE) compile; \
-- cd ../x2p; $(MAKE) compile; \
-- cd ../pod; $(MAKE) compile; \
-- else :; \
-- fi
-- $(LDLIBPTH) ./perl installperl --destdir=$(DESTDIR) $(INSTALLFLAGS) $(STRIPFLAGS)
-- $(MAKE) extras.install
--
--install.man: all installman
-- $(LDLIBPTH) ./perl installman --destdir=$(DESTDIR) $(INSTALLFLAGS)
-+ ./hostperl -Ifake_config_library -Ilib -MConfig installperl --destdir=$(DESTDIR) $(INSTALLFLAGS) $(STRIPFLAGS)
-
- # XXX Experimental. Hardwired values, but useful for testing.
- # Eventually Configure could ask for some of these values.
-@@ -978,16 +975,16 @@
- #
- # DynaLoader may be needed for extensions that use Makefile.PL.
-
--$(DYNALOADER): miniperl$(EXE_EXT) preplibrary FORCE
-+$(DYNALOADER): preplibrary FORCE
- @$(LDLIBPTH) sh ext/util/make_ext $(STATIC) $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
-
--d_dummy $(dynamic_ext): miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE
-+d_dummy $(dynamic_ext): preplibrary $(DYNALOADER) FORCE
- @$(LDLIBPTH) sh ext/util/make_ext dynamic $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
-
--s_dummy $(static_ext): miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE
-+s_dummy $(static_ext): preplibrary $(DYNALOADER) FORCE
- @$(LDLIBPTH) sh ext/util/make_ext $(STATIC) $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
-
--n_dummy $(nonxs_ext): miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE
-+n_dummy $(nonxs_ext): preplibrary $(DYNALOADER) FORCE
- @$(LDLIBPTH) sh ext/util/make_ext nonxs $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
-
- .PHONY: clean _tidy _mopup _cleaner1 _cleaner2 \
-@@ -1125,7 +1122,7 @@
-
- test_prep_pre: preplibrary utilities $(nonxs_ext)
-
--test_prep: test_prep_pre miniperl$(EXE_EXT) $(unidatafiles) perl$(EXE_EXT) $(dynamic_ext) $(TEST_PERL_DLL)
-+test_prep: test_prep_pre $(unidatafiles) perl$(EXE_EXT) $(dynamic_ext) $(TEST_PERL_DLL)
- PERL=./perl $(MAKE) _test_prep
-
- _test_tty:
-@@ -1238,7 +1235,7 @@
-
- # Can't depend on lib/Config.pm because that might be where miniperl
- # is crashing.
--minitest: miniperl$(EXE_EXT) lib/re.pm minitest.prep
-+minitest: lib/re.pm minitest.prep
- - cd t && (rm -f perl$(EXE_EXT); $(LNS) ../miniperl$(EXE_EXT) perl$(EXE_EXT)) \
- && $(LDLIBPTH) ./perl TEST -minitest base/*.t comp/*.t cmd/*.t run/*.t io/*.t op/*.t uni/*.t </dev/tty
-
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/Makefile.patch b/meta/recipes-devtools/perl/perl-5.8.8/Makefile.patch
deleted file mode 100644
index ed494b3287..0000000000
--- a/meta/recipes-devtools/perl/perl-5.8.8/Makefile.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-Index: perl-5.8.8/Cross/Makefile
-===================================================================
---- perl-5.8.8.orig/Cross/Makefile 2004-01-12 21:44:01.000000000 +0100
-+++ perl-5.8.8/Cross/Makefile 2007-08-15 00:15:18.000000000 +0200
-@@ -2,7 +2,8 @@
- #
- ## $Id: Makefile,v 1.7 2004/01/12 15:41:02 red Exp red $
-
--export TOPDIR=${shell pwd}
-+override TOPDIR=${shell pwd}
-+export TOPDIR
- include $(TOPDIR)/config
- export CFLAGS
- export SYS=$(ARCH)-$(OS)
-@@ -12,7 +13,7 @@
-
- export CC = $(CROSS)gcc
- export CXX = $(CROSS)g++
--export LD = $(CROSS)ld
-+export LD = $(CC)
- export STRIP = $(CROSS)strip
- export AR = $(CROSS)ar
- export RANLIB = $(CROSS)ranlib
-@@ -34,21 +35,6 @@
- all:
- @echo Please read the README file before doing anything else.
-
--gen_patch:
-- diff -Bbur ../Makefile.SH Makefile.SH > Makefile.SH.patch
-- diff -Bbur ../installperl installperl > installperl.patch
--
--patch:
-- cd .. ; if [ ! -e ./CROSS_PATCHED ] ; then \
-- patch -p1 < Cross/Makefile.SH.patch; \
-- patch -p1 < Cross/installperl.patch ; mv installperl installperl-patched; \
-- sed -e 's/XXSTRIPXX/$(SYS)/' installperl-patched > installperl; \
-- touch CROSS_PATCHED ; fi
--
--dry_patch:
-- cd .. ; patch --dry-run -p1 < Cross/Makefile.SH.patch; \
-- patch --dry-run -p1 < Cross/installperl.patch; \
--
- perl:
- @echo Perl cross-build directory is $(TOPDIR)
- @echo Target arch is $(SYS)
-@@ -58,11 +44,11 @@
- $(TOPDIR)/generate_config_sh config.sh-$(SYS) > $(TOPDIR)/../config.sh
- cd $(TOPDIR)/.. ; ./Configure -S ; make depend ; make ; make more
- cd $(TOPDIR)/.. ; mkdir -p fake_config_library ; cp lib/Config.pm fake_config_library
-- cd $(TOPDIR)/.. ; $(MAKE) more2 "PERLRUN=/usr/bin/perl -I$(TOPDIR)/../fake_config_library -MConfig"
-- cd $(TOPDIR)/.. ; $(MAKE) more3 "PERLRUN=/usr/bin/perl -I$(TOPDIR)/../fake_config_library -MConfig"
-- cd $(TOPDIR)/.. ; $(MAKE) more4 "PERLRUN=/usr/bin/perl -I$(TOPDIR)/../fake_config_library -MConfig"
-+ cd $(TOPDIR)/.. ; $(MAKE) more2 "PERLRUN=hostperl -I$(TOPDIR)/../fake_config_library -MConfig"
-+ cd $(TOPDIR)/.. ; $(MAKE) more3 "PERLRUN=hostperl -I$(TOPDIR)/../fake_config_library -MConfig"
-+ cd $(TOPDIR)/.. ; $(MAKE) more4 "PERLRUN=hostperl -I$(TOPDIR)/../fake_config_library -MConfig"
- cd $(TOPDIR)/.. ; rm -rf install_me_here
-- cd $(TOPDIR)/.. ; make install-strip
-+# cd $(TOPDIR)/.. ; make install-strip
- cd $(TOPDIR)/.. ; sh -x Cross/warp
-
-
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/asm-pageh-fix.patch b/meta/recipes-devtools/perl/perl-5.8.8/asm-pageh-fix.patch
deleted file mode 100644
index 41f3b1d23c..0000000000
--- a/meta/recipes-devtools/perl/perl-5.8.8/asm-pageh-fix.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Perl inclues asm/page.h in order to get the definition for getpagesize which
-has been definied in unistd.h since glibc 2.1. Some recent version of linux
-libc headers removed the asm/page.h resulting in failures here for some
-people.
-
-Index: perl-5.8.8/ext/IPC/SysV/SysV.xs
-===================================================================
---- perl-5.8.8.orig/ext/IPC/SysV/SysV.xs 2001-07-01 04:46:07.000000000 +1000
-+++ perl-5.8.8/ext/IPC/SysV/SysV.xs 2007-07-06 11:40:21.000000000 +1000
-@@ -3,9 +3,6 @@
- #include "XSUB.h"
-
- #include <sys/types.h>
--#ifdef __linux__
--# include <asm/page.h>
--#endif
- #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
- #ifndef HAS_SEM
- # include <sys/ipc.h>
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/config.sh b/meta/recipes-devtools/perl/perl-5.8.8/config.sh
deleted file mode 100644
index 3d4c193a3d..0000000000
--- a/meta/recipes-devtools/perl/perl-5.8.8/config.sh
+++ /dev/null
@@ -1,1020 +0,0 @@
-#!/bin/sh
-#
-# This file was produced by running the Configure script. It holds all the
-# definitions figured out by Configure. Should you modify one of these values,
-# do not forget to propagate your changes by running "Configure -der". You may
-# instead choose to run each of the .SH files by yourself, or "Configure -S".
-#
-
-# Package name : perl5
-# Source directory : .
-# Configuration time: Thu Apr 5 19:20:23 EST 2007
-# Configured by : Open Embedded
-# Target system : linux birgitte 2.6.21-rc5 #63 tue mar 27 14:41:54 est 2007 i686 gnulinux
-
-Author=''
-Date='$Date'
-Header=''
-Id='$Id'
-Locker=''
-Log='$Log'
-Mcc='Mcc'
-RCSfile='$RCSfile'
-Revision='$Revision'
-Source=''
-State=''
-_a='.a'
-_exe=''
-_o='.o'
-afs='false'
-afsroot='/afs'
-ansi2knr=''
-aphostname=''
-api_revision='5'
-api_subversion='0'
-api_version='8'
-api_versionstring='5.8.0'
-ar='ar'
-archlib='/usr/lib/perl/5.8'
-archlibexp='/usr/lib/perl/5.8'
-archname64=''
-archname='@ARCH@-thread-multi'
-archobjs=''
-asctime_r_proto='REENTRANT_PROTO_B_SB'
-awk='awk'
-baserev='5.0'
-bash=''
-bin='/usr/bin'
-binexp='/usr/bin'
-bison='bison'
-byacc='byacc'
-c=''
-castflags='0'
-cat='cat'
-cc='gcc'
-cccdlflags='-fPIC'
-ccdlflags='-Wl,-E'
-ccname='gcc'
-ccversion=''
-cf_by='Open Embedded'
-cf_email='Open Embedded@localhost.localdomain'
-cf_time='Thu Apr 5 23:06:39 EST 2007'
-charsize='1'
-chgrp=''
-chmod='chmod'
-chown=''
-clocktype='clock_t'
-comm='comm'
-compress=''
-contains='grep'
-cp='cp'
-cpio=''
-cpp='cpp'
-cpp_stuff='42'
-cpplast='-'
-cppminus='-'
-cpprun='gcc -E'
-cppstdin='gcc -E'
-crypt_r_proto='REENTRANT_PROTO_B_CCS'
-cryptlib=''
-csh='csh'
-ctermid_r_proto='0'
-ctime_r_proto='REENTRANT_PROTO_B_SB'
-d_Gconvert='gcvt((x),(n),(b))'
-d_PRIEUldbl='define'
-d_PRIFUldbl='define'
-d_PRIGUldbl='define'
-d_PRIXU64='define'
-d_PRId64='define'
-d_PRIeldbl='define'
-d_PRIfldbl='define'
-d_PRIgldbl='define'
-d_PRIi64='define'
-d_PRIo64='define'
-d_PRIu64='define'
-d_PRIx64='define'
-d_SCNfldbl='define'
-d__fwalk='undef'
-d_access='define'
-d_accessx='undef'
-d_aintl='undef'
-d_alarm='define'
-d_archlib='define'
-d_asctime_r='define'
-d_atolf='undef'
-d_atoll='define'
-d_attribute_format='define'
-d_attribute_malloc='define'
-d_attribute_nonnull='define'
-d_attribute_noreturn='define'
-d_attribute_pure='define'
-d_attribute_unused='define'
-d_attribute_warn_unused_result='undef'
-d_bcmp='define'
-d_bcopy='define'
-d_bsd='undef'
-d_bsdgetpgrp='undef'
-d_bsdsetpgrp='undef'
-d_bzero='define'
-d_casti32='undef'
-d_castneg='define'
-d_charvspr='define'
-d_chown='define'
-d_chroot='define'
-d_chsize='undef'
-d_class='undef'
-d_clearenv='define'
-d_closedir='define'
-d_cmsghdr_s='define'
-d_const='define'
-d_copysignl='define'
-d_crypt='define'
-d_crypt_r='define'
-d_csh='undef'
-d_ctermid_r='undef'
-d_ctime_r='define'
-d_cuserid='define'
-d_dbl_dig='define'
-d_dbminitproto='undef'
-d_difftime='define'
-d_dirfd='define'
-d_dirnamlen='undef'
-d_dlerror='define'
-d_dlopen='define'
-d_dlsymun='undef'
-d_dosuid='undef'
-d_drand48_r='define'
-d_drand48proto='define'
-d_dup2='define'
-d_eaccess='undef'
-d_endgrent='define'
-d_endgrent_r='undef'
-d_endhent='define'
-d_endhostent_r='undef'
-d_endnent='define'
-d_endnetent_r='undef'
-d_endpent='define'
-d_endprotoent_r='undef'
-d_endpwent='define'
-d_endpwent_r='undef'
-d_endsent='define'
-d_endservent_r='undef'
-d_eofnblk='define'
-d_eunice='undef'
-d_faststdio='undef'
-d_fchdir='define'
-d_fchmod='define'
-d_fchown='define'
-d_fcntl='define'
-d_fcntl_can_lock='define'
-d_fd_macros='define'
-d_fd_set='define'
-d_fds_bits='define'
-d_fgetpos='define'
-d_finite='define'
-d_finitel='define'
-d_flexfnam='define'
-d_flock='define'
-d_flockproto='define'
-d_fork='define'
-d_fp_class='undef'
-d_fpathconf='define'
-d_fpclass='undef'
-d_fpclassify='undef'
-d_fpclassl='undef'
-d_fpos64_t='undef'
-d_frexpl='define'
-d_fs_data_s='undef'
-d_fseeko='define'
-d_fsetpos='define'
-d_fstatfs='define'
-d_fstatvfs='define'
-d_fsync='define'
-d_ftello='define'
-d_ftime='undef'
-d_futimes='define'
-d_getcwd='define'
-d_getespwnam='undef'
-d_getfsstat='undef'
-d_getgrent='define'
-d_getgrent_r='define'
-d_getgrgid_r='define'
-d_getgrnam_r='define'
-d_getgrps='define'
-d_gethbyaddr='define'
-d_gethbyname='define'
-d_gethent='define'
-d_gethname='define'
-d_gethostbyaddr_r='define'
-d_gethostbyname_r='define'
-d_gethostent_r='define'
-d_gethostprotos='define'
-d_getitimer='define'
-d_getlogin='define'
-d_getlogin_r='define'
-d_getmnt='undef'
-d_getmntent='define'
-d_getnbyaddr='define'
-d_getnbyname='define'
-d_getnent='define'
-d_getnetbyaddr_r='define'
-d_getnetbyname_r='define'
-d_getnetent_r='define'
-d_getnetprotos='define'
-d_getpagsz='define'
-d_getpbyname='define'
-d_getpbynumber='define'
-d_getpent='define'
-d_getpgid='define'
-d_getpgrp2='undef'
-d_getpgrp='define'
-d_getppid='define'
-d_getprior='define'
-d_getprotobyname_r='define'
-d_getprotobynumber_r='define'
-d_getprotoent_r='define'
-d_getprotoprotos='define'
-d_getprpwnam='undef'
-d_getpwent='define'
-d_getpwent_r='define'
-d_getpwnam_r='define'
-d_getpwuid_r='define'
-d_getsbyname='define'
-d_getsbyport='define'
-d_getsent='define'
-d_getservbyname_r='define'
-d_getservbyport_r='define'
-d_getservent_r='define'
-d_getservprotos='define'
-d_getspnam='define'
-d_getspnam_r='undef'
-d_gettimeod='define'
-d_gmtime_r='define'
-d_gnulibc='define'
-d_grpasswd='define'
-d_hasmntopt='define'
-d_htonl='define'
-d_ilogbl='define'
-d_index='undef'
-d_inetaton='define'
-d_int64_t='define'
-d_isascii='define'
-d_isfinite='undef'
-d_isinf='define'
-d_isnan='define'
-d_isnanl='define'
-d_killpg='define'
-d_lchown='define'
-d_ldbl_dig='define'
-d_libm_lib_version='define'
-d_link='define'
-d_localtime_r='define'
-d_locconv='define'
-d_lockf='define'
-d_longdbl='define'
-d_longlong='define'
-d_lseekproto='define'
-d_lstat='define'
-d_madvise='define'
-d_malloc_good_size='undef'
-d_malloc_size='undef'
-d_mblen='define'
-d_mbstowcs='define'
-d_mbtowc='define'
-d_memchr='define'
-d_memcmp='define'
-d_memcpy='define'
-d_memmove='define'
-d_memset='define'
-d_mkdir='define'
-d_mkdtemp='define'
-d_mkfifo='define'
-d_mkstemp='define'
-d_mkstemps='undef'
-d_mktime='define'
-d_mmap='define'
-d_modfl='define'
-d_modfl_pow32_bug='undef'
-d_modflproto='define'
-d_mprotect='define'
-d_msg='define'
-d_msg_ctrunc='define'
-d_msg_dontroute='define'
-d_msg_oob='define'
-d_msg_peek='define'
-d_msg_proxy='define'
-d_msgctl='define'
-d_msgget='define'
-d_msghdr_s='define'
-d_msgrcv='define'
-d_msgsnd='define'
-d_msync='define'
-d_munmap='define'
-d_mymalloc='undef'
-d_nice='define'
-d_nl_langinfo='define'
-d_nv_zero_is_allbits_zero='define'
-d_off64_t='define'
-d_old_pthread_create_joinable='undef'
-d_oldpthreads='undef'
-d_oldsock='undef'
-d_open3='define'
-d_pathconf='define'
-d_pause='define'
-d_perl_otherlibdirs='define'
-d_phostname='undef'
-d_pipe='define'
-d_poll='define'
-d_portable='define'
-d_procselfexe='define'
-d_pthread_atfork='define'
-d_pthread_attr_setscope='define'
-d_pthread_yield='define'
-d_pwage='undef'
-d_pwchange='undef'
-d_pwclass='undef'
-d_pwcomment='undef'
-d_pwexpire='undef'
-d_pwgecos='define'
-d_pwpasswd='define'
-d_pwquota='undef'
-d_qgcvt='define'
-d_quad='define'
-d_random_r='define'
-d_readdir64_r='define'
-d_readdir='define'
-d_readdir_r='define'
-d_readlink='define'
-d_readv='define'
-d_recvmsg='define'
-d_rename='define'
-d_rewinddir='define'
-d_rmdir='define'
-d_safebcpy='undef'
-d_safemcpy='undef'
-d_sanemcmp='define'
-d_sbrkproto='define'
-d_scalbnl='define'
-d_sched_yield='define'
-d_scm_rights='define'
-d_seekdir='define'
-d_select='define'
-d_sem='define'
-d_semctl='define'
-d_semctl_semid_ds='define'
-d_semctl_semun='define'
-d_semget='define'
-d_semop='define'
-d_sendmsg='define'
-d_setegid='define'
-d_seteuid='define'
-d_setgrent='define'
-d_setgrent_r='undef'
-d_setgrps='define'
-d_sethent='define'
-d_sethostent_r='undef'
-d_setitimer='define'
-d_setlinebuf='define'
-d_setlocale='define'
-d_setlocale_r='undef'
-d_setnent='define'
-d_setnetent_r='undef'
-d_setpent='define'
-d_setpgid='define'
-d_setpgrp2='undef'
-d_setpgrp='define'
-d_setprior='define'
-d_setproctitle='undef'
-d_setprotoent_r='undef'
-d_setpwent='define'
-d_setpwent_r='undef'
-d_setregid='define'
-d_setresgid='define'
-d_setresuid='define'
-d_setreuid='define'
-d_setrgid='undef'
-d_setruid='undef'
-d_setsent='define'
-d_setservent_r='undef'
-d_setsid='define'
-d_setvbuf='define'
-d_sfio='undef'
-d_shm='define'
-d_shmat='define'
-d_shmatprototype='define'
-d_shmctl='define'
-d_shmdt='define'
-d_shmget='define'
-d_sigaction='define'
-d_sigprocmask='define'
-d_sigsetjmp='define'
-d_sockatmark='define'
-d_sockatmarkproto='define'
-d_socket='define'
-d_socklen_t='define'
-d_sockpair='define'
-d_socks5_init='undef'
-d_sprintf_returns_strlen='define'
-d_sqrtl='define'
-d_srand48_r='define'
-d_srandom_r='define'
-d_sresgproto='define'
-d_sresuproto='define'
-d_statblks='define'
-d_statfs_f_flags='undef'
-d_statfs_s='define'
-d_statvfs='define'
-d_stdio_cnt_lval='undef'
-d_stdio_ptr_lval='undef'
-d_stdio_ptr_lval_nochange_cnt='undef'
-d_stdio_ptr_lval_sets_cnt='undef'
-d_stdio_stream_array='undef'
-d_stdiobase='undef'
-d_stdstdio='undef'
-d_strchr='define'
-d_strcoll='define'
-d_strctcpy='define'
-d_strerrm='strerror(e)'
-d_strerror='define'
-d_strerror_r='define'
-d_strftime='define'
-d_strlcat='undef'
-d_strlcpy='undef'
-d_strtod='define'
-d_strtol='define'
-d_strtold='define'
-d_strtoll='define'
-d_strtoq='define'
-d_strtoul='define'
-d_strtoull='define'
-d_strtouq='define'
-d_strxfrm='define'
-d_suidsafe='undef'
-d_symlink='define'
-d_syscall='define'
-d_syscallproto='define'
-d_sysconf='define'
-d_sysernlst=''
-d_syserrlst='define'
-d_system='define'
-d_tcgetpgrp='define'
-d_tcsetpgrp='define'
-d_telldir='define'
-d_telldirproto='define'
-d_time='define'
-d_times='define'
-d_tm_tm_gmtoff='define'
-d_tm_tm_zone='define'
-d_tmpnam_r='define'
-d_truncate='define'
-d_ttyname_r='define'
-d_tzname='define'
-d_ualarm='define'
-d_umask='define'
-d_uname='define'
-d_union_semun='undef'
-d_unordered='undef'
-d_unsetenv='define'
-d_usleep='define'
-d_usleepproto='define'
-d_ustat='define'
-d_vendorarch='define'
-d_vendorbin='define'
-d_vendorlib='define'
-d_vendorscript='define'
-d_vfork='undef'
-d_void_closedir='undef'
-d_voidsig='define'
-d_voidtty=''
-d_volatile='define'
-d_vprintf='define'
-d_wait4='define'
-d_waitpid='define'
-d_wcstombs='define'
-d_wctomb='define'
-d_writev='define'
-d_xenix='undef'
-date='date'
-db_hashtype='u_int32_t'
-db_prefixtype='size_t'
-db_version_major=''
-db_version_minor=''
-db_version_patch=''
-defvoidused='15'
-direntrytype='struct dirent'
-dlext='so'
-dlsrc='dl_dlopen.xs'
-doublesize='8'
-drand01='drand48()'
-drand48_r_proto='REENTRANT_PROTO_I_ST'
-dynamic_ext='attrs B ByteLoader Cwd Data/Dumper Devel/DProf Devel/Peek Devel/PPPort Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Opcode PerlIO/encoding PerlIO/scalar PerlIO/via POSIX re GDBM_File SDBM_File Socket Storable Sys/Hostname Sys/Syslog threads Time/HiRes Unicode/Normalize XS/APItest XS/Typemap threads/shared'
-eagain='EAGAIN'
-ebcdic='undef'
-echo='echo'
-egrep='egrep'
-emacs=''
-endgrent_r_proto='0'
-endhostent_r_proto='0'
-endnetent_r_proto='0'
-endprotoent_r_proto='0'
-endpwent_r_proto='0'
-endservent_r_proto='0'
-eunicefix=':'
-exe_ext=''
-expr='expr'
-extensions='attrs B ByteLoader Cwd Data/Dumper Devel/DProf Devel/Peek Devel/PPPort Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Opcode PerlIO/encoding PerlIO/scalar PerlIO/via POSIX re SDBM_File Socket Storable Sys/Hostname Sys/Syslog threads Time/HiRes Unicode/Normalize XS/APItest XS/Typemap threads/shared Errno'
-extras=''
-fflushNULL='define'
-fflushall='undef'
-find=''
-firstmakefile='makefile'
-flex=''
-fpossize='16'
-fpostype='fpos_t'
-freetype='void'
-from=':'
-full_ar='/usr/bin/ar'
-full_csh='/bin/csh'
-full_sed='/bin/sed'
-gccansipedantic=''
-gccosandvers=''
-getgrent_r_proto='REENTRANT_PROTO_I_SBWR'
-getgrgid_r_proto='REENTRANT_PROTO_I_TSBWR'
-getgrnam_r_proto='REENTRANT_PROTO_I_CSBWR'
-gethostbyaddr_r_proto='REENTRANT_PROTO_I_TsISBWRE'
-gethostbyname_r_proto='REENTRANT_PROTO_I_CSBWRE'
-gethostent_r_proto='REENTRANT_PROTO_I_SBWRE'
-getlogin_r_proto='REENTRANT_PROTO_I_BW'
-getnetbyaddr_r_proto='REENTRANT_PROTO_I_uISBWRE'
-getnetbyname_r_proto='REENTRANT_PROTO_I_CSBWRE'
-getnetent_r_proto='REENTRANT_PROTO_I_SBWRE'
-getprotobyname_r_proto='REENTRANT_PROTO_I_CSBWR'
-getprotobynumber_r_proto='REENTRANT_PROTO_I_ISBWR'
-getprotoent_r_proto='REENTRANT_PROTO_I_SBWR'
-getpwent_r_proto='REENTRANT_PROTO_I_SBWR'
-getpwnam_r_proto='REENTRANT_PROTO_I_CSBWR'
-getpwuid_r_proto='REENTRANT_PROTO_I_TSBWR'
-getservbyname_r_proto='REENTRANT_PROTO_I_CCSBWR'
-getservbyport_r_proto='REENTRANT_PROTO_I_ICSBWR'
-getservent_r_proto='REENTRANT_PROTO_I_SBWR'
-gidsign='1'
-gidsize='4'
-gidtype='gid_t'
-glibpth='/usr/shlib /lib /usr/lib /usr/lib/386 /lib/386 /usr/ccs/lib /usr/ucblib /usr/local/lib '
-gmake='gmake'
-gmtime_r_proto='REENTRANT_PROTO_S_TS'
-grep='grep'
-groupcat='cat /etc/group'
-groupstype='gid_t'
-gzip='gzip'
-h_fcntl='false'
-h_sysfile='true'
-hint='recommended'
-hostcat='cat /etc/hosts'
-html1dir=' '
-html1direxp=''
-html3dir=' '
-html3direxp=''
-i16size='2'
-i16type='short'
-i32size='4'
-i64size='8'
-i8size='1'
-i8type='char'
-i_arpainet='define'
-i_bsdioctl=''
-i_crypt='define'
-i_db='undef'
-i_dbm='undef'
-i_dirent='define'
-i_dld='undef'
-i_dlfcn='define'
-i_fcntl='undef'
-i_float='define'
-i_fp='undef'
-i_fp_class='undef'
-i_gdbm='define'
-i_grp='define'
-i_ieeefp='undef'
-i_inttypes='define'
-i_langinfo='define'
-i_libutil='undef'
-i_limits='define'
-i_locale='define'
-i_machcthr='undef'
-i_malloc='define'
-i_math='define'
-i_memory='undef'
-i_mntent='define'
-i_ndbm='undef'
-i_netdb='define'
-i_neterrno='undef'
-i_netinettcp='define'
-i_niin='define'
-i_poll='define'
-i_prot='undef'
-i_pthread='define'
-i_pwd='define'
-i_rpcsvcdbm='undef'
-i_sfio='undef'
-i_sgtty='undef'
-i_shadow='define'
-i_socks='undef'
-i_stdarg='define'
-i_stddef='define'
-i_stdlib='define'
-i_string='define'
-i_sunmath='undef'
-i_sysaccess='undef'
-i_sysdir='define'
-i_sysfile='define'
-i_sysfilio='undef'
-i_sysin='undef'
-i_sysioctl='define'
-i_syslog='define'
-i_sysmman='define'
-i_sysmode='undef'
-i_sysmount='define'
-i_sysndir='undef'
-i_sysparam='define'
-i_sysresrc='define'
-i_syssecrt='undef'
-i_sysselct='define'
-i_syssockio='undef'
-i_sysstat='define'
-i_sysstatfs='define'
-i_sysstatvfs='define'
-i_systime='define'
-i_systimek='undef'
-i_systimes='define'
-i_systypes='define'
-i_sysuio='define'
-i_sysun='define'
-i_sysutsname='define'
-i_sysvfs='define'
-i_syswait='define'
-i_termio='undef'
-i_termios='define'
-i_time='define'
-i_unistd='define'
-i_ustat='define'
-i_utime='define'
-i_values='define'
-i_varargs='undef'
-i_varhdr='stdarg.h'
-i_vfork='undef'
-ignore_versioned_solibs='y'
-inc_version_list=' '
-inc_version_list_init='0'
-incpath=''
-inews=''
-installarchlib='@LIBDIR@/perl/5.8'
-installbin='@BINDIR@'
-installhtml1dir=''
-installhtml3dir=''
-installman1dir='@MANDIR@/man1'
-installman3dir='@MANDIR@/man3'
-installprefix='@PREFIX@'
-installprefixexp='@PREFIX@/usr'
-installprivlib='@DATADIR@/perl/5.8'
-installscript='@BINDIR@'
-installsitearch='@PREFIX@/local/lib/perl/5.8.8'
-installsitebin='@PREFIX@/local/bin'
-installsitehtml1dir=''
-installsitehtml3dir=''
-installsitelib='@PREFIX@/local/share/perl/5.8.8'
-installsiteman1dir='@PREFIX@/local/man/man1'
-installsiteman3dir='@PREFIX@/local/man/man3'
-installsitescript='@PREFIX@/local/bin'
-installstyle='lib/perl5'
-installusrbinperl='define'
-installvendorarch='@LIBDIR@/perl5'
-installvendorbin='@BINDIR@'
-installvendorhtml1dir=''
-installvendorhtml3dir=''
-installvendorlib='@DATADIR@/perl5'
-installvendorman1dir='@MANDIR@/man1'
-installvendorman3dir='@MANDIR@/man3'
-installvendorscript='@BINDIR@'
-intsize='4'
-issymlink='test -h'
-ivdformat='"ld"'
-ivtype='long'
-known_extensions='attrs B ByteLoader Cwd Data/Dumper DB_File Devel/DProf Devel/Peek Devel/PPPort Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call GDBM_File I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode PerlIO/encoding PerlIO/scalar PerlIO/via POSIX re SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread threads Time/HiRes Unicode/Normalize XS/APItest XS/Typemap threads/shared'
-ksh=''
-ld='gcc'
-lddlflags='-shared -L/usr/local/lib'
-ldflags=' -L/usr/local/lib'
-ldflags_uselargefiles=''
-ldlibpthname='LD_LIBRARY_PATH'
-less='less'
-lib_ext='.a'
-libperl='libperl.so'
-libpth='/usr/local/lib /lib /usr/lib'
-line=''
-lint=''
-lkflags=''
-ln='ln'
-lns='/bin/ln -s'
-localtime_r_proto='REENTRANT_PROTO_S_TS'
-locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include'
-loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib'
-longlongsize='8'
-lp=''
-lpr=''
-ls='ls'
-lseeksize='8'
-lseektype='off_t'
-mail=''
-mailx=''
-make='make'
-make_set_make='#'
-mallocobj=''
-mallocsrc=''
-malloctype='void *'
-man1dir='/usr/share/man/man1'
-man1direxp='/usr/share/man/man1'
-man1ext='1'
-man3dir='/usr/share/man/man3'
-man3direxp='/usr/share/man/man3'
-man3ext='3pm'
-mips_type=''
-mistrustnm=''
-mkdir='mkdir'
-mmaptype='void *'
-modetype='mode_t'
-more='more'
-multiarch='undef'
-mv=''
-myarchname='@ARCH@'
-mydomain='.localdomain'
-myhostname='localhost'
-n='-n'
-need_va_copy='undef'
-netdb_hlen_type='size_t'
-netdb_host_type='const void *'
-netdb_name_type='const char *'
-netdb_net_type='in_addr_t'
-nm='nm'
-nm_opt=''
-nm_so_opt='--dynamic'
-nonxs_ext='Errno'
-nroff='nroff'
-nvEUformat='"E"'
-nvFUformat='"F"'
-nvGUformat='"G"'
-nveformat='"e"'
-nvfformat='"f"'
-nvgformat='"g"'
-nvsize='8'
-nvtype='double'
-o_nonblock='O_NONBLOCK'
-obj_ext='.o'
-old_pthread_create_joinable=''
-optimize='-O2'
-orderlib='false'
-osname='linux'
-otherlibdirs=' '
-package='perl5'
-pager='/usr/bin/less -isr'
-passcat='cat /etc/passwd'
-patchlevel='8'
-path_sep=':'
-perl5='hostperl'
-perl=''
-perl_patchlevel=''
-perladmin='root@localhost'
-perllibs='-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc'
-perlpath='hostperl'
-pg='pg'
-phostname=''
-pidtype='pid_t'
-plibpth=''
-pmake=''
-pr=''
-prefix='/usr'
-prefixexp='/usr'
-privlib='/usr/share/perl/5.8'
-privlibexp='/usr/share/perl/5.8'
-procselfexe='"/proc/self/exe"'
-prototype='define'
-randbits='48'
-randfunc='drand48'
-random_r_proto='REENTRANT_PROTO_I_St'
-randseedtype='long'
-ranlib=':'
-rd_nodata='-1'
-readdir64_r_proto='REENTRANT_PROTO_I_TSR'
-readdir_r_proto='REENTRANT_PROTO_I_TSR'
-revision='5'
-rm='rm'
-rmail=''
-run=''
-runnm='false'
-sPRIEUldbl='"LE"'
-sPRIFUldbl='"LF"'
-sPRIGUldbl='"LG"'
-sPRIeldbl='"Le"'
-sPRIfldbl='"Lf"'
-sPRIgldbl='"Lg"'
-sSCNfldbl='"Lf"'
-sched_yield='sched_yield()'
-scriptdir='/usr/bin'
-scriptdirexp='/usr/bin'
-sed='sed'
-seedfunc='srand48'
-selecttype='fd_set *'
-sendmail=''
-setgrent_r_proto='0'
-sethostent_r_proto='0'
-setlocale_r_proto='0'
-setnetent_r_proto='0'
-setprotoent_r_proto='0'
-setpwent_r_proto='0'
-setservent_r_proto='0'
-sh='/bin/sh'
-shar=''
-sharpbang='#!'
-shmattype='void *'
-shortsize='2'
-shrpenv=''
-shsharp='true'
-sig_count='65'
-sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 6 17 29 31 '
-sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 31, 0'
-sig_size='69'
-sig_name='ZERO HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS NUM32 NUM33 RTMIN NUM35 NUM36 NUM37 NUM38 NUM39 NUM40 NUM41 NUM42 NUM43 NUM44 NUM45 NUM46 NUM47 NUM48 NUM49 NUM50 NUM51 NUM52 NUM53 NUM54 NUM55 NUM56 NUM57 NUM58 NUM59 NUM60 NUM61 NUM62 NUM63 RTMAX IOT CLD POLL UNUSED '
-sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "BUS", "FPE", "KILL", "USR1", "SEGV", "USR2", "PIPE", "ALRM", "TERM", "STKFLT", "CHLD", "CONT", "STOP", "TSTP", "TTIN", "TTOU", "URG", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "IO", "PWR", "SYS", "NUM32", "NUM33", "RTMIN", "NUM35", "NUM36", "NUM37", "NUM38", "NUM39", "NUM40", "NUM41", "NUM42", "NUM43", "NUM44", "NUM45", "NUM46", "NUM47", "NUM48", "NUM49", "NUM50", "NUM51", "NUM52", "NUM53", "NUM54", "NUM55", "NUM56", "NUM57", "NUM58", "NUM59", "NUM60", "NUM61", "NUM62", "NUM63", "RTMAX", "IOT", "CLD", "POLL", "UNUSED", 0'
-signal_t='void'
-sitearch='/usr/local/lib/perl/5.8.8'
-sitearchexp='/usr/local/lib/perl/5.8.8'
-sitebin='/usr/local/bin'
-sitebinexp='/usr/local/bin'
-sitehtml1dir=''
-sitehtml1direxp=''
-sitehtml3dir=''
-sitehtml3direxp=''
-sitelib='/usr/local/share/perl/5.8.8'
-sitelib_stem=''
-sitelibexp='/usr/local/share/perl/5.8.8'
-siteman1dir='/usr/local/man/man1'
-siteman1direxp='/usr/local/man/man1'
-siteman3dir='/usr/local/man/man3'
-siteman3direxp='/usr/local/man/man3'
-siteprefix='/usr/local'
-siteprefixexp='/usr/local'
-sitescript='/usr/local/bin'
-sitescriptexp='/usr/local/bin'
-sizetype='size_t'
-sleep=''
-smail=''
-so='so'
-sockethdr=''
-socketlib=''
-socksizetype='socklen_t'
-sort='sort'
-spackage='Perl5'
-spitshell='cat'
-srand48_r_proto='REENTRANT_PROTO_I_LS'
-srandom_r_proto='REENTRANT_PROTO_I_TS'
-src='.'
-ssizetype='ssize_t'
-startperl='#!/usr/bin/perl'
-startsh='#!/bin/sh'
-static_ext=' '
-stdchar='char'
-stdio_base='((fp)->_IO_read_base)'
-stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)'
-stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
-stdio_filbuf=''
-stdio_ptr='((fp)->_IO_read_ptr)'
-stdio_stream_array=''
-strerror_r_proto='REENTRANT_PROTO_B_IBW'
-strings='/usr/include/string.h'
-submit=''
-subversion='8'
-sysman='/usr/share/man/man1'
-tail=''
-tar=''
-targetarch=''
-tbl=''
-tee=''
-test='test'
-timeincl='/usr/include/sys/time.h /usr/include/time.h '
-timetype='time_t'
-tmpnam_r_proto='REENTRANT_PROTO_B_B'
-to=':'
-touch='touch'
-tr='tr'
-trnl='\n'
-troff=''
-ttyname_r_proto='REENTRANT_PROTO_I_IBW'
-u16size='2'
-u16type='unsigned short'
-u32size='4'
-u64size='8'
-u8size='1'
-u8type='unsigned char'
-uidsign='1'
-uidsize='4'
-uidtype='uid_t'
-uname='uname'
-uniq='uniq'
-use5005threads='undef'
-usecrosscompile='undef'
-usedl='define'
-usefaststdio='define'
-useithreads='define'
-uselargefiles='define'
-uselongdouble='undef'
-usemallocwrap='define'
-usemorebits='undef'
-usemultiplicity='define'
-usemymalloc='n'
-usenm='false'
-useopcode='true'
-useperlio='define'
-useposix='true'
-usereentrant='undef'
-usesfio='false'
-useshrplib='true'
-usesitecustomize='undef'
-usesocks='undef'
-usethreads='define'
-usevendorprefix='define'
-usevfork='false'
-usrinc='/usr/include'
-uuname=''
-uvXUformat='"lX"'
-uvoformat='"lo"'
-uvtype='unsigned long'
-uvuformat='"lu"'
-uvxformat='"lx"'
-vendorarch='/usr/lib/perl5'
-vendorarchexp='/usr/lib/perl5'
-vendorbin='/usr/bin'
-vendorbinexp='/usr/bin'
-vendorhtml1dir=' '
-vendorhtml1direxp=''
-vendorhtml3dir=' '
-vendorhtml3direxp=''
-vendorlib='/usr/share/perl5'
-vendorlib_stem=''
-vendorlibexp='/usr/share/perl5'
-vendorman1dir='/usr/share/man/man1'
-vendorman1direxp='/usr/share/man/man1'
-vendorman3dir='/usr/share/man/man3'
-vendorman3direxp='/usr/share/man/man3'
-vendorprefix='/usr'
-vendorprefixexp='/usr'
-vendorscript='/usr/bin'
-vendorscriptexp='/usr/bin'
-version='5.8.8'
-version_patchlevel_string='version 8 subversion 8'
-versiononly='undef'
-vi=''
-voidflags='15'
-xlibpth='/usr/lib/386 /lib/386'
-yacc='yacc'
-yaccflags=''
-zcat=''
-zip='zip'
-# Configure command line arguments.
-config_arg0='Configure'
-config_args='-des -Doptimize=-O2 -Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Open Embedded -Dprefix=/usr -Dvendorprefix=/usr -Dsiteprefix=/usr -Dotherlibdirs=/usr/lib/perl5/5.8.8 -Duseshrplib -Dusethreads -Duseithreads -Duselargefiles -Ud_dosuid -Dd_semctl_semun -Ui_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinstallusrbinperl -Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less -isr'
-config_argc=27
-config_arg1='-des'
-config_arg2='-Doptimize=-O2'
-config_arg3='-Dmyhostname=localhost'
-config_arg4='-Dperladmin=root@localhost'
-config_arg5='-Dcc=gcc'
-config_arg6='-Dcf_by=Open Embedded'
-config_arg7='-Dprefix=/usr'
-config_arg8='-Dvendorprefix=/usr'
-config_arg9='-Dsiteprefix=/usr'
-config_arg10='-Dotherlibdirs=/usr/lib/perl5/5.8.8'
-config_arg11='-Duseshrplib'
-config_arg12='-Dusethreads'
-config_arg13='-Duseithreads'
-config_arg14='-Duselargefiles'
-config_arg15='-Ud_dosuid'
-config_arg16='-Dd_semctl_semun'
-config_arg17='-Ui_db'
-config_arg18='-Ui_ndbm'
-config_arg19='-Di_gdbm'
-config_arg20='-Di_shadow'
-config_arg21='-Di_syslog'
-config_arg22='-Dman3ext=3pm'
-config_arg23='-Duseperlio'
-config_arg24='-Dinstallusrbinperl'
-config_arg25='-Ubincompat5005'
-config_arg26='-Uversiononly'
-config_arg27='-Dpager=/usr/bin/less -isr'
-PERL_REVISION=5
-PERL_VERSION=8
-PERL_SUBVERSION=8
-PERL_API_REVISION=5
-PERL_API_VERSION=8
-PERL_API_SUBVERSION=0
-PERL_PATCHLEVEL=
-PERL_CONFIG_SH=true
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/config.sh-32 b/meta/recipes-devtools/perl/perl-5.8.8/config.sh-32
deleted file mode 100644
index e22d71d8ee..0000000000
--- a/meta/recipes-devtools/perl/perl-5.8.8/config.sh-32
+++ /dev/null
@@ -1,58 +0,0 @@
-alignbytes='4'
-ccflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
-ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
-yaccflags=''
-ccsymbols='__GNUC_PATCHLEVEL__=5'
-cppccsymbols='__GNUC__=3 __GNUC_MINOR__=3'
-cppccsymbols='__GNUC__=3 __GNUC_MINOR__=3'
-cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -I/usr/local/include'
-cppsymbols='__ELF__=1 _FILE_OFFSET_BITS=64 __GLIBC__=2 __GLIBC_MINOR__=3 __GNU_LIBRARY__=6 _GNU_SOURCE=1 i386=1 __i386=1 __i386__=1 __i486=1 __i486__=1 _LARGEFILE64_SOURCE=1 _LARGEFILE_SOURCE=1 linux=1 __linux=1 __linux__=1 _POSIX_C_SOURCE=199506L _POSIX_SOURCE=1 _REENTRANT=1 __STDC__=1 unix=1 __unix=1 __unix__=1 __USE_BSD=1 __USE_FILE_OFFSET64=1 __USE_GNU=1 __USE_LARGEFILE=1 __USE_LARGEFILE64=1 __USE_MISC=1 __USE_POSIX=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_REENTRANT=1 __USE_SVID=1 __USE_UNIX98=1 __USE_XOPEN=1 __USE_XOPEN_EXTENDED=1 _XOPEN_SOURCE=600 _XOPEN_SOURCE_EXTENDED=1'
-d_nv_preserves_uv='define'
-d_u32align='undef'
-gccversion='3.3.5 (Debian 1:3.3.5-13)'
-getspnam_r_proto='0'
-gidformat='"lu"'
-gnulibc_version='2.3.2'
-i32type='long'
-i64type='long long'
-ivsize='4'
-gnulibc_version='2.3.2'
-libc='/lib/libc-2.3.2.so'
-libsfiles=' libnsl.so libdl.so libm.so libcrypt.so libutil.so libpthread.so libc.so'
-libsfound=' /usr/lib/libnsl.so /usr/lib/libdl.so /usr/lib/libm.so /usr/lib/libcrypt.so /usr/lib/libutil.so /usr/lib/libpthread.so /usr/lib/libc.so'
-ignore_versioned_solibs='y'
-libs='-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc'
-libsdirs=' /usr/lib'
-libsfiles=' libnsl.so libdl.so libm.so libcrypt.so libutil.so libpthread.so libc.so'
-libsfound=' /usr/lib/libnsl.so /usr/lib/libdl.so /usr/lib/libm.so /usr/lib/libcrypt.so /usr/lib/libutil.so /usr/lib/libpthread.so /usr/lib/libc.so'
-libspath=' /usr/local/lib /lib /usr/lib'
-libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun m crypt sec util pthread c cposix posix ucb BSD'
-libswanted_uselargefiles=''
-perllibs='-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc'
-libsfiles=' libnsl.so libdl.so libm.so libcrypt.so libutil.so libpthread.so libc.so'
-libsfound=' /usr/lib/libnsl.so /usr/lib/libdl.so /usr/lib/libm.so /usr/lib/libcrypt.so /usr/lib/libutil.so /usr/lib/libpthread.so /usr/lib/libc.so'
-longdblsize='12'
-longlongsize='8'
-longsize='4'
-myuname='linux birgitte 2.6.21-rc5 #63 tue mar 27 14:41:54 est 2007 i686 gnulinux '
-nv_preserves_uv_bits='32'
-osvers='2.6.21-rc5'
-ptrsize='4'
-quadkind='3'
-quadtype='long long'
-uquadtype='unsigned long long'
-sPRIXU64='"LX"'
-sPRId64='"Ld"'
-sPRIi64='"Li"'
-sPRIo64='"Lo"'
-sPRIu64='"Lu"'
-sPRIx64='"Lx"'
-selectminbits='32'
-sizesize='4'
-u32type='unsigned long'
-u64type='unsigned long long'
-uidformat='"lu"'
-uquadtype='unsigned long long'
-use64bitall='undef'
-use64bitint='undef'
-uvsize='4'
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/config.sh-64 b/meta/recipes-devtools/perl/perl-5.8.8/config.sh-64
deleted file mode 100644
index 6e58fa71a3..0000000000
--- a/meta/recipes-devtools/perl/perl-5.8.8/config.sh-64
+++ /dev/null
@@ -1,58 +0,0 @@
-alignbytes='8'
-ccflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -Wdeclaration-after-statement -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
-ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
-yaccflags=''
-ccsymbols=''
-cppccsymbols=''
-cppccsymbols=''
-cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -Wdeclaration-after-statement'
-cppsymbols='__amd64=1 __amd64__=1 __ELF__=1 _FILE_OFFSET_BITS=64 __GLIBC__=2 __GLIBC_MINOR__=4 __GNUC__=4 __GNUC_MINOR__=1 __GNU_LIBRARY__=6 _GNU_SOURCE=1 _LARGEFILE64_SOURCE=1 _LARGEFILE_SOURCE=1 linux=1 __linux=1 __linux__=1 _LP64=1 __LP64__=1 _POSIX_C_SOURCE=199506L _POSIX_SOURCE=1 _REENTRANT=1 __STDC__=1 unix=1 __unix=1 __unix__=1 __USE_BSD=1 __USE_FILE_OFFSET64=1 __USE_GNU=1 __USE_LARGEFILE=1 __USE_LARGEFILE64=1 __USE_MISC=1 __USE_POSIX=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_REENTRANT=1 __USE_SVID=1 __USE_UNIX98=1 __USE_XOPEN=1 __USE_XOPEN_EXTENDED=1 __x86_64=1 __x86_64__=1 _XOPEN_SOURCE=600 _XOPEN_SOURCE_EXTENDED=1'
-d_nv_preserves_uv='undef'
-d_u32align='define'
-gccversion='4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13ubuntu5)'
-getspnam_r_proto='REENTRANT_PROTO_I_CSBWR'
-gidformat='"u"'
-gnulibc_version='2.4'
-i32type='int'
-i64type='long'
-ivsize='8'
-gnulibc_version='2.4'
-libc='/lib/libc-2.4.so'
-libsfiles=' libnsl.so libdb.so libdl.so libm.so libcrypt.so libutil.so libpthread.so libc.so'
-libsfound=' /usr/lib/libnsl.so /usr/lib/libdb.so /usr/lib/libdl.so /usr/lib/libm.so /usr/lib/libcrypt.so /usr/lib/libutil.so /usr/lib/libpthread.so /usr/lib/libc.so'
-ignore_versioned_solibs='y'
-libs='-lnsl -ldb -ldl -lm -lcrypt -lutil -lpthread -lc'
-libsdirs=' /usr/lib'
-libsfiles=' libnsl.so libdb.so libdl.so libm.so libcrypt.so libutil.so libpthread.so libc.so'
-libsfound=' /usr/lib/libnsl.so /usr/lib/libdb.so /usr/lib/libdl.so /usr/lib/libm.so /usr/lib/libcrypt.so /usr/lib/libutil.so /usr/lib/libpthread.so /usr/lib/libc.so'
-libspath=' /usr/local/lib /lib /usr/lib'
-libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun m crypt sec util pthread c cposix posix ucb BSD'
-libswanted_uselargefiles=''
-perllibs='-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc'
-libsfiles=' libnsl.so libdb.so libdl.so libm.so libcrypt.so libutil.so libpthread.so libc.so'
-libsfound=' /usr/lib/libnsl.so /usr/lib/libdb.so /usr/lib/libdl.so /usr/lib/libm.so /usr/lib/libcrypt.so /usr/lib/libutil.so /usr/lib/libpthread.so /usr/lib/libc.so'
-longdblsize='16'
-longlongsize='8'
-longsize='8'
-myuname='linux nynaeve 2.6.20.4 #29 smp thu mar 29 15:35:30 est 2007 x86_64 gnulinux '
-nv_preserves_uv_bits='53'
-osvers='2.6.20.4'
-ptrsize='8'
-quadkind='2'
-quadtype='long'
-uquadtype='unsigned long'
-sPRIXU64='"lX"'
-sPRId64='"ld"'
-sPRIi64='"li"'
-sPRIo64='"lo"'
-sPRIu64='"lu"'
-sPRIx64='"lx"'
-selectminbits='64'
-sizesize='8'
-u32type='unsigned int'
-u64type='unsigned long'
-uidformat='"u"'
-uquadtype='unsigned long'
-use64bitall='define'
-use64bitint='define'
-uvsize='8'
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/installperl.patch b/meta/recipes-devtools/perl/perl-5.8.8/installperl.patch
deleted file mode 100644
index ff52bc3a9c..0000000000
--- a/meta/recipes-devtools/perl/perl-5.8.8/installperl.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Index: perl-5.8.8/installperl
-===================================================================
---- perl-5.8.8.orig/installperl 2007-06-14 12:36:23.000000000 +1000
-+++ perl-5.8.8/installperl 2007-06-14 12:38:39.000000000 +1000
-@@ -3,8 +3,8 @@
- BEGIN {
- require 5.004;
- chdir '..' if !-d 'lib' and -d '../lib';
-- @INC = 'lib';
-- $ENV{PERL5LIB} = 'lib';
-+# @INC = 'lib';
-+# $ENV{PERL5LIB} = 'lib';
- }
-
- use strict;
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/makedepend-dash.patch b/meta/recipes-devtools/perl/perl-5.8.8/makedepend-dash.patch
deleted file mode 100644
index 1f15474377..0000000000
--- a/meta/recipes-devtools/perl/perl-5.8.8/makedepend-dash.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: perl-5.8.8/makedepend.SH
-===================================================================
---- perl-5.8.8.orig/makedepend.SH 2007-05-24 12:06:52.000000000 +1000
-+++ perl-5.8.8/makedepend.SH 2007-05-24 12:27:33.000000000 +1000
-@@ -128,7 +128,7 @@
- *.y) filebase=`basename $file .y` ;;
- esac
- case "$file" in
-- */*) finc="-I`echo $file | sed 's#/[^/]*$##`" ;;
-+ */*) finc="-I`echo $file | sed 's#/[^/]*$##'`" ;;
- *) finc= ;;
- esac
- $echo "Finding dependencies for $filebase$_o."
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/native-no-gdbminc.patch b/meta/recipes-devtools/perl/perl-5.8.8/native-no-gdbminc.patch
deleted file mode 100644
index f00fa2cc17..0000000000
--- a/meta/recipes-devtools/perl/perl-5.8.8/native-no-gdbminc.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-If you have a /usr/include/gdbm/ndbm.h host on the header then the configure
-script adds -I/usr/include/gdbm to the ccflags even though gdbm support is
-disabled. Prevent perl from doing this so we don't get cross compile badness
-errors while building perl.
-
---- perl-5.8.8/Configure 2007/05/06 23:42:18 1.1
-+++ perl-5.8.8/Configure 2007/05/06 23:42:48
-@@ -20033,8 +20033,8 @@
- # ndbm.h header in /usr/include/gdbm/ndbm.h.
- if $test -f /usr/include/gdbm/ndbm.h; then
- echo '<gdbm/ndbm.h> found.'
-- ccflags="$ccflags -I/usr/include/gdbm"
-- cppflags="$cppflags -I/usr/include/gdbm"
-+# ccflags="$ccflags -I/usr/include/gdbm"
-+# cppflags="$cppflags -I/usr/include/gdbm"
- t_ndbm=$define
- fi
- ;;
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/native-nopacklist.patch b/meta/recipes-devtools/perl/perl-5.8.8/native-nopacklist.patch
deleted file mode 100644
index a0ba269e00..0000000000
--- a/meta/recipes-devtools/perl/perl-5.8.8/native-nopacklist.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-Part of 52_debian_extutils_hacks.patch just to exclude the installation of .packlist files
-
-diff -Naur --exclude=debian perl-5.8.8.orig/lib/ExtUtils/MM_Unix.pm perl-5.8.8/lib/ExtUtils/MM_Unix.pm
---- perl-5.8.8.orig/lib/ExtUtils/MM_Unix.pm 2005-05-21 19:42:56.000000000 +1000
-+++ perl-5.8.8/lib/ExtUtils/MM_Unix.pm 2006-02-05 17:40:19.000000000 +1100
-@@ -2054,9 +2054,7 @@
- $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
-
- pure_perl_install ::
-- $(NOECHO) $(MOD_INSTALL) \
-- read }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
-- write }.$self->catfile('$(DESTINSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
-+ $(NOECHO) $(MOD_INSTALL) \
- $(INST_LIB) $(DESTINSTALLPRIVLIB) \
- $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
- $(INST_BIN) $(DESTINSTALLBIN) \
-@@ -2081,9 +2079,7 @@
- }.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{
-
- pure_vendor_install ::
-- $(NOECHO) $(MOD_INSTALL) \
-- read }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \
-- write }.$self->catfile('$(DESTINSTALLVENDORARCH)','auto','$(FULLEXT)','.packlist').q{ \
-+ $(NOECHO) $(MOD_INSTALL) \
- $(INST_LIB) $(DESTINSTALLVENDORLIB) \
- $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
- $(INST_BIN) $(DESTINSTALLVENDORBIN) \
-@@ -2092,37 +2088,19 @@
- $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
-
- doc_perl_install ::
-- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
-- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
-- -$(NOECHO) $(DOC_INSTALL) \
-- "Module" "$(NAME)" \
-- "installed into" "$(INSTALLPRIVLIB)" \
-- LINKTYPE "$(LINKTYPE)" \
-- VERSION "$(VERSION)" \
-- EXE_FILES "$(EXE_FILES)" \
-- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
-
- doc_site_install ::
-- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
-- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
-- -$(NOECHO) $(DOC_INSTALL) \
-+ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLSITEARCH)/perllocal.pod
-+ -$(NOECHO) $(MKPATH) $(DESTINSTALLSITEARCH)
-+ -$(NOECHO) $(DOC_INSTALL) \
- "Module" "$(NAME)" \
- "installed into" "$(INSTALLSITELIB)" \
- LINKTYPE "$(LINKTYPE)" \
- VERSION "$(VERSION)" \
- EXE_FILES "$(EXE_FILES)" \
-- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
-+ >> }.$self->catfile('$(DESTINSTALLSITEARCH)','perllocal.pod').q{
-
- doc_vendor_install ::
-- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
-- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
-- -$(NOECHO) $(DOC_INSTALL) \
-- "Module" "$(NAME)" \
-- "installed into" "$(INSTALLVENDORLIB)" \
-- LINKTYPE "$(LINKTYPE)" \
-- VERSION "$(VERSION)" \
-- EXE_FILES "$(EXE_FILES)" \
-- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
-
- };
-
-@@ -2131,13 +2109,12 @@
- $(NOECHO) $(NOOP)
-
- uninstall_from_perldirs ::
-- $(NOECHO) $(UNINSTALL) }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{
-
- uninstall_from_sitedirs ::
- $(NOECHO) $(UNINSTALL) }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{
-
- uninstall_from_vendordirs ::
-- $(NOECHO) $(UNINSTALL) }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{
-+
- };
-
- join("",@m);
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/native-perlinc.patch b/meta/recipes-devtools/perl/perl-5.8.8/native-perlinc.patch
deleted file mode 100644
index 6dc4b9538d..0000000000
--- a/meta/recipes-devtools/perl/perl-5.8.8/native-perlinc.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Index: perl-5.8.8/lib/ExtUtils/MM_Unix.pm
-===================================================================
---- perl-5.8.8.orig/lib/ExtUtils/MM_Unix.pm 2008-10-31 22:01:35.000000000 +0000
-+++ perl-5.8.8/lib/ExtUtils/MM_Unix.pm 2008-11-08 16:01:12.000000000 +0000
-@@ -1597,6 +1597,19 @@
- $self->{PERL_LIB} ||= $Config{privlibexp};
- $self->{PERL_ARCHLIB} ||= $Config{archlibexp};
- $self->{PERL_INC} = $self->catdir("$self->{PERL_ARCHLIB}","CORE"); # wild guess for now
-+ # Check for environment override so we'll find the headers in the correct place
-+ if (defined $ENV{PERL_LIB})
-+ {
-+ $self->{PERL_LIB} = $ENV{PERL_LIB};
-+ }
-+ if (defined $ENV{PERL_ARCHLIB})
-+ {
-+ $self->{PERL_ARCHLIB} = $ENV{PERL_ARCHLIB};
-+ }
-+ if (defined $ENV{PERL_INC})
-+ {
-+ $self->{PERL_INC} = $ENV{PERL_INC};
-+ }
- my $perl_h;
-
- if (not -f ($perl_h = $self->catfile($self->{PERL_INC},"perl.h"))
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/perl-configure.sh b/meta/recipes-devtools/perl/perl-5.8.8/perl-configure.sh
deleted file mode 100755
index 9800394b63..0000000000
--- a/meta/recipes-devtools/perl/perl-5.8.8/perl-configure.sh
+++ /dev/null
@@ -1,43 +0,0 @@
-ls#! /bin/sh
-
-#
-# Generate the common perl configuration
-# Needs to be run on a host that matches the bitsize of the target platform
-#
-
-echo sh Configure -des \
- -Doptimize=-O2 \
- -Dmyhostname=localhost \
- -Dperladmin=root@localhost \
- -Dcc=gcc \
- -Dcf_by='Open Embedded' \
- -Dinstallprefix=@DESTDIR@ \
- -Dprefix=/usr \
- -Dvendorprefix=/usr \
- -Dsiteprefix=/usr \
- -Dotherlibdirs=/usr/lib/perl5/5.8.8 \
- -Duseshrplib \
- -Dusethreads \
- -Duseithreads \
- -Duselargefiles \
- -Ud_dosuid \
- -Dd_semctl_semun \
- -Ui_db \
- -Ui_ndbm \
- -Ui_gdbm \
- -Di_shadow \
- -Di_syslog \
- -Dman3ext=3pm \
- -Duseperlio \
- -Dinstallusrbinperl \
- -Ubincompat5005 \
- -Uversiononly \
- -Dpager='/usr/bin/less -isr'
-
-cp -f config.sh config.sh.COMMON
-
-TARGETOS=$(grep myarchname config.sh.COMMON | sed "s#.*'\(.*\)'.*#\1#")
-
-sed -r -i config.sh.COMMON \
- -e "s#(install.*=')(/usr)/local(.*')#\1@DESTDIR@\2\3#g" \
- -e 's#'$TARGETOS'#@ARCH@#g'
diff --git a/meta/recipes-devtools/perl/perl-5.8.8/perl-dynloader.patch b/meta/recipes-devtools/perl/perl-5.8.8/perl-dynloader.patch
deleted file mode 100644
index e2dc774d5e..0000000000
--- a/meta/recipes-devtools/perl/perl-5.8.8/perl-dynloader.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Allow the location that .so files are searched for for dynamic
-loading to be changed via an environment variable. This is to allow
-us to load .so's from the host system while building for the target
-system.
-
---- perl-5.8.8/ext/DynaLoader/XSLoader_pm.PL 2007/04/20 09:03:08 1.1
-+++ perl-5.8.8/ext/DynaLoader/XSLoader_pm.PL 2007/04/20 09:41:28
-@@ -65,6 +65,15 @@
- print OUT <<'EOT';
- my $modpname = join('/',@modparts);
- my $modlibname = (caller())[1];
-+ # OE: Allow env to form dynamic loader to look in a different place
-+ # This is so it finds the host .so files, not the targets
-+ if (defined $ENV{PERLHOSTLIB})
-+ {
-+ my $hostlib = $ENV{PERLHOSTLIB};
-+ print STDERR "*** Module name IN: $modlibname\n";
-+ $modlibname =~ s#(?<!/)(\.\./)*lib/#$hostlib#g;
-+ print STDERR "*** Module name OUT: $modlibname\n";
-+ }
- my $c = @modparts;
- $modlibname =~ s,[\\/][^\\/]+$,, while $c--; # Q&D basename
- my $file = "$modlibname/auto/$modpname/$modfname.$dl_dlext";
diff --git a/meta/recipes-devtools/perl/perl-native_5.12.2.bb b/meta/recipes-devtools/perl/perl-native_5.12.2.bb
new file mode 100644
index 0000000000..fe8dbaaff0
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-native_5.12.2.bb
@@ -0,0 +1,100 @@
+DESCRIPTION = "Perl is a popular scripting language."
+HOMEPAGE = "http://www.perl.org/"
+SECTION = "libs"
+LICENSE = "Artistic|GPL"
+LIC_FILES_CHKSUM = "file://Copying;md5=2b4c6ffbcfcbdee469f02565f253d81a \
+ file://Artistic;md5=f921793d03cc6d63ec4b15e9be8fd3f8"
+PR = "r4"
+
+LIC_FILES_CHKSUM = "file://Copying;md5=2b4c6ffbcfcbdee469f02565f253d81a \
+ file://Artistic;md5=f921793d03cc6d63ec4b15e9be8fd3f8"
+
+SRC_URI = "http://ftp.funet.fi/pub/CPAN/src/perl-${PV}.tar.gz \
+ file://Configure-multilib.patch;patch=1 \
+ file://perl-configpm-switch.patch;patch=1 \
+ file://native-nopacklist.patch;patch=1 \
+ file://native-perlinc.patch;patch=1"
+
+SRC_URI[md5sum] = "af2df531d46b77fdf0d97eecb03eddb2"
+SRC_URI[sha256sum] = "cf888340021d5a2d1238bbd9b8b55aaf420a848d46e4d317cb8567f86ceb1022"
+
+S = "${WORKDIR}/perl-${PV}"
+
+inherit native
+
+do_configure () {
+ ./Configure \
+ -Dcc="${CC}" \
+ -Dcflags="${CFLAGS}" \
+ -Dldflags="${LDFLAGS}" \
+ -Dcf_by="Open Embedded" \
+ -Dprefix=${prefix} \
+ -Dvendorprefix=${prefix} \
+ -Dvendorprefix=${prefix} \
+ -Dsiteprefix=${prefix} \
+ \
+ -Dprivlib=${STAGING_LIBDIR}/perl/${PV} \
+ -Darchlib=${STAGING_LIBDIR}/perl/${PV} \
+ -Dvendorlib=${STAGING_LIBDIR}/perl/${PV} \
+ -Dvendorarch=${STAGING_LIBDIR}/perl/${PV} \
+ -Dsitelib=${STAGING_LIBDIR}/perl/${PV} \
+ -Dsitearch=${STAGING_LIBDIR}/perl/${PV} \
+ \
+ -Duseshrplib \
+ -Dusethreads \
+ -Duseithreads \
+ -Duselargefiles \
+ -Dnoextensions=ODBM_File \
+ -Ud_dosuid \
+ -Ui_db \
+ -Ui_ndbm \
+ -Ui_gdbm \
+ -Di_shadow \
+ -Di_syslog \
+ -Duseperlio \
+ -Dman3ext=3pm \
+ -Uafs \
+ -Ud_csh \
+ -Uusesfio \
+ -Uusenm -des
+}
+
+do_install () {
+ oe_runmake 'DESTDIR=${D}' install
+
+ # We need a hostperl link for building perl
+ ln -sf perl${PV} ${D}${bindir}/hostperl
+
+ ln -sf perl ${D}${libdir}/perl5
+
+ install -d ${D}${libdir}/perl/${PV}/CORE \
+ ${D}${datadir}/perl/${PV}/ExtUtils
+
+ # Save native config
+ install config.sh ${D}${libdir}/perl
+ install lib/Config.pm ${D}${libdir}/perl/${PV}/
+ install lib/ExtUtils/typemap ${D}${libdir}/perl/${PV}/ExtUtils/
+
+ # perl shared library headers
+ for i in av.h embed.h gv.h keywords.h op.h perlio.h pp.h regexp.h \
+ uconfig.h XSUB.h cc_runtime.h embedvar.h handy.h opnames.h \
+ perliol.h pp_proto.h regnodes.h unixish.h config.h EXTERN.h \
+ hv.h malloc_ctl.h pad.h perlsdio.h proto.h scope.h utf8.h \
+ cop.h fakesdio.h INTERN.h mg.h patchlevel.h perlsfio.h \
+ reentr.h sv.h utfebcdic.h cv.h fakethr.h intrpvar.h \
+ nostdio.h perlapi.h perlvars.h util.h \
+ dosish.h form.h iperlsys.h opcode.h perl.h perly.h regcomp.h \
+ thread.h warnings.h; do
+ install $i ${D}${libdir}/perl/${PV}/CORE
+ done
+
+ create_wrapper ${D}${bindir}/perl PERL5LIB='$PERL5LIB:${STAGING_LIBDIR}/perl/5.12.2:${STAGING_LIBDIR}/perl/'
+}
+do_install_append_nylon() {
+ # get rid of definitions not supported by the gcc version we use for nylon...
+ for i in ${D}${libdir}/perl/${PV}/Config_heavy.pl ${D}${libdir}/perl/config.sh; do
+ perl -pi -e 's/-Wdeclaration-after-statement //g' ${i}
+ done
+}
+
+PARALLEL_MAKE = ""
diff --git a/meta/recipes-devtools/perl/perl-native_5.8.8.bb b/meta/recipes-devtools/perl/perl-native_5.8.8.bb
deleted file mode 100644
index 63215256aa..0000000000
--- a/meta/recipes-devtools/perl/perl-native_5.8.8.bb
+++ /dev/null
@@ -1,96 +0,0 @@
-DESCRIPTION = "Perl is a popular scripting language."
-HOMEPAGE = "http://www.perl.org/"
-SECTION = "libs"
-LICENSE = "Artistic|GPL"
-DEPENDS = "virtual/db-native gdbm-native"
-PR = "r14"
-
-SRC_URI = "http://ftp.funet.fi/pub/CPAN/src/perl-${PV}.tar.gz \
- file://perl-5.8.8-gcc-4.2.patch;patch=1 \
- file://Configure-multilib.patch;patch=1 \
- file://perl-configpm-switch.patch;patch=1 \
- file://native-nopacklist.patch;patch=1 \
- file://native-no-gdbminc.patch;patch=1 \
- file://native-perlinc.patch;patch=1 \
- file://makedepend-dash.patch;patch=1 \
- file://asm-pageh-fix.patch;patch=1"
-
-SRC_URI[md5sum] = "b8c118d4360846829beb30b02a6b91a7"
-SRC_URI[sha256sum] = "e15d499321e003d12ed183601e37ee7ba5f64b278d1de30149ce01bd4a3f234d"
-
-S = "${WORKDIR}/perl-${PV}"
-
-inherit native
-
-do_configure () {
- ./Configure \
- -Dcc="${CC}" \
- -Dcflags="${CFLAGS}" \
- -Dldflags="${LDFLAGS}" \
- -Dcf_by="Open Embedded" \
- -Dprefix=${prefix} \
- -Dvendorprefix=${prefix} \
- -Dvendorprefix=${prefix} \
- -Dsiteprefix=${prefix} \
- \
- -Dprivlib=${STAGING_LIBDIR}/perl/${PV} \
- -Darchlib=${STAGING_LIBDIR}/perl/${PV} \
- -Dvendorlib=${STAGING_LIBDIR}/perl/${PV} \
- -Dvendorarch=${STAGING_LIBDIR}/perl/${PV} \
- -Dsitelib=${STAGING_LIBDIR}/perl/${PV} \
- -Dsitearch=${STAGING_LIBDIR}/perl/${PV} \
- \
- -Duseshrplib \
- -Dusethreads \
- -Duseithreads \
- -Duselargefiles \
- -Dnoextensions=ODBM_File \
- -Ud_dosuid \
- -Ui_db \
- -Ui_ndbm \
- -Ui_gdbm \
- -Di_shadow \
- -Di_syslog \
- -Duseperlio \
- -Dman3ext=3pm \
- -Uafs \
- -Ud_csh \
- -Uusesfio \
- -Uusenm -des
-}
-
-do_install () {
- oe_runmake 'DESTDIR=${D}' install
-
- # We need a hostperl link for building perl
- ln -sf perl${PV} ${D}${bindir}/hostperl
-
- install -d ${D}${libdir}/perl/${PV}/CORE \
- ${D}${datadir}/perl/${PV}/ExtUtils
-
- # Save native config
- install config.sh ${D}${libdir}/perl
- install lib/Config.pm ${D}${libdir}/perl/${PV}/
- install lib/ExtUtils/typemap ${D}${datadir}/perl/${PV}/ExtUtils/
-
- # perl shared library headers
- for i in av.h embed.h gv.h keywords.h op.h perlio.h pp.h regexp.h \
- uconfig.h XSUB.h cc_runtime.h embedvar.h handy.h opnames.h \
- perliol.h pp_proto.h regnodes.h unixish.h config.h EXTERN.h \
- hv.h malloc_ctl.h pad.h perlsdio.h proto.h scope.h utf8.h \
- cop.h fakesdio.h INTERN.h mg.h patchlevel.h perlsfio.h \
- reentr.h sv.h utfebcdic.h cv.h fakethr.h intrpvar.h \
- nostdio.h perlapi.h perlvars.h reentr.inc thrdvar.h util.h \
- dosish.h form.h iperlsys.h opcode.h perl.h perly.h regcomp.h \
- thread.h warnings.h; do
- install $i ${D}${libdir}/perl/${PV}/CORE
- done
-}
-do_install_append_nylon() {
- # get rid of definitions not supported by the gcc version we use for nylon...
- for i in ${D}${libdir}/perl/${PV}/Config_heavy.pl ${D}${libdir}/perl/config.sh; do
- perl -pi -e 's/-Wdeclaration-after-statement //g' ${i}
- done
-}
-
-PARALLEL_MAKE = ""
diff --git a/meta/recipes-devtools/perl/perl-rdepends_5.12.2.inc b/meta/recipes-devtools/perl/perl-rdepends_5.12.2.inc
new file mode 100644
index 0000000000..309bd17413
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-rdepends_5.12.2.inc
@@ -0,0 +1,210 @@
+# To create/update the perl-rdepends_${PV}.inc use this piece of ugly script (modified for your arch/paths etc):
+
+#[nitin@buildbox packages-split]$ pwd
+#/home/nitin/build/build3/tmp/work/i586-poky-linux/perl-5.8.8-r21/packages-split
+#/home/nitin/poky.git/build/tmp/work/x86_64-poky-linux/perl-5.12.2-r0/packages-split
+
+#egrep -r "use|require" perl-module-* | grep ";" | egrep "\.pm:require | \.pm:use" | sed "s-/.*\.pm: *- += -g" | sed "s/[\"\']//g" | sed "s/;.*/\"/g" | sed "s/require */\"perl-module-/g" | sed "s/CPANPLUS::.*/cpanplus/g" | sed "s/CPAN::.*/cpan/g" | tr [:upper:] [:lower:] | sed "s/::/-/g" | grep -v perl-module-5 | sed "s/ [^+\"].*//g" | grep -v "\\$" | sed "s/_/-/g" | sed "s/\.pl\"$/\"/" | grep -v "\-vms\-" | sort -u > /tmp/1
+#find . -type f | sed "s-\./--" | sed "s-/.*--" | sort -u > /tmp/2
+#cat /tmp/1 | cut -f3 -d" " | sed "s/[\"\']//g" | sort -u > /tmp/3
+## these dependancies do not exist
+#diff -u /tmp/2 /tmp/3 | grep ^+perl-module
+
+
+# Some additional dependencies that the above doesn't manage to figure out
+RDEPENDS_perl-module-math-bigint += "perl-module-math-bigint-calc "
+RDEPENDS_perl-module-math-bigint-calc += "perl-module-integer "
+
+# Depends list
+# copy contents of /tmp/1 in this file
+RDEPENDS_perl-module-archive-tar += "perl-module-exporter"
+RDEPENDS_perl-module-archive-tar-file += "perl-module-archive-tar"
+RDEPENDS_perl-module-attributes += "perl-module-xsloader"
+RDEPENDS_perl-module-b += "perl-module-exporter"
+RDEPENDS_perl-module-b-debug += "perl-module-b"
+RDEPENDS_perl-module-bignum += "perl-module-bigint"
+RDEPENDS_perl-module-bigrat += "perl-module-bigint"
+RDEPENDS_perl-module-bigrat += "perl-module-exporter"
+RDEPENDS_perl-module-carp += "perl-module-exporter"
+RDEPENDS_perl-module-cgi-util += "perl-module-exporter"
+RDEPENDS_perl-module-class-struct += "perl-module-exporter"
+RDEPENDS_perl-module-compress-raw-bzip2 += "perl-module-exporter"
+RDEPENDS_perl-module-compress-raw-zlib += "perl-module-exporter"
+RDEPENDS_perl-module-compress-zlib += "perl-module-exporter"
+RDEPENDS_perl-module-config-extensions += "perl-module-exporter"
+RDEPENDS_perl-module-cpanplus += "perl-module-base"
+RDEPENDS_perl-module-cpanplus += "perl-module-exporter"
+RDEPENDS_perl-module-cpanplus += "perl-module-tie-hash"
+RDEPENDS_perl-module-data-dumper += "perl-module-exporter"
+RDEPENDS_perl-module-data-dumper += "perl-module-overload"
+RDEPENDS_perl-module-devel-peek += "perl-module-exporter"
+RDEPENDS_perl-module-devel-selfstubber += "perl-module-selfloader"
+RDEPENDS_perl-module-digest-md5 += "perl-module-exporter"
+RDEPENDS_perl-module-digest-sha += "perl-module-dynaloader"
+RDEPENDS_perl-module-digest-sha += "perl-module-exporter"
+RDEPENDS_perl-module-dynaloader += "perl-module-autoloader"
+RDEPENDS_perl-module-encode += "perl-module-encode-config"
+RDEPENDS_perl-module-encode += "perl-module-exporter"
+RDEPENDS_perl-module-encode-cjkconstants += "perl-module-exporter"
+RDEPENDS_perl-module-encode-encoder += "perl-module-exporter"
+RDEPENDS_perl-module-encode-encoding += "perl-module-encode"
+RDEPENDS_perl-module-encode-unicode += "perl-module-encode"
+RDEPENDS_perl-module-english += "perl-module-exporter"
+RDEPENDS_perl-module-exporter-heavy += "perl-module-exporter"
+RDEPENDS_perl-module-extutils-command += "perl-module-exporter"
+RDEPENDS_perl-module-extutils-command-mm += "perl-module-exporter"
+RDEPENDS_perl-module-extutils-constant-proxysubs += "perl-module-extutils-constant-xs"
+RDEPENDS_perl-module-extutils-constant-xs += "perl-module-extutils-constant-base"
+RDEPENDS_perl-module-extutils-embed += "perl-module-exporter"
+RDEPENDS_perl-module-extutils-embed += "perl-module-filehandle"
+RDEPENDS_perl-module-extutils-liblist += "perl-module-extutils-liblist-kid"
+RDEPENDS_perl-module-extutils-makemaker += "perl-module-exporter"
+RDEPENDS_perl-module-extutils-makemaker += "perl-module-extutils-mm"
+RDEPENDS_perl-module-extutils-makemaker += "perl-module-extutils-my"
+RDEPENDS_perl-module-extutils-manifest += "perl-module-exporter"
+RDEPENDS_perl-module-extutils-miniperl += "perl-module-exporter"
+RDEPENDS_perl-module-extutils-mkbootstrap += "perl-module-exporter"
+RDEPENDS_perl-module-extutils-mm += "perl-module-extutils-liblist"
+RDEPENDS_perl-module-extutils-mm += "perl-module-extutils-makemaker"
+RDEPENDS_perl-module-extutils-mm-aix += "perl-module-extutils-mm-unix"
+RDEPENDS_perl-module-extutils-mm-beos += "perl-module-extutils-mm-any"
+RDEPENDS_perl-module-extutils-mm-beos += "perl-module-extutils-mm-unix"
+RDEPENDS_perl-module-extutils-mm-cygwin += "perl-module-extutils-mm-unix"
+RDEPENDS_perl-module-extutils-mm-cygwin += "perl-module-extutils-mm-win32"
+RDEPENDS_perl-module-extutils-mm-dos += "perl-module-extutils-mm-any"
+RDEPENDS_perl-module-extutils-mm-dos += "perl-module-extutils-mm-unix"
+RDEPENDS_perl-module-extutils-mm-nw5 += "perl-module-extutils-mm-win32"
+RDEPENDS_perl-module-extutils-mm-os2 += "perl-module-extutils-mm-any"
+RDEPENDS_perl-module-extutils-mm-os2 += "perl-module-extutils-mm-unix"
+RDEPENDS_perl-module-extutils-mm-qnx += "perl-module-extutils-mm-unix"
+RDEPENDS_perl-module-extutils-mm-unix += "perl-module-extutils-mm-any"
+RDEPENDS_perl-module-extutils-mm-uwin += "perl-module-extutils-mm-unix"
+RDEPENDS_perl-module-extutils-mm-vms += "perl-module-exporter"
+RDEPENDS_perl-module-extutils-mm-vms += "perl-module-extutils-mm-any"
+RDEPENDS_perl-module-extutils-mm-vms += "perl-module-extutils-mm-unix"
+RDEPENDS_perl-module-extutils-mm-vos += "perl-module-extutils-mm-unix"
+RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-extutils-mm-any"
+RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-extutils-mm-unix"
+RDEPENDS_perl-module-extutils-mm-win95 += "perl-module-extutils-mm-win32"
+RDEPENDS_perl-module-extutils-my += "perl-module-extutils-mm"
+RDEPENDS_perl-module-extutils-parsexs += "perl-module-exporter"
+RDEPENDS_perl-module-fcntl += "perl-module-exporter"
+RDEPENDS_perl-module-file-basename += "perl-module-exporter"
+RDEPENDS_perl-module-file-compare += "perl-module-exporter"
+RDEPENDS_perl-module-file-copy += "perl-module-exporter"
+RDEPENDS_perl-module-file-find += "perl-module-cwd"
+RDEPENDS_perl-module-file-find += "perl-module-exporter"
+RDEPENDS_perl-module-file-find += "perl-module-file-basename"
+RDEPENDS_perl-module-file-find += "perl-module-file-spec"
+RDEPENDS_perl-module-file-spec-cygwin += "perl-module-file-spec-unix"
+RDEPENDS_perl-module-file-spec-epoc += "perl-module-file-spec-unix"
+RDEPENDS_perl-module-file-spec-functions += "perl-module-exporter"
+RDEPENDS_perl-module-file-spec-mac += "perl-module-file-spec-unix"
+RDEPENDS_perl-module-file-spec-os2 += "perl-module-file-spec-unix"
+RDEPENDS_perl-module-file-spec-vms += "perl-module-file-spec-unix"
+RDEPENDS_perl-module-file-spec-win32 += "perl-module-file-spec-unix"
+RDEPENDS_perl-module-file-temp += "perl-module-symbol"
+RDEPENDS_perl-module-filehandle += "perl-module-io-file"
+RDEPENDS_perl-module-filter-util-call += "perl-module-dynaloader"
+RDEPENDS_perl-module-filter-util-call += "perl-module-exporter"
+RDEPENDS_perl-module-findbin += "perl-module-exporter"
+RDEPENDS_perl-module-getopt-std += "perl-module-exporter"
+RDEPENDS_perl-module-hash-util += "perl-module-dynaloader"
+RDEPENDS_perl-module-hash-util += "perl-module-exporter"
+RDEPENDS_perl-module-hash-util-fieldhash += "perl-module-exporter"
+RDEPENDS_perl-module-i18n-collate += "perl-module-exporter"
+RDEPENDS_perl-module-i18n-langinfo += "perl-module-dynaloader"
+RDEPENDS_perl-module-i18n-langinfo += "perl-module-exporter"
+RDEPENDS_perl-module-i18n-langtags += "perl-module-exporter"
+RDEPENDS_perl-module-inc-latest += "perl-module-inc-latest-private"
+RDEPENDS_perl-module-io-compress-base-common += "perl-module-exporter"
+RDEPENDS_perl-module-io-compress-bzip2 += "perl-module-exporter "
+RDEPENDS_perl-module-io-compress-deflate += "perl-module-exporter "
+RDEPENDS_perl-module-io-compress-gzip += "perl-module-exporter "
+RDEPENDS_perl-module-io-compress-gzip-constants += "perl-module-exporter"
+RDEPENDS_perl-module-io-compress-rawdeflate += "perl-module-exporter "
+RDEPENDS_perl-module-io-compress-zip += "perl-module-exporter "
+RDEPENDS_perl-module-io-compress-zip-constants += "perl-module-exporter"
+RDEPENDS_perl-module-io-compress-zlib-constants += "perl-module-exporter"
+RDEPENDS_perl-module-io-file += "perl-module-exporter"
+RDEPENDS_perl-module-io-handle += "perl-module-exporter"
+RDEPENDS_perl-module-io-seekable += "perl-module-exporter"
+RDEPENDS_perl-module-io-select += "perl-module-exporter"
+RDEPENDS_perl-module-io-socket += "perl-module-io-socket-inet"
+RDEPENDS_perl-module-io-socket += "perl-module-io-socket-unix"
+RDEPENDS_perl-module-io-uncompress-anyinflate += "perl-module-exporter "
+RDEPENDS_perl-module-io-uncompress-anyuncompress += "perl-module-exporter "
+RDEPENDS_perl-module-io-uncompress-bunzip2 += "perl-module-exporter "
+RDEPENDS_perl-module-io-uncompress-gunzip += "perl-module-exporter "
+RDEPENDS_perl-module-io-uncompress-inflate += "perl-module-exporter "
+RDEPENDS_perl-module-io-uncompress-rawinflate += "perl-module-exporter "
+RDEPENDS_perl-module-io-uncompress-unzip += "perl-module-exporter "
+RDEPENDS_perl-module-ipc-cmd += "perl-module-carp"
+RDEPENDS_perl-module-ipc-open2 += "perl-module-exporter"
+RDEPENDS_perl-module-ipc-open2 += "perl-module-ipc-open3"
+RDEPENDS_perl-module-ipc-open3 += "perl-module-exporter"
+RDEPENDS_perl-module-ipc-sysv += "perl-module-exporter"
+RDEPENDS_perl-module-list-util += "perl-module-exporter"
+RDEPENDS_perl-module-list-util-pp += "perl-module-exporter"
+RDEPENDS_perl-module-locale-constants += "perl-module-exporter"
+RDEPENDS_perl-module-locale-country += "perl-module-exporter"
+RDEPENDS_perl-module-locale-currency += "perl-module-exporter"
+RDEPENDS_perl-module-locale-language += "perl-module-exporter"
+RDEPENDS_perl-module-locale-script += "perl-module-exporter"
+RDEPENDS_perl-module-math-bigfloat += "perl-module-exporter"
+RDEPENDS_perl-module-math-complex += "perl-module-exporter"
+RDEPENDS_perl-module-math-trig += "perl-module-exporter"
+RDEPENDS_perl-module-mime-base64 += "perl-module-exporter"
+RDEPENDS_perl-module-mime-base64 += "perl-module-xsloader"
+RDEPENDS_perl-module-mime-quotedprint += "perl-module-exporter"
+RDEPENDS_perl-module-mro += "perl-module-xsloader"
+RDEPENDS_perl-module-net-cmd += "perl-module-exporter"
+RDEPENDS_perl-module-net-config += "perl-module-exporter"
+RDEPENDS_perl-module-net-domain += "perl-module-exporter"
+RDEPENDS_perl-module-net-ftp-a += "perl-module-net-ftp-dataconn"
+RDEPENDS_perl-module-net-ftp-e += "perl-module-net-ftp-i"
+RDEPENDS_perl-module-net-ftp-i += "perl-module-net-ftp-dataconn"
+RDEPENDS_perl-module-net-ftp-l += "perl-module-net-ftp-i"
+RDEPENDS_perl-module-net-ping += "perl-module-exporter"
+RDEPENDS_perl-module-net-time += "perl-module-exporter"
+RDEPENDS_perl-module-object-accessor += "perl-module-overload"
+RDEPENDS_perl-module-pod-escapes += "perl-module-exporter"
+RDEPENDS_perl-module-pod-functions += "perl-module-exporter"
+RDEPENDS_perl-module-pod-html += "perl-module-exporter"
+RDEPENDS_perl-module-pod-latex += "perl-module-pod-parseutils"
+RDEPENDS_perl-module-pod-simple-transcodesmart += "perl-module-encode"
+RDEPENDS_perl-module-pod-usage += "perl-module-pod-select"
+RDEPENDS_perl-module-posix += "perl-module-exporter"
+RDEPENDS_perl-module-safe += "perl-module-utf8"
+RDEPENDS_perl-module-scalar-util += "perl-module-exporter"
+RDEPENDS_perl-module-scalar-util += "perl-module-list-util"
+RDEPENDS_perl-module-scalar-util-pp += "perl-module-exporter"
+RDEPENDS_perl-module-sdbm-file += "perl-module-tie-hash"
+RDEPENDS_perl-module-search-dict += "perl-module-exporter"
+RDEPENDS_perl-module-socket += "perl-module-exporter"
+RDEPENDS_perl-module-storable += "perl-module-carp"
+RDEPENDS_perl-module-storable += "perl-module-dynaloader"
+RDEPENDS_perl-module-storable += "perl-module-exporter"
+RDEPENDS_perl-module-symbol += "perl-module-exporter"
+RDEPENDS_perl-module-sys-hostname += "perl-module-autoloader"
+RDEPENDS_perl-module-sys-hostname += "perl-module-exporter"
+RDEPENDS_perl-module-term-complete += "perl-module-exporter"
+RDEPENDS_perl-module-test += "perl-module-exporter"
+RDEPENDS_perl-module-test-builder-module += "perl-module-exporter"
+RDEPENDS_perl-module-test-builder-tester-color += "perl-module-test-builder-tester"
+RDEPENDS_perl-module-text-abbrev += "perl-module-exporter"
+RDEPENDS_perl-module-text-tabs += "perl-module-exporter"
+RDEPENDS_perl-module-text-wrap += "perl-module-exporter"
+RDEPENDS_perl-module-thread += "perl-module-exporter"
+RDEPENDS_perl-module-threads += "perl-module-config"
+RDEPENDS_perl-module-threads += "perl-module-xsloader"
+RDEPENDS_perl-module-time-hires += "perl-module-dynaloader"
+RDEPENDS_perl-module-time-hires += "perl-module-exporter"
+RDEPENDS_perl-module-time-local += "perl-module-exporter"
+RDEPENDS_perl-module-time-piece += "perl-module-dynaloader"
+RDEPENDS_perl-module-time-piece += "perl-module-exporter"
+RDEPENDS_perl-module-unicode-normalize += "perl-module-dynaloader"
+RDEPENDS_perl-module-unicode-normalize += "perl-module-exporter"
+RDEPENDS_perl-module-unicode-ucd += "perl-module-exporter"
+RDEPENDS_perl-module-universal += "perl-module-exporter"
+RDEPENDS_perl-module-warnings-register += "perl-module-warnings"
diff --git a/meta/recipes-devtools/perl/perl-rdepends_5.8.8.inc b/meta/recipes-devtools/perl/perl-rdepends_5.8.8.inc
deleted file mode 100644
index 1ce5ad0375..0000000000
--- a/meta/recipes-devtools/perl/perl-rdepends_5.8.8.inc
+++ /dev/null
@@ -1,1145 +0,0 @@
-# To create/update the perl-rdepends_${PV}.inc use this piece of ugly script (modified for your arch/paths etc):
-# daka@DaKa2:/home/slug/slugos/tmp/work/perl-5.8.7-r14/install$ egrep -r "use|require" * | grep ";$" | egrep ".pm:use |.pm:require " | grep -v v5.6.0 | grep -v 5.00 | grep -v \$module | sed -e "s, \+, ,g" | cut -f1,2 -d" " | sed -e "s,;, ,g" | sed -e "s,(), ,g" | sed -e "s,::,-,g" | sort | uniq | tr [:upper:] [:lower:] | sed -e "s,/[^ ]\+ , += \"perl-module-,g" | sed -e "s, \?$, \",g" | sed -e "s,_,-,g" | sed -e "s,^,RDEPENDS_,g" | sed -e "s,armeb-linux,\$\{TARGET_ARCH\}-\$\{TARGET_OS\},g" | egrep -v "perl-module-5|perl-module-tk|perl-module-mac-internetconfig|perl-module-ndbm-file|perl-module-html-treebuilder|perl-module-lwp-simple|perl-module-vms-filespec|perl-module-fcgi|perl-module-vms-stdio|perl-module-mac-buildtools" > /home/slug/openembedded/packages/perl/rdepends.tmp
-
-# Some additional dependencies that the above doesn't manage to figure out
-RDEPENDS_perl-module-math-bigint += "perl-module-math-bigint-calc "
-RDEPENDS_perl-module-math-bigint-calc += "perl-module-integer "
-
-# Depends list
-RDEPENDS_perl-misc += "perl-module-exporter "
-RDEPENDS_perl-misc += "perl-module-strict "
-RDEPENDS_perl-misc += "perl-module-warnings "
-RDEPENDS_perl-module-attribute-handlers-demo-demo += "perl-module-attribute-handlers "
-RDEPENDS_perl-module-attribute-handlers-demo-descriptions += "perl-module-attribute-handlers "
-RDEPENDS_perl-module-attribute-handlers-demo-myclass += "perl-module-base "
-RDEPENDS_perl-module-attribute-handlers += "perl-module-carp "
-RDEPENDS_perl-module-attribute-handlers += "perl-module-warnings "
-RDEPENDS_perl-module-attributes += "perl-module-strict "
-RDEPENDS_perl-module-attrs += "perl-module-xsloader "
-RDEPENDS_perl-module-autoloader += "perl-module-strict "
-RDEPENDS_perl-module-autosplit += "perl-module-carp "
-RDEPENDS_perl-module-autosplit += "perl-module-config "
-RDEPENDS_perl-module-autosplit += "perl-module-exporter "
-RDEPENDS_perl-module-autosplit += "perl-module-file-basename "
-RDEPENDS_perl-module-autosplit += "perl-module-file-path "
-RDEPENDS_perl-module-autosplit += "perl-module-file-spec-functions "
-RDEPENDS_perl-module-autosplit += "perl-module-strict "
-RDEPENDS_perl-module-base += "perl-module-strict "
-RDEPENDS_perl-module-base += "perl-module-vars "
-RDEPENDS_perl-module-b-asmdata += "perl-module-exporter "
-RDEPENDS_perl-module-b-assembler += "perl-module-b "
-RDEPENDS_perl-module-b-assembler += "perl-module-b-asmdata "
-RDEPENDS_perl-module-b-assembler += "perl-module-config "
-RDEPENDS_perl-module-b-assembler += "perl-module-exporter "
-RDEPENDS_perl-module-b-assembler += "perl-module-strict "
-RDEPENDS_perl-module-b-bblock += "perl-module-b-concise "
-RDEPENDS_perl-module-b-bblock += "perl-module-exporter "
-RDEPENDS_perl-module-b-bblock += "perl-module-strict "
-RDEPENDS_perl-module-b-bytecode += "perl-module-b-asmdata "
-RDEPENDS_perl-module-b-bytecode += "perl-module-b-assembler "
-RDEPENDS_perl-module-b-bytecode += "perl-module-config "
-RDEPENDS_perl-module-b-bytecode += "perl-module-strict "
-RDEPENDS_perl-module-b-cc += "perl-module-b-bblock "
-RDEPENDS_perl-module-b-cc += "perl-module-b-stackobj "
-RDEPENDS_perl-module-b-cc += "perl-module-config "
-RDEPENDS_perl-module-b-cc += "perl-module-strict "
-RDEPENDS_perl-module-b-c += "perl-module-b "
-RDEPENDS_perl-module-b-c += "perl-module-base "
-RDEPENDS_perl-module-b-c += "perl-module-b-asmdata "
-RDEPENDS_perl-module-b-c += "perl-module-carp "
-RDEPENDS_perl-module-b-c += "perl-module-config "
-RDEPENDS_perl-module-b-c += "perl-module-exporter "
-RDEPENDS_perl-module-b-c += "perl-module-filehandle "
-RDEPENDS_perl-module-b-c += "perl-module-strict "
-RDEPENDS_perl-module-b-debug += "perl-module-b-asmdata "
-RDEPENDS_perl-module-b-debug += "perl-module-strict "
-RDEPENDS_perl-module-b-deparse += "perl-module-bytes "
-RDEPENDS_perl-module-b-deparse += "perl-module-carp "
-RDEPENDS_perl-module-b-deparse += "perl-module-integer "
-RDEPENDS_perl-module-b-deparse += "perl-module-re "
-RDEPENDS_perl-module-b-deparse += "perl-module-strict "
-RDEPENDS_perl-module-b-deparse += "perl-module-utf8 "
-RDEPENDS_perl-module-b-deparse += "perl-module-warnings "
-RDEPENDS_perl-module-b-deparse += "perl-module-warnings "
-RDEPENDS_perl-module-b-deparse += "perl-module-vars "
-RDEPENDS_perl-module-b-disassembler += "perl-module-b "
-RDEPENDS_perl-module-b-disassembler += "perl-module-b-asmdata "
-RDEPENDS_perl-module-b-disassembler += "perl-module-carp "
-RDEPENDS_perl-module-b-disassembler += "perl-module-config "
-RDEPENDS_perl-module-b-disassembler += "perl-module-exporter "
-RDEPENDS_perl-module-b-disassembler += "perl-module-filehandle "
-RDEPENDS_perl-module-b-disassembler += "perl-module-strict "
-RDEPENDS_perl-module-benchmark += "perl-module-carp "
-RDEPENDS_perl-module-benchmark += "perl-module-exporter "
-RDEPENDS_perl-module-benchmark += "perl-module-strict "
-RDEPENDS_perl-module-bigint += "perl-module-exporter "
-RDEPENDS_perl-module-bigint += "perl-module-overload "
-RDEPENDS_perl-module-bigint += "perl-module-strict "
-RDEPENDS_perl-module-bignum += "perl-module-exporter "
-RDEPENDS_perl-module-bignum += "perl-module-strict "
-RDEPENDS_perl-module-bigrat += "perl-module-exporter "
-RDEPENDS_perl-module-bigrat += "perl-module-strict "
-RDEPENDS_perl-module-blib += "perl-module-cwd "
-RDEPENDS_perl-module-blib += "perl-module-file-spec "
-RDEPENDS_perl-module-blib += "perl-module-vars "
-RDEPENDS_perl-module-b-lint += "perl-module-strict "
-RDEPENDS_perl-module-b-showlex += "perl-module-b "
-RDEPENDS_perl-module-b-showlex += "perl-module-b-concise "
-RDEPENDS_perl-module-b-showlex += "perl-module-b-terse "
-RDEPENDS_perl-module-b-showlex += "perl-module-strict "
-RDEPENDS_perl-module-b-stackobj += "perl-module-b "
-RDEPENDS_perl-module-b-stackobj += "perl-module-carp "
-RDEPENDS_perl-module-b-stackobj += "perl-module-exporter "
-RDEPENDS_perl-module-b-stackobj += "perl-module-strict "
-RDEPENDS_perl-module-b-terse += "perl-module-b "
-RDEPENDS_perl-module-b-terse += "perl-module-b-asmdata "
-RDEPENDS_perl-module-b-terse += "perl-module-b-concise "
-RDEPENDS_perl-module-b-terse += "perl-module-carp "
-RDEPENDS_perl-module-b-terse += "perl-module-strict "
-RDEPENDS_perl-module-b += "perl-module-exporter "
-RDEPENDS_perl-module-b += "perl-module-strict "
-RDEPENDS_perl-module-b += "perl-module-xsloader "
-RDEPENDS_perl-module-b-xref += "perl-module-config "
-RDEPENDS_perl-module-b-xref += "perl-module-strict "
-RDEPENDS_perl-module-byteloader += "perl-module-xsloader "
-RDEPENDS_perl-module-carp-heavy += "perl-module-carp "
-RDEPENDS_perl-module-carp += "perl-module-exporter "
-RDEPENDS_perl-module-cgi-apache += "perl-module-cgi "
-RDEPENDS_perl-module-cgi-carp += "perl-module-exporter "
-RDEPENDS_perl-module-cgi-carp += "perl-module-file-spec "
-RDEPENDS_perl-module-cgi-cookie += "perl-module-cgi-util "
-RDEPENDS_perl-module-cgi-fast += "perl-module-cgi "
-RDEPENDS_perl-module-cgi-fast += "perl-module-vars "
-RDEPENDS_perl-module-cgi-pretty += "perl-module-cgi "
-RDEPENDS_perl-module-cgi-pretty += "perl-module-strict "
-RDEPENDS_perl-module-cgi-push += "perl-module-cgi "
-RDEPENDS_perl-module-cgi-push += "perl-module-cgi-util "
-RDEPENDS_perl-module-cgi-switch += "perl-module-cgi "
-RDEPENDS_perl-module-cgi += "perl-module-carp "
-RDEPENDS_perl-module-cgi += "perl-module-cgi-util "
-RDEPENDS_perl-module-cgi += "perl-module-constant "
-RDEPENDS_perl-module-cgi-util += "perl-module-exporter "
-RDEPENDS_perl-module-cgi-util += "perl-module-strict "
-RDEPENDS_perl-module-cgi-util += "perl-module-vars "
-RDEPENDS_perl-module-charnames += "perl-module-carp "
-RDEPENDS_perl-module-charnames += "perl-module-file-spec "
-RDEPENDS_perl-module-charnames += "perl-module-strict "
-RDEPENDS_perl-module-charnames += "perl-module-warnings "
-RDEPENDS_perl-module-class-isa += "perl-module-strict "
-RDEPENDS_perl-module-class-isa += "perl-module-vars "
-RDEPENDS_perl-module-class-struct += "perl-module-exporter "
-RDEPENDS_perl-module-class-struct += "perl-module-carp "
-RDEPENDS_perl-module-class-struct += "perl-module-strict "
-RDEPENDS_perl-module-class-struct += "perl-module-warnings-register "
-RDEPENDS_perl-module-config += "perl-module-strict "
-RDEPENDS_perl-module-constant += "perl-module-strict "
-RDEPENDS_perl-module-constant += "perl-module-warnings-register "
-RDEPENDS_perl-module-cpan-firsttime += "perl-module-extutils-makemaker "
-RDEPENDS_perl-module-cpan-firsttime += "perl-module-file-basename "
-RDEPENDS_perl-module-cpan-firsttime += "perl-module-filehandle "
-RDEPENDS_perl-module-cpan-firsttime += "perl-module-file-path "
-RDEPENDS_perl-module-cpan-firsttime += "perl-module-file-spec "
-RDEPENDS_perl-module-cpan-firsttime += "perl-module-strict "
-RDEPENDS_perl-module-cpan-firsttime += "perl-module-vars "
-RDEPENDS_perl-module-cpan-nox += "perl-module-base "
-RDEPENDS_perl-module-cpan-nox += "perl-module-cpan "
-RDEPENDS_perl-module-cpan-nox += "perl-module-strict "
-RDEPENDS_perl-module-cpan-nox += "perl-module-vars "
-RDEPENDS_perl-module-cpan += "perl-module-carp "
-RDEPENDS_perl-module-cpan += "perl-module-config "
-RDEPENDS_perl-module-cpan += "perl-module-cwd "
-RDEPENDS_perl-module-cpan += "perl-module-dirhandle "
-RDEPENDS_perl-module-cpan += "perl-module-exporter "
-RDEPENDS_perl-module-cpan += "perl-module-extutils-makemaker "
-RDEPENDS_perl-module-cpan += "perl-module-extutils-makemaker "
-RDEPENDS_perl-module-cpan += "perl-module-file-basename "
-RDEPENDS_perl-module-cpan += "perl-module-file-copy "
-RDEPENDS_perl-module-cpan += "perl-module-file-find "
-RDEPENDS_perl-module-cpan += "perl-module-filehandle "
-RDEPENDS_perl-module-cpan += "perl-module-file-path "
-RDEPENDS_perl-module-cpan += "perl-module-file-spec "
-RDEPENDS_perl-module-cpan += "perl-module-overload "
-RDEPENDS_perl-module-cpan += "perl-module-safe "
-RDEPENDS_perl-module-cpan += "perl-module-strict "
-RDEPENDS_perl-module-cpan += "perl-module-sys-hostname "
-RDEPENDS_perl-module-cpan += "perl-module-text-parsewords "
-RDEPENDS_perl-module-cpan += "perl-module-text-wrap "
-RDEPENDS_perl-module-cpan += "perl-module-vars "
-RDEPENDS_perl-module-cwd += "perl-module-exporter "
-RDEPENDS_perl-module-cwd += "perl-module-strict "
-RDEPENDS_perl-module-cwd += "perl-module-vars "
-RDEPENDS_perl-module-data-dumper += "perl-module-exporter "
-RDEPENDS_perl-module-data-dumper += "perl-module-overload "
-RDEPENDS_perl-module-data-dumper += "perl-module-carp "
-RDEPENDS_perl-module-dbm-filter-compress += "perl-module-carp "
-RDEPENDS_perl-module-dbm-filter-compress += "perl-module-strict "
-RDEPENDS_perl-module-dbm-filter-compress += "perl-module-warnings "
-RDEPENDS_perl-module-dbm-filter-encode += "perl-module-carp "
-RDEPENDS_perl-module-dbm-filter-encode += "perl-module-strict "
-RDEPENDS_perl-module-dbm-filter-encode += "perl-module-warnings "
-RDEPENDS_perl-module-dbm-filter-int32 += "perl-module-strict "
-RDEPENDS_perl-module-dbm-filter-int32 += "perl-module-warnings "
-RDEPENDS_perl-module-dbm-filter-null += "perl-module-strict "
-RDEPENDS_perl-module-dbm-filter-null += "perl-module-warnings "
-RDEPENDS_perl-module-dbm-filter += "perl-module-carp "
-RDEPENDS_perl-module-dbm-filter += "perl-module-strict "
-RDEPENDS_perl-module-dbm-filter += "perl-module-warnings "
-RDEPENDS_perl-module-dbm-filter-utf8 += "perl-module-carp "
-RDEPENDS_perl-module-dbm-filter-utf8 += "perl-module-strict "
-RDEPENDS_perl-module-dbm-filter-utf8 += "perl-module-warnings "
-RDEPENDS_perl-module-devel-dprof += "perl-module-xsloader "
-RDEPENDS_perl-module-devel-peek += "perl-module-exporter "
-RDEPENDS_perl-module-devel-peek += "perl-module-xsloader "
-RDEPENDS_perl-module-devel-ppport += "perl-module-dynaloader "
-RDEPENDS_perl-module-devel-ppport += "perl-module-strict "
-RDEPENDS_perl-module-devel-ppport += "perl-module-vars "
-RDEPENDS_perl-module-devel-selfstubber += "perl-module-selfloader "
-RDEPENDS_perl-module-devel-selfstubber += "perl-module-file-spec "
-RDEPENDS_perl-module-diagnostics += "perl-module-carp "
-RDEPENDS_perl-module-diagnostics += "perl-module-config "
-RDEPENDS_perl-module-diagnostics += "perl-module-strict "
-RDEPENDS_perl-module-digest-base += "perl-module-strict "
-RDEPENDS_perl-module-digest-base += "perl-module-vars "
-RDEPENDS_perl-module-digest-file += "perl-module-carp "
-RDEPENDS_perl-module-digest-file += "perl-module-digest "
-RDEPENDS_perl-module-digest-file += "perl-module-exporter "
-RDEPENDS_perl-module-digest-file += "perl-module-strict "
-RDEPENDS_perl-module-digest-file += "perl-module-vars "
-RDEPENDS_perl-module-digest-md5 += "perl-module-dynaloader "
-RDEPENDS_perl-module-digest-md5 += "perl-module-exporter "
-RDEPENDS_perl-module-digest-md5 += "perl-module-strict "
-RDEPENDS_perl-module-digest-md5 += "perl-module-vars "
-RDEPENDS_perl-module-digest += "perl-module-strict "
-RDEPENDS_perl-module-digest += "perl-module-vars "
-RDEPENDS_perl-module-dirhandle += "perl-module-carp "
-RDEPENDS_perl-module-dirhandle += "perl-module-symbol "
-RDEPENDS_perl-module-dumpvalue += "perl-module-strict "
-RDEPENDS_perl-module-dynaloader += "perl-module-autoloader "
-RDEPENDS_perl-module-dynaloader += "perl-module-config "
-RDEPENDS_perl-module-dynaloader += "perl-module-vars "
-RDEPENDS_perl-module-encode-alias += "perl-module-base "
-RDEPENDS_perl-module-encode-alias += "perl-module-encode "
-RDEPENDS_perl-module-encode-alias += "perl-module-strict "
-RDEPENDS_perl-module-encode-byte += "perl-module-encode "
-RDEPENDS_perl-module-encode-byte += "perl-module-xsloader "
-RDEPENDS_perl-module-encode-cjkconstants += "perl-module-exporter "
-RDEPENDS_perl-module-encode-cjkconstants += "perl-module-carp "
-RDEPENDS_perl-module-encode-cjkconstants += "perl-module-strict "
-RDEPENDS_perl-module-encode-cn-hz += "perl-module-base "
-RDEPENDS_perl-module-encode-cn-hz += "perl-module-encode "
-RDEPENDS_perl-module-encode-cn-hz += "perl-module-strict "
-RDEPENDS_perl-module-encode-cn-hz += "perl-module-vars "
-RDEPENDS_perl-module-encode-cn += "perl-module-encode "
-RDEPENDS_perl-module-encode-cn += "perl-module-encode-cn-hz "
-RDEPENDS_perl-module-encode-cn += "perl-module-xsloader "
-RDEPENDS_perl-module-encode-config += "perl-module-strict "
-RDEPENDS_perl-module-encode-ebcdic += "perl-module-encode "
-RDEPENDS_perl-module-encode-ebcdic += "perl-module-xsloader "
-RDEPENDS_perl-module-encode-encoder += "perl-module-exporter "
-RDEPENDS_perl-module-encode-encoder += "perl-module-carp "
-RDEPENDS_perl-module-encode-encoder += "perl-module-encode "
-RDEPENDS_perl-module-encode-encoder += "perl-module-strict "
-RDEPENDS_perl-module-encode-encoder += "perl-module-warnings "
-RDEPENDS_perl-module-encode-encoding += "perl-module-encode "
-RDEPENDS_perl-module-encode-encoding += "perl-module-strict "
-RDEPENDS_perl-module-encode-guess += "perl-module-base "
-RDEPENDS_perl-module-encode-guess += "perl-module-encode "
-RDEPENDS_perl-module-encode-guess += "perl-module-strict "
-RDEPENDS_perl-module-encode-jp-h2z += "perl-module-encode-cjkconstants "
-RDEPENDS_perl-module-encode-jp-h2z += "perl-module-strict "
-RDEPENDS_perl-module-encode-jp-jis7 += "perl-module-base "
-RDEPENDS_perl-module-encode-jp-jis7 += "perl-module-encode "
-RDEPENDS_perl-module-encode-jp-jis7 += "perl-module-encode-cjkconstants "
-RDEPENDS_perl-module-encode-jp-jis7 += "perl-module-strict "
-RDEPENDS_perl-module-encode-jp += "perl-module-encode "
-RDEPENDS_perl-module-encode-jp += "perl-module-encode-jp-jis7 "
-RDEPENDS_perl-module-encode-jp += "perl-module-xsloader "
-RDEPENDS_perl-module-encode-kr-2022-kr += "perl-module-base "
-RDEPENDS_perl-module-encode-kr-2022-kr += "perl-module-encode "
-RDEPENDS_perl-module-encode-kr-2022-kr += "perl-module-encode-cjkconstants "
-RDEPENDS_perl-module-encode-kr-2022-kr += "perl-module-strict "
-RDEPENDS_perl-module-encode-kr += "perl-module-encode "
-RDEPENDS_perl-module-encode-kr += "perl-module-encode-kr-2022-kr "
-RDEPENDS_perl-module-encode-kr += "perl-module-xsloader "
-RDEPENDS_perl-module-encode-mime-header += "perl-module-base "
-RDEPENDS_perl-module-encode-mime-header += "perl-module-carp "
-RDEPENDS_perl-module-encode-mime-header += "perl-module-constant "
-RDEPENDS_perl-module-encode-mime-header += "perl-module-encode "
-RDEPENDS_perl-module-encode-mime-header += "perl-module-mime-base64 "
-RDEPENDS_perl-module-encode-mime-header += "perl-module-strict "
-RDEPENDS_perl-module-encode-symbol += "perl-module-encode "
-RDEPENDS_perl-module-encode-symbol += "perl-module-xsloader "
-RDEPENDS_perl-module-encode-tw += "perl-module-encode "
-RDEPENDS_perl-module-encode-tw += "perl-module-xsloader "
-RDEPENDS_perl-module-encode-unicode += "perl-module-encode "
-RDEPENDS_perl-module-encode-unicode += "perl-module-base "
-RDEPENDS_perl-module-encode-unicode += "perl-module-strict "
-RDEPENDS_perl-module-encode-unicode += "perl-module-warnings "
-RDEPENDS_perl-module-encode-unicode += "perl-module-xsloader "
-RDEPENDS_perl-module-encode-unicode-utf7 += "perl-module-base "
-RDEPENDS_perl-module-encode-unicode-utf7 += "perl-module-encode "
-RDEPENDS_perl-module-encode-unicode-utf7 += "perl-module-mime-base64 "
-RDEPENDS_perl-module-encode-unicode-utf7 += "perl-module-strict "
-RDEPENDS_perl-module-encode += "perl-module-encode-config "
-RDEPENDS_perl-module-encode += "perl-module-exporter "
-RDEPENDS_perl-module-encode += "perl-module-base "
-RDEPENDS_perl-module-encode += "perl-module-encode-alias "
-RDEPENDS_perl-module-encode += "perl-module-strict "
-RDEPENDS_perl-module-encode += "perl-module-xsloader "
-RDEPENDS_perl-module-encoding += "perl-module-encode "
-RDEPENDS_perl-module-encoding += "perl-module-strict "
-RDEPENDS_perl-module-english += "perl-module-exporter "
-RDEPENDS_perl-module-env += "perl-module-config "
-RDEPENDS_perl-module-env += "perl-module-tie-array "
-RDEPENDS_perl-module-errno += "perl-module-config "
-RDEPENDS_perl-module-errno += "perl-module-exporter "
-RDEPENDS_perl-module-errno += "perl-module-strict "
-RDEPENDS_perl-module-exporter-heavy += "perl-module-exporter "
-RDEPENDS_perl-module-exporter-heavy += "perl-module-strict "
-RDEPENDS_perl-module-extutils-command-mm += "perl-module-exporter "
-RDEPENDS_perl-module-extutils-command-mm += "perl-module-strict "
-RDEPENDS_perl-module-extutils-command-mm += "perl-module-vars "
-RDEPENDS_perl-module-extutils-command += "perl-module-exporter "
-RDEPENDS_perl-module-extutils-command += "perl-module-carp "
-RDEPENDS_perl-module-extutils-command += "perl-module-file-basename "
-RDEPENDS_perl-module-extutils-command += "perl-module-file-compare "
-RDEPENDS_perl-module-extutils-command += "perl-module-file-copy "
-RDEPENDS_perl-module-extutils-command += "perl-module-file-path "
-RDEPENDS_perl-module-extutils-command += "perl-module-strict "
-RDEPENDS_perl-module-extutils-command += "perl-module-vars "
-RDEPENDS_perl-module-extutils-constant-base += "perl-module-carp "
-RDEPENDS_perl-module-extutils-constant-base += "perl-module-extutils-constant-utils "
-RDEPENDS_perl-module-extutils-constant-base += "perl-module-strict "
-RDEPENDS_perl-module-extutils-constant-base += "perl-module-text-wrap "
-RDEPENDS_perl-module-extutils-constant-base += "perl-module-vars "
-RDEPENDS_perl-module-extutils-constant += "perl-module-carp "
-RDEPENDS_perl-module-extutils-constant += "perl-module-exporter "
-RDEPENDS_perl-module-extutils-constant += "perl-module-extutils-constant-utils "
-RDEPENDS_perl-module-extutils-constant += "perl-module-extutils-constant-xs "
-RDEPENDS_perl-module-extutils-constant += "perl-module-strict "
-RDEPENDS_perl-module-extutils-constant += "perl-module-vars "
-RDEPENDS_perl-module-extutils-constant-utils += "perl-module-carp "
-RDEPENDS_perl-module-extutils-constant-utils += "perl-module-strict "
-RDEPENDS_perl-module-extutils-constant-utils += "perl-module-vars "
-RDEPENDS_perl-module-extutils-constant-xs += "perl-module-extutils-constant-base "
-RDEPENDS_perl-module-extutils-constant-xs += "perl-module-carp "
-RDEPENDS_perl-module-extutils-constant-xs += "perl-module-extutils-constant "
-RDEPENDS_perl-module-extutils-constant-xs += "perl-module-extutils-constant-utils "
-RDEPENDS_perl-module-extutils-constant-xs += "perl-module-strict "
-RDEPENDS_perl-module-extutils-constant-xs += "perl-module-vars "
-RDEPENDS_perl-module-extutils-embed += "perl-module-exporter "
-RDEPENDS_perl-module-extutils-embed += "perl-module-filehandle "
-RDEPENDS_perl-module-extutils-embed += "perl-module-config "
-RDEPENDS_perl-module-extutils-embed += "perl-module-file-spec "
-RDEPENDS_perl-module-extutils-embed += "perl-module-getopt-std "
-RDEPENDS_perl-module-extutils-embed += "perl-module-strict "
-RDEPENDS_perl-module-extutils-installed += "perl-module-carp "
-RDEPENDS_perl-module-extutils-installed += "perl-module-config "
-RDEPENDS_perl-module-extutils-installed += "perl-module-extutils-makemaker "
-RDEPENDS_perl-module-extutils-installed += "perl-module-extutils-packlist "
-RDEPENDS_perl-module-extutils-installed += "perl-module-file-basename "
-RDEPENDS_perl-module-extutils-installed += "perl-module-file-find "
-RDEPENDS_perl-module-extutils-installed += "perl-module-file-spec "
-RDEPENDS_perl-module-extutils-installed += "perl-module-strict "
-RDEPENDS_perl-module-extutils-installed += "perl-module-vars "
-RDEPENDS_perl-module-extutils-install += "perl-module-carp "
-RDEPENDS_perl-module-extutils-install += "perl-module-config "
-RDEPENDS_perl-module-extutils-install += "perl-module-exporter "
-RDEPENDS_perl-module-extutils-install += "perl-module-file-spec "
-RDEPENDS_perl-module-extutils-install += "perl-module-vars "
-RDEPENDS_perl-module-extutils-liblist-kid += "perl-module-config "
-RDEPENDS_perl-module-extutils-liblist-kid += "perl-module-cwd "
-RDEPENDS_perl-module-extutils-liblist-kid += "perl-module-file-basename "
-RDEPENDS_perl-module-extutils-liblist-kid += "perl-module-file-spec "
-RDEPENDS_perl-module-extutils-liblist-kid += "perl-module-strict "
-RDEPENDS_perl-module-extutils-liblist-kid += "perl-module-vars "
-RDEPENDS_perl-module-extutils-liblist += "perl-module-extutils-liblist-kid "
-RDEPENDS_perl-module-extutils-liblist += "perl-module-file-spec "
-RDEPENDS_perl-module-extutils-liblist += "perl-module-vars "
-RDEPENDS_perl-module-extutils-makemaker-bytes += "perl-module-vars "
-RDEPENDS_perl-module-extutils-makemaker += "perl-module-exporter "
-RDEPENDS_perl-module-extutils-makemaker += "perl-module-carp "
-RDEPENDS_perl-module-extutils-makemaker += "perl-module-config "
-RDEPENDS_perl-module-extutils-makemaker += "perl-module-file-path "
-RDEPENDS_perl-module-extutils-makemaker += "perl-module-strict "
-RDEPENDS_perl-module-extutils-makemaker-vmsish += "perl-module-vmsish "
-RDEPENDS_perl-module-extutils-makemaker-vmsish += "perl-module-vars "
-RDEPENDS_perl-module-extutils-manifest += "perl-module-exporter "
-RDEPENDS_perl-module-extutils-manifest += "perl-module-carp "
-RDEPENDS_perl-module-extutils-manifest += "perl-module-config "
-RDEPENDS_perl-module-extutils-manifest += "perl-module-file-copy "
-RDEPENDS_perl-module-extutils-manifest += "perl-module-file-find "
-RDEPENDS_perl-module-extutils-manifest += "perl-module-file-spec "
-RDEPENDS_perl-module-extutils-manifest += "perl-module-strict "
-RDEPENDS_perl-module-extutils-miniperl += "perl-module-exporter "
-RDEPENDS_perl-module-extutils-mkbootstrap += "perl-module-config "
-RDEPENDS_perl-module-extutils-mkbootstrap += "perl-module-exporter "
-RDEPENDS_perl-module-extutils-mksymlists += "perl-module-carp "
-RDEPENDS_perl-module-extutils-mksymlists += "perl-module-config "
-RDEPENDS_perl-module-extutils-mksymlists += "perl-module-exporter "
-RDEPENDS_perl-module-extutils-mksymlists += "perl-module-strict "
-RDEPENDS_perl-module-extutils-mksymlists += "perl-module-vars "
-RDEPENDS_perl-module-extutils-mm-any += "perl-module-config "
-RDEPENDS_perl-module-extutils-mm-any += "perl-module-file-spec "
-RDEPENDS_perl-module-extutils-mm-any += "perl-module-strict "
-RDEPENDS_perl-module-extutils-mm-any += "perl-module-vars "
-RDEPENDS_perl-module-extutils-mm-beos += "perl-module-extutils-mm-any "
-RDEPENDS_perl-module-extutils-mm-beos += "perl-module-extutils-mm-unix "
-RDEPENDS_perl-module-extutils-mm-beos += "perl-module-config "
-RDEPENDS_perl-module-extutils-mm-beos += "perl-module-file-spec "
-RDEPENDS_perl-module-extutils-mm-beos += "perl-module-vars "
-RDEPENDS_perl-module-extutils-mm-cygwin += "perl-module-extutils-mm-any "
-RDEPENDS_perl-module-extutils-mm-cygwin += "perl-module-extutils-mm-unix "
-RDEPENDS_perl-module-extutils-mm-cygwin += "perl-module-config "
-RDEPENDS_perl-module-extutils-mm-cygwin += "perl-module-file-spec "
-RDEPENDS_perl-module-extutils-mm-cygwin += "perl-module-strict "
-RDEPENDS_perl-module-extutils-mm-cygwin += "perl-module-vars "
-RDEPENDS_perl-module-extutils-mm-dos += "perl-module-extutils-mm-any "
-RDEPENDS_perl-module-extutils-mm-dos += "perl-module-extutils-mm-unix "
-RDEPENDS_perl-module-extutils-mm-dos += "perl-module-strict "
-RDEPENDS_perl-module-extutils-mm-dos += "perl-module-vars "
-RDEPENDS_perl-module-extutils-mm-macos += "perl-module-exporter "
-RDEPENDS_perl-module-extutils-mm-macos += "perl-module-extutils-mm-any "
-RDEPENDS_perl-module-extutils-mm-macos += "perl-module-extutils-mm-unix "
-RDEPENDS_perl-module-extutils-mm-macos += "perl-module-config "
-RDEPENDS_perl-module-extutils-mm-macos += "perl-module-cwd "
-RDEPENDS_perl-module-extutils-mm-macos += "perl-module-extutils-makemaker "
-RDEPENDS_perl-module-extutils-mm-macos += "perl-module-file-basename "
-RDEPENDS_perl-module-extutils-mm-macos += "perl-module-vars "
-RDEPENDS_perl-module-extutils-mm-nw5 += "perl-module-extutils-mm-win32 "
-RDEPENDS_perl-module-extutils-mm-nw5 += "perl-module-config "
-RDEPENDS_perl-module-extutils-mm-nw5 += "perl-module-extutils-makemaker "
-RDEPENDS_perl-module-extutils-mm-nw5 += "perl-module-file-basename "
-RDEPENDS_perl-module-extutils-mm-nw5 += "perl-module-strict "
-RDEPENDS_perl-module-extutils-mm-nw5 += "perl-module-vars "
-RDEPENDS_perl-module-extutils-mm-os2 += "perl-module-extutils-mm-any "
-RDEPENDS_perl-module-extutils-mm-os2 += "perl-module-extutils-mm-unix "
-RDEPENDS_perl-module-extutils-mm-os2 += "perl-module-extutils-makemaker "
-RDEPENDS_perl-module-extutils-mm-os2 += "perl-module-file-spec "
-RDEPENDS_perl-module-extutils-mm-os2 += "perl-module-strict "
-RDEPENDS_perl-module-extutils-mm-os2 += "perl-module-vars "
-RDEPENDS_perl-module-extutils-mm-unix += "perl-module-extutils-mm-any "
-RDEPENDS_perl-module-extutils-mm-unix += "perl-module-carp "
-RDEPENDS_perl-module-extutils-mm-unix += "perl-module-config "
-RDEPENDS_perl-module-extutils-mm-unix += "perl-module-dirhandle "
-RDEPENDS_perl-module-extutils-mm-unix += "perl-module-exporter "
-RDEPENDS_perl-module-extutils-mm-unix += "perl-module-extutils-makemaker "
-RDEPENDS_perl-module-extutils-mm-unix += "perl-module-file-basename "
-RDEPENDS_perl-module-extutils-mm-unix += "perl-module-strict "
-RDEPENDS_perl-module-extutils-mm += "perl-module-extutils-liblist "
-RDEPENDS_perl-module-extutils-mm += "perl-module-extutils-makemaker "
-RDEPENDS_perl-module-extutils-mm += "perl-module-config "
-RDEPENDS_perl-module-extutils-mm += "perl-module-strict "
-RDEPENDS_perl-module-extutils-mm += "perl-module-vars "
-RDEPENDS_perl-module-extutils-mm-uwin += "perl-module-extutils-mm-unix "
-RDEPENDS_perl-module-extutils-mm-uwin += "perl-module-strict "
-RDEPENDS_perl-module-extutils-mm-uwin += "perl-module-vars "
-RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-extutils-mm-any "
-RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-extutils-mm-unix "
-RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-config "
-RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-extutils-makemaker "
-RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-file-basename "
-RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-file-spec "
-RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-strict "
-RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-vars "
-RDEPENDS_perl-module-extutils-mm-win95 += "perl-module-extutils-mm-win32 "
-RDEPENDS_perl-module-extutils-mm-win95 += "perl-module-config "
-RDEPENDS_perl-module-extutils-mm-win95 += "perl-module-vars "
-RDEPENDS_perl-module-extutils-mm-vms += "perl-module-exporter "
-RDEPENDS_perl-module-extutils-mm-vms += "perl-module-extutils-mm-any "
-RDEPENDS_perl-module-extutils-mm-vms += "perl-module-extutils-mm-unix "
-RDEPENDS_perl-module-extutils-mm-vms += "perl-module-config "
-RDEPENDS_perl-module-extutils-mm-vms += "perl-module-extutils-makemaker "
-RDEPENDS_perl-module-extutils-mm-vms += "perl-module-file-basename "
-RDEPENDS_perl-module-extutils-mm-vms += "perl-module-strict "
-RDEPENDS_perl-module-extutils-mm-vms += "perl-module-vars "
-RDEPENDS_perl-module-extutils-my += "perl-module-extutils-mm "
-RDEPENDS_perl-module-extutils-my += "perl-module-strict "
-RDEPENDS_perl-module-extutils-my += "perl-module-vars "
-RDEPENDS_perl-module-extutils-packlist += "perl-module-carp "
-RDEPENDS_perl-module-extutils-packlist += "perl-module-strict "
-RDEPENDS_perl-module-extutils-packlist += "perl-module-vars "
-RDEPENDS_perl-module-extutils-testlib += "perl-module-cwd "
-RDEPENDS_perl-module-extutils-testlib += "perl-module-file-spec "
-RDEPENDS_perl-module-extutils-testlib += "perl-module-lib "
-RDEPENDS_perl-module-fatal += "perl-module-carp "
-RDEPENDS_perl-module-fatal += "perl-module-strict "
-RDEPENDS_perl-module-fcntl += "perl-module-exporter "
-RDEPENDS_perl-module-fcntl += "perl-module-xsloader "
-RDEPENDS_perl-module-fields += "perl-module-strict "
-RDEPENDS_perl-module-fields += "perl-module-vars "
-RDEPENDS_perl-module-file-basename += "perl-module-exporter "
-RDEPENDS_perl-module-file-basename += "perl-module-warnings "
-RDEPENDS_perl-module-filecache += "perl-module-base "
-RDEPENDS_perl-module-filecache += "perl-module-carp "
-RDEPENDS_perl-module-filecache += "perl-module-config "
-RDEPENDS_perl-module-filecache += "perl-module-strict "
-RDEPENDS_perl-module-filecache += "perl-module-vars "
-RDEPENDS_perl-module-file-checktree += "perl-module-cwd "
-RDEPENDS_perl-module-file-checktree += "perl-module-exporter "
-RDEPENDS_perl-module-file-checktree += "perl-module-file-spec "
-RDEPENDS_perl-module-file-checktree += "perl-module-strict "
-RDEPENDS_perl-module-file-checktree += "perl-module-warnings "
-RDEPENDS_perl-module-file-compare += "perl-module-exporter "
-RDEPENDS_perl-module-file-compare += "perl-module-carp "
-RDEPENDS_perl-module-file-compare += "perl-module-strict "
-RDEPENDS_perl-module-file-compare += "perl-module-warnings "
-RDEPENDS_perl-module-file-copy += "perl-module-exporter "
-RDEPENDS_perl-module-file-copy += "perl-module-carp "
-RDEPENDS_perl-module-file-copy += "perl-module-config "
-RDEPENDS_perl-module-file-copy += "perl-module-file-spec "
-RDEPENDS_perl-module-file-copy += "perl-module-strict "
-RDEPENDS_perl-module-file-copy += "perl-module-warnings "
-RDEPENDS_perl-module-file-dosglob += "perl-module-strict "
-RDEPENDS_perl-module-file-dosglob += "perl-module-warnings "
-RDEPENDS_perl-module-file-find += "perl-module-cwd "
-RDEPENDS_perl-module-file-find += "perl-module-exporter "
-RDEPENDS_perl-module-file-find += "perl-module-file-basename "
-RDEPENDS_perl-module-file-find += "perl-module-file-spec "
-RDEPENDS_perl-module-file-find += "perl-module-strict "
-RDEPENDS_perl-module-file-find += "perl-module-warnings "
-RDEPENDS_perl-module-file-find += "perl-module-warnings-register "
-RDEPENDS_perl-module-file-glob += "perl-module-strict "
-RDEPENDS_perl-module-file-glob += "perl-module-xsloader "
-RDEPENDS_perl-module-filehandle += "perl-module-io-file "
-RDEPENDS_perl-module-filehandle += "perl-module-strict "
-RDEPENDS_perl-module-file-path += "perl-module-carp "
-RDEPENDS_perl-module-file-path += "perl-module-exporter "
-RDEPENDS_perl-module-file-path += "perl-module-file-basename "
-RDEPENDS_perl-module-file-path += "perl-module-strict "
-RDEPENDS_perl-module-file-path += "perl-module-warnings "
-RDEPENDS_perl-module-file-spec-cygwin += "perl-module-file-spec-unix "
-RDEPENDS_perl-module-file-spec-cygwin += "perl-module-strict "
-RDEPENDS_perl-module-file-spec-cygwin += "perl-module-vars "
-RDEPENDS_perl-module-file-spec-epoc += "perl-module-file-spec-unix "
-RDEPENDS_perl-module-file-spec-epoc += "perl-module-strict "
-RDEPENDS_perl-module-file-spec-epoc += "perl-module-vars "
-RDEPENDS_perl-module-file-spec-functions += "perl-module-exporter "
-RDEPENDS_perl-module-file-spec-functions += "perl-module-file-spec "
-RDEPENDS_perl-module-file-spec-functions += "perl-module-strict "
-RDEPENDS_perl-module-file-spec-functions += "perl-module-vars "
-RDEPENDS_perl-module-file-spec-mac += "perl-module-file-spec-unix "
-RDEPENDS_perl-module-file-spec-mac += "perl-module-strict "
-RDEPENDS_perl-module-file-spec-mac += "perl-module-vars "
-RDEPENDS_perl-module-file-spec-os2 += "perl-module-file-spec-unix "
-RDEPENDS_perl-module-file-spec-os2 += "perl-module-strict "
-RDEPENDS_perl-module-file-spec-os2 += "perl-module-vars "
-RDEPENDS_perl-module-file-spec-unix += "perl-module-strict "
-RDEPENDS_perl-module-file-spec-unix += "perl-module-vars "
-RDEPENDS_perl-module-file-spec += "perl-module-strict "
-RDEPENDS_perl-module-file-spec += "perl-module-vars "
-RDEPENDS_perl-module-file-spec-win32 += "perl-module-file-spec-unix "
-RDEPENDS_perl-module-file-spec-win32 += "perl-module-strict "
-RDEPENDS_perl-module-file-spec-win32 += "perl-module-vars "
-RDEPENDS_perl-module-file-spec-vms += "perl-module-file-spec-unix "
-RDEPENDS_perl-module-file-spec-vms += "perl-module-file-basename "
-RDEPENDS_perl-module-file-spec-vms += "perl-module-strict "
-RDEPENDS_perl-module-file-spec-vms += "perl-module-vars "
-RDEPENDS_perl-module-file-stat += "perl-module-class-struct "
-RDEPENDS_perl-module-file-stat += "perl-module-strict "
-RDEPENDS_perl-module-file-stat += "perl-module-warnings "
-RDEPENDS_perl-module-file-stat += "perl-module-vars "
-RDEPENDS_perl-module-file-temp += "perl-module-base "
-RDEPENDS_perl-module-file-temp += "perl-module-carp "
-RDEPENDS_perl-module-file-temp += "perl-module-constant "
-RDEPENDS_perl-module-file-temp += "perl-module-errno "
-RDEPENDS_perl-module-file-temp += "perl-module-fcntl "
-RDEPENDS_perl-module-file-temp += "perl-module-file-path "
-RDEPENDS_perl-module-file-temp += "perl-module-file-spec "
-RDEPENDS_perl-module-file-temp += "perl-module-overload "
-RDEPENDS_perl-module-file-temp += "perl-module-strict "
-RDEPENDS_perl-module-file-temp += "perl-module-vars "
-RDEPENDS_perl-module-filter-simple += "perl-module-carp "
-RDEPENDS_perl-module-filter-simple += "perl-module-filter-util-call "
-RDEPENDS_perl-module-filter-simple += "perl-module-text-balanced "
-RDEPENDS_perl-module-filter-simple += "perl-module-vars "
-RDEPENDS_perl-module-filter-util-call += "perl-module-dynaloader "
-RDEPENDS_perl-module-filter-util-call += "perl-module-exporter "
-RDEPENDS_perl-module-filter-util-call += "perl-module-carp "
-RDEPENDS_perl-module-filter-util-call += "perl-module-strict "
-RDEPENDS_perl-module-filter-util-call += "perl-module-warnings "
-RDEPENDS_perl-module-filter-util-call += "perl-module-vars "
-RDEPENDS_perl-module-findbin += "perl-module-exporter "
-RDEPENDS_perl-module-findbin += "perl-module-carp "
-RDEPENDS_perl-module-findbin += "perl-module-config "
-RDEPENDS_perl-module-findbin += "perl-module-cwd "
-RDEPENDS_perl-module-findbin += "perl-module-file-basename "
-RDEPENDS_perl-module-findbin += "perl-module-file-spec "
-RDEPENDS_perl-module-getopt-long += "perl-module-constant "
-RDEPENDS_perl-module-getopt-long += "perl-module-exporter "
-RDEPENDS_perl-module-getopt-long += "perl-module-strict "
-RDEPENDS_perl-module-getopt-long += "perl-module-vars "
-RDEPENDS_perl-module-getopt-std += "perl-module-exporter "
-RDEPENDS_perl-module-hash-util += "perl-module-exporter "
-RDEPENDS_perl-module-hash-util += "perl-module-carp "
-RDEPENDS_perl-module-hash-util += "perl-module-strict "
-RDEPENDS_perl-module-i18n-collate += "perl-module-exporter "
-RDEPENDS_perl-module-i18n-collate += "perl-module-posix "
-RDEPENDS_perl-module-i18n-collate += "perl-module-strict "
-RDEPENDS_perl-module-i18n-collate += "perl-module-warnings-register "
-RDEPENDS_perl-module-i18n-langinfo += "perl-module-dynaloader "
-RDEPENDS_perl-module-i18n-langinfo += "perl-module-exporter "
-RDEPENDS_perl-module-i18n-langinfo += "perl-module-autoloader "
-RDEPENDS_perl-module-i18n-langinfo += "perl-module-carp "
-RDEPENDS_perl-module-i18n-langinfo += "perl-module-strict "
-RDEPENDS_perl-module-i18n-langinfo += "perl-module-warnings "
-RDEPENDS_perl-module-i18n-langtags-detect += "perl-module-i18n-langtags "
-RDEPENDS_perl-module-i18n-langtags-detect += "perl-module-strict "
-RDEPENDS_perl-module-i18n-langtags-list += "perl-module-strict "
-RDEPENDS_perl-module-i18n-langtags-list += "perl-module-vars "
-RDEPENDS_perl-module-i18n-langtags += "perl-module-exporter "
-RDEPENDS_perl-module-i18n-langtags += "perl-module-strict "
-RDEPENDS_perl-module-i18n-langtags += "perl-module-vars "
-RDEPENDS_perl-module-io-dir += "perl-module-carp "
-RDEPENDS_perl-module-io-dir += "perl-module-exporter "
-RDEPENDS_perl-module-io-dir += "perl-module-file-spec "
-RDEPENDS_perl-module-io-dir += "perl-module-file-stat "
-RDEPENDS_perl-module-io-dir += "perl-module-io-file "
-RDEPENDS_perl-module-io-dir += "perl-module-strict "
-RDEPENDS_perl-module-io-dir += "perl-module-symbol "
-RDEPENDS_perl-module-io-dir += "perl-module-tie-hash "
-RDEPENDS_perl-module-io-file += "perl-module-exporter "
-RDEPENDS_perl-module-io-file += "perl-module-carp "
-RDEPENDS_perl-module-io-file += "perl-module-file-spec "
-RDEPENDS_perl-module-io-file += "perl-module-io-seekable "
-RDEPENDS_perl-module-io-file += "perl-module-selectsaver "
-RDEPENDS_perl-module-io-file += "perl-module-strict "
-RDEPENDS_perl-module-io-file += "perl-module-symbol "
-RDEPENDS_perl-module-io-handle += "perl-module-exporter "
-RDEPENDS_perl-module-io-handle += "perl-module-carp "
-RDEPENDS_perl-module-io-handle += "perl-module-selectsaver "
-RDEPENDS_perl-module-io-handle += "perl-module-strict "
-RDEPENDS_perl-module-io-handle += "perl-module-symbol "
-RDEPENDS_perl-module-io-pipe += "perl-module-carp "
-RDEPENDS_perl-module-io-pipe += "perl-module-io-handle "
-RDEPENDS_perl-module-io-pipe += "perl-module-strict "
-RDEPENDS_perl-module-io-pipe += "perl-module-symbol "
-RDEPENDS_perl-module-io-poll += "perl-module-exporter "
-RDEPENDS_perl-module-io-poll += "perl-module-io-handle "
-RDEPENDS_perl-module-io-poll += "perl-module-strict "
-RDEPENDS_perl-module-io-seekable += "perl-module-exporter "
-RDEPENDS_perl-module-io-seekable += "perl-module-carp "
-RDEPENDS_perl-module-io-seekable += "perl-module-fcntl "
-RDEPENDS_perl-module-io-seekable += "perl-module-io-handle "
-RDEPENDS_perl-module-io-seekable += "perl-module-strict "
-RDEPENDS_perl-module-io-select += "perl-module-exporter "
-RDEPENDS_perl-module-io-select += "perl-module-strict "
-RDEPENDS_perl-module-io-select += "perl-module-warnings-register "
-RDEPENDS_perl-module-io-select += "perl-module-vars "
-RDEPENDS_perl-module-io-socket-inet += "perl-module-carp "
-RDEPENDS_perl-module-io-socket-inet += "perl-module-errno "
-RDEPENDS_perl-module-io-socket-inet += "perl-module-exporter "
-RDEPENDS_perl-module-io-socket-inet += "perl-module-io-socket "
-RDEPENDS_perl-module-io-socket-inet += "perl-module-socket "
-RDEPENDS_perl-module-io-socket-inet += "perl-module-strict "
-RDEPENDS_perl-module-io-socket-unix += "perl-module-carp "
-RDEPENDS_perl-module-io-socket-unix += "perl-module-io-socket "
-RDEPENDS_perl-module-io-socket-unix += "perl-module-socket "
-RDEPENDS_perl-module-io-socket-unix += "perl-module-strict "
-RDEPENDS_perl-module-io-socket += "perl-module-io-socket-inet "
-RDEPENDS_perl-module-io-socket += "perl-module-io-socket-unix "
-RDEPENDS_perl-module-io-socket += "perl-module-carp "
-RDEPENDS_perl-module-io-socket += "perl-module-errno "
-RDEPENDS_perl-module-io-socket += "perl-module-exporter "
-RDEPENDS_perl-module-io-socket += "perl-module-io-handle "
-RDEPENDS_perl-module-io-socket += "perl-module-socket "
-RDEPENDS_perl-module-io-socket += "perl-module-strict "
-RDEPENDS_perl-module-io += "perl-module-carp "
-RDEPENDS_perl-module-io += "perl-module-strict "
-RDEPENDS_perl-module-io += "perl-module-warnings "
-RDEPENDS_perl-module-io += "perl-module-xsloader "
-RDEPENDS_perl-module-ipc-msg += "perl-module-carp "
-RDEPENDS_perl-module-ipc-msg += "perl-module-ipc-sysv "
-RDEPENDS_perl-module-ipc-msg += "perl-module-strict "
-RDEPENDS_perl-module-ipc-msg += "perl-module-vars "
-RDEPENDS_perl-module-ipc-open2 += "perl-module-exporter "
-RDEPENDS_perl-module-ipc-open2 += "perl-module-ipc-open3 "
-RDEPENDS_perl-module-ipc-open2 += "perl-module-strict "
-RDEPENDS_perl-module-ipc-open3 += "perl-module-exporter "
-RDEPENDS_perl-module-ipc-open3 += "perl-module-carp "
-RDEPENDS_perl-module-ipc-open3 += "perl-module-strict "
-RDEPENDS_perl-module-ipc-open3 += "perl-module-symbol "
-RDEPENDS_perl-module-ipc-semaphore += "perl-module-carp "
-RDEPENDS_perl-module-ipc-semaphore += "perl-module-strict "
-RDEPENDS_perl-module-ipc-semaphore += "perl-module-vars "
-RDEPENDS_perl-module-ipc-sysv += "perl-module-exporter "
-RDEPENDS_perl-module-ipc-sysv += "perl-module-carp "
-RDEPENDS_perl-module-ipc-sysv += "perl-module-config "
-RDEPENDS_perl-module-ipc-sysv += "perl-module-strict "
-RDEPENDS_perl-module-ipc-sysv += "perl-module-vars "
-RDEPENDS_perl-module-lib += "perl-module-config "
-RDEPENDS_perl-module-lib += "perl-module-strict "
-RDEPENDS_perl-module-list-util += "perl-module-exporter "
-RDEPENDS_perl-module-list-util += "perl-module-vars "
-RDEPENDS_perl-module-locale-constants += "perl-module-exporter "
-RDEPENDS_perl-module-locale-constants += "perl-module-constant "
-RDEPENDS_perl-module-locale-constants += "perl-module-strict "
-RDEPENDS_perl-module-locale-constants += "perl-module-vars "
-RDEPENDS_perl-module-locale-country += "perl-module-exporter "
-RDEPENDS_perl-module-locale-country += "perl-module-carp "
-RDEPENDS_perl-module-locale-country += "perl-module-locale-constants "
-RDEPENDS_perl-module-locale-country += "perl-module-strict "
-RDEPENDS_perl-module-locale-country += "perl-module-vars "
-RDEPENDS_perl-module-locale-currency += "perl-module-exporter "
-RDEPENDS_perl-module-locale-currency += "perl-module-strict "
-RDEPENDS_perl-module-locale-currency += "perl-module-vars "
-RDEPENDS_perl-module-locale-language += "perl-module-exporter "
-RDEPENDS_perl-module-locale-language += "perl-module-strict "
-RDEPENDS_perl-module-locale-language += "perl-module-vars "
-RDEPENDS_perl-module-locale-maketext-gutsloader += "perl-module-strict "
-RDEPENDS_perl-module-locale-maketext-guts += "perl-module-strict "
-RDEPENDS_perl-module-locale-maketext-guts += "perl-module-utf8 "
-RDEPENDS_perl-module-locale-maketext-guts += "perl-module-vars "
-RDEPENDS_perl-module-locale-maketext += "perl-module-carp "
-RDEPENDS_perl-module-locale-maketext += "perl-module-i18n-langtags "
-RDEPENDS_perl-module-locale-maketext += "perl-module-locale-maketext-gutsloader "
-RDEPENDS_perl-module-locale-maketext += "perl-module-strict "
-RDEPENDS_perl-module-locale-script += "perl-module-exporter "
-RDEPENDS_perl-module-locale-script += "perl-module-carp "
-RDEPENDS_perl-module-locale-script += "perl-module-locale-constants "
-RDEPENDS_perl-module-locale-script += "perl-module-strict "
-RDEPENDS_perl-module-locale-script += "perl-module-vars "
-RDEPENDS_perl-module-math-bigfloat-trace += "perl-module-exporter "
-RDEPENDS_perl-module-math-bigfloat-trace += "perl-module-math-bigfloat "
-RDEPENDS_perl-module-math-bigfloat-trace += "perl-module-strict "
-RDEPENDS_perl-module-math-bigfloat += "perl-module-exporter "
-RDEPENDS_perl-module-math-bigfloat += "perl-module-strict "
-RDEPENDS_perl-module-math-bigint-calcemu += "perl-module-strict "
-RDEPENDS_perl-module-math-bigint-calcemu += "perl-module-vars "
-RDEPENDS_perl-module-math-bigint-calc += "perl-module-strict "
-RDEPENDS_perl-module-math-bigint-calc += "perl-module-vars "
-RDEPENDS_perl-module-math-bigint-trace += "perl-module-exporter "
-RDEPENDS_perl-module-math-bigint-trace += "perl-module-math-bigint "
-RDEPENDS_perl-module-math-bigint-trace += "perl-module-strict "
-RDEPENDS_perl-module-math-bigint += "perl-module-strict "
-RDEPENDS_perl-module-math-bigrat += "perl-module-math-bigfloat "
-RDEPENDS_perl-module-math-bigrat += "perl-module-strict "
-RDEPENDS_perl-module-math-complex += "perl-module-exporter "
-RDEPENDS_perl-module-math-complex += "perl-module-strict "
-RDEPENDS_perl-module-math-trig += "perl-module-exporter "
-RDEPENDS_perl-module-math-trig += "perl-module-math-complex "
-RDEPENDS_perl-module-math-trig += "perl-module-strict "
-RDEPENDS_perl-module-memoize-anydbm-file += "perl-module-vars "
-RDEPENDS_perl-module-memoize-expirefile += "perl-module-carp "
-RDEPENDS_perl-module-memoize-expire += "perl-module-carp "
-RDEPENDS_perl-module-memoize-sdbm-file += "perl-module-sdbm-file "
-RDEPENDS_perl-module-memoize-storable += "perl-module-storable "
-RDEPENDS_perl-module-memoize += "perl-module-carp "
-RDEPENDS_perl-module-memoize += "perl-module-exporter "
-RDEPENDS_perl-module-memoize += "perl-module-strict "
-RDEPENDS_perl-module-memoize += "perl-module-vars "
-RDEPENDS_perl-module-mime-base64 += "perl-module-dynaloader "
-RDEPENDS_perl-module-mime-base64 += "perl-module-exporter "
-RDEPENDS_perl-module-mime-base64 += "perl-module-strict "
-RDEPENDS_perl-module-mime-base64 += "perl-module-vars "
-RDEPENDS_perl-module-mime-quotedprint += "perl-module-exporter "
-RDEPENDS_perl-module-mime-quotedprint += "perl-module-strict "
-RDEPENDS_perl-module-mime-quotedprint += "perl-module-vars "
-RDEPENDS_perl-module-net-cmd += "perl-module-exporter "
-RDEPENDS_perl-module-net-cmd += "perl-module-carp "
-RDEPENDS_perl-module-net-cmd += "perl-module-strict "
-RDEPENDS_perl-module-net-cmd += "perl-module-symbol "
-RDEPENDS_perl-module-net-cmd += "perl-module-vars "
-RDEPENDS_perl-module-net-config += "perl-module-exporter "
-RDEPENDS_perl-module-net-config += "perl-module-socket "
-RDEPENDS_perl-module-net-config += "perl-module-strict "
-RDEPENDS_perl-module-net-config += "perl-module-vars "
-RDEPENDS_perl-module-net-domain += "perl-module-exporter "
-RDEPENDS_perl-module-net-domain += "perl-module-carp "
-RDEPENDS_perl-module-net-domain += "perl-module-net-config "
-RDEPENDS_perl-module-net-domain += "perl-module-strict "
-RDEPENDS_perl-module-net-domain += "perl-module-vars "
-RDEPENDS_perl-module-net-ftp-a += "perl-module-net-ftp-dataconn "
-RDEPENDS_perl-module-net-ftp-a += "perl-module-carp "
-RDEPENDS_perl-module-net-ftp-a += "perl-module-strict "
-RDEPENDS_perl-module-net-ftp-a += "perl-module-vars "
-RDEPENDS_perl-module-net-ftp-dataconn += "perl-module-carp "
-RDEPENDS_perl-module-net-ftp-dataconn += "perl-module-errno "
-RDEPENDS_perl-module-net-ftp-dataconn += "perl-module-net-cmd "
-RDEPENDS_perl-module-net-ftp-dataconn += "perl-module-vars "
-RDEPENDS_perl-module-net-ftp-e += "perl-module-net-ftp-i "
-RDEPENDS_perl-module-net-ftp-i += "perl-module-net-ftp-dataconn "
-RDEPENDS_perl-module-net-ftp-i += "perl-module-carp "
-RDEPENDS_perl-module-net-ftp-i += "perl-module-vars "
-RDEPENDS_perl-module-net-ftp-l += "perl-module-net-ftp-i "
-RDEPENDS_perl-module-net-ftp += "perl-module-carp "
-RDEPENDS_perl-module-net-ftp += "perl-module-fcntl "
-RDEPENDS_perl-module-net-ftp += "perl-module-io-socket "
-RDEPENDS_perl-module-net-ftp += "perl-module-net-cmd "
-RDEPENDS_perl-module-net-ftp += "perl-module-net-config "
-RDEPENDS_perl-module-net-ftp += "perl-module-socket "
-RDEPENDS_perl-module-net-ftp += "perl-module-strict "
-RDEPENDS_perl-module-net-ftp += "perl-module-time-local "
-RDEPENDS_perl-module-net-ftp += "perl-module-vars "
-RDEPENDS_perl-module-net-hostent += "perl-module-class-struct "
-RDEPENDS_perl-module-net-hostent += "perl-module-strict "
-RDEPENDS_perl-module-net-hostent += "perl-module-vars "
-RDEPENDS_perl-module-net-netent += "perl-module-class-struct "
-RDEPENDS_perl-module-net-netent += "perl-module-strict "
-RDEPENDS_perl-module-net-netent += "perl-module-vars "
-RDEPENDS_perl-module-net-netrc += "perl-module-carp "
-RDEPENDS_perl-module-net-netrc += "perl-module-filehandle "
-RDEPENDS_perl-module-net-netrc += "perl-module-strict "
-RDEPENDS_perl-module-net-netrc += "perl-module-vars "
-RDEPENDS_perl-module-net-nntp += "perl-module-carp "
-RDEPENDS_perl-module-net-nntp += "perl-module-io-socket "
-RDEPENDS_perl-module-net-nntp += "perl-module-net-cmd "
-RDEPENDS_perl-module-net-nntp += "perl-module-net-config "
-RDEPENDS_perl-module-net-nntp += "perl-module-strict "
-RDEPENDS_perl-module-net-nntp += "perl-module-time-local "
-RDEPENDS_perl-module-net-nntp += "perl-module-vars "
-RDEPENDS_perl-module-net-ping += "perl-module-exporter "
-RDEPENDS_perl-module-net-ping += "perl-module-carp "
-RDEPENDS_perl-module-net-ping += "perl-module-constant "
-RDEPENDS_perl-module-net-ping += "perl-module-fcntl "
-RDEPENDS_perl-module-net-ping += "perl-module-filehandle "
-RDEPENDS_perl-module-net-ping += "perl-module-posix "
-RDEPENDS_perl-module-net-ping += "perl-module-strict "
-RDEPENDS_perl-module-net-pop3 += "perl-module-carp "
-RDEPENDS_perl-module-net-pop3 += "perl-module-io-socket "
-RDEPENDS_perl-module-net-pop3 += "perl-module-net-cmd "
-RDEPENDS_perl-module-net-pop3 += "perl-module-net-config "
-RDEPENDS_perl-module-net-pop3 += "perl-module-strict "
-RDEPENDS_perl-module-net-pop3 += "perl-module-vars "
-RDEPENDS_perl-module-net-protoent += "perl-module-class-struct "
-RDEPENDS_perl-module-net-protoent += "perl-module-strict "
-RDEPENDS_perl-module-net-protoent += "perl-module-vars "
-RDEPENDS_perl-module-net-servent += "perl-module-class-struct "
-RDEPENDS_perl-module-net-servent += "perl-module-strict "
-RDEPENDS_perl-module-net-servent += "perl-module-vars "
-RDEPENDS_perl-module-net-smtp += "perl-module-carp "
-RDEPENDS_perl-module-net-smtp += "perl-module-io-socket "
-RDEPENDS_perl-module-net-smtp += "perl-module-net-cmd "
-RDEPENDS_perl-module-net-smtp += "perl-module-net-config "
-RDEPENDS_perl-module-net-smtp += "perl-module-socket "
-RDEPENDS_perl-module-net-smtp += "perl-module-strict "
-RDEPENDS_perl-module-net-smtp += "perl-module-vars "
-RDEPENDS_perl-module-net-time += "perl-module-exporter "
-RDEPENDS_perl-module-net-time += "perl-module-carp "
-RDEPENDS_perl-module-net-time += "perl-module-io-select "
-RDEPENDS_perl-module-net-time += "perl-module-io-socket "
-RDEPENDS_perl-module-net-time += "perl-module-net-config "
-RDEPENDS_perl-module-net-time += "perl-module-strict "
-RDEPENDS_perl-module-net-time += "perl-module-vars "
-RDEPENDS_perl-module-next += "perl-module-carp "
-RDEPENDS_perl-module-next += "perl-module-strict "
-RDEPENDS_perl-module-opcode += "perl-module-carp "
-RDEPENDS_perl-module-opcode += "perl-module-exporter "
-RDEPENDS_perl-module-opcode += "perl-module-strict "
-RDEPENDS_perl-module-opcode += "perl-module-subs "
-RDEPENDS_perl-module-opcode += "perl-module-xsloader "
-RDEPENDS_perl-module-open += "perl-module-carp "
-RDEPENDS_perl-module-open += "perl-module-warnings "
-RDEPENDS_perl-module-ops += "perl-module-opcode "
-RDEPENDS_perl-module-o += "perl-module-b "
-RDEPENDS_perl-module-o += "perl-module-carp "
-RDEPENDS_perl-module-overload += "perl-module-warnings-register "
-RDEPENDS_perl-module-perlio-encoding += "perl-module-strict "
-RDEPENDS_perl-module-perlio-encoding += "perl-module-xsloader "
-RDEPENDS_perl-module-perlio-scalar += "perl-module-xsloader "
-RDEPENDS_perl-module-perlio-via-quotedprint += "perl-module-strict "
-RDEPENDS_perl-module-perlio-via += "perl-module-xsloader "
-RDEPENDS_perl-module-pod-checker += "perl-module-carp "
-RDEPENDS_perl-module-pod-checker += "perl-module-exporter "
-RDEPENDS_perl-module-pod-checker += "perl-module-pod-parser "
-RDEPENDS_perl-module-pod-checker += "perl-module-strict "
-RDEPENDS_perl-module-pod-checker += "perl-module-vars "
-RDEPENDS_perl-module-pod-find += "perl-module-carp "
-RDEPENDS_perl-module-pod-find += "perl-module-cwd "
-RDEPENDS_perl-module-pod-find += "perl-module-exporter "
-RDEPENDS_perl-module-pod-find += "perl-module-file-find "
-RDEPENDS_perl-module-pod-find += "perl-module-file-spec "
-RDEPENDS_perl-module-pod-find += "perl-module-strict "
-RDEPENDS_perl-module-pod-find += "perl-module-vars "
-RDEPENDS_perl-module-pod-functions += "perl-module-exporter "
-RDEPENDS_perl-module-pod-functions += "perl-module-strict "
-RDEPENDS_perl-module-pod-html += "perl-module-exporter "
-RDEPENDS_perl-module-pod-html += "perl-module-carp "
-RDEPENDS_perl-module-pod-html += "perl-module-config "
-RDEPENDS_perl-module-pod-html += "perl-module-cwd "
-RDEPENDS_perl-module-pod-html += "perl-module-file-spec "
-RDEPENDS_perl-module-pod-html += "perl-module-file-spec-unix "
-RDEPENDS_perl-module-pod-html += "perl-module-getopt-long "
-RDEPENDS_perl-module-pod-html += "perl-module-strict "
-RDEPENDS_perl-module-pod-html += "perl-module-vars "
-RDEPENDS_perl-module-pod-inputobjects += "perl-module-strict "
-RDEPENDS_perl-module-pod-inputobjects += "perl-module-vars "
-RDEPENDS_perl-module-pod-latex += "perl-module-pod-parseutils "
-RDEPENDS_perl-module-pod-latex += "perl-module-base "
-RDEPENDS_perl-module-pod-latex += "perl-module-carp "
-RDEPENDS_perl-module-pod-latex += "perl-module-strict "
-RDEPENDS_perl-module-pod-latex += "perl-module-vars "
-RDEPENDS_perl-module-pod-man += "perl-module-carp "
-RDEPENDS_perl-module-pod-man += "perl-module-pod-parselink "
-RDEPENDS_perl-module-pod-man += "perl-module-pod-parser "
-RDEPENDS_perl-module-pod-man += "perl-module-strict "
-RDEPENDS_perl-module-pod-man += "perl-module-subs "
-RDEPENDS_perl-module-pod-man += "perl-module-vars "
-RDEPENDS_perl-module-pod-parselink += "perl-module-exporter "
-RDEPENDS_perl-module-pod-parselink += "perl-module-strict "
-RDEPENDS_perl-module-pod-parselink += "perl-module-vars "
-RDEPENDS_perl-module-pod-parser += "perl-module-carp "
-RDEPENDS_perl-module-pod-parser += "perl-module-exporter "
-RDEPENDS_perl-module-pod-parser += "perl-module-pod-inputobjects "
-RDEPENDS_perl-module-pod-parser += "perl-module-strict "
-RDEPENDS_perl-module-pod-parser += "perl-module-vars "
-RDEPENDS_perl-module-pod-parseutils += "perl-module-carp "
-RDEPENDS_perl-module-pod-parseutils += "perl-module-vars "
-RDEPENDS_perl-module-pod-perldoc-baseto += "perl-module-strict "
-RDEPENDS_perl-module-pod-perldoc-baseto += "perl-module-warnings "
-RDEPENDS_perl-module-pod-perldoc-getoptsoo += "perl-module-strict "
-RDEPENDS_perl-module-pod-perldoc-tochecker += "perl-module-strict "
-RDEPENDS_perl-module-pod-perldoc-tochecker += "perl-module-warnings "
-RDEPENDS_perl-module-pod-perldoc-tochecker += "perl-module-vars "
-RDEPENDS_perl-module-pod-perldoc-toman += "perl-module-base "
-RDEPENDS_perl-module-pod-perldoc-toman += "perl-module-file-spec-functions "
-RDEPENDS_perl-module-pod-perldoc-toman += "perl-module-strict "
-RDEPENDS_perl-module-pod-perldoc-toman += "perl-module-warnings "
-RDEPENDS_perl-module-pod-perldoc-tonroff += "perl-module-base "
-RDEPENDS_perl-module-pod-perldoc-tonroff += "perl-module-pod-man "
-RDEPENDS_perl-module-pod-perldoc-tonroff += "perl-module-strict "
-RDEPENDS_perl-module-pod-perldoc-tonroff += "perl-module-warnings "
-RDEPENDS_perl-module-pod-perldoc-topod += "perl-module-base "
-RDEPENDS_perl-module-pod-perldoc-topod += "perl-module-strict "
-RDEPENDS_perl-module-pod-perldoc-topod += "perl-module-warnings "
-RDEPENDS_perl-module-pod-perldoc-tortf += "perl-module-base "
-RDEPENDS_perl-module-pod-perldoc-tortf += "perl-module-strict "
-RDEPENDS_perl-module-pod-perldoc-tortf += "perl-module-warnings "
-RDEPENDS_perl-module-pod-perldoc-tortf += "perl-module-vars "
-RDEPENDS_perl-module-pod-perldoc-totext += "perl-module-base "
-RDEPENDS_perl-module-pod-perldoc-totext += "perl-module-pod-text "
-RDEPENDS_perl-module-pod-perldoc-totext += "perl-module-strict "
-RDEPENDS_perl-module-pod-perldoc-totext += "perl-module-warnings "
-RDEPENDS_perl-module-pod-perldoc-totk += "perl-module-base "
-RDEPENDS_perl-module-pod-perldoc-totk += "perl-module-file-spec-functions "
-RDEPENDS_perl-module-pod-perldoc-totk += "perl-module-pod-perldoc "
-RDEPENDS_perl-module-pod-perldoc-totk += "perl-module-strict "
-RDEPENDS_perl-module-pod-perldoc-totk += "perl-module-warnings "
-RDEPENDS_perl-module-pod-perldoc-toxml += "perl-module-base "
-RDEPENDS_perl-module-pod-perldoc-toxml += "perl-module-strict "
-RDEPENDS_perl-module-pod-perldoc-toxml += "perl-module-warnings "
-RDEPENDS_perl-module-pod-perldoc-toxml += "perl-module-vars "
-RDEPENDS_perl-module-pod-perldoc += "perl-module-config "
-RDEPENDS_perl-module-pod-perldoc += "perl-module-file-spec-functions "
-RDEPENDS_perl-module-pod-perldoc += "perl-module-strict "
-RDEPENDS_perl-module-pod-perldoc += "perl-module-warnings "
-RDEPENDS_perl-module-pod-plainer += "perl-module-pod-parser "
-RDEPENDS_perl-module-pod-plainer += "perl-module-strict "
-RDEPENDS_perl-module-pod-plaintext += "perl-module-carp "
-RDEPENDS_perl-module-pod-plaintext += "perl-module-pod-select "
-RDEPENDS_perl-module-pod-plaintext += "perl-module-strict "
-RDEPENDS_perl-module-pod-plaintext += "perl-module-vars "
-RDEPENDS_perl-module-pod-select += "perl-module-carp "
-RDEPENDS_perl-module-pod-select += "perl-module-pod-parser "
-RDEPENDS_perl-module-pod-select += "perl-module-strict "
-RDEPENDS_perl-module-pod-select += "perl-module-vars "
-RDEPENDS_perl-module-pod-text-color += "perl-module-pod-text "
-RDEPENDS_perl-module-pod-text-color += "perl-module-strict "
-RDEPENDS_perl-module-pod-text-color += "perl-module-term-ansicolor "
-RDEPENDS_perl-module-pod-text-color += "perl-module-vars "
-RDEPENDS_perl-module-pod-text-overstrike += "perl-module-pod-text "
-RDEPENDS_perl-module-pod-text-overstrike += "perl-module-strict "
-RDEPENDS_perl-module-pod-text-overstrike += "perl-module-vars "
-RDEPENDS_perl-module-pod-text-termcap += "perl-module-pod-text "
-RDEPENDS_perl-module-pod-text-termcap += "perl-module-posix "
-RDEPENDS_perl-module-pod-text-termcap += "perl-module-strict "
-RDEPENDS_perl-module-pod-text-termcap += "perl-module-term-cap "
-RDEPENDS_perl-module-pod-text-termcap += "perl-module-vars "
-RDEPENDS_perl-module-pod-text += "perl-module-carp "
-RDEPENDS_perl-module-pod-text += "perl-module-exporter "
-RDEPENDS_perl-module-pod-text += "perl-module-pod-parselink "
-RDEPENDS_perl-module-pod-text += "perl-module-pod-select "
-RDEPENDS_perl-module-pod-text += "perl-module-strict "
-RDEPENDS_perl-module-pod-text += "perl-module-vars "
-RDEPENDS_perl-module-pod-usage += "perl-module-carp "
-RDEPENDS_perl-module-pod-usage += "perl-module-config "
-RDEPENDS_perl-module-pod-usage += "perl-module-exporter "
-RDEPENDS_perl-module-pod-usage += "perl-module-file-spec "
-RDEPENDS_perl-module-pod-usage += "perl-module-strict "
-RDEPENDS_perl-module-pod-usage += "perl-module-vars "
-RDEPENDS_perl-module-posix += "perl-module-exporter "
-RDEPENDS_perl-module-posix += "perl-module-autoloader "
-RDEPENDS_perl-module-posix += "perl-module-autoloader "
-RDEPENDS_perl-module-posix += "perl-module-xsloader "
-RDEPENDS_perl-module-safe += "perl-module-carp "
-RDEPENDS_perl-module-safe += "perl-module-carp-heavy "
-RDEPENDS_perl-module-safe += "perl-module-strict "
-RDEPENDS_perl-module-scalar-util += "perl-module-exporter "
-RDEPENDS_perl-module-sdbm-file += "perl-module-tie-hash "
-RDEPENDS_perl-module-sdbm-file += "perl-module-strict "
-RDEPENDS_perl-module-sdbm-file += "perl-module-warnings "
-RDEPENDS_perl-module-sdbm-file += "perl-module-xsloader "
-RDEPENDS_perl-module-search-dict += "perl-module-exporter "
-RDEPENDS_perl-module-search-dict += "perl-module-strict "
-RDEPENDS_perl-module-selectsaver += "perl-module-carp "
-RDEPENDS_perl-module-selectsaver += "perl-module-symbol "
-RDEPENDS_perl-module-selfloader += "perl-module-exporter "
-RDEPENDS_perl-module-shell += "perl-module-file-spec-functions "
-RDEPENDS_perl-module-shell += "perl-module-strict "
-RDEPENDS_perl-module-shell += "perl-module-warnings "
-RDEPENDS_perl-module-sigtrap += "perl-module-carp "
-RDEPENDS_perl-module-socket += "perl-module-exporter "
-RDEPENDS_perl-module-socket += "perl-module-carp "
-RDEPENDS_perl-module-socket += "perl-module-warnings-register "
-RDEPENDS_perl-module-socket += "perl-module-xsloader "
-RDEPENDS_perl-module-sort += "perl-module-strict "
-RDEPENDS_perl-module-storable += "perl-module-carp "
-RDEPENDS_perl-module-storable += "perl-module-dynaloader "
-RDEPENDS_perl-module-storable += "perl-module-exporter "
-RDEPENDS_perl-module-storable += "perl-module-autoloader "
-RDEPENDS_perl-module-storable += "perl-module-vars "
-RDEPENDS_perl-module-switch += "perl-module-carp "
-RDEPENDS_perl-module-switch += "perl-module-filter-util-call "
-RDEPENDS_perl-module-switch += "perl-module-strict "
-RDEPENDS_perl-module-switch += "perl-module-text-balanced "
-RDEPENDS_perl-module-switch += "perl-module-vars "
-RDEPENDS_perl-module-symbol += "perl-module-exporter "
-RDEPENDS_perl-module-sys-hostname += "perl-module-autoloader "
-RDEPENDS_perl-module-sys-hostname += "perl-module-exporter "
-RDEPENDS_perl-module-sys-hostname += "perl-module-carp "
-RDEPENDS_perl-module-sys-hostname += "perl-module-strict "
-RDEPENDS_perl-module-sys-syslog += "perl-module-dynaloader "
-RDEPENDS_perl-module-sys-syslog += "perl-module-exporter "
-RDEPENDS_perl-module-sys-syslog += "perl-module-carp "
-RDEPENDS_perl-module-sys-syslog += "perl-module-socket "
-RDEPENDS_perl-module-sys-syslog += "perl-module-strict "
-RDEPENDS_perl-module-sys-syslog += "perl-module-sys-hostname "
-RDEPENDS_perl-module-term-ansicolor += "perl-module-exporter "
-RDEPENDS_perl-module-term-ansicolor += "perl-module-strict "
-RDEPENDS_perl-module-term-cap += "perl-module-strict "
-RDEPENDS_perl-module-term-cap += "perl-module-vars "
-RDEPENDS_perl-module-term-complete += "perl-module-exporter "
-RDEPENDS_perl-module-term-complete += "perl-module-strict "
-RDEPENDS_perl-module-term-readline += "perl-module-strict "
-RDEPENDS_perl-module-test-builder += "perl-module-strict "
-RDEPENDS_perl-module-test-builder += "perl-module-vars "
-RDEPENDS_perl-module-test-harness-assert += "perl-module-exporter "
-RDEPENDS_perl-module-test-harness-assert += "perl-module-strict "
-RDEPENDS_perl-module-test-harness-assert += "perl-module-vars "
-RDEPENDS_perl-module-test-harness-iterator += "perl-module-strict "
-RDEPENDS_perl-module-test-harness-iterator += "perl-module-vars "
-RDEPENDS_perl-module-test-harness-point += "perl-module-strict "
-RDEPENDS_perl-module-test-harness-point += "perl-module-vars "
-RDEPENDS_perl-module-test-harness-straps += "perl-module-config "
-RDEPENDS_perl-module-test-harness-straps += "perl-module-strict "
-RDEPENDS_perl-module-test-harness-straps += "perl-module-test-harness-assert "
-RDEPENDS_perl-module-test-harness-straps += "perl-module-test-harness-iterator "
-RDEPENDS_perl-module-test-harness-straps += "perl-module-test-harness-point "
-RDEPENDS_perl-module-test-harness-straps += "perl-module-vars "
-RDEPENDS_perl-module-test-harness += "perl-module-benchmark "
-RDEPENDS_perl-module-test-harness += "perl-module-config "
-RDEPENDS_perl-module-test-harness += "perl-module-exporter "
-RDEPENDS_perl-module-test-harness += "perl-module-strict "
-RDEPENDS_perl-module-test-harness += "perl-module-test-harness-assert "
-RDEPENDS_perl-module-test-harness += "perl-module-test-harness-straps "
-RDEPENDS_perl-module-test-more += "perl-module-exporter "
-RDEPENDS_perl-module-test-more += "perl-module-strict "
-RDEPENDS_perl-module-test-more += "perl-module-test-builder "
-RDEPENDS_perl-module-test-more += "perl-module-vars "
-RDEPENDS_perl-module-test-simple += "perl-module-strict "
-RDEPENDS_perl-module-test-simple += "perl-module-test-builder "
-RDEPENDS_perl-module-test-simple += "perl-module-vars "
-RDEPENDS_perl-module-test += "perl-module-exporter "
-RDEPENDS_perl-module-test += "perl-module-carp "
-RDEPENDS_perl-module-test += "perl-module-strict "
-RDEPENDS_perl-module-text-abbrev += "perl-module-exporter "
-RDEPENDS_perl-module-text-balanced += "perl-module-exporter "
-RDEPENDS_perl-module-text-balanced += "perl-module-overload "
-RDEPENDS_perl-module-text-balanced += "perl-module-selfloader "
-RDEPENDS_perl-module-text-balanced += "perl-module-strict "
-RDEPENDS_perl-module-text-balanced += "perl-module-vars "
-RDEPENDS_perl-module-text-parsewords += "perl-module-exporter "
-RDEPENDS_perl-module-text-parsewords += "perl-module-vars "
-RDEPENDS_perl-module-text-soundex += "perl-module-exporter "
-RDEPENDS_perl-module-text-tabs += "perl-module-exporter "
-RDEPENDS_perl-module-text-tabs += "perl-module-strict "
-RDEPENDS_perl-module-text-tabs += "perl-module-vars "
-RDEPENDS_perl-module-text-wrap += "perl-module-exporter "
-RDEPENDS_perl-module-text-wrap += "perl-module-strict "
-RDEPENDS_perl-module-text-wrap += "perl-module-text-tabs "
-RDEPENDS_perl-module-thread-queue += "perl-module-strict "
-RDEPENDS_perl-module-thread-queue += "perl-module-threads-shared "
-RDEPENDS_perl-module-thread-semaphore += "perl-module-threads-shared "
-RDEPENDS_perl-module-threads-shared += "perl-module-strict "
-RDEPENDS_perl-module-threads-shared += "perl-module-warnings "
-RDEPENDS_perl-module-threads += "perl-module-dynaloader "
-RDEPENDS_perl-module-threads += "perl-module-exporter "
-RDEPENDS_perl-module-threads += "perl-module-config "
-RDEPENDS_perl-module-threads += "perl-module-strict "
-RDEPENDS_perl-module-threads += "perl-module-warnings "
-RDEPENDS_perl-module-thread += "perl-module-exporter "
-RDEPENDS_perl-module-thread += "perl-module-strict "
-RDEPENDS_perl-module-thread += "perl-module-xsloader "
-RDEPENDS_perl-module-tie-array += "perl-module-carp "
-RDEPENDS_perl-module-tie-array += "perl-module-strict "
-RDEPENDS_perl-module-tie-array += "perl-module-vars "
-RDEPENDS_perl-module-tie-file += "perl-module-carp "
-RDEPENDS_perl-module-tie-file += "perl-module-fcntl "
-RDEPENDS_perl-module-tie-file += "perl-module-posix "
-RDEPENDS_perl-module-tie-file += "perl-module-strict "
-RDEPENDS_perl-module-tie-handle += "perl-module-carp "
-RDEPENDS_perl-module-tie-handle += "perl-module-warnings-register "
-RDEPENDS_perl-module-tie-hash += "perl-module-carp "
-RDEPENDS_perl-module-tie-hash += "perl-module-warnings-register "
-RDEPENDS_perl-module-tie-memoize += "perl-module-strict "
-RDEPENDS_perl-module-tie-memoize += "perl-module-tie-hash "
-RDEPENDS_perl-module-tie-refhash += "perl-module-strict "
-RDEPENDS_perl-module-tie-refhash += "perl-module-tie-hash "
-RDEPENDS_perl-module-tie-refhash += "perl-module-vars "
-RDEPENDS_perl-module-tie-scalar += "perl-module-carp "
-RDEPENDS_perl-module-tie-scalar += "perl-module-warnings-register "
-RDEPENDS_perl-module-tie-substrhash += "perl-module-carp "
-RDEPENDS_perl-module-time-gmtime += "perl-module-strict "
-RDEPENDS_perl-module-time-gmtime += "perl-module-time-tm "
-RDEPENDS_perl-module-time-gmtime += "perl-module-vars "
-RDEPENDS_perl-module-time-hires += "perl-module-dynaloader "
-RDEPENDS_perl-module-time-hires += "perl-module-exporter "
-RDEPENDS_perl-module-time-hires += "perl-module-strict "
-RDEPENDS_perl-module-time-hires += "perl-module-vars "
-RDEPENDS_perl-module-time-localtime += "perl-module-strict "
-RDEPENDS_perl-module-time-localtime += "perl-module-time-tm "
-RDEPENDS_perl-module-time-localtime += "perl-module-vars "
-RDEPENDS_perl-module-time-local += "perl-module-exporter "
-RDEPENDS_perl-module-time-local += "perl-module-carp "
-RDEPENDS_perl-module-time-local += "perl-module-config "
-RDEPENDS_perl-module-time-local += "perl-module-integer "
-RDEPENDS_perl-module-time-local += "perl-module-strict "
-RDEPENDS_perl-module-time-local += "perl-module-vars "
-RDEPENDS_perl-module-time-tm += "perl-module-class-struct "
-RDEPENDS_perl-module-time-tm += "perl-module-strict "
-RDEPENDS_perl-module-unicode-collate += "perl-module-carp "
-RDEPENDS_perl-module-unicode-collate += "perl-module-constant "
-RDEPENDS_perl-module-unicode-collate += "perl-module-file-spec "
-RDEPENDS_perl-module-unicode-collate += "perl-module-strict "
-RDEPENDS_perl-module-unicode-collate += "perl-module-warnings "
-RDEPENDS_perl-module-unicode-normalize += "perl-module-dynaloader "
-RDEPENDS_perl-module-unicode-normalize += "perl-module-exporter "
-RDEPENDS_perl-module-unicode-normalize += "perl-module-carp "
-RDEPENDS_perl-module-unicode-normalize += "perl-module-constant "
-RDEPENDS_perl-module-unicode-normalize += "perl-module-strict "
-RDEPENDS_perl-module-unicode-normalize += "perl-module-warnings "
-RDEPENDS_perl-module-unicode-ucd += "perl-module-exporter "
-RDEPENDS_perl-module-unicode-ucd += "perl-module-carp "
-RDEPENDS_perl-module-unicode-ucd += "perl-module-storable "
-RDEPENDS_perl-module-unicode-ucd += "perl-module-strict "
-RDEPENDS_perl-module-unicode-ucd += "perl-module-warnings "
-RDEPENDS_perl-module-universal += "perl-module-exporter "
-RDEPENDS_perl-module-user-grent += "perl-module-class-struct "
-RDEPENDS_perl-module-user-grent += "perl-module-strict "
-RDEPENDS_perl-module-user-grent += "perl-module-vars "
-RDEPENDS_perl-module-user-pwent += "perl-module-carp "
-RDEPENDS_perl-module-user-pwent += "perl-module-class-struct "
-RDEPENDS_perl-module-user-pwent += "perl-module-config "
-RDEPENDS_perl-module-user-pwent += "perl-module-strict "
-RDEPENDS_perl-module-user-pwent += "perl-module-warnings "
-RDEPENDS_perl-module-user-pwent += "perl-module-vars "
-RDEPENDS_perl-module-warnings-register += "perl-module-warnings "
-RDEPENDS_perl-module-warnings += "perl-module-carp "
-RDEPENDS_perl-module-vars += "perl-module-strict "
-RDEPENDS_perl-module-vars += "perl-module-warnings-register "
-RDEPENDS_perl-module-xs-apitest += "perl-module-base "
-RDEPENDS_perl-module-xs-apitest += "perl-module-carp "
-RDEPENDS_perl-module-xs-apitest += "perl-module-strict "
-RDEPENDS_perl-module-xs-apitest += "perl-module-warnings "
-RDEPENDS_perl-module-xs-typemap += "perl-module-base "
-RDEPENDS_perl-module-xs-typemap += "perl-module-vars "
diff --git a/meta/recipes-devtools/perl/perl-rprovides_5.12.2.inc b/meta/recipes-devtools/perl/perl-rprovides_5.12.2.inc
new file mode 100644
index 0000000000..9a648dbf2f
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-rprovides_5.12.2.inc
@@ -0,0 +1 @@
+RPROVIDES_perl-module-module-build += "libmodule-build-perl"
diff --git a/meta/recipes-devtools/perl/perl_5.12.2.bb b/meta/recipes-devtools/perl/perl_5.12.2.bb
new file mode 100644
index 0000000000..82801e8694
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl_5.12.2.bb
@@ -0,0 +1,276 @@
+DESCRIPTION = "Perl is a popular scripting language."
+HOMEPAGE = "http://www.perl.org/"
+SECTION = "devel"
+LICENSE = "Artistic|GPL"
+LIC_FILES_CHKSUM = "file://Copying;md5=2b4c6ffbcfcbdee469f02565f253d81a \
+ file://Artistic;md5=f921793d03cc6d63ec4b15e9be8fd3f8"
+PRIORITY = "optional"
+# We need gnugrep (for -I)
+DEPENDS = "virtual/db perl-native-${PV} grep-native"
+DEPENDS += "gdbm zlib"
+PR = "r0"
+
+# 5.10.1 has Module::Build built-in
+PROVIDES += "libmodule-build-perl"
+
+# Major part of version
+#PVM = "5.12"
+
+SRC_URI = "ftp://ftp.funet.fi/pub/CPAN/src/perl-${PV}.tar.gz \
+ file://Makefile.patch;patch=1 \
+ file://Makefile.SH.patch;patch=1 \
+ file://installperl.patch;patch=1 \
+ file://perl-dynloader.patch;patch=1 \
+ file://perl-moreconfig.patch;patch=1 \
+ file://letgcc-find-errno.patch;patch=1 \
+ file://generate-sh.patch;patch=1 \
+ file://09_fix_installperl.patch;patch=1 \
+ file://native-perlinc.patch \
+ file://perl-enable-gdbm.patch \
+ file://cross-generate_uudmap.patch \
+ file://debian/arm_thread_stress_timeout.diff \
+ file://debian/cpan_config_path.diff \
+ file://debian/cpan_definstalldirs.diff \
+ file://debian/db_file_ver.diff \
+ file://debian/doc_info.diff \
+ file://debian/enc2xs_inc.diff \
+ file://debian/errno_ver.diff \
+ file://debian/extutils_hacks.diff \
+# file://debian/fakeroot.diff \
+ file://debian/instmodsh_doc.diff \
+ file://debian/ld_run_path.diff \
+ file://debian/libnet_config_path.diff \
+ file://debian/m68k_thread_stress.diff \
+ file://debian/mod_paths.diff \
+ file://debian/module_build_man_extensions.diff \
+ file://debian/prune_libs.diff \
+ file://debian/fixes/net_smtp_docs.diff \
+ file://debian/fixes/processPL.diff \
+ file://debian/perlivp.diff \
+ file://debian/disable-zlib-bundling.diff \
+ file://debian/cpanplus_definstalldirs.diff \
+ file://debian/cpanplus_config_path.diff \
+ file://debian/fixes/autodie-flock.diff \
+ file://debian/devel-ppport-ia64-optim.diff \
+ file://debian/fixes/cpanplus-without-home.diff \
+ file://debian/arm_optim.diff \
+ file://debian/deprecate-with-apt.diff \
+ file://debian/fixes/hurd-ccflags.diff \
+ file://debian/squelch-locale-warnings.diff \
+ file://debian/fixes/lc-numeric-docs.diff \
+ file://debian/fixes/lc-numeric-sprintf.diff \
+ file://debian/fixes/concat-stack-corruption.diff \
+ file://debian/fixes/h2ph-gcc-4.5.diff \
+ file://config.sh \
+ file://config.sh-32 \
+ file://config.sh-32-le \
+ file://config.sh-32-be \
+ file://config.sh-64 \
+ file://config.sh-64-le \
+ file://config.sh-64-be"
+
+SRC_URI[md5sum] = "af2df531d46b77fdf0d97eecb03eddb2"
+SRC_URI[sha256sum] = "cf888340021d5a2d1238bbd9b8b55aaf420a848d46e4d317cb8567f86ceb1022"
+
+inherit siteinfo
+
+# Where to find the native perl
+HOSTPERL = "${STAGING_BINDIR_NATIVE}/perl${PV}"
+
+# Where to find .so files - use the -native versions not those from the target build
+export PERLHOSTLIB = "${STAGING_LIBDIR_NATIVE}/perl/${PV}/"
+
+# LDFLAGS for shared libraries
+export LDDLFLAGS = "${LDFLAGS} -shared"
+
+# We're almost Debian, aren't we?
+CFLAGS += "-DDEBIAN"
+
+do_nolargefile() {
+ sed -i -e "s,\(uselargefiles=\)'define',\1'undef',g" \
+ -e "s,\(d_readdir64_r=\)'define',\1'undef',g" \
+ -e "s,\(readdir64_r_proto=\)'\w+',\1'0',g" \
+ -e "/ccflags_uselargefiles/d" \
+ -e "s/-Duselargefiles//" \
+ -e "s/-D_FILE_OFFSET_BITS=64//" \
+ -e "s/-D_LARGEFILE_SOURCE//" \
+ ${S}/Cross/config.sh-${TARGET_ARCH}-${TARGET_OS}
+}
+
+do_configure() {
+ # Make hostperl in build directory be the native perl
+ ln -sf ${HOSTPERL} hostperl
+
+ # Do our work in the cross subdir
+ cd Cross
+
+ # Generate configuration
+ rm -f config.sh-${TARGET_ARCH}-${TARGET_OS}
+ for i in ${WORKDIR}/config.sh \
+ ${WORKDIR}/config.sh-${@siteinfo_get_bits(d)} \
+ ${WORKDIR}/config.sh-${@siteinfo_get_bits(d)}-${@siteinfo_get_endianess(d)}; do
+ cat $i >> config.sh-${TARGET_ARCH}-${TARGET_OS}
+ done
+
+ # Fixups for uclibc
+ if [ "${TARGET_OS}" = "linux-uclibc" -o "${TARGET_OS}" = "linux-uclibceabi" ]; then
+ sed -i -e "s,\(d_crypt_r=\)'define',\1'undef',g" \
+ -e "s,\(d_futimes=\)'define',\1'undef',g" \
+ -e "s,\(crypt_r_proto=\)'\w+',\1'0',g" \
+ -e "s,\(d_getnetbyname_r=\)'define',\1'undef',g" \
+ -e "s,\(getnetbyname_r_proto=\)'\w+',\1'0',g" \
+ -e "s,\(d_getnetbyaddr_r=\)'define',\1'undef',g" \
+ -e "s,\(getnetbyaddr_r_proto=\)'\w+',\1'0',g" \
+ -e "s,\(d_getnetent_r=\)'define',\1'undef',g" \
+ -e "s,\(getnetent_r_proto=\)'\w+',\1'0',g" \
+ -e "s,\(d_sockatmark=\)'define',\1'undef',g" \
+ -e "s,\(d_sockatmarkproto=\)'\w+',\1'0',g" \
+ config.sh-${TARGET_ARCH}-${TARGET_OS}
+ fi
+
+ ${@base_contains('DISTRO_FEATURES', 'largefile', '', 'do_nolargefile', d)}
+
+ # Update some paths in the configuration
+ sed -i -e 's,@DESTDIR@,${prefix},g' \
+ -e 's,@ARCH@-thread-multi,,g' \
+ -e 's,@ARCH@,${TARGET_ARCH}-${TARGET_OS},g' \
+ -e "s%/usr/include%${STAGING_INCDIR}%g" \
+ -e 's,/usr/,${exec_prefix}/,g' \
+ -e 's,/perl5,/perl,g' \
+ config.sh-${TARGET_ARCH}-${TARGET_OS}
+
+ # These are strewn all over the source tree
+ for foo in `grep -I -m1 \/usr\/include\/.*\\.h ${WORKDIR}/* -r | cut -f 1 -d ":"` ; do
+ echo Fixing: $foo
+ sed -e "s%/usr/include/%${STAGING_INCDIR}/%g" -i $foo
+ done
+
+ rm -f config
+ echo "ARCH = ${TARGET_ARCH}" > config
+ echo "OS = ${TARGET_OS}" >> config
+}
+
+do_compile() {
+ sed -i -e 's|/usr/include|${STAGING_INCDIR}|g' ext/Errno/Errno_pm.PL
+ sed -i -e 's|/usr/include|${STAGING_INCDIR}|g' cpan/Compress-Raw-Zlib/config.in
+ sed -i -e 's|/usr/lib|${STAGING_LIBDIR}|g' cpan/Compress-Raw-Zlib/config.in
+
+ cd Cross
+ oe_runmake perl LD="${CCLD}"
+}
+
+do_install() {
+ oe_runmake install DESTDIR=${D}
+ # Add perl pointing at current version
+ ln -sf perl${PV} ${D}${bindir}/perl
+
+ ln -sf perl ${D}/${libdir}/perl5
+
+ # Remove unwanted file
+ rm -f ${D}/${libdir}/perl/${PV}/.packlist
+
+ # Fix up shared library
+ mv ${D}/${libdir}/perl/${PV}/CORE/libperl.so ${D}/${libdir}/libperl.so.${PV}
+ ln -sf libperl.so.${PV} ${D}/${libdir}/libperl.so.5
+
+ # target config, used by cpan.bbclass to extract version information
+ install config.sh ${D}${libdir}/perl
+
+ ln -s Config_heavy.pl ${D}${libdir}/perl/${PV}/Config_heavy-target.pl
+
+}
+
+PACKAGE_PREPROCESS_FUNCS += "perl_package_preprocess"
+
+perl_package_preprocess () {
+ # Fix up installed configuration
+ sed -i -e "s,${D},,g" \
+ -e "s,-isystem${STAGING_INCDIR} ,,g" \
+ -e "s,${STAGING_LIBDIR},${libdir},g" \
+ -e "s,${STAGING_BINDIR},${bindir},g" \
+ -e "s,${STAGING_INCDIR},${includedir},g" \
+ -e "s,${STAGING_BINDIR_NATIVE}/,,g" \
+ ${PKGD}${bindir}/h2xs \
+ ${PKGD}${bindir}/h2ph \
+ ${PKGD}${libdir}/perl/${PV}/pod/*.pod \
+ ${PKGD}${libdir}/perl/${PV}/cacheout.pl \
+ ${PKGD}${libdir}/perl/${PV}/FileCache.pm \
+ ${PKGD}${libdir}/perl/config.sh \
+ ${PKGD}${libdir}/perl/${PV}/Config.pm \
+ ${PKGD}${libdir}/perl/${PV}/Config_heavy.pl \
+ ${PKGD}${libdir}/perl/${PV}/CORE/perl.h \
+ ${PKGD}${libdir}/perl/${PV}/CORE/pp.h
+}
+
+PACKAGES = "perl-dbg perl perl-misc perl-dev perl-pod perl-doc perl-lib \
+ perl-module-cpan perl-module-cpanplus perl-module-unicore"
+FILES_${PN} = "${bindir}/perl ${bindir}/perl${PV}"
+FILES_${PN}-dev = "${libdir}/perl/${PV}/CORE"
+FILES_${PN}-lib = "${libdir}/libperl.so* \
+ ${libdir}/perl5 \
+ ${libdir}/perl/config.sh \
+ ${libdir}/perl/${PV}/Config_heavy.pl \
+ ${libdir}/perl/${PV}/Config_heavy-target.pl"
+FILES_${PN}-pod = "${libdir}/perl/${PV}/pod \
+ ${libdir}/perl/${PV}/*.pod \
+ ${libdir}/perl/${PV}/*/*.pod \
+ ${libdir}/perl/${PV}/*/*/*.pod "
+FILES_perl-misc = "${bindir}/*"
+FILES_${PN}-dbg += "${libdir}/perl/${PV}/auto/*/.debug \
+ ${libdir}/perl/${PV}/auto/*/*/.debug \
+ ${libdir}/perl/${PV}/auto/*/*/*/.debug \
+ ${libdir}/perl/${PV}/CORE/.debug \
+ ${libdir}/perl/${PV}/*/.debug \
+ ${libdir}/perl/${PV}/*/*/.debug \
+ ${libdir}/perl/${PV}/*/*/*/.debug "
+FILES_${PN}-doc = "${libdir}/perl/${PV}/*/*.txt \
+ ${libdir}/perl/${PV}/*/*/*.txt \
+ ${libdir}/perl/${PV}/B/assemble \
+ ${libdir}/perl/${PV}/B/cc_harness \
+ ${libdir}/perl/${PV}/B/disassemble \
+ ${libdir}/perl/${PV}/B/makeliblinks \
+ ${libdir}/perl/${PV}/CGI/eg \
+ ${libdir}/perl/${PV}/CPAN/PAUSE2003.pub \
+ ${libdir}/perl/${PV}/CPAN/SIGNATURE \
+ ${libdir}/perl/${PV}/CPANPLUS/Shell/Default/Plugins/HOWTO.pod \
+ ${libdir}/perl/${PV}/Encode/encode.h \
+ ${libdir}/perl/${PV}/ExtUtils/MANIFEST.SKIP \
+ ${libdir}/perl/${PV}/ExtUtils/NOTES \
+ ${libdir}/perl/${PV}/ExtUtils/PATCHING \
+ ${libdir}/perl/${PV}/ExtUtils/typemap \
+ ${libdir}/perl/${PV}/ExtUtils/xsubpp \
+ ${libdir}/perl/${PV}/ExtUtils/Changes_EU-Install \
+ ${libdir}/perl/${PV}/Net/*.eg \
+ ${libdir}/perl/${PV}/unicore/mktables \
+ ${libdir}/perl/${PV}/unicore/mktables.lst \
+ ${libdir}/perl/${PV}/unicore/version "
+
+FILES_perl-module-cpan += "${libdir}/perl/${PV}/CPAN \
+ ${libdir}/perl/${PV}/CPAN.pm"
+FILES_perl-module-cpanplus += "${libdir}/perl/${PV}/CPANPLUS \
+ ${libdir}/perl/${PV}/CPANPLUS.pm"
+FILES_perl-module-unicore += "${libdir}/perl/${PV}/unicore"
+
+# Create a perl-modules package recommending all the other perl
+# packages (actually the non modules packages and not created too)
+ALLOW_EMPTY_perl-modules = "1"
+PACKAGES_append = " perl-modules "
+RRECOMMENDS_perl-modules = "${@bb.data.getVar('PACKAGES', d, 1).replace('perl-modules ', '').replace('perl-dbg ', '').replace('perl-misc ', '').replace('perl-dev ', '').replace('perl-pod ', '').replace('perl-doc ', '')}"
+
+python populate_packages_prepend () {
+ libdir = bb.data.expand('${libdir}/perl/${PV}', d)
+ do_split_packages(d, libdir, 'auto/(Encode/.[^/]*)/.*', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
+ do_split_packages(d, libdir, 'auto/([^/]*)/.*', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
+ do_split_packages(d, libdir, 'Module/([^\/]*).*', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
+ do_split_packages(d, libdir, '(^(?!(CPAN\/|CPANPLUS\/|Module\/|unicore\/|auto\/)[^\/]).*)\.(pm|pl|e2x)', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
+}
+
+PACKAGES_DYNAMIC = "perl-module-*"
+
+RPROVIDES_perl-lib = "perl-lib"
+
+require perl-rdepends_${PV}.inc
+require perl-rprovides.inc
+require perl-rprovides_${PV}.inc
+
+PARALLEL_MAKE = ""
diff --git a/meta/recipes-devtools/perl/perl_5.8.8.bb b/meta/recipes-devtools/perl/perl_5.8.8.bb
deleted file mode 100644
index 8e2f0c0af7..0000000000
--- a/meta/recipes-devtools/perl/perl_5.8.8.bb
+++ /dev/null
@@ -1,228 +0,0 @@
-SUMMARY = "Perl (Pathologically Eclectic Rubbish Lister)"
-DESCRIPTION = "Perl is a high-level, general-purpose, interpreted, dynamic programming language. It was \
-originally written as a general-purpose scripting language to make report processing easier. This makes perl \
-especially good at handling text."
-HOMEPAGE = "http://www.perl.org/"
-SECTION = "devel"
-LICENSE = "Artistic|GPL"
-LIC_FILES_CHKSUM = "file://Copying;md5=2b4c6ffbcfcbdee469f02565f253d81a \
- file://Artistic;md5=f921793d03cc6d63ec4b15e9be8fd3f8"
-PRIORITY = "optional"
-# We need gnugrep (for -I)
-DEPENDS = "virtual/db perl-native grep-native"
-DEPENDS += "gdbm"
-PR = "r21"
-
-# Major part of version
-PVM = "5.8"
-
-SRC_URI = "ftp://ftp.funet.fi/pub/CPAN/src/perl-${PV}.tar.gz \
- file://Makefile.patch;patch=1 \
- file://Makefile.SH.patch;patch=1 \
- file://makedepend-dash.patch;patch=1 \
- file://installperl.patch;patch=1 \
- file://perl-dynloader.patch;patch=1 \
- file://perl-moreconfig.patch;patch=1 \
- file://letgcc-find-errno.patch;patch=1 \
- file://generate-sh.patch;patch=1 \
- file://perl-5.8.8-gcc-4.2.patch;patch=1 \
- file://09_fix_installperl.patch;patch=1 \
- file://52_debian_extutils_hacks.patch;patch=1 \
- file://53_debian_mod_paths.patch;patch=1 \
- file://54_debian_perldoc-r.patch;patch=1 \
- file://58_debian_cpan_config_path.patch;patch=1 \
- file://60_debian_libnet_config_path.patch;patch=1 \
- file://62_debian_cpan_definstalldirs.patch;patch=1 \
- file://64_debian_enc2xs_inc.patch;patch=1 \
- file://asm-pageh-fix.patch;patch=1 \
- file://native-perlinc.patch;patch=1 \
- file://perl-enable-gdbm.patch;patch=1 \
- file://config.sh \
- file://config.sh-32 \
- file://config.sh-32-le \
- file://config.sh-32-be \
- file://config.sh-64 \
- file://config.sh-64-le \
- file://config.sh-64-be"
-
-SRC_URI[md5sum] = "b8c118d4360846829beb30b02a6b91a7"
-SRC_URI[sha256sum] = "e15d499321e003d12ed183601e37ee7ba5f64b278d1de30149ce01bd4a3f234d"
-
-inherit siteinfo
-
-# Where to find the native perl
-HOSTPERL = "${STAGING_BINDIR_NATIVE}/perl${PV}"
-
-# Where to find .so files - use the -native versions not those from the target build
-export PERLHOSTLIB = "${STAGING_LIBDIR_NATIVE}/perl/${PV}/"
-
-do_configure() {
- # Make hostperl in build directory be the native perl
- ln -s ${HOSTPERL} hostperl
-
- # Do our work in the cross subdir
- cd Cross
-
- # Generate configuration
- rm -f config.sh-${TARGET_ARCH}-${TARGET_OS}
- for i in ${WORKDIR}/config.sh \
- ${WORKDIR}/config.sh-${@siteinfo_get_bits(d)} \
- ${WORKDIR}/config.sh-${@siteinfo_get_bits(d)}-${@siteinfo_get_endianess(d)}; do
- cat $i >> config.sh-${TARGET_ARCH}-${TARGET_OS}
- done
-
- # Fixups for uclibc
- if [ "${TARGET_OS}" = "linux-uclibc" -o "${TARGET_OS}" = "linux-uclibcgnueabi" ]; then
- sed -i -e "s,\(d_crypt_r=\)'define',\1'undef',g" \
- -e "s,\(crypt_r_proto=\)'\w+',\1'0',g" \
- -e "s,\(d_getnetbyname_r=\)'define',\1'undef',g" \
- -e "s,\(getnetbyname_r_proto=\)'\w+',\1'0',g" \
- -e "s,\(d_getnetbyaddr_r=\)'define',\1'undef',g" \
- -e "s,\(getnetbyaddr_r_proto=\)'\w+',\1'0',g" \
- -e "s,\(d_getnetent_r=\)'define',\1'undef',g" \
- -e "s,\(getnetent_r_proto=\)'\w+',\1'0',g" \
- -e "s,\(d_sockatmark=\)'define',\1'undef',g" \
- -e "s,\(d_sockatmarkproto=\)'\w+',\1'0',g" \
- config.sh-${TARGET_ARCH}-${TARGET_OS}
- fi
-
- # Update some paths in the configuration
- sed -i -e 's,@LIBDIR@,${libdir},g' \
- -e 's,@BINDIR@,${bindir},g' \
- -e 's,@MANDIR@,${mandir},g' \
- -e 's,@PREFIX@,${prefix},g' \
- -e 's,@DATADIR@,${datadir},g' \
- -e 's,@ARCH@,${TARGET_ARCH}-${TARGET_OS},g' \
- -e "s%/usr/include/%${STAGING_INCDIR}/%g" \
- -e 's,/usr/,${exec_prefix}/,g' \
- config.sh-${TARGET_ARCH}-${TARGET_OS}
-
-
- # These are strewn all over the source tree
- for foo in `grep -I -m1 \/usr\/include\/.*\\.h ${WORKDIR}/* -r | cut -f 1 -d ":"` ; do
- echo Fixing: $foo
- sed -e "s%/usr/include/%${STAGING_INCDIR}/%g" -i $foo
- done
-
- rm -f config
- echo "ARCH = ${TARGET_ARCH}" > config
- echo "OS = ${TARGET_OS}" >> config
-}
-
-do_compile() {
- if test "${MACHINE}" != "native"; then
- sed -i -e 's|/usr/include|${STAGING_INCDIR}|g' ext/Errno/Errno_pm.PL
- fi
- cd Cross
- oe_runmake perl LD="${TARGET_SYS}-gcc"
-}
-
-do_install() {
- oe_runmake 'DESTDIR=${D}' install
-
- # Add perl pointing at current version
- ln -sf perl${PV} ${D}${bindir}/perl
-
- # Fix up versioned directories
- mv ${D}/${libdir}/perl/${PVM} ${D}/${libdir}/perl/${PV}
- mv ${D}/${datadir}/perl/${PVM} ${D}/${datadir}/perl/${PV}
- ln -sf ${PV} ${D}/${libdir}/perl/${PVM}
- ln -sf ${PV} ${D}/${datadir}/perl/${PVM}
-
- # Remove unwanted file
- rm -f ${D}/${libdir}/perl/${PV}/.packlist
-
- # Fix up shared library
- mv -f ${D}/${libdir}/perl/${PV}/CORE/libperl.so ${D}/${libdir}/libperl.so.${PV}
- ln -sf libperl.so.${PV} ${D}/${libdir}/libperl.so.5
-
- # target config, used by cpan.bbclass to extract version information
- install config.sh ${D}${libdir}/perl/
-
- install -d ${D}${datadir}/perl/${PV}/ExtUtils
- install lib/ExtUtils/typemap ${D}${datadir}/perl/${PV}/ExtUtils/
-
- ln -s Config_heavy.pl ${D}${libdir}/perl/${PV}/Config_heavy-target.pl
-}
-
-PACKAGE_PREPROCESS_FUNCS += "perl_package_preprocess"
-
-perl_package_preprocess () {
- # Fix up installed configuration
- sed -i -e "s,${D},,g" \
- -e "s,-isystem${STAGING_INCDIR} ,,g" \
- -e "s,${STAGING_LIBDIR},${libdir},g" \
- -e "s,${STAGING_BINDIR},${bindir},g" \
- -e "s,${STAGING_INCDIR},${includedir},g" \
- -e "s,${STAGING_BINDIR_NATIVE}/,,g" \
- ${PKGD}${bindir}/h2xs \
- ${PKGD}${bindir}/h2ph \
- ${PKGD}${datadir}/perl/${PV}/pod/*.pod \
- ${PKGD}${datadir}/perl/${PV}/cacheout.pl \
- ${PKGD}${datadir}/perl/${PV}/FileCache.pm \
- ${PKGD}${libdir}/perl/config.sh \
- ${PKGD}${libdir}/perl/${PV}/Config.pm \
- ${PKGD}${libdir}/perl/${PV}/Config_heavy.pl \
- ${PKGD}${libdir}/perl/${PV}/CORE/perl.h \
- ${PKGD}${libdir}/perl/${PV}/CORE/pp.h
-}
-
-PACKAGES = "perl-dbg perl perl-misc perl-lib perl-dev perl-pod perl-doc"
-FILES_${PN} = "${bindir}/perl ${bindir}/perl${PV}"
-FILES_${PN}-lib = "${libdir}/libperl.so* ${libdir}/perl/${PVM} ${datadir}/perl/${PVM}"
-FILES_${PN}-dev = "${libdir}/perl/${PV}/CORE"
-FILES_${PN}-pod = "${datadir}/perl/${PV}/pod \
- ${datadir}/perl/${PV}/*/*.pod \
- ${datadir}/perl/${PV}/*/*/*.pod \
- ${libdir}/perl/${PV}/*.pod"
-FILES_perl-misc = "${bindir}/*"
-FILES_${PN}-dbg += "${libdir}/perl/${PV}/auto/*/.debug \
- ${libdir}/perl/${PV}/auto/*/*/.debug \
- ${libdir}/perl/${PV}/auto/*/*/*/.debug \
- ${datadir}/perl/${PV}/auto/*/.debug \
- ${datadir}/perl/${PV}/auto/*/*/.debug \
- ${datadir}/perl/${PV}/auto/*/*/*/.debug \
- ${libdir}/perl/${PV}/CORE/.debug"
-FILES_${PN}-doc = "${datadir}/perl/${PV}/*/*.txt \
- ${datadir}/perl/${PV}/*/*/*.txt \
- ${datadir}/perl/${PV}/Net/*.eg \
- ${datadir}/perl/${PV}/CGI/eg \
- ${datadir}/perl/${PV}/ExtUtils/PATCHING \
- ${datadir}/perl/${PV}/ExtUtils/NOTES \
- ${datadir}/perl/${PV}/ExtUtils/typemap \
- ${datadir}/perl/${PV}/ExtUtils/MANIFEST.SKIP \
- ${datadir}/perl/${PV}/CPAN/SIGNATURE \
- ${datadir}/perl/${PV}/CPAN/PAUSE2003.pub \
- ${datadir}/perl/${PV}/B/assemble \
- ${datadir}/perl/${PV}/B/makeliblinks \
- ${datadir}/perl/${PV}/B/disassemble \
- ${datadir}/perl/${PV}/B/cc_harness \
- ${datadir}/perl/${PV}/ExtUtils/xsubpp \
- ${datadir}/perl/${PV}/Encode/encode.h \
- ${datadir}/perl/${PV}/unicore/mktables \
- ${datadir}/perl/${PV}/unicore/mktables.lst \
- ${datadir}/perl/${PV}/unicore/version"
-
-RPROVIDES_perl-lib = "perl-lib"
-
-# Create a perl-modules package recommending all the other perl
-# packages (actually the non modules packages and not created too)
-ALLOW_EMPTY_perl-modules = "1"
-PACKAGES_append = " perl-modules "
-RRECOMMENDS_perl-modules = "${@bb.data.getVar('PACKAGES', d, 1).replace('perl-modules ', '').replace('perl-dbg ', '').replace('perl-misc ', '').replace('perl-dev ', '').replace('perl-pod ', '').replace('perl-doc ', '')}"
-
-python populate_packages_prepend () {
- libdir = bb.data.expand('${libdir}/perl/${PV}', d)
- do_split_packages(d, libdir, 'auto/(.*)(?!\.debug)/', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True)
- do_split_packages(d, libdir, '(.*)\.(pm|pl|e2x)', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True)
- datadir = bb.data.expand('${datadir}/perl/${PV}', d)
- do_split_packages(d, datadir, 'auto/(.*)(?!\.debug)/', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True)
- do_split_packages(d, datadir, '(.*)\.(pm|pl|e2x)', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True)
-}
-
-PACKAGES_DYNAMIC = "perl-module-*"
-
-require perl-rdepends_${PV}.inc
-require perl-rprovides.inc
-
-PARALLEL_MAKE = ""
diff --git a/meta/recipes-devtools/prelink/prelink_git.bb b/meta/recipes-devtools/prelink/prelink_git.bb
index 1601443e3f..86205130fc 100644
--- a/meta/recipes-devtools/prelink/prelink_git.bb
+++ b/meta/recipes-devtools/prelink/prelink_git.bb
@@ -27,6 +27,11 @@ BBCLASSEXTEND = "native"
EXTRA_OECONF = "--disable-selinux --with-pkgversion=${PV}-${PR} \
--with-bugurl=http://bugzilla.pokylinux.org/"
+do_configure_prepend () {
+ # Disable documentation!
+ echo "all:" > ${S}/doc/Makefile.am
+}
+
do_install_append () {
install -d ${D}${sysconfdir}/cron.daily ${D}${sysconfdir}/default
install -m 0644 ${WORKDIR}/prelink.conf ${D}${sysconfdir}/prelink.conf
diff --git a/meta/recipes-devtools/pseudo/pseudo/895fa7e359e8026a608fba052c2994e42901e45f.patch b/meta/recipes-devtools/pseudo/pseudo/895fa7e359e8026a608fba052c2994e42901e45f.patch
deleted file mode 100644
index d8c229541e..0000000000
--- a/meta/recipes-devtools/pseudo/pseudo/895fa7e359e8026a608fba052c2994e42901e45f.patch
+++ /dev/null
@@ -1,235 +0,0 @@
-From 895fa7e359e8026a608fba052c2994e42901e45f Mon Sep 17 00:00:00 2001
-From: Mark Hatle <mark.hatle@windriver.com>
-Date: Fri, 17 Dec 2010 01:23:47 +0000
-Subject: Revert "Add a cache of the last object found in pseudo_op"
-
-This reverts commit 49d4d35918d457b0e9206679ecad3b9c84f11e66.
-
-Conflicts:
-
- ChangeLog.txt
----
-diff --git a/ChangeLog.txt b/ChangeLog.txt
-index 1db8c7d..200b32e 100644
---- a/ChangeLog.txt
-+++ b/ChangeLog.txt
-@@ -9,7 +9,6 @@
- * (mhatle) as a result of profiling, optimize inode search
- * (mhatle) rearrange the pseudo_op file data operations to reduce
- the number of selects.
-- * (mhatle) add the ability to cache the last select result
- * (mhatle) change the indexing in pseudo_db.c
-
- 2010-12-14:
-diff --git a/pseudo.c b/pseudo.c
-index 3979fd8..6b965be 100644
---- a/pseudo.c
-+++ b/pseudo.c
-@@ -425,9 +425,6 @@ pseudo_op(pseudo_msg_t *msg, const char *program, const char *tag) {
- int found_path = 0, found_ino = 0;
- int prefer_ino = 0;
-
-- static pseudo_msg_t cache_msg = { .op = 0 };
-- static char * cache_path = NULL;
--
- if (!msg)
- return 1;
-
-@@ -471,59 +468,7 @@ pseudo_op(pseudo_msg_t *msg, const char *program, const char *tag) {
-
- /* Lookup the full path, with inode and dev if available */
- if (msg->pathlen && msg->dev && msg->ino) {
-- if (cache_msg.pathlen == msg->pathlen &&
-- cache_msg.dev == msg->dev &&
-- cache_msg.ino == msg->ino &&
-- !strcmp(cache_path, msg->path)) {
-- /* Found it in the cache! */
--#ifdef NPROFILE
-- pseudo_diag("cache hit -- by_file_exact\n");
--#endif
-- /* Change the cache to match the msg */
-- cache_msg.type = msg->type;
-- cache_msg.op = msg->op;
-- cache_msg.result = msg->result;
-- cache_msg.access = msg->access;
-- cache_msg.fd = msg->fd;
--#ifdef NVALIDATE
-- if (!pdb_find_file_exact(msg)) {
-- if (cache_msg.pathlen != msg->pathlen ||
-- cache_msg.dev != msg->dev ||
-- cache_msg.ino != msg->ino ||
-- cache_msg.uid != msg->uid ||
-- cache_msg.gid != msg->gid ||
-- cache_msg.mode != msg->mode ||
-- cache_msg.rdev != msg->rdev ||
-- cache_msg.nlink != msg->nlink ||
-- cache_msg.deleting != msg->deleting) {
-- pseudo_diag("Cache mismatch [%s]: Database differs from cache\n"
-- " cache vs result:\n"
-- " dev (%llu,%llu) ino (%llu,%llu)\n"
-- " uid (%d,%d) gid (%d,%d) mode (0%o,0%o)\n"
-- " rdev (%llu,%llu) nlink (%d,%d) deleting (%d,%d)\n",
-- msg->pathlen ? msg->path : "no path",
-- (unsigned long long) cache_msg.dev, (unsigned long long) msg->dev,
-- (unsigned long long) cache_msg.ino, (unsigned long long) msg->ino,
-- (unsigned long long) cache_msg.uid, (unsigned int) msg->uid,
-- (unsigned long long) cache_msg.gid, (unsigned int) msg->gid,
-- cache_msg.mode, msg->mode,
-- (unsigned long long) cache_msg.rdev, (unsigned int) msg->rdev,
-- cache_msg.nlink, msg->nlink,
-- cache_msg.deleting, msg->deleting);
-- }
-- } else {
-- pseudo_diag("Cache mismatch [%s]: Not found in DB\n",
-- msg->pathlen ? msg->path : "no path");
-- }
--#endif
--
-- by_path = cache_msg;
-- by_ino = cache_msg;
-- /* no need to restore msg */
-- found_path = 1;
-- found_ino = 1;
-- path_by_ino = msg->path;
-- } else if (!pdb_find_file_exact(msg)) {
-+ if (!pdb_find_file_exact(msg)) {
- /* restore header contents */
- by_path = *msg;
- by_ino = *msg;
-@@ -539,51 +484,7 @@ pseudo_op(pseudo_msg_t *msg, const char *program, const char *tag) {
- if (msg->pathlen) {
- /* for now, don't canonicalize paths anymore */
- /* used to do it here, but now doing it in client */
-- if (cache_msg.pathlen == msg->pathlen &&
-- !strcmp(cache_path, msg->path)) {
--#ifdef NPROFILE
-- pseudo_diag("cache hit -- by_path\n");
--#endif
-- /* Change the cache to match the msg */
-- cache_msg.type = msg->type;
-- cache_msg.op = msg->op;
-- cache_msg.result = msg->result;
-- cache_msg.access = msg->access;
-- cache_msg.fd = msg->fd;
--#ifdef NVALIDATE
-- if (!pdb_find_file_exact(msg)) {
-- if (cache_msg.pathlen != msg->pathlen ||
-- cache_msg.dev != msg->dev ||
-- cache_msg.ino != msg->ino ||
-- cache_msg.uid != msg->uid ||
-- cache_msg.gid != msg->gid ||
-- cache_msg.mode != msg->mode ||
-- cache_msg.rdev != msg->rdev ||
-- cache_msg.nlink != msg->nlink ||
-- cache_msg.deleting != msg->deleting) {
-- pseudo_diag("Cache mismatch [%s]: Database differs from cache\n"
-- " cache vs result:\n"
-- " dev (%llu,%llu) ino (%llu,%llu)\n"
-- " uid (%d,%d) gid (%d,%d) mode (0%o,0%o)\n"
-- " rdev (%llu,%llu) nlink (%d,%d) deleting (%d,%d)\n",
-- msg->pathlen ? msg->path : "no path",
-- (unsigned long long) cache_msg.dev, (unsigned long long) msg->dev,
-- (unsigned long long) cache_msg.ino, (unsigned long long) msg->ino,
-- (unsigned long long) cache_msg.uid, (unsigned int) msg->uid,
-- (unsigned long long) cache_msg.gid, (unsigned int) msg->gid,
-- cache_msg.mode, msg->mode,
-- (unsigned long long) cache_msg.rdev, (unsigned int) msg->rdev,
-- cache_msg.nlink, msg->nlink,
-- cache_msg.deleting, msg->deleting);
-- }
-- } else {
-- pseudo_diag("Cache mismatch [%s]: Not found in DB\n",
-- msg->pathlen ? msg->path : "no path");
-- }
--#endif
-- by_path = cache_msg;
-- found_path = 1;
-- } else if (!pdb_find_file_path(msg)) {
-+ if (!pdb_find_file_path(msg)) {
- by_path = *msg;
- found_path = 1;
- } else {
-@@ -594,51 +495,7 @@ pseudo_op(pseudo_msg_t *msg, const char *program, const char *tag) {
- }
- /* search on original inode -- in case of mismatch */
- if (msg->dev && msg->ino) {
-- if (cache_msg.dev == msg->dev &&
-- cache_msg.ino == msg->ino) {
--#ifdef NPROFILE
-- pseudo_diag("cache hit -- by_ino\n");
--#endif
-- /* Change the cache to match the msg */
-- cache_msg.type = msg->type;
-- cache_msg.op = msg->op;
-- cache_msg.result = msg->result;
-- cache_msg.access = msg->access;
-- cache_msg.fd = msg->fd;
--#ifdef NVALIDATE
-- if (!pdb_find_file_exact(msg)) {
-- if (cache_msg.pathlen != msg->pathlen ||
-- cache_msg.dev != msg->dev ||
-- cache_msg.ino != msg->ino ||
-- cache_msg.uid != msg->uid ||
-- cache_msg.gid != msg->gid ||
-- cache_msg.mode != msg->mode ||
-- cache_msg.rdev != msg->rdev ||
-- cache_msg.nlink != msg->nlink ||
-- cache_msg.deleting != msg->deleting) {
-- pseudo_diag("Cache mismatch [%s]: Database differs from cache\n"
-- " cache vs result:\n"
-- " dev (%llu,%llu) ino (%llu,%llu)\n"
-- " uid (%d,%d) gid (%d,%d) mode (0%o,0%o)\n"
-- " rdev (%llu,%llu) nlink (%d,%d) deleting (%d,%d)\n",
-- msg->pathlen ? msg->path : "no path",
-- (unsigned long long) cache_msg.dev, (unsigned long long) msg->dev,
-- (unsigned long long) cache_msg.ino, (unsigned long long) msg->ino,
-- (unsigned long long) cache_msg.uid, (unsigned int) msg->uid,
-- (unsigned long long) cache_msg.gid, (unsigned int) msg->gid,
-- cache_msg.mode, msg->mode,
-- (unsigned long long) cache_msg.rdev, (unsigned int) msg->rdev,
-- cache_msg.nlink, msg->nlink,
-- cache_msg.deleting, msg->deleting);
-- }
-- } else {
-- pseudo_diag("Cache mismatch [%s]: Not found in DB\n",
-- msg->pathlen ? msg->path : "no path");
-- }
--#endif
-- found_ino = 1;
-- path_by_ino = cache_path;
-- } else if (!pdb_find_file_dev(&by_ino)) {
-+ if (!pdb_find_file_dev(&by_ino)) {
- found_ino = 1;
- path_by_ino = pdb_get_file_path(&by_ino);
- }
-@@ -1016,28 +873,6 @@ pseudo_op(pseudo_msg_t *msg, const char *program, const char *tag) {
- break;
- }
-
-- /* Cache previous values... */
-- if (msg->op != OP_MAY_UNLINK &&
-- msg->op != OP_DID_UNLINK &&
-- msg->op != OP_CANCEL_UNLINK &&
-- msg->op != OP_UNLINK) {
--
-- cache_msg = *msg;
--
-- free(cache_path);
--
-- if (path_by_ino)
-- cache_path = strdup(path_by_ino);
-- else
-- cache_path = strdup(msg->path);
-- } else {
-- cache_msg.pathlen = 0;
-- cache_msg.dev = 0;
-- cache_msg.ino = 0;
-- free(cache_path);
-- cache_path = NULL;
-- }
--
- /* in the case of an exact match, we just used the pointer
- * rather than allocating space
- */
---
-cgit v0.8.3.3-89-gbf82
diff --git a/meta/recipes-devtools/pseudo/pseudo/static_sqlite.patch b/meta/recipes-devtools/pseudo/pseudo/static_sqlite.patch
index 0a2fa28d79..6faa7a2a44 100644
--- a/meta/recipes-devtools/pseudo/pseudo/static_sqlite.patch
+++ b/meta/recipes-devtools/pseudo/pseudo/static_sqlite.patch
@@ -2,14 +2,14 @@ Due to disabling the LD_LIBRARY_PATH handling, we need to use a static
libsqlite.
diff -ur git.orig/Makefile.in git/Makefile.in
---- git.orig/Makefile.in 2010-07-20 17:13:56.000000000 -0700
-+++ git/Makefile.in 2010-07-20 17:12:14.000000000 -0700
-@@ -45,7 +45,7 @@
- GLOB_PATTERN=guts/*.c
- GUTS=$(filter-out "$(GLOB_PATTERN)",$(wildcard $(GLOB_PATTERN)))
+--- git.orig/Makefile.in
++++ git/Makefile.in
+@@ -55,7 +55,7 @@
--DBLDFLAGS=-lsqlite3
-+DBLDFLAGS=$(SQLITE)/lib/libsqlite3.a
- USE_64=wrapfuncs64.in
+ # needed for anything that links with pseduo_client.o, pretty much
+ CLIENT_LDFLAGS=-ldl -lpthread
+-DB_LDFLAGS=-lsqlite3 -lpthread
++DB_LDFLAGS=$(SQLITE)/lib/libsqlite3.a -lpthread
- SHOBJS=pseudo_table.o pseudo_util.o
+ PSEUDO=$(BIN)/pseudo
+ PSEUDODB=$(BIN)/pseudodb
diff --git a/meta/recipes-devtools/pseudo/pseudo_git.bb b/meta/recipes-devtools/pseudo/pseudo_git.bb
index f9b10f0d36..244fabe1eb 100644
--- a/meta/recipes-devtools/pseudo/pseudo_git.bb
+++ b/meta/recipes-devtools/pseudo/pseudo_git.bb
@@ -6,11 +6,11 @@ LICENSE = "LGPL2.1"
DEPENDS = "sqlite3"
PV = "0.0+git${SRCPV}"
-PR = "r16"
+PR = "r18"
SRC_URI = "git://github.com/wrpseudo/pseudo.git;protocol=git \
file://static_sqlite.patch \
- file://895fa7e359e8026a608fba052c2994e42901e45f.patch"
+ "
FILES_${PN} = "${libdir}/libpseudo.so ${bindir}/* ${localstatedir}/pseudo"
PROVIDES += "virtual/fakeroot"
@@ -25,7 +25,26 @@ do_configure () {
NO32LIBS ??= "0"
+# Compile for the local machine arch...
do_compile () {
+ ${S}/configure --prefix=${prefix} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=${SITEINFO_BITS}
+ oe_runmake 'LIB=lib/pseudo/lib$(MARK64)'
+}
+
+# Two below are the same
+# If necessary compile for the alternative machine arch. This is only
+# necessary in a native build.
+do_compile_prepend_virtclass-native () {
+ if [ "${SITEINFO_BITS}" == "64" -a -e "/usr/include/gnu/stubs-32.h" -a "${PN}" == "pseudo-native" -a "${NO32LIBS}" != "1" ]; then
+ # We need the 32-bit libpseudo on a 64-bit machine...
+ ./configure --prefix=${prefix} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=32
+ oe_runmake 'CFLAGS=-m32' 'LIB=lib/pseudo/lib' libpseudo
+ # prevent it from removing the lib, but remove everything else
+ make 'LIB=foo' distclean
+ fi
+}
+
+do_compile_prepend_virtclass-nativesdk () {
if [ "${SITEINFO_BITS}" == "64" -a -e "/usr/include/gnu/stubs-32.h" -a "${PN}" == "pseudo-native" -a "${NO32LIBS}" != "1" ]; then
# We need the 32-bit libpseudo on a 64-bit machine...
./configure --prefix=${prefix} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=32
@@ -33,18 +52,27 @@ do_compile () {
# prevent it from removing the lib, but remove everything else
make 'LIB=foo' distclean
fi
- ${S}/configure --prefix=${prefix} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=${SITEINFO_BITS}
- oe_runmake 'LIB=lib/pseudo/lib$(MARK64)'
}
do_install () {
oe_runmake 'DESTDIR=${D}' 'LIB=lib/pseudo/lib$(MARK64)' install
+}
+
+# Two below are the same
+# If necessary install for the alternative machine arch. This is only
+# necessary in a native build.
+do_install_append_virtclass-native () {
if [ "${SITEINFO_BITS}" == "64" -a -e "/usr/include/gnu/stubs-32.h" -a "${PN}" == "pseudo-native" -a "${NO32LIBS}" != "1" ]; then
mkdir -p ${D}${prefix}/lib/pseudo/lib
cp lib/pseudo/lib/libpseudo.so ${D}${prefix}/lib/pseudo/lib/.
fi
}
-BBCLASSEXTEND = "native nativesdk"
-
+do_install_append_virtclass-nativesdk () {
+ if [ "${SITEINFO_BITS}" == "64" -a -e "/usr/include/gnu/stubs-32.h" -a "${PN}" == "pseudo-native" -a "${NO32LIBS}" != "1" ]; then
+ mkdir -p ${D}${prefix}/lib/pseudo/lib
+ cp lib/pseudo/lib/libpseudo.so ${D}${prefix}/lib/pseudo/lib/.
+ fi
+}
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python-dbus_0.83.1.bb b/meta/recipes-devtools/python/python-dbus_0.83.1.bb
deleted file mode 100644
index d405ffa8c1..0000000000
--- a/meta/recipes-devtools/python/python-dbus_0.83.1.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-DESCRIPTION = "Python bindings for DBus, a socket-based message bus system for interprocess communication"
-SECTION = "devel/python"
-HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=f5612614133e9a2f2dad527d97554670"
-DEPENDS = "expat dbus dbus-glib virtual/libintl python-pyrex-native"
-PR = "ml0"
-
-SRC_URI = "http://dbus.freedesktop.org/releases/dbus-python/dbus-python-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "5fdf3970aa0c00020289de7ba8f3be18"
-SRC_URI[sha256sum] = "ce283806f1af4f2322e183a276528a880b503c74972932bd09f06bdb7fcc1b99"
-S = "${WORKDIR}/dbus-python-${PV}"
-
-inherit distutils-base autotools pkgconfig
-
-export BUILD_SYS
-export HOST_SYS
-
-export STAGING_LIBDIR
-export STAGING_INCDIR
-
-RDEPENDS = "python-io python-logging python-stringold python-threading python-xml"
-
-FILES_${PN}-dev += "${libdir}/pkgconfig
diff --git a/meta/recipes-devtools/python/python-dbus_0.83.2.bb b/meta/recipes-devtools/python/python-dbus_0.83.2.bb
new file mode 100644
index 0000000000..323dae50ef
--- /dev/null
+++ b/meta/recipes-devtools/python/python-dbus_0.83.2.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Python bindings for DBus, a socket-based message bus system for interprocess communication"
+SECTION = "devel/python"
+HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f5612614133e9a2f2dad527d97554670"
+DEPENDS = "expat dbus dbus-glib virtual/libintl python-pyrex-native"
+PR = "r0"
+
+SRC_URI = "http://dbus.freedesktop.org/releases/dbus-python/dbus-python-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "4ebcaa905bdcb4132b915196b0a3691b"
+SRC_URI[sha256sum] = "883729c98f40790021e3be0f7028ae863ee1c4a7b922a5578c1342592adfff64"
+S = "${WORKDIR}/dbus-python-${PV}"
+
+inherit distutils-base autotools pkgconfig
+
+export BUILD_SYS
+export HOST_SYS
+
+export STAGING_LIBDIR
+export STAGING_INCDIR
+
+RDEPENDS_${PN} = "python-io python-logging python-stringold python-threading python-xml"
+
+FILES_${PN}-dev += "${libdir}/pkgconfig
diff --git a/meta/recipes-devtools/python/python-gst_0.10.19.bb b/meta/recipes-devtools/python/python-gst_0.10.19.bb
index 16852d1a15..22d63393b4 100644
--- a/meta/recipes-devtools/python/python-gst_0.10.19.bb
+++ b/meta/recipes-devtools/python/python-gst_0.10.19.bb
@@ -2,8 +2,8 @@ DESCRIPTION = "Python Gstreamer bindings"
SECTION = "devel/python"
LICENSE = "LGPLv2.1"
DEPENDS = "gstreamer gst-plugins-base python-pygobject"
-RDEPENDS += "python-pygtk"
-PR = "r0"
+RDEPENDS_${PN} += "python-pygtk"
+PR = "r1"
SRC_URI = "http://gstreamer.freedesktop.org/src/gst-python/gst-python-${PV}.tar.bz2 \
file://python-path.patch"
diff --git a/meta/recipes-devtools/python/python-imaging_1.1.7.bb b/meta/recipes-devtools/python/python-imaging_1.1.7.bb
index bd6fe1d227..ce3b977114 100644
--- a/meta/recipes-devtools/python/python-imaging_1.1.7.bb
+++ b/meta/recipes-devtools/python/python-imaging_1.1.7.bb
@@ -4,9 +4,9 @@ PRIORITY = "optional"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://README;beginline=92;endline=120;md5=c4371af4579f1e489cf881c1443dd4ec"
DEPENDS = "freetype jpeg tiff"
-RDEPENDS = "python-lang python-stringold"
+RDEPENDS_${PN} = "python-lang python-stringold"
SRCNAME = "Imaging"
-PR = "ml0"
+PR = "ml1"
SRC_URI = "http://effbot.org/downloads/Imaging-${PV}.tar.gz \
file://path.patch"
diff --git a/meta/recipes-devtools/python/python-native_2.6.6.bb b/meta/recipes-devtools/python/python-native_2.6.6.bb
index 148dc587e9..2ad10c9192 100644
--- a/meta/recipes-devtools/python/python-native_2.6.6.bb
+++ b/meta/recipes-devtools/python/python-native_2.6.6.bb
@@ -2,6 +2,7 @@ require python.inc
DEPENDS = "openssl-native bzip2-full-native zlib-native readline-native sqlite3-native"
PR = "${INC_PR}.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=38fdd546420fab09ac6bd3d8a1c83eb6"
SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.bz2 \
file://04-default-is-optimized.patch \
diff --git a/meta/recipes-devtools/python/python-pycurl_7.19.0.bb b/meta/recipes-devtools/python/python-pycurl_7.19.0.bb
index c8841f4405..b868ad8cde 100644
--- a/meta/recipes-devtools/python/python-pycurl_7.19.0.bb
+++ b/meta/recipes-devtools/python/python-pycurl_7.19.0.bb
@@ -8,9 +8,9 @@ LIC_FILES_CHKSUM = "file://README;endline=13;md5=fbfe545b1869617123a08c0983ef17b
file://COPYING2;md5=ffaa1e283b7f9bf5aafd8d45db6f7518"
DEPENDS = "curl python"
-RDEPENDS = "python-core curl"
+RDEPENDS_${PN} = "python-core curl"
SRCNAME = "pycurl"
-PR = "r0"
+PR = "r1"
SRC_URI = "\
http://${SRCNAME}.sourceforge.net/download/${SRCNAME}-${PV}.tar.gz;name=archive \
diff --git a/meta/recipes-devtools/python/python-pygobject-native_2.27.0.bb b/meta/recipes-devtools/python/python-pygobject-native_2.27.0.bb
deleted file mode 100644
index d3602277a4..0000000000
--- a/meta/recipes-devtools/python/python-pygobject-native_2.27.0.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require python-pygobject_${PV}.bb
-
-DEPENDS = "python-native glib-2.0-native"
-PR = "r0"
-
-PARALLEL_MAKE = ""
-
-inherit native
-
-SRC_URI = "ftp://ftp.gnome.org/pub/GNOME/sources/pygobject/${MAJ_VER}/pygobject-${PV}.tar.bz2"
-
-do_install_append() {
- install -d ${D}${bindir}
- install -m 0755 gobject/generate-constants ${D}${bindir}/gobject-generate-constants
-}
diff --git a/meta/recipes-devtools/python/python-pygobject_2.27.0.bb b/meta/recipes-devtools/python/python-pygobject_2.27.0.bb
index 43561088a8..876e8a4bcd 100644
--- a/meta/recipes-devtools/python/python-pygobject_2.27.0.bb
+++ b/meta/recipes-devtools/python/python-pygobject_2.27.0.bb
@@ -3,18 +3,20 @@ SECTION = "devel/python"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
DEPENDS = "python-pygobject-native-${PV} glib-2.0"
-PR = "r0"
+DEPENDS_virtclass-native = "glib-2.0-native"
+RDEPENDS_virtclass-native = ""
+PR = "r2"
MAJ_VER = "${@bb.data.getVar('PV',d,1).split('.')[0]}.${@bb.data.getVar('PV',d,1).split('.')[1]}"
-SRC_URI = "ftp://ftp.gnome.org/pub/GNOME/sources/pygobject/${MAJ_VER}/pygobject-${PV}.tar.bz2 \
- file://generate-constants.patch"
+SRC_URI = "ftp://ftp.gnome.org/pub/GNOME/sources/pygobject/${MAJ_VER}/pygobject-${PV}.tar.bz2"
-SRC_URI[md5sum] = "c12eef0cd6725dc7245c3db78ef85d2d"
-SRC_URI[sha256sum] = "e6ae6c70966899d2040c82ae4e1590cf941ebf121a3ec61e80bf517ce8d9be0a"
+SRC_URI[md5sum] = "9e2496ffa4e55911f94232e29ee9f146"
+SRC_URI[sha256sum] = "7594bd86c5b92a4ba1f26927800f1b29e1ec5c246cad67aa085c279d6425b8a2"
S = "${WORKDIR}/pygobject-${PV}"
FILESPATH = "${FILE_DIRNAME}/python-pygobject:${FILE_DIRNAME}/files"
+EXTRA_OECONF += "--disable-introspection"
inherit autotools distutils-base pkgconfig
@@ -32,3 +34,5 @@ FILES_${PN} = "${libdir}/python*"
FILES_${PN}-lib = "${libdir}/lib*.so.*"
FILES_${PN}-dev += "${bindir} ${datadir}"
FILES_${PN}-dbg += "${libdir}/.debug"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python-pygtk_2.17.0.bb b/meta/recipes-devtools/python/python-pygtk_2.17.0.bb
index c32d9987ac..f56e1fec84 100644
--- a/meta/recipes-devtools/python/python-pygtk_2.17.0.bb
+++ b/meta/recipes-devtools/python/python-pygtk_2.17.0.bb
@@ -2,12 +2,12 @@ DESCRIPTION = "Python GTK+ 2.17.x Bindings"
SECTION = "devel/python"
# needs gtk+ 2.17.x
DEPENDS = "gtk+ libglade python-pycairo python-pygobject"
-RDEPENDS = "python-shell python-pycairo python-pygobject"
+RDEPENDS_${PN} = "python-shell python-pycairo python-pygobject"
PROVIDES = "python-pygtk2"
SRCNAME = "pygtk"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
-PR = "ml8.3"
+PR = "ml9"
SRC_URI = "ftp://ftp.gnome.org/pub/gnome/sources/pygtk/2.17/${SRCNAME}-${PV}.tar.bz2 \
file://fix-gtkunixprint.patch \
diff --git a/meta/recipes-devtools/python/python-pyrex-native_0.9.9.bb b/meta/recipes-devtools/python/python-pyrex-native_0.9.9.bb
index 90b6b16836..827635425d 100644
--- a/meta/recipes-devtools/python/python-pyrex-native_0.9.9.bb
+++ b/meta/recipes-devtools/python/python-pyrex-native_0.9.9.bb
@@ -1,5 +1,5 @@
require python-pyrex_${PV}.bb
inherit native
DEPENDS = "python-native"
-RDEPENDS = ""
-PR = "r0"
+RDEPENDS_${PN} = ""
+PR = "r1"
diff --git a/meta/recipes-devtools/python/python-scons-native_2.0.1.bb b/meta/recipes-devtools/python/python-scons-native_2.0.1.bb
index a4bcd4258a..f7646a2587 100644
--- a/meta/recipes-devtools/python/python-scons-native_2.0.1.bb
+++ b/meta/recipes-devtools/python/python-scons-native_2.0.1.bb
@@ -1,6 +1,6 @@
require python-scons_${PV}.bb
inherit native
DEPENDS = "python-native"
-RDEPENDS = ""
-PR = "r0"
+RDEPENDS_${PN} = ""
+PR = "r1"
diff --git a/meta/recipes-devtools/python/python.inc b/meta/recipes-devtools/python/python.inc
index 62a6ba1589..f78250769b 100644
--- a/meta/recipes-devtools/python/python.inc
+++ b/meta/recipes-devtools/python/python.inc
@@ -22,4 +22,14 @@ EXTRA_OECONF = "\
--enable-shared \
"
+EXTRA_OECONF_poky-lsb = "\
+ --with-threads \
+ --with-pymalloc \
+ --with-cyclic-gc \
+ --without-cxx \
+ --with-signal-module \
+ --enable-shared \
+ ac_cv_sizeof_off_t=8 \
+"
+
PARALLEL_MAKE = ""
diff --git a/meta/recipes-devtools/python/python_2.6.6.bb b/meta/recipes-devtools/python/python_2.6.6.bb
index b33e0a9e87..ad0d7a956a 100644
--- a/meta/recipes-devtools/python/python_2.6.6.bb
+++ b/meta/recipes-devtools/python/python_2.6.6.bb
@@ -1,8 +1,11 @@
require python.inc
DEPENDS = "python-native db gdbm openssl readline sqlite3 zlib"
DEPENDS_sharprom = "python-native db readline zlib gdbm openssl"
-PR = "${INC_PR}.0"
+PR = "${INC_PR}.1"
LIC_FILES_CHKSUM = "file://LICENSE;md5=38fdd546420fab09ac6bd3d8a1c83eb6"
+
+DISTRO_SRC_URI ?= "file://sitecustomize.py"
+DISTRO_SRC_URI_poky-lsb = ""
SRC_URI = "\
http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.bz2 \
file://01-use-proper-tools-for-cross-build.patch \
@@ -12,7 +15,7 @@ SRC_URI = "\
file://05-enable-ctypes-cross-build.patch \
file://06-avoid_usr_lib_termcap_path_in_linking.patch \
file://99-ignore-optimization-flag.patch \
- file://sitecustomize.py \
+ ${DISTRO_SRC_URI} \
"
SRC_URI[md5sum] = "cf4e6881bb84a7ce6089e4a307f71f14"
@@ -74,7 +77,9 @@ do_install() {
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
DESTDIR=${D} LIBDIR=${libdir} install
- install -m 0644 ${WORKDIR}/sitecustomize.py ${D}/${libdir}/python${PYTHON_MAJMIN}
+ if [ -e ${WORKDIR}/sitecustomize.py ]; then
+ install -m 0644 ${WORKDIR}/sitecustomize.py ${D}/${libdir}/python${PYTHON_MAJMIN}
+ fi
# remove hardcoded ccache, see http://bugs.openembedded.net/show_bug.cgi?id=4144
sed -i -e s,ccache,'$(CCACHE)', ${D}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/arm-cp15-fix.patch b/meta/recipes-devtools/qemu/qemu-0.12.4/arm-cp15-fix.patch
deleted file mode 100644
index 1e0ea43083..0000000000
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/arm-cp15-fix.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From: Riku Voipio <riku.voipio@nokia.com>
-
-Access the cp15.c13 TLS registers directly with TCG ops instead of with
-a slow helper. If the the cp15 read/write was not TLS register access,
-fall back to the cp15 helper.
-
-This makes accessing __thread variables in linux-user when apps are compiled
-with -mtp=cp15 possible. legal cp15 register to acces from linux-user are
-already checked in cp15_user_ok.
-
-While at it, make the cp15.c13 Thread ID registers available only on
-ARMv6K and newer.
-
-Signed-off-by: Riku Voipio <riku.voipio@nokia.com>
-Acked-by: Laurent Desnogues <laurent.desnogues@gmail.com>
-
-diff --git a/target-arm/helper.c b/target-arm/helper.c
-index b3aec99..27001e8 100644
---- a/target-arm/helper.c
-+++ b/target-arm/helper.c
-@@ -511,7 +511,6 @@ void HELPER(set_cp15)(CPUState *env, uint32_t insn, uint32_t val)
- uint32_t HELPER(get_cp15)(CPUState *env, uint32_t insn)
- {
- cpu_abort(env, "cp15 insn %08x\n", insn);
-- return 0;
- }
-
- /* These should probably raise undefined insn exceptions. */
-@@ -1491,15 +1490,6 @@ void HELPER(set_cp15)(CPUState *env, uint32_t insn, uint32_t val)
- tlb_flush(env, 0);
- env->cp15.c13_context = val;
- break;
-- case 2:
-- env->cp15.c13_tls1 = val;
-- break;
-- case 3:
-- env->cp15.c13_tls2 = val;
-- break;
-- case 4:
-- env->cp15.c13_tls3 = val;
-- break;
- default:
- goto bad_reg;
- }
-@@ -1779,12 +1769,6 @@ uint32_t HELPER(get_cp15)(CPUState *env, uint32_t insn)
- return env->cp15.c13_fcse;
- case 1:
- return env->cp15.c13_context;
-- case 2:
-- return env->cp15.c13_tls1;
-- case 3:
-- return env->cp15.c13_tls2;
-- case 4:
-- return env->cp15.c13_tls3;
- default:
- goto bad_reg;
- }
-diff --git a/target-arm/translate.c b/target-arm/translate.c
-index 5cf3e06..786c329 100644
---- a/target-arm/translate.c
-+++ b/target-arm/translate.c
-@@ -2455,6 +2455,57 @@ static int cp15_user_ok(uint32_t insn)
- return 0;
- }
-
-+static int cp15_tls_load_store(CPUState *env, DisasContext *s, uint32_t insn, uint32_t rd)
-+{
-+ TCGv tmp;
-+ int cpn = (insn >> 16) & 0xf;
-+ int cpm = insn & 0xf;
-+ int op = ((insn >> 5) & 7) | ((insn >> 18) & 0x38);
-+
-+ if (!arm_feature(env, ARM_FEATURE_V6K))
-+ return 0;
-+
-+ if (!(cpn == 13 && cpm == 0))
-+ return 0;
-+
-+ if (insn & ARM_CP_RW_BIT) {
-+ tmp = new_tmp();
-+ switch (op) {
-+ case 2:
-+ tcg_gen_ld_i32(tmp, cpu_env, offsetof(CPUARMState, cp15.c13_tls1));
-+ break;
-+ case 3:
-+ tcg_gen_ld_i32(tmp, cpu_env, offsetof(CPUARMState, cp15.c13_tls2));
-+ break;
-+ case 4:
-+ tcg_gen_ld_i32(tmp, cpu_env, offsetof(CPUARMState, cp15.c13_tls3));
-+ break;
-+ default:
-+ dead_tmp(tmp);
-+ return 0;
-+ }
-+ store_reg(s, rd, tmp);
-+
-+ } else {
-+ tmp = load_reg(s, rd);
-+ switch (op) {
-+ case 2:
-+ tcg_gen_st_i32(tmp, cpu_env, offsetof(CPUARMState, cp15.c13_tls1));
-+ break;
-+ case 3:
-+ tcg_gen_st_i32(tmp, cpu_env, offsetof(CPUARMState, cp15.c13_tls2));
-+ break;
-+ case 4:
-+ tcg_gen_st_i32(tmp, cpu_env, offsetof(CPUARMState, cp15.c13_tls3));
-+ break;
-+ default:
-+ return 0;
-+ }
-+ dead_tmp(tmp);
-+ }
-+ return 1;
-+}
-+
- /* Disassemble system coprocessor (cp15) instruction. Return nonzero if
- instruction is not defined. */
- static int disas_cp15_insn(CPUState *env, DisasContext *s, uint32_t insn)
-@@ -2489,6 +2540,10 @@ static int disas_cp15_insn(CPUState *env, DisasContext *s, uint32_t insn)
- return 0;
- }
- rd = (insn >> 12) & 0xf;
-+
-+ if (cp15_tls_load_store(env, s, insn, rd))
-+ return 0;
-+
- tmp2 = tcg_const_i32(insn);
- if (insn & ARM_CP_RW_BIT) {
- tmp = new_tmp();
-
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/arm_timer-fix-oneshot-mode.patch b/meta/recipes-devtools/qemu/qemu-0.12.4/arm_timer-fix-oneshot-mode.patch
deleted file mode 100644
index 530736c4ca..0000000000
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/arm_timer-fix-oneshot-mode.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From a9cf98d939c4f6539fad7e7d812ea16d96ba3dc9 Mon Sep 17 00:00:00 2001
-From: Rabin Vincent <rabin@rab.in>
-Date: Sun, 2 May 2010 15:20:52 +0530
-Subject: [PATCH] arm_timer: fix oneshot mode
-
-commit id: a9cf98d939c4f6539fad7e7d812ea16d96ba3dc9 in git://git.sv.gnu.org/qemu.git
-
-In oneshot mode, the delta needs to come from the TimerLoad register,
-not the maximum limit.
-
-Signed-off-by: Rabin Vincent <rabin@rab.in>
-Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
----
- hw/arm_timer.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/hw/arm_timer.c b/hw/arm_timer.c
-index 5b6947a..9073ffc 100644
---- a/hw/arm_timer.c
-+++ b/hw/arm_timer.c
-@@ -71,7 +71,7 @@ static void arm_timer_recalibrate(arm_timer_state *s, int reload)
- {
- uint32_t limit;
-
-- if ((s->control & TIMER_CTRL_PERIODIC) == 0) {
-+ if ((s->control & (TIMER_CTRL_PERIODIC | TIMER_CTRL_ONESHOT)) == 0) {
- /* Free running. */
- if (s->control & TIMER_CTRL_32BIT)
- limit = 0xffffffff;
---
-1.6.5.2
-
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/arm_timer-reload-timer-when-enabled.patch b/meta/recipes-devtools/qemu/qemu-0.12.4/arm_timer-reload-timer-when-enabled.patch
deleted file mode 100644
index 1890e21e60..0000000000
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/arm_timer-reload-timer-when-enabled.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From d6759902cb467c002086853d2eb38fb969c29f7f Mon Sep 17 00:00:00 2001
-From: Rabin Vincent <rabin@rab.in>
-Date: Sun, 2 May 2010 15:20:51 +0530
-Subject: [PATCH] arm_timer: reload timer when enabled
-
-commit id: d6759902cb467c002086853d2eb38fb969c29f7f in git://git.sv.gnu.org/qemu.git
-
-Reload the timer when TimerControl is written, if the timer is to be
-enabled. Otherwise, if an earlier write to TimerLoad was done while
-periodic mode was not set, s->delta may incorrectly still have the value
-of the maximum limit instead of the value written to TimerLoad.
-
-This problem is evident on versatileap on current linux-next, which
-enables TIMER_CTRL_32BIT before writing to TimerLoad and then enabling
-periodic mode and starting the timer. This causes the first periodic
-tick to be scheduled to occur after 0xffffffff periods, leading to a
-perceived hang while the kernel waits for the first timer tick.
-
-Signed-off-by: Rabin Vincent <rabin@rab.in>
-Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
----
- hw/arm_timer.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/hw/arm_timer.c b/hw/arm_timer.c
-index 9fef191..5b6947a 100644
---- a/hw/arm_timer.c
-+++ b/hw/arm_timer.c
-@@ -113,7 +113,7 @@ static void arm_timer_write(void *opaque, target_phys_addr_t offset,
- case 1: freq >>= 4; break;
- case 2: freq >>= 8; break;
- }
-- arm_timer_recalibrate(s, 0);
-+ arm_timer_recalibrate(s, s->control & TIMER_CTRL_ENABLE);
- ptimer_set_freq(s->timer, freq);
- if (s->control & TIMER_CTRL_ENABLE) {
- /* Restart the timer if still enabled. */
---
-1.6.5.2
-
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/cursor-shadow-fix.patch b/meta/recipes-devtools/qemu/qemu-0.12.4/cursor-shadow-fix.patch
deleted file mode 100644
index 6600c4303f..0000000000
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/cursor-shadow-fix.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-Fix the mouse shadow in qemu
-
-the root cause is that the qemu cursor array is hardcoded to 256 bytes, while the sato use cursor of the size 64*64=4096, thus lead buffer overflow and abnormal mouse.
-
-This issue has been fixed in upstream starting from v0.13.0-rc0. v0.12.5 still has this issue. So when qemu is upgraded to 0.13.0 or above, this patch can be safely removed.
-
-Signed-off-by: Yu Ke <ke.yu@intel.com>
-
-diff --git a/sdl.c b/sdl.c
-index 7912c91..2f33cd2 100644
---- a/sdl.c
-+++ b/sdl.c
-@@ -775,12 +775,12 @@ static void sdl_mouse_define(int width, int height, int bpp,
- int hot_x, int hot_y,
- uint8_t *image, uint8_t *mask)
- {
-- uint8_t sprite[256], *line;
-+ uint8_t *sprite, *line;
- int x, y, dst, bypl, src = 0;
- if (guest_sprite)
- SDL_FreeCursor(guest_sprite);
-
-- memset(sprite, 0, 256);
-+ sprite = (uint8_t*)qemu_mallocz(width * height);
- bypl = ((width * bpp + 31) >> 5) << 2;
- for (y = 0, dst = 0; y < height; y ++, image += bypl) {
- line = image;
-@@ -818,6 +818,7 @@ static void sdl_mouse_define(int width, int height, int bpp,
- if (guest_cursor &&
- (gui_grab || kbd_mouse_is_absolute() || absolute_enabled))
- SDL_SetCursor(guest_sprite);
-+ qemu_free(sprite);
- }
-
- static void sdl_cleanup(void)
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/enable-i386-linux-user.patch b/meta/recipes-devtools/qemu/qemu-0.12.4/enable-i386-linux-user.patch
deleted file mode 100644
index 550d48b138..0000000000
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/enable-i386-linux-user.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-Enable i386-linux-user
-
-Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
-
-Index: qemu-0.12.4/Makefile.target
-===================================================================
---- qemu-0.12.4.orig/Makefile.target 2010-08-31 13:57:01.000000000 +0800
-+++ qemu-0.12.4/Makefile.target 2010-08-31 14:03:06.000000000 +0800
-@@ -46,8 +46,13 @@
- libobj-$(CONFIG_NOSOFTFLOAT) += fpu/softfloat-native.o
- libobj-y += op_helper.o helper.o
- libobj-$(CONFIG_NEED_MMU) += mmu.o
-+ifndef CONFIG_LINUX_USER
- libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o
- libobj-$(TARGET_X86_64) += helper_opengl.o opengl_exec.o
-+else
-+libobj-$(TARGET_I386) += dummygl.o
-+libobj-$(TARGET_X86_64) += dummygl.o
-+endif #CONFIG_LINUX_USER
- libobj-$(TARGET_ARM) += dummygl.o
- libobj-$(TARGET_MIPS) += dummygl.o
- libobj-$(TARGET_PPC) += dummygl.o
-Index: qemu-0.12.4/target-i386/dummygl.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ qemu-0.12.4/target-i386/dummygl.c 2010-08-31 15:25:25.000000000 +0800
-@@ -0,0 +1,26 @@
-+#include <string.h>
-+#include <stdlib.h>
-+#include <assert.h>
-+#include <stdint.h>
-+#include <X11/Xlib.h>
-+#include <X11/Xutil.h>
-+
-+void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window)
-+{
-+
-+}
-+
-+void opengl_process_enable(void)
-+{
-+
-+}
-+
-+
-+void mem_opengl(uint64_t ptr)
-+{
-+
-+}
-+
-+void helper_opengl(void)
-+{
-+}
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/fix-configure-checks.patch b/meta/recipes-devtools/qemu/qemu-0.12.4/fix-configure-checks.patch
deleted file mode 100644
index 28ca2b3646..0000000000
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/fix-configure-checks.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-In native builds, qemu can fail to find zlib development files in the native
-sysroot and the build machine might not have zlib-dev packages installed.
-
-Add CFLAGS to qemu's CFLAGS which in the native case means BUILD_CFLAGS are
-added and files in the sysroot can be found.
-
-Patch from Paul Eggleton, Comments by RP 28/11/10
-
-Index: qemu-0.12.4/configure
-===================================================================
---- qemu-0.12.4.orig/configure
-+++ qemu-0.12.4/configure
-@@ -99,6 +99,7 @@ QEMU_CFLAGS="-Wstrict-prototypes -Wredun
- QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
- QEMU_CFLAGS="-U_FORTIFY_SOURCE $QEMU_CFLAGS"
- QEMU_CFLAGS="-I. -I\$(SRC_PATH) $QEMU_CFLAGS"
-+QEMU_CFLAGS="$QEMU_CFLAGS $CFLAGS"
- LDFLAGS="-g $LDFLAGS"
-
- gcc_flags="-Wold-style-declaration -Wold-style-definition"
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/fix-nogl.patch b/meta/recipes-devtools/qemu/qemu-0.12.4/fix-nogl.patch
deleted file mode 100644
index 528b6f0d18..0000000000
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/fix-nogl.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-Index: qemu-0.12.4/Makefile.target
-===================================================================
---- qemu-0.12.4.orig/Makefile.target 2010-06-24 07:59:15.669394205 +0100
-+++ qemu-0.12.4/Makefile.target 2010-06-24 08:07:38.739399512 +0100
-@@ -47,6 +47,10 @@
- libobj-y += op_helper.o helper.o
- libobj-$(CONFIG_NEED_MMU) += mmu.o
- libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o
-+libobj-$(TARGET_X86_64) += helper_opengl.o opengl_exec.o
-+libobj-$(TARGET_ARM) += dummygl.o
-+libobj-$(TARGET_MIPS) += dummygl.o
-+libobj-$(TARGET_PPC) += dummygl.o
- libobj-$(TARGET_ARM) += neon_helper.o iwmmxt_helper.o
- libobj-$(TARGET_ALPHA) += alpha_palcode.o
-
-Index: qemu-0.12.4/target-arm/dummygl.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ qemu-0.12.4/target-arm/dummygl.c 2010-06-24 07:59:15.899401748 +0100
-@@ -0,0 +1,22 @@
-+#include <string.h>
-+#include <stdlib.h>
-+#include <assert.h>
-+#include <stdint.h>
-+#include <X11/Xlib.h>
-+#include <X11/Xutil.h>
-+
-+void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window)
-+{
-+
-+}
-+
-+void opengl_process_enable(void)
-+{
-+
-+}
-+
-+
-+void mem_opengl(uint64_t ptr)
-+{
-+
-+}
-Index: qemu-0.12.4/target-mips/dummygl.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ qemu-0.12.4/target-mips/dummygl.c 2010-06-24 07:59:15.899401748 +0100
-@@ -0,0 +1,22 @@
-+#include <string.h>
-+#include <stdlib.h>
-+#include <assert.h>
-+#include <stdint.h>
-+#include <X11/Xlib.h>
-+#include <X11/Xutil.h>
-+
-+void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window)
-+{
-+
-+}
-+
-+void opengl_process_enable(void)
-+{
-+
-+}
-+
-+
-+void mem_opengl(uint64_t ptr)
-+{
-+
-+}
-Index: qemu-0.12.4/target-ppc/dummygl.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ qemu-0.12.4/target-ppc/dummygl.c 2010-06-24 08:07:59.070712946 +0100
-@@ -0,0 +1,22 @@
-+#include <string.h>
-+#include <stdlib.h>
-+#include <assert.h>
-+#include <stdint.h>
-+#include <X11/Xlib.h>
-+#include <X11/Xutil.h>
-+
-+void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window)
-+{
-+
-+}
-+
-+void opengl_process_enable(void)
-+{
-+
-+}
-+
-+
-+void mem_opengl(uint64_t ptr)
-+{
-+
-+}
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/init-info.patch b/meta/recipes-devtools/qemu/qemu-0.12.4/init-info.patch
deleted file mode 100644
index 8ba7d8ff4c..0000000000
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/init-info.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-# This is a workaround to the crashes seen on Ubuntu. Setting info to zero
-# makes info.info.x11.display zero and avoids the calls to
-# opengl_exec_set_parent_window, one of which is crashing.
-
-Index: qemu-0.12.4/sdl.c
-===================================================================
---- qemu-0.12.4.orig/sdl.c
-+++ qemu-0.12.4/sdl.c
-@@ -871,6 +871,7 @@ void sdl_display_init(DisplayState *ds,
- vi = SDL_GetVideoInfo();
- host_format = *(vi->vfmt);
-
-+ bzero(&info, sizeof(info));
- SDL_GetWMInfo(&info);
- if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display)
- opengl_exec_set_parent_window(info.info.x11.display,
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/linker-flags.patch b/meta/recipes-devtools/qemu/qemu-0.12.4/linker-flags.patch
deleted file mode 100644
index 7b33aa4840..0000000000
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/linker-flags.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Fedora 13 switched the default behaviour of the linker to no longer
-indirectly link to required libraries (i.e. dependencies of a library
-already linked to). Therefore we need to explicitly pass the depended on
-libraries into the linker for building to work on Fedora 13.
-
-More information is available on the Fedora Wiki:
-https://fedoraproject.org/wiki/UnderstandingDSOLinkChange
-
-JL - 15/06/10
-Index: qemu-0.12.4/Makefile.target
-===================================================================
---- qemu-0.12.4.orig/Makefile.target 2010-06-15 11:21:52.000000000 +0100
-+++ qemu-0.12.4/Makefile.target 2010-06-15 11:25:27.212852910 +0100
-@@ -178,7 +178,7 @@
- obj-y += virtio-blk.o virtio-balloon.o virtio-net.o virtio-console.o virtio-pci.o
- obj-$(CONFIG_KVM) += kvm.o kvm-all.o
- obj-$(CONFIG_ISA_MMIO) += isa_mmio.o
--LIBS+=-lz
-+LIBS+=-lz -lX11 -ldl
-
- sound-obj-y =
- sound-obj-$(CONFIG_SB16) += sb16.o
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/no-strip.patch b/meta/recipes-devtools/qemu/qemu-0.12.4/no-strip.patch
deleted file mode 100644
index 8a95a688b3..0000000000
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/no-strip.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-Index: qemu/Makefile
-===================================================================
---- qemu.orig/Makefile 2010-05-11 17:17:06.416912704 -0400
-+++ qemu/Makefile 2010-05-11 17:17:17.051812402 -0400
-@@ -300,7 +300,7 @@ endif
- install: all $(if $(BUILD_DOCS),install-doc)
- $(INSTALL_DIR) "$(DESTDIR)$(bindir)"
- ifneq ($(TOOLS),)
-- $(INSTALL_PROG) $(STRIP_OPT) $(TOOLS) "$(DESTDIR)$(bindir)"
-+ $(INSTALL_PROG) $(TOOLS) "$(DESTDIR)$(bindir)"
- endif
- ifneq ($(BLOBS),)
- $(INSTALL_DIR) "$(DESTDIR)$(datadir)"
-Index: qemu/Makefile.target
-===================================================================
---- qemu.orig/Makefile.target 2010-05-11 17:17:12.188784092 -0400
-+++ qemu/Makefile.target 2010-05-11 17:17:17.052808122 -0400
-@@ -351,7 +351,7 @@ clean:
-
- install: all
- ifneq ($(PROGS),)
-- $(INSTALL) -m 755 $(STRIP_OPT) $(PROGS) "$(DESTDIR)$(bindir)"
-+ $(INSTALL) -m 755 $(PROGS) "$(DESTDIR)$(bindir)"
- endif
-
- # Include automatically generated dependency files
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/qemu-git-qemugl-host.patch b/meta/recipes-devtools/qemu/qemu-0.12.4/qemu-git-qemugl-host.patch
deleted file mode 100644
index ab31476218..0000000000
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/qemu-git-qemugl-host.patch
+++ /dev/null
@@ -1,34376 +0,0 @@
-Index: qemu-0.12.4/Makefile.target
-===================================================================
---- qemu-0.12.4.orig/Makefile.target
-+++ qemu-0.12.4/Makefile.target
-@@ -46,6 +46,7 @@ libobj-$(CONFIG_SOFTFLOAT) += fpu/softfl
- libobj-$(CONFIG_NOSOFTFLOAT) += fpu/softfloat-native.o
- libobj-y += op_helper.o helper.o
- libobj-$(CONFIG_NEED_MMU) += mmu.o
-+libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o
- libobj-$(TARGET_ARM) += neon_helper.o iwmmxt_helper.o
- libobj-$(TARGET_ALPHA) += alpha_palcode.o
-
-@@ -82,6 +83,21 @@ op_helper.o cpu-exec.o: QEMU_CFLAGS += $
- # cpu_signal_handler() in cpu-exec.c.
- signal.o: QEMU_CFLAGS += $(HELPER_CFLAGS)
-
-+parse_gl_h: parse_gl_h.c
-+ $(HOST_CC) -g -o $@ $<
-+server_stub.c: parse_gl_h
-+ ./parse_gl_h
-+gl_func.h: parse_gl_h
-+ ./parse_gl_h
-+GL_CFLAGS := -Wall -g -O2 -fno-strict-aliasing
-+opengl_func.h: gl_func.h
-+helper_opengl.o: helper_opengl.c opengl_func.h server_stub.c
-+ $(CC) $(GL_CFLAGS) $(DEFINES) -c -o $@ $< -I.. -I. -I../fpu -I../target-i386 -DNEED_CPU_H
-+gl_beginend.h: ../target-i386/beginend_funcs.sh
-+ $< > $@
-+opengl_exec.o : opengl_exec.c server_stub.c gl_func.h opengl_func.h gl_beginend.h
-+ $(CC) $(GL_CFLAGS) $(DEFINES) -c -o $@ $< -I. -I../target-i386
-+
- #########################################################
- # Linux user emulator target
-
-@@ -196,6 +212,10 @@ obj-i386-y += usb-uhci.o vmmouse.o vmpor
- obj-i386-y += device-hotplug.o pci-hotplug.o smbios.o wdt_ib700.o
- obj-i386-y += ne2000-isa.o
-
-+ifeq ($(TARGET_BASE_ARCH), i386)
-+QEMU_CFLAGS += -DTARGET_OPENGL_OK
-+endif
-+
- # shared objects
- obj-ppc-y = ppc.o ide/core.o ide/qdev.o ide/isa.o ide/pci.o ide/macio.o
- obj-ppc-y += ide/cmd646.o
-@@ -303,6 +323,8 @@ vl.o: qemu-options.h
-
- monitor.o: qemu-monitor.h
-
-+LIBS += -lGL -lGLU
-+
- ARLIBS=../libqemu_common.a libqemu.a $(HWLIB)
-
- endif # CONFIG_SOFTMMU
-Index: qemu-0.12.4/hw/pixel_ops.h
-===================================================================
---- qemu-0.12.4.orig/hw/pixel_ops.h
-+++ qemu-0.12.4/hw/pixel_ops.h
-@@ -4,6 +4,12 @@ static inline unsigned int rgb_to_pixel8
- return ((r >> 5) << 5) | ((g >> 5) << 2) | (b >> 6);
- }
-
-+static inline unsigned int rgb_to_pixel8bgr(unsigned int r, unsigned int g,
-+ unsigned int b)
-+{
-+ return ((b >> 5) << 5) | ((g >> 5) << 2) | (r >> 6);
-+}
-+
- static inline unsigned int rgb_to_pixel15(unsigned int r, unsigned int g,
- unsigned int b)
- {
-Index: qemu-0.12.4/hw/vmware_vga.c
-===================================================================
---- qemu-0.12.4.orig/hw/vmware_vga.c
-+++ qemu-0.12.4/hw/vmware_vga.c
-@@ -489,6 +489,8 @@ static inline void vmsvga_cursor_define(
-
- #define CMD(f) le32_to_cpu(s->cmd->f)
-
-+static uint32_t last_cmd;
-+
- static inline int vmsvga_fifo_empty(struct vmsvga_state_s *s)
- {
- if (!s->config || !s->enable)
-@@ -498,11 +500,18 @@ static inline int vmsvga_fifo_empty(stru
-
- static inline uint32_t vmsvga_fifo_read_raw(struct vmsvga_state_s *s)
- {
-- uint32_t cmd = s->fifo[CMD(stop) >> 2];
-- s->cmd->stop = cpu_to_le32(CMD(stop) + 4);
-- if (CMD(stop) >= CMD(max))
-+ int offset = CMD(stop);
-+
-+ if (unlikely(s->cmd->next_cmd == s->cmd->stop)) {
-+ fprintf(stderr, "%s: FIFO empty during CMD %i\n",
-+ __FUNCTION__, last_cmd);
-+ return 0x00000000;
-+ }
-+
-+ s->cmd->stop = cpu_to_le32(offset + 4);
-+ if (offset + 4 >= CMD(max))
- s->cmd->stop = s->cmd->min;
-- return cmd;
-+ return s->fifo[offset >> 2];
- }
-
- static inline uint32_t vmsvga_fifo_read(struct vmsvga_state_s *s)
-@@ -512,12 +521,12 @@ static inline uint32_t vmsvga_fifo_read(
-
- static void vmsvga_fifo_run(struct vmsvga_state_s *s)
- {
-- uint32_t cmd, colour;
-+ uint32_t colour;
- int args = 0;
- int x, y, dx, dy, width, height;
- struct vmsvga_cursor_definition_s cursor;
- while (!vmsvga_fifo_empty(s))
-- switch (cmd = vmsvga_fifo_read(s)) {
-+ switch (last_cmd = vmsvga_fifo_read(s)) {
- case SVGA_CMD_UPDATE:
- case SVGA_CMD_UPDATE_VERBOSE:
- x = vmsvga_fifo_read(s);
-@@ -624,7 +633,7 @@ static void vmsvga_fifo_run(struct vmsvg
- while (args --)
- vmsvga_fifo_read(s);
- printf("%s: Unknown command 0x%02x in SVGA command FIFO\n",
-- __FUNCTION__, cmd);
-+ __FUNCTION__, last_cmd);
- break;
- }
-
-@@ -1143,6 +1152,12 @@ static void vmsvga_init(struct vmsvga_st
-
- vga_init_vbe(&s->vga);
-
-+#ifdef EMBED_STDVGA
-+ s->vga.map_addr = VBE_DISPI_LFB_PHYSICAL_ADDRESS;
-+ s->vga.map_end = VBE_DISPI_LFB_PHYSICAL_ADDRESS + vga_ram_size;
-+ vga_dirty_log_start(s);
-+#endif
-+
- rom_add_vga(VGABIOS_FILENAME);
-
- vmsvga_reset(s);
-Index: qemu-0.12.4/qemu-char.c
-===================================================================
---- qemu-0.12.4.orig/qemu-char.c
-+++ qemu-0.12.4/qemu-char.c
-@@ -2235,6 +2235,69 @@ static CharDriverState *qemu_chr_open_so
- return NULL;
- }
-
-+#define TARGET_OPENGL_OK
-+#if defined(TARGET_OPENGL_OK)
-+static uint8_t buffer[32];
-+static int buffer_len;
-+static int hexdigit[128] = {
-+ ['0'] = 0x0,
-+ ['1'] = 0x1,
-+ ['2'] = 0x2,
-+ ['3'] = 0x3,
-+ ['4'] = 0x4,
-+ ['5'] = 0x5,
-+ ['6'] = 0x6,
-+ ['7'] = 0x7,
-+ ['8'] = 0x8,
-+ ['9'] = 0x9,
-+ ['a'] = 0xa,
-+ ['b'] = 0xb,
-+ ['c'] = 0xc,
-+ ['d'] = 0xd,
-+ ['e'] = 0xe,
-+ ['f'] = 0xf,
-+};
-+
-+static int opengl_chr_write(CharDriverState *chr, const uint8_t *buf, int len)
-+{
-+ uint64_t ptr = 0;
-+ int i;
-+
-+ if (memchr(buf, 'x', len))
-+ opengl_process_enable();
-+ return len;
-+ memcpy(buffer + buffer_len, buf, len);
-+ buffer_len += len;
-+
-+ if (buffer_len >= 16) {
-+ for (i = 0; i < 16; i ++)
-+ ptr = (ptr << 4) + hexdigit[buffer[i]];
-+
-+ buffer_len -= 16;
-+ if (buffer_len)
-+ memcpy(buffer, buffer + 16, buffer_len);
-+
-+ mem_opengl(ptr);
-+ }
-+
-+ return len;
-+}
-+
-+CharDriverState *qemu_chr_open_opengl(void)
-+{
-+ CharDriverState *chr = qemu_mallocz(sizeof(CharDriverState));
-+
-+ chr->opaque = chr;
-+ chr->chr_write = opengl_chr_write;
-+
-+ qemu_chr_generic_open(chr);
-+
-+ return chr;
-+}
-+#else
-+#define qemu_chr_open_opengl() 0
-+#endif
-+
- QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename)
- {
- char host[65], port[33], width[8], height[8];
-@@ -2353,6 +2416,10 @@ QemuOpts *qemu_chr_parse_compat(const ch
- qemu_opt_set(opts, "path", filename);
- return opts;
- }
-+ if (!strcmp(filename, "opengl")){
-+ qemu_opt_set(opts, "backend", "opengl");
-+ return opts;
-+ }
-
- fail:
- qemu_opts_del(opts);
-@@ -2368,6 +2435,7 @@ static const struct {
- { .name = "udp", .open = qemu_chr_open_udp },
- { .name = "msmouse", .open = qemu_chr_open_msmouse },
- { .name = "vc", .open = text_console_init },
-+ { .name = "opengl", .open = qemu_chr_open_opengl },
- #ifdef _WIN32
- { .name = "file", .open = qemu_chr_open_win_file_out },
- { .name = "pipe", .open = qemu_chr_open_win_pipe },
-Index: qemu-0.12.4/sdl.c
-===================================================================
---- qemu-0.12.4.orig/sdl.c
-+++ qemu-0.12.4/sdl.c
-@@ -58,6 +58,8 @@ static uint8_t allocator;
- static SDL_PixelFormat host_format;
- static int scaling_active = 0;
-
-+extern void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window);
-+
- static void sdl_update(DisplayState *ds, int x, int y, int w, int h)
- {
- // printf("updating x=%d y=%d w=%d h=%d\n", x, y, w, h);
-@@ -119,12 +121,22 @@ static void do_sdl_resize(int new_width,
-
- static void sdl_resize(DisplayState *ds)
- {
-- if (!allocator) {
-+ SDL_SysWMinfo info;
-+ static Display *dpy;
-+
-+ if (!allocator) {
- if (!scaling_active)
- do_sdl_resize(ds_get_width(ds), ds_get_height(ds), 0);
- else if (real_screen->format->BitsPerPixel != ds_get_bits_per_pixel(ds))
- do_sdl_resize(real_screen->w, real_screen->h, ds_get_bits_per_pixel(ds));
- sdl_setdata(ds);
-+
-+ SDL_GetWMInfo(&info);
-+ if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display &&
-+ (!dpy || dpy == info.info.x11.display)) {
-+ dpy = info.info.x11.display;
-+ opengl_exec_set_parent_window(dpy, info.info.x11.window);
-+ }
- } else {
- if (guest_screen != NULL) {
- SDL_FreeSurface(guest_screen);
-@@ -453,7 +465,7 @@ static void sdl_show_cursor(void)
-
- if (!kbd_mouse_is_absolute()) {
- SDL_ShowCursor(1);
-- if (guest_cursor &&
-+ if (guest_cursor && !force_pointer &&
- (gui_grab || kbd_mouse_is_absolute() || absolute_enabled))
- SDL_SetCursor(guest_sprite);
- else
-@@ -464,7 +476,8 @@ static void sdl_show_cursor(void)
- static void sdl_grab_start(void)
- {
- if (guest_cursor) {
-- SDL_SetCursor(guest_sprite);
-+ if (!force_pointer)
-+ SDL_SetCursor(guest_sprite);
- if (!kbd_mouse_is_absolute() && !absolute_enabled)
- SDL_WarpMouse(guest_x, guest_y);
- } else
-@@ -505,8 +518,8 @@ static void sdl_send_mouse_event(int dx,
- absolute_enabled = 1;
- }
-
-- dx = x * 0x7FFF / (width - 1);
-- dy = y * 0x7FFF / (height - 1);
-+ dx = x * 0x7FFF / (width - 1);
-+ dy = y * 0x7FFF / (height - 1);
- } else if (absolute_enabled) {
- sdl_show_cursor();
- absolute_enabled = 0;
-@@ -761,7 +774,8 @@ static void sdl_mouse_warp(int x, int y,
- if (!guest_cursor)
- sdl_show_cursor();
- if (gui_grab || kbd_mouse_is_absolute() || absolute_enabled) {
-- SDL_SetCursor(guest_sprite);
-+ if (!force_pointer)
-+ SDL_SetCursor(guest_sprite);
- if (!kbd_mouse_is_absolute() && !absolute_enabled)
- SDL_WarpMouse(x, y);
- }
-@@ -815,7 +829,7 @@ static void sdl_mouse_define(int width,
- }
- guest_sprite = SDL_CreateCursor(sprite, mask, width, height, hot_x, hot_y);
-
-- if (guest_cursor &&
-+ if (guest_cursor && !force_pointer &&
- (gui_grab || kbd_mouse_is_absolute() || absolute_enabled))
- SDL_SetCursor(guest_sprite);
- }
-@@ -832,6 +846,7 @@ void sdl_display_init(DisplayState *ds,
- int flags;
- uint8_t data = 0;
- DisplayAllocator *da;
-+ SDL_SysWMinfo info;
- const SDL_VideoInfo *vi;
-
- #if defined(__APPLE__)
-@@ -856,6 +871,12 @@ void sdl_display_init(DisplayState *ds,
- vi = SDL_GetVideoInfo();
- host_format = *(vi->vfmt);
-
-+ SDL_GetWMInfo(&info);
-+ if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display)
-+ opengl_exec_set_parent_window(info.info.x11.display,
-+ RootWindow(info.info.x11.display,
-+ DefaultScreen(info.info.x11.display)));
-+
- dcl = qemu_mallocz(sizeof(DisplayChangeListener));
- dcl->dpy_update = sdl_update;
- dcl->dpy_resize = sdl_resize;
-@@ -891,4 +912,9 @@ void sdl_display_init(DisplayState *ds,
- gui_fullscreen_initial_grab = 1;
- sdl_grab_start();
- }
-+
-+ SDL_GetWMInfo(&info);
-+ if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display)
-+ opengl_exec_set_parent_window(info.info.x11.display,
-+ info.info.x11.window);
- }
-Index: qemu-0.12.4/slirp/udp.c
-===================================================================
---- qemu-0.12.4.orig/slirp/udp.c
-+++ qemu-0.12.4/slirp/udp.c
-@@ -40,6 +40,7 @@
-
- #include <slirp.h>
- #include "ip_icmp.h"
-+#include "bswap.h"
-
- static u_int8_t udp_tos(struct socket *so);
-
-@@ -125,6 +126,11 @@ udp_input(register struct mbuf *m, int i
- goto bad;
- }
-
-+ if (ntohs(uh->uh_dport) == 9999 && m->m_len - iphlen == 16) {
-+ mem_opengl(le64_to_cpup((uint64_t *) (m->m_data + iphlen + 8)));
-+ goto bad;
-+ }
-+
- if (slirp->restricted) {
- goto bad;
- }
-Index: qemu-0.12.4/sysemu.h
-===================================================================
---- qemu-0.12.4.orig/sysemu.h
-+++ qemu-0.12.4/sysemu.h
-@@ -141,6 +141,7 @@ extern int semihosting_enabled;
- extern int old_param;
- extern int boot_menu;
- extern QEMUClock *rtc_clock;
-+extern int force_pointer;
-
- #define MAX_NODES 64
- extern int nb_numa_nodes;
-Index: qemu-0.12.4/target-i386/beginend_funcs.sh
-===================================================================
---- /dev/null
-+++ qemu-0.12.4/target-i386/beginend_funcs.sh
-@@ -0,0 +1,23 @@
-+#! /bin/sh
-+# Copyright 2008 (C) Intel Corporation
-+#
-+# echo names of functions that are legal between a glBegin and glEnd pair.
-+echo -e MAGIC_MACRO\(glVertex{2,3,4}{s,i,f,d}{,v}\)\\n
-+echo -e MAGIC_MACRO\(glTexCoord{1,2,3,4}{s,i,f,d}{,v}\)\\n
-+echo -e MAGIC_MACRO\(glMultiTexCoord{1,2,3,4}{s,i,f,d}{,v}\)\\n
-+echo -e MAGIC_MACRO\(glNormal3{b,s,i,f,d}{,v}\)\\n
-+echo -e MAGIC_MACRO\(glFogCoord{f,d}{,v}\)\\n
-+echo -e MAGIC_MACRO\(glColor{3,4}{b,s,i,f,d,ub,us,ui}{,v}\)\\n
-+echo -e MAGIC_MACRO\(glSecondaryColor3{b,s,i,f,d,ub,us,ui}{,v}\)\\n
-+echo -e MAGIC_MACRO\(glIndex{s,i,f,d,ub}{,v}\)\\n
-+echo -e MAGIC_MACRO\(glVertexAttrib{1,2,3,4}{s,f,d}{,v}\)\\n
-+echo -e MAGIC_MACRO\(glVertexAttrib4{b,i,ub,us,ui}v\)\\n
-+echo -e MAGIC_MACRO\(glVertexAttrib4Nub\)\\n
-+echo -e MAGIC_MACRO\(glVertexAttrib4N{b,s,i,ub,us,ui}v\)\\n
-+echo -e MAGIC_MACRO\(glArrayElement\)\\n
-+echo -e MAGIC_MACRO\(glEvalCoord{1,2}{f,d}{,v}\)\\n
-+echo -e MAGIC_MACRO\(glEvalPoint{1,2}\)\\n
-+echo -e MAGIC_MACRO\(glMaterial{i,f}{,v}\)\\n
-+echo -e MAGIC_MACRO\(glCallList\)\\n
-+echo -e MAGIC_MACRO\(glCallLists\)\\n
-+echo -e MAGIC_MACRO\(glEdgeFlag{,v}\)\\n
-Index: qemu-0.12.4/target-i386/ghash.c
-===================================================================
---- /dev/null
-+++ qemu-0.12.4/target-i386/ghash.c
-@@ -0,0 +1,347 @@
-+/* This is a modified and simplified version of original ghash.c */
-+
-+/* GLIB - Library of useful routines for C programming
-+ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
-+ *
-+ * This library is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2 of the License, or (at your option) any later version.
-+ *
-+ * This library 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with this library; if not, write to the
-+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-+ * Boston, MA 02111-1307, USA.
-+ */
-+
-+/*
-+ * Modified by the GLib Team and others 1997-2000. See the AUTHORS
-+ * file for a list of people on the GLib Team. See the ChangeLog
-+ * files for a list of changes. These files are distributed with
-+ * GLib at ftp://ftp.gtk.org/pub/gtk/.
-+ */
-+
-+
-+#include <stdlib.h>
-+
-+#include "ghash.h"
-+
-+#define HASH_TABLE_MIN_SIZE 11
-+#define HASH_TABLE_MAX_SIZE 13845163
-+
-+#define CLAMP(x, low, high) (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x)))
-+
-+
-+typedef struct _SimpleHashNode SimpleHashNode;
-+
-+struct _SimpleHashNode
-+{
-+ int key;
-+ void* value;
-+ SimpleHashNode *next;
-+};
-+
-+struct _SimpleHashTable
-+{
-+ int size;
-+ int nnodes;
-+ SimpleHashNode **nodes;
-+ SimpleDestroyNotify value_destroy_func;
-+};
-+
-+static const unsigned int simple_primes[] =
-+{
-+ 11,
-+ 19,
-+ 37,
-+ 73,
-+ 109,
-+ 163,
-+ 251,
-+ 367,
-+ 557,
-+ 823,
-+ 1237,
-+ 1861,
-+ 2777,
-+ 4177,
-+ 6247,
-+ 9371,
-+ 14057,
-+ 21089,
-+ 31627,
-+ 47431,
-+ 71143,
-+ 106721,
-+ 160073,
-+ 240101,
-+ 360163,
-+ 540217,
-+ 810343,
-+ 1215497,
-+ 1823231,
-+ 2734867,
-+ 4102283,
-+ 6153409,
-+ 9230113,
-+ 13845163,
-+};
-+
-+static const unsigned int simple_nprimes = sizeof (simple_primes) / sizeof (simple_primes[0]);
-+
-+unsigned int simple_spaced_primes_closest (unsigned int num)
-+{
-+ int i;
-+
-+ for (i = 0; i < simple_nprimes; i++)
-+ if (simple_primes[i] > num)
-+ return simple_primes[i];
-+
-+ return simple_primes[simple_nprimes - 1];
-+}
-+
-+#define HASH_TABLE_RESIZE(hash_table) \
-+ do { \
-+ if ((hash_table->size >= 3 * hash_table->nnodes && \
-+ hash_table->size > HASH_TABLE_MIN_SIZE) || \
-+ (3 * hash_table->size <= hash_table->nnodes && \
-+ hash_table->size < HASH_TABLE_MAX_SIZE)) \
-+ simple_hash_table_resize (hash_table); \
-+ } while(0)
-+
-+static void simple_hash_table_resize (SimpleHashTable *hash_table);
-+static SimpleHashNode** simple_hash_table_lookup_node (SimpleHashTable *hash_table,
-+ int key);
-+static SimpleHashNode* simple_hash_node_new (int key,
-+ void* value);
-+static void simple_hash_nodes_destroy (SimpleHashNode *hash_node,
-+ SimpleDestroyNotify value_destroy_func);
-+
-+
-+#define alloc0(type, n) (type*)calloc(n, sizeof(type))
-+
-+SimpleHashTable*
-+simple_hash_table_new (SimpleDestroyNotify value_destroy_func)
-+{
-+ SimpleHashTable *hash_table;
-+
-+ hash_table = alloc0(SimpleHashTable, 1);
-+ hash_table->size = HASH_TABLE_MIN_SIZE;
-+ hash_table->nnodes = 0;
-+ hash_table->value_destroy_func = value_destroy_func;
-+ hash_table->nodes = alloc0 (SimpleHashNode*, hash_table->size);
-+
-+ return hash_table;
-+}
-+
-+SimpleHashTable* simple_hash_table_clone(SimpleHashTable *hash_table,
-+ SimpleCloneValue clone_value_func)
-+{
-+ SimpleHashTable *hash_table_new;
-+ SimpleHashNode *new_node;
-+ SimpleHashNode *node;
-+ int i;
-+
-+ hash_table_new = alloc0 (SimpleHashTable, 1);
-+ hash_table_new->size = hash_table->size;
-+ hash_table_new->nnodes = hash_table->nnodes;
-+ hash_table_new->value_destroy_func = hash_table->value_destroy_func;
-+ hash_table_new->nodes = alloc0 (SimpleHashNode*, hash_table_new->size);
-+ for (i = 0; i < hash_table->size; i++)
-+ {
-+ node = hash_table->nodes[i];
-+ while(node)
-+ {
-+ SimpleHashNode *next = hash_table_new->nodes[i];
-+ new_node = simple_hash_node_new(node->key,
-+ (clone_value_func)? clone_value_func(node->value) : node->value);
-+ new_node->next = next;
-+ hash_table_new->nodes[i] = new_node;
-+ node = node->next;
-+ }
-+ }
-+ return hash_table_new;
-+}
-+
-+void
-+simple_hash_table_destroy (SimpleHashTable *hash_table)
-+{
-+ int i;
-+
-+ for (i = 0; i < hash_table->size; i++)
-+ {
-+ simple_hash_nodes_destroy (hash_table->nodes[i],
-+ hash_table->value_destroy_func);
-+ hash_table->nodes[i] = NULL;
-+ }
-+ free (hash_table->nodes);
-+ free (hash_table);
-+}
-+
-+static inline SimpleHashNode**
-+simple_hash_table_lookup_node (SimpleHashTable *hash_table,
-+ int key)
-+{
-+ SimpleHashNode **node;
-+
-+ node = &hash_table->nodes[(unsigned int)key % hash_table->size];
-+ while (*node && (*node)->key != key)
-+ node = &(*node)->next;
-+
-+ return node;
-+}
-+
-+void*
-+simple_hash_table_lookup (SimpleHashTable *hash_table, int key)
-+{
-+ SimpleHashNode *node;
-+
-+ node = *simple_hash_table_lookup_node (hash_table, key);
-+
-+ return node ? node->value : NULL;
-+}
-+
-+void**
-+simple_hash_table_lookup_pointer (SimpleHashTable *hash_table, int key)
-+{
-+ SimpleHashNode *node;
-+
-+ node = *simple_hash_table_lookup_node (hash_table, key);
-+
-+ return node ? &node->value : NULL;
-+}
-+
-+
-+void
-+simple_hash_table_insert (SimpleHashTable *hash_table,
-+ int key,
-+ void* value)
-+{
-+ SimpleHashNode **node;
-+
-+ node = simple_hash_table_lookup_node (hash_table, key);
-+
-+ if (*node)
-+ {
-+ /* do not reset node->key in this place, keeping
-+ * the old key is the intended behaviour.
-+ * simple_hash_table_replace() can be used instead.
-+ */
-+ if (hash_table->value_destroy_func)
-+ hash_table->value_destroy_func ((*node)->value);
-+
-+ (*node)->value = value;
-+ }
-+ else
-+ {
-+ *node = simple_hash_node_new (key, value);
-+ hash_table->nnodes++;
-+ HASH_TABLE_RESIZE (hash_table);
-+ }
-+}
-+int
-+simple_hash_table_remove (SimpleHashTable *hash_table,
-+ int key)
-+{
-+ SimpleHashNode **node, *dest;
-+
-+ node = simple_hash_table_lookup_node (hash_table, key);
-+ if (*node)
-+ {
-+ dest = *node;
-+ (*node) = dest->next;
-+ if (hash_table->value_destroy_func)
-+ hash_table->value_destroy_func (dest->value);
-+ free (dest);
-+ hash_table->nnodes--;
-+
-+ HASH_TABLE_RESIZE (hash_table);
-+
-+ return 1;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+void
-+simple_hash_table_foreach (SimpleHashTable *hash_table,
-+ SimpleHFunc func,
-+ void* user_data)
-+{
-+ SimpleHashNode *node;
-+ int i;
-+
-+ for (i = 0; i < hash_table->size; i++)
-+ for (node = hash_table->nodes[i]; node; node = node->next)
-+ (* func) (node->key, node->value, user_data);
-+}
-+
-+unsigned int
-+simple_hash_table_size (SimpleHashTable *hash_table)
-+{
-+ return hash_table->nnodes;
-+}
-+
-+static void
-+simple_hash_table_resize (SimpleHashTable *hash_table)
-+{
-+ SimpleHashNode **new_nodes;
-+ SimpleHashNode *node;
-+ SimpleHashNode *next;
-+ unsigned int hash_val;
-+ int new_size;
-+ int i;
-+
-+ new_size = simple_spaced_primes_closest (hash_table->nnodes);
-+ new_size = CLAMP (new_size, HASH_TABLE_MIN_SIZE, HASH_TABLE_MAX_SIZE);
-+
-+ new_nodes = alloc0 (SimpleHashNode*, new_size);
-+
-+ for (i = 0; i < hash_table->size; i++)
-+ for (node = hash_table->nodes[i]; node; node = next)
-+ {
-+ next = node->next;
-+
-+ hash_val = (unsigned int)(node->key) % new_size;
-+
-+ node->next = new_nodes[hash_val];
-+ new_nodes[hash_val] = node;
-+ }
-+
-+ free (hash_table->nodes);
-+ hash_table->nodes = new_nodes;
-+ hash_table->size = new_size;
-+}
-+
-+static SimpleHashNode*
-+simple_hash_node_new (int key,
-+ void* value)
-+{
-+ SimpleHashNode *hash_node = alloc0 (SimpleHashNode, 1);
-+
-+ hash_node->key = key;
-+ hash_node->value = value;
-+ hash_node->next = NULL;
-+
-+ return hash_node;
-+}
-+
-+static void
-+simple_hash_nodes_destroy (SimpleHashNode *hash_node,
-+ SimpleDestroyNotify value_destroy_func)
-+{
-+ while (hash_node)
-+ {
-+ SimpleHashNode *next = hash_node->next;
-+ if (value_destroy_func)
-+ value_destroy_func (hash_node->value);
-+ free (hash_node);
-+ hash_node = next;
-+ }
-+}
-Index: qemu-0.12.4/target-i386/ghash.h
-===================================================================
---- /dev/null
-+++ qemu-0.12.4/target-i386/ghash.h
-@@ -0,0 +1,59 @@
-+/* This is a modified and simplified version of original ghash.h */
-+
-+
-+/* GLIB - Library of useful routines for C programming
-+ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
-+ *
-+ * This library is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2 of the License, or (at your option) any later version.
-+ *
-+ * This library 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with this library; if not, write to the
-+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-+ * Boston, MA 02111-1307, USA.
-+ */
-+
-+/*
-+ * Modified by the GLib Team and others 1997-2000. See the AUTHORS
-+ * file for a list of people on the GLib Team. See the ChangeLog
-+ * files for a list of changes. These files are distributed with
-+ * GLib at ftp://ftp.gtk.org/pub/gtk/.
-+ */
-+
-+#ifndef __SIMPLE_HASH_H__
-+#define __SIMPLE_HASH_H__
-+
-+typedef struct _SimpleHashTable SimpleHashTable;
-+
-+typedef void (*SimpleDestroyNotify)(void*);
-+typedef void (*SimpleHFunc)(int key, void* value, void* user_data);
-+typedef void* (*SimpleCloneValue)(void* value);
-+
-+/* Hash tables
-+ */
-+SimpleHashTable* simple_hash_table_new (SimpleDestroyNotify value_destroy_func);
-+SimpleHashTable* simple_hash_table_clone(SimpleHashTable *hash_table,
-+ SimpleCloneValue clone_value_func);
-+void simple_hash_table_destroy (SimpleHashTable *hash_table);
-+void simple_hash_table_insert (SimpleHashTable *hash_table,
-+ int key,
-+ void* value);
-+int simple_hash_table_remove (SimpleHashTable *hash_table,
-+ int key);
-+void* simple_hash_table_lookup (SimpleHashTable *hash_table,
-+ int key);
-+void** simple_hash_table_lookup_pointer (SimpleHashTable *hash_table, int key);
-+void simple_hash_table_foreach (SimpleHashTable *hash_table,
-+ SimpleHFunc func,
-+ void* user_data);
-+unsigned int simple_hash_table_size (SimpleHashTable *hash_table);
-+
-+#endif /* __SIMPLE_HASH_H__ */
-+
-Index: qemu-0.12.4/target-i386/gl_func_perso.h
-===================================================================
---- /dev/null
-+++ qemu-0.12.4/target-i386/gl_func_perso.h
-@@ -0,0 +1,135 @@
-+/*
-+ * Hand-implemented GL/GLX API
-+ *
-+ * Copyright (c) 2006,2007 Even Rouault
-+ *
-+ * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+ * THE SOFTWARE.
-+ */
-+
-+MAGIC_MACRO(_init32),
-+MAGIC_MACRO(_init64),
-+MAGIC_MACRO(_synchronize),
-+MAGIC_MACRO(_serialized_calls),
-+MAGIC_MACRO(_exit_process),
-+MAGIC_MACRO(_moveResizeWindow),
-+MAGIC_MACRO(_changeWindowState),
-+MAGIC_MACRO(_send_cursor),
-+
-+/* When you add a glX call here, you HAVE TO update IS_GLX_CALL */
-+MAGIC_MACRO(glXChooseVisual),
-+MAGIC_MACRO(glXQueryExtensionsString),
-+MAGIC_MACRO(glXQueryServerString),
-+MAGIC_MACRO(glXCreateContext),
-+MAGIC_MACRO(glXCopyContext),
-+MAGIC_MACRO(glXDestroyContext),
-+MAGIC_MACRO(glXGetClientString),
-+MAGIC_MACRO(glXQueryVersion),
-+MAGIC_MACRO(glXMakeCurrent),
-+MAGIC_MACRO(glXGetConfig),
-+MAGIC_MACRO(glXGetConfig_extended),
-+MAGIC_MACRO(glXWaitGL),
-+MAGIC_MACRO(glXWaitX),
-+MAGIC_MACRO(glXGetFBConfigAttrib_extended),
-+MAGIC_MACRO(glXChooseFBConfig),
-+MAGIC_MACRO(glXChooseFBConfigSGIX),
-+MAGIC_MACRO(glXGetFBConfigs),
-+MAGIC_MACRO(glXCreatePbuffer),
-+MAGIC_MACRO(glXCreateGLXPbufferSGIX),
-+MAGIC_MACRO(glXDestroyPbuffer),
-+MAGIC_MACRO(glXDestroyGLXPbufferSGIX),
-+MAGIC_MACRO(glXCreateNewContext),
-+MAGIC_MACRO(glXCreateContextWithConfigSGIX),
-+MAGIC_MACRO(glXGetVisualFromFBConfig),
-+MAGIC_MACRO(glXGetFBConfigAttrib),
-+MAGIC_MACRO(glXGetFBConfigAttribSGIX),
-+MAGIC_MACRO(glXQueryContext),
-+MAGIC_MACRO(glXQueryDrawable),
-+MAGIC_MACRO(glXQueryGLXPbufferSGIX),
-+MAGIC_MACRO(glXUseXFont),
-+MAGIC_MACRO(glXIsDirect),
-+MAGIC_MACRO(glXGetProcAddress_fake),
-+MAGIC_MACRO(glXGetProcAddress_global_fake),
-+MAGIC_MACRO(glXSwapBuffers),
-+MAGIC_MACRO(glXQueryExtension),
-+MAGIC_MACRO(glXGetScreenDriver),
-+MAGIC_MACRO(glXGetDriverConfig),
-+MAGIC_MACRO(glXSwapIntervalSGI),
-+MAGIC_MACRO(glXBindTexImageATI),
-+MAGIC_MACRO(glXReleaseTexImageATI),
-+MAGIC_MACRO(glXBindTexImageARB),
-+MAGIC_MACRO(glXReleaseTexImageARB),
-+
-+MAGIC_MACRO(glGetString),
-+
-+MAGIC_MACRO(glShaderSourceARB_fake),
-+MAGIC_MACRO(glShaderSource_fake),
-+MAGIC_MACRO(glVertexPointer_fake),
-+MAGIC_MACRO(glNormalPointer_fake),
-+MAGIC_MACRO(glColorPointer_fake),
-+MAGIC_MACRO(glSecondaryColorPointer_fake),
-+MAGIC_MACRO(glIndexPointer_fake),
-+MAGIC_MACRO(glTexCoordPointer_fake),
-+MAGIC_MACRO(glEdgeFlagPointer_fake),
-+MAGIC_MACRO(glVertexAttribPointerARB_fake),
-+MAGIC_MACRO(glVertexAttribPointerNV_fake),
-+MAGIC_MACRO(glWeightPointerARB_fake),
-+MAGIC_MACRO(glMatrixIndexPointerARB_fake),
-+MAGIC_MACRO(glFogCoordPointer_fake),
-+MAGIC_MACRO(glVariantPointerEXT_fake),
-+MAGIC_MACRO(glInterleavedArrays_fake),
-+MAGIC_MACRO(glElementPointerATI_fake),
-+MAGIC_MACRO(glTuxRacerDrawElements_fake),
-+MAGIC_MACRO(glVertexAndNormalPointer_fake),
-+MAGIC_MACRO(glTexCoordPointer01_fake),
-+MAGIC_MACRO(glTexCoordPointer012_fake),
-+MAGIC_MACRO(glVertexNormalPointerInterlaced_fake),
-+MAGIC_MACRO(glVertexNormalColorPointerInterlaced_fake),
-+MAGIC_MACRO(glVertexColorTexCoord0PointerInterlaced_fake),
-+MAGIC_MACRO(glVertexNormalTexCoord0PointerInterlaced_fake),
-+MAGIC_MACRO(glVertexNormalTexCoord01PointerInterlaced_fake),
-+MAGIC_MACRO(glVertexNormalTexCoord012PointerInterlaced_fake),
-+MAGIC_MACRO(glVertexNormalColorTexCoord0PointerInterlaced_fake),
-+MAGIC_MACRO(glVertexNormalColorTexCoord01PointerInterlaced_fake),
-+MAGIC_MACRO(glVertexNormalColorTexCoord012PointerInterlaced_fake),
-+MAGIC_MACRO(glGenTextures_fake),
-+MAGIC_MACRO(glGenBuffersARB_fake),
-+MAGIC_MACRO(glGenLists_fake),
-+MAGIC_MACRO(_glDrawElements_buffer),
-+MAGIC_MACRO(_glDrawRangeElements_buffer),
-+MAGIC_MACRO(_glMultiDrawElements_buffer),
-+MAGIC_MACRO(_glVertexPointer_buffer),
-+MAGIC_MACRO(_glNormalPointer_buffer),
-+MAGIC_MACRO(_glColorPointer_buffer),
-+MAGIC_MACRO(_glSecondaryColorPointer_buffer),
-+MAGIC_MACRO(_glIndexPointer_buffer),
-+MAGIC_MACRO(_glTexCoordPointer_buffer),
-+MAGIC_MACRO(_glEdgeFlagPointer_buffer),
-+MAGIC_MACRO(_glVertexAttribPointerARB_buffer),
-+MAGIC_MACRO(_glWeightPointerARB_buffer),
-+MAGIC_MACRO(_glMatrixIndexPointerARB_buffer),
-+MAGIC_MACRO(_glFogCoordPointer_buffer),
-+MAGIC_MACRO(_glVariantPointerEXT_buffer),
-+MAGIC_MACRO(_glGetError_fake),
-+MAGIC_MACRO(_glReadPixels_pbo),
-+MAGIC_MACRO(_glDrawPixels_pbo),
-+MAGIC_MACRO(_glMapBufferARB_fake),
-+MAGIC_MACRO(_glSelectBuffer_fake),
-+MAGIC_MACRO(_glGetSelectBuffer_fake),
-+MAGIC_MACRO(_glFeedbackBuffer_fake),
-+MAGIC_MACRO(_glGetFeedbackBuffer_fake),
-Index: qemu-0.12.4/target-i386/helper.c
-===================================================================
---- qemu-0.12.4.orig/target-i386/helper.c
-+++ qemu-0.12.4/target-i386/helper.c
-@@ -1435,7 +1435,7 @@ target_phys_addr_t cpu_get_phys_page_deb
- }
-
- page_offset = (addr & TARGET_PAGE_MASK) & (page_size - 1);
-- paddr = (pte & TARGET_PAGE_MASK) + page_offset;
-+ paddr = (pte & PHYS_ADDR_MASK) + page_offset;
- return paddr;
- }
-
-Index: qemu-0.12.4/target-i386/helper.h
-===================================================================
---- qemu-0.12.4.orig/target-i386/helper.h
-+++ qemu-0.12.4/target-i386/helper.h
-@@ -217,4 +217,6 @@ DEF_HELPER_2(rclq, tl, tl, tl)
- DEF_HELPER_2(rcrq, tl, tl, tl)
- #endif
-
-+DEF_HELPER_0(opengl, void)
-+
- #include "def-helper.h"
-Index: qemu-0.12.4/target-i386/helper_opengl.c
-===================================================================
---- /dev/null
-+++ qemu-0.12.4/target-i386/helper_opengl.c
-@@ -0,0 +1,1207 @@
-+/*
-+ * Host-side implementation of GL/GLX API
-+ *
-+ * Copyright (c) 2006,2007 Even Rouault
-+ *
-+ * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+ * THE SOFTWARE.
-+ */
-+#define _XOPEN_SOURCE 600
-+#include <string.h>
-+#include <stdlib.h>
-+#include <assert.h>
-+
-+#include <X11/Xlib.h>
-+#include <X11/Xutil.h>
-+
-+#include "exec.h"
-+
-+#if defined(CONFIG_USER_ONLY)
-+void helper_opengl(void)
-+{
-+ /* TODO */
-+}
-+#else
-+
-+#include "opengl_func.h"
-+
-+#define ENABLE_GL_LOG
-+
-+extern FILE *stderr;
-+
-+extern void init_process_tab(void);
-+extern int do_function_call(int func_number, arg_t *args, char *ret_string);
-+
-+extern void sdl_set_opengl_window(int x, int y, int width, int height);
-+
-+static int last_process_id = 0;
-+static int must_save = 0;
-+
-+static int allow_kernel = 0;
-+
-+static inline void *get_phys_mem_addr(const CPUState *env, target_ulong addr)
-+{
-+ int is_user, index;
-+
-+ index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1);
-+ is_user = ((env->hflags & HF_CPL_MASK) == 3);
-+ /* A sanity check for the int0x99 case */
-+ if (unlikely(is_user == 0 && !allow_kernel)) {
-+ fprintf(stderr, "not in userland !!!\n");
-+ return NULL;
-+ }
-+ if (__builtin_expect
-+ (env->tlb_table[is_user][index].addr_code !=
-+ (addr & TARGET_PAGE_MASK), 0)) {
-+ target_ulong ret = cpu_get_phys_page_debug((CPUState *) env, addr);
-+
-+ if (ret == -1) {
-+ fprintf(stderr,
-+ "cpu_get_phys_page_debug(env, " TARGET_FMT_lx ") == "
-+ TARGET_FMT_lx "\n", addr, ret);
-+ fprintf(stderr,
-+ "not in phys mem " TARGET_FMT_lx "(" TARGET_FMT_lx " "
-+ TARGET_FMT_lx ")\n", addr,
-+ env->tlb_table[is_user][index].addr_code,
-+ addr & TARGET_PAGE_MASK);
-+ fprintf(stderr, "cpu_x86_handle_mmu_fault = %d\n",
-+ cpu_x86_handle_mmu_fault((CPUState *) env, addr, 0, 1, 1));
-+ return NULL;
-+ } else {
-+ if (ret + TARGET_PAGE_SIZE <= last_ram_offset) {
-+ return qemu_get_ram_ptr(ret +
-+ (((target_ulong) addr) & (TARGET_PAGE_SIZE - 1)));
-+ } else {
-+ fprintf(stderr,
-+ "cpu_get_phys_page_debug(env, " TARGET_FMT_lx ") == "
-+ TARGET_FMT_lx "\n", addr, ret);
-+ fprintf(stderr,
-+ "ret=" TARGET_FMT_lx " last_ram_offset= " TARGET_FMT_lx
-+ "\n", ret, (target_ulong) last_ram_offset);
-+ return NULL;
-+ }
-+ }
-+ } else
-+ return (void *) (addr + env->tlb_table[is_user][index].addend);
-+}
-+
-+#ifndef MIN
-+#define MIN(a, b) (((a) < (b)) ? (a) : (b))
-+#endif
-+
-+enum {
-+ NOT_MAPPED,
-+ MAPPED_CONTIGUOUS,
-+ MAPPED_NOT_CONTIGUOUS
-+};
-+
-+#define TARGET_ADDR_LOW_ALIGN(x) ((target_ulong)(x) & ~(TARGET_PAGE_SIZE - 1))
-+
-+/* Return NOT_MAPPED if a page is not mapped into target physical memory */
-+/* MAPPED_CONTIGUOUS if all pages are mapped into target physical memory and contiguous */
-+/* MAPPED_NOT_CONTIGUOUS if all pages are mapped into target physical memory but not contiguous */
-+static int get_target_mem_state(const CPUState *env,
-+ target_ulong target_addr, int len)
-+{
-+ target_ulong aligned_target_addr = TARGET_ADDR_LOW_ALIGN(target_addr);
-+ int to_end_page =
-+ (long) aligned_target_addr + TARGET_PAGE_SIZE - (long) target_addr;
-+ int ret = MAPPED_CONTIGUOUS;
-+
-+ if (aligned_target_addr != target_addr) {
-+ void *phys_addr = get_phys_mem_addr(env, aligned_target_addr);
-+ void *last_phys_addr = phys_addr;
-+
-+ if (phys_addr == 0) {
-+ return NOT_MAPPED;
-+ }
-+ if (len > to_end_page) {
-+ len -= to_end_page;
-+ aligned_target_addr += TARGET_PAGE_SIZE;
-+ int i;
-+
-+ for (i = 0; i < len; i += TARGET_PAGE_SIZE) {
-+ void *phys_addr =
-+ get_phys_mem_addr(env, aligned_target_addr + i);
-+ if (phys_addr == 0) {
-+ return NOT_MAPPED;
-+ }
-+ if (phys_addr != last_phys_addr + TARGET_PAGE_SIZE)
-+ ret = MAPPED_NOT_CONTIGUOUS;
-+ last_phys_addr = phys_addr;
-+ }
-+ }
-+ } else {
-+ void *last_phys_addr = NULL;
-+ int i;
-+
-+ for (i = 0; i < len; i += TARGET_PAGE_SIZE) {
-+ void *phys_addr = get_phys_mem_addr(env, target_addr + i);
-+
-+ if (phys_addr == 0) {
-+ return NOT_MAPPED;
-+ }
-+ if (i != 0 && phys_addr != last_phys_addr + TARGET_PAGE_SIZE)
-+ ret = MAPPED_NOT_CONTIGUOUS;
-+ last_phys_addr = phys_addr;
-+ }
-+ }
-+ return ret;
-+}
-+
-+/* copy len bytes from host memory at addr host_addr to target memory at logical addr target_addr */
-+/* Returns 1 if successfull, 0 if some target pages are not mapped into target physical memory */
-+static int memcpy_host_to_target(const CPUState *env,
-+ target_ulong target_addr,
-+ const void *host_addr, int len)
-+{
-+ int i;
-+ target_ulong aligned_target_addr = TARGET_ADDR_LOW_ALIGN(target_addr);
-+ int to_end_page =
-+ (long) aligned_target_addr + TARGET_PAGE_SIZE - (long) target_addr;
-+ int ret = get_target_mem_state(env, target_addr, len);
-+
-+ if (ret == NOT_MAPPED) {
-+ return 0;
-+ }
-+
-+ if (ret == MAPPED_CONTIGUOUS) {
-+ void *phys_addr = get_phys_mem_addr(env, target_addr);
-+
-+ memcpy(phys_addr, host_addr, len);
-+ } else {
-+ if (aligned_target_addr != target_addr) {
-+ void *phys_addr = get_phys_mem_addr(env, target_addr);
-+
-+ memcpy(phys_addr, host_addr, MIN(len, to_end_page));
-+ if (len <= to_end_page) {
-+ return 1;
-+ }
-+ len -= to_end_page;
-+ host_addr += to_end_page;
-+ target_addr = aligned_target_addr + TARGET_PAGE_SIZE;
-+ }
-+ for (i = 0; i < len; i += TARGET_PAGE_SIZE) {
-+ void *phys_addr = get_phys_mem_addr(env, target_addr + i);
-+
-+ memcpy(phys_addr, host_addr + i,
-+ (i + TARGET_PAGE_SIZE <=
-+ len) ? TARGET_PAGE_SIZE : len & (TARGET_PAGE_SIZE - 1));
-+ }
-+ }
-+
-+ return 1;
-+}
-+
-+static int memcpy_target_to_host(const CPUState *env, void *host_addr,
-+ target_ulong target_addr, int len)
-+{
-+ int i;
-+ target_ulong aligned_target_addr = TARGET_ADDR_LOW_ALIGN(target_addr);
-+ int to_end_page =
-+ (long) aligned_target_addr + TARGET_PAGE_SIZE - (long) target_addr;
-+ int ret = get_target_mem_state(env, target_addr, len);
-+
-+ if (ret == NOT_MAPPED) {
-+ return 0;
-+ }
-+
-+ if (ret == MAPPED_CONTIGUOUS) {
-+ void *phys_addr = get_phys_mem_addr(env, target_addr);
-+
-+ memcpy(host_addr, phys_addr, len);
-+ } else {
-+ if (aligned_target_addr != target_addr) {
-+ void *phys_addr = get_phys_mem_addr(env, target_addr);
-+
-+ memcpy(host_addr, phys_addr, MIN(len, to_end_page));
-+ if (len <= to_end_page)
-+ return 1;
-+
-+ len -= to_end_page;
-+ host_addr += to_end_page;
-+ target_addr = aligned_target_addr + TARGET_PAGE_SIZE;
-+ }
-+ for (i = 0; i < len; i += TARGET_PAGE_SIZE) {
-+ void *phys_addr = get_phys_mem_addr(env, target_addr + i);
-+
-+ memcpy(host_addr + i, phys_addr,
-+ (i + TARGET_PAGE_SIZE <=
-+ len) ? TARGET_PAGE_SIZE : len & (TARGET_PAGE_SIZE - 1));
-+ }
-+ }
-+
-+ return 1;
-+}
-+
-+static int memcpy_target_to_host_1_1(const CPUState *env, void *host_addr,
-+ target_ulong target_addr, int nb_args)
-+{
-+ return memcpy_target_to_host(env, host_addr, target_addr, nb_args * 8);
-+}
-+
-+static int wordsize = 0;
-+static int (*argcpy_target_to_host) (const CPUState *env, void *host_addr,
-+ target_ulong target_addr, int nb_args) =
-+ memcpy_target_to_host_1_1;
-+
-+void do_disconnect_current(void);
-+void do_context_switch(Display *dpy, pid_t pid, int call);
-+
-+static void disconnect_current(void)
-+{
-+ last_process_id = 0;
-+
-+ return do_disconnect_current();
-+}
-+
-+static int memcpy_target32_to_host(const CPUState *env, void *host_addr,
-+ target_ulong target_addr, int nb_args)
-+{
-+ int ret;
-+ uint32_t args_temp[nb_args], *src = args_temp;
-+ arg_t *dest = host_addr;
-+
-+ ret = memcpy_target_to_host(env, args_temp, target_addr, nb_args * 4);
-+ if (!ret)
-+ return ret;
-+
-+ while (nb_args) {
-+ /* TODO: endianness */
-+ *dest = 0;
-+ *(uint32_t *) (dest++) = *src++;
-+ nb_args--;
-+ }
-+
-+ return ret;
-+}
-+
-+static int memcpy_target64_to_host(const CPUState *env, void *host_addr,
-+ target_ulong target_addr, int nb_args)
-+{
-+ int ret;
-+ uint64_t args_temp[nb_args], *src = args_temp;
-+ arg_t *dest = host_addr;
-+
-+ ret = memcpy_target_to_host(env, args_temp, target_addr, nb_args * 8);
-+ if (!ret)
-+ return ret;
-+
-+ while (nb_args) {
-+ /* TODO: endianness */
-+ *dest = 0;
-+ *(uint64_t *) (dest++) = *src++;
-+ nb_args--;
-+ }
-+
-+ return ret;
-+}
-+
-+static int host_offset = 0;
-+static void reset_host_offset()
-+{
-+ host_offset = 0;
-+}
-+
-+/* Return a host pointer with the content of [target_addr, target_addr + len bytes[ */
-+/* Do not free or modify */
-+static const void *get_host_read_pointer(const CPUState *env,
-+ const target_ulong target_addr, int len)
-+{
-+ int ret = get_target_mem_state(env, target_addr, len);
-+
-+ if (ret == NOT_MAPPED) {
-+ return NULL;
-+ } else if (ret == MAPPED_CONTIGUOUS) {
-+ return get_phys_mem_addr(env, target_addr);
-+ } else {
-+ static int host_mem_size = 0;
-+ static void *host_mem = NULL;
-+ static void *ret;
-+
-+ if (host_mem_size < host_offset + len) {
-+ host_mem_size = 2 * host_mem_size + host_offset + len;
-+ host_mem = realloc(host_mem, host_mem_size);
-+ }
-+ ret = host_mem + host_offset;
-+ assert(memcpy_target_to_host(env, ret, target_addr, len));
-+ host_offset += len;
-+ return ret;
-+ }
-+}
-+
-+int doing_opengl = 0;
-+static int last_func_number = -1;
-+static size_t(*my_strlen) (const char *) = NULL;
-+
-+#ifdef ENABLE_GL_LOG
-+static FILE *f = NULL;
-+static int logger_pid = 0;
-+
-+#define write_gl_debug_init() do { if (f == NULL) f = fopen("/tmp/debug_gl.bin", "wb"); } while(0)
-+
-+void write_gl_debug_cmd_int(int my_int)
-+{
-+ write_gl_debug_init();
-+ fwrite(&my_int, sizeof(int), 1, f);
-+ fflush(f);
-+}
-+
-+void write_gl_debug_cmd_short(short my_int)
-+{
-+ write_gl_debug_init();
-+ fwrite(&my_int, sizeof(short), 1, f);
-+ fflush(f);
-+}
-+
-+static void inline write_gl_debug_cmd_buffer_with_size(int size, void *buffer)
-+{
-+ write_gl_debug_init();
-+ fwrite(&size, sizeof(int), 1, f);
-+ if (size)
-+ fwrite(buffer, size, 1, f);
-+}
-+
-+static void inline write_gl_debug_cmd_buffer_without_size(
-+ int size, void *buffer)
-+{
-+ write_gl_debug_init();
-+ if (size)
-+ fwrite(buffer, size, 1, f);
-+}
-+
-+void write_gl_debug_end(void)
-+{
-+ write_gl_debug_init();
-+ fclose(f);
-+ f = NULL;
-+ logger_pid = 0;
-+ must_save = 0;
-+}
-+
-+static inline int is_logging(int pid)
-+{
-+ return must_save && pid == logger_pid;
-+}
-+#endif
-+
-+#include <dlfcn.h>
-+#include <signal.h>
-+
-+static void (*anticrash_handler) (void *) = NULL;
-+static void (*show_stack_from_signal_handler) (int, int, int) = NULL;
-+
-+void my_anticrash_sigsegv_handler(int signum, siginfo_t *info, void *ptr)
-+{
-+ static int counter = 0;
-+
-+ counter++;
-+
-+ printf("oops\n");
-+
-+ /* if (show_stack_from_signal_handler && counter == 1) { struct ucontext*
-+ * ctxt = (struct ucontext*)ptr; show_stack_from_signal_handler(10,
-+ * ctxt->uc_mcontext.gregs[REG_EBP], ctxt->uc_mcontext.gregs[REG_ESP]); } */
-+ anticrash_handler(ptr);
-+
-+ counter--;
-+}
-+
-+static int decode_call_int(CPUState *env, int func_number, int pid,
-+ target_ulong target_ret_string,
-+ target_ulong in_args, target_ulong in_args_size)
-+{
-+ Signature *signature = (Signature *) tab_opengl_calls[func_number];
-+ int ret_type = signature->ret_type;
-+ /* int has_out_parameters = signature->has_out_parameters; */
-+ int nb_args = signature->nb_args;
-+ int *args_type = signature->args_type;
-+ int i;
-+ int ret;
-+ int *args_size = NULL;
-+ target_ulong saved_out_ptr[50];
-+ static char *ret_string = NULL;
-+ static arg_t args[50];
-+ static Display *dpy = NULL;
-+
-+ if (dpy == NULL) {
-+ void *handle = dlopen("libanticrash.so", RTLD_LAZY);
-+
-+ if (handle) {
-+ anticrash_handler = dlsym(handle, "anticrash_handler");
-+ if (anticrash_handler) {
-+ fprintf(stderr, "anticrash handler enabled\n");
-+ struct sigaction sigsegv_action;
-+ struct sigaction old_sigsegv_action;
-+
-+ sigsegv_action.sa_sigaction = my_anticrash_sigsegv_handler;
-+ sigemptyset(&(sigsegv_action.sa_mask));
-+ sigsegv_action.sa_flags = SA_SIGINFO | SA_NODEFER;
-+ sigaction(SIGSEGV, &sigsegv_action, &old_sigsegv_action);
-+ }
-+ }
-+ handle = dlopen("libgetstack.so", RTLD_LAZY);
-+ if (handle) {
-+ show_stack_from_signal_handler =
-+ dlsym(handle, "show_stack_from_signal_handler");
-+ }
-+
-+ dpy = XOpenDisplay(NULL);
-+ init_process_tab();
-+ ret_string = malloc(32768);
-+ my_strlen = strlen;
-+ }
-+
-+ if (unlikely(last_func_number == _exit_process_func &&
-+ func_number == _exit_process_func)) {
-+ last_func_number = -1;
-+ return 0;
-+ }
-+
-+ if (last_process_id != pid) {
-+ do_context_switch(dpy, pid, func_number);
-+ last_process_id = pid;
-+ }
-+
-+ if (unlikely(func_number == _exit_process_func))
-+ last_process_id = 0;
-+
-+ if (!wordsize) {
-+ if (func_number == _init32_func || func_number == _init64_func) {
-+ if (func_number == _init32_func) {
-+ wordsize = 32;
-+ argcpy_target_to_host = memcpy_target32_to_host;
-+ } else {
-+ wordsize = 64;
-+ argcpy_target_to_host = memcpy_target64_to_host;
-+ }
-+ } else
-+ fprintf(stderr, "commands submitted before initialisation done\n");
-+ }
-+
-+ reset_host_offset();
-+
-+ if (nb_args) {
-+
-+ if (argcpy_target_to_host(env, args, in_args, nb_args) == 0) {
-+ fprintf(stderr, "call %s pid=%d\n",
-+ tab_opengl_calls_name[func_number], pid);
-+ fprintf(stderr, "cannot get call parameters\n");
-+ disconnect_current();
-+ return 0;
-+ }
-+
-+ args_size =
-+ (int *) get_host_read_pointer(env, in_args_size,
-+ sizeof(int) * nb_args);
-+ if (args_size == NULL) {
-+ fprintf(stderr, "call %s pid=%d\n",
-+ tab_opengl_calls_name[func_number], pid);
-+ fprintf(stderr, "cannot get call parameters size\n");
-+ disconnect_current();
-+ return 0;
-+ }
-+ }
-+
-+ if (func_number == _serialized_calls_func) {
-+ int command_buffer_size = args_size[0];
-+ const void *command_buffer =
-+ get_host_read_pointer(env, args[0], command_buffer_size);
-+ int commmand_buffer_offset = 0;
-+
-+ args_size = NULL;
-+#ifdef ENABLE_GL_LOG
-+ if (is_logging(pid))
-+ write_gl_debug_cmd_short(_serialized_calls_func);
-+#endif
-+
-+ while (commmand_buffer_offset < command_buffer_size) {
-+ func_number =
-+ *(short *) (command_buffer + commmand_buffer_offset);
-+ if (!(func_number >= 0 && func_number < GL_N_CALLS)) {
-+ fprintf(stderr,
-+ "func_number >= 0 && func_number < GL_N_CALLS failed at "
-+ "commmand_buffer_offset=%d (command_buffer_size=%d)\n",
-+ commmand_buffer_offset, command_buffer_size);
-+ return 0;
-+ }
-+ commmand_buffer_offset += sizeof(short);
-+#ifdef ENABLE_GL_LOG
-+ if (is_logging(pid))
-+ write_gl_debug_cmd_short(func_number);
-+#endif
-+
-+ signature = (Signature *) tab_opengl_calls[func_number];
-+ ret_type = signature->ret_type;
-+ assert(ret_type == TYPE_NONE);
-+ nb_args = signature->nb_args;
-+ args_type = signature->args_type;
-+
-+ for (i = 0; i < nb_args; i++) {
-+ switch (args_type[i]) {
-+ case TYPE_UNSIGNED_INT:
-+ case TYPE_INT:
-+ case TYPE_UNSIGNED_CHAR:
-+ case TYPE_CHAR:
-+ case TYPE_UNSIGNED_SHORT:
-+ case TYPE_SHORT:
-+ case TYPE_FLOAT:
-+ {
-+ args[i] =
-+ *(int *) (command_buffer +
-+ commmand_buffer_offset);
-+#ifdef ENABLE_GL_LOG
-+ if (is_logging(pid))
-+ write_gl_debug_cmd_int(args[i]);
-+#endif
-+ commmand_buffer_offset += sizeof(int);
-+ break;
-+ }
-+
-+ case TYPE_NULL_TERMINATED_STRING:
-+ CASE_IN_UNKNOWN_SIZE_POINTERS:
-+ {
-+ int arg_size =
-+ *(int *) (command_buffer +
-+ commmand_buffer_offset);
-+ commmand_buffer_offset += sizeof(int);
-+
-+ if (arg_size == 0) {
-+ args[i] = 0;
-+ } else {
-+ args[i] =
-+ (long) (command_buffer +
-+ commmand_buffer_offset);
-+ }
-+
-+ if (args[i] == 0) {
-+ if (!IS_NULL_POINTER_OK_FOR_FUNC(func_number)) {
-+ fprintf(stderr, "call %s arg %d pid=%d\n",
-+ tab_opengl_calls_name[func_number], i,
-+ pid);
-+ disconnect_current();
-+ return 0;
-+ }
-+ } else {
-+ if (arg_size == 0) {
-+ fprintf(stderr, "call %s arg %d pid=%d\n",
-+ tab_opengl_calls_name[func_number], i,
-+ pid);
-+ fprintf(stderr, "args_size[i] == 0 !!\n");
-+ disconnect_current();
-+ return 0;
-+ }
-+ }
-+#ifdef ENABLE_GL_LOG
-+ if (is_logging(pid))
-+ write_gl_debug_cmd_buffer_with_size(arg_size,
-+ (void *)
-+ args[i]);
-+#endif
-+ commmand_buffer_offset += arg_size;
-+
-+ break;
-+ }
-+
-+ CASE_IN_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
-+ {
-+ int arg_size =
-+ compute_arg_length(stderr, func_number, i, args);
-+ args[i] =
-+ (arg_size) ? (long) (command_buffer +
-+ commmand_buffer_offset) : 0;
-+#ifdef ENABLE_GL_LOG
-+ if (is_logging(pid))
-+ write_gl_debug_cmd_buffer_without_size(arg_size,
-+ (void *)
-+ args[i]);
-+#endif
-+ commmand_buffer_offset += arg_size;
-+ break;
-+ }
-+
-+ CASE_OUT_POINTERS:
-+ {
-+ fprintf(stderr,
-+ "shouldn't happen TYPE_OUT_xxxx : call %s arg %d pid=%d\n",
-+ tab_opengl_calls_name[func_number], i, pid);
-+ disconnect_current();
-+ return 0;
-+ }
-+
-+ case TYPE_DOUBLE:
-+ CASE_IN_KNOWN_SIZE_POINTERS:
-+ args[i] =
-+ (long) (command_buffer + commmand_buffer_offset);
-+#ifdef ENABLE_GL_LOG
-+ if (is_logging(pid))
-+ write_gl_debug_cmd_buffer_without_size(
-+ tab_args_type_length[args_type[i]],
-+ (void *) args[i]);
-+#endif
-+ commmand_buffer_offset +=
-+ tab_args_type_length[args_type[i]];
-+ break;
-+
-+ case TYPE_IN_IGNORED_POINTER:
-+ args[i] = 0;
-+ break;
-+
-+ default:
-+ fprintf(stderr,
-+ "shouldn't happen : call %s arg %d pid=%d\n",
-+ tab_opengl_calls_name[func_number], i, pid);
-+ disconnect_current();
-+ return 0;
-+ }
-+ }
-+ do_function_call(func_number, args, ret_string);
-+ }
-+
-+ ret = 0;
-+ } else {
-+#ifdef ENABLE_GL_LOG
-+ if (is_logging(pid))
-+ write_gl_debug_cmd_short(func_number);
-+#endif
-+
-+ for (i = 0; i < nb_args; i++) {
-+ switch (args_type[i]) {
-+ case TYPE_UNSIGNED_INT:
-+ case TYPE_INT:
-+ case TYPE_UNSIGNED_CHAR:
-+ case TYPE_CHAR:
-+ case TYPE_UNSIGNED_SHORT:
-+ case TYPE_SHORT:
-+ case TYPE_FLOAT:
-+#ifdef ENABLE_GL_LOG
-+ if (is_logging(pid))
-+ write_gl_debug_cmd_int(args[i]);
-+#endif
-+ break;
-+
-+ case TYPE_NULL_TERMINATED_STRING:
-+ CASE_IN_UNKNOWN_SIZE_POINTERS:
-+ if (args[i] == 0 && args_size[i] == 0) {
-+ if (!IS_NULL_POINTER_OK_FOR_FUNC(func_number)) {
-+ fprintf(stderr, "call %s arg %d pid=%d\n",
-+ tab_opengl_calls_name[func_number], i, pid);
-+ disconnect_current();
-+ return 0;
-+ }
-+ } else if (args[i] == 0 && args_size[i] != 0) {
-+ fprintf(stderr, "call %s arg %d pid=%d\n",
-+ tab_opengl_calls_name[func_number], i, pid);
-+ fprintf(stderr, "args[i] == 0 && args_size[i] != 0 !!\n");
-+ disconnect_current();
-+ return 0;
-+ } else if (args[i] != 0 && args_size[i] == 0) {
-+ fprintf(stderr, "call %s arg %d pid=%d\n",
-+ tab_opengl_calls_name[func_number], i, pid);
-+ fprintf(stderr, "args[i] != 0 && args_size[i] == 0 !!\n");
-+ disconnect_current();
-+ return 0;
-+ }
-+ if (args[i]) {
-+ args[i] =
-+ (arg_t) get_host_read_pointer(env, args[i],
-+ args_size[i]);
-+ if (args[i] == 0) {
-+ fprintf(stderr, "call %s arg %d pid=%d\n",
-+ tab_opengl_calls_name[func_number], i, pid);
-+ fprintf(stderr, "can not get %d bytes\n",
-+ args_size[i]);
-+ disconnect_current();
-+ return 0;
-+ }
-+ }
-+#ifdef ENABLE_GL_LOG
-+ if (is_logging(pid))
-+ write_gl_debug_cmd_buffer_with_size(args_size[i],
-+ (void *) args[i]);
-+#endif
-+ break;
-+
-+ CASE_IN_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
-+ {
-+ args_size[i] =
-+ compute_arg_length(stderr, func_number, i, args);
-+ args[i] = (args_size[i]) ? (arg_t)
-+ get_host_read_pointer(env,
-+ args[i], args_size [i]) : 0;
-+ if (args[i] == 0 && args_size[i] != 0) {
-+ fprintf(stderr, "call %s arg %d pid=%d\n",
-+ tab_opengl_calls_name[func_number], i, pid);
-+ fprintf(stderr, "can not get %d bytes\n",
-+ args_size[i]);
-+ disconnect_current();
-+ return 0;
-+ }
-+#ifdef ENABLE_GL_LOG
-+ if (is_logging(pid))
-+ write_gl_debug_cmd_buffer_without_size(args_size[i],
-+ (void *) args[i]);
-+#endif
-+ break;
-+ }
-+
-+ CASE_OUT_POINTERS:
-+ {
-+ int mem_state;
-+
-+#ifdef ENABLE_GL_LOG
-+ if (is_logging(pid))
-+ switch (args_type[i]) {
-+ CASE_OUT_UNKNOWN_SIZE_POINTERS:
-+ write_gl_debug_cmd_int(args_size[i]);
-+ break;
-+
-+ default:
-+ break;
-+ }
-+#endif
-+
-+ if (func_number == glXQueryExtension_func && args[i] == 0) {
-+ saved_out_ptr[i] = 0;
-+ continue;
-+ }
-+ if (args[i] == 0 && args_size[i] == 0) {
-+ if (!IS_NULL_POINTER_OK_FOR_FUNC(func_number)) {
-+ fprintf(stderr, "call %s arg %d pid=%d\n",
-+ tab_opengl_calls_name[func_number], i,
-+ pid);
-+ disconnect_current();
-+ return 0;
-+ }
-+ fprintf(stderr, "call %s arg %d pid=%d\n",
-+ tab_opengl_calls_name[func_number], i, pid);
-+ disconnect_current();
-+ return 0;
-+ } else if (args[i] == 0 && args_size[i] != 0) {
-+ fprintf(stderr, "call %s arg %d pid=%d\n",
-+ tab_opengl_calls_name[func_number], i, pid);
-+ fprintf(stderr,
-+ "args[i] == 0 && args_size[i] != 0 !!\n");
-+ disconnect_current();
-+ return 0;
-+ } else if (args[i] != 0 && args_size[i] == 0) {
-+ fprintf(stderr, "call %s arg %d pid=%d\n",
-+ tab_opengl_calls_name[func_number], i, pid);
-+ fprintf(stderr,
-+ "args[i] != 0 && args_size[i] == 0 !!\n");
-+ disconnect_current();
-+ return 0;
-+ }
-+ if (args[i]) {
-+ mem_state =
-+ get_target_mem_state(env, args[i], args_size[i]);
-+ if (mem_state == NOT_MAPPED) {
-+ fprintf(stderr,
-+ "call %s arg %d pid=%d addr="
-+ TARGET_FMT_lx " size=%d NOT_MAPPED\n",
-+ tab_opengl_calls_name[func_number], i,
-+ pid, args[i], args_size[i]);
-+ disconnect_current();
-+ return 0;
-+ } else if (mem_state == MAPPED_CONTIGUOUS) {
-+ saved_out_ptr[i] = 0;
-+ args[i] = (arg_t) get_phys_mem_addr(env, args[i]);
-+ } else {
-+ saved_out_ptr[i] = args[i];
-+ args[i] = (arg_t) malloc(args_size[i]);
-+ }
-+ } else {
-+ saved_out_ptr[i] = 0;
-+ }
-+ break;
-+ }
-+
-+ case TYPE_DOUBLE:
-+ CASE_IN_KNOWN_SIZE_POINTERS:
-+ if (args[i] == 0) {
-+ fprintf(stderr, "call %s arg %d pid=%d\n",
-+ tab_opengl_calls_name[func_number], i, pid);
-+ fprintf(stderr, "can not get %d bytes\n",
-+ tab_args_type_length[args_type[i]]);
-+ disconnect_current();
-+ return 0;
-+ }
-+ args[i] = (arg_t) get_host_read_pointer(env,
-+ args[i], tab_args_type_length[args_type[i]]);
-+ if (args[i] == 0) {
-+ fprintf(stderr, "call %s arg %d pid=%d\n",
-+ tab_opengl_calls_name[func_number], i, pid);
-+ fprintf(stderr, "can not get %d bytes\n",
-+ tab_args_type_length[args_type[i]]);
-+ disconnect_current();
-+ return 0;
-+ }
-+#ifdef ENABLE_GL_LOG
-+ if (is_logging(pid))
-+ write_gl_debug_cmd_buffer_without_size
-+ (tab_args_type_length[args_type[i]],
-+ (void *) args[i]);
-+#endif
-+ break;
-+
-+ case TYPE_IN_IGNORED_POINTER:
-+ args[i] = 0;
-+ break;
-+
-+ default:
-+ fprintf(stderr, "shouldn't happen : call %s arg %d pid=%d\n",
-+ tab_opengl_calls_name[func_number], i, pid);
-+ disconnect_current();
-+ return 0;
-+ }
-+ }
-+
-+ if (ret_type == TYPE_CONST_CHAR) {
-+ ret_string[0] = 0;
-+ }
-+
-+ if (func_number == _init32_func || func_number == _init64_func) {
-+ if (func_number == _init32_func) {
-+ if (wordsize != 32) {
-+ fprintf(stderr,
-+ "clients with different ABIs not supported\n");
-+ exit(-1);
-+ }
-+ } else {
-+ if (wordsize != 64) {
-+ fprintf(stderr,
-+ "clients with different ABIs not supported\n");
-+ exit(-1);
-+ }
-+ }
-+
-+ if (must_save && args[0])
-+ fprintf(stderr, "error: pid %i is already recording\n",
-+ logger_pid);
-+ else if (args[0]) {
-+ logger_pid = pid;
-+ must_save = 1;
-+ }
-+#ifdef USE_KQEMU
-+ if (env->kqemu_enabled)
-+ *(int *) args[1] = 2;
-+ else
-+#endif
-+ *(int *) args[1] = 1;
-+ ret = 0;
-+ } else {
-+ ret = do_function_call(func_number, args, ret_string);
-+ }
-+#ifdef ENABLE_GL_LOG
-+ if (is_logging(pid) && func_number == glXGetVisualFromFBConfig_func)
-+ write_gl_debug_cmd_int(ret);
-+#endif
-+ for (i = 0; i < nb_args; i++) {
-+ switch (args_type[i]) {
-+ CASE_OUT_POINTERS:
-+ {
-+ if (saved_out_ptr[i]) {
-+ if (memcpy_host_to_target(env, saved_out_ptr[i],
-+ (void *) args[i],
-+ args_size[i]) == 0) {
-+ fprintf(stderr, "could not copy out parameters "
-+ "back to user space\n");
-+ disconnect_current();
-+ return 0;
-+ }
-+ free((void *) args[i]);
-+ }
-+ break;
-+ }
-+
-+ default:
-+ break;
-+ }
-+ }
-+
-+ if (ret_type == TYPE_CONST_CHAR)
-+ if (target_ret_string) {
-+ /* the my_strlen stuff is a hack to workaround a GCC bug if
-+ * using directly strlen... */
-+ if (memcpy_host_to_target(env, target_ret_string, ret_string,
-+ my_strlen(ret_string) + 1) == 0) {
-+ fprintf(stderr, "cannot copy out parameters "
-+ "back to user space\n");
-+ disconnect_current();
-+ return 0;
-+ }
-+ }
-+ }
-+
-+#ifdef ENABLE_GL_LOG
-+ if (is_logging(pid) && func_number == _exit_process_func) {
-+ write_gl_debug_end();
-+ }
-+#endif
-+
-+ return ret;
-+}
-+
-+static int decode_call(CPUState *env, int func_number, int pid,
-+ target_ulong target_ret_string, target_ulong in_args,
-+ target_ulong in_args_size)
-+{
-+ if (!(func_number >= 0 && func_number < GL_N_CALLS)) {
-+ fprintf(stderr,
-+ "func_number >= 0 && func_number < GL_N_CALLS failed\n");
-+ return 0;
-+ }
-+
-+ return decode_call_int(env, func_number, pid,
-+ target_ret_string, in_args, in_args_size);
-+}
-+
-+#define env first_cpu
-+
-+void helper_opengl(void)
-+{
-+ doing_opengl = 1;
-+ env->regs[R_EAX] =
-+ decode_call(env, env->regs[R_EAX], env->regs[R_EBX], env->regs[R_ECX],
-+ env->regs[R_EDX], env->regs[R_ESI]);
-+ doing_opengl = 0;
-+}
-+
-+void mem_opengl(uint64_t ptr)
-+{
-+ uint64_t *params = get_phys_mem_addr(env, ptr);
-+ int ret;
-+
-+ /* Execute */
-+ doing_opengl = 1;
-+ ret = decode_call(env, le64_to_cpu(params[0]),
-+ le64_to_cpu(params[1]), le64_to_cpu(params[2]),
-+ le64_to_cpu(params[3]), le64_to_cpu(params[4]));
-+ doing_opengl = 0;
-+
-+ params[0] = cpu_to_le64(ret);
-+ params[5] = 0;
-+}
-+
-+#define THREADINFO_TASK_OFFSET 0x0 //// 0x0
-+#define THREADSTRUCT_IOPL_OFFSET 0x78 //// 0x80
-+#define TASKSTRUCT_NEXT_OFFSET 0x1a0 //// 0x1e8
-+#define TASKSTRUCT_PREV_OFFSET 0x1a4 //// 0x1ec
-+#define TASKSTRUCT_RCRED_OFFSET 0x29c //// 0x2b4
-+#define TASKSTRUCT_CRED_OFFSET 0x2a0 //// 0x2b8
-+#define TASKSTRUCT_COMM_OFFSET 0x2c0 //// 0x2fc
-+#define TASKSTRUCT_THREAD_OFFSET 0x2e4 //// 0x318
-+#define TASKSTRUCT_IO_CTX_OFFSET 0x40c //// 0x428
-+#define CRED_CAPINH_OFFSET 0x28
-+#define CRED_CAPPER_OFFSET 0x30
-+#define CRED_CAPEFF_OFFSET 0x38
-+#define CRED_CAPBST_OFFSET 0x40
-+/* How to obtain the numbers:
-+ * $ gbd vmlinux
-+ * ...
-+ * (gdb) print &((struct task_struct *) 0)->real_cred
-+ * $22 = (const struct cred **) 0x29c
-+ * (gdb) print &((struct task_struct *) 0)->cred
-+ * $23 = (const struct cred **) 0x2a0
-+ * (gbd) ...
-+ * ...
-+ * (gdb) ^D
-+ * $ vim target-i386/helper_opengl.c
-+ * ...
-+ * :wq
-+ * $ make
-+ * ...
-+ *
-+ * Testing:
-+ * $ x86_64-softmmu/qemu-system-x86_64 -s -hda ...
-+ * ^Z
-+ * [1]+ Stopped x86_64-softmmu/qemu-system-x86_64 -s -hda ...
-+ * $ bg
-+ * [1]+ x86_64-softmmu/qemu-system-x86_64 -s -hda ...
-+ * $ gdb
-+ * ...
-+ * (gdb) target remote localhost:1234
-+ * ...
-+ * (gdb) print ((char *) *(unsigned int *) ((unsigned int) $rsp & ~8191)) +
-+ * 0x2c0
-+ * $9 = 0xc094062c "swapper"
-+ * (gdb) print (char *) (*(unsigned int *) (((char *) *(unsigned int *)
-+ * ((unsigned int) $rsp & ~8191)) + 0x1a0) - 0x1a0) + 0x2c0
-+ * $10 = 0xdf87cee0 "init"
-+ * ...
-+ */
-+
-+#define CAP_SYS_RAWIO 17
-+
-+#define THREAD_SIZE (TARGET_PAGE_SIZE << 1)
-+static ram_addr_t x86_current_thread(void)
-+{
-+ return env->regs[R_ESP] & ~(THREAD_SIZE - 1);
-+}
-+
-+static ram_addr_t x86_current_task(void)
-+{
-+ return *(uint32_t *) get_phys_mem_addr(env,
-+ x86_current_thread() + THREADINFO_TASK_OFFSET);
-+}
-+
-+static ram_addr_t x86_current_io_ctx(void)
-+{
-+ return *(uint32_t *) get_phys_mem_addr(env,
-+ x86_current_task() + TASKSTRUCT_IO_CTX_OFFSET);
-+}
-+
-+static ram_addr_t x86_task_name(ram_addr_t proc)
-+{
-+ return x86_current_task() + TASKSTRUCT_COMM_OFFSET;
-+}
-+
-+static ram_addr_t x86_task_next(ram_addr_t proc)
-+{
-+ return *(uint32_t *) get_phys_mem_addr(env,
-+ x86_current_task() + TASKSTRUCT_NEXT_OFFSET) -
-+ TASKSTRUCT_NEXT_OFFSET;
-+}
-+
-+static void x86_cap_set(ram_addr_t caps, int cap)
-+{
-+ int offset = cap >> 5;
-+ int mask = 1 << (cap & 31);
-+
-+ *(uint32_t *) get_phys_mem_addr(env, caps + offset) |= mask;
-+}
-+
-+static void x86_cred_cap_set(ram_addr_t creds, int cap)
-+{
-+ x86_cap_set(creds + CRED_CAPINH_OFFSET, cap);
-+ x86_cap_set(creds + CRED_CAPPER_OFFSET, cap);
-+ x86_cap_set(creds + CRED_CAPEFF_OFFSET, cap);
-+ x86_cap_set(creds + CRED_CAPBST_OFFSET, cap);
-+}
-+
-+static void x86_task_cap_set(ram_addr_t proc, int cap)
-+{
-+ x86_cred_cap_set(*(uint32_t *) get_phys_mem_addr(env,
-+ proc + TASKSTRUCT_RCRED_OFFSET), cap);
-+ x86_cred_cap_set(*(uint32_t *) get_phys_mem_addr(env,
-+ proc + TASKSTRUCT_CRED_OFFSET), cap);
-+}
-+
-+#include "kvm.h"
-+
-+/* The putting and getting of the register set seems to incure a too
-+ * high overhead. It's at least 4 ioctl's each. */
-+#if 0
-+static void opengl_ioport_write(void *data, uint32_t addr, uint32_t val)
-+{
-+ /* Ignore the first outb after iopl which is emulated by the kernel. */
-+ if (val == (uint8_t) -1)
-+ return;
-+
-+ if (kvm_enabled())
-+ kvm_arch_get_registers(env);
-+ doing_opengl = 1;
-+ env->regs[R_EAX] =
-+ decode_call(env, env->regs[R_EAX], env->regs[R_EBX], env->regs[R_ECX],
-+ env->regs[R_ESI], env->regs[R_EDI]);
-+ doing_opengl = 0;
-+ if (kvm_enabled())
-+ kvm_arch_put_registers(env);
-+}
-+#else
-+static void get_regs(void)
-+{
-+ /* We only really need the eflags and cr[0..4] */
-+ if (kvm_enabled())
-+ kvm_get_sregs(env);
-+}
-+
-+static void opengl_ioport_write(void *data, uint32_t addr, uint32_t val)
-+{
-+ uint64_t *params;
-+ int ret;
-+
-+ /* Only need to fetch the registers after a guest's context switch...
-+ * the problem is, to find out about context switches we already need
-+ * to fetch rsp
-+ * TODO: pass the pid in val. the params pointer doesn't need to be
-+ * passed on all calls because it can be a global and be constant.
-+ */
-+ get_regs();
-+
-+ params = get_phys_mem_addr(env, (target_ulong) val);
-+
-+ /* Execute */
-+ doing_opengl = 1;
-+ ret = decode_call(env, le64_to_cpu(params[0]),
-+ le64_to_cpu(params[1]), le64_to_cpu(params[2]),
-+ le64_to_cpu(params[3]), le64_to_cpu(params[4]));
-+ doing_opengl = 0;
-+
-+ params[0] = cpu_to_le64(ret);
-+ params[5] = 0;
-+}
-+#endif
-+
-+static void opengl_ioport_write_first(void *data, uint32_t addr, uint32_t val)
-+{
-+ if (val != (uint32_t) -1)
-+ return;
-+
-+ /* Ignore the first outb after iopl which is emulated by the kernel. */
-+
-+ register_ioport_write(9996, 4, 4, opengl_ioport_write, (void *) 1);
-+}
-+
-+void io_register(void)
-+{
-+ register_ioport_write(9996, 4, 4, opengl_ioport_write_first, (void *) 1);
-+}
-+
-+void opengl_process_enable(void)
-+{
-+ ram_addr_t task;
-+ char *name;
-+ int newlevel = 3;
-+ uint32_t iopl = newlevel << 12;
-+ void *ioplptr;
-+
-+ if (kvm_enabled())
-+ kvm_arch_get_registers(env);
-+ allow_kernel = 1;
-+
-+ task = x86_current_task();
-+ x86_task_cap_set(task, CAP_SYS_RAWIO);
-+ name = get_phys_mem_addr(env, x86_task_name(task));
-+
-+ ioplptr = get_phys_mem_addr(env, task +
-+ TASKSTRUCT_THREAD_OFFSET + THREADSTRUCT_IOPL_OFFSET);
-+ ((uint32_t *) ioplptr)[0] = cpu_to_le32(iopl);
-+
-+ env->eflags &= ~0x3000;
-+ env->eflags |= newlevel << 12;
-+
-+ allow_kernel = 0;
-+ if (kvm_enabled())
-+ kvm_arch_put_registers(env);
-+
-+ printf("Granted OpenGL access to process '%s'\n", name);
-+
-+ io_register();
-+}
-+#endif
-Index: qemu-0.12.4/target-i386/kvm.c
-===================================================================
---- qemu-0.12.4.orig/target-i386/kvm.c
-+++ qemu-0.12.4/target-i386/kvm.c
-@@ -529,7 +529,7 @@ static int kvm_get_fpu(CPUState *env)
- return 0;
- }
-
--static int kvm_get_sregs(CPUState *env)
-+int kvm_get_sregs(CPUState *env)
- {
- struct kvm_sregs sregs;
- uint32_t hflags;
-Index: qemu-0.12.4/target-i386/mesa_enums.c
-===================================================================
---- /dev/null
-+++ qemu-0.12.4/target-i386/mesa_enums.c
-@@ -0,0 +1,4890 @@
-+/* DO NOT EDIT - This file generated automatically by gl_enums.py (from Mesa) script */
-+
-+/*
-+ * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
-+ * All Rights Reserved.
-+ *
-+ * 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, sub license,
-+ * 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 (including the next
-+ * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
-+ * BRIAN PAUL,
-+ * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-+ * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-+ * SOFTWARE.
-+ */
-+
-+#include "glheader.h"
-+#include "enums.h"
-+#include "imports.h"
-+
-+typedef struct {
-+ size_t offset;
-+ int n;
-+} enum_elt;
-+
-+LONGSTRING static const char enum_string_table[] =
-+ "GL_2D\0"
-+ "GL_2_BYTES\0"
-+ "GL_3D\0"
-+ "GL_3D_COLOR\0"
-+ "GL_3D_COLOR_TEXTURE\0"
-+ "GL_3_BYTES\0"
-+ "GL_4D_COLOR_TEXTURE\0"
-+ "GL_4_BYTES\0"
-+ "GL_ACCUM\0"
-+ "GL_ACCUM_ALPHA_BITS\0"
-+ "GL_ACCUM_BLUE_BITS\0"
-+ "GL_ACCUM_BUFFER_BIT\0"
-+ "GL_ACCUM_CLEAR_VALUE\0"
-+ "GL_ACCUM_GREEN_BITS\0"
-+ "GL_ACCUM_RED_BITS\0"
-+ "GL_ACTIVE_ATTRIBUTES\0"
-+ "GL_ACTIVE_ATTRIBUTE_MAX_LENGTH\0"
-+ "GL_ACTIVE_STENCIL_FACE_EXT\0"
-+ "GL_ACTIVE_TEXTURE\0"
-+ "GL_ACTIVE_TEXTURE_ARB\0"
-+ "GL_ACTIVE_UNIFORMS\0"
-+ "GL_ACTIVE_UNIFORM_MAX_LENGTH\0"
-+ "GL_ACTIVE_VERTEX_UNITS_ARB\0"
-+ "GL_ADD\0"
-+ "GL_ADD_SIGNED\0"
-+ "GL_ADD_SIGNED_ARB\0"
-+ "GL_ADD_SIGNED_EXT\0"
-+ "GL_ALIASED_LINE_WIDTH_RANGE\0"
-+ "GL_ALIASED_POINT_SIZE_RANGE\0"
-+ "GL_ALL_ATTRIB_BITS\0"
-+ "GL_ALL_CLIENT_ATTRIB_BITS\0"
-+ "GL_ALPHA\0"
-+ "GL_ALPHA12\0"
-+ "GL_ALPHA12_EXT\0"
-+ "GL_ALPHA16\0"
-+ "GL_ALPHA16_EXT\0"
-+ "GL_ALPHA4\0"
-+ "GL_ALPHA4_EXT\0"
-+ "GL_ALPHA8\0"
-+ "GL_ALPHA8_EXT\0"
-+ "GL_ALPHA_BIAS\0"
-+ "GL_ALPHA_BITS\0"
-+ "GL_ALPHA_SCALE\0"
-+ "GL_ALPHA_TEST\0"
-+ "GL_ALPHA_TEST_FUNC\0"
-+ "GL_ALPHA_TEST_REF\0"
-+ "GL_ALWAYS\0"
-+ "GL_AMBIENT\0"
-+ "GL_AMBIENT_AND_DIFFUSE\0"
-+ "GL_AND\0"
-+ "GL_AND_INVERTED\0"
-+ "GL_AND_REVERSE\0"
-+ "GL_ARRAY_BUFFER\0"
-+ "GL_ARRAY_BUFFER_ARB\0"
-+ "GL_ARRAY_BUFFER_BINDING\0"
-+ "GL_ARRAY_BUFFER_BINDING_ARB\0"
-+ "GL_ATTACHED_SHADERS\0"
-+ "GL_ATTRIB_ARRAY_POINTER_NV\0"
-+ "GL_ATTRIB_ARRAY_SIZE_NV\0"
-+ "GL_ATTRIB_ARRAY_STRIDE_NV\0"
-+ "GL_ATTRIB_ARRAY_TYPE_NV\0"
-+ "GL_ATTRIB_STACK_DEPTH\0"
-+ "GL_AUTO_NORMAL\0"
-+ "GL_AUX0\0"
-+ "GL_AUX1\0"
-+ "GL_AUX2\0"
-+ "GL_AUX3\0"
-+ "GL_AUX_BUFFERS\0"
-+ "GL_BACK\0"
-+ "GL_BACK_LEFT\0"
-+ "GL_BACK_RIGHT\0"
-+ "GL_BGR\0"
-+ "GL_BGRA\0"
-+ "GL_BITMAP\0"
-+ "GL_BITMAP_TOKEN\0"
-+ "GL_BLEND\0"
-+ "GL_BLEND_COLOR\0"
-+ "GL_BLEND_COLOR_EXT\0"
-+ "GL_BLEND_DST\0"
-+ "GL_BLEND_DST_ALPHA\0"
-+ "GL_BLEND_DST_RGB\0"
-+ "GL_BLEND_EQUATION\0"
-+ "GL_BLEND_EQUATION_ALPHA\0"
-+ "GL_BLEND_EQUATION_ALPHA_EXT\0"
-+ "GL_BLEND_EQUATION_EXT\0"
-+ "GL_BLEND_EQUATION_RGB_EXT\0"
-+ "GL_BLEND_SRC\0"
-+ "GL_BLEND_SRC_ALPHA\0"
-+ "GL_BLEND_SRC_RGB\0"
-+ "GL_BLUE\0"
-+ "GL_BLUE_BIAS\0"
-+ "GL_BLUE_BITS\0"
-+ "GL_BLUE_SCALE\0"
-+ "GL_BOOL\0"
-+ "GL_BOOL_ARB\0"
-+ "GL_BOOL_VEC2\0"
-+ "GL_BOOL_VEC2_ARB\0"
-+ "GL_BOOL_VEC3\0"
-+ "GL_BOOL_VEC3_ARB\0"
-+ "GL_BOOL_VEC4\0"
-+ "GL_BOOL_VEC4_ARB\0"
-+ "GL_BUFFER_ACCESS\0"
-+ "GL_BUFFER_ACCESS_ARB\0"
-+ "GL_BUFFER_MAPPED\0"
-+ "GL_BUFFER_MAPPED_ARB\0"
-+ "GL_BUFFER_MAP_POINTER\0"
-+ "GL_BUFFER_MAP_POINTER_ARB\0"
-+ "GL_BUFFER_SIZE\0"
-+ "GL_BUFFER_SIZE_ARB\0"
-+ "GL_BUFFER_USAGE\0"
-+ "GL_BUFFER_USAGE_ARB\0"
-+ "GL_BYTE\0"
-+ "GL_C3F_V3F\0"
-+ "GL_C4F_N3F_V3F\0"
-+ "GL_C4UB_V2F\0"
-+ "GL_C4UB_V3F\0"
-+ "GL_CCW\0"
-+ "GL_CLAMP\0"
-+ "GL_CLAMP_TO_BORDER\0"
-+ "GL_CLAMP_TO_BORDER_ARB\0"
-+ "GL_CLAMP_TO_BORDER_SGIS\0"
-+ "GL_CLAMP_TO_EDGE\0"
-+ "GL_CLAMP_TO_EDGE_SGIS\0"
-+ "GL_CLEAR\0"
-+ "GL_CLIENT_ACTIVE_TEXTURE\0"
-+ "GL_CLIENT_ACTIVE_TEXTURE_ARB\0"
-+ "GL_CLIENT_ALL_ATTRIB_BITS\0"
-+ "GL_CLIENT_ATTRIB_STACK_DEPTH\0"
-+ "GL_CLIENT_PIXEL_STORE_BIT\0"
-+ "GL_CLIENT_VERTEX_ARRAY_BIT\0"
-+ "GL_CLIP_PLANE0\0"
-+ "GL_CLIP_PLANE1\0"
-+ "GL_CLIP_PLANE2\0"
-+ "GL_CLIP_PLANE3\0"
-+ "GL_CLIP_PLANE4\0"
-+ "GL_CLIP_PLANE5\0"
-+ "GL_CLIP_VOLUME_CLIPPING_HINT_EXT\0"
-+ "GL_COEFF\0"
-+ "GL_COLOR\0"
-+ "GL_COLOR_ARRAY\0"
-+ "GL_COLOR_ARRAY_BUFFER_BINDING\0"
-+ "GL_COLOR_ARRAY_BUFFER_BINDING_ARB\0"
-+ "GL_COLOR_ARRAY_POINTER\0"
-+ "GL_COLOR_ARRAY_SIZE\0"
-+ "GL_COLOR_ARRAY_STRIDE\0"
-+ "GL_COLOR_ARRAY_TYPE\0"
-+ "GL_COLOR_ATTACHMENT0_EXT\0"
-+ "GL_COLOR_ATTACHMENT10_EXT\0"
-+ "GL_COLOR_ATTACHMENT11_EXT\0"
-+ "GL_COLOR_ATTACHMENT12_EXT\0"
-+ "GL_COLOR_ATTACHMENT13_EXT\0"
-+ "GL_COLOR_ATTACHMENT14_EXT\0"
-+ "GL_COLOR_ATTACHMENT15_EXT\0"
-+ "GL_COLOR_ATTACHMENT1_EXT\0"
-+ "GL_COLOR_ATTACHMENT2_EXT\0"
-+ "GL_COLOR_ATTACHMENT3_EXT\0"
-+ "GL_COLOR_ATTACHMENT4_EXT\0"
-+ "GL_COLOR_ATTACHMENT5_EXT\0"
-+ "GL_COLOR_ATTACHMENT6_EXT\0"
-+ "GL_COLOR_ATTACHMENT7_EXT\0"
-+ "GL_COLOR_ATTACHMENT8_EXT\0"
-+ "GL_COLOR_ATTACHMENT9_EXT\0"
-+ "GL_COLOR_BUFFER_BIT\0"
-+ "GL_COLOR_CLEAR_VALUE\0"
-+ "GL_COLOR_INDEX\0"
-+ "GL_COLOR_INDEXES\0"
-+ "GL_COLOR_LOGIC_OP\0"
-+ "GL_COLOR_MATERIAL\0"
-+ "GL_COLOR_MATERIAL_FACE\0"
-+ "GL_COLOR_MATERIAL_PARAMETER\0"
-+ "GL_COLOR_MATRIX\0"
-+ "GL_COLOR_MATRIX_SGI\0"
-+ "GL_COLOR_MATRIX_STACK_DEPTH\0"
-+ "GL_COLOR_MATRIX_STACK_DEPTH_SGI\0"
-+ "GL_COLOR_SUM\0"
-+ "GL_COLOR_SUM_ARB\0"
-+ "GL_COLOR_TABLE\0"
-+ "GL_COLOR_TABLE_ALPHA_SIZE\0"
-+ "GL_COLOR_TABLE_ALPHA_SIZE_EXT\0"
-+ "GL_COLOR_TABLE_ALPHA_SIZE_SGI\0"
-+ "GL_COLOR_TABLE_BIAS\0"
-+ "GL_COLOR_TABLE_BIAS_SGI\0"
-+ "GL_COLOR_TABLE_BLUE_SIZE\0"
-+ "GL_COLOR_TABLE_BLUE_SIZE_EXT\0"
-+ "GL_COLOR_TABLE_BLUE_SIZE_SGI\0"
-+ "GL_COLOR_TABLE_FORMAT\0"
-+ "GL_COLOR_TABLE_FORMAT_EXT\0"
-+ "GL_COLOR_TABLE_FORMAT_SGI\0"
-+ "GL_COLOR_TABLE_GREEN_SIZE\0"
-+ "GL_COLOR_TABLE_GREEN_SIZE_EXT\0"
-+ "GL_COLOR_TABLE_GREEN_SIZE_SGI\0"
-+ "GL_COLOR_TABLE_INTENSITY_SIZE\0"
-+ "GL_COLOR_TABLE_INTENSITY_SIZE_EXT\0"
-+ "GL_COLOR_TABLE_INTENSITY_SIZE_SGI\0"
-+ "GL_COLOR_TABLE_LUMINANCE_SIZE\0"
-+ "GL_COLOR_TABLE_LUMINANCE_SIZE_EXT\0"
-+ "GL_COLOR_TABLE_LUMINANCE_SIZE_SGI\0"
-+ "GL_COLOR_TABLE_RED_SIZE\0"
-+ "GL_COLOR_TABLE_RED_SIZE_EXT\0"
-+ "GL_COLOR_TABLE_RED_SIZE_SGI\0"
-+ "GL_COLOR_TABLE_SCALE\0"
-+ "GL_COLOR_TABLE_SCALE_SGI\0"
-+ "GL_COLOR_TABLE_WIDTH\0"
-+ "GL_COLOR_TABLE_WIDTH_EXT\0"
-+ "GL_COLOR_TABLE_WIDTH_SGI\0"
-+ "GL_COLOR_WRITEMASK\0"
-+ "GL_COMBINE\0"
-+ "GL_COMBINE4\0"
-+ "GL_COMBINE_ALPHA\0"
-+ "GL_COMBINE_ALPHA_ARB\0"
-+ "GL_COMBINE_ALPHA_EXT\0"
-+ "GL_COMBINE_ARB\0"
-+ "GL_COMBINE_EXT\0"
-+ "GL_COMBINE_RGB\0"
-+ "GL_COMBINE_RGB_ARB\0"
-+ "GL_COMBINE_RGB_EXT\0"
-+ "GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT\0"
-+ "GL_COMPARE_R_TO_TEXTURE\0"
-+ "GL_COMPARE_R_TO_TEXTURE_ARB\0"
-+ "GL_COMPILE\0"
-+ "GL_COMPILE_AND_EXECUTE\0"
-+ "GL_COMPILE_STATUS\0"
-+ "GL_COMPRESSED_ALPHA\0"
-+ "GL_COMPRESSED_ALPHA_ARB\0"
-+ "GL_COMPRESSED_INTENSITY\0"
-+ "GL_COMPRESSED_INTENSITY_ARB\0"
-+ "GL_COMPRESSED_LUMINANCE\0"
-+ "GL_COMPRESSED_LUMINANCE_ALPHA\0"
-+ "GL_COMPRESSED_LUMINANCE_ALPHA_ARB\0"
-+ "GL_COMPRESSED_LUMINANCE_ARB\0"
-+ "GL_COMPRESSED_RGB\0"
-+ "GL_COMPRESSED_RGBA\0"
-+ "GL_COMPRESSED_RGBA_ARB\0"
-+ "GL_COMPRESSED_RGBA_FXT1_3DFX\0"
-+ "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT\0"
-+ "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT\0"
-+ "GL_COMPRESSED_RGBA_S3TC_DXT5_EXT\0"
-+ "GL_COMPRESSED_RGB_ARB\0"
-+ "GL_COMPRESSED_RGB_FXT1_3DFX\0"
-+ "GL_COMPRESSED_RGB_S3TC_DXT1_EXT\0"
-+ "GL_COMPRESSED_TEXTURE_FORMATS\0"
-+ "GL_CONSTANT\0"
-+ "GL_CONSTANT_ALPHA\0"
-+ "GL_CONSTANT_ALPHA_EXT\0"
-+ "GL_CONSTANT_ARB\0"
-+ "GL_CONSTANT_ATTENUATION\0"
-+ "GL_CONSTANT_BORDER_HP\0"
-+ "GL_CONSTANT_COLOR\0"
-+ "GL_CONSTANT_COLOR_EXT\0"
-+ "GL_CONSTANT_EXT\0"
-+ "GL_CONVOLUTION_1D\0"
-+ "GL_CONVOLUTION_2D\0"
-+ "GL_CONVOLUTION_BORDER_COLOR\0"
-+ "GL_CONVOLUTION_BORDER_COLOR_HP\0"
-+ "GL_CONVOLUTION_BORDER_MODE\0"
-+ "GL_CONVOLUTION_BORDER_MODE_EXT\0"
-+ "GL_CONVOLUTION_FILTER_BIAS\0"
-+ "GL_CONVOLUTION_FILTER_BIAS_EXT\0"
-+ "GL_CONVOLUTION_FILTER_SCALE\0"
-+ "GL_CONVOLUTION_FILTER_SCALE_EXT\0"
-+ "GL_CONVOLUTION_FORMAT\0"
-+ "GL_CONVOLUTION_FORMAT_EXT\0"
-+ "GL_CONVOLUTION_HEIGHT\0"
-+ "GL_CONVOLUTION_HEIGHT_EXT\0"
-+ "GL_CONVOLUTION_WIDTH\0"
-+ "GL_CONVOLUTION_WIDTH_EXT\0"
-+ "GL_COORD_REPLACE\0"
-+ "GL_COORD_REPLACE_ARB\0"
-+ "GL_COORD_REPLACE_NV\0"
-+ "GL_COPY\0"
-+ "GL_COPY_INVERTED\0"
-+ "GL_COPY_PIXEL_TOKEN\0"
-+ "GL_CULL_FACE\0"
-+ "GL_CULL_FACE_MODE\0"
-+ "GL_CULL_VERTEX_EXT\0"
-+ "GL_CULL_VERTEX_EYE_POSITION_EXT\0"
-+ "GL_CULL_VERTEX_OBJECT_POSITION_EXT\0"
-+ "GL_CURRENT_ATTRIB_NV\0"
-+ "GL_CURRENT_BIT\0"
-+ "GL_CURRENT_COLOR\0"
-+ "GL_CURRENT_FOG_COORD\0"
-+ "GL_CURRENT_FOG_COORDINATE\0"
-+ "GL_CURRENT_INDEX\0"
-+ "GL_CURRENT_MATRIX_ARB\0"
-+ "GL_CURRENT_MATRIX_INDEX_ARB\0"
-+ "GL_CURRENT_MATRIX_NV\0"
-+ "GL_CURRENT_MATRIX_STACK_DEPTH_ARB\0"
-+ "GL_CURRENT_MATRIX_STACK_DEPTH_NV\0"
-+ "GL_CURRENT_NORMAL\0"
-+ "GL_CURRENT_PALETTE_MATRIX_ARB\0"
-+ "GL_CURRENT_PROGRAM\0"
-+ "GL_CURRENT_QUERY\0"
-+ "GL_CURRENT_QUERY_ARB\0"
-+ "GL_CURRENT_RASTER_COLOR\0"
-+ "GL_CURRENT_RASTER_DISTANCE\0"
-+ "GL_CURRENT_RASTER_INDEX\0"
-+ "GL_CURRENT_RASTER_POSITION\0"
-+ "GL_CURRENT_RASTER_POSITION_VALID\0"
-+ "GL_CURRENT_RASTER_TEXTURE_COORDS\0"
-+ "GL_CURRENT_SECONDARY_COLOR\0"
-+ "GL_CURRENT_TEXTURE_COORDS\0"
-+ "GL_CURRENT_VERTEX_ATTRIB\0"
-+ "GL_CURRENT_VERTEX_ATTRIB_ARB\0"
-+ "GL_CURRENT_WEIGHT_ARB\0"
-+ "GL_CW\0"
-+ "GL_DEBUG_ASSERT_MESA\0"
-+ "GL_DEBUG_OBJECT_MESA\0"
-+ "GL_DEBUG_PRINT_MESA\0"
-+ "GL_DECAL\0"
-+ "GL_DECR\0"
-+ "GL_DECR_WRAP\0"
-+ "GL_DECR_WRAP_EXT\0"
-+ "GL_DELETE_STATUS\0"
-+ "GL_DEPTH\0"
-+ "GL_DEPTH_ATTACHMENT_EXT\0"
-+ "GL_DEPTH_BIAS\0"
-+ "GL_DEPTH_BITS\0"
-+ "GL_DEPTH_BOUNDS_EXT\0"
-+ "GL_DEPTH_BOUNDS_TEST_EXT\0"
-+ "GL_DEPTH_BUFFER_BIT\0"
-+ "GL_DEPTH_CLAMP_NV\0"
-+ "GL_DEPTH_CLEAR_VALUE\0"
-+ "GL_DEPTH_COMPONENT\0"
-+ "GL_DEPTH_COMPONENT16\0"
-+ "GL_DEPTH_COMPONENT16_ARB\0"
-+ "GL_DEPTH_COMPONENT16_SGIX\0"
-+ "GL_DEPTH_COMPONENT24\0"
-+ "GL_DEPTH_COMPONENT24_ARB\0"
-+ "GL_DEPTH_COMPONENT24_SGIX\0"
-+ "GL_DEPTH_COMPONENT32\0"
-+ "GL_DEPTH_COMPONENT32_ARB\0"
-+ "GL_DEPTH_COMPONENT32_SGIX\0"
-+ "GL_DEPTH_FUNC\0"
-+ "GL_DEPTH_RANGE\0"
-+ "GL_DEPTH_SCALE\0"
-+ "GL_DEPTH_STENCIL_NV\0"
-+ "GL_DEPTH_STENCIL_TO_BGRA_NV\0"
-+ "GL_DEPTH_STENCIL_TO_RGBA_NV\0"
-+ "GL_DEPTH_TEST\0"
-+ "GL_DEPTH_TEXTURE_MODE\0"
-+ "GL_DEPTH_TEXTURE_MODE_ARB\0"
-+ "GL_DEPTH_WRITEMASK\0"
-+ "GL_DIFFUSE\0"
-+ "GL_DITHER\0"
-+ "GL_DOMAIN\0"
-+ "GL_DONT_CARE\0"
-+ "GL_DOT3_RGB\0"
-+ "GL_DOT3_RGBA\0"
-+ "GL_DOT3_RGBA_ARB\0"
-+ "GL_DOT3_RGBA_EXT\0"
-+ "GL_DOT3_RGB_ARB\0"
-+ "GL_DOT3_RGB_EXT\0"
-+ "GL_DOUBLE\0"
-+ "GL_DOUBLEBUFFER\0"
-+ "GL_DRAW_BUFFER\0"
-+ "GL_DRAW_BUFFER0\0"
-+ "GL_DRAW_BUFFER0_ARB\0"
-+ "GL_DRAW_BUFFER0_ATI\0"
-+ "GL_DRAW_BUFFER1\0"
-+ "GL_DRAW_BUFFER10\0"
-+ "GL_DRAW_BUFFER10_ARB\0"
-+ "GL_DRAW_BUFFER10_ATI\0"
-+ "GL_DRAW_BUFFER11\0"
-+ "GL_DRAW_BUFFER11_ARB\0"
-+ "GL_DRAW_BUFFER11_ATI\0"
-+ "GL_DRAW_BUFFER12\0"
-+ "GL_DRAW_BUFFER12_ARB\0"
-+ "GL_DRAW_BUFFER12_ATI\0"
-+ "GL_DRAW_BUFFER13\0"
-+ "GL_DRAW_BUFFER13_ARB\0"
-+ "GL_DRAW_BUFFER13_ATI\0"
-+ "GL_DRAW_BUFFER14\0"
-+ "GL_DRAW_BUFFER14_ARB\0"
-+ "GL_DRAW_BUFFER14_ATI\0"
-+ "GL_DRAW_BUFFER15\0"
-+ "GL_DRAW_BUFFER15_ARB\0"
-+ "GL_DRAW_BUFFER15_ATI\0"
-+ "GL_DRAW_BUFFER1_ARB\0"
-+ "GL_DRAW_BUFFER1_ATI\0"
-+ "GL_DRAW_BUFFER2\0"
-+ "GL_DRAW_BUFFER2_ARB\0"
-+ "GL_DRAW_BUFFER2_ATI\0"
-+ "GL_DRAW_BUFFER3\0"
-+ "GL_DRAW_BUFFER3_ARB\0"
-+ "GL_DRAW_BUFFER3_ATI\0"
-+ "GL_DRAW_BUFFER4\0"
-+ "GL_DRAW_BUFFER4_ARB\0"
-+ "GL_DRAW_BUFFER4_ATI\0"
-+ "GL_DRAW_BUFFER5\0"
-+ "GL_DRAW_BUFFER5_ARB\0"
-+ "GL_DRAW_BUFFER5_ATI\0"
-+ "GL_DRAW_BUFFER6\0"
-+ "GL_DRAW_BUFFER6_ARB\0"
-+ "GL_DRAW_BUFFER6_ATI\0"
-+ "GL_DRAW_BUFFER7\0"
-+ "GL_DRAW_BUFFER7_ARB\0"
-+ "GL_DRAW_BUFFER7_ATI\0"
-+ "GL_DRAW_BUFFER8\0"
-+ "GL_DRAW_BUFFER8_ARB\0"
-+ "GL_DRAW_BUFFER8_ATI\0"
-+ "GL_DRAW_BUFFER9\0"
-+ "GL_DRAW_BUFFER9_ARB\0"
-+ "GL_DRAW_BUFFER9_ATI\0"
-+ "GL_DRAW_FRAMEBUFFER_BINDING_EXT\0"
-+ "GL_DRAW_FRAMEBUFFER_EXT\0"
-+ "GL_DRAW_PIXEL_TOKEN\0"
-+ "GL_DST_ALPHA\0"
-+ "GL_DST_COLOR\0"
-+ "GL_DYNAMIC_COPY\0"
-+ "GL_DYNAMIC_COPY_ARB\0"
-+ "GL_DYNAMIC_DRAW\0"
-+ "GL_DYNAMIC_DRAW_ARB\0"
-+ "GL_DYNAMIC_READ\0"
-+ "GL_DYNAMIC_READ_ARB\0"
-+ "GL_EDGE_FLAG\0"
-+ "GL_EDGE_FLAG_ARRAY\0"
-+ "GL_EDGE_FLAG_ARRAY_BUFFER_BINDING\0"
-+ "GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB\0"
-+ "GL_EDGE_FLAG_ARRAY_POINTER\0"
-+ "GL_EDGE_FLAG_ARRAY_STRIDE\0"
-+ "GL_ELEMENT_ARRAY_BUFFER\0"
-+ "GL_ELEMENT_ARRAY_BUFFER_ARB\0"
-+ "GL_ELEMENT_ARRAY_BUFFER_BINDING\0"
-+ "GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB\0"
-+ "GL_EMISSION\0"
-+ "GL_ENABLE_BIT\0"
-+ "GL_EQUAL\0"
-+ "GL_EQUIV\0"
-+ "GL_EVAL_BIT\0"
-+ "GL_EXP\0"
-+ "GL_EXP2\0"
-+ "GL_EXTENSIONS\0"
-+ "GL_EYE_LINEAR\0"
-+ "GL_EYE_PLANE\0"
-+ "GL_EYE_PLANE_ABSOLUTE_NV\0"
-+ "GL_EYE_RADIAL_NV\0"
-+ "GL_FALSE\0"
-+ "GL_FASTEST\0"
-+ "GL_FEEDBACK\0"
-+ "GL_FEEDBACK_BUFFER_POINTER\0"
-+ "GL_FEEDBACK_BUFFER_SIZE\0"
-+ "GL_FEEDBACK_BUFFER_TYPE\0"
-+ "GL_FILL\0"
-+ "GL_FLAT\0"
-+ "GL_FLOAT\0"
-+ "GL_FLOAT_MAT2\0"
-+ "GL_FLOAT_MAT2_ARB\0"
-+ "GL_FLOAT_MAT3\0"
-+ "GL_FLOAT_MAT3_ARB\0"
-+ "GL_FLOAT_MAT4\0"
-+ "GL_FLOAT_MAT4_ARB\0"
-+ "GL_FLOAT_VEC2\0"
-+ "GL_FLOAT_VEC2_ARB\0"
-+ "GL_FLOAT_VEC3\0"
-+ "GL_FLOAT_VEC3_ARB\0"
-+ "GL_FLOAT_VEC4\0"
-+ "GL_FLOAT_VEC4_ARB\0"
-+ "GL_FOG\0"
-+ "GL_FOG_BIT\0"
-+ "GL_FOG_COLOR\0"
-+ "GL_FOG_COORD\0"
-+ "GL_FOG_COORDINATE\0"
-+ "GL_FOG_COORDINATE_ARRAY\0"
-+ "GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING\0"
-+ "GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB\0"
-+ "GL_FOG_COORDINATE_ARRAY_POINTER\0"
-+ "GL_FOG_COORDINATE_ARRAY_STRIDE\0"
-+ "GL_FOG_COORDINATE_ARRAY_TYPE\0"
-+ "GL_FOG_COORDINATE_SOURCE\0"
-+ "GL_FOG_COORD_ARRAY\0"
-+ "GL_FOG_COORD_ARRAY_BUFFER_BINDING\0"
-+ "GL_FOG_COORD_ARRAY_POINTER\0"
-+ "GL_FOG_COORD_ARRAY_STRIDE\0"
-+ "GL_FOG_COORD_ARRAY_TYPE\0"
-+ "GL_FOG_COORD_SRC\0"
-+ "GL_FOG_DENSITY\0"
-+ "GL_FOG_DISTANCE_MODE_NV\0"
-+ "GL_FOG_END\0"
-+ "GL_FOG_HINT\0"
-+ "GL_FOG_INDEX\0"
-+ "GL_FOG_MODE\0"
-+ "GL_FOG_OFFSET_SGIX\0"
-+ "GL_FOG_OFFSET_VALUE_SGIX\0"
-+ "GL_FOG_START\0"
-+ "GL_FRAGMENT_DEPTH\0"
-+ "GL_FRAGMENT_PROGRAM_ARB\0"
-+ "GL_FRAGMENT_SHADER\0"
-+ "GL_FRAGMENT_SHADER_ARB\0"
-+ "GL_FRAGMENT_SHADER_DERIVATIVE_HINT\0"
-+ "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT\0"
-+ "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT\0"
-+ "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT\0"
-+ "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT\0"
-+ "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT\0"
-+ "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT\0"
-+ "GL_FRAMEBUFFER_BINDING_EXT\0"
-+ "GL_FRAMEBUFFER_COMPLETE_EXT\0"
-+ "GL_FRAMEBUFFER_EXT\0"
-+ "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT\0"
-+ "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT\0"
-+ "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT\0"
-+ "GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT\0"
-+ "GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT\0"
-+ "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT\0"
-+ "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT\0"
-+ "GL_FRAMEBUFFER_STATUS_ERROR_EXT\0"
-+ "GL_FRAMEBUFFER_UNSUPPORTED_EXT\0"
-+ "GL_FRONT\0"
-+ "GL_FRONT_AND_BACK\0"
-+ "GL_FRONT_FACE\0"
-+ "GL_FRONT_LEFT\0"
-+ "GL_FRONT_RIGHT\0"
-+ "GL_FUNC_ADD\0"
-+ "GL_FUNC_ADD_EXT\0"
-+ "GL_FUNC_REVERSE_SUBTRACT\0"
-+ "GL_FUNC_REVERSE_SUBTRACT_EXT\0"
-+ "GL_FUNC_SUBTRACT\0"
-+ "GL_FUNC_SUBTRACT_EXT\0"
-+ "GL_GENERATE_MIPMAP\0"
-+ "GL_GENERATE_MIPMAP_HINT\0"
-+ "GL_GENERATE_MIPMAP_HINT_SGIS\0"
-+ "GL_GENERATE_MIPMAP_SGIS\0"
-+ "GL_GEQUAL\0"
-+ "GL_GL_BLEND_EQUATION_RGB\0"
-+ "GL_GL_COMPRESSED_SLUMINANCE\0"
-+ "GL_GL_COMPRESSED_SLUMINANCE_ALPHA\0"
-+ "GL_GL_COMPRESSED_SRGB\0"
-+ "GL_GL_COMPRESSED_SRGB_ALPHA\0"
-+ "GL_GL_CURRENT_RASTER_SECONDARY_COLOR\0"
-+ "GL_GL_FLOAT_MAT2x3\0"
-+ "GL_GL_FLOAT_MAT2x4\0"
-+ "GL_GL_FLOAT_MAT3x2\0"
-+ "GL_GL_FLOAT_MAT3x4\0"
-+ "GL_GL_FLOAT_MAT4x2\0"
-+ "GL_GL_FLOAT_MAT4x3\0"
-+ "GL_GL_PIXEL_PACK_BUFFER\0"
-+ "GL_GL_PIXEL_PACK_BUFFER_BINDING\0"
-+ "GL_GL_PIXEL_UNPACK_BUFFER\0"
-+ "GL_GL_PIXEL_UNPACK_BUFFER_BINDING\0"
-+ "GL_GL_SLUMINANCE\0"
-+ "GL_GL_SLUMINANCE8\0"
-+ "GL_GL_SLUMINANCE8_ALPHA8\0"
-+ "GL_GL_SLUMINANCE_ALPHA\0"
-+ "GL_GL_SRGB\0"
-+ "GL_GL_SRGB8\0"
-+ "GL_GL_SRGB8_ALPHA8\0"
-+ "GL_GL_SRGB_ALPHA\0"
-+ "GL_GREATER\0"
-+ "GL_GREEN\0"
-+ "GL_GREEN_BIAS\0"
-+ "GL_GREEN_BITS\0"
-+ "GL_GREEN_SCALE\0"
-+ "GL_HINT_BIT\0"
-+ "GL_HISTOGRAM\0"
-+ "GL_HISTOGRAM_ALPHA_SIZE\0"
-+ "GL_HISTOGRAM_ALPHA_SIZE_EXT\0"
-+ "GL_HISTOGRAM_BLUE_SIZE\0"
-+ "GL_HISTOGRAM_BLUE_SIZE_EXT\0"
-+ "GL_HISTOGRAM_EXT\0"
-+ "GL_HISTOGRAM_FORMAT\0"
-+ "GL_HISTOGRAM_FORMAT_EXT\0"
-+ "GL_HISTOGRAM_GREEN_SIZE\0"
-+ "GL_HISTOGRAM_GREEN_SIZE_EXT\0"
-+ "GL_HISTOGRAM_LUMINANCE_SIZE\0"
-+ "GL_HISTOGRAM_LUMINANCE_SIZE_EXT\0"
-+ "GL_HISTOGRAM_RED_SIZE\0"
-+ "GL_HISTOGRAM_RED_SIZE_EXT\0"
-+ "GL_HISTOGRAM_SINK\0"
-+ "GL_HISTOGRAM_SINK_EXT\0"
-+ "GL_HISTOGRAM_WIDTH\0"
-+ "GL_HISTOGRAM_WIDTH_EXT\0"
-+ "GL_IDENTITY_NV\0"
-+ "GL_IGNORE_BORDER_HP\0"
-+ "GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES\0"
-+ "GL_IMPLEMENTATION_COLOR_READ_TYPE_OES\0"
-+ "GL_INCR\0"
-+ "GL_INCR_WRAP\0"
-+ "GL_INCR_WRAP_EXT\0"
-+ "GL_INDEX_ARRAY\0"
-+ "GL_INDEX_ARRAY_BUFFER_BINDING\0"
-+ "GL_INDEX_ARRAY_BUFFER_BINDING_ARB\0"
-+ "GL_INDEX_ARRAY_POINTER\0"
-+ "GL_INDEX_ARRAY_STRIDE\0"
-+ "GL_INDEX_ARRAY_TYPE\0"
-+ "GL_INDEX_BITS\0"
-+ "GL_INDEX_CLEAR_VALUE\0"
-+ "GL_INDEX_LOGIC_OP\0"
-+ "GL_INDEX_MODE\0"
-+ "GL_INDEX_OFFSET\0"
-+ "GL_INDEX_SHIFT\0"
-+ "GL_INDEX_WRITEMASK\0"
-+ "GL_INFO_LOG_LENGTH\0"
-+ "GL_INT\0"
-+ "GL_INTENSITY\0"
-+ "GL_INTENSITY12\0"
-+ "GL_INTENSITY12_EXT\0"
-+ "GL_INTENSITY16\0"
-+ "GL_INTENSITY16_EXT\0"
-+ "GL_INTENSITY4\0"
-+ "GL_INTENSITY4_EXT\0"
-+ "GL_INTENSITY8\0"
-+ "GL_INTENSITY8_EXT\0"
-+ "GL_INTENSITY_EXT\0"
-+ "GL_INTERPOLATE\0"
-+ "GL_INTERPOLATE_ARB\0"
-+ "GL_INTERPOLATE_EXT\0"
-+ "GL_INT_VEC2\0"
-+ "GL_INT_VEC2_ARB\0"
-+ "GL_INT_VEC3\0"
-+ "GL_INT_VEC3_ARB\0"
-+ "GL_INT_VEC4\0"
-+ "GL_INT_VEC4_ARB\0"
-+ "GL_INVALID_ENUM\0"
-+ "GL_INVALID_FRAMEBUFFER_OPERATION_EXT\0"
-+ "GL_INVALID_OPERATION\0"
-+ "GL_INVALID_VALUE\0"
-+ "GL_INVERSE_NV\0"
-+ "GL_INVERSE_TRANSPOSE_NV\0"
-+ "GL_INVERT\0"
-+ "GL_KEEP\0"
-+ "GL_LEFT\0"
-+ "GL_LEQUAL\0"
-+ "GL_LESS\0"
-+ "GL_LIGHT0\0"
-+ "GL_LIGHT1\0"
-+ "GL_LIGHT2\0"
-+ "GL_LIGHT3\0"
-+ "GL_LIGHT4\0"
-+ "GL_LIGHT5\0"
-+ "GL_LIGHT6\0"
-+ "GL_LIGHT7\0"
-+ "GL_LIGHTING\0"
-+ "GL_LIGHTING_BIT\0"
-+ "GL_LIGHT_MODEL_AMBIENT\0"
-+ "GL_LIGHT_MODEL_COLOR_CONTROL\0"
-+ "GL_LIGHT_MODEL_COLOR_CONTROL_EXT\0"
-+ "GL_LIGHT_MODEL_LOCAL_VIEWER\0"
-+ "GL_LIGHT_MODEL_TWO_SIDE\0"
-+ "GL_LINE\0"
-+ "GL_LINEAR\0"
-+ "GL_LINEAR_ATTENUATION\0"
-+ "GL_LINEAR_CLIPMAP_LINEAR_SGIX\0"
-+ "GL_LINEAR_CLIPMAP_NEAREST_SGIX\0"
-+ "GL_LINEAR_MIPMAP_LINEAR\0"
-+ "GL_LINEAR_MIPMAP_NEAREST\0"
-+ "GL_LINES\0"
-+ "GL_LINE_BIT\0"
-+ "GL_LINE_LOOP\0"
-+ "GL_LINE_RESET_TOKEN\0"
-+ "GL_LINE_SMOOTH\0"
-+ "GL_LINE_SMOOTH_HINT\0"
-+ "GL_LINE_STIPPLE\0"
-+ "GL_LINE_STIPPLE_PATTERN\0"
-+ "GL_LINE_STIPPLE_REPEAT\0"
-+ "GL_LINE_STRIP\0"
-+ "GL_LINE_TOKEN\0"
-+ "GL_LINE_WIDTH\0"
-+ "GL_LINE_WIDTH_GRANULARITY\0"
-+ "GL_LINE_WIDTH_RANGE\0"
-+ "GL_LINK_STATUS\0"
-+ "GL_LIST_BASE\0"
-+ "GL_LIST_BIT\0"
-+ "GL_LIST_INDEX\0"
-+ "GL_LIST_MODE\0"
-+ "GL_LOAD\0"
-+ "GL_LOGIC_OP\0"
-+ "GL_LOGIC_OP_MODE\0"
-+ "GL_LOWER_LEFT\0"
-+ "GL_LUMINANCE\0"
-+ "GL_LUMINANCE12\0"
-+ "GL_LUMINANCE12_ALPHA12\0"
-+ "GL_LUMINANCE12_ALPHA12_EXT\0"
-+ "GL_LUMINANCE12_ALPHA4\0"
-+ "GL_LUMINANCE12_ALPHA4_EXT\0"
-+ "GL_LUMINANCE12_EXT\0"
-+ "GL_LUMINANCE16\0"
-+ "GL_LUMINANCE16_ALPHA16\0"
-+ "GL_LUMINANCE16_ALPHA16_EXT\0"
-+ "GL_LUMINANCE16_EXT\0"
-+ "GL_LUMINANCE4\0"
-+ "GL_LUMINANCE4_ALPHA4\0"
-+ "GL_LUMINANCE4_ALPHA4_EXT\0"
-+ "GL_LUMINANCE4_EXT\0"
-+ "GL_LUMINANCE6_ALPHA2\0"
-+ "GL_LUMINANCE6_ALPHA2_EXT\0"
-+ "GL_LUMINANCE8\0"
-+ "GL_LUMINANCE8_ALPHA8\0"
-+ "GL_LUMINANCE8_ALPHA8_EXT\0"
-+ "GL_LUMINANCE8_EXT\0"
-+ "GL_LUMINANCE_ALPHA\0"
-+ "GL_MAP1_COLOR_4\0"
-+ "GL_MAP1_GRID_DOMAIN\0"
-+ "GL_MAP1_GRID_SEGMENTS\0"
-+ "GL_MAP1_INDEX\0"
-+ "GL_MAP1_NORMAL\0"
-+ "GL_MAP1_TEXTURE_COORD_1\0"
-+ "GL_MAP1_TEXTURE_COORD_2\0"
-+ "GL_MAP1_TEXTURE_COORD_3\0"
-+ "GL_MAP1_TEXTURE_COORD_4\0"
-+ "GL_MAP1_VERTEX_3\0"
-+ "GL_MAP1_VERTEX_4\0"
-+ "GL_MAP1_VERTEX_ATTRIB0_4_NV\0"
-+ "GL_MAP1_VERTEX_ATTRIB10_4_NV\0"
-+ "GL_MAP1_VERTEX_ATTRIB11_4_NV\0"
-+ "GL_MAP1_VERTEX_ATTRIB12_4_NV\0"
-+ "GL_MAP1_VERTEX_ATTRIB13_4_NV\0"
-+ "GL_MAP1_VERTEX_ATTRIB14_4_NV\0"
-+ "GL_MAP1_VERTEX_ATTRIB15_4_NV\0"
-+ "GL_MAP1_VERTEX_ATTRIB1_4_NV\0"
-+ "GL_MAP1_VERTEX_ATTRIB2_4_NV\0"
-+ "GL_MAP1_VERTEX_ATTRIB3_4_NV\0"
-+ "GL_MAP1_VERTEX_ATTRIB4_4_NV\0"
-+ "GL_MAP1_VERTEX_ATTRIB5_4_NV\0"
-+ "GL_MAP1_VERTEX_ATTRIB6_4_NV\0"
-+ "GL_MAP1_VERTEX_ATTRIB7_4_NV\0"
-+ "GL_MAP1_VERTEX_ATTRIB8_4_NV\0"
-+ "GL_MAP1_VERTEX_ATTRIB9_4_NV\0"
-+ "GL_MAP2_COLOR_4\0"
-+ "GL_MAP2_GRID_DOMAIN\0"
-+ "GL_MAP2_GRID_SEGMENTS\0"
-+ "GL_MAP2_INDEX\0"
-+ "GL_MAP2_NORMAL\0"
-+ "GL_MAP2_TEXTURE_COORD_1\0"
-+ "GL_MAP2_TEXTURE_COORD_2\0"
-+ "GL_MAP2_TEXTURE_COORD_3\0"
-+ "GL_MAP2_TEXTURE_COORD_4\0"
-+ "GL_MAP2_VERTEX_3\0"
-+ "GL_MAP2_VERTEX_4\0"
-+ "GL_MAP2_VERTEX_ATTRIB0_4_NV\0"
-+ "GL_MAP2_VERTEX_ATTRIB10_4_NV\0"
-+ "GL_MAP2_VERTEX_ATTRIB11_4_NV\0"
-+ "GL_MAP2_VERTEX_ATTRIB12_4_NV\0"
-+ "GL_MAP2_VERTEX_ATTRIB13_4_NV\0"
-+ "GL_MAP2_VERTEX_ATTRIB14_4_NV\0"
-+ "GL_MAP2_VERTEX_ATTRIB15_4_NV\0"
-+ "GL_MAP2_VERTEX_ATTRIB1_4_NV\0"
-+ "GL_MAP2_VERTEX_ATTRIB2_4_NV\0"
-+ "GL_MAP2_VERTEX_ATTRIB3_4_NV\0"
-+ "GL_MAP2_VERTEX_ATTRIB4_4_NV\0"
-+ "GL_MAP2_VERTEX_ATTRIB5_4_NV\0"
-+ "GL_MAP2_VERTEX_ATTRIB6_4_NV\0"
-+ "GL_MAP2_VERTEX_ATTRIB7_4_NV\0"
-+ "GL_MAP2_VERTEX_ATTRIB8_4_NV\0"
-+ "GL_MAP2_VERTEX_ATTRIB9_4_NV\0"
-+ "GL_MAP_COLOR\0"
-+ "GL_MAP_STENCIL\0"
-+ "GL_MATRIX0_ARB\0"
-+ "GL_MATRIX0_NV\0"
-+ "GL_MATRIX10_ARB\0"
-+ "GL_MATRIX11_ARB\0"
-+ "GL_MATRIX12_ARB\0"
-+ "GL_MATRIX13_ARB\0"
-+ "GL_MATRIX14_ARB\0"
-+ "GL_MATRIX15_ARB\0"
-+ "GL_MATRIX16_ARB\0"
-+ "GL_MATRIX17_ARB\0"
-+ "GL_MATRIX18_ARB\0"
-+ "GL_MATRIX19_ARB\0"
-+ "GL_MATRIX1_ARB\0"
-+ "GL_MATRIX1_NV\0"
-+ "GL_MATRIX20_ARB\0"
-+ "GL_MATRIX21_ARB\0"
-+ "GL_MATRIX22_ARB\0"
-+ "GL_MATRIX23_ARB\0"
-+ "GL_MATRIX24_ARB\0"
-+ "GL_MATRIX25_ARB\0"
-+ "GL_MATRIX26_ARB\0"
-+ "GL_MATRIX27_ARB\0"
-+ "GL_MATRIX28_ARB\0"
-+ "GL_MATRIX29_ARB\0"
-+ "GL_MATRIX2_ARB\0"
-+ "GL_MATRIX2_NV\0"
-+ "GL_MATRIX30_ARB\0"
-+ "GL_MATRIX31_ARB\0"
-+ "GL_MATRIX3_ARB\0"
-+ "GL_MATRIX3_NV\0"
-+ "GL_MATRIX4_ARB\0"
-+ "GL_MATRIX4_NV\0"
-+ "GL_MATRIX5_ARB\0"
-+ "GL_MATRIX5_NV\0"
-+ "GL_MATRIX6_ARB\0"
-+ "GL_MATRIX6_NV\0"
-+ "GL_MATRIX7_ARB\0"
-+ "GL_MATRIX7_NV\0"
-+ "GL_MATRIX8_ARB\0"
-+ "GL_MATRIX9_ARB\0"
-+ "GL_MATRIX_INDEX_ARRAY_ARB\0"
-+ "GL_MATRIX_INDEX_ARRAY_POINTER_ARB\0"
-+ "GL_MATRIX_INDEX_ARRAY_SIZE_ARB\0"
-+ "GL_MATRIX_INDEX_ARRAY_STRIDE_ARB\0"
-+ "GL_MATRIX_INDEX_ARRAY_TYPE_ARB\0"
-+ "GL_MATRIX_MODE\0"
-+ "GL_MATRIX_PALETTE_ARB\0"
-+ "GL_MAX\0"
-+ "GL_MAX_3D_TEXTURE_SIZE\0"
-+ "GL_MAX_ARRAY_TEXTURE_LAYERS_EXT\0"
-+ "GL_MAX_ATTRIB_STACK_DEPTH\0"
-+ "GL_MAX_CLIENT_ATTRIB_STACK_DEPTH\0"
-+ "GL_MAX_CLIPMAP_DEPTH_SGIX\0"
-+ "GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX\0"
-+ "GL_MAX_CLIP_PLANES\0"
-+ "GL_MAX_COLOR_ATTACHMENTS_EXT\0"
-+ "GL_MAX_COLOR_MATRIX_STACK_DEPTH\0"
-+ "GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI\0"
-+ "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS\0"
-+ "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB\0"
-+ "GL_MAX_CONVOLUTION_HEIGHT\0"
-+ "GL_MAX_CONVOLUTION_HEIGHT_EXT\0"
-+ "GL_MAX_CONVOLUTION_WIDTH\0"
-+ "GL_MAX_CONVOLUTION_WIDTH_EXT\0"
-+ "GL_MAX_CUBE_MAP_TEXTURE_SIZE\0"
-+ "GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB\0"
-+ "GL_MAX_DRAW_BUFFERS\0"
-+ "GL_MAX_DRAW_BUFFERS_ARB\0"
-+ "GL_MAX_DRAW_BUFFERS_ATI\0"
-+ "GL_MAX_ELEMENTS_INDICES\0"
-+ "GL_MAX_ELEMENTS_VERTICES\0"
-+ "GL_MAX_EVAL_ORDER\0"
-+ "GL_MAX_EXT\0"
-+ "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS\0"
-+ "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB\0"
-+ "GL_MAX_LIGHTS\0"
-+ "GL_MAX_LIST_NESTING\0"
-+ "GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB\0"
-+ "GL_MAX_MODELVIEW_STACK_DEPTH\0"
-+ "GL_MAX_NAME_STACK_DEPTH\0"
-+ "GL_MAX_PALETTE_MATRICES_ARB\0"
-+ "GL_MAX_PIXEL_MAP_TABLE\0"
-+ "GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB\0"
-+ "GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB\0"
-+ "GL_MAX_PROGRAM_ATTRIBS_ARB\0"
-+ "GL_MAX_PROGRAM_CALL_DEPTH_NV\0"
-+ "GL_MAX_PROGRAM_ENV_PARAMETERS_ARB\0"
-+ "GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV\0"
-+ "GL_MAX_PROGRAM_IF_DEPTH_NV\0"
-+ "GL_MAX_PROGRAM_INSTRUCTIONS_ARB\0"
-+ "GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB\0"
-+ "GL_MAX_PROGRAM_LOOP_COUNT_NV\0"
-+ "GL_MAX_PROGRAM_LOOP_DEPTH_NV\0"
-+ "GL_MAX_PROGRAM_MATRICES_ARB\0"
-+ "GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB\0"
-+ "GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB\0"
-+ "GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB\0"
-+ "GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB\0"
-+ "GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB\0"
-+ "GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB\0"
-+ "GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB\0"
-+ "GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB\0"
-+ "GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB\0"
-+ "GL_MAX_PROGRAM_PARAMETERS_ARB\0"
-+ "GL_MAX_PROGRAM_TEMPORARIES_ARB\0"
-+ "GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB\0"
-+ "GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB\0"
-+ "GL_MAX_PROJECTION_STACK_DEPTH\0"
-+ "GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB\0"
-+ "GL_MAX_RECTANGLE_TEXTURE_SIZE_NV\0"
-+ "GL_MAX_RENDERBUFFER_SIZE_EXT\0"
-+ "GL_MAX_SHININESS_NV\0"
-+ "GL_MAX_SPOT_EXPONENT_NV\0"
-+ "GL_MAX_TEXTURE_COORDS\0"
-+ "GL_MAX_TEXTURE_COORDS_ARB\0"
-+ "GL_MAX_TEXTURE_IMAGE_UNITS\0"
-+ "GL_MAX_TEXTURE_IMAGE_UNITS_ARB\0"
-+ "GL_MAX_TEXTURE_LOD_BIAS\0"
-+ "GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT\0"
-+ "GL_MAX_TEXTURE_SIZE\0"
-+ "GL_MAX_TEXTURE_STACK_DEPTH\0"
-+ "GL_MAX_TEXTURE_UNITS\0"
-+ "GL_MAX_TEXTURE_UNITS_ARB\0"
-+ "GL_MAX_TRACK_MATRICES_NV\0"
-+ "GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV\0"
-+ "GL_MAX_VARYING_FLOATS\0"
-+ "GL_MAX_VARYING_FLOATS_ARB\0"
-+ "GL_MAX_VERTEX_ATTRIBS\0"
-+ "GL_MAX_VERTEX_ATTRIBS_ARB\0"
-+ "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS\0"
-+ "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB\0"
-+ "GL_MAX_VERTEX_UNIFORM_COMPONENTS\0"
-+ "GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB\0"
-+ "GL_MAX_VERTEX_UNITS_ARB\0"
-+ "GL_MAX_VIEWPORT_DIMS\0"
-+ "GL_MIN\0"
-+ "GL_MINMAX\0"
-+ "GL_MINMAX_EXT\0"
-+ "GL_MINMAX_FORMAT\0"
-+ "GL_MINMAX_FORMAT_EXT\0"
-+ "GL_MINMAX_SINK\0"
-+ "GL_MINMAX_SINK_EXT\0"
-+ "GL_MIN_EXT\0"
-+ "GL_MIRRORED_REPEAT\0"
-+ "GL_MIRRORED_REPEAT_ARB\0"
-+ "GL_MIRRORED_REPEAT_IBM\0"
-+ "GL_MIRROR_CLAMP_ATI\0"
-+ "GL_MIRROR_CLAMP_EXT\0"
-+ "GL_MIRROR_CLAMP_TO_BORDER_EXT\0"
-+ "GL_MIRROR_CLAMP_TO_EDGE_ATI\0"
-+ "GL_MIRROR_CLAMP_TO_EDGE_EXT\0"
-+ "GL_MODELVIEW\0"
-+ "GL_MODELVIEW0_ARB\0"
-+ "GL_MODELVIEW10_ARB\0"
-+ "GL_MODELVIEW11_ARB\0"
-+ "GL_MODELVIEW12_ARB\0"
-+ "GL_MODELVIEW13_ARB\0"
-+ "GL_MODELVIEW14_ARB\0"
-+ "GL_MODELVIEW15_ARB\0"
-+ "GL_MODELVIEW16_ARB\0"
-+ "GL_MODELVIEW17_ARB\0"
-+ "GL_MODELVIEW18_ARB\0"
-+ "GL_MODELVIEW19_ARB\0"
-+ "GL_MODELVIEW1_ARB\0"
-+ "GL_MODELVIEW20_ARB\0"
-+ "GL_MODELVIEW21_ARB\0"
-+ "GL_MODELVIEW22_ARB\0"
-+ "GL_MODELVIEW23_ARB\0"
-+ "GL_MODELVIEW24_ARB\0"
-+ "GL_MODELVIEW25_ARB\0"
-+ "GL_MODELVIEW26_ARB\0"
-+ "GL_MODELVIEW27_ARB\0"
-+ "GL_MODELVIEW28_ARB\0"
-+ "GL_MODELVIEW29_ARB\0"
-+ "GL_MODELVIEW2_ARB\0"
-+ "GL_MODELVIEW30_ARB\0"
-+ "GL_MODELVIEW31_ARB\0"
-+ "GL_MODELVIEW3_ARB\0"
-+ "GL_MODELVIEW4_ARB\0"
-+ "GL_MODELVIEW5_ARB\0"
-+ "GL_MODELVIEW6_ARB\0"
-+ "GL_MODELVIEW7_ARB\0"
-+ "GL_MODELVIEW8_ARB\0"
-+ "GL_MODELVIEW9_ARB\0"
-+ "GL_MODELVIEW_MATRIX\0"
-+ "GL_MODELVIEW_PROJECTION_NV\0"
-+ "GL_MODELVIEW_STACK_DEPTH\0"
-+ "GL_MODULATE\0"
-+ "GL_MODULATE_ADD_ATI\0"
-+ "GL_MODULATE_SIGNED_ADD_ATI\0"
-+ "GL_MODULATE_SUBTRACT_ATI\0"
-+ "GL_MULT\0"
-+ "GL_MULTISAMPLE\0"
-+ "GL_MULTISAMPLE_3DFX\0"
-+ "GL_MULTISAMPLE_ARB\0"
-+ "GL_MULTISAMPLE_BIT\0"
-+ "GL_MULTISAMPLE_BIT_3DFX\0"
-+ "GL_MULTISAMPLE_BIT_ARB\0"
-+ "GL_MULTISAMPLE_FILTER_HINT_NV\0"
-+ "GL_N3F_V3F\0"
-+ "GL_NAME_STACK_DEPTH\0"
-+ "GL_NAND\0"
-+ "GL_NEAREST\0"
-+ "GL_NEAREST_CLIPMAP_LINEAR_SGIX\0"
-+ "GL_NEAREST_CLIPMAP_NEAREST_SGIX\0"
-+ "GL_NEAREST_MIPMAP_LINEAR\0"
-+ "GL_NEAREST_MIPMAP_NEAREST\0"
-+ "GL_NEVER\0"
-+ "GL_NICEST\0"
-+ "GL_NONE\0"
-+ "GL_NOOP\0"
-+ "GL_NOR\0"
-+ "GL_NORMALIZE\0"
-+ "GL_NORMAL_ARRAY\0"
-+ "GL_NORMAL_ARRAY_BUFFER_BINDING\0"
-+ "GL_NORMAL_ARRAY_BUFFER_BINDING_ARB\0"
-+ "GL_NORMAL_ARRAY_POINTER\0"
-+ "GL_NORMAL_ARRAY_STRIDE\0"
-+ "GL_NORMAL_ARRAY_TYPE\0"
-+ "GL_NORMAL_MAP\0"
-+ "GL_NORMAL_MAP_ARB\0"
-+ "GL_NORMAL_MAP_NV\0"
-+ "GL_NOTEQUAL\0"
-+ "GL_NO_ERROR\0"
-+ "GL_NUM_COMPRESSED_TEXTURE_FORMATS\0"
-+ "GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB\0"
-+ "GL_OBJECT_ACTIVE_ATTRIBUTES_ARB\0"
-+ "GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB\0"
-+ "GL_OBJECT_ACTIVE_UNIFORMS_ARB\0"
-+ "GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB\0"
-+ "GL_OBJECT_ATTACHED_OBJECTS_ARB\0"
-+ "GL_OBJECT_COMPILE_STATUS_ARB\0"
-+ "GL_OBJECT_DELETE_STATUS_ARB\0"
-+ "GL_OBJECT_INFO_LOG_LENGTH_ARB\0"
-+ "GL_OBJECT_LINEAR\0"
-+ "GL_OBJECT_LINK_STATUS_ARB\0"
-+ "GL_OBJECT_PLANE\0"
-+ "GL_OBJECT_SHADER_SOURCE_LENGTH_ARB\0"
-+ "GL_OBJECT_SUBTYPE_ARB\0"
-+ "GL_OBJECT_TYPE_ARB\0"
-+ "GL_OBJECT_VALIDATE_STATUS_ARB\0"
-+ "GL_OCCLUSION_TEST_HP\0"
-+ "GL_OCCLUSION_TEST_RESULT_HP\0"
-+ "GL_ONE\0"
-+ "GL_ONE_MINUS_CONSTANT_ALPHA\0"
-+ "GL_ONE_MINUS_CONSTANT_ALPHA_EXT\0"
-+ "GL_ONE_MINUS_CONSTANT_COLOR\0"
-+ "GL_ONE_MINUS_CONSTANT_COLOR_EXT\0"
-+ "GL_ONE_MINUS_DST_ALPHA\0"
-+ "GL_ONE_MINUS_DST_COLOR\0"
-+ "GL_ONE_MINUS_SRC_ALPHA\0"
-+ "GL_ONE_MINUS_SRC_COLOR\0"
-+ "GL_OPERAND0_ALPHA\0"
-+ "GL_OPERAND0_ALPHA_ARB\0"
-+ "GL_OPERAND0_ALPHA_EXT\0"
-+ "GL_OPERAND0_RGB\0"
-+ "GL_OPERAND0_RGB_ARB\0"
-+ "GL_OPERAND0_RGB_EXT\0"
-+ "GL_OPERAND1_ALPHA\0"
-+ "GL_OPERAND1_ALPHA_ARB\0"
-+ "GL_OPERAND1_ALPHA_EXT\0"
-+ "GL_OPERAND1_RGB\0"
-+ "GL_OPERAND1_RGB_ARB\0"
-+ "GL_OPERAND1_RGB_EXT\0"
-+ "GL_OPERAND2_ALPHA\0"
-+ "GL_OPERAND2_ALPHA_ARB\0"
-+ "GL_OPERAND2_ALPHA_EXT\0"
-+ "GL_OPERAND2_RGB\0"
-+ "GL_OPERAND2_RGB_ARB\0"
-+ "GL_OPERAND2_RGB_EXT\0"
-+ "GL_OPERAND3_ALPHA_NV\0"
-+ "GL_OPERAND3_RGB_NV\0"
-+ "GL_OR\0"
-+ "GL_ORDER\0"
-+ "GL_OR_INVERTED\0"
-+ "GL_OR_REVERSE\0"
-+ "GL_OUT_OF_MEMORY\0"
-+ "GL_PACK_ALIGNMENT\0"
-+ "GL_PACK_IMAGE_HEIGHT\0"
-+ "GL_PACK_INVERT_MESA\0"
-+ "GL_PACK_LSB_FIRST\0"
-+ "GL_PACK_ROW_LENGTH\0"
-+ "GL_PACK_SKIP_IMAGES\0"
-+ "GL_PACK_SKIP_PIXELS\0"
-+ "GL_PACK_SKIP_ROWS\0"
-+ "GL_PACK_SWAP_BYTES\0"
-+ "GL_PALETTE4_R5_G6_B5_OES\0"
-+ "GL_PALETTE4_RGB5_A1_OES\0"
-+ "GL_PALETTE4_RGB8_OES\0"
-+ "GL_PALETTE4_RGBA4_OES\0"
-+ "GL_PALETTE4_RGBA8_OES\0"
-+ "GL_PALETTE8_R5_G6_B5_OES\0"
-+ "GL_PALETTE8_RGB5_A1_OES\0"
-+ "GL_PALETTE8_RGB8_OES\0"
-+ "GL_PALETTE8_RGBA4_OES\0"
-+ "GL_PALETTE8_RGBA8_OES\0"
-+ "GL_PASS_THROUGH_TOKEN\0"
-+ "GL_PERSPECTIVE_CORRECTION_HINT\0"
-+ "GL_PIXEL_MAP_A_TO_A\0"
-+ "GL_PIXEL_MAP_A_TO_A_SIZE\0"
-+ "GL_PIXEL_MAP_B_TO_B\0"
-+ "GL_PIXEL_MAP_B_TO_B_SIZE\0"
-+ "GL_PIXEL_MAP_G_TO_G\0"
-+ "GL_PIXEL_MAP_G_TO_G_SIZE\0"
-+ "GL_PIXEL_MAP_I_TO_A\0"
-+ "GL_PIXEL_MAP_I_TO_A_SIZE\0"
-+ "GL_PIXEL_MAP_I_TO_B\0"
-+ "GL_PIXEL_MAP_I_TO_B_SIZE\0"
-+ "GL_PIXEL_MAP_I_TO_G\0"
-+ "GL_PIXEL_MAP_I_TO_G_SIZE\0"
-+ "GL_PIXEL_MAP_I_TO_I\0"
-+ "GL_PIXEL_MAP_I_TO_I_SIZE\0"
-+ "GL_PIXEL_MAP_I_TO_R\0"
-+ "GL_PIXEL_MAP_I_TO_R_SIZE\0"
-+ "GL_PIXEL_MAP_R_TO_R\0"
-+ "GL_PIXEL_MAP_R_TO_R_SIZE\0"
-+ "GL_PIXEL_MAP_S_TO_S\0"
-+ "GL_PIXEL_MAP_S_TO_S_SIZE\0"
-+ "GL_PIXEL_MODE_BIT\0"
-+ "GL_PIXEL_PACK_BUFFER_BINDING_EXT\0"
-+ "GL_PIXEL_PACK_BUFFER_EXT\0"
-+ "GL_PIXEL_UNPACK_BUFFER_BINDING_EXT\0"
-+ "GL_PIXEL_UNPACK_BUFFER_EXT\0"
-+ "GL_POINT\0"
-+ "GL_POINTS\0"
-+ "GL_POINT_BIT\0"
-+ "GL_POINT_DISTANCE_ATTENUATION\0"
-+ "GL_POINT_DISTANCE_ATTENUATION_ARB\0"
-+ "GL_POINT_DISTANCE_ATTENUATION_EXT\0"
-+ "GL_POINT_DISTANCE_ATTENUATION_SGIS\0"
-+ "GL_POINT_FADE_THRESHOLD_SIZE\0"
-+ "GL_POINT_FADE_THRESHOLD_SIZE_ARB\0"
-+ "GL_POINT_FADE_THRESHOLD_SIZE_EXT\0"
-+ "GL_POINT_FADE_THRESHOLD_SIZE_SGIS\0"
-+ "GL_POINT_SIZE\0"
-+ "GL_POINT_SIZE_GRANULARITY\0"
-+ "GL_POINT_SIZE_MAX\0"
-+ "GL_POINT_SIZE_MAX_ARB\0"
-+ "GL_POINT_SIZE_MAX_EXT\0"
-+ "GL_POINT_SIZE_MAX_SGIS\0"
-+ "GL_POINT_SIZE_MIN\0"
-+ "GL_POINT_SIZE_MIN_ARB\0"
-+ "GL_POINT_SIZE_MIN_EXT\0"
-+ "GL_POINT_SIZE_MIN_SGIS\0"
-+ "GL_POINT_SIZE_RANGE\0"
-+ "GL_POINT_SMOOTH\0"
-+ "GL_POINT_SMOOTH_HINT\0"
-+ "GL_POINT_SPRITE\0"
-+ "GL_POINT_SPRITE_ARB\0"
-+ "GL_POINT_SPRITE_COORD_ORIGIN\0"
-+ "GL_POINT_SPRITE_NV\0"
-+ "GL_POINT_SPRITE_R_MODE_NV\0"
-+ "GL_POINT_TOKEN\0"
-+ "GL_POLYGON\0"
-+ "GL_POLYGON_BIT\0"
-+ "GL_POLYGON_MODE\0"
-+ "GL_POLYGON_OFFSET_BIAS\0"
-+ "GL_POLYGON_OFFSET_FACTOR\0"
-+ "GL_POLYGON_OFFSET_FILL\0"
-+ "GL_POLYGON_OFFSET_LINE\0"
-+ "GL_POLYGON_OFFSET_POINT\0"
-+ "GL_POLYGON_OFFSET_UNITS\0"
-+ "GL_POLYGON_SMOOTH\0"
-+ "GL_POLYGON_SMOOTH_HINT\0"
-+ "GL_POLYGON_STIPPLE\0"
-+ "GL_POLYGON_STIPPLE_BIT\0"
-+ "GL_POLYGON_TOKEN\0"
-+ "GL_POSITION\0"
-+ "GL_POST_COLOR_MATRIX_ALPHA_BIAS\0"
-+ "GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI\0"
-+ "GL_POST_COLOR_MATRIX_ALPHA_SCALE\0"
-+ "GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI\0"
-+ "GL_POST_COLOR_MATRIX_BLUE_BIAS\0"
-+ "GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI\0"
-+ "GL_POST_COLOR_MATRIX_BLUE_SCALE\0"
-+ "GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI\0"
-+ "GL_POST_COLOR_MATRIX_COLOR_TABLE\0"
-+ "GL_POST_COLOR_MATRIX_GREEN_BIAS\0"
-+ "GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI\0"
-+ "GL_POST_COLOR_MATRIX_GREEN_SCALE\0"
-+ "GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI\0"
-+ "GL_POST_COLOR_MATRIX_RED_BIAS\0"
-+ "GL_POST_COLOR_MATRIX_RED_BIAS_SGI\0"
-+ "GL_POST_COLOR_MATRIX_RED_SCALE\0"
-+ "GL_POST_COLOR_MATRIX_RED_SCALE_SGI\0"
-+ "GL_POST_CONVOLUTION_ALPHA_BIAS\0"
-+ "GL_POST_CONVOLUTION_ALPHA_BIAS_EXT\0"
-+ "GL_POST_CONVOLUTION_ALPHA_SCALE\0"
-+ "GL_POST_CONVOLUTION_ALPHA_SCALE_EXT\0"
-+ "GL_POST_CONVOLUTION_BLUE_BIAS\0"
-+ "GL_POST_CONVOLUTION_BLUE_BIAS_EXT\0"
-+ "GL_POST_CONVOLUTION_BLUE_SCALE\0"
-+ "GL_POST_CONVOLUTION_BLUE_SCALE_EXT\0"
-+ "GL_POST_CONVOLUTION_COLOR_TABLE\0"
-+ "GL_POST_CONVOLUTION_GREEN_BIAS\0"
-+ "GL_POST_CONVOLUTION_GREEN_BIAS_EXT\0"
-+ "GL_POST_CONVOLUTION_GREEN_SCALE\0"
-+ "GL_POST_CONVOLUTION_GREEN_SCALE_EXT\0"
-+ "GL_POST_CONVOLUTION_RED_BIAS\0"
-+ "GL_POST_CONVOLUTION_RED_BIAS_EXT\0"
-+ "GL_POST_CONVOLUTION_RED_SCALE\0"
-+ "GL_POST_CONVOLUTION_RED_SCALE_EXT\0"
-+ "GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX\0"
-+ "GL_POST_TEXTURE_FILTER_BIAS_SGIX\0"
-+ "GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX\0"
-+ "GL_POST_TEXTURE_FILTER_SCALE_SGIX\0"
-+ "GL_PREVIOUS\0"
-+ "GL_PREVIOUS_ARB\0"
-+ "GL_PREVIOUS_EXT\0"
-+ "GL_PRIMARY_COLOR\0"
-+ "GL_PRIMARY_COLOR_ARB\0"
-+ "GL_PRIMARY_COLOR_EXT\0"
-+ "GL_PROGRAM_ADDRESS_REGISTERS_ARB\0"
-+ "GL_PROGRAM_ALU_INSTRUCTIONS_ARB\0"
-+ "GL_PROGRAM_ATTRIBS_ARB\0"
-+ "GL_PROGRAM_BINDING_ARB\0"
-+ "GL_PROGRAM_ERROR_POSITION_ARB\0"
-+ "GL_PROGRAM_ERROR_POSITION_NV\0"
-+ "GL_PROGRAM_ERROR_STRING_ARB\0"
-+ "GL_PROGRAM_FORMAT_ARB\0"
-+ "GL_PROGRAM_FORMAT_ASCII_ARB\0"
-+ "GL_PROGRAM_INSTRUCTIONS_ARB\0"
-+ "GL_PROGRAM_LENGTH_ARB\0"
-+ "GL_PROGRAM_LENGTH_NV\0"
-+ "GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB\0"
-+ "GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB\0"
-+ "GL_PROGRAM_NATIVE_ATTRIBS_ARB\0"
-+ "GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB\0"
-+ "GL_PROGRAM_NATIVE_PARAMETERS_ARB\0"
-+ "GL_PROGRAM_NATIVE_TEMPORARIES_ARB\0"
-+ "GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB\0"
-+ "GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB\0"
-+ "GL_PROGRAM_OBJECT_ARB\0"
-+ "GL_PROGRAM_PARAMETERS_ARB\0"
-+ "GL_PROGRAM_PARAMETER_NV\0"
-+ "GL_PROGRAM_RESIDENT_NV\0"
-+ "GL_PROGRAM_STRING_ARB\0"
-+ "GL_PROGRAM_STRING_NV\0"
-+ "GL_PROGRAM_TARGET_NV\0"
-+ "GL_PROGRAM_TEMPORARIES_ARB\0"
-+ "GL_PROGRAM_TEX_INDIRECTIONS_ARB\0"
-+ "GL_PROGRAM_TEX_INSTRUCTIONS_ARB\0"
-+ "GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB\0"
-+ "GL_PROJECTION\0"
-+ "GL_PROJECTION_MATRIX\0"
-+ "GL_PROJECTION_STACK_DEPTH\0"
-+ "GL_PROXY_COLOR_TABLE\0"
-+ "GL_PROXY_HISTOGRAM\0"
-+ "GL_PROXY_HISTOGRAM_EXT\0"
-+ "GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE\0"
-+ "GL_PROXY_POST_CONVOLUTION_COLOR_TABLE\0"
-+ "GL_PROXY_TEXTURE_1D\0"
-+ "GL_PROXY_TEXTURE_1D_ARRAY_EXT\0"
-+ "GL_PROXY_TEXTURE_1D_EXT\0"
-+ "GL_PROXY_TEXTURE_2D\0"
-+ "GL_PROXY_TEXTURE_2D_ARRAY_EXT\0"
-+ "GL_PROXY_TEXTURE_2D_EXT\0"
-+ "GL_PROXY_TEXTURE_3D\0"
-+ "GL_PROXY_TEXTURE_COLOR_TABLE_SGI\0"
-+ "GL_PROXY_TEXTURE_CUBE_MAP\0"
-+ "GL_PROXY_TEXTURE_CUBE_MAP_ARB\0"
-+ "GL_PROXY_TEXTURE_RECTANGLE_ARB\0"
-+ "GL_PROXY_TEXTURE_RECTANGLE_NV\0"
-+ "GL_Q\0"
-+ "GL_QUADRATIC_ATTENUATION\0"
-+ "GL_QUADS\0"
-+ "GL_QUAD_MESH_SUN\0"
-+ "GL_QUAD_STRIP\0"
-+ "GL_QUERY_COUNTER_BITS\0"
-+ "GL_QUERY_COUNTER_BITS_ARB\0"
-+ "GL_QUERY_RESULT\0"
-+ "GL_QUERY_RESULT_ARB\0"
-+ "GL_QUERY_RESULT_AVAILABLE\0"
-+ "GL_QUERY_RESULT_AVAILABLE_ARB\0"
-+ "GL_R\0"
-+ "GL_R3_G3_B2\0"
-+ "GL_RASTER_POSITION_UNCLIPPED_IBM\0"
-+ "GL_READ_BUFFER\0"
-+ "GL_READ_FRAMEBUFFER_BINDING_EXT\0"
-+ "GL_READ_FRAMEBUFFER_EXT\0"
-+ "GL_READ_ONLY\0"
-+ "GL_READ_ONLY_ARB\0"
-+ "GL_READ_WRITE\0"
-+ "GL_READ_WRITE_ARB\0"
-+ "GL_RED\0"
-+ "GL_REDUCE\0"
-+ "GL_REDUCE_EXT\0"
-+ "GL_RED_BIAS\0"
-+ "GL_RED_BITS\0"
-+ "GL_RED_SCALE\0"
-+ "GL_REFLECTION_MAP\0"
-+ "GL_REFLECTION_MAP_ARB\0"
-+ "GL_REFLECTION_MAP_NV\0"
-+ "GL_RENDER\0"
-+ "GL_RENDERBUFFER_BINDING_EXT\0"
-+ "GL_RENDERBUFFER_EXT\0"
-+ "GL_RENDERBUFFER_HEIGHT_EXT\0"
-+ "GL_RENDERBUFFER_INTERNAL_FORMAT_EXT\0"
-+ "GL_RENDERBUFFER_WIDTH_EXT\0"
-+ "GL_RENDERER\0"
-+ "GL_RENDER_MODE\0"
-+ "GL_REPEAT\0"
-+ "GL_REPLACE\0"
-+ "GL_REPLACE_EXT\0"
-+ "GL_REPLICATE_BORDER_HP\0"
-+ "GL_RESCALE_NORMAL\0"
-+ "GL_RESCALE_NORMAL_EXT\0"
-+ "GL_RETURN\0"
-+ "GL_RGB\0"
-+ "GL_RGB10\0"
-+ "GL_RGB10_A2\0"
-+ "GL_RGB10_A2_EXT\0"
-+ "GL_RGB10_EXT\0"
-+ "GL_RGB12\0"
-+ "GL_RGB12_EXT\0"
-+ "GL_RGB16\0"
-+ "GL_RGB16_EXT\0"
-+ "GL_RGB2_EXT\0"
-+ "GL_RGB4\0"
-+ "GL_RGB4_EXT\0"
-+ "GL_RGB4_S3TC\0"
-+ "GL_RGB5\0"
-+ "GL_RGB5_A1\0"
-+ "GL_RGB5_A1_EXT\0"
-+ "GL_RGB5_EXT\0"
-+ "GL_RGB8\0"
-+ "GL_RGB8_EXT\0"
-+ "GL_RGBA\0"
-+ "GL_RGBA12\0"
-+ "GL_RGBA12_EXT\0"
-+ "GL_RGBA16\0"
-+ "GL_RGBA16_EXT\0"
-+ "GL_RGBA2\0"
-+ "GL_RGBA2_EXT\0"
-+ "GL_RGBA4\0"
-+ "GL_RGBA4_DXT5_S3TC\0"
-+ "GL_RGBA4_EXT\0"
-+ "GL_RGBA4_S3TC\0"
-+ "GL_RGBA8\0"
-+ "GL_RGBA8_EXT\0"
-+ "GL_RGBA_DXT5_S3TC\0"
-+ "GL_RGBA_MODE\0"
-+ "GL_RGBA_S3TC\0"
-+ "GL_RGB_S3TC\0"
-+ "GL_RGB_SCALE\0"
-+ "GL_RGB_SCALE_ARB\0"
-+ "GL_RGB_SCALE_EXT\0"
-+ "GL_RIGHT\0"
-+ "GL_S\0"
-+ "GL_SAMPLER_1D\0"
-+ "GL_SAMPLER_1D_SHADOW\0"
-+ "GL_SAMPLER_2D\0"
-+ "GL_SAMPLER_2D_SHADOW\0"
-+ "GL_SAMPLER_3D\0"
-+ "GL_SAMPLER_CUBE\0"
-+ "GL_SAMPLES\0"
-+ "GL_SAMPLES_3DFX\0"
-+ "GL_SAMPLES_ARB\0"
-+ "GL_SAMPLES_PASSED\0"
-+ "GL_SAMPLES_PASSED_ARB\0"
-+ "GL_SAMPLE_ALPHA_TO_COVERAGE\0"
-+ "GL_SAMPLE_ALPHA_TO_COVERAGE_ARB\0"
-+ "GL_SAMPLE_ALPHA_TO_ONE\0"
-+ "GL_SAMPLE_ALPHA_TO_ONE_ARB\0"
-+ "GL_SAMPLE_BUFFERS\0"
-+ "GL_SAMPLE_BUFFERS_3DFX\0"
-+ "GL_SAMPLE_BUFFERS_ARB\0"
-+ "GL_SAMPLE_COVERAGE\0"
-+ "GL_SAMPLE_COVERAGE_ARB\0"
-+ "GL_SAMPLE_COVERAGE_INVERT\0"
-+ "GL_SAMPLE_COVERAGE_INVERT_ARB\0"
-+ "GL_SAMPLE_COVERAGE_VALUE\0"
-+ "GL_SAMPLE_COVERAGE_VALUE_ARB\0"
-+ "GL_SCISSOR_BIT\0"
-+ "GL_SCISSOR_BOX\0"
-+ "GL_SCISSOR_TEST\0"
-+ "GL_SECONDARY_COLOR_ARRAY\0"
-+ "GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING\0"
-+ "GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB\0"
-+ "GL_SECONDARY_COLOR_ARRAY_POINTER\0"
-+ "GL_SECONDARY_COLOR_ARRAY_SIZE\0"
-+ "GL_SECONDARY_COLOR_ARRAY_STRIDE\0"
-+ "GL_SECONDARY_COLOR_ARRAY_TYPE\0"
-+ "GL_SELECT\0"
-+ "GL_SELECTION_BUFFER_POINTER\0"
-+ "GL_SELECTION_BUFFER_SIZE\0"
-+ "GL_SEPARABLE_2D\0"
-+ "GL_SEPARATE_SPECULAR_COLOR\0"
-+ "GL_SEPARATE_SPECULAR_COLOR_EXT\0"
-+ "GL_SET\0"
-+ "GL_SHADER_OBJECT_ARB\0"
-+ "GL_SHADER_SOURCE_LENGTH\0"
-+ "GL_SHADER_TYPE\0"
-+ "GL_SHADE_MODEL\0"
-+ "GL_SHADING_LANGUAGE_VERSION\0"
-+ "GL_SHADOW_AMBIENT_SGIX\0"
-+ "GL_SHARED_TEXTURE_PALETTE_EXT\0"
-+ "GL_SHININESS\0"
-+ "GL_SHORT\0"
-+ "GL_SINGLE_COLOR\0"
-+ "GL_SINGLE_COLOR_EXT\0"
-+ "GL_SLICE_ACCUM_SUN\0"
-+ "GL_SMOOTH\0"
-+ "GL_SMOOTH_LINE_WIDTH_GRANULARITY\0"
-+ "GL_SMOOTH_LINE_WIDTH_RANGE\0"
-+ "GL_SMOOTH_POINT_SIZE_GRANULARITY\0"
-+ "GL_SMOOTH_POINT_SIZE_RANGE\0"
-+ "GL_SOURCE0_ALPHA\0"
-+ "GL_SOURCE0_ALPHA_ARB\0"
-+ "GL_SOURCE0_ALPHA_EXT\0"
-+ "GL_SOURCE0_RGB\0"
-+ "GL_SOURCE0_RGB_ARB\0"
-+ "GL_SOURCE0_RGB_EXT\0"
-+ "GL_SOURCE1_ALPHA\0"
-+ "GL_SOURCE1_ALPHA_ARB\0"
-+ "GL_SOURCE1_ALPHA_EXT\0"
-+ "GL_SOURCE1_RGB\0"
-+ "GL_SOURCE1_RGB_ARB\0"
-+ "GL_SOURCE1_RGB_EXT\0"
-+ "GL_SOURCE2_ALPHA\0"
-+ "GL_SOURCE2_ALPHA_ARB\0"
-+ "GL_SOURCE2_ALPHA_EXT\0"
-+ "GL_SOURCE2_RGB\0"
-+ "GL_SOURCE2_RGB_ARB\0"
-+ "GL_SOURCE2_RGB_EXT\0"
-+ "GL_SOURCE3_ALPHA_NV\0"
-+ "GL_SOURCE3_RGB_NV\0"
-+ "GL_SPECULAR\0"
-+ "GL_SPHERE_MAP\0"
-+ "GL_SPOT_CUTOFF\0"
-+ "GL_SPOT_DIRECTION\0"
-+ "GL_SPOT_EXPONENT\0"
-+ "GL_SRC0_ALPHA\0"
-+ "GL_SRC0_RGB\0"
-+ "GL_SRC1_ALPHA\0"
-+ "GL_SRC1_RGB\0"
-+ "GL_SRC2_ALPHA\0"
-+ "GL_SRC2_RGB\0"
-+ "GL_SRC_ALPHA\0"
-+ "GL_SRC_ALPHA_SATURATE\0"
-+ "GL_SRC_COLOR\0"
-+ "GL_STACK_OVERFLOW\0"
-+ "GL_STACK_UNDERFLOW\0"
-+ "GL_STATIC_COPY\0"
-+ "GL_STATIC_COPY_ARB\0"
-+ "GL_STATIC_DRAW\0"
-+ "GL_STATIC_DRAW_ARB\0"
-+ "GL_STATIC_READ\0"
-+ "GL_STATIC_READ_ARB\0"
-+ "GL_STENCIL\0"
-+ "GL_STENCIL_ATTACHMENT_EXT\0"
-+ "GL_STENCIL_BACK_FAIL\0"
-+ "GL_STENCIL_BACK_FUNC\0"
-+ "GL_STENCIL_BACK_PASS_DEPTH_FAIL\0"
-+ "GL_STENCIL_BACK_PASS_DEPTH_PASS\0"
-+ "GL_STENCIL_BACK_REF\0"
-+ "GL_STENCIL_BACK_VALUE_MASK\0"
-+ "GL_STENCIL_BACK_WRITEMASK\0"
-+ "GL_STENCIL_BITS\0"
-+ "GL_STENCIL_BUFFER_BIT\0"
-+ "GL_STENCIL_CLEAR_VALUE\0"
-+ "GL_STENCIL_FAIL\0"
-+ "GL_STENCIL_FUNC\0"
-+ "GL_STENCIL_INDEX\0"
-+ "GL_STENCIL_INDEX16_EXT\0"
-+ "GL_STENCIL_INDEX1_EXT\0"
-+ "GL_STENCIL_INDEX4_EXT\0"
-+ "GL_STENCIL_INDEX8_EXT\0"
-+ "GL_STENCIL_INDEX_EXT\0"
-+ "GL_STENCIL_PASS_DEPTH_FAIL\0"
-+ "GL_STENCIL_PASS_DEPTH_PASS\0"
-+ "GL_STENCIL_REF\0"
-+ "GL_STENCIL_TEST\0"
-+ "GL_STENCIL_TEST_TWO_SIDE_EXT\0"
-+ "GL_STENCIL_VALUE_MASK\0"
-+ "GL_STENCIL_WRITEMASK\0"
-+ "GL_STEREO\0"
-+ "GL_STREAM_COPY\0"
-+ "GL_STREAM_COPY_ARB\0"
-+ "GL_STREAM_DRAW\0"
-+ "GL_STREAM_DRAW_ARB\0"
-+ "GL_STREAM_READ\0"
-+ "GL_STREAM_READ_ARB\0"
-+ "GL_SUBPIXEL_BITS\0"
-+ "GL_SUBTRACT\0"
-+ "GL_SUBTRACT_ARB\0"
-+ "GL_T\0"
-+ "GL_T2F_C3F_V3F\0"
-+ "GL_T2F_C4F_N3F_V3F\0"
-+ "GL_T2F_C4UB_V3F\0"
-+ "GL_T2F_N3F_V3F\0"
-+ "GL_T2F_V3F\0"
-+ "GL_T4F_C4F_N3F_V4F\0"
-+ "GL_T4F_V4F\0"
-+ "GL_TABLE_TOO_LARGE_EXT\0"
-+ "GL_TEXTURE\0"
-+ "GL_TEXTURE0\0"
-+ "GL_TEXTURE0_ARB\0"
-+ "GL_TEXTURE1\0"
-+ "GL_TEXTURE10\0"
-+ "GL_TEXTURE10_ARB\0"
-+ "GL_TEXTURE11\0"
-+ "GL_TEXTURE11_ARB\0"
-+ "GL_TEXTURE12\0"
-+ "GL_TEXTURE12_ARB\0"
-+ "GL_TEXTURE13\0"
-+ "GL_TEXTURE13_ARB\0"
-+ "GL_TEXTURE14\0"
-+ "GL_TEXTURE14_ARB\0"
-+ "GL_TEXTURE15\0"
-+ "GL_TEXTURE15_ARB\0"
-+ "GL_TEXTURE16\0"
-+ "GL_TEXTURE16_ARB\0"
-+ "GL_TEXTURE17\0"
-+ "GL_TEXTURE17_ARB\0"
-+ "GL_TEXTURE18\0"
-+ "GL_TEXTURE18_ARB\0"
-+ "GL_TEXTURE19\0"
-+ "GL_TEXTURE19_ARB\0"
-+ "GL_TEXTURE1_ARB\0"
-+ "GL_TEXTURE2\0"
-+ "GL_TEXTURE20\0"
-+ "GL_TEXTURE20_ARB\0"
-+ "GL_TEXTURE21\0"
-+ "GL_TEXTURE21_ARB\0"
-+ "GL_TEXTURE22\0"
-+ "GL_TEXTURE22_ARB\0"
-+ "GL_TEXTURE23\0"
-+ "GL_TEXTURE23_ARB\0"
-+ "GL_TEXTURE24\0"
-+ "GL_TEXTURE24_ARB\0"
-+ "GL_TEXTURE25\0"
-+ "GL_TEXTURE25_ARB\0"
-+ "GL_TEXTURE26\0"
-+ "GL_TEXTURE26_ARB\0"
-+ "GL_TEXTURE27\0"
-+ "GL_TEXTURE27_ARB\0"
-+ "GL_TEXTURE28\0"
-+ "GL_TEXTURE28_ARB\0"
-+ "GL_TEXTURE29\0"
-+ "GL_TEXTURE29_ARB\0"
-+ "GL_TEXTURE2_ARB\0"
-+ "GL_TEXTURE3\0"
-+ "GL_TEXTURE30\0"
-+ "GL_TEXTURE30_ARB\0"
-+ "GL_TEXTURE31\0"
-+ "GL_TEXTURE31_ARB\0"
-+ "GL_TEXTURE3_ARB\0"
-+ "GL_TEXTURE4\0"
-+ "GL_TEXTURE4_ARB\0"
-+ "GL_TEXTURE5\0"
-+ "GL_TEXTURE5_ARB\0"
-+ "GL_TEXTURE6\0"
-+ "GL_TEXTURE6_ARB\0"
-+ "GL_TEXTURE7\0"
-+ "GL_TEXTURE7_ARB\0"
-+ "GL_TEXTURE8\0"
-+ "GL_TEXTURE8_ARB\0"
-+ "GL_TEXTURE9\0"
-+ "GL_TEXTURE9_ARB\0"
-+ "GL_TEXTURE_1D\0"
-+ "GL_TEXTURE_1D_ARRAY_EXT\0"
-+ "GL_TEXTURE_2D\0"
-+ "GL_TEXTURE_2D_ARRAY_EXT\0"
-+ "GL_TEXTURE_3D\0"
-+ "GL_TEXTURE_ALPHA_SIZE\0"
-+ "GL_TEXTURE_ALPHA_SIZE_EXT\0"
-+ "GL_TEXTURE_BASE_LEVEL\0"
-+ "GL_TEXTURE_BINDING_1D\0"
-+ "GL_TEXTURE_BINDING_1D_ARRAY_EXT\0"
-+ "GL_TEXTURE_BINDING_2D\0"
-+ "GL_TEXTURE_BINDING_2D_ARRAY_EXT\0"
-+ "GL_TEXTURE_BINDING_3D\0"
-+ "GL_TEXTURE_BINDING_CUBE_MAP\0"
-+ "GL_TEXTURE_BINDING_CUBE_MAP_ARB\0"
-+ "GL_TEXTURE_BINDING_RECTANGLE_ARB\0"
-+ "GL_TEXTURE_BINDING_RECTANGLE_NV\0"
-+ "GL_TEXTURE_BIT\0"
-+ "GL_TEXTURE_BLUE_SIZE\0"
-+ "GL_TEXTURE_BLUE_SIZE_EXT\0"
-+ "GL_TEXTURE_BORDER\0"
-+ "GL_TEXTURE_BORDER_COLOR\0"
-+ "GL_TEXTURE_CLIPMAP_CENTER_SGIX\0"
-+ "GL_TEXTURE_CLIPMAP_DEPTH_SGIX\0"
-+ "GL_TEXTURE_CLIPMAP_FRAME_SGIX\0"
-+ "GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX\0"
-+ "GL_TEXTURE_CLIPMAP_OFFSET_SGIX\0"
-+ "GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX\0"
-+ "GL_TEXTURE_COLOR_TABLE_SGI\0"
-+ "GL_TEXTURE_COLOR_WRITEMASK_SGIS\0"
-+ "GL_TEXTURE_COMPARE_FAIL_VALUE_ARB\0"
-+ "GL_TEXTURE_COMPARE_FUNC\0"
-+ "GL_TEXTURE_COMPARE_FUNC_ARB\0"
-+ "GL_TEXTURE_COMPARE_MODE\0"
-+ "GL_TEXTURE_COMPARE_MODE_ARB\0"
-+ "GL_TEXTURE_COMPARE_OPERATOR_SGIX\0"
-+ "GL_TEXTURE_COMPARE_SGIX\0"
-+ "GL_TEXTURE_COMPONENTS\0"
-+ "GL_TEXTURE_COMPRESSED\0"
-+ "GL_TEXTURE_COMPRESSED_ARB\0"
-+ "GL_TEXTURE_COMPRESSED_FORMATS_ARB\0"
-+ "GL_TEXTURE_COMPRESSED_IMAGE_SIZE\0"
-+ "GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB\0"
-+ "GL_TEXTURE_COMPRESSION_HINT\0"
-+ "GL_TEXTURE_COMPRESSION_HINT_ARB\0"
-+ "GL_TEXTURE_COORD_ARRAY\0"
-+ "GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING\0"
-+ "GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB\0"
-+ "GL_TEXTURE_COORD_ARRAY_POINTER\0"
-+ "GL_TEXTURE_COORD_ARRAY_SIZE\0"
-+ "GL_TEXTURE_COORD_ARRAY_STRIDE\0"
-+ "GL_TEXTURE_COORD_ARRAY_TYPE\0"
-+ "GL_TEXTURE_CUBE_MAP\0"
-+ "GL_TEXTURE_CUBE_MAP_ARB\0"
-+ "GL_TEXTURE_CUBE_MAP_NEGATIVE_X\0"
-+ "GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB\0"
-+ "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y\0"
-+ "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB\0"
-+ "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z\0"
-+ "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB\0"
-+ "GL_TEXTURE_CUBE_MAP_POSITIVE_X\0"
-+ "GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB\0"
-+ "GL_TEXTURE_CUBE_MAP_POSITIVE_Y\0"
-+ "GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB\0"
-+ "GL_TEXTURE_CUBE_MAP_POSITIVE_Z\0"
-+ "GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB\0"
-+ "GL_TEXTURE_DEPTH\0"
-+ "GL_TEXTURE_DEPTH_SIZE\0"
-+ "GL_TEXTURE_DEPTH_SIZE_ARB\0"
-+ "GL_TEXTURE_ENV\0"
-+ "GL_TEXTURE_ENV_COLOR\0"
-+ "GL_TEXTURE_ENV_MODE\0"
-+ "GL_TEXTURE_FILTER_CONTROL\0"
-+ "GL_TEXTURE_GEN_MODE\0"
-+ "GL_TEXTURE_GEN_Q\0"
-+ "GL_TEXTURE_GEN_R\0"
-+ "GL_TEXTURE_GEN_S\0"
-+ "GL_TEXTURE_GEN_T\0"
-+ "GL_TEXTURE_GEQUAL_R_SGIX\0"
-+ "GL_TEXTURE_GREEN_SIZE\0"
-+ "GL_TEXTURE_GREEN_SIZE_EXT\0"
-+ "GL_TEXTURE_HEIGHT\0"
-+ "GL_TEXTURE_INDEX_SIZE_EXT\0"
-+ "GL_TEXTURE_INTENSITY_SIZE\0"
-+ "GL_TEXTURE_INTENSITY_SIZE_EXT\0"
-+ "GL_TEXTURE_INTERNAL_FORMAT\0"
-+ "GL_TEXTURE_LEQUAL_R_SGIX\0"
-+ "GL_TEXTURE_LOD_BIAS\0"
-+ "GL_TEXTURE_LOD_BIAS_EXT\0"
-+ "GL_TEXTURE_LOD_BIAS_R_SGIX\0"
-+ "GL_TEXTURE_LOD_BIAS_S_SGIX\0"
-+ "GL_TEXTURE_LOD_BIAS_T_SGIX\0"
-+ "GL_TEXTURE_LUMINANCE_SIZE\0"
-+ "GL_TEXTURE_LUMINANCE_SIZE_EXT\0"
-+ "GL_TEXTURE_MAG_FILTER\0"
-+ "GL_TEXTURE_MATRIX\0"
-+ "GL_TEXTURE_MAX_ANISOTROPY_EXT\0"
-+ "GL_TEXTURE_MAX_CLAMP_R_SGIX\0"
-+ "GL_TEXTURE_MAX_CLAMP_S_SGIX\0"
-+ "GL_TEXTURE_MAX_CLAMP_T_SGIX\0"
-+ "GL_TEXTURE_MAX_LEVEL\0"
-+ "GL_TEXTURE_MAX_LOD\0"
-+ "GL_TEXTURE_MIN_FILTER\0"
-+ "GL_TEXTURE_MIN_LOD\0"
-+ "GL_TEXTURE_PRIORITY\0"
-+ "GL_TEXTURE_RECTANGLE_ARB\0"
-+ "GL_TEXTURE_RECTANGLE_NV\0"
-+ "GL_TEXTURE_RED_SIZE\0"
-+ "GL_TEXTURE_RED_SIZE_EXT\0"
-+ "GL_TEXTURE_RESIDENT\0"
-+ "GL_TEXTURE_STACK_DEPTH\0"
-+ "GL_TEXTURE_TOO_LARGE_EXT\0"
-+ "GL_TEXTURE_UNSIGNED_REMAP_MODE_NV\0"
-+ "GL_TEXTURE_WIDTH\0"
-+ "GL_TEXTURE_WRAP_R\0"
-+ "GL_TEXTURE_WRAP_S\0"
-+ "GL_TEXTURE_WRAP_T\0"
-+ "GL_TIME_ELAPSED_EXT\0"
-+ "GL_TRACK_MATRIX_NV\0"
-+ "GL_TRACK_MATRIX_TRANSFORM_NV\0"
-+ "GL_TRANSFORM_BIT\0"
-+ "GL_TRANSPOSE_COLOR_MATRIX\0"
-+ "GL_TRANSPOSE_COLOR_MATRIX_ARB\0"
-+ "GL_TRANSPOSE_CURRENT_MATRIX_ARB\0"
-+ "GL_TRANSPOSE_MODELVIEW_MATRIX\0"
-+ "GL_TRANSPOSE_MODELVIEW_MATRIX_ARB\0"
-+ "GL_TRANSPOSE_NV\0"
-+ "GL_TRANSPOSE_PROJECTION_MATRIX\0"
-+ "GL_TRANSPOSE_PROJECTION_MATRIX_ARB\0"
-+ "GL_TRANSPOSE_TEXTURE_MATRIX\0"
-+ "GL_TRANSPOSE_TEXTURE_MATRIX_ARB\0"
-+ "GL_TRIANGLES\0"
-+ "GL_TRIANGLE_FAN\0"
-+ "GL_TRIANGLE_MESH_SUN\0"
-+ "GL_TRIANGLE_STRIP\0"
-+ "GL_TRUE\0"
-+ "GL_UNPACK_ALIGNMENT\0"
-+ "GL_UNPACK_IMAGE_HEIGHT\0"
-+ "GL_UNPACK_LSB_FIRST\0"
-+ "GL_UNPACK_ROW_LENGTH\0"
-+ "GL_UNPACK_SKIP_IMAGES\0"
-+ "GL_UNPACK_SKIP_PIXELS\0"
-+ "GL_UNPACK_SKIP_ROWS\0"
-+ "GL_UNPACK_SWAP_BYTES\0"
-+ "GL_UNSIGNED_BYTE\0"
-+ "GL_UNSIGNED_BYTE_2_3_3_REV\0"
-+ "GL_UNSIGNED_BYTE_3_3_2\0"
-+ "GL_UNSIGNED_INT\0"
-+ "GL_UNSIGNED_INT_10_10_10_2\0"
-+ "GL_UNSIGNED_INT_24_8_NV\0"
-+ "GL_UNSIGNED_INT_2_10_10_10_REV\0"
-+ "GL_UNSIGNED_INT_8_8_8_8\0"
-+ "GL_UNSIGNED_INT_8_8_8_8_REV\0"
-+ "GL_UNSIGNED_SHORT\0"
-+ "GL_UNSIGNED_SHORT_1_5_5_5_REV\0"
-+ "GL_UNSIGNED_SHORT_4_4_4_4\0"
-+ "GL_UNSIGNED_SHORT_4_4_4_4_REV\0"
-+ "GL_UNSIGNED_SHORT_5_5_5_1\0"
-+ "GL_UNSIGNED_SHORT_5_6_5\0"
-+ "GL_UNSIGNED_SHORT_5_6_5_REV\0"
-+ "GL_UNSIGNED_SHORT_8_8_APPLE\0"
-+ "GL_UNSIGNED_SHORT_8_8_MESA\0"
-+ "GL_UNSIGNED_SHORT_8_8_REV_APPLE\0"
-+ "GL_UNSIGNED_SHORT_8_8_REV_MESA\0"
-+ "GL_UPPER_LEFT\0"
-+ "GL_V2F\0"
-+ "GL_V3F\0"
-+ "GL_VALIDATE_STATUS\0"
-+ "GL_VENDOR\0"
-+ "GL_VERSION\0"
-+ "GL_VERTEX_ARRAY\0"
-+ "GL_VERTEX_ARRAY_BINDING_APPLE\0"
-+ "GL_VERTEX_ARRAY_BUFFER_BINDING\0"
-+ "GL_VERTEX_ARRAY_BUFFER_BINDING_ARB\0"
-+ "GL_VERTEX_ARRAY_POINTER\0"
-+ "GL_VERTEX_ARRAY_SIZE\0"
-+ "GL_VERTEX_ARRAY_STRIDE\0"
-+ "GL_VERTEX_ARRAY_TYPE\0"
-+ "GL_VERTEX_ATTRIB_ARRAY0_NV\0"
-+ "GL_VERTEX_ATTRIB_ARRAY10_NV\0"
-+ "GL_VERTEX_ATTRIB_ARRAY11_NV\0"
-+ "GL_VERTEX_ATTRIB_ARRAY12_NV\0"
-+ "GL_VERTEX_ATTRIB_ARRAY13_NV\0"
-+ "GL_VERTEX_ATTRIB_ARRAY14_NV\0"
-+ "GL_VERTEX_ATTRIB_ARRAY15_NV\0"
-+ "GL_VERTEX_ATTRIB_ARRAY1_NV\0"
-+ "GL_VERTEX_ATTRIB_ARRAY2_NV\0"
-+ "GL_VERTEX_ATTRIB_ARRAY3_NV\0"
-+ "GL_VERTEX_ATTRIB_ARRAY4_NV\0"
-+ "GL_VERTEX_ATTRIB_ARRAY5_NV\0"
-+ "GL_VERTEX_ATTRIB_ARRAY6_NV\0"
-+ "GL_VERTEX_ATTRIB_ARRAY7_NV\0"
-+ "GL_VERTEX_ATTRIB_ARRAY8_NV\0"
-+ "GL_VERTEX_ATTRIB_ARRAY9_NV\0"
-+ "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING\0"
-+ "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB\0"
-+ "GL_VERTEX_ATTRIB_ARRAY_ENABLED\0"
-+ "GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB\0"
-+ "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED\0"
-+ "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB\0"
-+ "GL_VERTEX_ATTRIB_ARRAY_POINTER\0"
-+ "GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB\0"
-+ "GL_VERTEX_ATTRIB_ARRAY_SIZE\0"
-+ "GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB\0"
-+ "GL_VERTEX_ATTRIB_ARRAY_STRIDE\0"
-+ "GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB\0"
-+ "GL_VERTEX_ATTRIB_ARRAY_TYPE\0"
-+ "GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB\0"
-+ "GL_VERTEX_BLEND_ARB\0"
-+ "GL_VERTEX_PROGRAM_ARB\0"
-+ "GL_VERTEX_PROGRAM_BINDING_NV\0"
-+ "GL_VERTEX_PROGRAM_NV\0"
-+ "GL_VERTEX_PROGRAM_POINT_SIZE\0"
-+ "GL_VERTEX_PROGRAM_POINT_SIZE_ARB\0"
-+ "GL_VERTEX_PROGRAM_POINT_SIZE_NV\0"
-+ "GL_VERTEX_PROGRAM_TWO_SIDE\0"
-+ "GL_VERTEX_PROGRAM_TWO_SIDE_ARB\0"
-+ "GL_VERTEX_PROGRAM_TWO_SIDE_NV\0"
-+ "GL_VERTEX_SHADER\0"
-+ "GL_VERTEX_SHADER_ARB\0"
-+ "GL_VERTEX_STATE_PROGRAM_NV\0"
-+ "GL_VIEWPORT\0"
-+ "GL_VIEWPORT_BIT\0"
-+ "GL_WEIGHT_ARRAY_ARB\0"
-+ "GL_WEIGHT_ARRAY_BUFFER_BINDING\0"
-+ "GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB\0"
-+ "GL_WEIGHT_ARRAY_POINTER_ARB\0"
-+ "GL_WEIGHT_ARRAY_SIZE_ARB\0"
-+ "GL_WEIGHT_ARRAY_STRIDE_ARB\0"
-+ "GL_WEIGHT_ARRAY_TYPE_ARB\0"
-+ "GL_WEIGHT_SUM_UNITY_ARB\0"
-+ "GL_WRAP_BORDER_SUN\0"
-+ "GL_WRITE_ONLY\0"
-+ "GL_WRITE_ONLY_ARB\0"
-+ "GL_XOR\0"
-+ "GL_YCBCR_422_APPLE\0"
-+ "GL_YCBCR_MESA\0"
-+ "GL_ZERO\0"
-+ "GL_ZOOM_X\0"
-+ "GL_ZOOM_Y\0"
-+ ;
-+
-+static const enum_elt all_enums[1746] =
-+{
-+ { 0, 0x00000600 }, /* GL_2D */
-+ { 6, 0x00001407 }, /* GL_2_BYTES */
-+ { 17, 0x00000601 }, /* GL_3D */
-+ { 23, 0x00000602 }, /* GL_3D_COLOR */
-+ { 35, 0x00000603 }, /* GL_3D_COLOR_TEXTURE */
-+ { 55, 0x00001408 }, /* GL_3_BYTES */
-+ { 66, 0x00000604 }, /* GL_4D_COLOR_TEXTURE */
-+ { 86, 0x00001409 }, /* GL_4_BYTES */
-+ { 97, 0x00000100 }, /* GL_ACCUM */
-+ { 106, 0x00000D5B }, /* GL_ACCUM_ALPHA_BITS */
-+ { 126, 0x00000D5A }, /* GL_ACCUM_BLUE_BITS */
-+ { 145, 0x00000200 }, /* GL_ACCUM_BUFFER_BIT */
-+ { 165, 0x00000B80 }, /* GL_ACCUM_CLEAR_VALUE */
-+ { 186, 0x00000D59 }, /* GL_ACCUM_GREEN_BITS */
-+ { 206, 0x00000D58 }, /* GL_ACCUM_RED_BITS */
-+ { 224, 0x00008B89 }, /* GL_ACTIVE_ATTRIBUTES */
-+ { 245, 0x00008B8A }, /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */
-+ { 276, 0x00008911 }, /* GL_ACTIVE_STENCIL_FACE_EXT */
-+ { 303, 0x000084E0 }, /* GL_ACTIVE_TEXTURE */
-+ { 321, 0x000084E0 }, /* GL_ACTIVE_TEXTURE_ARB */
-+ { 343, 0x00008B86 }, /* GL_ACTIVE_UNIFORMS */
-+ { 362, 0x00008B87 }, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */
-+ { 391, 0x000086A5 }, /* GL_ACTIVE_VERTEX_UNITS_ARB */
-+ { 418, 0x00000104 }, /* GL_ADD */
-+ { 425, 0x00008574 }, /* GL_ADD_SIGNED */
-+ { 439, 0x00008574 }, /* GL_ADD_SIGNED_ARB */
-+ { 457, 0x00008574 }, /* GL_ADD_SIGNED_EXT */
-+ { 475, 0x0000846E }, /* GL_ALIASED_LINE_WIDTH_RANGE */
-+ { 503, 0x0000846D }, /* GL_ALIASED_POINT_SIZE_RANGE */
-+ { 531, 0x000FFFFF }, /* GL_ALL_ATTRIB_BITS */
-+ { 550, 0xFFFFFFFF }, /* GL_ALL_CLIENT_ATTRIB_BITS */
-+ { 576, 0x00001906 }, /* GL_ALPHA */
-+ { 585, 0x0000803D }, /* GL_ALPHA12 */
-+ { 596, 0x0000803D }, /* GL_ALPHA12_EXT */
-+ { 611, 0x0000803E }, /* GL_ALPHA16 */
-+ { 622, 0x0000803E }, /* GL_ALPHA16_EXT */
-+ { 637, 0x0000803B }, /* GL_ALPHA4 */
-+ { 647, 0x0000803B }, /* GL_ALPHA4_EXT */
-+ { 661, 0x0000803C }, /* GL_ALPHA8 */
-+ { 671, 0x0000803C }, /* GL_ALPHA8_EXT */
-+ { 685, 0x00000D1D }, /* GL_ALPHA_BIAS */
-+ { 699, 0x00000D55 }, /* GL_ALPHA_BITS */
-+ { 713, 0x00000D1C }, /* GL_ALPHA_SCALE */
-+ { 728, 0x00000BC0 }, /* GL_ALPHA_TEST */
-+ { 742, 0x00000BC1 }, /* GL_ALPHA_TEST_FUNC */
-+ { 761, 0x00000BC2 }, /* GL_ALPHA_TEST_REF */
-+ { 779, 0x00000207 }, /* GL_ALWAYS */
-+ { 789, 0x00001200 }, /* GL_AMBIENT */
-+ { 800, 0x00001602 }, /* GL_AMBIENT_AND_DIFFUSE */
-+ { 823, 0x00001501 }, /* GL_AND */
-+ { 830, 0x00001504 }, /* GL_AND_INVERTED */
-+ { 846, 0x00001502 }, /* GL_AND_REVERSE */
-+ { 861, 0x00008892 }, /* GL_ARRAY_BUFFER */
-+ { 877, 0x00008892 }, /* GL_ARRAY_BUFFER_ARB */
-+ { 897, 0x00008894 }, /* GL_ARRAY_BUFFER_BINDING */
-+ { 921, 0x00008894 }, /* GL_ARRAY_BUFFER_BINDING_ARB */
-+ { 949, 0x00008B85 }, /* GL_ATTACHED_SHADERS */
-+ { 969, 0x00008645 }, /* GL_ATTRIB_ARRAY_POINTER_NV */
-+ { 996, 0x00008623 }, /* GL_ATTRIB_ARRAY_SIZE_NV */
-+ { 1020, 0x00008624 }, /* GL_ATTRIB_ARRAY_STRIDE_NV */
-+ { 1046, 0x00008625 }, /* GL_ATTRIB_ARRAY_TYPE_NV */
-+ { 1070, 0x00000BB0 }, /* GL_ATTRIB_STACK_DEPTH */
-+ { 1092, 0x00000D80 }, /* GL_AUTO_NORMAL */
-+ { 1107, 0x00000409 }, /* GL_AUX0 */
-+ { 1115, 0x0000040A }, /* GL_AUX1 */
-+ { 1123, 0x0000040B }, /* GL_AUX2 */
-+ { 1131, 0x0000040C }, /* GL_AUX3 */
-+ { 1139, 0x00000C00 }, /* GL_AUX_BUFFERS */
-+ { 1154, 0x00000405 }, /* GL_BACK */
-+ { 1162, 0x00000402 }, /* GL_BACK_LEFT */
-+ { 1175, 0x00000403 }, /* GL_BACK_RIGHT */
-+ { 1189, 0x000080E0 }, /* GL_BGR */
-+ { 1196, 0x000080E1 }, /* GL_BGRA */
-+ { 1204, 0x00001A00 }, /* GL_BITMAP */
-+ { 1214, 0x00000704 }, /* GL_BITMAP_TOKEN */
-+ { 1230, 0x00000BE2 }, /* GL_BLEND */
-+ { 1239, 0x00008005 }, /* GL_BLEND_COLOR */
-+ { 1254, 0x00008005 }, /* GL_BLEND_COLOR_EXT */
-+ { 1273, 0x00000BE0 }, /* GL_BLEND_DST */
-+ { 1286, 0x000080CA }, /* GL_BLEND_DST_ALPHA */
-+ { 1305, 0x000080C8 }, /* GL_BLEND_DST_RGB */
-+ { 1322, 0x00008009 }, /* GL_BLEND_EQUATION */
-+ { 1340, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA */
-+ { 1364, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA_EXT */
-+ { 1392, 0x00008009 }, /* GL_BLEND_EQUATION_EXT */
-+ { 1414, 0x00008009 }, /* GL_BLEND_EQUATION_RGB_EXT */
-+ { 1440, 0x00000BE1 }, /* GL_BLEND_SRC */
-+ { 1453, 0x000080CB }, /* GL_BLEND_SRC_ALPHA */
-+ { 1472, 0x000080C9 }, /* GL_BLEND_SRC_RGB */
-+ { 1489, 0x00001905 }, /* GL_BLUE */
-+ { 1497, 0x00000D1B }, /* GL_BLUE_BIAS */
-+ { 1510, 0x00000D54 }, /* GL_BLUE_BITS */
-+ { 1523, 0x00000D1A }, /* GL_BLUE_SCALE */
-+ { 1537, 0x00008B56 }, /* GL_BOOL */
-+ { 1545, 0x00008B56 }, /* GL_BOOL_ARB */
-+ { 1557, 0x00008B57 }, /* GL_BOOL_VEC2 */
-+ { 1570, 0x00008B57 }, /* GL_BOOL_VEC2_ARB */
-+ { 1587, 0x00008B58 }, /* GL_BOOL_VEC3 */
-+ { 1600, 0x00008B58 }, /* GL_BOOL_VEC3_ARB */
-+ { 1617, 0x00008B59 }, /* GL_BOOL_VEC4 */
-+ { 1630, 0x00008B59 }, /* GL_BOOL_VEC4_ARB */
-+ { 1647, 0x000088BB }, /* GL_BUFFER_ACCESS */
-+ { 1664, 0x000088BB }, /* GL_BUFFER_ACCESS_ARB */
-+ { 1685, 0x000088BC }, /* GL_BUFFER_MAPPED */
-+ { 1702, 0x000088BC }, /* GL_BUFFER_MAPPED_ARB */
-+ { 1723, 0x000088BD }, /* GL_BUFFER_MAP_POINTER */
-+ { 1745, 0x000088BD }, /* GL_BUFFER_MAP_POINTER_ARB */
-+ { 1771, 0x00008764 }, /* GL_BUFFER_SIZE */
-+ { 1786, 0x00008764 }, /* GL_BUFFER_SIZE_ARB */
-+ { 1805, 0x00008765 }, /* GL_BUFFER_USAGE */
-+ { 1821, 0x00008765 }, /* GL_BUFFER_USAGE_ARB */
-+ { 1841, 0x00001400 }, /* GL_BYTE */
-+ { 1849, 0x00002A24 }, /* GL_C3F_V3F */
-+ { 1860, 0x00002A26 }, /* GL_C4F_N3F_V3F */
-+ { 1875, 0x00002A22 }, /* GL_C4UB_V2F */
-+ { 1887, 0x00002A23 }, /* GL_C4UB_V3F */
-+ { 1899, 0x00000901 }, /* GL_CCW */
-+ { 1906, 0x00002900 }, /* GL_CLAMP */
-+ { 1915, 0x0000812D }, /* GL_CLAMP_TO_BORDER */
-+ { 1934, 0x0000812D }, /* GL_CLAMP_TO_BORDER_ARB */
-+ { 1957, 0x0000812D }, /* GL_CLAMP_TO_BORDER_SGIS */
-+ { 1981, 0x0000812F }, /* GL_CLAMP_TO_EDGE */
-+ { 1998, 0x0000812F }, /* GL_CLAMP_TO_EDGE_SGIS */
-+ { 2020, 0x00001500 }, /* GL_CLEAR */
-+ { 2029, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE */
-+ { 2054, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE_ARB */
-+ { 2083, 0xFFFFFFFF }, /* GL_CLIENT_ALL_ATTRIB_BITS */
-+ { 2109, 0x00000BB1 }, /* GL_CLIENT_ATTRIB_STACK_DEPTH */
-+ { 2138, 0x00000001 }, /* GL_CLIENT_PIXEL_STORE_BIT */
-+ { 2164, 0x00000002 }, /* GL_CLIENT_VERTEX_ARRAY_BIT */
-+ { 2191, 0x00003000 }, /* GL_CLIP_PLANE0 */
-+ { 2206, 0x00003001 }, /* GL_CLIP_PLANE1 */
-+ { 2221, 0x00003002 }, /* GL_CLIP_PLANE2 */
-+ { 2236, 0x00003003 }, /* GL_CLIP_PLANE3 */
-+ { 2251, 0x00003004 }, /* GL_CLIP_PLANE4 */
-+ { 2266, 0x00003005 }, /* GL_CLIP_PLANE5 */
-+ { 2281, 0x000080F0 }, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */
-+ { 2314, 0x00000A00 }, /* GL_COEFF */
-+ { 2323, 0x00001800 }, /* GL_COLOR */
-+ { 2332, 0x00008076 }, /* GL_COLOR_ARRAY */
-+ { 2347, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING */
-+ { 2377, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING_ARB */
-+ { 2411, 0x00008090 }, /* GL_COLOR_ARRAY_POINTER */
-+ { 2434, 0x00008081 }, /* GL_COLOR_ARRAY_SIZE */
-+ { 2454, 0x00008083 }, /* GL_COLOR_ARRAY_STRIDE */
-+ { 2476, 0x00008082 }, /* GL_COLOR_ARRAY_TYPE */
-+ { 2496, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_EXT */
-+ { 2521, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10_EXT */
-+ { 2547, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11_EXT */
-+ { 2573, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12_EXT */
-+ { 2599, 0x00008CED }, /* GL_COLOR_ATTACHMENT13_EXT */
-+ { 2625, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14_EXT */
-+ { 2651, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15_EXT */
-+ { 2677, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1_EXT */
-+ { 2702, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2_EXT */
-+ { 2727, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3_EXT */
-+ { 2752, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4_EXT */
-+ { 2777, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5_EXT */
-+ { 2802, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6_EXT */
-+ { 2827, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7_EXT */
-+ { 2852, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8_EXT */
-+ { 2877, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9_EXT */
-+ { 2902, 0x00004000 }, /* GL_COLOR_BUFFER_BIT */
-+ { 2922, 0x00000C22 }, /* GL_COLOR_CLEAR_VALUE */
-+ { 2943, 0x00001900 }, /* GL_COLOR_INDEX */
-+ { 2958, 0x00001603 }, /* GL_COLOR_INDEXES */
-+ { 2975, 0x00000BF2 }, /* GL_COLOR_LOGIC_OP */
-+ { 2993, 0x00000B57 }, /* GL_COLOR_MATERIAL */
-+ { 3011, 0x00000B55 }, /* GL_COLOR_MATERIAL_FACE */
-+ { 3034, 0x00000B56 }, /* GL_COLOR_MATERIAL_PARAMETER */
-+ { 3062, 0x000080B1 }, /* GL_COLOR_MATRIX */
-+ { 3078, 0x000080B1 }, /* GL_COLOR_MATRIX_SGI */
-+ { 3098, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH */
-+ { 3126, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH_SGI */
-+ { 3158, 0x00008458 }, /* GL_COLOR_SUM */
-+ { 3171, 0x00008458 }, /* GL_COLOR_SUM_ARB */
-+ { 3188, 0x000080D0 }, /* GL_COLOR_TABLE */
-+ { 3203, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE */
-+ { 3229, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_EXT */
-+ { 3259, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_SGI */
-+ { 3289, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS */
-+ { 3309, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS_SGI */
-+ { 3333, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE */
-+ { 3358, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_EXT */
-+ { 3387, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_SGI */
-+ { 3416, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT */
-+ { 3438, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_EXT */
-+ { 3464, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_SGI */
-+ { 3490, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE */
-+ { 3516, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_EXT */
-+ { 3546, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_SGI */
-+ { 3576, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE */
-+ { 3606, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_EXT */
-+ { 3640, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_SGI */
-+ { 3674, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE */
-+ { 3704, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_EXT */
-+ { 3738, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_SGI */
-+ { 3772, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE */
-+ { 3796, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_EXT */
-+ { 3824, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_SGI */
-+ { 3852, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE */
-+ { 3873, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE_SGI */
-+ { 3898, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH */
-+ { 3919, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_EXT */
-+ { 3944, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_SGI */
-+ { 3969, 0x00000C23 }, /* GL_COLOR_WRITEMASK */
-+ { 3988, 0x00008570 }, /* GL_COMBINE */
-+ { 3999, 0x00008503 }, /* GL_COMBINE4 */
-+ { 4011, 0x00008572 }, /* GL_COMBINE_ALPHA */
-+ { 4028, 0x00008572 }, /* GL_COMBINE_ALPHA_ARB */
-+ { 4049, 0x00008572 }, /* GL_COMBINE_ALPHA_EXT */
-+ { 4070, 0x00008570 }, /* GL_COMBINE_ARB */
-+ { 4085, 0x00008570 }, /* GL_COMBINE_EXT */
-+ { 4100, 0x00008571 }, /* GL_COMBINE_RGB */
-+ { 4115, 0x00008571 }, /* GL_COMBINE_RGB_ARB */
-+ { 4134, 0x00008571 }, /* GL_COMBINE_RGB_EXT */
-+ { 4153, 0x0000884E }, /* GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT */
-+ { 4189, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE */
-+ { 4213, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE_ARB */
-+ { 4241, 0x00001300 }, /* GL_COMPILE */
-+ { 4252, 0x00001301 }, /* GL_COMPILE_AND_EXECUTE */
-+ { 4275, 0x00008B81 }, /* GL_COMPILE_STATUS */
-+ { 4293, 0x000084E9 }, /* GL_COMPRESSED_ALPHA */
-+ { 4313, 0x000084E9 }, /* GL_COMPRESSED_ALPHA_ARB */
-+ { 4337, 0x000084EC }, /* GL_COMPRESSED_INTENSITY */
-+ { 4361, 0x000084EC }, /* GL_COMPRESSED_INTENSITY_ARB */
-+ { 4389, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE */
-+ { 4413, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA */
-+ { 4443, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA_ARB */
-+ { 4477, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE_ARB */
-+ { 4505, 0x000084ED }, /* GL_COMPRESSED_RGB */
-+ { 4523, 0x000084EE }, /* GL_COMPRESSED_RGBA */
-+ { 4542, 0x000084EE }, /* GL_COMPRESSED_RGBA_ARB */
-+ { 4565, 0x000086B1 }, /* GL_COMPRESSED_RGBA_FXT1_3DFX */
-+ { 4594, 0x000083F1 }, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */
-+ { 4627, 0x000083F2 }, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */
-+ { 4660, 0x000083F3 }, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */
-+ { 4693, 0x000084ED }, /* GL_COMPRESSED_RGB_ARB */
-+ { 4715, 0x000086B0 }, /* GL_COMPRESSED_RGB_FXT1_3DFX */
-+ { 4743, 0x000083F0 }, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */
-+ { 4775, 0x000086A3 }, /* GL_COMPRESSED_TEXTURE_FORMATS */
-+ { 4805, 0x00008576 }, /* GL_CONSTANT */
-+ { 4817, 0x00008003 }, /* GL_CONSTANT_ALPHA */
-+ { 4835, 0x00008003 }, /* GL_CONSTANT_ALPHA_EXT */
-+ { 4857, 0x00008576 }, /* GL_CONSTANT_ARB */
-+ { 4873, 0x00001207 }, /* GL_CONSTANT_ATTENUATION */
-+ { 4897, 0x00008151 }, /* GL_CONSTANT_BORDER_HP */
-+ { 4919, 0x00008001 }, /* GL_CONSTANT_COLOR */
-+ { 4937, 0x00008001 }, /* GL_CONSTANT_COLOR_EXT */
-+ { 4959, 0x00008576 }, /* GL_CONSTANT_EXT */
-+ { 4975, 0x00008010 }, /* GL_CONVOLUTION_1D */
-+ { 4993, 0x00008011 }, /* GL_CONVOLUTION_2D */
-+ { 5011, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR */
-+ { 5039, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR_HP */
-+ { 5070, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE */
-+ { 5097, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE_EXT */
-+ { 5128, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS */
-+ { 5155, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS_EXT */
-+ { 5186, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE */
-+ { 5214, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE_EXT */
-+ { 5246, 0x00008017 }, /* GL_CONVOLUTION_FORMAT */
-+ { 5268, 0x00008017 }, /* GL_CONVOLUTION_FORMAT_EXT */
-+ { 5294, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT */
-+ { 5316, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT_EXT */
-+ { 5342, 0x00008018 }, /* GL_CONVOLUTION_WIDTH */
-+ { 5363, 0x00008018 }, /* GL_CONVOLUTION_WIDTH_EXT */
-+ { 5388, 0x00008862 }, /* GL_COORD_REPLACE */
-+ { 5405, 0x00008862 }, /* GL_COORD_REPLACE_ARB */
-+ { 5426, 0x00008862 }, /* GL_COORD_REPLACE_NV */
-+ { 5446, 0x00001503 }, /* GL_COPY */
-+ { 5454, 0x0000150C }, /* GL_COPY_INVERTED */
-+ { 5471, 0x00000706 }, /* GL_COPY_PIXEL_TOKEN */
-+ { 5491, 0x00000B44 }, /* GL_CULL_FACE */
-+ { 5504, 0x00000B45 }, /* GL_CULL_FACE_MODE */
-+ { 5522, 0x000081AA }, /* GL_CULL_VERTEX_EXT */
-+ { 5541, 0x000081AC }, /* GL_CULL_VERTEX_EYE_POSITION_EXT */
-+ { 5573, 0x000081AB }, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */
-+ { 5608, 0x00008626 }, /* GL_CURRENT_ATTRIB_NV */
-+ { 5629, 0x00000001 }, /* GL_CURRENT_BIT */
-+ { 5644, 0x00000B00 }, /* GL_CURRENT_COLOR */
-+ { 5661, 0x00008453 }, /* GL_CURRENT_FOG_COORD */
-+ { 5682, 0x00008453 }, /* GL_CURRENT_FOG_COORDINATE */
-+ { 5708, 0x00000B01 }, /* GL_CURRENT_INDEX */
-+ { 5725, 0x00008641 }, /* GL_CURRENT_MATRIX_ARB */
-+ { 5747, 0x00008845 }, /* GL_CURRENT_MATRIX_INDEX_ARB */
-+ { 5775, 0x00008641 }, /* GL_CURRENT_MATRIX_NV */
-+ { 5796, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */
-+ { 5830, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_NV */
-+ { 5863, 0x00000B02 }, /* GL_CURRENT_NORMAL */
-+ { 5881, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_ARB */
-+ { 5911, 0x00008B8D }, /* GL_CURRENT_PROGRAM */
-+ { 5930, 0x00008865 }, /* GL_CURRENT_QUERY */
-+ { 5947, 0x00008865 }, /* GL_CURRENT_QUERY_ARB */
-+ { 5968, 0x00000B04 }, /* GL_CURRENT_RASTER_COLOR */
-+ { 5992, 0x00000B09 }, /* GL_CURRENT_RASTER_DISTANCE */
-+ { 6019, 0x00000B05 }, /* GL_CURRENT_RASTER_INDEX */
-+ { 6043, 0x00000B07 }, /* GL_CURRENT_RASTER_POSITION */
-+ { 6070, 0x00000B08 }, /* GL_CURRENT_RASTER_POSITION_VALID */
-+ { 6103, 0x00000B06 }, /* GL_CURRENT_RASTER_TEXTURE_COORDS */
-+ { 6136, 0x00008459 }, /* GL_CURRENT_SECONDARY_COLOR */
-+ { 6163, 0x00000B03 }, /* GL_CURRENT_TEXTURE_COORDS */
-+ { 6189, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB */
-+ { 6214, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB_ARB */
-+ { 6243, 0x000086A8 }, /* GL_CURRENT_WEIGHT_ARB */
-+ { 6265, 0x00000900 }, /* GL_CW */
-+ { 6271, 0x0000875B }, /* GL_DEBUG_ASSERT_MESA */
-+ { 6292, 0x00008759 }, /* GL_DEBUG_OBJECT_MESA */
-+ { 6313, 0x0000875A }, /* GL_DEBUG_PRINT_MESA */
-+ { 6333, 0x00002101 }, /* GL_DECAL */
-+ { 6342, 0x00001E03 }, /* GL_DECR */
-+ { 6350, 0x00008508 }, /* GL_DECR_WRAP */
-+ { 6363, 0x00008508 }, /* GL_DECR_WRAP_EXT */
-+ { 6380, 0x00008B80 }, /* GL_DELETE_STATUS */
-+ { 6397, 0x00001801 }, /* GL_DEPTH */
-+ { 6406, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_EXT */
-+ { 6430, 0x00000D1F }, /* GL_DEPTH_BIAS */
-+ { 6444, 0x00000D56 }, /* GL_DEPTH_BITS */
-+ { 6458, 0x00008891 }, /* GL_DEPTH_BOUNDS_EXT */
-+ { 6478, 0x00008890 }, /* GL_DEPTH_BOUNDS_TEST_EXT */
-+ { 6503, 0x00000100 }, /* GL_DEPTH_BUFFER_BIT */
-+ { 6523, 0x0000864F }, /* GL_DEPTH_CLAMP_NV */
-+ { 6541, 0x00000B73 }, /* GL_DEPTH_CLEAR_VALUE */
-+ { 6562, 0x00001902 }, /* GL_DEPTH_COMPONENT */
-+ { 6581, 0x000081A5 }, /* GL_DEPTH_COMPONENT16 */
-+ { 6602, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_ARB */
-+ { 6627, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_SGIX */
-+ { 6653, 0x000081A6 }, /* GL_DEPTH_COMPONENT24 */
-+ { 6674, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_ARB */
-+ { 6699, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_SGIX */
-+ { 6725, 0x000081A7 }, /* GL_DEPTH_COMPONENT32 */
-+ { 6746, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_ARB */
-+ { 6771, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_SGIX */
-+ { 6797, 0x00000B74 }, /* GL_DEPTH_FUNC */
-+ { 6811, 0x00000B70 }, /* GL_DEPTH_RANGE */
-+ { 6826, 0x00000D1E }, /* GL_DEPTH_SCALE */
-+ { 6841, 0x000084F9 }, /* GL_DEPTH_STENCIL_NV */
-+ { 6861, 0x0000886F }, /* GL_DEPTH_STENCIL_TO_BGRA_NV */
-+ { 6889, 0x0000886E }, /* GL_DEPTH_STENCIL_TO_RGBA_NV */
-+ { 6917, 0x00000B71 }, /* GL_DEPTH_TEST */
-+ { 6931, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE */
-+ { 6953, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE_ARB */
-+ { 6979, 0x00000B72 }, /* GL_DEPTH_WRITEMASK */
-+ { 6998, 0x00001201 }, /* GL_DIFFUSE */
-+ { 7009, 0x00000BD0 }, /* GL_DITHER */
-+ { 7019, 0x00000A02 }, /* GL_DOMAIN */
-+ { 7029, 0x00001100 }, /* GL_DONT_CARE */
-+ { 7042, 0x000086AE }, /* GL_DOT3_RGB */
-+ { 7054, 0x000086AF }, /* GL_DOT3_RGBA */
-+ { 7067, 0x000086AF }, /* GL_DOT3_RGBA_ARB */
-+ { 7084, 0x00008741 }, /* GL_DOT3_RGBA_EXT */
-+ { 7101, 0x000086AE }, /* GL_DOT3_RGB_ARB */
-+ { 7117, 0x00008740 }, /* GL_DOT3_RGB_EXT */
-+ { 7133, 0x0000140A }, /* GL_DOUBLE */
-+ { 7143, 0x00000C32 }, /* GL_DOUBLEBUFFER */
-+ { 7159, 0x00000C01 }, /* GL_DRAW_BUFFER */
-+ { 7174, 0x00008825 }, /* GL_DRAW_BUFFER0 */
-+ { 7190, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */
-+ { 7210, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */
-+ { 7230, 0x00008826 }, /* GL_DRAW_BUFFER1 */
-+ { 7246, 0x0000882F }, /* GL_DRAW_BUFFER10 */
-+ { 7263, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */
-+ { 7284, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */
-+ { 7305, 0x00008830 }, /* GL_DRAW_BUFFER11 */
-+ { 7322, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */
-+ { 7343, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */
-+ { 7364, 0x00008831 }, /* GL_DRAW_BUFFER12 */
-+ { 7381, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */
-+ { 7402, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */
-+ { 7423, 0x00008832 }, /* GL_DRAW_BUFFER13 */
-+ { 7440, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */
-+ { 7461, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */
-+ { 7482, 0x00008833 }, /* GL_DRAW_BUFFER14 */
-+ { 7499, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */
-+ { 7520, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */
-+ { 7541, 0x00008834 }, /* GL_DRAW_BUFFER15 */
-+ { 7558, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */
-+ { 7579, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */
-+ { 7600, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */
-+ { 7620, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */
-+ { 7640, 0x00008827 }, /* GL_DRAW_BUFFER2 */
-+ { 7656, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */
-+ { 7676, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */
-+ { 7696, 0x00008828 }, /* GL_DRAW_BUFFER3 */
-+ { 7712, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */
-+ { 7732, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */
-+ { 7752, 0x00008829 }, /* GL_DRAW_BUFFER4 */
-+ { 7768, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */
-+ { 7788, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */
-+ { 7808, 0x0000882A }, /* GL_DRAW_BUFFER5 */
-+ { 7824, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */
-+ { 7844, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */
-+ { 7864, 0x0000882B }, /* GL_DRAW_BUFFER6 */
-+ { 7880, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */
-+ { 7900, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */
-+ { 7920, 0x0000882C }, /* GL_DRAW_BUFFER7 */
-+ { 7936, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */
-+ { 7956, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */
-+ { 7976, 0x0000882D }, /* GL_DRAW_BUFFER8 */
-+ { 7992, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */
-+ { 8012, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */
-+ { 8032, 0x0000882E }, /* GL_DRAW_BUFFER9 */
-+ { 8048, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */
-+ { 8068, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */
-+ { 8088, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */
-+ { 8120, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */
-+ { 8144, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */
-+ { 8164, 0x00000304 }, /* GL_DST_ALPHA */
-+ { 8177, 0x00000306 }, /* GL_DST_COLOR */
-+ { 8190, 0x000088EA }, /* GL_DYNAMIC_COPY */
-+ { 8206, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */
-+ { 8226, 0x000088E8 }, /* GL_DYNAMIC_DRAW */
-+ { 8242, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */
-+ { 8262, 0x000088E9 }, /* GL_DYNAMIC_READ */
-+ { 8278, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */
-+ { 8298, 0x00000B43 }, /* GL_EDGE_FLAG */
-+ { 8311, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */
-+ { 8330, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
-+ { 8364, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */
-+ { 8402, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */
-+ { 8429, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */
-+ { 8455, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */
-+ { 8479, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER_ARB */
-+ { 8507, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
-+ { 8539, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */
-+ { 8575, 0x00001600 }, /* GL_EMISSION */
-+ { 8587, 0x00002000 }, /* GL_ENABLE_BIT */
-+ { 8601, 0x00000202 }, /* GL_EQUAL */
-+ { 8610, 0x00001509 }, /* GL_EQUIV */
-+ { 8619, 0x00010000 }, /* GL_EVAL_BIT */
-+ { 8631, 0x00000800 }, /* GL_EXP */
-+ { 8638, 0x00000801 }, /* GL_EXP2 */
-+ { 8646, 0x00001F03 }, /* GL_EXTENSIONS */
-+ { 8660, 0x00002400 }, /* GL_EYE_LINEAR */
-+ { 8674, 0x00002502 }, /* GL_EYE_PLANE */
-+ { 8687, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */
-+ { 8712, 0x0000855B }, /* GL_EYE_RADIAL_NV */
-+ { 8729, 0x00000000 }, /* GL_FALSE */
-+ { 8738, 0x00001101 }, /* GL_FASTEST */
-+ { 8749, 0x00001C01 }, /* GL_FEEDBACK */
-+ { 8761, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */
-+ { 8788, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */
-+ { 8812, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */
-+ { 8836, 0x00001B02 }, /* GL_FILL */
-+ { 8844, 0x00001D00 }, /* GL_FLAT */
-+ { 8852, 0x00001406 }, /* GL_FLOAT */
-+ { 8861, 0x00008B5A }, /* GL_FLOAT_MAT2 */
-+ { 8875, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */
-+ { 8893, 0x00008B5B }, /* GL_FLOAT_MAT3 */
-+ { 8907, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */
-+ { 8925, 0x00008B5C }, /* GL_FLOAT_MAT4 */
-+ { 8939, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */
-+ { 8957, 0x00008B50 }, /* GL_FLOAT_VEC2 */
-+ { 8971, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */
-+ { 8989, 0x00008B51 }, /* GL_FLOAT_VEC3 */
-+ { 9003, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */
-+ { 9021, 0x00008B52 }, /* GL_FLOAT_VEC4 */
-+ { 9035, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */
-+ { 9053, 0x00000B60 }, /* GL_FOG */
-+ { 9060, 0x00000080 }, /* GL_FOG_BIT */
-+ { 9071, 0x00000B66 }, /* GL_FOG_COLOR */
-+ { 9084, 0x00008451 }, /* GL_FOG_COORD */
-+ { 9097, 0x00008451 }, /* GL_FOG_COORDINATE */
-+ { 9115, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */
-+ { 9139, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
-+ { 9178, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */
-+ { 9221, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */
-+ { 9253, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */
-+ { 9284, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */
-+ { 9313, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */
-+ { 9338, 0x00008457 }, /* GL_FOG_COORD_ARRAY */
-+ { 9357, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */
-+ { 9391, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */
-+ { 9418, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */
-+ { 9444, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */
-+ { 9468, 0x00008450 }, /* GL_FOG_COORD_SRC */
-+ { 9485, 0x00000B62 }, /* GL_FOG_DENSITY */
-+ { 9500, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */
-+ { 9524, 0x00000B64 }, /* GL_FOG_END */
-+ { 9535, 0x00000C54 }, /* GL_FOG_HINT */
-+ { 9547, 0x00000B61 }, /* GL_FOG_INDEX */
-+ { 9560, 0x00000B65 }, /* GL_FOG_MODE */
-+ { 9572, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */
-+ { 9591, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */
-+ { 9616, 0x00000B63 }, /* GL_FOG_START */
-+ { 9629, 0x00008452 }, /* GL_FRAGMENT_DEPTH */
-+ { 9647, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */
-+ { 9671, 0x00008B30 }, /* GL_FRAGMENT_SHADER */
-+ { 9690, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */
-+ { 9713, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */
-+ { 9748, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */
-+ { 9790, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */
-+ { 9832, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */
-+ { 9881, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */
-+ { 9933, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */
-+ { 9977, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */
-+ { 10021, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */
-+ { 10048, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */
-+ { 10076, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */
-+ { 10095, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */
-+ { 10136, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */
-+ { 10177, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */
-+ { 10219, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */
-+ { 10270, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */
-+ { 10308, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */
-+ { 10357, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */
-+ { 10399, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */
-+ { 10431, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */
-+ { 10462, 0x00000404 }, /* GL_FRONT */
-+ { 10471, 0x00000408 }, /* GL_FRONT_AND_BACK */
-+ { 10489, 0x00000B46 }, /* GL_FRONT_FACE */
-+ { 10503, 0x00000400 }, /* GL_FRONT_LEFT */
-+ { 10517, 0x00000401 }, /* GL_FRONT_RIGHT */
-+ { 10532, 0x00008006 }, /* GL_FUNC_ADD */
-+ { 10544, 0x00008006 }, /* GL_FUNC_ADD_EXT */
-+ { 10560, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */
-+ { 10585, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */
-+ { 10614, 0x0000800A }, /* GL_FUNC_SUBTRACT */
-+ { 10631, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */
-+ { 10652, 0x00008191 }, /* GL_GENERATE_MIPMAP */
-+ { 10671, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */
-+ { 10695, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */
-+ { 10724, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */
-+ { 10748, 0x00000206 }, /* GL_GEQUAL */
-+ { 10758, 0x00008009 }, /* GL_GL_BLEND_EQUATION_RGB */
-+ { 10783, 0x00008C4A }, /* GL_GL_COMPRESSED_SLUMINANCE */
-+ { 10811, 0x00008C4B }, /* GL_GL_COMPRESSED_SLUMINANCE_ALPHA */
-+ { 10845, 0x00008C48 }, /* GL_GL_COMPRESSED_SRGB */
-+ { 10867, 0x00008C49 }, /* GL_GL_COMPRESSED_SRGB_ALPHA */
-+ { 10895, 0x0000845F }, /* GL_GL_CURRENT_RASTER_SECONDARY_COLOR */
-+ { 10932, 0x00008B65 }, /* GL_GL_FLOAT_MAT2x3 */
-+ { 10951, 0x00008B66 }, /* GL_GL_FLOAT_MAT2x4 */
-+ { 10970, 0x00008B67 }, /* GL_GL_FLOAT_MAT3x2 */
-+ { 10989, 0x00008B68 }, /* GL_GL_FLOAT_MAT3x4 */
-+ { 11008, 0x00008B69 }, /* GL_GL_FLOAT_MAT4x2 */
-+ { 11027, 0x00008B6A }, /* GL_GL_FLOAT_MAT4x3 */
-+ { 11046, 0x000088EB }, /* GL_GL_PIXEL_PACK_BUFFER */
-+ { 11070, 0x000088ED }, /* GL_GL_PIXEL_PACK_BUFFER_BINDING */
-+ { 11102, 0x000088EC }, /* GL_GL_PIXEL_UNPACK_BUFFER */
-+ { 11128, 0x000088EF }, /* GL_GL_PIXEL_UNPACK_BUFFER_BINDING */
-+ { 11162, 0x00008C46 }, /* GL_GL_SLUMINANCE */
-+ { 11179, 0x00008C47 }, /* GL_GL_SLUMINANCE8 */
-+ { 11197, 0x00008C45 }, /* GL_GL_SLUMINANCE8_ALPHA8 */
-+ { 11222, 0x00008C44 }, /* GL_GL_SLUMINANCE_ALPHA */
-+ { 11245, 0x00008C40 }, /* GL_GL_SRGB */
-+ { 11256, 0x00008C41 }, /* GL_GL_SRGB8 */
-+ { 11268, 0x00008C43 }, /* GL_GL_SRGB8_ALPHA8 */
-+ { 11287, 0x00008C42 }, /* GL_GL_SRGB_ALPHA */
-+ { 11304, 0x00000204 }, /* GL_GREATER */
-+ { 11315, 0x00001904 }, /* GL_GREEN */
-+ { 11324, 0x00000D19 }, /* GL_GREEN_BIAS */
-+ { 11338, 0x00000D53 }, /* GL_GREEN_BITS */
-+ { 11352, 0x00000D18 }, /* GL_GREEN_SCALE */
-+ { 11367, 0x00008000 }, /* GL_HINT_BIT */
-+ { 11379, 0x00008024 }, /* GL_HISTOGRAM */
-+ { 11392, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */
-+ { 11416, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */
-+ { 11444, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */
-+ { 11467, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */
-+ { 11494, 0x00008024 }, /* GL_HISTOGRAM_EXT */
-+ { 11511, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */
-+ { 11531, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */
-+ { 11555, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */
-+ { 11579, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */
-+ { 11607, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */
-+ { 11635, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */
-+ { 11667, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */
-+ { 11689, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */
-+ { 11715, 0x0000802D }, /* GL_HISTOGRAM_SINK */
-+ { 11733, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */
-+ { 11755, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */
-+ { 11774, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */
-+ { 11797, 0x0000862A }, /* GL_IDENTITY_NV */
-+ { 11812, 0x00008150 }, /* GL_IGNORE_BORDER_HP */
-+ { 11832, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */
-+ { 11872, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */
-+ { 11910, 0x00001E02 }, /* GL_INCR */
-+ { 11918, 0x00008507 }, /* GL_INCR_WRAP */
-+ { 11931, 0x00008507 }, /* GL_INCR_WRAP_EXT */
-+ { 11948, 0x00008077 }, /* GL_INDEX_ARRAY */
-+ { 11963, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */
-+ { 11993, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */
-+ { 12027, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */
-+ { 12050, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */
-+ { 12072, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */
-+ { 12092, 0x00000D51 }, /* GL_INDEX_BITS */
-+ { 12106, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */
-+ { 12127, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */
-+ { 12145, 0x00000C30 }, /* GL_INDEX_MODE */
-+ { 12159, 0x00000D13 }, /* GL_INDEX_OFFSET */
-+ { 12175, 0x00000D12 }, /* GL_INDEX_SHIFT */
-+ { 12190, 0x00000C21 }, /* GL_INDEX_WRITEMASK */
-+ { 12209, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */
-+ { 12228, 0x00001404 }, /* GL_INT */
-+ { 12235, 0x00008049 }, /* GL_INTENSITY */
-+ { 12248, 0x0000804C }, /* GL_INTENSITY12 */
-+ { 12263, 0x0000804C }, /* GL_INTENSITY12_EXT */
-+ { 12282, 0x0000804D }, /* GL_INTENSITY16 */
-+ { 12297, 0x0000804D }, /* GL_INTENSITY16_EXT */
-+ { 12316, 0x0000804A }, /* GL_INTENSITY4 */
-+ { 12330, 0x0000804A }, /* GL_INTENSITY4_EXT */
-+ { 12348, 0x0000804B }, /* GL_INTENSITY8 */
-+ { 12362, 0x0000804B }, /* GL_INTENSITY8_EXT */
-+ { 12380, 0x00008049 }, /* GL_INTENSITY_EXT */
-+ { 12397, 0x00008575 }, /* GL_INTERPOLATE */
-+ { 12412, 0x00008575 }, /* GL_INTERPOLATE_ARB */
-+ { 12431, 0x00008575 }, /* GL_INTERPOLATE_EXT */
-+ { 12450, 0x00008B53 }, /* GL_INT_VEC2 */
-+ { 12462, 0x00008B53 }, /* GL_INT_VEC2_ARB */
-+ { 12478, 0x00008B54 }, /* GL_INT_VEC3 */
-+ { 12490, 0x00008B54 }, /* GL_INT_VEC3_ARB */
-+ { 12506, 0x00008B55 }, /* GL_INT_VEC4 */
-+ { 12518, 0x00008B55 }, /* GL_INT_VEC4_ARB */
-+ { 12534, 0x00000500 }, /* GL_INVALID_ENUM */
-+ { 12550, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */
-+ { 12587, 0x00000502 }, /* GL_INVALID_OPERATION */
-+ { 12608, 0x00000501 }, /* GL_INVALID_VALUE */
-+ { 12625, 0x0000862B }, /* GL_INVERSE_NV */
-+ { 12639, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */
-+ { 12663, 0x0000150A }, /* GL_INVERT */
-+ { 12673, 0x00001E00 }, /* GL_KEEP */
-+ { 12681, 0x00000406 }, /* GL_LEFT */
-+ { 12689, 0x00000203 }, /* GL_LEQUAL */
-+ { 12699, 0x00000201 }, /* GL_LESS */
-+ { 12707, 0x00004000 }, /* GL_LIGHT0 */
-+ { 12717, 0x00004001 }, /* GL_LIGHT1 */
-+ { 12727, 0x00004002 }, /* GL_LIGHT2 */
-+ { 12737, 0x00004003 }, /* GL_LIGHT3 */
-+ { 12747, 0x00004004 }, /* GL_LIGHT4 */
-+ { 12757, 0x00004005 }, /* GL_LIGHT5 */
-+ { 12767, 0x00004006 }, /* GL_LIGHT6 */
-+ { 12777, 0x00004007 }, /* GL_LIGHT7 */
-+ { 12787, 0x00000B50 }, /* GL_LIGHTING */
-+ { 12799, 0x00000040 }, /* GL_LIGHTING_BIT */
-+ { 12815, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */
-+ { 12838, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */
-+ { 12867, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */
-+ { 12900, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
-+ { 12928, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */
-+ { 12952, 0x00001B01 }, /* GL_LINE */
-+ { 12960, 0x00002601 }, /* GL_LINEAR */
-+ { 12970, 0x00001208 }, /* GL_LINEAR_ATTENUATION */
-+ { 12992, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
-+ { 13022, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
-+ { 13053, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */
-+ { 13077, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */
-+ { 13102, 0x00000001 }, /* GL_LINES */
-+ { 13111, 0x00000004 }, /* GL_LINE_BIT */
-+ { 13123, 0x00000002 }, /* GL_LINE_LOOP */
-+ { 13136, 0x00000707 }, /* GL_LINE_RESET_TOKEN */
-+ { 13156, 0x00000B20 }, /* GL_LINE_SMOOTH */
-+ { 13171, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */
-+ { 13191, 0x00000B24 }, /* GL_LINE_STIPPLE */
-+ { 13207, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */
-+ { 13231, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */
-+ { 13254, 0x00000003 }, /* GL_LINE_STRIP */
-+ { 13268, 0x00000702 }, /* GL_LINE_TOKEN */
-+ { 13282, 0x00000B21 }, /* GL_LINE_WIDTH */
-+ { 13296, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */
-+ { 13322, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */
-+ { 13342, 0x00008B82 }, /* GL_LINK_STATUS */
-+ { 13357, 0x00000B32 }, /* GL_LIST_BASE */
-+ { 13370, 0x00020000 }, /* GL_LIST_BIT */
-+ { 13382, 0x00000B33 }, /* GL_LIST_INDEX */
-+ { 13396, 0x00000B30 }, /* GL_LIST_MODE */
-+ { 13409, 0x00000101 }, /* GL_LOAD */
-+ { 13417, 0x00000BF1 }, /* GL_LOGIC_OP */
-+ { 13429, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */
-+ { 13446, 0x00008CA1 }, /* GL_LOWER_LEFT */
-+ { 13460, 0x00001909 }, /* GL_LUMINANCE */
-+ { 13473, 0x00008041 }, /* GL_LUMINANCE12 */
-+ { 13488, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */
-+ { 13511, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */
-+ { 13538, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */
-+ { 13560, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */
-+ { 13586, 0x00008041 }, /* GL_LUMINANCE12_EXT */
-+ { 13605, 0x00008042 }, /* GL_LUMINANCE16 */
-+ { 13620, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */
-+ { 13643, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */
-+ { 13670, 0x00008042 }, /* GL_LUMINANCE16_EXT */
-+ { 13689, 0x0000803F }, /* GL_LUMINANCE4 */
-+ { 13703, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */
-+ { 13724, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */
-+ { 13749, 0x0000803F }, /* GL_LUMINANCE4_EXT */
-+ { 13767, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */
-+ { 13788, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */
-+ { 13813, 0x00008040 }, /* GL_LUMINANCE8 */
-+ { 13827, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */
-+ { 13848, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */
-+ { 13873, 0x00008040 }, /* GL_LUMINANCE8_EXT */
-+ { 13891, 0x0000190A }, /* GL_LUMINANCE_ALPHA */
-+ { 13910, 0x00000D90 }, /* GL_MAP1_COLOR_4 */
-+ { 13926, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */
-+ { 13946, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */
-+ { 13968, 0x00000D91 }, /* GL_MAP1_INDEX */
-+ { 13982, 0x00000D92 }, /* GL_MAP1_NORMAL */
-+ { 13997, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */
-+ { 14021, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */
-+ { 14045, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */
-+ { 14069, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */
-+ { 14093, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */
-+ { 14110, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */
-+ { 14127, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
-+ { 14155, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
-+ { 14184, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
-+ { 14213, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
-+ { 14242, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
-+ { 14271, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
-+ { 14300, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
-+ { 14329, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
-+ { 14357, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
-+ { 14385, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
-+ { 14413, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
-+ { 14441, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
-+ { 14469, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
-+ { 14497, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
-+ { 14525, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
-+ { 14553, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
-+ { 14581, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */
-+ { 14597, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */
-+ { 14617, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */
-+ { 14639, 0x00000DB1 }, /* GL_MAP2_INDEX */
-+ { 14653, 0x00000DB2 }, /* GL_MAP2_NORMAL */
-+ { 14668, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */
-+ { 14692, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */
-+ { 14716, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */
-+ { 14740, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */
-+ { 14764, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */
-+ { 14781, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */
-+ { 14798, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
-+ { 14826, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
-+ { 14855, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
-+ { 14884, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
-+ { 14913, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
-+ { 14942, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
-+ { 14971, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
-+ { 15000, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
-+ { 15028, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
-+ { 15056, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
-+ { 15084, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
-+ { 15112, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
-+ { 15140, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
-+ { 15168, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */
-+ { 15196, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
-+ { 15224, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
-+ { 15252, 0x00000D10 }, /* GL_MAP_COLOR */
-+ { 15265, 0x00000D11 }, /* GL_MAP_STENCIL */
-+ { 15280, 0x000088C0 }, /* GL_MATRIX0_ARB */
-+ { 15295, 0x00008630 }, /* GL_MATRIX0_NV */
-+ { 15309, 0x000088CA }, /* GL_MATRIX10_ARB */
-+ { 15325, 0x000088CB }, /* GL_MATRIX11_ARB */
-+ { 15341, 0x000088CC }, /* GL_MATRIX12_ARB */
-+ { 15357, 0x000088CD }, /* GL_MATRIX13_ARB */
-+ { 15373, 0x000088CE }, /* GL_MATRIX14_ARB */
-+ { 15389, 0x000088CF }, /* GL_MATRIX15_ARB */
-+ { 15405, 0x000088D0 }, /* GL_MATRIX16_ARB */
-+ { 15421, 0x000088D1 }, /* GL_MATRIX17_ARB */
-+ { 15437, 0x000088D2 }, /* GL_MATRIX18_ARB */
-+ { 15453, 0x000088D3 }, /* GL_MATRIX19_ARB */
-+ { 15469, 0x000088C1 }, /* GL_MATRIX1_ARB */
-+ { 15484, 0x00008631 }, /* GL_MATRIX1_NV */
-+ { 15498, 0x000088D4 }, /* GL_MATRIX20_ARB */
-+ { 15514, 0x000088D5 }, /* GL_MATRIX21_ARB */
-+ { 15530, 0x000088D6 }, /* GL_MATRIX22_ARB */
-+ { 15546, 0x000088D7 }, /* GL_MATRIX23_ARB */
-+ { 15562, 0x000088D8 }, /* GL_MATRIX24_ARB */
-+ { 15578, 0x000088D9 }, /* GL_MATRIX25_ARB */
-+ { 15594, 0x000088DA }, /* GL_MATRIX26_ARB */
-+ { 15610, 0x000088DB }, /* GL_MATRIX27_ARB */
-+ { 15626, 0x000088DC }, /* GL_MATRIX28_ARB */
-+ { 15642, 0x000088DD }, /* GL_MATRIX29_ARB */
-+ { 15658, 0x000088C2 }, /* GL_MATRIX2_ARB */
-+ { 15673, 0x00008632 }, /* GL_MATRIX2_NV */
-+ { 15687, 0x000088DE }, /* GL_MATRIX30_ARB */
-+ { 15703, 0x000088DF }, /* GL_MATRIX31_ARB */
-+ { 15719, 0x000088C3 }, /* GL_MATRIX3_ARB */
-+ { 15734, 0x00008633 }, /* GL_MATRIX3_NV */
-+ { 15748, 0x000088C4 }, /* GL_MATRIX4_ARB */
-+ { 15763, 0x00008634 }, /* GL_MATRIX4_NV */
-+ { 15777, 0x000088C5 }, /* GL_MATRIX5_ARB */
-+ { 15792, 0x00008635 }, /* GL_MATRIX5_NV */
-+ { 15806, 0x000088C6 }, /* GL_MATRIX6_ARB */
-+ { 15821, 0x00008636 }, /* GL_MATRIX6_NV */
-+ { 15835, 0x000088C7 }, /* GL_MATRIX7_ARB */
-+ { 15850, 0x00008637 }, /* GL_MATRIX7_NV */
-+ { 15864, 0x000088C8 }, /* GL_MATRIX8_ARB */
-+ { 15879, 0x000088C9 }, /* GL_MATRIX9_ARB */
-+ { 15894, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */
-+ { 15920, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
-+ { 15954, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
-+ { 15985, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
-+ { 16018, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
-+ { 16049, 0x00000BA0 }, /* GL_MATRIX_MODE */
-+ { 16064, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */
-+ { 16086, 0x00008008 }, /* GL_MAX */
-+ { 16093, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */
-+ { 16116, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */
-+ { 16148, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */
-+ { 16174, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
-+ { 16207, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
-+ { 16233, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
-+ { 16267, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */
-+ { 16286, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */
-+ { 16315, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
-+ { 16347, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */
-+ { 16383, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */
-+ { 16419, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */
-+ { 16459, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */
-+ { 16485, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */
-+ { 16515, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */
-+ { 16540, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */
-+ { 16569, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
-+ { 16598, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */
-+ { 16631, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */
-+ { 16651, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */
-+ { 16675, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */
-+ { 16699, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */
-+ { 16723, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */
-+ { 16748, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */
-+ { 16766, 0x00008008 }, /* GL_MAX_EXT */
-+ { 16777, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
-+ { 16812, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */
-+ { 16851, 0x00000D31 }, /* GL_MAX_LIGHTS */
-+ { 16865, 0x00000B31 }, /* GL_MAX_LIST_NESTING */
-+ { 16885, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
-+ { 16923, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */
-+ { 16952, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */
-+ { 16976, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */
-+ { 17004, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */
-+ { 17027, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
-+ { 17064, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
-+ { 17100, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
-+ { 17127, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
-+ { 17156, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
-+ { 17190, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */
-+ { 17226, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
-+ { 17253, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
-+ { 17285, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
-+ { 17321, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
-+ { 17350, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
-+ { 17379, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */
-+ { 17407, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
-+ { 17445, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
-+ { 17489, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
-+ { 17532, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
-+ { 17566, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
-+ { 17605, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
-+ { 17642, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
-+ { 17680, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
-+ { 17723, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
-+ { 17766, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
-+ { 17796, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
-+ { 17827, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
-+ { 17863, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
-+ { 17899, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */
-+ { 17929, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */
-+ { 17963, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */
-+ { 17996, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */
-+ { 18025, 0x00008504 }, /* GL_MAX_SHININESS_NV */
-+ { 18045, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */
-+ { 18069, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */
-+ { 18091, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */
-+ { 18117, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */
-+ { 18144, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */
-+ { 18175, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */
-+ { 18199, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
-+ { 18233, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */
-+ { 18253, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */
-+ { 18280, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */
-+ { 18301, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */
-+ { 18326, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */
-+ { 18351, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */
-+ { 18386, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */
-+ { 18408, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */
-+ { 18434, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */
-+ { 18456, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */
-+ { 18482, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */
-+ { 18516, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */
-+ { 18554, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */
-+ { 18587, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */
-+ { 18624, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */
-+ { 18648, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */
-+ { 18669, 0x00008007 }, /* GL_MIN */
-+ { 18676, 0x0000802E }, /* GL_MINMAX */
-+ { 18686, 0x0000802E }, /* GL_MINMAX_EXT */
-+ { 18700, 0x0000802F }, /* GL_MINMAX_FORMAT */
-+ { 18717, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */
-+ { 18738, 0x00008030 }, /* GL_MINMAX_SINK */
-+ { 18753, 0x00008030 }, /* GL_MINMAX_SINK_EXT */
-+ { 18772, 0x00008007 }, /* GL_MIN_EXT */
-+ { 18783, 0x00008370 }, /* GL_MIRRORED_REPEAT */
-+ { 18802, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */
-+ { 18825, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */
-+ { 18848, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */
-+ { 18868, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */
-+ { 18888, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
-+ { 18918, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */
-+ { 18946, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
-+ { 18974, 0x00001700 }, /* GL_MODELVIEW */
-+ { 18987, 0x00001700 }, /* GL_MODELVIEW0_ARB */
-+ { 19005, 0x0000872A }, /* GL_MODELVIEW10_ARB */
-+ { 19024, 0x0000872B }, /* GL_MODELVIEW11_ARB */
-+ { 19043, 0x0000872C }, /* GL_MODELVIEW12_ARB */
-+ { 19062, 0x0000872D }, /* GL_MODELVIEW13_ARB */
-+ { 19081, 0x0000872E }, /* GL_MODELVIEW14_ARB */
-+ { 19100, 0x0000872F }, /* GL_MODELVIEW15_ARB */
-+ { 19119, 0x00008730 }, /* GL_MODELVIEW16_ARB */
-+ { 19138, 0x00008731 }, /* GL_MODELVIEW17_ARB */
-+ { 19157, 0x00008732 }, /* GL_MODELVIEW18_ARB */
-+ { 19176, 0x00008733 }, /* GL_MODELVIEW19_ARB */
-+ { 19195, 0x0000850A }, /* GL_MODELVIEW1_ARB */
-+ { 19213, 0x00008734 }, /* GL_MODELVIEW20_ARB */
-+ { 19232, 0x00008735 }, /* GL_MODELVIEW21_ARB */
-+ { 19251, 0x00008736 }, /* GL_MODELVIEW22_ARB */
-+ { 19270, 0x00008737 }, /* GL_MODELVIEW23_ARB */
-+ { 19289, 0x00008738 }, /* GL_MODELVIEW24_ARB */
-+ { 19308, 0x00008739 }, /* GL_MODELVIEW25_ARB */
-+ { 19327, 0x0000873A }, /* GL_MODELVIEW26_ARB */
-+ { 19346, 0x0000873B }, /* GL_MODELVIEW27_ARB */
-+ { 19365, 0x0000873C }, /* GL_MODELVIEW28_ARB */
-+ { 19384, 0x0000873D }, /* GL_MODELVIEW29_ARB */
-+ { 19403, 0x00008722 }, /* GL_MODELVIEW2_ARB */
-+ { 19421, 0x0000873E }, /* GL_MODELVIEW30_ARB */
-+ { 19440, 0x0000873F }, /* GL_MODELVIEW31_ARB */
-+ { 19459, 0x00008723 }, /* GL_MODELVIEW3_ARB */
-+ { 19477, 0x00008724 }, /* GL_MODELVIEW4_ARB */
-+ { 19495, 0x00008725 }, /* GL_MODELVIEW5_ARB */
-+ { 19513, 0x00008726 }, /* GL_MODELVIEW6_ARB */
-+ { 19531, 0x00008727 }, /* GL_MODELVIEW7_ARB */
-+ { 19549, 0x00008728 }, /* GL_MODELVIEW8_ARB */
-+ { 19567, 0x00008729 }, /* GL_MODELVIEW9_ARB */
-+ { 19585, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */
-+ { 19605, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */
-+ { 19632, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */
-+ { 19657, 0x00002100 }, /* GL_MODULATE */
-+ { 19669, 0x00008744 }, /* GL_MODULATE_ADD_ATI */
-+ { 19689, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */
-+ { 19716, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */
-+ { 19741, 0x00000103 }, /* GL_MULT */
-+ { 19749, 0x0000809D }, /* GL_MULTISAMPLE */
-+ { 19764, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */
-+ { 19784, 0x0000809D }, /* GL_MULTISAMPLE_ARB */
-+ { 19803, 0x20000000 }, /* GL_MULTISAMPLE_BIT */
-+ { 19822, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */
-+ { 19846, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */
-+ { 19869, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */
-+ { 19899, 0x00002A25 }, /* GL_N3F_V3F */
-+ { 19910, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */
-+ { 19930, 0x0000150E }, /* GL_NAND */
-+ { 19938, 0x00002600 }, /* GL_NEAREST */
-+ { 19949, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
-+ { 19980, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
-+ { 20012, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */
-+ { 20037, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */
-+ { 20063, 0x00000200 }, /* GL_NEVER */
-+ { 20072, 0x00001102 }, /* GL_NICEST */
-+ { 20082, 0x00000000 }, /* GL_NONE */
-+ { 20090, 0x00001505 }, /* GL_NOOP */
-+ { 20098, 0x00001508 }, /* GL_NOR */
-+ { 20105, 0x00000BA1 }, /* GL_NORMALIZE */
-+ { 20118, 0x00008075 }, /* GL_NORMAL_ARRAY */
-+ { 20134, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
-+ { 20165, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */
-+ { 20200, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */
-+ { 20224, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */
-+ { 20247, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */
-+ { 20268, 0x00008511 }, /* GL_NORMAL_MAP */
-+ { 20282, 0x00008511 }, /* GL_NORMAL_MAP_ARB */
-+ { 20300, 0x00008511 }, /* GL_NORMAL_MAP_NV */
-+ { 20317, 0x00000205 }, /* GL_NOTEQUAL */
-+ { 20329, 0x00000000 }, /* GL_NO_ERROR */
-+ { 20341, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
-+ { 20375, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */
-+ { 20413, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */
-+ { 20445, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */
-+ { 20487, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */
-+ { 20517, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */
-+ { 20557, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */
-+ { 20588, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */
-+ { 20617, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */
-+ { 20645, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */
-+ { 20675, 0x00002401 }, /* GL_OBJECT_LINEAR */
-+ { 20692, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */
-+ { 20718, 0x00002501 }, /* GL_OBJECT_PLANE */
-+ { 20734, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */
-+ { 20769, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */
-+ { 20791, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */
-+ { 20810, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */
-+ { 20840, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */
-+ { 20861, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */
-+ { 20889, 0x00000001 }, /* GL_ONE */
-+ { 20896, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */
-+ { 20924, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */
-+ { 20956, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */
-+ { 20984, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */
-+ { 21016, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */
-+ { 21039, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */
-+ { 21062, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */
-+ { 21085, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */
-+ { 21108, 0x00008598 }, /* GL_OPERAND0_ALPHA */
-+ { 21126, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */
-+ { 21148, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */
-+ { 21170, 0x00008590 }, /* GL_OPERAND0_RGB */
-+ { 21186, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */
-+ { 21206, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */
-+ { 21226, 0x00008599 }, /* GL_OPERAND1_ALPHA */
-+ { 21244, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */
-+ { 21266, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */
-+ { 21288, 0x00008591 }, /* GL_OPERAND1_RGB */
-+ { 21304, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */
-+ { 21324, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */
-+ { 21344, 0x0000859A }, /* GL_OPERAND2_ALPHA */
-+ { 21362, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */
-+ { 21384, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */
-+ { 21406, 0x00008592 }, /* GL_OPERAND2_RGB */
-+ { 21422, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */
-+ { 21442, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */
-+ { 21462, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */
-+ { 21483, 0x00008593 }, /* GL_OPERAND3_RGB_NV */
-+ { 21502, 0x00001507 }, /* GL_OR */
-+ { 21508, 0x00000A01 }, /* GL_ORDER */
-+ { 21517, 0x0000150D }, /* GL_OR_INVERTED */
-+ { 21532, 0x0000150B }, /* GL_OR_REVERSE */
-+ { 21546, 0x00000505 }, /* GL_OUT_OF_MEMORY */
-+ { 21563, 0x00000D05 }, /* GL_PACK_ALIGNMENT */
-+ { 21581, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */
-+ { 21602, 0x00008758 }, /* GL_PACK_INVERT_MESA */
-+ { 21622, 0x00000D01 }, /* GL_PACK_LSB_FIRST */
-+ { 21640, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */
-+ { 21659, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */
-+ { 21679, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */
-+ { 21699, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */
-+ { 21717, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */
-+ { 21736, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */
-+ { 21761, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */
-+ { 21785, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */
-+ { 21806, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */
-+ { 21828, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */
-+ { 21850, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */
-+ { 21875, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */
-+ { 21899, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */
-+ { 21920, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */
-+ { 21942, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */
-+ { 21964, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */
-+ { 21986, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */
-+ { 22017, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */
-+ { 22037, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */
-+ { 22062, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */
-+ { 22082, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */
-+ { 22107, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */
-+ { 22127, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */
-+ { 22152, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */
-+ { 22172, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */
-+ { 22197, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */
-+ { 22217, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */
-+ { 22242, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */
-+ { 22262, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */
-+ { 22287, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */
-+ { 22307, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */
-+ { 22332, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */
-+ { 22352, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */
-+ { 22377, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */
-+ { 22397, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */
-+ { 22422, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */
-+ { 22442, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */
-+ { 22467, 0x00000020 }, /* GL_PIXEL_MODE_BIT */
-+ { 22485, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */
-+ { 22518, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */
-+ { 22543, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */
-+ { 22578, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */
-+ { 22605, 0x00001B00 }, /* GL_POINT */
-+ { 22614, 0x00000000 }, /* GL_POINTS */
-+ { 22624, 0x00000002 }, /* GL_POINT_BIT */
-+ { 22637, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */
-+ { 22667, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */
-+ { 22701, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */
-+ { 22735, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */
-+ { 22770, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */
-+ { 22799, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */
-+ { 22832, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */
-+ { 22865, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */
-+ { 22899, 0x00000B11 }, /* GL_POINT_SIZE */
-+ { 22913, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */
-+ { 22939, 0x00008127 }, /* GL_POINT_SIZE_MAX */
-+ { 22957, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */
-+ { 22979, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */
-+ { 23001, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */
-+ { 23024, 0x00008126 }, /* GL_POINT_SIZE_MIN */
-+ { 23042, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */
-+ { 23064, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */
-+ { 23086, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */
-+ { 23109, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */
-+ { 23129, 0x00000B10 }, /* GL_POINT_SMOOTH */
-+ { 23145, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */
-+ { 23166, 0x00008861 }, /* GL_POINT_SPRITE */
-+ { 23182, 0x00008861 }, /* GL_POINT_SPRITE_ARB */
-+ { 23202, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */
-+ { 23231, 0x00008861 }, /* GL_POINT_SPRITE_NV */
-+ { 23250, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */
-+ { 23276, 0x00000701 }, /* GL_POINT_TOKEN */
-+ { 23291, 0x00000009 }, /* GL_POLYGON */
-+ { 23302, 0x00000008 }, /* GL_POLYGON_BIT */
-+ { 23317, 0x00000B40 }, /* GL_POLYGON_MODE */
-+ { 23333, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */
-+ { 23356, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */
-+ { 23381, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */
-+ { 23404, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */
-+ { 23427, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */
-+ { 23451, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */
-+ { 23475, 0x00000B41 }, /* GL_POLYGON_SMOOTH */
-+ { 23493, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */
-+ { 23516, 0x00000B42 }, /* GL_POLYGON_STIPPLE */
-+ { 23535, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */
-+ { 23558, 0x00000703 }, /* GL_POLYGON_TOKEN */
-+ { 23575, 0x00001203 }, /* GL_POSITION */
-+ { 23587, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
-+ { 23619, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */
-+ { 23655, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
-+ { 23688, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */
-+ { 23725, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
-+ { 23756, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */
-+ { 23791, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
-+ { 23823, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */
-+ { 23859, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
-+ { 23892, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
-+ { 23924, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */
-+ { 23960, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
-+ { 23993, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */
-+ { 24030, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */
-+ { 24060, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */
-+ { 24094, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */
-+ { 24125, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */
-+ { 24160, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
-+ { 24191, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */
-+ { 24226, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
-+ { 24258, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */
-+ { 24294, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */
-+ { 24324, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */
-+ { 24358, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */
-+ { 24389, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */
-+ { 24424, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */
-+ { 24456, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */
-+ { 24487, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */
-+ { 24522, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */
-+ { 24554, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */
-+ { 24590, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */
-+ { 24619, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */
-+ { 24652, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */
-+ { 24682, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */
-+ { 24716, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
-+ { 24755, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
-+ { 24788, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
-+ { 24828, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
-+ { 24862, 0x00008578 }, /* GL_PREVIOUS */
-+ { 24874, 0x00008578 }, /* GL_PREVIOUS_ARB */
-+ { 24890, 0x00008578 }, /* GL_PREVIOUS_EXT */
-+ { 24906, 0x00008577 }, /* GL_PRIMARY_COLOR */
-+ { 24923, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */
-+ { 24944, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */
-+ { 24965, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
-+ { 24998, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
-+ { 25030, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */
-+ { 25053, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */
-+ { 25076, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */
-+ { 25106, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */
-+ { 25135, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */
-+ { 25163, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */
-+ { 25185, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */
-+ { 25213, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */
-+ { 25241, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */
-+ { 25263, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */
-+ { 25284, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
-+ { 25324, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
-+ { 25363, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
-+ { 25393, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
-+ { 25428, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
-+ { 25461, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
-+ { 25495, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
-+ { 25534, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
-+ { 25573, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */
-+ { 25595, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */
-+ { 25621, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */
-+ { 25645, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */
-+ { 25668, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */
-+ { 25690, 0x00008628 }, /* GL_PROGRAM_STRING_NV */
-+ { 25711, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */
-+ { 25732, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */
-+ { 25759, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
-+ { 25791, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
-+ { 25823, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
-+ { 25858, 0x00001701 }, /* GL_PROJECTION */
-+ { 25872, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */
-+ { 25893, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */
-+ { 25919, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */
-+ { 25940, 0x00008025 }, /* GL_PROXY_HISTOGRAM */
-+ { 25959, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */
-+ { 25982, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
-+ { 26021, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
-+ { 26059, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */
-+ { 26079, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */
-+ { 26109, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */
-+ { 26133, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */
-+ { 26153, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */
-+ { 26183, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */
-+ { 26207, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */
-+ { 26227, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
-+ { 26260, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */
-+ { 26286, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */
-+ { 26316, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */
-+ { 26347, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */
-+ { 26377, 0x00002003 }, /* GL_Q */
-+ { 26382, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */
-+ { 26407, 0x00000007 }, /* GL_QUADS */
-+ { 26416, 0x00008614 }, /* GL_QUAD_MESH_SUN */
-+ { 26433, 0x00000008 }, /* GL_QUAD_STRIP */
-+ { 26447, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */
-+ { 26469, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */
-+ { 26495, 0x00008866 }, /* GL_QUERY_RESULT */
-+ { 26511, 0x00008866 }, /* GL_QUERY_RESULT_ARB */
-+ { 26531, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */
-+ { 26557, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */
-+ { 26587, 0x00002002 }, /* GL_R */
-+ { 26592, 0x00002A10 }, /* GL_R3_G3_B2 */
-+ { 26604, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
-+ { 26637, 0x00000C02 }, /* GL_READ_BUFFER */
-+ { 26652, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */
-+ { 26684, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */
-+ { 26708, 0x000088B8 }, /* GL_READ_ONLY */
-+ { 26721, 0x000088B8 }, /* GL_READ_ONLY_ARB */
-+ { 26738, 0x000088BA }, /* GL_READ_WRITE */
-+ { 26752, 0x000088BA }, /* GL_READ_WRITE_ARB */
-+ { 26770, 0x00001903 }, /* GL_RED */
-+ { 26777, 0x00008016 }, /* GL_REDUCE */
-+ { 26787, 0x00008016 }, /* GL_REDUCE_EXT */
-+ { 26801, 0x00000D15 }, /* GL_RED_BIAS */
-+ { 26813, 0x00000D52 }, /* GL_RED_BITS */
-+ { 26825, 0x00000D14 }, /* GL_RED_SCALE */
-+ { 26838, 0x00008512 }, /* GL_REFLECTION_MAP */
-+ { 26856, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */
-+ { 26878, 0x00008512 }, /* GL_REFLECTION_MAP_NV */
-+ { 26899, 0x00001C00 }, /* GL_RENDER */
-+ { 26909, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */
-+ { 26937, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */
-+ { 26957, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */
-+ { 26984, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */
-+ { 27020, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */
-+ { 27046, 0x00001F01 }, /* GL_RENDERER */
-+ { 27058, 0x00000C40 }, /* GL_RENDER_MODE */
-+ { 27073, 0x00002901 }, /* GL_REPEAT */
-+ { 27083, 0x00001E01 }, /* GL_REPLACE */
-+ { 27094, 0x00008062 }, /* GL_REPLACE_EXT */
-+ { 27109, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */
-+ { 27132, 0x0000803A }, /* GL_RESCALE_NORMAL */
-+ { 27150, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */
-+ { 27172, 0x00000102 }, /* GL_RETURN */
-+ { 27182, 0x00001907 }, /* GL_RGB */
-+ { 27189, 0x00008052 }, /* GL_RGB10 */
-+ { 27198, 0x00008059 }, /* GL_RGB10_A2 */
-+ { 27210, 0x00008059 }, /* GL_RGB10_A2_EXT */
-+ { 27226, 0x00008052 }, /* GL_RGB10_EXT */
-+ { 27239, 0x00008053 }, /* GL_RGB12 */
-+ { 27248, 0x00008053 }, /* GL_RGB12_EXT */
-+ { 27261, 0x00008054 }, /* GL_RGB16 */
-+ { 27270, 0x00008054 }, /* GL_RGB16_EXT */
-+ { 27283, 0x0000804E }, /* GL_RGB2_EXT */
-+ { 27295, 0x0000804F }, /* GL_RGB4 */
-+ { 27303, 0x0000804F }, /* GL_RGB4_EXT */
-+ { 27315, 0x000083A1 }, /* GL_RGB4_S3TC */
-+ { 27328, 0x00008050 }, /* GL_RGB5 */
-+ { 27336, 0x00008057 }, /* GL_RGB5_A1 */
-+ { 27347, 0x00008057 }, /* GL_RGB5_A1_EXT */
-+ { 27362, 0x00008050 }, /* GL_RGB5_EXT */
-+ { 27374, 0x00008051 }, /* GL_RGB8 */
-+ { 27382, 0x00008051 }, /* GL_RGB8_EXT */
-+ { 27394, 0x00001908 }, /* GL_RGBA */
-+ { 27402, 0x0000805A }, /* GL_RGBA12 */
-+ { 27412, 0x0000805A }, /* GL_RGBA12_EXT */
-+ { 27426, 0x0000805B }, /* GL_RGBA16 */
-+ { 27436, 0x0000805B }, /* GL_RGBA16_EXT */
-+ { 27450, 0x00008055 }, /* GL_RGBA2 */
-+ { 27459, 0x00008055 }, /* GL_RGBA2_EXT */
-+ { 27472, 0x00008056 }, /* GL_RGBA4 */
-+ { 27481, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */
-+ { 27500, 0x00008056 }, /* GL_RGBA4_EXT */
-+ { 27513, 0x000083A3 }, /* GL_RGBA4_S3TC */
-+ { 27527, 0x00008058 }, /* GL_RGBA8 */
-+ { 27536, 0x00008058 }, /* GL_RGBA8_EXT */
-+ { 27549, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */
-+ { 27567, 0x00000C31 }, /* GL_RGBA_MODE */
-+ { 27580, 0x000083A2 }, /* GL_RGBA_S3TC */
-+ { 27593, 0x000083A0 }, /* GL_RGB_S3TC */
-+ { 27605, 0x00008573 }, /* GL_RGB_SCALE */
-+ { 27618, 0x00008573 }, /* GL_RGB_SCALE_ARB */
-+ { 27635, 0x00008573 }, /* GL_RGB_SCALE_EXT */
-+ { 27652, 0x00000407 }, /* GL_RIGHT */
-+ { 27661, 0x00002000 }, /* GL_S */
-+ { 27666, 0x00008B5D }, /* GL_SAMPLER_1D */
-+ { 27680, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */
-+ { 27701, 0x00008B5E }, /* GL_SAMPLER_2D */
-+ { 27715, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */
-+ { 27736, 0x00008B5F }, /* GL_SAMPLER_3D */
-+ { 27750, 0x00008B60 }, /* GL_SAMPLER_CUBE */
-+ { 27766, 0x000080A9 }, /* GL_SAMPLES */
-+ { 27777, 0x000086B4 }, /* GL_SAMPLES_3DFX */
-+ { 27793, 0x000080A9 }, /* GL_SAMPLES_ARB */
-+ { 27808, 0x00008914 }, /* GL_SAMPLES_PASSED */
-+ { 27826, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */
-+ { 27848, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
-+ { 27876, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */
-+ { 27908, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */
-+ { 27931, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */
-+ { 27958, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */
-+ { 27976, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */
-+ { 27999, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */
-+ { 28021, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */
-+ { 28040, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */
-+ { 28063, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */
-+ { 28089, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */
-+ { 28119, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */
-+ { 28144, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */
-+ { 28173, 0x00080000 }, /* GL_SCISSOR_BIT */
-+ { 28188, 0x00000C10 }, /* GL_SCISSOR_BOX */
-+ { 28203, 0x00000C11 }, /* GL_SCISSOR_TEST */
-+ { 28219, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */
-+ { 28244, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
-+ { 28284, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */
-+ { 28328, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
-+ { 28361, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
-+ { 28391, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
-+ { 28423, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
-+ { 28453, 0x00001C02 }, /* GL_SELECT */
-+ { 28463, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */
-+ { 28491, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */
-+ { 28516, 0x00008012 }, /* GL_SEPARABLE_2D */
-+ { 28532, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */
-+ { 28559, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */
-+ { 28590, 0x0000150F }, /* GL_SET */
-+ { 28597, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */
-+ { 28618, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */
-+ { 28642, 0x00008B4F }, /* GL_SHADER_TYPE */
-+ { 28657, 0x00000B54 }, /* GL_SHADE_MODEL */
-+ { 28672, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */
-+ { 28700, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */
-+ { 28723, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */
-+ { 28753, 0x00001601 }, /* GL_SHININESS */
-+ { 28766, 0x00001402 }, /* GL_SHORT */
-+ { 28775, 0x000081F9 }, /* GL_SINGLE_COLOR */
-+ { 28791, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */
-+ { 28811, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */
-+ { 28830, 0x00001D01 }, /* GL_SMOOTH */
-+ { 28840, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */
-+ { 28873, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */
-+ { 28900, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */
-+ { 28933, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */
-+ { 28960, 0x00008588 }, /* GL_SOURCE0_ALPHA */
-+ { 28977, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */
-+ { 28998, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */
-+ { 29019, 0x00008580 }, /* GL_SOURCE0_RGB */
-+ { 29034, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */
-+ { 29053, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */
-+ { 29072, 0x00008589 }, /* GL_SOURCE1_ALPHA */
-+ { 29089, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */
-+ { 29110, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */
-+ { 29131, 0x00008581 }, /* GL_SOURCE1_RGB */
-+ { 29146, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */
-+ { 29165, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */
-+ { 29184, 0x0000858A }, /* GL_SOURCE2_ALPHA */
-+ { 29201, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */
-+ { 29222, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */
-+ { 29243, 0x00008582 }, /* GL_SOURCE2_RGB */
-+ { 29258, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */
-+ { 29277, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */
-+ { 29296, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */
-+ { 29316, 0x00008583 }, /* GL_SOURCE3_RGB_NV */
-+ { 29334, 0x00001202 }, /* GL_SPECULAR */
-+ { 29346, 0x00002402 }, /* GL_SPHERE_MAP */
-+ { 29360, 0x00001206 }, /* GL_SPOT_CUTOFF */
-+ { 29375, 0x00001204 }, /* GL_SPOT_DIRECTION */
-+ { 29393, 0x00001205 }, /* GL_SPOT_EXPONENT */
-+ { 29410, 0x00008588 }, /* GL_SRC0_ALPHA */
-+ { 29424, 0x00008580 }, /* GL_SRC0_RGB */
-+ { 29436, 0x00008589 }, /* GL_SRC1_ALPHA */
-+ { 29450, 0x00008581 }, /* GL_SRC1_RGB */
-+ { 29462, 0x0000858A }, /* GL_SRC2_ALPHA */
-+ { 29476, 0x00008582 }, /* GL_SRC2_RGB */
-+ { 29488, 0x00000302 }, /* GL_SRC_ALPHA */
-+ { 29501, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */
-+ { 29523, 0x00000300 }, /* GL_SRC_COLOR */
-+ { 29536, 0x00000503 }, /* GL_STACK_OVERFLOW */
-+ { 29554, 0x00000504 }, /* GL_STACK_UNDERFLOW */
-+ { 29573, 0x000088E6 }, /* GL_STATIC_COPY */
-+ { 29588, 0x000088E6 }, /* GL_STATIC_COPY_ARB */
-+ { 29607, 0x000088E4 }, /* GL_STATIC_DRAW */
-+ { 29622, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */
-+ { 29641, 0x000088E5 }, /* GL_STATIC_READ */
-+ { 29656, 0x000088E5 }, /* GL_STATIC_READ_ARB */
-+ { 29675, 0x00001802 }, /* GL_STENCIL */
-+ { 29686, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */
-+ { 29712, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */
-+ { 29733, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */
-+ { 29754, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
-+ { 29786, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
-+ { 29818, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */
-+ { 29838, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */
-+ { 29865, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */
-+ { 29891, 0x00000D57 }, /* GL_STENCIL_BITS */
-+ { 29907, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */
-+ { 29929, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */
-+ { 29952, 0x00000B94 }, /* GL_STENCIL_FAIL */
-+ { 29968, 0x00000B92 }, /* GL_STENCIL_FUNC */
-+ { 29984, 0x00001901 }, /* GL_STENCIL_INDEX */
-+ { 30001, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */
-+ { 30024, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */
-+ { 30046, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */
-+ { 30068, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */
-+ { 30090, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */
-+ { 30111, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */
-+ { 30138, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */
-+ { 30165, 0x00000B97 }, /* GL_STENCIL_REF */
-+ { 30180, 0x00000B90 }, /* GL_STENCIL_TEST */
-+ { 30196, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
-+ { 30225, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */
-+ { 30247, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */
-+ { 30268, 0x00000C33 }, /* GL_STEREO */
-+ { 30278, 0x000088E2 }, /* GL_STREAM_COPY */
-+ { 30293, 0x000088E2 }, /* GL_STREAM_COPY_ARB */
-+ { 30312, 0x000088E0 }, /* GL_STREAM_DRAW */
-+ { 30327, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */
-+ { 30346, 0x000088E1 }, /* GL_STREAM_READ */
-+ { 30361, 0x000088E1 }, /* GL_STREAM_READ_ARB */
-+ { 30380, 0x00000D50 }, /* GL_SUBPIXEL_BITS */
-+ { 30397, 0x000084E7 }, /* GL_SUBTRACT */
-+ { 30409, 0x000084E7 }, /* GL_SUBTRACT_ARB */
-+ { 30425, 0x00002001 }, /* GL_T */
-+ { 30430, 0x00002A2A }, /* GL_T2F_C3F_V3F */
-+ { 30445, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */
-+ { 30464, 0x00002A29 }, /* GL_T2F_C4UB_V3F */
-+ { 30480, 0x00002A2B }, /* GL_T2F_N3F_V3F */
-+ { 30495, 0x00002A27 }, /* GL_T2F_V3F */
-+ { 30506, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */
-+ { 30525, 0x00002A28 }, /* GL_T4F_V4F */
-+ { 30536, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */
-+ { 30559, 0x00001702 }, /* GL_TEXTURE */
-+ { 30570, 0x000084C0 }, /* GL_TEXTURE0 */
-+ { 30582, 0x000084C0 }, /* GL_TEXTURE0_ARB */
-+ { 30598, 0x000084C1 }, /* GL_TEXTURE1 */
-+ { 30610, 0x000084CA }, /* GL_TEXTURE10 */
-+ { 30623, 0x000084CA }, /* GL_TEXTURE10_ARB */
-+ { 30640, 0x000084CB }, /* GL_TEXTURE11 */
-+ { 30653, 0x000084CB }, /* GL_TEXTURE11_ARB */
-+ { 30670, 0x000084CC }, /* GL_TEXTURE12 */
-+ { 30683, 0x000084CC }, /* GL_TEXTURE12_ARB */
-+ { 30700, 0x000084CD }, /* GL_TEXTURE13 */
-+ { 30713, 0x000084CD }, /* GL_TEXTURE13_ARB */
-+ { 30730, 0x000084CE }, /* GL_TEXTURE14 */
-+ { 30743, 0x000084CE }, /* GL_TEXTURE14_ARB */
-+ { 30760, 0x000084CF }, /* GL_TEXTURE15 */
-+ { 30773, 0x000084CF }, /* GL_TEXTURE15_ARB */
-+ { 30790, 0x000084D0 }, /* GL_TEXTURE16 */
-+ { 30803, 0x000084D0 }, /* GL_TEXTURE16_ARB */
-+ { 30820, 0x000084D1 }, /* GL_TEXTURE17 */
-+ { 30833, 0x000084D1 }, /* GL_TEXTURE17_ARB */
-+ { 30850, 0x000084D2 }, /* GL_TEXTURE18 */
-+ { 30863, 0x000084D2 }, /* GL_TEXTURE18_ARB */
-+ { 30880, 0x000084D3 }, /* GL_TEXTURE19 */
-+ { 30893, 0x000084D3 }, /* GL_TEXTURE19_ARB */
-+ { 30910, 0x000084C1 }, /* GL_TEXTURE1_ARB */
-+ { 30926, 0x000084C2 }, /* GL_TEXTURE2 */
-+ { 30938, 0x000084D4 }, /* GL_TEXTURE20 */
-+ { 30951, 0x000084D4 }, /* GL_TEXTURE20_ARB */
-+ { 30968, 0x000084D5 }, /* GL_TEXTURE21 */
-+ { 30981, 0x000084D5 }, /* GL_TEXTURE21_ARB */
-+ { 30998, 0x000084D6 }, /* GL_TEXTURE22 */
-+ { 31011, 0x000084D6 }, /* GL_TEXTURE22_ARB */
-+ { 31028, 0x000084D7 }, /* GL_TEXTURE23 */
-+ { 31041, 0x000084D7 }, /* GL_TEXTURE23_ARB */
-+ { 31058, 0x000084D8 }, /* GL_TEXTURE24 */
-+ { 31071, 0x000084D8 }, /* GL_TEXTURE24_ARB */
-+ { 31088, 0x000084D9 }, /* GL_TEXTURE25 */
-+ { 31101, 0x000084D9 }, /* GL_TEXTURE25_ARB */
-+ { 31118, 0x000084DA }, /* GL_TEXTURE26 */
-+ { 31131, 0x000084DA }, /* GL_TEXTURE26_ARB */
-+ { 31148, 0x000084DB }, /* GL_TEXTURE27 */
-+ { 31161, 0x000084DB }, /* GL_TEXTURE27_ARB */
-+ { 31178, 0x000084DC }, /* GL_TEXTURE28 */
-+ { 31191, 0x000084DC }, /* GL_TEXTURE28_ARB */
-+ { 31208, 0x000084DD }, /* GL_TEXTURE29 */
-+ { 31221, 0x000084DD }, /* GL_TEXTURE29_ARB */
-+ { 31238, 0x000084C2 }, /* GL_TEXTURE2_ARB */
-+ { 31254, 0x000084C3 }, /* GL_TEXTURE3 */
-+ { 31266, 0x000084DE }, /* GL_TEXTURE30 */
-+ { 31279, 0x000084DE }, /* GL_TEXTURE30_ARB */
-+ { 31296, 0x000084DF }, /* GL_TEXTURE31 */
-+ { 31309, 0x000084DF }, /* GL_TEXTURE31_ARB */
-+ { 31326, 0x000084C3 }, /* GL_TEXTURE3_ARB */
-+ { 31342, 0x000084C4 }, /* GL_TEXTURE4 */
-+ { 31354, 0x000084C4 }, /* GL_TEXTURE4_ARB */
-+ { 31370, 0x000084C5 }, /* GL_TEXTURE5 */
-+ { 31382, 0x000084C5 }, /* GL_TEXTURE5_ARB */
-+ { 31398, 0x000084C6 }, /* GL_TEXTURE6 */
-+ { 31410, 0x000084C6 }, /* GL_TEXTURE6_ARB */
-+ { 31426, 0x000084C7 }, /* GL_TEXTURE7 */
-+ { 31438, 0x000084C7 }, /* GL_TEXTURE7_ARB */
-+ { 31454, 0x000084C8 }, /* GL_TEXTURE8 */
-+ { 31466, 0x000084C8 }, /* GL_TEXTURE8_ARB */
-+ { 31482, 0x000084C9 }, /* GL_TEXTURE9 */
-+ { 31494, 0x000084C9 }, /* GL_TEXTURE9_ARB */
-+ { 31510, 0x00000DE0 }, /* GL_TEXTURE_1D */
-+ { 31524, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */
-+ { 31548, 0x00000DE1 }, /* GL_TEXTURE_2D */
-+ { 31562, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */
-+ { 31586, 0x0000806F }, /* GL_TEXTURE_3D */
-+ { 31600, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */
-+ { 31622, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */
-+ { 31648, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */
-+ { 31670, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */
-+ { 31692, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */
-+ { 31724, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */
-+ { 31746, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */
-+ { 31778, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */
-+ { 31800, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */
-+ { 31828, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */
-+ { 31860, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */
-+ { 31893, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */
-+ { 31925, 0x00040000 }, /* GL_TEXTURE_BIT */
-+ { 31940, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */
-+ { 31961, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */
-+ { 31986, 0x00001005 }, /* GL_TEXTURE_BORDER */
-+ { 32004, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */
-+ { 32028, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
-+ { 32059, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
-+ { 32089, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
-+ { 32119, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
-+ { 32154, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
-+ { 32185, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
-+ { 32223, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */
-+ { 32250, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
-+ { 32282, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
-+ { 32316, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */
-+ { 32340, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */
-+ { 32368, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */
-+ { 32392, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */
-+ { 32420, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
-+ { 32453, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */
-+ { 32477, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */
-+ { 32499, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */
-+ { 32521, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */
-+ { 32547, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */
-+ { 32581, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
-+ { 32614, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */
-+ { 32651, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */
-+ { 32679, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */
-+ { 32711, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */
-+ { 32734, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
-+ { 32772, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */
-+ { 32814, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */
-+ { 32845, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */
-+ { 32873, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
-+ { 32903, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */
-+ { 32931, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */
-+ { 32951, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */
-+ { 32975, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
-+ { 33006, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */
-+ { 33041, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
-+ { 33072, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */
-+ { 33107, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
-+ { 33138, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */
-+ { 33173, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
-+ { 33204, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */
-+ { 33239, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
-+ { 33270, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */
-+ { 33305, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
-+ { 33336, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */
-+ { 33371, 0x00008071 }, /* GL_TEXTURE_DEPTH */
-+ { 33388, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */
-+ { 33410, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */
-+ { 33436, 0x00002300 }, /* GL_TEXTURE_ENV */
-+ { 33451, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */
-+ { 33472, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */
-+ { 33492, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */
-+ { 33518, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */
-+ { 33538, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */
-+ { 33555, 0x00000C62 }, /* GL_TEXTURE_GEN_R */
-+ { 33572, 0x00000C60 }, /* GL_TEXTURE_GEN_S */
-+ { 33589, 0x00000C61 }, /* GL_TEXTURE_GEN_T */
-+ { 33606, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */
-+ { 33631, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */
-+ { 33653, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */
-+ { 33679, 0x00001001 }, /* GL_TEXTURE_HEIGHT */
-+ { 33697, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */
-+ { 33723, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */
-+ { 33749, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */
-+ { 33779, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */
-+ { 33806, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */
-+ { 33831, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */
-+ { 33851, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */
-+ { 33875, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
-+ { 33902, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
-+ { 33929, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
-+ { 33956, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */
-+ { 33982, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */
-+ { 34012, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */
-+ { 34034, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */
-+ { 34052, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
-+ { 34082, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
-+ { 34110, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
-+ { 34138, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
-+ { 34166, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */
-+ { 34187, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */
-+ { 34206, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */
-+ { 34228, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */
-+ { 34247, 0x00008066 }, /* GL_TEXTURE_PRIORITY */
-+ { 34267, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */
-+ { 34292, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */
-+ { 34316, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */
-+ { 34336, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */
-+ { 34360, 0x00008067 }, /* GL_TEXTURE_RESIDENT */
-+ { 34380, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */
-+ { 34403, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */
-+ { 34428, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
-+ { 34462, 0x00001000 }, /* GL_TEXTURE_WIDTH */
-+ { 34479, 0x00008072 }, /* GL_TEXTURE_WRAP_R */
-+ { 34497, 0x00002802 }, /* GL_TEXTURE_WRAP_S */
-+ { 34515, 0x00002803 }, /* GL_TEXTURE_WRAP_T */
-+ { 34533, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */
-+ { 34553, 0x00008648 }, /* GL_TRACK_MATRIX_NV */
-+ { 34572, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */
-+ { 34601, 0x00001000 }, /* GL_TRANSFORM_BIT */
-+ { 34618, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */
-+ { 34644, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */
-+ { 34674, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
-+ { 34706, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
-+ { 34736, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */
-+ { 34770, 0x0000862C }, /* GL_TRANSPOSE_NV */
-+ { 34786, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */
-+ { 34817, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */
-+ { 34852, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */
-+ { 34880, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */
-+ { 34912, 0x00000004 }, /* GL_TRIANGLES */
-+ { 34925, 0x00000006 }, /* GL_TRIANGLE_FAN */
-+ { 34941, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */
-+ { 34962, 0x00000005 }, /* GL_TRIANGLE_STRIP */
-+ { 34980, 0x00000001 }, /* GL_TRUE */
-+ { 34988, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */
-+ { 35008, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */
-+ { 35031, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */
-+ { 35051, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */
-+ { 35072, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */
-+ { 35094, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */
-+ { 35116, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */
-+ { 35136, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */
-+ { 35157, 0x00001401 }, /* GL_UNSIGNED_BYTE */
-+ { 35174, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */
-+ { 35201, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */
-+ { 35224, 0x00001405 }, /* GL_UNSIGNED_INT */
-+ { 35240, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */
-+ { 35267, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */
-+ { 35291, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */
-+ { 35322, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */
-+ { 35346, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */
-+ { 35374, 0x00001403 }, /* GL_UNSIGNED_SHORT */
-+ { 35392, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
-+ { 35422, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */
-+ { 35448, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
-+ { 35478, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */
-+ { 35504, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */
-+ { 35528, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */
-+ { 35556, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */
-+ { 35584, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */
-+ { 35611, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
-+ { 35643, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */
-+ { 35674, 0x00008CA2 }, /* GL_UPPER_LEFT */
-+ { 35688, 0x00002A20 }, /* GL_V2F */
-+ { 35695, 0x00002A21 }, /* GL_V3F */
-+ { 35702, 0x00008B83 }, /* GL_VALIDATE_STATUS */
-+ { 35721, 0x00001F00 }, /* GL_VENDOR */
-+ { 35731, 0x00001F02 }, /* GL_VERSION */
-+ { 35742, 0x00008074 }, /* GL_VERTEX_ARRAY */
-+ { 35758, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */
-+ { 35788, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
-+ { 35819, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */
-+ { 35854, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */
-+ { 35878, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */
-+ { 35899, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */
-+ { 35922, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */
-+ { 35943, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
-+ { 35970, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
-+ { 35998, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
-+ { 36026, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
-+ { 36054, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
-+ { 36082, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
-+ { 36110, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
-+ { 36138, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
-+ { 36165, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
-+ { 36192, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
-+ { 36219, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
-+ { 36246, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
-+ { 36273, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
-+ { 36300, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
-+ { 36327, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
-+ { 36354, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
-+ { 36381, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
-+ { 36419, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */
-+ { 36461, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
-+ { 36492, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */
-+ { 36527, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
-+ { 36561, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */
-+ { 36599, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
-+ { 36630, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */
-+ { 36665, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
-+ { 36693, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */
-+ { 36725, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
-+ { 36755, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */
-+ { 36789, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
-+ { 36817, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */
-+ { 36849, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */
-+ { 36869, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */
-+ { 36891, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */
-+ { 36920, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */
-+ { 36941, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */
-+ { 36970, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */
-+ { 37003, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */
-+ { 37035, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */
-+ { 37062, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */
-+ { 37093, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */
-+ { 37123, 0x00008B31 }, /* GL_VERTEX_SHADER */
-+ { 37140, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */
-+ { 37161, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */
-+ { 37188, 0x00000BA2 }, /* GL_VIEWPORT */
-+ { 37200, 0x00000800 }, /* GL_VIEWPORT_BIT */
-+ { 37216, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */
-+ { 37236, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
-+ { 37267, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */
-+ { 37302, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */
-+ { 37330, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */
-+ { 37355, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
-+ { 37382, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */
-+ { 37407, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */
-+ { 37431, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */
-+ { 37450, 0x000088B9 }, /* GL_WRITE_ONLY */
-+ { 37464, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */
-+ { 37482, 0x00001506 }, /* GL_XOR */
-+ { 37489, 0x000085B9 }, /* GL_YCBCR_422_APPLE */
-+ { 37508, 0x00008757 }, /* GL_YCBCR_MESA */
-+ { 37522, 0x00000000 }, /* GL_ZERO */
-+ { 37530, 0x00000D16 }, /* GL_ZOOM_X */
-+ { 37540, 0x00000D17 }, /* GL_ZOOM_Y */
-+};
-+
-+static const unsigned reduced_enums[1284] =
-+{
-+ 436, /* GL_FALSE */
-+ 645, /* GL_LINES */
-+ 647, /* GL_LINE_LOOP */
-+ 654, /* GL_LINE_STRIP */
-+ 1637, /* GL_TRIANGLES */
-+ 1640, /* GL_TRIANGLE_STRIP */
-+ 1638, /* GL_TRIANGLE_FAN */
-+ 1211, /* GL_QUADS */
-+ 1213, /* GL_QUAD_STRIP */
-+ 1099, /* GL_POLYGON */
-+ 1111, /* GL_POLYGON_STIPPLE_BIT */
-+ 1064, /* GL_PIXEL_MODE_BIT */
-+ 632, /* GL_LIGHTING_BIT */
-+ 458, /* GL_FOG_BIT */
-+ 8, /* GL_ACCUM */
-+ 664, /* GL_LOAD */
-+ 1253, /* GL_RETURN */
-+ 937, /* GL_MULT */
-+ 23, /* GL_ADD */
-+ 953, /* GL_NEVER */
-+ 622, /* GL_LESS */
-+ 426, /* GL_EQUAL */
-+ 621, /* GL_LEQUAL */
-+ 547, /* GL_GREATER */
-+ 968, /* GL_NOTEQUAL */
-+ 522, /* GL_GEQUAL */
-+ 46, /* GL_ALWAYS */
-+ 1386, /* GL_SRC_COLOR */
-+ 997, /* GL_ONE_MINUS_SRC_COLOR */
-+ 1384, /* GL_SRC_ALPHA */
-+ 996, /* GL_ONE_MINUS_SRC_ALPHA */
-+ 406, /* GL_DST_ALPHA */
-+ 994, /* GL_ONE_MINUS_DST_ALPHA */
-+ 407, /* GL_DST_COLOR */
-+ 995, /* GL_ONE_MINUS_DST_COLOR */
-+ 1385, /* GL_SRC_ALPHA_SATURATE */
-+ 510, /* GL_FRONT_LEFT */
-+ 511, /* GL_FRONT_RIGHT */
-+ 69, /* GL_BACK_LEFT */
-+ 70, /* GL_BACK_RIGHT */
-+ 507, /* GL_FRONT */
-+ 68, /* GL_BACK */
-+ 620, /* GL_LEFT */
-+ 1293, /* GL_RIGHT */
-+ 508, /* GL_FRONT_AND_BACK */
-+ 63, /* GL_AUX0 */
-+ 64, /* GL_AUX1 */
-+ 65, /* GL_AUX2 */
-+ 66, /* GL_AUX3 */
-+ 612, /* GL_INVALID_ENUM */
-+ 615, /* GL_INVALID_VALUE */
-+ 614, /* GL_INVALID_OPERATION */
-+ 1387, /* GL_STACK_OVERFLOW */
-+ 1388, /* GL_STACK_UNDERFLOW */
-+ 1022, /* GL_OUT_OF_MEMORY */
-+ 613, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */
-+ 0, /* GL_2D */
-+ 2, /* GL_3D */
-+ 3, /* GL_3D_COLOR */
-+ 4, /* GL_3D_COLOR_TEXTURE */
-+ 6, /* GL_4D_COLOR_TEXTURE */
-+ 1042, /* GL_PASS_THROUGH_TOKEN */
-+ 1098, /* GL_POINT_TOKEN */
-+ 655, /* GL_LINE_TOKEN */
-+ 1112, /* GL_POLYGON_TOKEN */
-+ 74, /* GL_BITMAP_TOKEN */
-+ 405, /* GL_DRAW_PIXEL_TOKEN */
-+ 271, /* GL_COPY_PIXEL_TOKEN */
-+ 648, /* GL_LINE_RESET_TOKEN */
-+ 429, /* GL_EXP */
-+ 430, /* GL_EXP2 */
-+ 304, /* GL_CW */
-+ 116, /* GL_CCW */
-+ 137, /* GL_COEFF */
-+ 1019, /* GL_ORDER */
-+ 344, /* GL_DOMAIN */
-+ 279, /* GL_CURRENT_COLOR */
-+ 282, /* GL_CURRENT_INDEX */
-+ 288, /* GL_CURRENT_NORMAL */
-+ 300, /* GL_CURRENT_TEXTURE_COORDS */
-+ 293, /* GL_CURRENT_RASTER_COLOR */
-+ 295, /* GL_CURRENT_RASTER_INDEX */
-+ 298, /* GL_CURRENT_RASTER_TEXTURE_COORDS */
-+ 296, /* GL_CURRENT_RASTER_POSITION */
-+ 297, /* GL_CURRENT_RASTER_POSITION_VALID */
-+ 294, /* GL_CURRENT_RASTER_DISTANCE */
-+ 1091, /* GL_POINT_SMOOTH */
-+ 1080, /* GL_POINT_SIZE */
-+ 1090, /* GL_POINT_SIZE_RANGE */
-+ 1081, /* GL_POINT_SIZE_GRANULARITY */
-+ 649, /* GL_LINE_SMOOTH */
-+ 656, /* GL_LINE_WIDTH */
-+ 658, /* GL_LINE_WIDTH_RANGE */
-+ 657, /* GL_LINE_WIDTH_GRANULARITY */
-+ 651, /* GL_LINE_STIPPLE */
-+ 652, /* GL_LINE_STIPPLE_PATTERN */
-+ 653, /* GL_LINE_STIPPLE_REPEAT */
-+ 663, /* GL_LIST_MODE */
-+ 822, /* GL_MAX_LIST_NESTING */
-+ 660, /* GL_LIST_BASE */
-+ 662, /* GL_LIST_INDEX */
-+ 1101, /* GL_POLYGON_MODE */
-+ 1108, /* GL_POLYGON_SMOOTH */
-+ 1110, /* GL_POLYGON_STIPPLE */
-+ 414, /* GL_EDGE_FLAG */
-+ 272, /* GL_CULL_FACE */
-+ 273, /* GL_CULL_FACE_MODE */
-+ 509, /* GL_FRONT_FACE */
-+ 631, /* GL_LIGHTING */
-+ 636, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
-+ 637, /* GL_LIGHT_MODEL_TWO_SIDE */
-+ 633, /* GL_LIGHT_MODEL_AMBIENT */
-+ 1339, /* GL_SHADE_MODEL */
-+ 168, /* GL_COLOR_MATERIAL_FACE */
-+ 169, /* GL_COLOR_MATERIAL_PARAMETER */
-+ 167, /* GL_COLOR_MATERIAL */
-+ 457, /* GL_FOG */
-+ 479, /* GL_FOG_INDEX */
-+ 475, /* GL_FOG_DENSITY */
-+ 483, /* GL_FOG_START */
-+ 477, /* GL_FOG_END */
-+ 480, /* GL_FOG_MODE */
-+ 459, /* GL_FOG_COLOR */
-+ 333, /* GL_DEPTH_RANGE */
-+ 338, /* GL_DEPTH_TEST */
-+ 341, /* GL_DEPTH_WRITEMASK */
-+ 321, /* GL_DEPTH_CLEAR_VALUE */
-+ 332, /* GL_DEPTH_FUNC */
-+ 12, /* GL_ACCUM_CLEAR_VALUE */
-+ 1418, /* GL_STENCIL_TEST */
-+ 1406, /* GL_STENCIL_CLEAR_VALUE */
-+ 1408, /* GL_STENCIL_FUNC */
-+ 1420, /* GL_STENCIL_VALUE_MASK */
-+ 1407, /* GL_STENCIL_FAIL */
-+ 1415, /* GL_STENCIL_PASS_DEPTH_FAIL */
-+ 1416, /* GL_STENCIL_PASS_DEPTH_PASS */
-+ 1417, /* GL_STENCIL_REF */
-+ 1421, /* GL_STENCIL_WRITEMASK */
-+ 791, /* GL_MATRIX_MODE */
-+ 958, /* GL_NORMALIZE */
-+ 1727, /* GL_VIEWPORT */
-+ 932, /* GL_MODELVIEW_STACK_DEPTH */
-+ 1191, /* GL_PROJECTION_STACK_DEPTH */
-+ 1616, /* GL_TEXTURE_STACK_DEPTH */
-+ 930, /* GL_MODELVIEW_MATRIX */
-+ 1190, /* GL_PROJECTION_MATRIX */
-+ 1601, /* GL_TEXTURE_MATRIX */
-+ 61, /* GL_ATTRIB_STACK_DEPTH */
-+ 127, /* GL_CLIENT_ATTRIB_STACK_DEPTH */
-+ 43, /* GL_ALPHA_TEST */
-+ 44, /* GL_ALPHA_TEST_FUNC */
-+ 45, /* GL_ALPHA_TEST_REF */
-+ 343, /* GL_DITHER */
-+ 78, /* GL_BLEND_DST */
-+ 86, /* GL_BLEND_SRC */
-+ 75, /* GL_BLEND */
-+ 666, /* GL_LOGIC_OP_MODE */
-+ 586, /* GL_INDEX_LOGIC_OP */
-+ 166, /* GL_COLOR_LOGIC_OP */
-+ 67, /* GL_AUX_BUFFERS */
-+ 354, /* GL_DRAW_BUFFER */
-+ 1223, /* GL_READ_BUFFER */
-+ 1320, /* GL_SCISSOR_BOX */
-+ 1321, /* GL_SCISSOR_TEST */
-+ 585, /* GL_INDEX_CLEAR_VALUE */
-+ 590, /* GL_INDEX_WRITEMASK */
-+ 163, /* GL_COLOR_CLEAR_VALUE */
-+ 205, /* GL_COLOR_WRITEMASK */
-+ 587, /* GL_INDEX_MODE */
-+ 1287, /* GL_RGBA_MODE */
-+ 353, /* GL_DOUBLEBUFFER */
-+ 1422, /* GL_STEREO */
-+ 1246, /* GL_RENDER_MODE */
-+ 1043, /* GL_PERSPECTIVE_CORRECTION_HINT */
-+ 1092, /* GL_POINT_SMOOTH_HINT */
-+ 650, /* GL_LINE_SMOOTH_HINT */
-+ 1109, /* GL_POLYGON_SMOOTH_HINT */
-+ 478, /* GL_FOG_HINT */
-+ 1582, /* GL_TEXTURE_GEN_S */
-+ 1583, /* GL_TEXTURE_GEN_T */
-+ 1581, /* GL_TEXTURE_GEN_R */
-+ 1580, /* GL_TEXTURE_GEN_Q */
-+ 1056, /* GL_PIXEL_MAP_I_TO_I */
-+ 1062, /* GL_PIXEL_MAP_S_TO_S */
-+ 1058, /* GL_PIXEL_MAP_I_TO_R */
-+ 1054, /* GL_PIXEL_MAP_I_TO_G */
-+ 1052, /* GL_PIXEL_MAP_I_TO_B */
-+ 1050, /* GL_PIXEL_MAP_I_TO_A */
-+ 1060, /* GL_PIXEL_MAP_R_TO_R */
-+ 1048, /* GL_PIXEL_MAP_G_TO_G */
-+ 1046, /* GL_PIXEL_MAP_B_TO_B */
-+ 1044, /* GL_PIXEL_MAP_A_TO_A */
-+ 1057, /* GL_PIXEL_MAP_I_TO_I_SIZE */
-+ 1063, /* GL_PIXEL_MAP_S_TO_S_SIZE */
-+ 1059, /* GL_PIXEL_MAP_I_TO_R_SIZE */
-+ 1055, /* GL_PIXEL_MAP_I_TO_G_SIZE */
-+ 1053, /* GL_PIXEL_MAP_I_TO_B_SIZE */
-+ 1051, /* GL_PIXEL_MAP_I_TO_A_SIZE */
-+ 1061, /* GL_PIXEL_MAP_R_TO_R_SIZE */
-+ 1049, /* GL_PIXEL_MAP_G_TO_G_SIZE */
-+ 1047, /* GL_PIXEL_MAP_B_TO_B_SIZE */
-+ 1045, /* GL_PIXEL_MAP_A_TO_A_SIZE */
-+ 1649, /* GL_UNPACK_SWAP_BYTES */
-+ 1644, /* GL_UNPACK_LSB_FIRST */
-+ 1645, /* GL_UNPACK_ROW_LENGTH */
-+ 1648, /* GL_UNPACK_SKIP_ROWS */
-+ 1647, /* GL_UNPACK_SKIP_PIXELS */
-+ 1642, /* GL_UNPACK_ALIGNMENT */
-+ 1031, /* GL_PACK_SWAP_BYTES */
-+ 1026, /* GL_PACK_LSB_FIRST */
-+ 1027, /* GL_PACK_ROW_LENGTH */
-+ 1030, /* GL_PACK_SKIP_ROWS */
-+ 1029, /* GL_PACK_SKIP_PIXELS */
-+ 1023, /* GL_PACK_ALIGNMENT */
-+ 744, /* GL_MAP_COLOR */
-+ 745, /* GL_MAP_STENCIL */
-+ 589, /* GL_INDEX_SHIFT */
-+ 588, /* GL_INDEX_OFFSET */
-+ 1235, /* GL_RED_SCALE */
-+ 1233, /* GL_RED_BIAS */
-+ 1744, /* GL_ZOOM_X */
-+ 1745, /* GL_ZOOM_Y */
-+ 551, /* GL_GREEN_SCALE */
-+ 549, /* GL_GREEN_BIAS */
-+ 92, /* GL_BLUE_SCALE */
-+ 90, /* GL_BLUE_BIAS */
-+ 42, /* GL_ALPHA_SCALE */
-+ 40, /* GL_ALPHA_BIAS */
-+ 334, /* GL_DEPTH_SCALE */
-+ 315, /* GL_DEPTH_BIAS */
-+ 817, /* GL_MAX_EVAL_ORDER */
-+ 821, /* GL_MAX_LIGHTS */
-+ 800, /* GL_MAX_CLIP_PLANES */
-+ 865, /* GL_MAX_TEXTURE_SIZE */
-+ 827, /* GL_MAX_PIXEL_MAP_TABLE */
-+ 796, /* GL_MAX_ATTRIB_STACK_DEPTH */
-+ 824, /* GL_MAX_MODELVIEW_STACK_DEPTH */
-+ 825, /* GL_MAX_NAME_STACK_DEPTH */
-+ 853, /* GL_MAX_PROJECTION_STACK_DEPTH */
-+ 866, /* GL_MAX_TEXTURE_STACK_DEPTH */
-+ 880, /* GL_MAX_VIEWPORT_DIMS */
-+ 797, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
-+ 1429, /* GL_SUBPIXEL_BITS */
-+ 584, /* GL_INDEX_BITS */
-+ 1234, /* GL_RED_BITS */
-+ 550, /* GL_GREEN_BITS */
-+ 91, /* GL_BLUE_BITS */
-+ 41, /* GL_ALPHA_BITS */
-+ 316, /* GL_DEPTH_BITS */
-+ 1404, /* GL_STENCIL_BITS */
-+ 14, /* GL_ACCUM_RED_BITS */
-+ 13, /* GL_ACCUM_GREEN_BITS */
-+ 10, /* GL_ACCUM_BLUE_BITS */
-+ 9, /* GL_ACCUM_ALPHA_BITS */
-+ 946, /* GL_NAME_STACK_DEPTH */
-+ 62, /* GL_AUTO_NORMAL */
-+ 690, /* GL_MAP1_COLOR_4 */
-+ 693, /* GL_MAP1_INDEX */
-+ 694, /* GL_MAP1_NORMAL */
-+ 695, /* GL_MAP1_TEXTURE_COORD_1 */
-+ 696, /* GL_MAP1_TEXTURE_COORD_2 */
-+ 697, /* GL_MAP1_TEXTURE_COORD_3 */
-+ 698, /* GL_MAP1_TEXTURE_COORD_4 */
-+ 699, /* GL_MAP1_VERTEX_3 */
-+ 700, /* GL_MAP1_VERTEX_4 */
-+ 717, /* GL_MAP2_COLOR_4 */
-+ 720, /* GL_MAP2_INDEX */
-+ 721, /* GL_MAP2_NORMAL */
-+ 722, /* GL_MAP2_TEXTURE_COORD_1 */
-+ 723, /* GL_MAP2_TEXTURE_COORD_2 */
-+ 724, /* GL_MAP2_TEXTURE_COORD_3 */
-+ 725, /* GL_MAP2_TEXTURE_COORD_4 */
-+ 726, /* GL_MAP2_VERTEX_3 */
-+ 727, /* GL_MAP2_VERTEX_4 */
-+ 691, /* GL_MAP1_GRID_DOMAIN */
-+ 692, /* GL_MAP1_GRID_SEGMENTS */
-+ 718, /* GL_MAP2_GRID_DOMAIN */
-+ 719, /* GL_MAP2_GRID_SEGMENTS */
-+ 1506, /* GL_TEXTURE_1D */
-+ 1508, /* GL_TEXTURE_2D */
-+ 439, /* GL_FEEDBACK_BUFFER_POINTER */
-+ 440, /* GL_FEEDBACK_BUFFER_SIZE */
-+ 441, /* GL_FEEDBACK_BUFFER_TYPE */
-+ 1330, /* GL_SELECTION_BUFFER_POINTER */
-+ 1331, /* GL_SELECTION_BUFFER_SIZE */
-+ 1619, /* GL_TEXTURE_WIDTH */
-+ 1587, /* GL_TEXTURE_HEIGHT */
-+ 1543, /* GL_TEXTURE_COMPONENTS */
-+ 1527, /* GL_TEXTURE_BORDER_COLOR */
-+ 1526, /* GL_TEXTURE_BORDER */
-+ 345, /* GL_DONT_CARE */
-+ 437, /* GL_FASTEST */
-+ 954, /* GL_NICEST */
-+ 47, /* GL_AMBIENT */
-+ 342, /* GL_DIFFUSE */
-+ 1373, /* GL_SPECULAR */
-+ 1113, /* GL_POSITION */
-+ 1376, /* GL_SPOT_DIRECTION */
-+ 1377, /* GL_SPOT_EXPONENT */
-+ 1375, /* GL_SPOT_CUTOFF */
-+ 245, /* GL_CONSTANT_ATTENUATION */
-+ 640, /* GL_LINEAR_ATTENUATION */
-+ 1210, /* GL_QUADRATIC_ATTENUATION */
-+ 219, /* GL_COMPILE */
-+ 220, /* GL_COMPILE_AND_EXECUTE */
-+ 111, /* GL_BYTE */
-+ 1650, /* GL_UNSIGNED_BYTE */
-+ 1344, /* GL_SHORT */
-+ 1659, /* GL_UNSIGNED_SHORT */
-+ 592, /* GL_INT */
-+ 1653, /* GL_UNSIGNED_INT */
-+ 444, /* GL_FLOAT */
-+ 1, /* GL_2_BYTES */
-+ 5, /* GL_3_BYTES */
-+ 7, /* GL_4_BYTES */
-+ 352, /* GL_DOUBLE */
-+ 123, /* GL_CLEAR */
-+ 49, /* GL_AND */
-+ 51, /* GL_AND_REVERSE */
-+ 269, /* GL_COPY */
-+ 50, /* GL_AND_INVERTED */
-+ 956, /* GL_NOOP */
-+ 1740, /* GL_XOR */
-+ 1018, /* GL_OR */
-+ 957, /* GL_NOR */
-+ 427, /* GL_EQUIV */
-+ 618, /* GL_INVERT */
-+ 1021, /* GL_OR_REVERSE */
-+ 270, /* GL_COPY_INVERTED */
-+ 1020, /* GL_OR_INVERTED */
-+ 947, /* GL_NAND */
-+ 1335, /* GL_SET */
-+ 424, /* GL_EMISSION */
-+ 1343, /* GL_SHININESS */
-+ 48, /* GL_AMBIENT_AND_DIFFUSE */
-+ 165, /* GL_COLOR_INDEXES */
-+ 897, /* GL_MODELVIEW */
-+ 1189, /* GL_PROJECTION */
-+ 1441, /* GL_TEXTURE */
-+ 138, /* GL_COLOR */
-+ 313, /* GL_DEPTH */
-+ 1395, /* GL_STENCIL */
-+ 164, /* GL_COLOR_INDEX */
-+ 1409, /* GL_STENCIL_INDEX */
-+ 322, /* GL_DEPTH_COMPONENT */
-+ 1230, /* GL_RED */
-+ 548, /* GL_GREEN */
-+ 89, /* GL_BLUE */
-+ 31, /* GL_ALPHA */
-+ 1254, /* GL_RGB */
-+ 1273, /* GL_RGBA */
-+ 668, /* GL_LUMINANCE */
-+ 689, /* GL_LUMINANCE_ALPHA */
-+ 73, /* GL_BITMAP */
-+ 1069, /* GL_POINT */
-+ 638, /* GL_LINE */
-+ 442, /* GL_FILL */
-+ 1239, /* GL_RENDER */
-+ 438, /* GL_FEEDBACK */
-+ 1329, /* GL_SELECT */
-+ 443, /* GL_FLAT */
-+ 1348, /* GL_SMOOTH */
-+ 619, /* GL_KEEP */
-+ 1248, /* GL_REPLACE */
-+ 575, /* GL_INCR */
-+ 309, /* GL_DECR */
-+ 1674, /* GL_VENDOR */
-+ 1245, /* GL_RENDERER */
-+ 1675, /* GL_VERSION */
-+ 431, /* GL_EXTENSIONS */
-+ 1294, /* GL_S */
-+ 1432, /* GL_T */
-+ 1220, /* GL_R */
-+ 1209, /* GL_Q */
-+ 933, /* GL_MODULATE */
-+ 308, /* GL_DECAL */
-+ 1577, /* GL_TEXTURE_ENV_MODE */
-+ 1576, /* GL_TEXTURE_ENV_COLOR */
-+ 1575, /* GL_TEXTURE_ENV */
-+ 432, /* GL_EYE_LINEAR */
-+ 980, /* GL_OBJECT_LINEAR */
-+ 1374, /* GL_SPHERE_MAP */
-+ 1579, /* GL_TEXTURE_GEN_MODE */
-+ 982, /* GL_OBJECT_PLANE */
-+ 433, /* GL_EYE_PLANE */
-+ 948, /* GL_NEAREST */
-+ 639, /* GL_LINEAR */
-+ 952, /* GL_NEAREST_MIPMAP_NEAREST */
-+ 644, /* GL_LINEAR_MIPMAP_NEAREST */
-+ 951, /* GL_NEAREST_MIPMAP_LINEAR */
-+ 643, /* GL_LINEAR_MIPMAP_LINEAR */
-+ 1600, /* GL_TEXTURE_MAG_FILTER */
-+ 1608, /* GL_TEXTURE_MIN_FILTER */
-+ 1621, /* GL_TEXTURE_WRAP_S */
-+ 1622, /* GL_TEXTURE_WRAP_T */
-+ 117, /* GL_CLAMP */
-+ 1247, /* GL_REPEAT */
-+ 1107, /* GL_POLYGON_OFFSET_UNITS */
-+ 1106, /* GL_POLYGON_OFFSET_POINT */
-+ 1105, /* GL_POLYGON_OFFSET_LINE */
-+ 1221, /* GL_R3_G3_B2 */
-+ 1671, /* GL_V2F */
-+ 1672, /* GL_V3F */
-+ 114, /* GL_C4UB_V2F */
-+ 115, /* GL_C4UB_V3F */
-+ 112, /* GL_C3F_V3F */
-+ 945, /* GL_N3F_V3F */
-+ 113, /* GL_C4F_N3F_V3F */
-+ 1437, /* GL_T2F_V3F */
-+ 1439, /* GL_T4F_V4F */
-+ 1435, /* GL_T2F_C4UB_V3F */
-+ 1433, /* GL_T2F_C3F_V3F */
-+ 1436, /* GL_T2F_N3F_V3F */
-+ 1434, /* GL_T2F_C4F_N3F_V3F */
-+ 1438, /* GL_T4F_C4F_N3F_V4F */
-+ 130, /* GL_CLIP_PLANE0 */
-+ 131, /* GL_CLIP_PLANE1 */
-+ 132, /* GL_CLIP_PLANE2 */
-+ 133, /* GL_CLIP_PLANE3 */
-+ 134, /* GL_CLIP_PLANE4 */
-+ 135, /* GL_CLIP_PLANE5 */
-+ 623, /* GL_LIGHT0 */
-+ 624, /* GL_LIGHT1 */
-+ 625, /* GL_LIGHT2 */
-+ 626, /* GL_LIGHT3 */
-+ 627, /* GL_LIGHT4 */
-+ 628, /* GL_LIGHT5 */
-+ 629, /* GL_LIGHT6 */
-+ 630, /* GL_LIGHT7 */
-+ 552, /* GL_HINT_BIT */
-+ 247, /* GL_CONSTANT_COLOR */
-+ 992, /* GL_ONE_MINUS_CONSTANT_COLOR */
-+ 242, /* GL_CONSTANT_ALPHA */
-+ 990, /* GL_ONE_MINUS_CONSTANT_ALPHA */
-+ 76, /* GL_BLEND_COLOR */
-+ 512, /* GL_FUNC_ADD */
-+ 881, /* GL_MIN */
-+ 793, /* GL_MAX */
-+ 81, /* GL_BLEND_EQUATION */
-+ 516, /* GL_FUNC_SUBTRACT */
-+ 514, /* GL_FUNC_REVERSE_SUBTRACT */
-+ 250, /* GL_CONVOLUTION_1D */
-+ 251, /* GL_CONVOLUTION_2D */
-+ 1332, /* GL_SEPARABLE_2D */
-+ 254, /* GL_CONVOLUTION_BORDER_MODE */
-+ 258, /* GL_CONVOLUTION_FILTER_SCALE */
-+ 256, /* GL_CONVOLUTION_FILTER_BIAS */
-+ 1231, /* GL_REDUCE */
-+ 260, /* GL_CONVOLUTION_FORMAT */
-+ 264, /* GL_CONVOLUTION_WIDTH */
-+ 262, /* GL_CONVOLUTION_HEIGHT */
-+ 808, /* GL_MAX_CONVOLUTION_WIDTH */
-+ 806, /* GL_MAX_CONVOLUTION_HEIGHT */
-+ 1146, /* GL_POST_CONVOLUTION_RED_SCALE */
-+ 1142, /* GL_POST_CONVOLUTION_GREEN_SCALE */
-+ 1137, /* GL_POST_CONVOLUTION_BLUE_SCALE */
-+ 1133, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
-+ 1144, /* GL_POST_CONVOLUTION_RED_BIAS */
-+ 1140, /* GL_POST_CONVOLUTION_GREEN_BIAS */
-+ 1135, /* GL_POST_CONVOLUTION_BLUE_BIAS */
-+ 1131, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
-+ 553, /* GL_HISTOGRAM */
-+ 1193, /* GL_PROXY_HISTOGRAM */
-+ 569, /* GL_HISTOGRAM_WIDTH */
-+ 559, /* GL_HISTOGRAM_FORMAT */
-+ 565, /* GL_HISTOGRAM_RED_SIZE */
-+ 561, /* GL_HISTOGRAM_GREEN_SIZE */
-+ 556, /* GL_HISTOGRAM_BLUE_SIZE */
-+ 554, /* GL_HISTOGRAM_ALPHA_SIZE */
-+ 563, /* GL_HISTOGRAM_LUMINANCE_SIZE */
-+ 567, /* GL_HISTOGRAM_SINK */
-+ 882, /* GL_MINMAX */
-+ 884, /* GL_MINMAX_FORMAT */
-+ 886, /* GL_MINMAX_SINK */
-+ 1440, /* GL_TABLE_TOO_LARGE_EXT */
-+ 1652, /* GL_UNSIGNED_BYTE_3_3_2 */
-+ 1661, /* GL_UNSIGNED_SHORT_4_4_4_4 */
-+ 1663, /* GL_UNSIGNED_SHORT_5_5_5_1 */
-+ 1657, /* GL_UNSIGNED_INT_8_8_8_8 */
-+ 1654, /* GL_UNSIGNED_INT_10_10_10_2 */
-+ 1104, /* GL_POLYGON_OFFSET_FILL */
-+ 1103, /* GL_POLYGON_OFFSET_FACTOR */
-+ 1102, /* GL_POLYGON_OFFSET_BIAS */
-+ 1251, /* GL_RESCALE_NORMAL */
-+ 36, /* GL_ALPHA4 */
-+ 38, /* GL_ALPHA8 */
-+ 32, /* GL_ALPHA12 */
-+ 34, /* GL_ALPHA16 */
-+ 679, /* GL_LUMINANCE4 */
-+ 685, /* GL_LUMINANCE8 */
-+ 669, /* GL_LUMINANCE12 */
-+ 675, /* GL_LUMINANCE16 */
-+ 680, /* GL_LUMINANCE4_ALPHA4 */
-+ 683, /* GL_LUMINANCE6_ALPHA2 */
-+ 686, /* GL_LUMINANCE8_ALPHA8 */
-+ 672, /* GL_LUMINANCE12_ALPHA4 */
-+ 670, /* GL_LUMINANCE12_ALPHA12 */
-+ 676, /* GL_LUMINANCE16_ALPHA16 */
-+ 593, /* GL_INTENSITY */
-+ 598, /* GL_INTENSITY4 */
-+ 600, /* GL_INTENSITY8 */
-+ 594, /* GL_INTENSITY12 */
-+ 596, /* GL_INTENSITY16 */
-+ 1263, /* GL_RGB2_EXT */
-+ 1264, /* GL_RGB4 */
-+ 1267, /* GL_RGB5 */
-+ 1271, /* GL_RGB8 */
-+ 1255, /* GL_RGB10 */
-+ 1259, /* GL_RGB12 */
-+ 1261, /* GL_RGB16 */
-+ 1278, /* GL_RGBA2 */
-+ 1280, /* GL_RGBA4 */
-+ 1268, /* GL_RGB5_A1 */
-+ 1284, /* GL_RGBA8 */
-+ 1256, /* GL_RGB10_A2 */
-+ 1274, /* GL_RGBA12 */
-+ 1276, /* GL_RGBA16 */
-+ 1613, /* GL_TEXTURE_RED_SIZE */
-+ 1585, /* GL_TEXTURE_GREEN_SIZE */
-+ 1524, /* GL_TEXTURE_BLUE_SIZE */
-+ 1511, /* GL_TEXTURE_ALPHA_SIZE */
-+ 1598, /* GL_TEXTURE_LUMINANCE_SIZE */
-+ 1589, /* GL_TEXTURE_INTENSITY_SIZE */
-+ 1249, /* GL_REPLACE_EXT */
-+ 1197, /* GL_PROXY_TEXTURE_1D */
-+ 1200, /* GL_PROXY_TEXTURE_2D */
-+ 1617, /* GL_TEXTURE_TOO_LARGE_EXT */
-+ 1610, /* GL_TEXTURE_PRIORITY */
-+ 1615, /* GL_TEXTURE_RESIDENT */
-+ 1514, /* GL_TEXTURE_BINDING_1D */
-+ 1516, /* GL_TEXTURE_BINDING_2D */
-+ 1518, /* GL_TEXTURE_BINDING_3D */
-+ 1028, /* GL_PACK_SKIP_IMAGES */
-+ 1024, /* GL_PACK_IMAGE_HEIGHT */
-+ 1646, /* GL_UNPACK_SKIP_IMAGES */
-+ 1643, /* GL_UNPACK_IMAGE_HEIGHT */
-+ 1510, /* GL_TEXTURE_3D */
-+ 1203, /* GL_PROXY_TEXTURE_3D */
-+ 1572, /* GL_TEXTURE_DEPTH */
-+ 1620, /* GL_TEXTURE_WRAP_R */
-+ 794, /* GL_MAX_3D_TEXTURE_SIZE */
-+ 1676, /* GL_VERTEX_ARRAY */
-+ 959, /* GL_NORMAL_ARRAY */
-+ 139, /* GL_COLOR_ARRAY */
-+ 578, /* GL_INDEX_ARRAY */
-+ 1551, /* GL_TEXTURE_COORD_ARRAY */
-+ 415, /* GL_EDGE_FLAG_ARRAY */
-+ 1681, /* GL_VERTEX_ARRAY_SIZE */
-+ 1683, /* GL_VERTEX_ARRAY_TYPE */
-+ 1682, /* GL_VERTEX_ARRAY_STRIDE */
-+ 964, /* GL_NORMAL_ARRAY_TYPE */
-+ 963, /* GL_NORMAL_ARRAY_STRIDE */
-+ 143, /* GL_COLOR_ARRAY_SIZE */
-+ 145, /* GL_COLOR_ARRAY_TYPE */
-+ 144, /* GL_COLOR_ARRAY_STRIDE */
-+ 583, /* GL_INDEX_ARRAY_TYPE */
-+ 582, /* GL_INDEX_ARRAY_STRIDE */
-+ 1555, /* GL_TEXTURE_COORD_ARRAY_SIZE */
-+ 1557, /* GL_TEXTURE_COORD_ARRAY_TYPE */
-+ 1556, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
-+ 419, /* GL_EDGE_FLAG_ARRAY_STRIDE */
-+ 1680, /* GL_VERTEX_ARRAY_POINTER */
-+ 962, /* GL_NORMAL_ARRAY_POINTER */
-+ 142, /* GL_COLOR_ARRAY_POINTER */
-+ 581, /* GL_INDEX_ARRAY_POINTER */
-+ 1554, /* GL_TEXTURE_COORD_ARRAY_POINTER */
-+ 418, /* GL_EDGE_FLAG_ARRAY_POINTER */
-+ 938, /* GL_MULTISAMPLE */
-+ 1306, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
-+ 1308, /* GL_SAMPLE_ALPHA_TO_ONE */
-+ 1313, /* GL_SAMPLE_COVERAGE */
-+ 1310, /* GL_SAMPLE_BUFFERS */
-+ 1301, /* GL_SAMPLES */
-+ 1317, /* GL_SAMPLE_COVERAGE_VALUE */
-+ 1315, /* GL_SAMPLE_COVERAGE_INVERT */
-+ 170, /* GL_COLOR_MATRIX */
-+ 172, /* GL_COLOR_MATRIX_STACK_DEPTH */
-+ 802, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
-+ 1129, /* GL_POST_COLOR_MATRIX_RED_SCALE */
-+ 1125, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
-+ 1120, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
-+ 1116, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
-+ 1127, /* GL_POST_COLOR_MATRIX_RED_BIAS */
-+ 1123, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
-+ 1118, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
-+ 1114, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
-+ 1534, /* GL_TEXTURE_COLOR_TABLE_SGI */
-+ 1204, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
-+ 1536, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
-+ 80, /* GL_BLEND_DST_RGB */
-+ 88, /* GL_BLEND_SRC_RGB */
-+ 79, /* GL_BLEND_DST_ALPHA */
-+ 87, /* GL_BLEND_SRC_ALPHA */
-+ 176, /* GL_COLOR_TABLE */
-+ 1139, /* GL_POST_CONVOLUTION_COLOR_TABLE */
-+ 1122, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
-+ 1192, /* GL_PROXY_COLOR_TABLE */
-+ 1196, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
-+ 1195, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
-+ 200, /* GL_COLOR_TABLE_SCALE */
-+ 180, /* GL_COLOR_TABLE_BIAS */
-+ 185, /* GL_COLOR_TABLE_FORMAT */
-+ 202, /* GL_COLOR_TABLE_WIDTH */
-+ 197, /* GL_COLOR_TABLE_RED_SIZE */
-+ 188, /* GL_COLOR_TABLE_GREEN_SIZE */
-+ 182, /* GL_COLOR_TABLE_BLUE_SIZE */
-+ 177, /* GL_COLOR_TABLE_ALPHA_SIZE */
-+ 194, /* GL_COLOR_TABLE_LUMINANCE_SIZE */
-+ 191, /* GL_COLOR_TABLE_INTENSITY_SIZE */
-+ 71, /* GL_BGR */
-+ 72, /* GL_BGRA */
-+ 816, /* GL_MAX_ELEMENTS_VERTICES */
-+ 815, /* GL_MAX_ELEMENTS_INDICES */
-+ 1588, /* GL_TEXTURE_INDEX_SIZE_EXT */
-+ 136, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */
-+ 1086, /* GL_POINT_SIZE_MIN */
-+ 1082, /* GL_POINT_SIZE_MAX */
-+ 1076, /* GL_POINT_FADE_THRESHOLD_SIZE */
-+ 1072, /* GL_POINT_DISTANCE_ATTENUATION */
-+ 118, /* GL_CLAMP_TO_BORDER */
-+ 121, /* GL_CLAMP_TO_EDGE */
-+ 1609, /* GL_TEXTURE_MIN_LOD */
-+ 1607, /* GL_TEXTURE_MAX_LOD */
-+ 1513, /* GL_TEXTURE_BASE_LEVEL */
-+ 1606, /* GL_TEXTURE_MAX_LEVEL */
-+ 572, /* GL_IGNORE_BORDER_HP */
-+ 246, /* GL_CONSTANT_BORDER_HP */
-+ 1250, /* GL_REPLICATE_BORDER_HP */
-+ 252, /* GL_CONVOLUTION_BORDER_COLOR */
-+ 987, /* GL_OCCLUSION_TEST_HP */
-+ 988, /* GL_OCCLUSION_TEST_RESULT_HP */
-+ 641, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
-+ 1528, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
-+ 1530, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
-+ 1532, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
-+ 1533, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
-+ 1531, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
-+ 1529, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
-+ 798, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
-+ 799, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
-+ 1149, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
-+ 1151, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
-+ 1148, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
-+ 1150, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
-+ 1596, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
-+ 1597, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
-+ 1595, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
-+ 518, /* GL_GENERATE_MIPMAP */
-+ 519, /* GL_GENERATE_MIPMAP_HINT */
-+ 481, /* GL_FOG_OFFSET_SGIX */
-+ 482, /* GL_FOG_OFFSET_VALUE_SGIX */
-+ 1542, /* GL_TEXTURE_COMPARE_SGIX */
-+ 1541, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
-+ 1592, /* GL_TEXTURE_LEQUAL_R_SGIX */
-+ 1584, /* GL_TEXTURE_GEQUAL_R_SGIX */
-+ 323, /* GL_DEPTH_COMPONENT16 */
-+ 326, /* GL_DEPTH_COMPONENT24 */
-+ 329, /* GL_DEPTH_COMPONENT32 */
-+ 274, /* GL_CULL_VERTEX_EXT */
-+ 276, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */
-+ 275, /* GL_CULL_VERTEX_EYE_POSITION_EXT */
-+ 1737, /* GL_WRAP_BORDER_SUN */
-+ 1535, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
-+ 634, /* GL_LIGHT_MODEL_COLOR_CONTROL */
-+ 1345, /* GL_SINGLE_COLOR */
-+ 1333, /* GL_SEPARATE_SPECULAR_COLOR */
-+ 1342, /* GL_SHARED_TEXTURE_PALETTE_EXT */
-+ 1651, /* GL_UNSIGNED_BYTE_2_3_3_REV */
-+ 1664, /* GL_UNSIGNED_SHORT_5_6_5 */
-+ 1665, /* GL_UNSIGNED_SHORT_5_6_5_REV */
-+ 1662, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
-+ 1660, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
-+ 1658, /* GL_UNSIGNED_INT_8_8_8_8_REV */
-+ 1656, /* GL_UNSIGNED_INT_2_10_10_10_REV */
-+ 1604, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
-+ 1605, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
-+ 1603, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
-+ 889, /* GL_MIRRORED_REPEAT */
-+ 1289, /* GL_RGB_S3TC */
-+ 1266, /* GL_RGB4_S3TC */
-+ 1288, /* GL_RGBA_S3TC */
-+ 1283, /* GL_RGBA4_S3TC */
-+ 1286, /* GL_RGBA_DXT5_S3TC */
-+ 1281, /* GL_RGBA4_DXT5_S3TC */
-+ 239, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */
-+ 234, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */
-+ 235, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */
-+ 236, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */
-+ 950, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
-+ 949, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
-+ 642, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
-+ 468, /* GL_FOG_COORDINATE_SOURCE */
-+ 460, /* GL_FOG_COORD */
-+ 484, /* GL_FRAGMENT_DEPTH */
-+ 280, /* GL_CURRENT_FOG_COORD */
-+ 467, /* GL_FOG_COORDINATE_ARRAY_TYPE */
-+ 466, /* GL_FOG_COORDINATE_ARRAY_STRIDE */
-+ 465, /* GL_FOG_COORDINATE_ARRAY_POINTER */
-+ 462, /* GL_FOG_COORDINATE_ARRAY */
-+ 174, /* GL_COLOR_SUM */
-+ 299, /* GL_CURRENT_SECONDARY_COLOR */
-+ 1326, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
-+ 1328, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
-+ 1327, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
-+ 1325, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
-+ 1322, /* GL_SECONDARY_COLOR_ARRAY */
-+ 528, /* GL_GL_CURRENT_RASTER_SECONDARY_COLOR */
-+ 28, /* GL_ALIASED_POINT_SIZE_RANGE */
-+ 27, /* GL_ALIASED_LINE_WIDTH_RANGE */
-+ 1442, /* GL_TEXTURE0 */
-+ 1444, /* GL_TEXTURE1 */
-+ 1466, /* GL_TEXTURE2 */
-+ 1488, /* GL_TEXTURE3 */
-+ 1494, /* GL_TEXTURE4 */
-+ 1496, /* GL_TEXTURE5 */
-+ 1498, /* GL_TEXTURE6 */
-+ 1500, /* GL_TEXTURE7 */
-+ 1502, /* GL_TEXTURE8 */
-+ 1504, /* GL_TEXTURE9 */
-+ 1445, /* GL_TEXTURE10 */
-+ 1447, /* GL_TEXTURE11 */
-+ 1449, /* GL_TEXTURE12 */
-+ 1451, /* GL_TEXTURE13 */
-+ 1453, /* GL_TEXTURE14 */
-+ 1455, /* GL_TEXTURE15 */
-+ 1457, /* GL_TEXTURE16 */
-+ 1459, /* GL_TEXTURE17 */
-+ 1461, /* GL_TEXTURE18 */
-+ 1463, /* GL_TEXTURE19 */
-+ 1467, /* GL_TEXTURE20 */
-+ 1469, /* GL_TEXTURE21 */
-+ 1471, /* GL_TEXTURE22 */
-+ 1473, /* GL_TEXTURE23 */
-+ 1475, /* GL_TEXTURE24 */
-+ 1477, /* GL_TEXTURE25 */
-+ 1479, /* GL_TEXTURE26 */
-+ 1481, /* GL_TEXTURE27 */
-+ 1483, /* GL_TEXTURE28 */
-+ 1485, /* GL_TEXTURE29 */
-+ 1489, /* GL_TEXTURE30 */
-+ 1491, /* GL_TEXTURE31 */
-+ 18, /* GL_ACTIVE_TEXTURE */
-+ 124, /* GL_CLIENT_ACTIVE_TEXTURE */
-+ 867, /* GL_MAX_TEXTURE_UNITS */
-+ 1630, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
-+ 1633, /* GL_TRANSPOSE_PROJECTION_MATRIX */
-+ 1635, /* GL_TRANSPOSE_TEXTURE_MATRIX */
-+ 1627, /* GL_TRANSPOSE_COLOR_MATRIX */
-+ 1430, /* GL_SUBTRACT */
-+ 856, /* GL_MAX_RENDERBUFFER_SIZE_EXT */
-+ 222, /* GL_COMPRESSED_ALPHA */
-+ 226, /* GL_COMPRESSED_LUMINANCE */
-+ 227, /* GL_COMPRESSED_LUMINANCE_ALPHA */
-+ 224, /* GL_COMPRESSED_INTENSITY */
-+ 230, /* GL_COMPRESSED_RGB */
-+ 231, /* GL_COMPRESSED_RGBA */
-+ 1549, /* GL_TEXTURE_COMPRESSION_HINT */
-+ 1611, /* GL_TEXTURE_RECTANGLE_ARB */
-+ 1521, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */
-+ 1207, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */
-+ 854, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */
-+ 335, /* GL_DEPTH_STENCIL_NV */
-+ 1655, /* GL_UNSIGNED_INT_24_8_NV */
-+ 863, /* GL_MAX_TEXTURE_LOD_BIAS */
-+ 1602, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
-+ 864, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
-+ 1578, /* GL_TEXTURE_FILTER_CONTROL */
-+ 1593, /* GL_TEXTURE_LOD_BIAS */
-+ 207, /* GL_COMBINE4 */
-+ 857, /* GL_MAX_SHININESS_NV */
-+ 858, /* GL_MAX_SPOT_EXPONENT_NV */
-+ 576, /* GL_INCR_WRAP */
-+ 310, /* GL_DECR_WRAP */
-+ 909, /* GL_MODELVIEW1_ARB */
-+ 965, /* GL_NORMAL_MAP */
-+ 1236, /* GL_REFLECTION_MAP */
-+ 1558, /* GL_TEXTURE_CUBE_MAP */
-+ 1519, /* GL_TEXTURE_BINDING_CUBE_MAP */
-+ 1566, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
-+ 1560, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
-+ 1568, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
-+ 1562, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
-+ 1570, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
-+ 1564, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
-+ 1205, /* GL_PROXY_TEXTURE_CUBE_MAP */
-+ 810, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
-+ 944, /* GL_MULTISAMPLE_FILTER_HINT_NV */
-+ 476, /* GL_FOG_DISTANCE_MODE_NV */
-+ 435, /* GL_EYE_RADIAL_NV */
-+ 434, /* GL_EYE_PLANE_ABSOLUTE_NV */
-+ 206, /* GL_COMBINE */
-+ 213, /* GL_COMBINE_RGB */
-+ 208, /* GL_COMBINE_ALPHA */
-+ 1290, /* GL_RGB_SCALE */
-+ 24, /* GL_ADD_SIGNED */
-+ 603, /* GL_INTERPOLATE */
-+ 241, /* GL_CONSTANT */
-+ 1155, /* GL_PRIMARY_COLOR */
-+ 1152, /* GL_PREVIOUS */
-+ 1356, /* GL_SOURCE0_RGB */
-+ 1362, /* GL_SOURCE1_RGB */
-+ 1368, /* GL_SOURCE2_RGB */
-+ 1372, /* GL_SOURCE3_RGB_NV */
-+ 1353, /* GL_SOURCE0_ALPHA */
-+ 1359, /* GL_SOURCE1_ALPHA */
-+ 1365, /* GL_SOURCE2_ALPHA */
-+ 1371, /* GL_SOURCE3_ALPHA_NV */
-+ 1001, /* GL_OPERAND0_RGB */
-+ 1007, /* GL_OPERAND1_RGB */
-+ 1013, /* GL_OPERAND2_RGB */
-+ 1017, /* GL_OPERAND3_RGB_NV */
-+ 998, /* GL_OPERAND0_ALPHA */
-+ 1004, /* GL_OPERAND1_ALPHA */
-+ 1010, /* GL_OPERAND2_ALPHA */
-+ 1016, /* GL_OPERAND3_ALPHA_NV */
-+ 1677, /* GL_VERTEX_ARRAY_BINDING_APPLE */
-+ 1741, /* GL_YCBCR_422_APPLE */
-+ 1666, /* GL_UNSIGNED_SHORT_8_8_APPLE */
-+ 1668, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
-+ 1347, /* GL_SLICE_ACCUM_SUN */
-+ 1212, /* GL_QUAD_MESH_SUN */
-+ 1639, /* GL_TRIANGLE_MESH_SUN */
-+ 1715, /* GL_VERTEX_PROGRAM_ARB */
-+ 1726, /* GL_VERTEX_STATE_PROGRAM_NV */
-+ 1702, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
-+ 1708, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
-+ 1710, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
-+ 1712, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
-+ 301, /* GL_CURRENT_VERTEX_ATTRIB */
-+ 1168, /* GL_PROGRAM_LENGTH_ARB */
-+ 1182, /* GL_PROGRAM_STRING_ARB */
-+ 931, /* GL_MODELVIEW_PROJECTION_NV */
-+ 571, /* GL_IDENTITY_NV */
-+ 616, /* GL_INVERSE_NV */
-+ 1632, /* GL_TRANSPOSE_NV */
-+ 617, /* GL_INVERSE_TRANSPOSE_NV */
-+ 840, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
-+ 839, /* GL_MAX_PROGRAM_MATRICES_ARB */
-+ 747, /* GL_MATRIX0_NV */
-+ 759, /* GL_MATRIX1_NV */
-+ 771, /* GL_MATRIX2_NV */
-+ 775, /* GL_MATRIX3_NV */
-+ 777, /* GL_MATRIX4_NV */
-+ 779, /* GL_MATRIX5_NV */
-+ 781, /* GL_MATRIX6_NV */
-+ 783, /* GL_MATRIX7_NV */
-+ 286, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */
-+ 283, /* GL_CURRENT_MATRIX_ARB */
-+ 1718, /* GL_VERTEX_PROGRAM_POINT_SIZE */
-+ 1721, /* GL_VERTEX_PROGRAM_TWO_SIDE */
-+ 1180, /* GL_PROGRAM_PARAMETER_NV */
-+ 1706, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
-+ 1184, /* GL_PROGRAM_TARGET_NV */
-+ 1181, /* GL_PROGRAM_RESIDENT_NV */
-+ 1624, /* GL_TRACK_MATRIX_NV */
-+ 1625, /* GL_TRACK_MATRIX_TRANSFORM_NV */
-+ 1716, /* GL_VERTEX_PROGRAM_BINDING_NV */
-+ 1162, /* GL_PROGRAM_ERROR_POSITION_ARB */
-+ 320, /* GL_DEPTH_CLAMP_NV */
-+ 1684, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
-+ 1691, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
-+ 1692, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
-+ 1693, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
-+ 1694, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
-+ 1695, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
-+ 1696, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
-+ 1697, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
-+ 1698, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
-+ 1699, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
-+ 1685, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
-+ 1686, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
-+ 1687, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
-+ 1688, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
-+ 1689, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
-+ 1690, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
-+ 701, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
-+ 708, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
-+ 709, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
-+ 710, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
-+ 711, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
-+ 712, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
-+ 713, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
-+ 714, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
-+ 715, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
-+ 716, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
-+ 702, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
-+ 703, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
-+ 704, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
-+ 705, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
-+ 706, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
-+ 707, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
-+ 728, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
-+ 735, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
-+ 736, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
-+ 737, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
-+ 738, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
-+ 739, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
-+ 740, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
-+ 1161, /* GL_PROGRAM_BINDING_ARB */
-+ 742, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
-+ 743, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
-+ 729, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
-+ 730, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
-+ 731, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
-+ 732, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
-+ 733, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
-+ 734, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
-+ 1547, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
-+ 1544, /* GL_TEXTURE_COMPRESSED */
-+ 970, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
-+ 240, /* GL_COMPRESSED_TEXTURE_FORMATS */
-+ 879, /* GL_MAX_VERTEX_UNITS_ARB */
-+ 22, /* GL_ACTIVE_VERTEX_UNITS_ARB */
-+ 1736, /* GL_WEIGHT_SUM_UNITY_ARB */
-+ 1714, /* GL_VERTEX_BLEND_ARB */
-+ 303, /* GL_CURRENT_WEIGHT_ARB */
-+ 1735, /* GL_WEIGHT_ARRAY_TYPE_ARB */
-+ 1734, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
-+ 1733, /* GL_WEIGHT_ARRAY_SIZE_ARB */
-+ 1732, /* GL_WEIGHT_ARRAY_POINTER_ARB */
-+ 1729, /* GL_WEIGHT_ARRAY_ARB */
-+ 346, /* GL_DOT3_RGB */
-+ 347, /* GL_DOT3_RGBA */
-+ 238, /* GL_COMPRESSED_RGB_FXT1_3DFX */
-+ 233, /* GL_COMPRESSED_RGBA_FXT1_3DFX */
-+ 939, /* GL_MULTISAMPLE_3DFX */
-+ 1311, /* GL_SAMPLE_BUFFERS_3DFX */
-+ 1302, /* GL_SAMPLES_3DFX */
-+ 920, /* GL_MODELVIEW2_ARB */
-+ 923, /* GL_MODELVIEW3_ARB */
-+ 924, /* GL_MODELVIEW4_ARB */
-+ 925, /* GL_MODELVIEW5_ARB */
-+ 926, /* GL_MODELVIEW6_ARB */
-+ 927, /* GL_MODELVIEW7_ARB */
-+ 928, /* GL_MODELVIEW8_ARB */
-+ 929, /* GL_MODELVIEW9_ARB */
-+ 899, /* GL_MODELVIEW10_ARB */
-+ 900, /* GL_MODELVIEW11_ARB */
-+ 901, /* GL_MODELVIEW12_ARB */
-+ 902, /* GL_MODELVIEW13_ARB */
-+ 903, /* GL_MODELVIEW14_ARB */
-+ 904, /* GL_MODELVIEW15_ARB */
-+ 905, /* GL_MODELVIEW16_ARB */
-+ 906, /* GL_MODELVIEW17_ARB */
-+ 907, /* GL_MODELVIEW18_ARB */
-+ 908, /* GL_MODELVIEW19_ARB */
-+ 910, /* GL_MODELVIEW20_ARB */
-+ 911, /* GL_MODELVIEW21_ARB */
-+ 912, /* GL_MODELVIEW22_ARB */
-+ 913, /* GL_MODELVIEW23_ARB */
-+ 914, /* GL_MODELVIEW24_ARB */
-+ 915, /* GL_MODELVIEW25_ARB */
-+ 916, /* GL_MODELVIEW26_ARB */
-+ 917, /* GL_MODELVIEW27_ARB */
-+ 918, /* GL_MODELVIEW28_ARB */
-+ 919, /* GL_MODELVIEW29_ARB */
-+ 921, /* GL_MODELVIEW30_ARB */
-+ 922, /* GL_MODELVIEW31_ARB */
-+ 351, /* GL_DOT3_RGB_EXT */
-+ 349, /* GL_DOT3_RGBA_EXT */
-+ 893, /* GL_MIRROR_CLAMP_EXT */
-+ 896, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
-+ 934, /* GL_MODULATE_ADD_ATI */
-+ 935, /* GL_MODULATE_SIGNED_ADD_ATI */
-+ 936, /* GL_MODULATE_SUBTRACT_ATI */
-+ 1742, /* GL_YCBCR_MESA */
-+ 1025, /* GL_PACK_INVERT_MESA */
-+ 306, /* GL_DEBUG_OBJECT_MESA */
-+ 307, /* GL_DEBUG_PRINT_MESA */
-+ 305, /* GL_DEBUG_ASSERT_MESA */
-+ 107, /* GL_BUFFER_SIZE */
-+ 109, /* GL_BUFFER_USAGE */
-+ 1398, /* GL_STENCIL_BACK_FUNC */
-+ 1397, /* GL_STENCIL_BACK_FAIL */
-+ 1399, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
-+ 1400, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
-+ 485, /* GL_FRAGMENT_PROGRAM_ARB */
-+ 1159, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
-+ 1187, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
-+ 1186, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
-+ 1171, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
-+ 1177, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
-+ 1176, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
-+ 829, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
-+ 852, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
-+ 851, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
-+ 842, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
-+ 848, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
-+ 847, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
-+ 812, /* GL_MAX_DRAW_BUFFERS */
-+ 355, /* GL_DRAW_BUFFER0 */
-+ 358, /* GL_DRAW_BUFFER1 */
-+ 379, /* GL_DRAW_BUFFER2 */
-+ 382, /* GL_DRAW_BUFFER3 */
-+ 385, /* GL_DRAW_BUFFER4 */
-+ 388, /* GL_DRAW_BUFFER5 */
-+ 391, /* GL_DRAW_BUFFER6 */
-+ 394, /* GL_DRAW_BUFFER7 */
-+ 397, /* GL_DRAW_BUFFER8 */
-+ 400, /* GL_DRAW_BUFFER9 */
-+ 359, /* GL_DRAW_BUFFER10 */
-+ 362, /* GL_DRAW_BUFFER11 */
-+ 365, /* GL_DRAW_BUFFER12 */
-+ 368, /* GL_DRAW_BUFFER13 */
-+ 371, /* GL_DRAW_BUFFER14 */
-+ 374, /* GL_DRAW_BUFFER15 */
-+ 82, /* GL_BLEND_EQUATION_ALPHA */
-+ 792, /* GL_MATRIX_PALETTE_ARB */
-+ 823, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
-+ 826, /* GL_MAX_PALETTE_MATRICES_ARB */
-+ 289, /* GL_CURRENT_PALETTE_MATRIX_ARB */
-+ 786, /* GL_MATRIX_INDEX_ARRAY_ARB */
-+ 284, /* GL_CURRENT_MATRIX_INDEX_ARB */
-+ 788, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
-+ 790, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
-+ 789, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
-+ 787, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
-+ 1573, /* GL_TEXTURE_DEPTH_SIZE */
-+ 339, /* GL_DEPTH_TEXTURE_MODE */
-+ 1539, /* GL_TEXTURE_COMPARE_MODE */
-+ 1537, /* GL_TEXTURE_COMPARE_FUNC */
-+ 217, /* GL_COMPARE_R_TO_TEXTURE */
-+ 1093, /* GL_POINT_SPRITE */
-+ 266, /* GL_COORD_REPLACE */
-+ 1097, /* GL_POINT_SPRITE_R_MODE_NV */
-+ 1214, /* GL_QUERY_COUNTER_BITS */
-+ 291, /* GL_CURRENT_QUERY */
-+ 1216, /* GL_QUERY_RESULT */
-+ 1218, /* GL_QUERY_RESULT_AVAILABLE */
-+ 873, /* GL_MAX_VERTEX_ATTRIBS */
-+ 1704, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
-+ 337, /* GL_DEPTH_STENCIL_TO_RGBA_NV */
-+ 336, /* GL_DEPTH_STENCIL_TO_BGRA_NV */
-+ 859, /* GL_MAX_TEXTURE_COORDS */
-+ 861, /* GL_MAX_TEXTURE_IMAGE_UNITS */
-+ 1164, /* GL_PROGRAM_ERROR_STRING_ARB */
-+ 1166, /* GL_PROGRAM_FORMAT_ASCII_ARB */
-+ 1165, /* GL_PROGRAM_FORMAT_ARB */
-+ 1618, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
-+ 318, /* GL_DEPTH_BOUNDS_TEST_EXT */
-+ 317, /* GL_DEPTH_BOUNDS_EXT */
-+ 52, /* GL_ARRAY_BUFFER */
-+ 420, /* GL_ELEMENT_ARRAY_BUFFER */
-+ 54, /* GL_ARRAY_BUFFER_BINDING */
-+ 422, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
-+ 1678, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
-+ 960, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
-+ 140, /* GL_COLOR_ARRAY_BUFFER_BINDING */
-+ 579, /* GL_INDEX_ARRAY_BUFFER_BINDING */
-+ 1552, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
-+ 416, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
-+ 1323, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
-+ 463, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
-+ 1730, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
-+ 1700, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
-+ 1167, /* GL_PROGRAM_INSTRUCTIONS_ARB */
-+ 835, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
-+ 1173, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
-+ 844, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
-+ 1185, /* GL_PROGRAM_TEMPORARIES_ARB */
-+ 850, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
-+ 1175, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
-+ 846, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
-+ 1179, /* GL_PROGRAM_PARAMETERS_ARB */
-+ 849, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
-+ 1174, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
-+ 845, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
-+ 1160, /* GL_PROGRAM_ATTRIBS_ARB */
-+ 830, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
-+ 1172, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
-+ 843, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
-+ 1158, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
-+ 828, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
-+ 1170, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
-+ 841, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
-+ 836, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
-+ 832, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
-+ 1188, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
-+ 1629, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
-+ 1226, /* GL_READ_ONLY */
-+ 1738, /* GL_WRITE_ONLY */
-+ 1228, /* GL_READ_WRITE */
-+ 101, /* GL_BUFFER_ACCESS */
-+ 103, /* GL_BUFFER_MAPPED */
-+ 105, /* GL_BUFFER_MAP_POINTER */
-+ 1623, /* GL_TIME_ELAPSED_EXT */
-+ 746, /* GL_MATRIX0_ARB */
-+ 758, /* GL_MATRIX1_ARB */
-+ 770, /* GL_MATRIX2_ARB */
-+ 774, /* GL_MATRIX3_ARB */
-+ 776, /* GL_MATRIX4_ARB */
-+ 778, /* GL_MATRIX5_ARB */
-+ 780, /* GL_MATRIX6_ARB */
-+ 782, /* GL_MATRIX7_ARB */
-+ 784, /* GL_MATRIX8_ARB */
-+ 785, /* GL_MATRIX9_ARB */
-+ 748, /* GL_MATRIX10_ARB */
-+ 749, /* GL_MATRIX11_ARB */
-+ 750, /* GL_MATRIX12_ARB */
-+ 751, /* GL_MATRIX13_ARB */
-+ 752, /* GL_MATRIX14_ARB */
-+ 753, /* GL_MATRIX15_ARB */
-+ 754, /* GL_MATRIX16_ARB */
-+ 755, /* GL_MATRIX17_ARB */
-+ 756, /* GL_MATRIX18_ARB */
-+ 757, /* GL_MATRIX19_ARB */
-+ 760, /* GL_MATRIX20_ARB */
-+ 761, /* GL_MATRIX21_ARB */
-+ 762, /* GL_MATRIX22_ARB */
-+ 763, /* GL_MATRIX23_ARB */
-+ 764, /* GL_MATRIX24_ARB */
-+ 765, /* GL_MATRIX25_ARB */
-+ 766, /* GL_MATRIX26_ARB */
-+ 767, /* GL_MATRIX27_ARB */
-+ 768, /* GL_MATRIX28_ARB */
-+ 769, /* GL_MATRIX29_ARB */
-+ 772, /* GL_MATRIX30_ARB */
-+ 773, /* GL_MATRIX31_ARB */
-+ 1425, /* GL_STREAM_DRAW */
-+ 1427, /* GL_STREAM_READ */
-+ 1423, /* GL_STREAM_COPY */
-+ 1391, /* GL_STATIC_DRAW */
-+ 1393, /* GL_STATIC_READ */
-+ 1389, /* GL_STATIC_COPY */
-+ 410, /* GL_DYNAMIC_DRAW */
-+ 412, /* GL_DYNAMIC_READ */
-+ 408, /* GL_DYNAMIC_COPY */
-+ 535, /* GL_GL_PIXEL_PACK_BUFFER */
-+ 537, /* GL_GL_PIXEL_UNPACK_BUFFER */
-+ 536, /* GL_GL_PIXEL_PACK_BUFFER_BINDING */
-+ 538, /* GL_GL_PIXEL_UNPACK_BUFFER_BINDING */
-+ 833, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */
-+ 831, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
-+ 834, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
-+ 838, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
-+ 837, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
-+ 795, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */
-+ 1419, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
-+ 17, /* GL_ACTIVE_STENCIL_FACE_EXT */
-+ 894, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
-+ 1304, /* GL_SAMPLES_PASSED */
-+ 486, /* GL_FRAGMENT_SHADER */
-+ 1724, /* GL_VERTEX_SHADER */
-+ 1178, /* GL_PROGRAM_OBJECT_ARB */
-+ 1336, /* GL_SHADER_OBJECT_ARB */
-+ 819, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
-+ 877, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */
-+ 871, /* GL_MAX_VARYING_FLOATS */
-+ 875, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */
-+ 804, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */
-+ 985, /* GL_OBJECT_TYPE_ARB */
-+ 1338, /* GL_SHADER_TYPE */
-+ 451, /* GL_FLOAT_VEC2 */
-+ 453, /* GL_FLOAT_VEC3 */
-+ 455, /* GL_FLOAT_VEC4 */
-+ 606, /* GL_INT_VEC2 */
-+ 608, /* GL_INT_VEC3 */
-+ 610, /* GL_INT_VEC4 */
-+ 93, /* GL_BOOL */
-+ 95, /* GL_BOOL_VEC2 */
-+ 97, /* GL_BOOL_VEC3 */
-+ 99, /* GL_BOOL_VEC4 */
-+ 445, /* GL_FLOAT_MAT2 */
-+ 447, /* GL_FLOAT_MAT3 */
-+ 449, /* GL_FLOAT_MAT4 */
-+ 1295, /* GL_SAMPLER_1D */
-+ 1297, /* GL_SAMPLER_2D */
-+ 1299, /* GL_SAMPLER_3D */
-+ 1300, /* GL_SAMPLER_CUBE */
-+ 1296, /* GL_SAMPLER_1D_SHADOW */
-+ 1298, /* GL_SAMPLER_2D_SHADOW */
-+ 529, /* GL_GL_FLOAT_MAT2x3 */
-+ 530, /* GL_GL_FLOAT_MAT2x4 */
-+ 531, /* GL_GL_FLOAT_MAT3x2 */
-+ 532, /* GL_GL_FLOAT_MAT3x4 */
-+ 533, /* GL_GL_FLOAT_MAT4x2 */
-+ 534, /* GL_GL_FLOAT_MAT4x3 */
-+ 312, /* GL_DELETE_STATUS */
-+ 221, /* GL_COMPILE_STATUS */
-+ 659, /* GL_LINK_STATUS */
-+ 1673, /* GL_VALIDATE_STATUS */
-+ 591, /* GL_INFO_LOG_LENGTH */
-+ 56, /* GL_ATTACHED_SHADERS */
-+ 20, /* GL_ACTIVE_UNIFORMS */
-+ 21, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */
-+ 1337, /* GL_SHADER_SOURCE_LENGTH */
-+ 15, /* GL_ACTIVE_ATTRIBUTES */
-+ 16, /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */
-+ 488, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */
-+ 1340, /* GL_SHADING_LANGUAGE_VERSION */
-+ 290, /* GL_CURRENT_PROGRAM */
-+ 1034, /* GL_PALETTE4_RGB8_OES */
-+ 1036, /* GL_PALETTE4_RGBA8_OES */
-+ 1032, /* GL_PALETTE4_R5_G6_B5_OES */
-+ 1035, /* GL_PALETTE4_RGBA4_OES */
-+ 1033, /* GL_PALETTE4_RGB5_A1_OES */
-+ 1039, /* GL_PALETTE8_RGB8_OES */
-+ 1041, /* GL_PALETTE8_RGBA8_OES */
-+ 1037, /* GL_PALETTE8_R5_G6_B5_OES */
-+ 1040, /* GL_PALETTE8_RGBA4_OES */
-+ 1038, /* GL_PALETTE8_RGB5_A1_OES */
-+ 574, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */
-+ 573, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */
-+ 1507, /* GL_TEXTURE_1D_ARRAY_EXT */
-+ 1198, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */
-+ 1509, /* GL_TEXTURE_2D_ARRAY_EXT */
-+ 1201, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */
-+ 1515, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */
-+ 1517, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */
-+ 543, /* GL_GL_SRGB */
-+ 544, /* GL_GL_SRGB8 */
-+ 546, /* GL_GL_SRGB_ALPHA */
-+ 545, /* GL_GL_SRGB8_ALPHA8 */
-+ 542, /* GL_GL_SLUMINANCE_ALPHA */
-+ 541, /* GL_GL_SLUMINANCE8_ALPHA8 */
-+ 539, /* GL_GL_SLUMINANCE */
-+ 540, /* GL_GL_SLUMINANCE8 */
-+ 526, /* GL_GL_COMPRESSED_SRGB */
-+ 527, /* GL_GL_COMPRESSED_SRGB_ALPHA */
-+ 524, /* GL_GL_COMPRESSED_SLUMINANCE */
-+ 525, /* GL_GL_COMPRESSED_SLUMINANCE_ALPHA */
-+ 1095, /* GL_POINT_SPRITE_COORD_ORIGIN */
-+ 667, /* GL_LOWER_LEFT */
-+ 1670, /* GL_UPPER_LEFT */
-+ 1401, /* GL_STENCIL_BACK_REF */
-+ 1402, /* GL_STENCIL_BACK_VALUE_MASK */
-+ 1403, /* GL_STENCIL_BACK_WRITEMASK */
-+ 403, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */
-+ 1240, /* GL_RENDERBUFFER_BINDING_EXT */
-+ 1225, /* GL_READ_FRAMEBUFFER_EXT */
-+ 404, /* GL_DRAW_FRAMEBUFFER_EXT */
-+ 1224, /* GL_READ_FRAMEBUFFER_BINDING_EXT */
-+ 490, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */
-+ 489, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */
-+ 494, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */
-+ 492, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */
-+ 491, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */
-+ 496, /* GL_FRAMEBUFFER_COMPLETE_EXT */
-+ 498, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */
-+ 503, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */
-+ 501, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */
-+ 499, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */
-+ 502, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */
-+ 500, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */
-+ 504, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */
-+ 506, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */
-+ 505, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */
-+ 801, /* GL_MAX_COLOR_ATTACHMENTS_EXT */
-+ 146, /* GL_COLOR_ATTACHMENT0_EXT */
-+ 153, /* GL_COLOR_ATTACHMENT1_EXT */
-+ 154, /* GL_COLOR_ATTACHMENT2_EXT */
-+ 155, /* GL_COLOR_ATTACHMENT3_EXT */
-+ 156, /* GL_COLOR_ATTACHMENT4_EXT */
-+ 157, /* GL_COLOR_ATTACHMENT5_EXT */
-+ 158, /* GL_COLOR_ATTACHMENT6_EXT */
-+ 159, /* GL_COLOR_ATTACHMENT7_EXT */
-+ 160, /* GL_COLOR_ATTACHMENT8_EXT */
-+ 161, /* GL_COLOR_ATTACHMENT9_EXT */
-+ 147, /* GL_COLOR_ATTACHMENT10_EXT */
-+ 148, /* GL_COLOR_ATTACHMENT11_EXT */
-+ 149, /* GL_COLOR_ATTACHMENT12_EXT */
-+ 150, /* GL_COLOR_ATTACHMENT13_EXT */
-+ 151, /* GL_COLOR_ATTACHMENT14_EXT */
-+ 152, /* GL_COLOR_ATTACHMENT15_EXT */
-+ 314, /* GL_DEPTH_ATTACHMENT_EXT */
-+ 1396, /* GL_STENCIL_ATTACHMENT_EXT */
-+ 497, /* GL_FRAMEBUFFER_EXT */
-+ 1241, /* GL_RENDERBUFFER_EXT */
-+ 1244, /* GL_RENDERBUFFER_WIDTH_EXT */
-+ 1242, /* GL_RENDERBUFFER_HEIGHT_EXT */
-+ 1243, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */
-+ 1414, /* GL_STENCIL_INDEX_EXT */
-+ 1411, /* GL_STENCIL_INDEX1_EXT */
-+ 1412, /* GL_STENCIL_INDEX4_EXT */
-+ 1413, /* GL_STENCIL_INDEX8_EXT */
-+ 1410, /* GL_STENCIL_INDEX16_EXT */
-+ 428, /* GL_EVAL_BIT */
-+ 1222, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
-+ 661, /* GL_LIST_BIT */
-+ 1523, /* GL_TEXTURE_BIT */
-+ 1319, /* GL_SCISSOR_BIT */
-+ 29, /* GL_ALL_ATTRIB_BITS */
-+ 941, /* GL_MULTISAMPLE_BIT */
-+ 30, /* GL_ALL_CLIENT_ATTRIB_BITS */
-+};
-+
-+#define Elements(x) sizeof(x)/sizeof(*x)
-+
-+typedef int (*cfunc)(const void *, const void *);
-+
-+/**
-+ * Compare a key name to an element in the \c all_enums array.
-+ *
-+ * \c bsearch always passes the key as the first parameter and the pointer
-+ * to the array element as the second parameter. We can elimiate some
-+ * extra work by taking advantage of that fact.
-+ *
-+ * \param a Pointer to the desired enum name.
-+ * \param b Pointer to an element of the \c all_enums array.
-+ */
-+static int compar_name( const char *a, const enum_elt *b )
-+{
-+ return _mesa_strcmp( a, & enum_string_table[ b->offset ] );
-+}
-+
-+/**
-+ * Compare a key enum value to an element in the \c all_enums array.
-+ *
-+ * \c bsearch always passes the key as the first parameter and the pointer
-+ * to the array element as the second parameter. We can elimiate some
-+ * extra work by taking advantage of that fact.
-+ *
-+ * \param a Pointer to the desired enum name.
-+ * \param b Pointer to an index into the \c all_enums array.
-+ */
-+static int compar_nr( const int *a, const unsigned *b )
-+{
-+ return a[0] - all_enums[*b].n;
-+}
-+
-+
-+static char token_tmp[20];
-+
-+const char *_mesa_lookup_enum_by_nr( int nr )
-+{
-+ unsigned * i;
-+
-+ i = (unsigned *)bsearch( & nr, reduced_enums, Elements(reduced_enums),
-+ sizeof(reduced_enums[0]), (cfunc) compar_nr );
-+
-+ if ( i != NULL ) {
-+ return & enum_string_table[ all_enums[ *i ].offset ];
-+ }
-+ else {
-+ /* this is not re-entrant safe, no big deal here */
-+ _mesa_sprintf(token_tmp, "0x%x", nr);
-+ return token_tmp;
-+ }
-+}
-+
-+int _mesa_lookup_enum_by_name( const char *symbol )
-+{
-+ enum_elt * f = NULL;
-+
-+ if ( symbol != NULL ) {
-+ f = (enum_elt *)bsearch( symbol, all_enums, Elements(all_enums),
-+ sizeof( enum_elt ), (cfunc) compar_name );
-+ }
-+
-+ return (f != NULL) ? f->n : -1;
-+}
-+
-+
-Index: qemu-0.12.4/target-i386/mesa_get.c
-===================================================================
---- /dev/null
-+++ qemu-0.12.4/target-i386/mesa_get.c
-@@ -0,0 +1,5563 @@
-+
-+/***
-+ *** NOTE!!! DO NOT EDIT THIS FILE!!! IT IS GENERATED BY get_gen.py
-+ ***/
-+
-+#include "glheader.h"
-+#include "context.h"
-+#include "enable.h"
-+#include "extensions.h"
-+#include "fbobject.h"
-+#include "get.h"
-+#include "macros.h"
-+#include "mtypes.h"
-+#include "state.h"
-+#include "texcompress.h"
-+
-+
-+#define FLOAT_TO_BOOLEAN(X) ( (X) ? GL_TRUE : GL_FALSE )
-+
-+#define INT_TO_BOOLEAN(I) ( (I) ? GL_TRUE : GL_FALSE )
-+
-+#define ENUM_TO_BOOLEAN(E) ( (E) ? GL_TRUE : GL_FALSE )
-+#define ENUM_TO_INT(E) ( (GLint) (E) )
-+#define ENUM_TO_FLOAT(E) ( (GLfloat) (E) )
-+
-+#define BOOLEAN_TO_INT(B) ( (GLint) (B) )
-+#define BOOLEAN_TO_FLOAT(B) ( (B) ? 1.0F : 0.0F )
-+
-+
-+/*
-+ * Check if named extension is enabled, if not generate error and return.
-+ */
-+#define CHECK_EXT1(EXT1, FUNC) \
-+ if (!ctx->Extensions.EXT1) { \
-+ _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \
-+ return; \
-+ }
-+
-+/*
-+ * Check if either of two extensions is enabled.
-+ */
-+#define CHECK_EXT2(EXT1, EXT2, FUNC) \
-+ if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2) { \
-+ _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \
-+ return; \
-+ }
-+
-+/*
-+ * Check if either of three extensions is enabled.
-+ */
-+#define CHECK_EXT3(EXT1, EXT2, EXT3, FUNC) \
-+ if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \
-+ !ctx->Extensions.EXT3) { \
-+ _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \
-+ return; \
-+ }
-+
-+/*
-+ * Check if either of four extensions is enabled.
-+ */
-+#define CHECK_EXT4(EXT1, EXT2, EXT3, EXT4, FUNC) \
-+ if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \
-+ !ctx->Extensions.EXT3 && !ctx->Extensions.EXT4) { \
-+ _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \
-+ return; \
-+ }
-+
-+
-+void GLAPIENTRY
-+_mesa_GetBooleanv( GLenum pname, GLboolean *params )
-+{
-+ GET_CURRENT_CONTEXT(ctx);
-+ ASSERT_OUTSIDE_BEGIN_END(ctx);
-+
-+ if (!params)
-+ return;
-+
-+ if (ctx->NewState)
-+ _mesa_update_state(ctx);
-+
-+ if (ctx->Driver.GetBooleanv &&
-+ ctx->Driver.GetBooleanv(ctx, pname, params))
-+ return;
-+
-+ switch (pname) {
-+ case GL_ACCUM_RED_BITS:
-+ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumRedBits);
-+ break;
-+ case GL_ACCUM_GREEN_BITS:
-+ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumGreenBits);
-+ break;
-+ case GL_ACCUM_BLUE_BITS:
-+ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumBlueBits);
-+ break;
-+ case GL_ACCUM_ALPHA_BITS:
-+ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumAlphaBits);
-+ break;
-+ case GL_ACCUM_CLEAR_VALUE:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[0]);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[1]);
-+ params[2] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[2]);
-+ params[3] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[3]);
-+ break;
-+ case GL_ALPHA_BIAS:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.AlphaBias);
-+ break;
-+ case GL_ALPHA_BITS:
-+ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.alphaBits);
-+ break;
-+ case GL_ALPHA_SCALE:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.AlphaScale);
-+ break;
-+ case GL_ALPHA_TEST:
-+ params[0] = ctx->Color.AlphaEnabled;
-+ break;
-+ case GL_ALPHA_TEST_FUNC:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Color.AlphaFunc);
-+ break;
-+ case GL_ALPHA_TEST_REF:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Color.AlphaRef);
-+ break;
-+ case GL_ATTRIB_STACK_DEPTH:
-+ params[0] = INT_TO_BOOLEAN(ctx->AttribStackDepth);
-+ break;
-+ case GL_AUTO_NORMAL:
-+ params[0] = ctx->Eval.AutoNormal;
-+ break;
-+ case GL_AUX_BUFFERS:
-+ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.numAuxBuffers);
-+ break;
-+ case GL_BLEND:
-+ params[0] = ctx->Color.BlendEnabled;
-+ break;
-+ case GL_BLEND_DST:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstRGB);
-+ break;
-+ case GL_BLEND_SRC:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcRGB);
-+ break;
-+ case GL_BLEND_SRC_RGB_EXT:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcRGB);
-+ break;
-+ case GL_BLEND_DST_RGB_EXT:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstRGB);
-+ break;
-+ case GL_BLEND_SRC_ALPHA_EXT:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcA);
-+ break;
-+ case GL_BLEND_DST_ALPHA_EXT:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstA);
-+ break;
-+ case GL_BLEND_EQUATION:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendEquationRGB );
-+ break;
-+ case GL_BLEND_EQUATION_ALPHA_EXT:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendEquationA );
-+ break;
-+ case GL_BLEND_COLOR_EXT:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[0]);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[1]);
-+ params[2] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[2]);
-+ params[3] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[3]);
-+ break;
-+ case GL_BLUE_BIAS:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.BlueBias);
-+ break;
-+ case GL_BLUE_BITS:
-+ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.blueBits);
-+ break;
-+ case GL_BLUE_SCALE:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.BlueScale);
-+ break;
-+ case GL_CLIENT_ATTRIB_STACK_DEPTH:
-+ params[0] = INT_TO_BOOLEAN(ctx->ClientAttribStackDepth);
-+ break;
-+ case GL_CLIP_PLANE0:
-+ params[0] = (ctx->Transform.ClipPlanesEnabled >> 0) & 1;
-+ break;
-+ case GL_CLIP_PLANE1:
-+ params[0] = (ctx->Transform.ClipPlanesEnabled >> 1) & 1;
-+ break;
-+ case GL_CLIP_PLANE2:
-+ params[0] = (ctx->Transform.ClipPlanesEnabled >> 2) & 1;
-+ break;
-+ case GL_CLIP_PLANE3:
-+ params[0] = (ctx->Transform.ClipPlanesEnabled >> 3) & 1;
-+ break;
-+ case GL_CLIP_PLANE4:
-+ params[0] = (ctx->Transform.ClipPlanesEnabled >> 4) & 1;
-+ break;
-+ case GL_CLIP_PLANE5:
-+ params[0] = (ctx->Transform.ClipPlanesEnabled >> 5) & 1;
-+ break;
-+ case GL_COLOR_CLEAR_VALUE:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[0]);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[1]);
-+ params[2] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[2]);
-+ params[3] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[3]);
-+ break;
-+ case GL_COLOR_MATERIAL:
-+ params[0] = ctx->Light.ColorMaterialEnabled;
-+ break;
-+ case GL_COLOR_MATERIAL_FACE:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Light.ColorMaterialFace);
-+ break;
-+ case GL_COLOR_MATERIAL_PARAMETER:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Light.ColorMaterialMode);
-+ break;
-+ case GL_COLOR_WRITEMASK:
-+ params[0] = INT_TO_BOOLEAN(ctx->Color.ColorMask[RCOMP] ? 1 : 0);
-+ params[1] = INT_TO_BOOLEAN(ctx->Color.ColorMask[GCOMP] ? 1 : 0);
-+ params[2] = INT_TO_BOOLEAN(ctx->Color.ColorMask[BCOMP] ? 1 : 0);
-+ params[3] = INT_TO_BOOLEAN(ctx->Color.ColorMask[ACOMP] ? 1 : 0);
-+ break;
-+ case GL_CULL_FACE:
-+ params[0] = ctx->Polygon.CullFlag;
-+ break;
-+ case GL_CULL_FACE_MODE:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.CullFaceMode);
-+ break;
-+ case GL_CURRENT_COLOR:
-+ {
-+ FLUSH_CURRENT(ctx, 0);
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
-+ params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
-+ params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
-+ }
-+ break;
-+ case GL_CURRENT_INDEX:
-+ {
-+ FLUSH_CURRENT(ctx, 0);
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]);
-+ }
-+ break;
-+ case GL_CURRENT_NORMAL:
-+ {
-+ FLUSH_CURRENT(ctx, 0);
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
-+ params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
-+ }
-+ break;
-+ case GL_CURRENT_RASTER_COLOR:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[0]);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[1]);
-+ params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[2]);
-+ params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[3]);
-+ break;
-+ case GL_CURRENT_RASTER_DISTANCE:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterDistance);
-+ break;
-+ case GL_CURRENT_RASTER_INDEX:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterIndex);
-+ break;
-+ case GL_CURRENT_RASTER_POSITION:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[0]);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[1]);
-+ params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[2]);
-+ params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[3]);
-+ break;
-+ case GL_CURRENT_RASTER_SECONDARY_COLOR:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[0]);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[1]);
-+ params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[2]);
-+ params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[3]);
-+ break;
-+ case GL_CURRENT_RASTER_TEXTURE_COORDS:
-+ {
-+ const GLuint texUnit = ctx->Texture.CurrentUnit;
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][0]);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][1]);
-+ params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][2]);
-+ params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][3]);
-+ }
-+ break;
-+ case GL_CURRENT_RASTER_POSITION_VALID:
-+ params[0] = ctx->Current.RasterPosValid;
-+ break;
-+ case GL_CURRENT_TEXTURE_COORDS:
-+ {
-+ const GLuint texUnit = ctx->Texture.CurrentUnit;
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]);
-+ params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]);
-+ params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]);
-+ }
-+ break;
-+ case GL_DEPTH_BIAS:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.DepthBias);
-+ break;
-+ case GL_DEPTH_BITS:
-+ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.depthBits);
-+ break;
-+ case GL_DEPTH_CLEAR_VALUE:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Depth.Clear);
-+ break;
-+ case GL_DEPTH_FUNC:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Depth.Func);
-+ break;
-+ case GL_DEPTH_RANGE:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Viewport.Near);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Viewport.Far);
-+ break;
-+ case GL_DEPTH_SCALE:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.DepthScale);
-+ break;
-+ case GL_DEPTH_TEST:
-+ params[0] = ctx->Depth.Test;
-+ break;
-+ case GL_DEPTH_WRITEMASK:
-+ params[0] = ctx->Depth.Mask;
-+ break;
-+ case GL_DITHER:
-+ params[0] = ctx->Color.DitherFlag;
-+ break;
-+ case GL_DOUBLEBUFFER:
-+ params[0] = ctx->DrawBuffer->Visual.doubleBufferMode;
-+ break;
-+ case GL_DRAW_BUFFER:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->DrawBuffer->ColorDrawBuffer[0]);
-+ break;
-+ case GL_EDGE_FLAG:
-+ {
-+ FLUSH_CURRENT(ctx, 0);
-+ params[0] = ctx->Current.EdgeFlag;
-+ }
-+ break;
-+ case GL_FEEDBACK_BUFFER_SIZE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Feedback.BufferSize);
-+ break;
-+ case GL_FEEDBACK_BUFFER_TYPE:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Feedback.Type);
-+ break;
-+ case GL_FOG:
-+ params[0] = ctx->Fog.Enabled;
-+ break;
-+ case GL_FOG_COLOR:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[0]);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[1]);
-+ params[2] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[2]);
-+ params[3] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[3]);
-+ break;
-+ case GL_FOG_DENSITY:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Density);
-+ break;
-+ case GL_FOG_END:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.End);
-+ break;
-+ case GL_FOG_HINT:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Hint.Fog);
-+ break;
-+ case GL_FOG_INDEX:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Index);
-+ break;
-+ case GL_FOG_MODE:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Fog.Mode);
-+ break;
-+ case GL_FOG_START:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Start);
-+ break;
-+ case GL_FRONT_FACE:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.FrontFace);
-+ break;
-+ case GL_GREEN_BIAS:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.GreenBias);
-+ break;
-+ case GL_GREEN_BITS:
-+ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.greenBits);
-+ break;
-+ case GL_GREEN_SCALE:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.GreenScale);
-+ break;
-+ case GL_INDEX_BITS:
-+ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.indexBits);
-+ break;
-+ case GL_INDEX_CLEAR_VALUE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Color.ClearIndex);
-+ break;
-+ case GL_INDEX_MODE:
-+ params[0] = !ctx->DrawBuffer->Visual.rgbMode;
-+ break;
-+ case GL_INDEX_OFFSET:
-+ params[0] = INT_TO_BOOLEAN(ctx->Pixel.IndexOffset);
-+ break;
-+ case GL_INDEX_SHIFT:
-+ params[0] = INT_TO_BOOLEAN(ctx->Pixel.IndexShift);
-+ break;
-+ case GL_INDEX_WRITEMASK:
-+ params[0] = INT_TO_BOOLEAN(ctx->Color.IndexMask);
-+ break;
-+ case GL_LIGHT0:
-+ params[0] = ctx->Light.Light[0].Enabled;
-+ break;
-+ case GL_LIGHT1:
-+ params[0] = ctx->Light.Light[1].Enabled;
-+ break;
-+ case GL_LIGHT2:
-+ params[0] = ctx->Light.Light[2].Enabled;
-+ break;
-+ case GL_LIGHT3:
-+ params[0] = ctx->Light.Light[3].Enabled;
-+ break;
-+ case GL_LIGHT4:
-+ params[0] = ctx->Light.Light[4].Enabled;
-+ break;
-+ case GL_LIGHT5:
-+ params[0] = ctx->Light.Light[5].Enabled;
-+ break;
-+ case GL_LIGHT6:
-+ params[0] = ctx->Light.Light[6].Enabled;
-+ break;
-+ case GL_LIGHT7:
-+ params[0] = ctx->Light.Light[7].Enabled;
-+ break;
-+ case GL_LIGHTING:
-+ params[0] = ctx->Light.Enabled;
-+ break;
-+ case GL_LIGHT_MODEL_AMBIENT:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[0]);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[1]);
-+ params[2] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[2]);
-+ params[3] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[3]);
-+ break;
-+ case GL_LIGHT_MODEL_COLOR_CONTROL:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Light.Model.ColorControl);
-+ break;
-+ case GL_LIGHT_MODEL_LOCAL_VIEWER:
-+ params[0] = ctx->Light.Model.LocalViewer;
-+ break;
-+ case GL_LIGHT_MODEL_TWO_SIDE:
-+ params[0] = ctx->Light.Model.TwoSide;
-+ break;
-+ case GL_LINE_SMOOTH:
-+ params[0] = ctx->Line.SmoothFlag;
-+ break;
-+ case GL_LINE_SMOOTH_HINT:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Hint.LineSmooth);
-+ break;
-+ case GL_LINE_STIPPLE:
-+ params[0] = ctx->Line.StippleFlag;
-+ break;
-+ case GL_LINE_STIPPLE_PATTERN:
-+ params[0] = INT_TO_BOOLEAN(ctx->Line.StipplePattern);
-+ break;
-+ case GL_LINE_STIPPLE_REPEAT:
-+ params[0] = INT_TO_BOOLEAN(ctx->Line.StippleFactor);
-+ break;
-+ case GL_LINE_WIDTH:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Line.Width);
-+ break;
-+ case GL_LINE_WIDTH_GRANULARITY:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Const.LineWidthGranularity);
-+ break;
-+ case GL_LINE_WIDTH_RANGE:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinLineWidthAA);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxLineWidthAA);
-+ break;
-+ case GL_ALIASED_LINE_WIDTH_RANGE:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinLineWidth);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxLineWidth);
-+ break;
-+ case GL_LIST_BASE:
-+ params[0] = INT_TO_BOOLEAN(ctx->List.ListBase);
-+ break;
-+ case GL_LIST_INDEX:
-+ params[0] = INT_TO_BOOLEAN(ctx->ListState.CurrentListNum);
-+ break;
-+ case GL_LIST_MODE:
-+ {
-+ GLenum mode;
-+ if (!ctx->CompileFlag)
-+ mode = 0;
-+ else if (ctx->ExecuteFlag)
-+ mode = GL_COMPILE_AND_EXECUTE;
-+ else
-+ mode = GL_COMPILE;
-+ params[0] = ENUM_TO_BOOLEAN(mode);
-+ }
-+ break;
-+ case GL_INDEX_LOGIC_OP:
-+ params[0] = ctx->Color.IndexLogicOpEnabled;
-+ break;
-+ case GL_COLOR_LOGIC_OP:
-+ params[0] = ctx->Color.ColorLogicOpEnabled;
-+ break;
-+ case GL_LOGIC_OP_MODE:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Color.LogicOp);
-+ break;
-+ case GL_MAP1_COLOR_4:
-+ params[0] = ctx->Eval.Map1Color4;
-+ break;
-+ case GL_MAP1_GRID_DOMAIN:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid1u1);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid1u2);
-+ break;
-+ case GL_MAP1_GRID_SEGMENTS:
-+ params[0] = INT_TO_BOOLEAN(ctx->Eval.MapGrid1un);
-+ break;
-+ case GL_MAP1_INDEX:
-+ params[0] = ctx->Eval.Map1Index;
-+ break;
-+ case GL_MAP1_NORMAL:
-+ params[0] = ctx->Eval.Map1Normal;
-+ break;
-+ case GL_MAP1_TEXTURE_COORD_1:
-+ params[0] = ctx->Eval.Map1TextureCoord1;
-+ break;
-+ case GL_MAP1_TEXTURE_COORD_2:
-+ params[0] = ctx->Eval.Map1TextureCoord2;
-+ break;
-+ case GL_MAP1_TEXTURE_COORD_3:
-+ params[0] = ctx->Eval.Map1TextureCoord3;
-+ break;
-+ case GL_MAP1_TEXTURE_COORD_4:
-+ params[0] = ctx->Eval.Map1TextureCoord4;
-+ break;
-+ case GL_MAP1_VERTEX_3:
-+ params[0] = ctx->Eval.Map1Vertex3;
-+ break;
-+ case GL_MAP1_VERTEX_4:
-+ params[0] = ctx->Eval.Map1Vertex4;
-+ break;
-+ case GL_MAP2_COLOR_4:
-+ params[0] = ctx->Eval.Map2Color4;
-+ break;
-+ case GL_MAP2_GRID_DOMAIN:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2u1);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2u2);
-+ params[2] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2v1);
-+ params[3] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2v2);
-+ break;
-+ case GL_MAP2_GRID_SEGMENTS:
-+ params[0] = INT_TO_BOOLEAN(ctx->Eval.MapGrid2un);
-+ params[1] = INT_TO_BOOLEAN(ctx->Eval.MapGrid2vn);
-+ break;
-+ case GL_MAP2_INDEX:
-+ params[0] = ctx->Eval.Map2Index;
-+ break;
-+ case GL_MAP2_NORMAL:
-+ params[0] = ctx->Eval.Map2Normal;
-+ break;
-+ case GL_MAP2_TEXTURE_COORD_1:
-+ params[0] = ctx->Eval.Map2TextureCoord1;
-+ break;
-+ case GL_MAP2_TEXTURE_COORD_2:
-+ params[0] = ctx->Eval.Map2TextureCoord2;
-+ break;
-+ case GL_MAP2_TEXTURE_COORD_3:
-+ params[0] = ctx->Eval.Map2TextureCoord3;
-+ break;
-+ case GL_MAP2_TEXTURE_COORD_4:
-+ params[0] = ctx->Eval.Map2TextureCoord4;
-+ break;
-+ case GL_MAP2_VERTEX_3:
-+ params[0] = ctx->Eval.Map2Vertex3;
-+ break;
-+ case GL_MAP2_VERTEX_4:
-+ params[0] = ctx->Eval.Map2Vertex4;
-+ break;
-+ case GL_MAP_COLOR:
-+ params[0] = ctx->Pixel.MapColorFlag;
-+ break;
-+ case GL_MAP_STENCIL:
-+ params[0] = ctx->Pixel.MapStencilFlag;
-+ break;
-+ case GL_MATRIX_MODE:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Transform.MatrixMode);
-+ break;
-+ case GL_MAX_ATTRIB_STACK_DEPTH:
-+ params[0] = INT_TO_BOOLEAN(MAX_ATTRIB_STACK_DEPTH);
-+ break;
-+ case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
-+ params[0] = INT_TO_BOOLEAN(MAX_CLIENT_ATTRIB_STACK_DEPTH);
-+ break;
-+ case GL_MAX_CLIP_PLANES:
-+ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxClipPlanes);
-+ break;
-+ case GL_MAX_ELEMENTS_VERTICES:
-+ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxArrayLockSize);
-+ break;
-+ case GL_MAX_ELEMENTS_INDICES:
-+ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxArrayLockSize);
-+ break;
-+ case GL_MAX_EVAL_ORDER:
-+ params[0] = INT_TO_BOOLEAN(MAX_EVAL_ORDER);
-+ break;
-+ case GL_MAX_LIGHTS:
-+ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxLights);
-+ break;
-+ case GL_MAX_LIST_NESTING:
-+ params[0] = INT_TO_BOOLEAN(MAX_LIST_NESTING);
-+ break;
-+ case GL_MAX_MODELVIEW_STACK_DEPTH:
-+ params[0] = INT_TO_BOOLEAN(MAX_MODELVIEW_STACK_DEPTH);
-+ break;
-+ case GL_MAX_NAME_STACK_DEPTH:
-+ params[0] = INT_TO_BOOLEAN(MAX_NAME_STACK_DEPTH);
-+ break;
-+ case GL_MAX_PIXEL_MAP_TABLE:
-+ params[0] = INT_TO_BOOLEAN(MAX_PIXEL_MAP_TABLE);
-+ break;
-+ case GL_MAX_PROJECTION_STACK_DEPTH:
-+ params[0] = INT_TO_BOOLEAN(MAX_PROJECTION_STACK_DEPTH);
-+ break;
-+ case GL_MAX_TEXTURE_SIZE:
-+ params[0] = INT_TO_BOOLEAN(1 << (ctx->Const.MaxTextureLevels - 1));
-+ break;
-+ case GL_MAX_3D_TEXTURE_SIZE:
-+ params[0] = INT_TO_BOOLEAN(1 << (ctx->Const.Max3DTextureLevels - 1));
-+ break;
-+ case GL_MAX_TEXTURE_STACK_DEPTH:
-+ params[0] = INT_TO_BOOLEAN(MAX_TEXTURE_STACK_DEPTH);
-+ break;
-+ case GL_MAX_VIEWPORT_DIMS:
-+ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxViewportWidth);
-+ params[1] = INT_TO_BOOLEAN(ctx->Const.MaxViewportHeight);
-+ break;
-+ case GL_MODELVIEW_MATRIX:
-+ {
-+ const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
-+ params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
-+ params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
-+ params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
-+ params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
-+ params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
-+ params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
-+ params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
-+ params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
-+ params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
-+ params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
-+ params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
-+ params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
-+ params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
-+ params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
-+ params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
-+ params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
-+ }
-+ break;
-+ case GL_MODELVIEW_STACK_DEPTH:
-+ params[0] = INT_TO_BOOLEAN(ctx->ModelviewMatrixStack.Depth + 1);
-+ break;
-+ case GL_NAME_STACK_DEPTH:
-+ params[0] = INT_TO_BOOLEAN(ctx->Select.NameStackDepth);
-+ break;
-+ case GL_NORMALIZE:
-+ params[0] = ctx->Transform.Normalize;
-+ break;
-+ case GL_PACK_ALIGNMENT:
-+ params[0] = INT_TO_BOOLEAN(ctx->Pack.Alignment);
-+ break;
-+ case GL_PACK_LSB_FIRST:
-+ params[0] = ctx->Pack.LsbFirst;
-+ break;
-+ case GL_PACK_ROW_LENGTH:
-+ params[0] = INT_TO_BOOLEAN(ctx->Pack.RowLength);
-+ break;
-+ case GL_PACK_SKIP_PIXELS:
-+ params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipPixels);
-+ break;
-+ case GL_PACK_SKIP_ROWS:
-+ params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipRows);
-+ break;
-+ case GL_PACK_SWAP_BYTES:
-+ params[0] = ctx->Pack.SwapBytes;
-+ break;
-+ case GL_PACK_SKIP_IMAGES_EXT:
-+ params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipImages);
-+ break;
-+ case GL_PACK_IMAGE_HEIGHT_EXT:
-+ params[0] = INT_TO_BOOLEAN(ctx->Pack.ImageHeight);
-+ break;
-+ case GL_PACK_INVERT_MESA:
-+ params[0] = ctx->Pack.Invert;
-+ break;
-+ case GL_PERSPECTIVE_CORRECTION_HINT:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PerspectiveCorrection);
-+ break;
-+ case GL_PIXEL_MAP_A_TO_A_SIZE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Pixel.MapAtoAsize);
-+ break;
-+ case GL_PIXEL_MAP_B_TO_B_SIZE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Pixel.MapBtoBsize);
-+ break;
-+ case GL_PIXEL_MAP_G_TO_G_SIZE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Pixel.MapGtoGsize);
-+ break;
-+ case GL_PIXEL_MAP_I_TO_A_SIZE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Pixel.MapItoAsize);
-+ break;
-+ case GL_PIXEL_MAP_I_TO_B_SIZE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Pixel.MapItoBsize);
-+ break;
-+ case GL_PIXEL_MAP_I_TO_G_SIZE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Pixel.MapItoGsize);
-+ break;
-+ case GL_PIXEL_MAP_I_TO_I_SIZE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Pixel.MapItoIsize);
-+ break;
-+ case GL_PIXEL_MAP_I_TO_R_SIZE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Pixel.MapItoRsize);
-+ break;
-+ case GL_PIXEL_MAP_R_TO_R_SIZE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Pixel.MapRtoRsize);
-+ break;
-+ case GL_PIXEL_MAP_S_TO_S_SIZE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Pixel.MapStoSsize);
-+ break;
-+ case GL_POINT_SIZE:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Size);
-+ break;
-+ case GL_POINT_SIZE_GRANULARITY:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Const.PointSizeGranularity);
-+ break;
-+ case GL_POINT_SIZE_RANGE:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinPointSizeAA);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxPointSizeAA);
-+ break;
-+ case GL_ALIASED_POINT_SIZE_RANGE:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinPointSize);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxPointSize);
-+ break;
-+ case GL_POINT_SMOOTH:
-+ params[0] = ctx->Point.SmoothFlag;
-+ break;
-+ case GL_POINT_SMOOTH_HINT:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PointSmooth);
-+ break;
-+ case GL_POINT_SIZE_MIN_EXT:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Point.MinSize);
-+ break;
-+ case GL_POINT_SIZE_MAX_EXT:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Point.MaxSize);
-+ break;
-+ case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Threshold);
-+ break;
-+ case GL_DISTANCE_ATTENUATION_EXT:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Params[0]);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Point.Params[1]);
-+ params[2] = FLOAT_TO_BOOLEAN(ctx->Point.Params[2]);
-+ break;
-+ case GL_POLYGON_MODE:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.FrontMode);
-+ params[1] = ENUM_TO_BOOLEAN(ctx->Polygon.BackMode);
-+ break;
-+ case GL_POLYGON_OFFSET_BIAS_EXT:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetUnits);
-+ break;
-+ case GL_POLYGON_OFFSET_FACTOR:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetFactor );
-+ break;
-+ case GL_POLYGON_OFFSET_UNITS:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetUnits );
-+ break;
-+ case GL_POLYGON_SMOOTH:
-+ params[0] = ctx->Polygon.SmoothFlag;
-+ break;
-+ case GL_POLYGON_SMOOTH_HINT:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PolygonSmooth);
-+ break;
-+ case GL_POLYGON_STIPPLE:
-+ params[0] = ctx->Polygon.StippleFlag;
-+ break;
-+ case GL_PROJECTION_MATRIX:
-+ {
-+ const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
-+ params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
-+ params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
-+ params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
-+ params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
-+ params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
-+ params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
-+ params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
-+ params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
-+ params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
-+ params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
-+ params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
-+ params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
-+ params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
-+ params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
-+ params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
-+ params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
-+ }
-+ break;
-+ case GL_PROJECTION_STACK_DEPTH:
-+ params[0] = INT_TO_BOOLEAN(ctx->ProjectionMatrixStack.Depth + 1);
-+ break;
-+ case GL_READ_BUFFER:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->ReadBuffer->ColorReadBuffer);
-+ break;
-+ case GL_RED_BIAS:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.RedBias);
-+ break;
-+ case GL_RED_BITS:
-+ params[0] = INT_TO_BOOLEAN( ctx->DrawBuffer->Visual.redBits );
-+ break;
-+ case GL_RED_SCALE:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.RedScale);
-+ break;
-+ case GL_RENDER_MODE:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->RenderMode);
-+ break;
-+ case GL_RESCALE_NORMAL:
-+ params[0] = ctx->Transform.RescaleNormals;
-+ break;
-+ case GL_RGBA_MODE:
-+ params[0] = ctx->DrawBuffer->Visual.rgbMode;
-+ break;
-+ case GL_SCISSOR_BOX:
-+ params[0] = INT_TO_BOOLEAN(ctx->Scissor.X);
-+ params[1] = INT_TO_BOOLEAN(ctx->Scissor.Y);
-+ params[2] = INT_TO_BOOLEAN(ctx->Scissor.Width);
-+ params[3] = INT_TO_BOOLEAN(ctx->Scissor.Height);
-+ break;
-+ case GL_SCISSOR_TEST:
-+ params[0] = ctx->Scissor.Enabled;
-+ break;
-+ case GL_SELECTION_BUFFER_SIZE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Select.BufferSize);
-+ break;
-+ case GL_SHADE_MODEL:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Light.ShadeModel);
-+ break;
-+ case GL_SHARED_TEXTURE_PALETTE_EXT:
-+ params[0] = ctx->Texture.SharedPalette;
-+ break;
-+ case GL_STENCIL_BITS:
-+ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.stencilBits);
-+ break;
-+ case GL_STENCIL_CLEAR_VALUE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Stencil.Clear);
-+ break;
-+ case GL_STENCIL_FAIL:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
-+ break;
-+ case GL_STENCIL_FUNC:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
-+ break;
-+ case GL_STENCIL_PASS_DEPTH_FAIL:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
-+ break;
-+ case GL_STENCIL_PASS_DEPTH_PASS:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
-+ break;
-+ case GL_STENCIL_REF:
-+ params[0] = INT_TO_BOOLEAN(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]);
-+ break;
-+ case GL_STENCIL_TEST:
-+ params[0] = ctx->Stencil.Enabled;
-+ break;
-+ case GL_STENCIL_VALUE_MASK:
-+ params[0] = INT_TO_BOOLEAN(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]);
-+ break;
-+ case GL_STENCIL_WRITEMASK:
-+ params[0] = INT_TO_BOOLEAN(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]);
-+ break;
-+ case GL_STEREO:
-+ params[0] = ctx->DrawBuffer->Visual.stereoMode;
-+ break;
-+ case GL_SUBPIXEL_BITS:
-+ params[0] = INT_TO_BOOLEAN(ctx->Const.SubPixelBits);
-+ break;
-+ case GL_TEXTURE_1D:
-+ params[0] = _mesa_IsEnabled(GL_TEXTURE_1D);
-+ break;
-+ case GL_TEXTURE_2D:
-+ params[0] = _mesa_IsEnabled(GL_TEXTURE_2D);
-+ break;
-+ case GL_TEXTURE_3D:
-+ params[0] = _mesa_IsEnabled(GL_TEXTURE_3D);
-+ break;
-+ case GL_TEXTURE_BINDING_1D:
-+ params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current1D->Name);
-+ break;
-+ case GL_TEXTURE_BINDING_2D:
-+ params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current2D->Name);
-+ break;
-+ case GL_TEXTURE_BINDING_3D:
-+ params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current3D->Name);
-+ break;
-+ case GL_TEXTURE_ENV_COLOR:
-+ {
-+ const GLfloat *color = ctx->Texture.Unit[ctx->Texture.CurrentUnit].EnvColor;
-+ params[0] = FLOAT_TO_BOOLEAN(color[0]);
-+ params[1] = FLOAT_TO_BOOLEAN(color[1]);
-+ params[2] = FLOAT_TO_BOOLEAN(color[2]);
-+ params[3] = FLOAT_TO_BOOLEAN(color[3]);
-+ }
-+ break;
-+ case GL_TEXTURE_ENV_MODE:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].EnvMode);
-+ break;
-+ case GL_TEXTURE_GEN_S:
-+ params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0);
-+ break;
-+ case GL_TEXTURE_GEN_T:
-+ params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0);
-+ break;
-+ case GL_TEXTURE_GEN_R:
-+ params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0);
-+ break;
-+ case GL_TEXTURE_GEN_Q:
-+ params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0);
-+ break;
-+ case GL_TEXTURE_MATRIX:
-+ {
-+ const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
-+ params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
-+ params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
-+ params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
-+ params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
-+ params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
-+ params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
-+ params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
-+ params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
-+ params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
-+ params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
-+ params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
-+ params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
-+ params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
-+ params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
-+ params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
-+ params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
-+ }
-+ break;
-+ case GL_TEXTURE_STACK_DEPTH:
-+ params[0] = INT_TO_BOOLEAN(ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1);
-+ break;
-+ case GL_UNPACK_ALIGNMENT:
-+ params[0] = INT_TO_BOOLEAN(ctx->Unpack.Alignment);
-+ break;
-+ case GL_UNPACK_LSB_FIRST:
-+ params[0] = ctx->Unpack.LsbFirst;
-+ break;
-+ case GL_UNPACK_ROW_LENGTH:
-+ params[0] = INT_TO_BOOLEAN(ctx->Unpack.RowLength);
-+ break;
-+ case GL_UNPACK_SKIP_PIXELS:
-+ params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipPixels);
-+ break;
-+ case GL_UNPACK_SKIP_ROWS:
-+ params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipRows);
-+ break;
-+ case GL_UNPACK_SWAP_BYTES:
-+ params[0] = ctx->Unpack.SwapBytes;
-+ break;
-+ case GL_UNPACK_SKIP_IMAGES_EXT:
-+ params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipImages);
-+ break;
-+ case GL_UNPACK_IMAGE_HEIGHT_EXT:
-+ params[0] = INT_TO_BOOLEAN(ctx->Unpack.ImageHeight);
-+ break;
-+ case GL_UNPACK_CLIENT_STORAGE_APPLE:
-+ params[0] = ctx->Unpack.ClientStorage;
-+ break;
-+ case GL_VIEWPORT:
-+ params[0] = INT_TO_BOOLEAN(ctx->Viewport.X);
-+ params[1] = INT_TO_BOOLEAN(ctx->Viewport.Y);
-+ params[2] = INT_TO_BOOLEAN(ctx->Viewport.Width);
-+ params[3] = INT_TO_BOOLEAN(ctx->Viewport.Height);
-+ break;
-+ case GL_ZOOM_X:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.ZoomX);
-+ break;
-+ case GL_ZOOM_Y:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.ZoomY);
-+ break;
-+ case GL_VERTEX_ARRAY:
-+ params[0] = ctx->Array.ArrayObj->Vertex.Enabled;
-+ break;
-+ case GL_VERTEX_ARRAY_SIZE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Size);
-+ break;
-+ case GL_VERTEX_ARRAY_TYPE:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Type);
-+ break;
-+ case GL_VERTEX_ARRAY_STRIDE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Stride);
-+ break;
-+ case GL_VERTEX_ARRAY_COUNT_EXT:
-+ params[0] = INT_TO_BOOLEAN(0);
-+ break;
-+ case GL_NORMAL_ARRAY:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Enabled);
-+ break;
-+ case GL_NORMAL_ARRAY_TYPE:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Type);
-+ break;
-+ case GL_NORMAL_ARRAY_STRIDE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Stride);
-+ break;
-+ case GL_NORMAL_ARRAY_COUNT_EXT:
-+ params[0] = INT_TO_BOOLEAN(0);
-+ break;
-+ case GL_COLOR_ARRAY:
-+ params[0] = ctx->Array.ArrayObj->Color.Enabled;
-+ break;
-+ case GL_COLOR_ARRAY_SIZE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Size);
-+ break;
-+ case GL_COLOR_ARRAY_TYPE:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Type);
-+ break;
-+ case GL_COLOR_ARRAY_STRIDE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Stride);
-+ break;
-+ case GL_COLOR_ARRAY_COUNT_EXT:
-+ params[0] = INT_TO_BOOLEAN(0);
-+ break;
-+ case GL_INDEX_ARRAY:
-+ params[0] = ctx->Array.ArrayObj->Index.Enabled;
-+ break;
-+ case GL_INDEX_ARRAY_TYPE:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Index.Type);
-+ break;
-+ case GL_INDEX_ARRAY_STRIDE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Index.Stride);
-+ break;
-+ case GL_INDEX_ARRAY_COUNT_EXT:
-+ params[0] = INT_TO_BOOLEAN(0);
-+ break;
-+ case GL_TEXTURE_COORD_ARRAY:
-+ params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled;
-+ break;
-+ case GL_TEXTURE_COORD_ARRAY_SIZE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size);
-+ break;
-+ case GL_TEXTURE_COORD_ARRAY_TYPE:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
-+ break;
-+ case GL_TEXTURE_COORD_ARRAY_STRIDE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride);
-+ break;
-+ case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
-+ params[0] = INT_TO_BOOLEAN(0);
-+ break;
-+ case GL_EDGE_FLAG_ARRAY:
-+ params[0] = ctx->Array.ArrayObj->EdgeFlag.Enabled;
-+ break;
-+ case GL_EDGE_FLAG_ARRAY_STRIDE:
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->EdgeFlag.Stride);
-+ break;
-+ case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
-+ params[0] = INT_TO_BOOLEAN(0);
-+ break;
-+ case GL_MAX_TEXTURE_UNITS_ARB:
-+ CHECK_EXT1(ARB_multitexture, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureUnits);
-+ break;
-+ case GL_ACTIVE_TEXTURE_ARB:
-+ CHECK_EXT1(ARB_multitexture, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit);
-+ break;
-+ case GL_CLIENT_ACTIVE_TEXTURE_ARB:
-+ CHECK_EXT1(ARB_multitexture, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture);
-+ break;
-+ case GL_TEXTURE_CUBE_MAP_ARB:
-+ CHECK_EXT1(ARB_texture_cube_map, "GetBooleanv");
-+ params[0] = _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB);
-+ break;
-+ case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
-+ CHECK_EXT1(ARB_texture_cube_map, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentCubeMap->Name);
-+ break;
-+ case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
-+ CHECK_EXT1(ARB_texture_cube_map, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN((1 << (ctx->Const.MaxCubeTextureLevels - 1)));
-+ break;
-+ case GL_TEXTURE_COMPRESSION_HINT_ARB:
-+ CHECK_EXT1(ARB_texture_compression, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Hint.TextureCompression);
-+ break;
-+ case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
-+ CHECK_EXT1(ARB_texture_compression, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
-+ break;
-+ case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
-+ CHECK_EXT1(ARB_texture_compression, "GetBooleanv");
-+ {
-+ GLint formats[100];
-+ GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
-+ ASSERT(n <= 100);
-+ for (i = 0; i < n; i++)
-+ params[i] = ENUM_TO_INT(formats[i]);
-+ }
-+ break;
-+ case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
-+ CHECK_EXT1(EXT_compiled_vertex_array, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.LockFirst);
-+ break;
-+ case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
-+ CHECK_EXT1(EXT_compiled_vertex_array, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.LockCount);
-+ break;
-+ case GL_TRANSPOSE_COLOR_MATRIX_ARB:
-+ {
-+ const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
-+ params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
-+ params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
-+ params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
-+ params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
-+ params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
-+ params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
-+ params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
-+ params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
-+ params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
-+ params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
-+ params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
-+ params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
-+ params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
-+ params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
-+ params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
-+ params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
-+ }
-+ break;
-+ case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
-+ {
-+ const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
-+ params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
-+ params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
-+ params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
-+ params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
-+ params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
-+ params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
-+ params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
-+ params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
-+ params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
-+ params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
-+ params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
-+ params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
-+ params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
-+ params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
-+ params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
-+ params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
-+ }
-+ break;
-+ case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
-+ {
-+ const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
-+ params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
-+ params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
-+ params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
-+ params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
-+ params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
-+ params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
-+ params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
-+ params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
-+ params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
-+ params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
-+ params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
-+ params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
-+ params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
-+ params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
-+ params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
-+ params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
-+ }
-+ break;
-+ case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
-+ {
-+ const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
-+ params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
-+ params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
-+ params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
-+ params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
-+ params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
-+ params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
-+ params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
-+ params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
-+ params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
-+ params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
-+ params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
-+ params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
-+ params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
-+ params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
-+ params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
-+ params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
-+ }
-+ break;
-+ case GL_COLOR_MATRIX_SGI:
-+ {
-+ const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
-+ params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
-+ params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
-+ params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
-+ params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
-+ params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
-+ params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
-+ params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
-+ params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
-+ params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
-+ params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
-+ params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
-+ params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
-+ params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
-+ params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
-+ params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
-+ params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
-+ }
-+ break;
-+ case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
-+ params[0] = INT_TO_BOOLEAN(ctx->ColorMatrixStack.Depth + 1);
-+ break;
-+ case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
-+ params[0] = INT_TO_BOOLEAN(MAX_COLOR_STACK_DEPTH);
-+ break;
-+ case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[0]);
-+ break;
-+ case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[1]);
-+ break;
-+ case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[2]);
-+ break;
-+ case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[3]);
-+ break;
-+ case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[0]);
-+ break;
-+ case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[1]);
-+ break;
-+ case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[2]);
-+ break;
-+ case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[3]);
-+ break;
-+ case GL_CONVOLUTION_1D_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetBooleanv");
-+ params[0] = ctx->Pixel.Convolution1DEnabled;
-+ break;
-+ case GL_CONVOLUTION_2D_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetBooleanv");
-+ params[0] = ctx->Pixel.Convolution2DEnabled;
-+ break;
-+ case GL_SEPARABLE_2D_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetBooleanv");
-+ params[0] = ctx->Pixel.Separable2DEnabled;
-+ break;
-+ case GL_POST_CONVOLUTION_RED_SCALE_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetBooleanv");
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[0]);
-+ break;
-+ case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetBooleanv");
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[1]);
-+ break;
-+ case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetBooleanv");
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[2]);
-+ break;
-+ case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetBooleanv");
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[3]);
-+ break;
-+ case GL_POST_CONVOLUTION_RED_BIAS_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetBooleanv");
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[0]);
-+ break;
-+ case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetBooleanv");
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[1]);
-+ break;
-+ case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetBooleanv");
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[2]);
-+ break;
-+ case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetBooleanv");
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[3]);
-+ break;
-+ case GL_HISTOGRAM:
-+ CHECK_EXT1(EXT_histogram, "GetBooleanv");
-+ params[0] = ctx->Pixel.HistogramEnabled;
-+ break;
-+ case GL_MINMAX:
-+ CHECK_EXT1(EXT_histogram, "GetBooleanv");
-+ params[0] = ctx->Pixel.MinMaxEnabled;
-+ break;
-+ case GL_COLOR_TABLE_SGI:
-+ CHECK_EXT1(SGI_color_table, "GetBooleanv");
-+ params[0] = ctx->Pixel.ColorTableEnabled;
-+ break;
-+ case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
-+ CHECK_EXT1(SGI_color_table, "GetBooleanv");
-+ params[0] = ctx->Pixel.PostConvolutionColorTableEnabled;
-+ break;
-+ case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
-+ CHECK_EXT1(SGI_color_table, "GetBooleanv");
-+ params[0] = ctx->Pixel.PostColorMatrixColorTableEnabled;
-+ break;
-+ case GL_TEXTURE_COLOR_TABLE_SGI:
-+ CHECK_EXT1(SGI_texture_color_table, "GetBooleanv");
-+ params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled;
-+ break;
-+ case GL_COLOR_SUM_EXT:
-+ CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Fog.ColorSumEnabled;
-+ break;
-+ case GL_CURRENT_SECONDARY_COLOR_EXT:
-+ CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
-+ {
-+ FLUSH_CURRENT(ctx, 0);
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
-+ params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
-+ params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]);
-+ }
-+ break;
-+ case GL_SECONDARY_COLOR_ARRAY_EXT:
-+ CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
-+ params[0] = ctx->Array.ArrayObj->SecondaryColor.Enabled;
-+ break;
-+ case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
-+ CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Type);
-+ break;
-+ case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
-+ CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Stride);
-+ break;
-+ case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
-+ CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Size);
-+ break;
-+ case GL_CURRENT_FOG_COORDINATE_EXT:
-+ CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
-+ {
-+ FLUSH_CURRENT(ctx, 0);
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
-+ }
-+ break;
-+ case GL_FOG_COORDINATE_ARRAY_EXT:
-+ CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
-+ params[0] = ctx->Array.ArrayObj->FogCoord.Enabled;
-+ break;
-+ case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
-+ CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.Type);
-+ break;
-+ case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
-+ CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.Stride);
-+ break;
-+ case GL_FOG_COORDINATE_SOURCE_EXT:
-+ CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Fog.FogCoordinateSource);
-+ break;
-+ case GL_MAX_TEXTURE_LOD_BIAS_EXT:
-+ CHECK_EXT1(EXT_texture_lod_bias, "GetBooleanv");
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxTextureLodBias);
-+ break;
-+ case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
-+ CHECK_EXT1(EXT_texture_filter_anisotropic, "GetBooleanv");
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxTextureMaxAnisotropy);
-+ break;
-+ case GL_MULTISAMPLE_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetBooleanv");
-+ params[0] = ctx->Multisample.Enabled;
-+ break;
-+ case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetBooleanv");
-+ params[0] = ctx->Multisample.SampleAlphaToCoverage;
-+ break;
-+ case GL_SAMPLE_ALPHA_TO_ONE_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetBooleanv");
-+ params[0] = ctx->Multisample.SampleAlphaToOne;
-+ break;
-+ case GL_SAMPLE_COVERAGE_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetBooleanv");
-+ params[0] = ctx->Multisample.SampleCoverage;
-+ break;
-+ case GL_SAMPLE_COVERAGE_VALUE_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetBooleanv");
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Multisample.SampleCoverageValue);
-+ break;
-+ case GL_SAMPLE_COVERAGE_INVERT_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetBooleanv");
-+ params[0] = ctx->Multisample.SampleCoverageInvert;
-+ break;
-+ case GL_SAMPLE_BUFFERS_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.sampleBuffers);
-+ break;
-+ case GL_SAMPLES_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.samples);
-+ break;
-+ case GL_RASTER_POSITION_UNCLIPPED_IBM:
-+ CHECK_EXT1(IBM_rasterpos_clip, "GetBooleanv");
-+ params[0] = ctx->Transform.RasterPositionUnclipped;
-+ break;
-+ case GL_POINT_SPRITE_NV:
-+ CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetBooleanv");
-+ params[0] = ctx->Point.PointSprite;
-+ break;
-+ case GL_POINT_SPRITE_R_MODE_NV:
-+ CHECK_EXT1(NV_point_sprite, "GetBooleanv");
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Point.SpriteRMode);
-+ break;
-+ case GL_POINT_SPRITE_COORD_ORIGIN:
-+ CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetBooleanv");
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Point.SpriteOrigin);
-+ break;
-+ case GL_GENERATE_MIPMAP_HINT_SGIS:
-+ CHECK_EXT1(SGIS_generate_mipmap, "GetBooleanv");
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Hint.GenerateMipmap);
-+ break;
-+ case GL_VERTEX_PROGRAM_BINDING_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0));
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY0_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Array.ArrayObj->VertexAttrib[0].Enabled;
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY1_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Array.ArrayObj->VertexAttrib[1].Enabled;
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY2_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Array.ArrayObj->VertexAttrib[2].Enabled;
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY3_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Array.ArrayObj->VertexAttrib[3].Enabled;
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Array.ArrayObj->VertexAttrib[4].Enabled;
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY5_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Array.ArrayObj->VertexAttrib[5].Enabled;
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY6_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Array.ArrayObj->VertexAttrib[6].Enabled;
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY7_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Array.ArrayObj->VertexAttrib[7].Enabled;
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY8_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Array.ArrayObj->VertexAttrib[8].Enabled;
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY9_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Array.ArrayObj->VertexAttrib[9].Enabled;
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY10_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Array.ArrayObj->VertexAttrib[10].Enabled;
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY11_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Array.ArrayObj->VertexAttrib[11].Enabled;
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY12_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Array.ArrayObj->VertexAttrib[12].Enabled;
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY13_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Array.ArrayObj->VertexAttrib[13].Enabled;
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY14_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Array.ArrayObj->VertexAttrib[14].Enabled;
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY15_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Array.ArrayObj->VertexAttrib[15].Enabled;
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB0_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Eval.Map1Attrib[0];
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB1_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Eval.Map1Attrib[1];
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB2_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Eval.Map1Attrib[2];
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB3_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Eval.Map1Attrib[3];
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB4_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Eval.Map1Attrib[4];
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB5_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Eval.Map1Attrib[5];
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB6_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Eval.Map1Attrib[6];
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB7_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Eval.Map1Attrib[7];
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB8_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Eval.Map1Attrib[8];
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB9_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Eval.Map1Attrib[9];
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB10_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Eval.Map1Attrib[10];
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB11_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Eval.Map1Attrib[11];
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB12_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Eval.Map1Attrib[12];
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB13_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Eval.Map1Attrib[13];
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB14_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Eval.Map1Attrib[14];
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB15_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->Eval.Map1Attrib[15];
-+ break;
-+ case GL_FRAGMENT_PROGRAM_NV:
-+ CHECK_EXT1(NV_fragment_program, "GetBooleanv");
-+ params[0] = ctx->FragmentProgram.Enabled;
-+ break;
-+ case GL_FRAGMENT_PROGRAM_BINDING_NV:
-+ CHECK_EXT1(NV_fragment_program, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0);
-+ break;
-+ case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
-+ CHECK_EXT1(NV_fragment_program, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(MAX_NV_FRAGMENT_PROGRAM_PARAMS);
-+ break;
-+ case GL_TEXTURE_RECTANGLE_NV:
-+ CHECK_EXT1(NV_texture_rectangle, "GetBooleanv");
-+ params[0] = _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV);
-+ break;
-+ case GL_TEXTURE_BINDING_RECTANGLE_NV:
-+ CHECK_EXT1(NV_texture_rectangle, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentRect->Name);
-+ break;
-+ case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
-+ CHECK_EXT1(NV_texture_rectangle, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureRectSize);
-+ break;
-+ case GL_STENCIL_TEST_TWO_SIDE_EXT:
-+ CHECK_EXT1(EXT_stencil_two_side, "GetBooleanv");
-+ params[0] = ctx->Stencil.TestTwoSide;
-+ break;
-+ case GL_ACTIVE_STENCIL_FACE_EXT:
-+ CHECK_EXT1(EXT_stencil_two_side, "GetBooleanv");
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
-+ break;
-+ case GL_MAX_SHININESS_NV:
-+ CHECK_EXT1(NV_light_max_exponent, "GetBooleanv");
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxShininess);
-+ break;
-+ case GL_MAX_SPOT_EXPONENT_NV:
-+ CHECK_EXT1(NV_light_max_exponent, "GetBooleanv");
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxSpotExponent);
-+ break;
-+ case GL_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayBufferObj->Name);
-+ break;
-+ case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.BufferObj->Name);
-+ break;
-+ case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.BufferObj->Name);
-+ break;
-+ case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.BufferObj->Name);
-+ break;
-+ case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Index.BufferObj->Name);
-+ break;
-+ case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name);
-+ break;
-+ case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name);
-+ break;
-+ case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name);
-+ break;
-+ case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.BufferObj->Name);
-+ break;
-+ case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Array.ElementArrayBufferObj->Name);
-+ break;
-+ case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
-+ CHECK_EXT1(EXT_pixel_buffer_object, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Pack.BufferObj->Name);
-+ break;
-+ case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
-+ CHECK_EXT1(EXT_pixel_buffer_object, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Unpack.BufferObj->Name);
-+ break;
-+ case GL_VERTEX_PROGRAM_ARB:
-+ CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->VertexProgram.Enabled;
-+ break;
-+ case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
-+ CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->VertexProgram.PointSizeEnabled;
-+ break;
-+ case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
-+ CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->VertexProgram.TwoSideEnabled;
-+ break;
-+ case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
-+ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxProgramMatrixStackDepth);
-+ break;
-+ case GL_MAX_PROGRAM_MATRICES_ARB:
-+ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxProgramMatrices);
-+ break;
-+ case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
-+ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv");
-+ params[0] = ctx->CurrentStack->Depth + 1;
-+ break;
-+ case GL_CURRENT_MATRIX_ARB:
-+ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetBooleanv");
-+ {
-+ const GLfloat *matrix = ctx->CurrentStack->Top->m;
-+ params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
-+ params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
-+ params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
-+ params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
-+ params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
-+ params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
-+ params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
-+ params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
-+ params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
-+ params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
-+ params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
-+ params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
-+ params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
-+ params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
-+ params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
-+ params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
-+ }
-+ break;
-+ case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
-+ CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetBooleanv");
-+ {
-+ const GLfloat *matrix = ctx->CurrentStack->Top->m;
-+ params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
-+ params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
-+ params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
-+ params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
-+ params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
-+ params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
-+ params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
-+ params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
-+ params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
-+ params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
-+ params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
-+ params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
-+ params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
-+ params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
-+ params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
-+ params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
-+ }
-+ break;
-+ case GL_MAX_VERTEX_ATTRIBS_ARB:
-+ CHECK_EXT1(ARB_vertex_program, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Const.VertexProgram.MaxAttribs);
-+ break;
-+ case GL_PROGRAM_ERROR_POSITION_ARB:
-+ CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Program.ErrorPos);
-+ break;
-+ case GL_FRAGMENT_PROGRAM_ARB:
-+ CHECK_EXT1(ARB_fragment_program, "GetBooleanv");
-+ params[0] = ctx->FragmentProgram.Enabled;
-+ break;
-+ case GL_MAX_TEXTURE_COORDS_ARB:
-+ CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureCoordUnits);
-+ break;
-+ case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
-+ CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureImageUnits);
-+ break;
-+ case GL_DEPTH_BOUNDS_TEST_EXT:
-+ CHECK_EXT1(EXT_depth_bounds_test, "GetBooleanv");
-+ params[0] = ctx->Depth.BoundsTest;
-+ break;
-+ case GL_DEPTH_BOUNDS_EXT:
-+ CHECK_EXT1(EXT_depth_bounds_test, "GetBooleanv");
-+ params[0] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMin);
-+ params[1] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMax);
-+ break;
-+ case GL_FRAGMENT_PROGRAM_CALLBACK_MESA:
-+ CHECK_EXT1(MESA_program_debug, "GetBooleanv");
-+ params[0] = ctx->FragmentProgram.CallbackEnabled;
-+ break;
-+ case GL_VERTEX_PROGRAM_CALLBACK_MESA:
-+ CHECK_EXT1(MESA_program_debug, "GetBooleanv");
-+ params[0] = ctx->VertexProgram.CallbackEnabled;
-+ break;
-+ case GL_FRAGMENT_PROGRAM_POSITION_MESA:
-+ CHECK_EXT1(MESA_program_debug, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->FragmentProgram.CurrentPosition);
-+ break;
-+ case GL_VERTEX_PROGRAM_POSITION_MESA:
-+ CHECK_EXT1(MESA_program_debug, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->VertexProgram.CurrentPosition);
-+ break;
-+ case GL_MAX_DRAW_BUFFERS_ARB:
-+ CHECK_EXT1(ARB_draw_buffers, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxDrawBuffers);
-+ break;
-+ case GL_DRAW_BUFFER0_ARB:
-+ CHECK_EXT1(ARB_draw_buffers, "GetBooleanv");
-+ params[0] = ENUM_TO_BOOLEAN(ctx->DrawBuffer->ColorDrawBuffer[0]);
-+ break;
-+ case GL_DRAW_BUFFER1_ARB:
-+ CHECK_EXT1(ARB_draw_buffers, "GetBooleanv");
-+ {
-+ GLenum buffer;
-+ if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-+ _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-+ return;
-+ }
-+ buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
-+ params[0] = ENUM_TO_BOOLEAN(buffer);
-+ }
-+ break;
-+ case GL_DRAW_BUFFER2_ARB:
-+ CHECK_EXT1(ARB_draw_buffers, "GetBooleanv");
-+ {
-+ GLenum buffer;
-+ if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-+ _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-+ return;
-+ }
-+ buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
-+ params[0] = ENUM_TO_BOOLEAN(buffer);
-+ }
-+ break;
-+ case GL_DRAW_BUFFER3_ARB:
-+ CHECK_EXT1(ARB_draw_buffers, "GetBooleanv");
-+ {
-+ GLenum buffer;
-+ if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-+ _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-+ return;
-+ }
-+ buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
-+ params[0] = ENUM_TO_BOOLEAN(buffer);
-+ }
-+ break;
-+ case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
-+ CHECK_EXT1(OES_read_format, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Const.ColorReadType);
-+ break;
-+ case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
-+ CHECK_EXT1(OES_read_format, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Const.ColorReadFormat);
-+ break;
-+ case GL_NUM_FRAGMENT_REGISTERS_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(6);
-+ break;
-+ case GL_NUM_FRAGMENT_CONSTANTS_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(8);
-+ break;
-+ case GL_NUM_PASSES_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(2);
-+ break;
-+ case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(8);
-+ break;
-+ case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(16);
-+ break;
-+ case GL_COLOR_ALPHA_PAIRING_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
-+ params[0] = GL_TRUE;
-+ break;
-+ case GL_NUM_LOOPBACK_COMPONENTS_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(3);
-+ break;
-+ case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(3);
-+ break;
-+ case GL_STENCIL_BACK_FUNC:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.Function[1]);
-+ break;
-+ case GL_STENCIL_BACK_VALUE_MASK:
-+ params[0] = INT_TO_BOOLEAN(ctx->Stencil.ValueMask[1]);
-+ break;
-+ case GL_STENCIL_BACK_REF:
-+ params[0] = INT_TO_BOOLEAN(ctx->Stencil.Ref[1]);
-+ break;
-+ case GL_STENCIL_BACK_FAIL:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.FailFunc[1]);
-+ break;
-+ case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZFailFunc[1]);
-+ break;
-+ case GL_STENCIL_BACK_PASS_DEPTH_PASS:
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZPassFunc[1]);
-+ break;
-+ case GL_FRAMEBUFFER_BINDING_EXT:
-+ CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Name);
-+ break;
-+ case GL_RENDERBUFFER_BINDING_EXT:
-+ CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0);
-+ break;
-+ case GL_MAX_COLOR_ATTACHMENTS_EXT:
-+ CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxColorAttachments);
-+ break;
-+ case GL_MAX_RENDERBUFFER_SIZE_EXT:
-+ CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxRenderbufferSize);
-+ break;
-+ case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
-+ CHECK_EXT1(ARB_fragment_shader, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(MAX_FRAGMENT_UNIFORM_COMPONENTS);
-+ break;
-+ case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
-+ CHECK_EXT1(ARB_fragment_shader, "GetBooleanv");
-+ params[0] = ENUM_TO_BOOLEAN(ctx->Hint.FragmentShaderDerivative);
-+ break;
-+ case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
-+ CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(MAX_VERTEX_UNIFORM_COMPONENTS);
-+ break;
-+ case GL_MAX_VARYING_FLOATS_ARB:
-+ CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(MAX_VARYING_FLOATS);
-+ break;
-+ case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
-+ CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(MAX_VERTEX_TEXTURE_IMAGE_UNITS);
-+ break;
-+ case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
-+ CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
-+ params[0] = INT_TO_BOOLEAN(MAX_COMBINED_TEXTURE_IMAGE_UNITS);
-+ break;
-+ default:
-+ _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv(pname=0x%x)", pname);
-+ }
-+}
-+
-+void GLAPIENTRY
-+_mesa_GetFloatv( GLenum pname, GLfloat *params )
-+{
-+ GET_CURRENT_CONTEXT(ctx);
-+ ASSERT_OUTSIDE_BEGIN_END(ctx);
-+
-+ if (!params)
-+ return;
-+
-+ if (ctx->NewState)
-+ _mesa_update_state(ctx);
-+
-+ if (ctx->Driver.GetFloatv &&
-+ ctx->Driver.GetFloatv(ctx, pname, params))
-+ return;
-+
-+ switch (pname) {
-+ case GL_ACCUM_RED_BITS:
-+ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumRedBits);
-+ break;
-+ case GL_ACCUM_GREEN_BITS:
-+ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumGreenBits);
-+ break;
-+ case GL_ACCUM_BLUE_BITS:
-+ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumBlueBits);
-+ break;
-+ case GL_ACCUM_ALPHA_BITS:
-+ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumAlphaBits);
-+ break;
-+ case GL_ACCUM_CLEAR_VALUE:
-+ params[0] = ctx->Accum.ClearColor[0];
-+ params[1] = ctx->Accum.ClearColor[1];
-+ params[2] = ctx->Accum.ClearColor[2];
-+ params[3] = ctx->Accum.ClearColor[3];
-+ break;
-+ case GL_ALPHA_BIAS:
-+ params[0] = ctx->Pixel.AlphaBias;
-+ break;
-+ case GL_ALPHA_BITS:
-+ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.alphaBits);
-+ break;
-+ case GL_ALPHA_SCALE:
-+ params[0] = ctx->Pixel.AlphaScale;
-+ break;
-+ case GL_ALPHA_TEST:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Color.AlphaEnabled);
-+ break;
-+ case GL_ALPHA_TEST_FUNC:
-+ params[0] = ENUM_TO_FLOAT(ctx->Color.AlphaFunc);
-+ break;
-+ case GL_ALPHA_TEST_REF:
-+ params[0] = ctx->Color.AlphaRef;
-+ break;
-+ case GL_ATTRIB_STACK_DEPTH:
-+ params[0] = (GLfloat)(ctx->AttribStackDepth);
-+ break;
-+ case GL_AUTO_NORMAL:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.AutoNormal);
-+ break;
-+ case GL_AUX_BUFFERS:
-+ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.numAuxBuffers);
-+ break;
-+ case GL_BLEND:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Color.BlendEnabled);
-+ break;
-+ case GL_BLEND_DST:
-+ params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB);
-+ break;
-+ case GL_BLEND_SRC:
-+ params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB);
-+ break;
-+ case GL_BLEND_SRC_RGB_EXT:
-+ params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB);
-+ break;
-+ case GL_BLEND_DST_RGB_EXT:
-+ params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB);
-+ break;
-+ case GL_BLEND_SRC_ALPHA_EXT:
-+ params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcA);
-+ break;
-+ case GL_BLEND_DST_ALPHA_EXT:
-+ params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstA);
-+ break;
-+ case GL_BLEND_EQUATION:
-+ params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationRGB );
-+ break;
-+ case GL_BLEND_EQUATION_ALPHA_EXT:
-+ params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationA );
-+ break;
-+ case GL_BLEND_COLOR_EXT:
-+ params[0] = ctx->Color.BlendColor[0];
-+ params[1] = ctx->Color.BlendColor[1];
-+ params[2] = ctx->Color.BlendColor[2];
-+ params[3] = ctx->Color.BlendColor[3];
-+ break;
-+ case GL_BLUE_BIAS:
-+ params[0] = ctx->Pixel.BlueBias;
-+ break;
-+ case GL_BLUE_BITS:
-+ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.blueBits);
-+ break;
-+ case GL_BLUE_SCALE:
-+ params[0] = ctx->Pixel.BlueScale;
-+ break;
-+ case GL_CLIENT_ATTRIB_STACK_DEPTH:
-+ params[0] = (GLfloat)(ctx->ClientAttribStackDepth);
-+ break;
-+ case GL_CLIP_PLANE0:
-+ params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
-+ break;
-+ case GL_CLIP_PLANE1:
-+ params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
-+ break;
-+ case GL_CLIP_PLANE2:
-+ params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
-+ break;
-+ case GL_CLIP_PLANE3:
-+ params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
-+ break;
-+ case GL_CLIP_PLANE4:
-+ params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
-+ break;
-+ case GL_CLIP_PLANE5:
-+ params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
-+ break;
-+ case GL_COLOR_CLEAR_VALUE:
-+ params[0] = ctx->Color.ClearColor[0];
-+ params[1] = ctx->Color.ClearColor[1];
-+ params[2] = ctx->Color.ClearColor[2];
-+ params[3] = ctx->Color.ClearColor[3];
-+ break;
-+ case GL_COLOR_MATERIAL:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.ColorMaterialEnabled);
-+ break;
-+ case GL_COLOR_MATERIAL_FACE:
-+ params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialFace);
-+ break;
-+ case GL_COLOR_MATERIAL_PARAMETER:
-+ params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialMode);
-+ break;
-+ case GL_COLOR_WRITEMASK:
-+ params[0] = (GLfloat)(ctx->Color.ColorMask[RCOMP] ? 1 : 0);
-+ params[1] = (GLfloat)(ctx->Color.ColorMask[GCOMP] ? 1 : 0);
-+ params[2] = (GLfloat)(ctx->Color.ColorMask[BCOMP] ? 1 : 0);
-+ params[3] = (GLfloat)(ctx->Color.ColorMask[ACOMP] ? 1 : 0);
-+ break;
-+ case GL_CULL_FACE:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.CullFlag);
-+ break;
-+ case GL_CULL_FACE_MODE:
-+ params[0] = ENUM_TO_FLOAT(ctx->Polygon.CullFaceMode);
-+ break;
-+ case GL_CURRENT_COLOR:
-+ {
-+ FLUSH_CURRENT(ctx, 0);
-+ params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0];
-+ params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1];
-+ params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2];
-+ params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3];
-+ }
-+ break;
-+ case GL_CURRENT_INDEX:
-+ {
-+ FLUSH_CURRENT(ctx, 0);
-+ params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0];
-+ }
-+ break;
-+ case GL_CURRENT_NORMAL:
-+ {
-+ FLUSH_CURRENT(ctx, 0);
-+ params[0] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0];
-+ params[1] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1];
-+ params[2] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2];
-+ }
-+ break;
-+ case GL_CURRENT_RASTER_COLOR:
-+ params[0] = ctx->Current.RasterColor[0];
-+ params[1] = ctx->Current.RasterColor[1];
-+ params[2] = ctx->Current.RasterColor[2];
-+ params[3] = ctx->Current.RasterColor[3];
-+ break;
-+ case GL_CURRENT_RASTER_DISTANCE:
-+ params[0] = ctx->Current.RasterDistance;
-+ break;
-+ case GL_CURRENT_RASTER_INDEX:
-+ params[0] = ctx->Current.RasterIndex;
-+ break;
-+ case GL_CURRENT_RASTER_POSITION:
-+ params[0] = ctx->Current.RasterPos[0];
-+ params[1] = ctx->Current.RasterPos[1];
-+ params[2] = ctx->Current.RasterPos[2];
-+ params[3] = ctx->Current.RasterPos[3];
-+ break;
-+ case GL_CURRENT_RASTER_SECONDARY_COLOR:
-+ params[0] = ctx->Current.RasterSecondaryColor[0];
-+ params[1] = ctx->Current.RasterSecondaryColor[1];
-+ params[2] = ctx->Current.RasterSecondaryColor[2];
-+ params[3] = ctx->Current.RasterSecondaryColor[3];
-+ break;
-+ case GL_CURRENT_RASTER_TEXTURE_COORDS:
-+ {
-+ const GLuint texUnit = ctx->Texture.CurrentUnit;
-+ params[0] = ctx->Current.RasterTexCoords[texUnit][0];
-+ params[1] = ctx->Current.RasterTexCoords[texUnit][1];
-+ params[2] = ctx->Current.RasterTexCoords[texUnit][2];
-+ params[3] = ctx->Current.RasterTexCoords[texUnit][3];
-+ }
-+ break;
-+ case GL_CURRENT_RASTER_POSITION_VALID:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Current.RasterPosValid);
-+ break;
-+ case GL_CURRENT_TEXTURE_COORDS:
-+ {
-+ const GLuint texUnit = ctx->Texture.CurrentUnit;
-+ params[0] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0];
-+ params[1] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1];
-+ params[2] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2];
-+ params[3] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3];
-+ }
-+ break;
-+ case GL_DEPTH_BIAS:
-+ params[0] = ctx->Pixel.DepthBias;
-+ break;
-+ case GL_DEPTH_BITS:
-+ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.depthBits);
-+ break;
-+ case GL_DEPTH_CLEAR_VALUE:
-+ params[0] = ctx->Depth.Clear;
-+ break;
-+ case GL_DEPTH_FUNC:
-+ params[0] = ENUM_TO_FLOAT(ctx->Depth.Func);
-+ break;
-+ case GL_DEPTH_RANGE:
-+ params[0] = ctx->Viewport.Near;
-+ params[1] = ctx->Viewport.Far;
-+ break;
-+ case GL_DEPTH_SCALE:
-+ params[0] = ctx->Pixel.DepthScale;
-+ break;
-+ case GL_DEPTH_TEST:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Test);
-+ break;
-+ case GL_DEPTH_WRITEMASK:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Mask);
-+ break;
-+ case GL_DITHER:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Color.DitherFlag);
-+ break;
-+ case GL_DOUBLEBUFFER:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.doubleBufferMode);
-+ break;
-+ case GL_DRAW_BUFFER:
-+ params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]);
-+ break;
-+ case GL_EDGE_FLAG:
-+ {
-+ FLUSH_CURRENT(ctx, 0);
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Current.EdgeFlag);
-+ }
-+ break;
-+ case GL_FEEDBACK_BUFFER_SIZE:
-+ params[0] = (GLfloat)(ctx->Feedback.BufferSize);
-+ break;
-+ case GL_FEEDBACK_BUFFER_TYPE:
-+ params[0] = ENUM_TO_FLOAT(ctx->Feedback.Type);
-+ break;
-+ case GL_FOG:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.Enabled);
-+ break;
-+ case GL_FOG_COLOR:
-+ params[0] = ctx->Fog.Color[0];
-+ params[1] = ctx->Fog.Color[1];
-+ params[2] = ctx->Fog.Color[2];
-+ params[3] = ctx->Fog.Color[3];
-+ break;
-+ case GL_FOG_DENSITY:
-+ params[0] = ctx->Fog.Density;
-+ break;
-+ case GL_FOG_END:
-+ params[0] = ctx->Fog.End;
-+ break;
-+ case GL_FOG_HINT:
-+ params[0] = ENUM_TO_FLOAT(ctx->Hint.Fog);
-+ break;
-+ case GL_FOG_INDEX:
-+ params[0] = ctx->Fog.Index;
-+ break;
-+ case GL_FOG_MODE:
-+ params[0] = ENUM_TO_FLOAT(ctx->Fog.Mode);
-+ break;
-+ case GL_FOG_START:
-+ params[0] = ctx->Fog.Start;
-+ break;
-+ case GL_FRONT_FACE:
-+ params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontFace);
-+ break;
-+ case GL_GREEN_BIAS:
-+ params[0] = ctx->Pixel.GreenBias;
-+ break;
-+ case GL_GREEN_BITS:
-+ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.greenBits);
-+ break;
-+ case GL_GREEN_SCALE:
-+ params[0] = ctx->Pixel.GreenScale;
-+ break;
-+ case GL_INDEX_BITS:
-+ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.indexBits);
-+ break;
-+ case GL_INDEX_CLEAR_VALUE:
-+ params[0] = (GLfloat)(ctx->Color.ClearIndex);
-+ break;
-+ case GL_INDEX_MODE:
-+ params[0] = BOOLEAN_TO_FLOAT(!ctx->DrawBuffer->Visual.rgbMode);
-+ break;
-+ case GL_INDEX_OFFSET:
-+ params[0] = (GLfloat)(ctx->Pixel.IndexOffset);
-+ break;
-+ case GL_INDEX_SHIFT:
-+ params[0] = (GLfloat)(ctx->Pixel.IndexShift);
-+ break;
-+ case GL_INDEX_WRITEMASK:
-+ params[0] = (GLfloat)(ctx->Color.IndexMask);
-+ break;
-+ case GL_LIGHT0:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[0].Enabled);
-+ break;
-+ case GL_LIGHT1:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[1].Enabled);
-+ break;
-+ case GL_LIGHT2:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[2].Enabled);
-+ break;
-+ case GL_LIGHT3:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[3].Enabled);
-+ break;
-+ case GL_LIGHT4:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[4].Enabled);
-+ break;
-+ case GL_LIGHT5:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[5].Enabled);
-+ break;
-+ case GL_LIGHT6:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[6].Enabled);
-+ break;
-+ case GL_LIGHT7:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[7].Enabled);
-+ break;
-+ case GL_LIGHTING:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Enabled);
-+ break;
-+ case GL_LIGHT_MODEL_AMBIENT:
-+ params[0] = ctx->Light.Model.Ambient[0];
-+ params[1] = ctx->Light.Model.Ambient[1];
-+ params[2] = ctx->Light.Model.Ambient[2];
-+ params[3] = ctx->Light.Model.Ambient[3];
-+ break;
-+ case GL_LIGHT_MODEL_COLOR_CONTROL:
-+ params[0] = ENUM_TO_FLOAT(ctx->Light.Model.ColorControl);
-+ break;
-+ case GL_LIGHT_MODEL_LOCAL_VIEWER:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.LocalViewer);
-+ break;
-+ case GL_LIGHT_MODEL_TWO_SIDE:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.TwoSide);
-+ break;
-+ case GL_LINE_SMOOTH:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Line.SmoothFlag);
-+ break;
-+ case GL_LINE_SMOOTH_HINT:
-+ params[0] = ENUM_TO_FLOAT(ctx->Hint.LineSmooth);
-+ break;
-+ case GL_LINE_STIPPLE:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Line.StippleFlag);
-+ break;
-+ case GL_LINE_STIPPLE_PATTERN:
-+ params[0] = (GLfloat)(ctx->Line.StipplePattern);
-+ break;
-+ case GL_LINE_STIPPLE_REPEAT:
-+ params[0] = (GLfloat)(ctx->Line.StippleFactor);
-+ break;
-+ case GL_LINE_WIDTH:
-+ params[0] = ctx->Line.Width;
-+ break;
-+ case GL_LINE_WIDTH_GRANULARITY:
-+ params[0] = ctx->Const.LineWidthGranularity;
-+ break;
-+ case GL_LINE_WIDTH_RANGE:
-+ params[0] = ctx->Const.MinLineWidthAA;
-+ params[1] = ctx->Const.MaxLineWidthAA;
-+ break;
-+ case GL_ALIASED_LINE_WIDTH_RANGE:
-+ params[0] = ctx->Const.MinLineWidth;
-+ params[1] = ctx->Const.MaxLineWidth;
-+ break;
-+ case GL_LIST_BASE:
-+ params[0] = (GLfloat)(ctx->List.ListBase);
-+ break;
-+ case GL_LIST_INDEX:
-+ params[0] = (GLfloat)(ctx->ListState.CurrentListNum);
-+ break;
-+ case GL_LIST_MODE:
-+ {
-+ GLenum mode;
-+ if (!ctx->CompileFlag)
-+ mode = 0;
-+ else if (ctx->ExecuteFlag)
-+ mode = GL_COMPILE_AND_EXECUTE;
-+ else
-+ mode = GL_COMPILE;
-+ params[0] = ENUM_TO_FLOAT(mode);
-+ }
-+ break;
-+ case GL_INDEX_LOGIC_OP:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Color.IndexLogicOpEnabled);
-+ break;
-+ case GL_COLOR_LOGIC_OP:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Color.ColorLogicOpEnabled);
-+ break;
-+ case GL_LOGIC_OP_MODE:
-+ params[0] = ENUM_TO_FLOAT(ctx->Color.LogicOp);
-+ break;
-+ case GL_MAP1_COLOR_4:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Color4);
-+ break;
-+ case GL_MAP1_GRID_DOMAIN:
-+ params[0] = ctx->Eval.MapGrid1u1;
-+ params[1] = ctx->Eval.MapGrid1u2;
-+ break;
-+ case GL_MAP1_GRID_SEGMENTS:
-+ params[0] = (GLfloat)(ctx->Eval.MapGrid1un);
-+ break;
-+ case GL_MAP1_INDEX:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Index);
-+ break;
-+ case GL_MAP1_NORMAL:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Normal);
-+ break;
-+ case GL_MAP1_TEXTURE_COORD_1:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord1);
-+ break;
-+ case GL_MAP1_TEXTURE_COORD_2:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord2);
-+ break;
-+ case GL_MAP1_TEXTURE_COORD_3:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord3);
-+ break;
-+ case GL_MAP1_TEXTURE_COORD_4:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord4);
-+ break;
-+ case GL_MAP1_VERTEX_3:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex3);
-+ break;
-+ case GL_MAP1_VERTEX_4:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex4);
-+ break;
-+ case GL_MAP2_COLOR_4:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Color4);
-+ break;
-+ case GL_MAP2_GRID_DOMAIN:
-+ params[0] = ctx->Eval.MapGrid2u1;
-+ params[1] = ctx->Eval.MapGrid2u2;
-+ params[2] = ctx->Eval.MapGrid2v1;
-+ params[3] = ctx->Eval.MapGrid2v2;
-+ break;
-+ case GL_MAP2_GRID_SEGMENTS:
-+ params[0] = (GLfloat)(ctx->Eval.MapGrid2un);
-+ params[1] = (GLfloat)(ctx->Eval.MapGrid2vn);
-+ break;
-+ case GL_MAP2_INDEX:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Index);
-+ break;
-+ case GL_MAP2_NORMAL:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Normal);
-+ break;
-+ case GL_MAP2_TEXTURE_COORD_1:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord1);
-+ break;
-+ case GL_MAP2_TEXTURE_COORD_2:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord2);
-+ break;
-+ case GL_MAP2_TEXTURE_COORD_3:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord3);
-+ break;
-+ case GL_MAP2_TEXTURE_COORD_4:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord4);
-+ break;
-+ case GL_MAP2_VERTEX_3:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex3);
-+ break;
-+ case GL_MAP2_VERTEX_4:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex4);
-+ break;
-+ case GL_MAP_COLOR:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapColorFlag);
-+ break;
-+ case GL_MAP_STENCIL:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapStencilFlag);
-+ break;
-+ case GL_MATRIX_MODE:
-+ params[0] = ENUM_TO_FLOAT(ctx->Transform.MatrixMode);
-+ break;
-+ case GL_MAX_ATTRIB_STACK_DEPTH:
-+ params[0] = (GLfloat)(MAX_ATTRIB_STACK_DEPTH);
-+ break;
-+ case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
-+ params[0] = (GLfloat)(MAX_CLIENT_ATTRIB_STACK_DEPTH);
-+ break;
-+ case GL_MAX_CLIP_PLANES:
-+ params[0] = (GLfloat)(ctx->Const.MaxClipPlanes);
-+ break;
-+ case GL_MAX_ELEMENTS_VERTICES:
-+ params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize);
-+ break;
-+ case GL_MAX_ELEMENTS_INDICES:
-+ params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize);
-+ break;
-+ case GL_MAX_EVAL_ORDER:
-+ params[0] = (GLfloat)(MAX_EVAL_ORDER);
-+ break;
-+ case GL_MAX_LIGHTS:
-+ params[0] = (GLfloat)(ctx->Const.MaxLights);
-+ break;
-+ case GL_MAX_LIST_NESTING:
-+ params[0] = (GLfloat)(MAX_LIST_NESTING);
-+ break;
-+ case GL_MAX_MODELVIEW_STACK_DEPTH:
-+ params[0] = (GLfloat)(MAX_MODELVIEW_STACK_DEPTH);
-+ break;
-+ case GL_MAX_NAME_STACK_DEPTH:
-+ params[0] = (GLfloat)(MAX_NAME_STACK_DEPTH);
-+ break;
-+ case GL_MAX_PIXEL_MAP_TABLE:
-+ params[0] = (GLfloat)(MAX_PIXEL_MAP_TABLE);
-+ break;
-+ case GL_MAX_PROJECTION_STACK_DEPTH:
-+ params[0] = (GLfloat)(MAX_PROJECTION_STACK_DEPTH);
-+ break;
-+ case GL_MAX_TEXTURE_SIZE:
-+ params[0] = (GLfloat)(1 << (ctx->Const.MaxTextureLevels - 1));
-+ break;
-+ case GL_MAX_3D_TEXTURE_SIZE:
-+ params[0] = (GLfloat)(1 << (ctx->Const.Max3DTextureLevels - 1));
-+ break;
-+ case GL_MAX_TEXTURE_STACK_DEPTH:
-+ params[0] = (GLfloat)(MAX_TEXTURE_STACK_DEPTH);
-+ break;
-+ case GL_MAX_VIEWPORT_DIMS:
-+ params[0] = (GLfloat)(ctx->Const.MaxViewportWidth);
-+ params[1] = (GLfloat)(ctx->Const.MaxViewportHeight);
-+ break;
-+ case GL_MODELVIEW_MATRIX:
-+ {
-+ const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
-+ params[0] = matrix[0];
-+ params[1] = matrix[1];
-+ params[2] = matrix[2];
-+ params[3] = matrix[3];
-+ params[4] = matrix[4];
-+ params[5] = matrix[5];
-+ params[6] = matrix[6];
-+ params[7] = matrix[7];
-+ params[8] = matrix[8];
-+ params[9] = matrix[9];
-+ params[10] = matrix[10];
-+ params[11] = matrix[11];
-+ params[12] = matrix[12];
-+ params[13] = matrix[13];
-+ params[14] = matrix[14];
-+ params[15] = matrix[15];
-+ }
-+ break;
-+ case GL_MODELVIEW_STACK_DEPTH:
-+ params[0] = (GLfloat)(ctx->ModelviewMatrixStack.Depth + 1);
-+ break;
-+ case GL_NAME_STACK_DEPTH:
-+ params[0] = (GLfloat)(ctx->Select.NameStackDepth);
-+ break;
-+ case GL_NORMALIZE:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.Normalize);
-+ break;
-+ case GL_PACK_ALIGNMENT:
-+ params[0] = (GLfloat)(ctx->Pack.Alignment);
-+ break;
-+ case GL_PACK_LSB_FIRST:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.LsbFirst);
-+ break;
-+ case GL_PACK_ROW_LENGTH:
-+ params[0] = (GLfloat)(ctx->Pack.RowLength);
-+ break;
-+ case GL_PACK_SKIP_PIXELS:
-+ params[0] = (GLfloat)(ctx->Pack.SkipPixels);
-+ break;
-+ case GL_PACK_SKIP_ROWS:
-+ params[0] = (GLfloat)(ctx->Pack.SkipRows);
-+ break;
-+ case GL_PACK_SWAP_BYTES:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.SwapBytes);
-+ break;
-+ case GL_PACK_SKIP_IMAGES_EXT:
-+ params[0] = (GLfloat)(ctx->Pack.SkipImages);
-+ break;
-+ case GL_PACK_IMAGE_HEIGHT_EXT:
-+ params[0] = (GLfloat)(ctx->Pack.ImageHeight);
-+ break;
-+ case GL_PACK_INVERT_MESA:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.Invert);
-+ break;
-+ case GL_PERSPECTIVE_CORRECTION_HINT:
-+ params[0] = ENUM_TO_FLOAT(ctx->Hint.PerspectiveCorrection);
-+ break;
-+ case GL_PIXEL_MAP_A_TO_A_SIZE:
-+ params[0] = (GLfloat)(ctx->Pixel.MapAtoAsize);
-+ break;
-+ case GL_PIXEL_MAP_B_TO_B_SIZE:
-+ params[0] = (GLfloat)(ctx->Pixel.MapBtoBsize);
-+ break;
-+ case GL_PIXEL_MAP_G_TO_G_SIZE:
-+ params[0] = (GLfloat)(ctx->Pixel.MapGtoGsize);
-+ break;
-+ case GL_PIXEL_MAP_I_TO_A_SIZE:
-+ params[0] = (GLfloat)(ctx->Pixel.MapItoAsize);
-+ break;
-+ case GL_PIXEL_MAP_I_TO_B_SIZE:
-+ params[0] = (GLfloat)(ctx->Pixel.MapItoBsize);
-+ break;
-+ case GL_PIXEL_MAP_I_TO_G_SIZE:
-+ params[0] = (GLfloat)(ctx->Pixel.MapItoGsize);
-+ break;
-+ case GL_PIXEL_MAP_I_TO_I_SIZE:
-+ params[0] = (GLfloat)(ctx->Pixel.MapItoIsize);
-+ break;
-+ case GL_PIXEL_MAP_I_TO_R_SIZE:
-+ params[0] = (GLfloat)(ctx->Pixel.MapItoRsize);
-+ break;
-+ case GL_PIXEL_MAP_R_TO_R_SIZE:
-+ params[0] = (GLfloat)(ctx->Pixel.MapRtoRsize);
-+ break;
-+ case GL_PIXEL_MAP_S_TO_S_SIZE:
-+ params[0] = (GLfloat)(ctx->Pixel.MapStoSsize);
-+ break;
-+ case GL_POINT_SIZE:
-+ params[0] = ctx->Point.Size;
-+ break;
-+ case GL_POINT_SIZE_GRANULARITY:
-+ params[0] = ctx->Const.PointSizeGranularity;
-+ break;
-+ case GL_POINT_SIZE_RANGE:
-+ params[0] = ctx->Const.MinPointSizeAA;
-+ params[1] = ctx->Const.MaxPointSizeAA;
-+ break;
-+ case GL_ALIASED_POINT_SIZE_RANGE:
-+ params[0] = ctx->Const.MinPointSize;
-+ params[1] = ctx->Const.MaxPointSize;
-+ break;
-+ case GL_POINT_SMOOTH:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Point.SmoothFlag);
-+ break;
-+ case GL_POINT_SMOOTH_HINT:
-+ params[0] = ENUM_TO_FLOAT(ctx->Hint.PointSmooth);
-+ break;
-+ case GL_POINT_SIZE_MIN_EXT:
-+ params[0] = ctx->Point.MinSize;
-+ break;
-+ case GL_POINT_SIZE_MAX_EXT:
-+ params[0] = ctx->Point.MaxSize;
-+ break;
-+ case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
-+ params[0] = ctx->Point.Threshold;
-+ break;
-+ case GL_DISTANCE_ATTENUATION_EXT:
-+ params[0] = ctx->Point.Params[0];
-+ params[1] = ctx->Point.Params[1];
-+ params[2] = ctx->Point.Params[2];
-+ break;
-+ case GL_POLYGON_MODE:
-+ params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontMode);
-+ params[1] = ENUM_TO_FLOAT(ctx->Polygon.BackMode);
-+ break;
-+ case GL_POLYGON_OFFSET_BIAS_EXT:
-+ params[0] = ctx->Polygon.OffsetUnits;
-+ break;
-+ case GL_POLYGON_OFFSET_FACTOR:
-+ params[0] = ctx->Polygon.OffsetFactor ;
-+ break;
-+ case GL_POLYGON_OFFSET_UNITS:
-+ params[0] = ctx->Polygon.OffsetUnits ;
-+ break;
-+ case GL_POLYGON_SMOOTH:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.SmoothFlag);
-+ break;
-+ case GL_POLYGON_SMOOTH_HINT:
-+ params[0] = ENUM_TO_FLOAT(ctx->Hint.PolygonSmooth);
-+ break;
-+ case GL_POLYGON_STIPPLE:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.StippleFlag);
-+ break;
-+ case GL_PROJECTION_MATRIX:
-+ {
-+ const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
-+ params[0] = matrix[0];
-+ params[1] = matrix[1];
-+ params[2] = matrix[2];
-+ params[3] = matrix[3];
-+ params[4] = matrix[4];
-+ params[5] = matrix[5];
-+ params[6] = matrix[6];
-+ params[7] = matrix[7];
-+ params[8] = matrix[8];
-+ params[9] = matrix[9];
-+ params[10] = matrix[10];
-+ params[11] = matrix[11];
-+ params[12] = matrix[12];
-+ params[13] = matrix[13];
-+ params[14] = matrix[14];
-+ params[15] = matrix[15];
-+ }
-+ break;
-+ case GL_PROJECTION_STACK_DEPTH:
-+ params[0] = (GLfloat)(ctx->ProjectionMatrixStack.Depth + 1);
-+ break;
-+ case GL_READ_BUFFER:
-+ params[0] = ENUM_TO_FLOAT(ctx->ReadBuffer->ColorReadBuffer);
-+ break;
-+ case GL_RED_BIAS:
-+ params[0] = ctx->Pixel.RedBias;
-+ break;
-+ case GL_RED_BITS:
-+ params[0] = (GLfloat)( ctx->DrawBuffer->Visual.redBits );
-+ break;
-+ case GL_RED_SCALE:
-+ params[0] = ctx->Pixel.RedScale;
-+ break;
-+ case GL_RENDER_MODE:
-+ params[0] = ENUM_TO_FLOAT(ctx->RenderMode);
-+ break;
-+ case GL_RESCALE_NORMAL:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RescaleNormals);
-+ break;
-+ case GL_RGBA_MODE:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.rgbMode);
-+ break;
-+ case GL_SCISSOR_BOX:
-+ params[0] = (GLfloat)(ctx->Scissor.X);
-+ params[1] = (GLfloat)(ctx->Scissor.Y);
-+ params[2] = (GLfloat)(ctx->Scissor.Width);
-+ params[3] = (GLfloat)(ctx->Scissor.Height);
-+ break;
-+ case GL_SCISSOR_TEST:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Scissor.Enabled);
-+ break;
-+ case GL_SELECTION_BUFFER_SIZE:
-+ params[0] = (GLfloat)(ctx->Select.BufferSize);
-+ break;
-+ case GL_SHADE_MODEL:
-+ params[0] = ENUM_TO_FLOAT(ctx->Light.ShadeModel);
-+ break;
-+ case GL_SHARED_TEXTURE_PALETTE_EXT:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.SharedPalette);
-+ break;
-+ case GL_STENCIL_BITS:
-+ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.stencilBits);
-+ break;
-+ case GL_STENCIL_CLEAR_VALUE:
-+ params[0] = (GLfloat)(ctx->Stencil.Clear);
-+ break;
-+ case GL_STENCIL_FAIL:
-+ params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
-+ break;
-+ case GL_STENCIL_FUNC:
-+ params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
-+ break;
-+ case GL_STENCIL_PASS_DEPTH_FAIL:
-+ params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
-+ break;
-+ case GL_STENCIL_PASS_DEPTH_PASS:
-+ params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
-+ break;
-+ case GL_STENCIL_REF:
-+ params[0] = (GLfloat)(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]);
-+ break;
-+ case GL_STENCIL_TEST:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.Enabled);
-+ break;
-+ case GL_STENCIL_VALUE_MASK:
-+ params[0] = (GLfloat)(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]);
-+ break;
-+ case GL_STENCIL_WRITEMASK:
-+ params[0] = (GLfloat)(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]);
-+ break;
-+ case GL_STEREO:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.stereoMode);
-+ break;
-+ case GL_SUBPIXEL_BITS:
-+ params[0] = (GLfloat)(ctx->Const.SubPixelBits);
-+ break;
-+ case GL_TEXTURE_1D:
-+ params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D));
-+ break;
-+ case GL_TEXTURE_2D:
-+ params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D));
-+ break;
-+ case GL_TEXTURE_3D:
-+ params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_3D));
-+ break;
-+ case GL_TEXTURE_BINDING_1D:
-+ params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current1D->Name);
-+ break;
-+ case GL_TEXTURE_BINDING_2D:
-+ params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current2D->Name);
-+ break;
-+ case GL_TEXTURE_BINDING_3D:
-+ params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current3D->Name);
-+ break;
-+ case GL_TEXTURE_ENV_COLOR:
-+ {
-+ const GLfloat *color = ctx->Texture.Unit[ctx->Texture.CurrentUnit].EnvColor;
-+ params[0] = color[0];
-+ params[1] = color[1];
-+ params[2] = color[2];
-+ params[3] = color[3];
-+ }
-+ break;
-+ case GL_TEXTURE_ENV_MODE:
-+ params[0] = ENUM_TO_FLOAT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].EnvMode);
-+ break;
-+ case GL_TEXTURE_GEN_S:
-+ params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0));
-+ break;
-+ case GL_TEXTURE_GEN_T:
-+ params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0));
-+ break;
-+ case GL_TEXTURE_GEN_R:
-+ params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0));
-+ break;
-+ case GL_TEXTURE_GEN_Q:
-+ params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0));
-+ break;
-+ case GL_TEXTURE_MATRIX:
-+ {
-+ const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
-+ params[0] = matrix[0];
-+ params[1] = matrix[1];
-+ params[2] = matrix[2];
-+ params[3] = matrix[3];
-+ params[4] = matrix[4];
-+ params[5] = matrix[5];
-+ params[6] = matrix[6];
-+ params[7] = matrix[7];
-+ params[8] = matrix[8];
-+ params[9] = matrix[9];
-+ params[10] = matrix[10];
-+ params[11] = matrix[11];
-+ params[12] = matrix[12];
-+ params[13] = matrix[13];
-+ params[14] = matrix[14];
-+ params[15] = matrix[15];
-+ }
-+ break;
-+ case GL_TEXTURE_STACK_DEPTH:
-+ params[0] = (GLfloat)(ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1);
-+ break;
-+ case GL_UNPACK_ALIGNMENT:
-+ params[0] = (GLfloat)(ctx->Unpack.Alignment);
-+ break;
-+ case GL_UNPACK_LSB_FIRST:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.LsbFirst);
-+ break;
-+ case GL_UNPACK_ROW_LENGTH:
-+ params[0] = (GLfloat)(ctx->Unpack.RowLength);
-+ break;
-+ case GL_UNPACK_SKIP_PIXELS:
-+ params[0] = (GLfloat)(ctx->Unpack.SkipPixels);
-+ break;
-+ case GL_UNPACK_SKIP_ROWS:
-+ params[0] = (GLfloat)(ctx->Unpack.SkipRows);
-+ break;
-+ case GL_UNPACK_SWAP_BYTES:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.SwapBytes);
-+ break;
-+ case GL_UNPACK_SKIP_IMAGES_EXT:
-+ params[0] = (GLfloat)(ctx->Unpack.SkipImages);
-+ break;
-+ case GL_UNPACK_IMAGE_HEIGHT_EXT:
-+ params[0] = (GLfloat)(ctx->Unpack.ImageHeight);
-+ break;
-+ case GL_UNPACK_CLIENT_STORAGE_APPLE:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.ClientStorage);
-+ break;
-+ case GL_VIEWPORT:
-+ params[0] = (GLfloat)(ctx->Viewport.X);
-+ params[1] = (GLfloat)(ctx->Viewport.Y);
-+ params[2] = (GLfloat)(ctx->Viewport.Width);
-+ params[3] = (GLfloat)(ctx->Viewport.Height);
-+ break;
-+ case GL_ZOOM_X:
-+ params[0] = ctx->Pixel.ZoomX;
-+ break;
-+ case GL_ZOOM_Y:
-+ params[0] = ctx->Pixel.ZoomY;
-+ break;
-+ case GL_VERTEX_ARRAY:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Enabled);
-+ break;
-+ case GL_VERTEX_ARRAY_SIZE:
-+ params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Size);
-+ break;
-+ case GL_VERTEX_ARRAY_TYPE:
-+ params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Type);
-+ break;
-+ case GL_VERTEX_ARRAY_STRIDE:
-+ params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Stride);
-+ break;
-+ case GL_VERTEX_ARRAY_COUNT_EXT:
-+ params[0] = (GLfloat)(0);
-+ break;
-+ case GL_NORMAL_ARRAY:
-+ params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Enabled);
-+ break;
-+ case GL_NORMAL_ARRAY_TYPE:
-+ params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Type);
-+ break;
-+ case GL_NORMAL_ARRAY_STRIDE:
-+ params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.Stride);
-+ break;
-+ case GL_NORMAL_ARRAY_COUNT_EXT:
-+ params[0] = (GLfloat)(0);
-+ break;
-+ case GL_COLOR_ARRAY:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Color.Enabled);
-+ break;
-+ case GL_COLOR_ARRAY_SIZE:
-+ params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Size);
-+ break;
-+ case GL_COLOR_ARRAY_TYPE:
-+ params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Color.Type);
-+ break;
-+ case GL_COLOR_ARRAY_STRIDE:
-+ params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Stride);
-+ break;
-+ case GL_COLOR_ARRAY_COUNT_EXT:
-+ params[0] = (GLfloat)(0);
-+ break;
-+ case GL_INDEX_ARRAY:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Index.Enabled);
-+ break;
-+ case GL_INDEX_ARRAY_TYPE:
-+ params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Index.Type);
-+ break;
-+ case GL_INDEX_ARRAY_STRIDE:
-+ params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.Stride);
-+ break;
-+ case GL_INDEX_ARRAY_COUNT_EXT:
-+ params[0] = (GLfloat)(0);
-+ break;
-+ case GL_TEXTURE_COORD_ARRAY:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled);
-+ break;
-+ case GL_TEXTURE_COORD_ARRAY_SIZE:
-+ params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size);
-+ break;
-+ case GL_TEXTURE_COORD_ARRAY_TYPE:
-+ params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
-+ break;
-+ case GL_TEXTURE_COORD_ARRAY_STRIDE:
-+ params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride);
-+ break;
-+ case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
-+ params[0] = (GLfloat)(0);
-+ break;
-+ case GL_EDGE_FLAG_ARRAY:
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->EdgeFlag.Enabled);
-+ break;
-+ case GL_EDGE_FLAG_ARRAY_STRIDE:
-+ params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.Stride);
-+ break;
-+ case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
-+ params[0] = (GLfloat)(0);
-+ break;
-+ case GL_MAX_TEXTURE_UNITS_ARB:
-+ CHECK_EXT1(ARB_multitexture, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Const.MaxTextureUnits);
-+ break;
-+ case GL_ACTIVE_TEXTURE_ARB:
-+ CHECK_EXT1(ARB_multitexture, "GetFloatv");
-+ params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit);
-+ break;
-+ case GL_CLIENT_ACTIVE_TEXTURE_ARB:
-+ CHECK_EXT1(ARB_multitexture, "GetFloatv");
-+ params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture);
-+ break;
-+ case GL_TEXTURE_CUBE_MAP_ARB:
-+ CHECK_EXT1(ARB_texture_cube_map, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB));
-+ break;
-+ case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
-+ CHECK_EXT1(ARB_texture_cube_map, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentCubeMap->Name);
-+ break;
-+ case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
-+ CHECK_EXT1(ARB_texture_cube_map, "GetFloatv");
-+ params[0] = (GLfloat)((1 << (ctx->Const.MaxCubeTextureLevels - 1)));
-+ break;
-+ case GL_TEXTURE_COMPRESSION_HINT_ARB:
-+ CHECK_EXT1(ARB_texture_compression, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Hint.TextureCompression);
-+ break;
-+ case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
-+ CHECK_EXT1(ARB_texture_compression, "GetFloatv");
-+ params[0] = (GLfloat)(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
-+ break;
-+ case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
-+ CHECK_EXT1(ARB_texture_compression, "GetFloatv");
-+ {
-+ GLint formats[100];
-+ GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
-+ ASSERT(n <= 100);
-+ for (i = 0; i < n; i++)
-+ params[i] = ENUM_TO_INT(formats[i]);
-+ }
-+ break;
-+ case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
-+ CHECK_EXT1(EXT_compiled_vertex_array, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Array.LockFirst);
-+ break;
-+ case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
-+ CHECK_EXT1(EXT_compiled_vertex_array, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Array.LockCount);
-+ break;
-+ case GL_TRANSPOSE_COLOR_MATRIX_ARB:
-+ {
-+ const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
-+ params[0] = matrix[0];
-+ params[1] = matrix[4];
-+ params[2] = matrix[8];
-+ params[3] = matrix[12];
-+ params[4] = matrix[1];
-+ params[5] = matrix[5];
-+ params[6] = matrix[9];
-+ params[7] = matrix[13];
-+ params[8] = matrix[2];
-+ params[9] = matrix[6];
-+ params[10] = matrix[10];
-+ params[11] = matrix[14];
-+ params[12] = matrix[3];
-+ params[13] = matrix[7];
-+ params[14] = matrix[11];
-+ params[15] = matrix[15];
-+ }
-+ break;
-+ case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
-+ {
-+ const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
-+ params[0] = matrix[0];
-+ params[1] = matrix[4];
-+ params[2] = matrix[8];
-+ params[3] = matrix[12];
-+ params[4] = matrix[1];
-+ params[5] = matrix[5];
-+ params[6] = matrix[9];
-+ params[7] = matrix[13];
-+ params[8] = matrix[2];
-+ params[9] = matrix[6];
-+ params[10] = matrix[10];
-+ params[11] = matrix[14];
-+ params[12] = matrix[3];
-+ params[13] = matrix[7];
-+ params[14] = matrix[11];
-+ params[15] = matrix[15];
-+ }
-+ break;
-+ case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
-+ {
-+ const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
-+ params[0] = matrix[0];
-+ params[1] = matrix[4];
-+ params[2] = matrix[8];
-+ params[3] = matrix[12];
-+ params[4] = matrix[1];
-+ params[5] = matrix[5];
-+ params[6] = matrix[9];
-+ params[7] = matrix[13];
-+ params[8] = matrix[2];
-+ params[9] = matrix[6];
-+ params[10] = matrix[10];
-+ params[11] = matrix[14];
-+ params[12] = matrix[3];
-+ params[13] = matrix[7];
-+ params[14] = matrix[11];
-+ params[15] = matrix[15];
-+ }
-+ break;
-+ case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
-+ {
-+ const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
-+ params[0] = matrix[0];
-+ params[1] = matrix[4];
-+ params[2] = matrix[8];
-+ params[3] = matrix[12];
-+ params[4] = matrix[1];
-+ params[5] = matrix[5];
-+ params[6] = matrix[9];
-+ params[7] = matrix[13];
-+ params[8] = matrix[2];
-+ params[9] = matrix[6];
-+ params[10] = matrix[10];
-+ params[11] = matrix[14];
-+ params[12] = matrix[3];
-+ params[13] = matrix[7];
-+ params[14] = matrix[11];
-+ params[15] = matrix[15];
-+ }
-+ break;
-+ case GL_COLOR_MATRIX_SGI:
-+ {
-+ const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
-+ params[0] = matrix[0];
-+ params[1] = matrix[1];
-+ params[2] = matrix[2];
-+ params[3] = matrix[3];
-+ params[4] = matrix[4];
-+ params[5] = matrix[5];
-+ params[6] = matrix[6];
-+ params[7] = matrix[7];
-+ params[8] = matrix[8];
-+ params[9] = matrix[9];
-+ params[10] = matrix[10];
-+ params[11] = matrix[11];
-+ params[12] = matrix[12];
-+ params[13] = matrix[13];
-+ params[14] = matrix[14];
-+ params[15] = matrix[15];
-+ }
-+ break;
-+ case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
-+ params[0] = (GLfloat)(ctx->ColorMatrixStack.Depth + 1);
-+ break;
-+ case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
-+ params[0] = (GLfloat)(MAX_COLOR_STACK_DEPTH);
-+ break;
-+ case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
-+ params[0] = ctx->Pixel.PostColorMatrixScale[0];
-+ break;
-+ case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
-+ params[0] = ctx->Pixel.PostColorMatrixScale[1];
-+ break;
-+ case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
-+ params[0] = ctx->Pixel.PostColorMatrixScale[2];
-+ break;
-+ case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
-+ params[0] = ctx->Pixel.PostColorMatrixScale[3];
-+ break;
-+ case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
-+ params[0] = ctx->Pixel.PostColorMatrixBias[0];
-+ break;
-+ case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
-+ params[0] = ctx->Pixel.PostColorMatrixBias[1];
-+ break;
-+ case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
-+ params[0] = ctx->Pixel.PostColorMatrixBias[2];
-+ break;
-+ case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
-+ params[0] = ctx->Pixel.PostColorMatrixBias[3];
-+ break;
-+ case GL_CONVOLUTION_1D_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution1DEnabled);
-+ break;
-+ case GL_CONVOLUTION_2D_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution2DEnabled);
-+ break;
-+ case GL_SEPARABLE_2D_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Separable2DEnabled);
-+ break;
-+ case GL_POST_CONVOLUTION_RED_SCALE_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetFloatv");
-+ params[0] = ctx->Pixel.PostConvolutionScale[0];
-+ break;
-+ case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetFloatv");
-+ params[0] = ctx->Pixel.PostConvolutionScale[1];
-+ break;
-+ case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetFloatv");
-+ params[0] = ctx->Pixel.PostConvolutionScale[2];
-+ break;
-+ case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetFloatv");
-+ params[0] = ctx->Pixel.PostConvolutionScale[3];
-+ break;
-+ case GL_POST_CONVOLUTION_RED_BIAS_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetFloatv");
-+ params[0] = ctx->Pixel.PostConvolutionBias[0];
-+ break;
-+ case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetFloatv");
-+ params[0] = ctx->Pixel.PostConvolutionBias[1];
-+ break;
-+ case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetFloatv");
-+ params[0] = ctx->Pixel.PostConvolutionBias[2];
-+ break;
-+ case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetFloatv");
-+ params[0] = ctx->Pixel.PostConvolutionBias[3];
-+ break;
-+ case GL_HISTOGRAM:
-+ CHECK_EXT1(EXT_histogram, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.HistogramEnabled);
-+ break;
-+ case GL_MINMAX:
-+ CHECK_EXT1(EXT_histogram, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MinMaxEnabled);
-+ break;
-+ case GL_COLOR_TABLE_SGI:
-+ CHECK_EXT1(SGI_color_table, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled);
-+ break;
-+ case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
-+ CHECK_EXT1(SGI_color_table, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.PostConvolutionColorTableEnabled);
-+ break;
-+ case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
-+ CHECK_EXT1(SGI_color_table, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.PostColorMatrixColorTableEnabled);
-+ break;
-+ case GL_TEXTURE_COLOR_TABLE_SGI:
-+ CHECK_EXT1(SGI_texture_color_table, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
-+ break;
-+ case GL_COLOR_SUM_EXT:
-+ CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.ColorSumEnabled);
-+ break;
-+ case GL_CURRENT_SECONDARY_COLOR_EXT:
-+ CHECK_EXT1(EXT_secondary_color, "GetFloatv");
-+ {
-+ FLUSH_CURRENT(ctx, 0);
-+ params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0];
-+ params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1];
-+ params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2];
-+ params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3];
-+ }
-+ break;
-+ case GL_SECONDARY_COLOR_ARRAY_EXT:
-+ CHECK_EXT1(EXT_secondary_color, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Enabled);
-+ break;
-+ case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
-+ CHECK_EXT1(EXT_secondary_color, "GetFloatv");
-+ params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Type);
-+ break;
-+ case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
-+ CHECK_EXT1(EXT_secondary_color, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Stride);
-+ break;
-+ case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
-+ CHECK_EXT1(EXT_secondary_color, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Size);
-+ break;
-+ case GL_CURRENT_FOG_COORDINATE_EXT:
-+ CHECK_EXT1(EXT_fog_coord, "GetFloatv");
-+ {
-+ FLUSH_CURRENT(ctx, 0);
-+ params[0] = ctx->Current.Attrib[VERT_ATTRIB_FOG][0];
-+ }
-+ break;
-+ case GL_FOG_COORDINATE_ARRAY_EXT:
-+ CHECK_EXT1(EXT_fog_coord, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Enabled);
-+ break;
-+ case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
-+ CHECK_EXT1(EXT_fog_coord, "GetFloatv");
-+ params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Type);
-+ break;
-+ case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
-+ CHECK_EXT1(EXT_fog_coord, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.Stride);
-+ break;
-+ case GL_FOG_COORDINATE_SOURCE_EXT:
-+ CHECK_EXT1(EXT_fog_coord, "GetFloatv");
-+ params[0] = ENUM_TO_FLOAT(ctx->Fog.FogCoordinateSource);
-+ break;
-+ case GL_MAX_TEXTURE_LOD_BIAS_EXT:
-+ CHECK_EXT1(EXT_texture_lod_bias, "GetFloatv");
-+ params[0] = ctx->Const.MaxTextureLodBias;
-+ break;
-+ case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
-+ CHECK_EXT1(EXT_texture_filter_anisotropic, "GetFloatv");
-+ params[0] = ctx->Const.MaxTextureMaxAnisotropy;
-+ break;
-+ case GL_MULTISAMPLE_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.Enabled);
-+ break;
-+ case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToCoverage);
-+ break;
-+ case GL_SAMPLE_ALPHA_TO_ONE_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToOne);
-+ break;
-+ case GL_SAMPLE_COVERAGE_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverage);
-+ break;
-+ case GL_SAMPLE_COVERAGE_VALUE_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetFloatv");
-+ params[0] = ctx->Multisample.SampleCoverageValue;
-+ break;
-+ case GL_SAMPLE_COVERAGE_INVERT_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverageInvert);
-+ break;
-+ case GL_SAMPLE_BUFFERS_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.sampleBuffers);
-+ break;
-+ case GL_SAMPLES_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.samples);
-+ break;
-+ case GL_RASTER_POSITION_UNCLIPPED_IBM:
-+ CHECK_EXT1(IBM_rasterpos_clip, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RasterPositionUnclipped);
-+ break;
-+ case GL_POINT_SPRITE_NV:
-+ CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Point.PointSprite);
-+ break;
-+ case GL_POINT_SPRITE_R_MODE_NV:
-+ CHECK_EXT1(NV_point_sprite, "GetFloatv");
-+ params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteRMode);
-+ break;
-+ case GL_POINT_SPRITE_COORD_ORIGIN:
-+ CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetFloatv");
-+ params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteOrigin);
-+ break;
-+ case GL_GENERATE_MIPMAP_HINT_SGIS:
-+ CHECK_EXT1(SGIS_generate_mipmap, "GetFloatv");
-+ params[0] = ENUM_TO_FLOAT(ctx->Hint.GenerateMipmap);
-+ break;
-+ case GL_VERTEX_PROGRAM_BINDING_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = (GLfloat)((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0));
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY0_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY1_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY2_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY3_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY5_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY6_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY7_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY8_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY9_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY10_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY11_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY12_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY13_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY14_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY15_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB0_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[0]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB1_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[1]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB2_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[2]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB3_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[3]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB4_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[4]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB5_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[5]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB6_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[6]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB7_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[7]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB8_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[8]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB9_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[9]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB10_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[10]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB11_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[11]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB12_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[12]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB13_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[13]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB14_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[14]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB15_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[15]);
-+ break;
-+ case GL_FRAGMENT_PROGRAM_NV:
-+ CHECK_EXT1(NV_fragment_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled);
-+ break;
-+ case GL_FRAGMENT_PROGRAM_BINDING_NV:
-+ CHECK_EXT1(NV_fragment_program, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0);
-+ break;
-+ case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
-+ CHECK_EXT1(NV_fragment_program, "GetFloatv");
-+ params[0] = (GLfloat)(MAX_NV_FRAGMENT_PROGRAM_PARAMS);
-+ break;
-+ case GL_TEXTURE_RECTANGLE_NV:
-+ CHECK_EXT1(NV_texture_rectangle, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
-+ break;
-+ case GL_TEXTURE_BINDING_RECTANGLE_NV:
-+ CHECK_EXT1(NV_texture_rectangle, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentRect->Name);
-+ break;
-+ case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
-+ CHECK_EXT1(NV_texture_rectangle, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Const.MaxTextureRectSize);
-+ break;
-+ case GL_STENCIL_TEST_TWO_SIDE_EXT:
-+ CHECK_EXT1(EXT_stencil_two_side, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.TestTwoSide);
-+ break;
-+ case GL_ACTIVE_STENCIL_FACE_EXT:
-+ CHECK_EXT1(EXT_stencil_two_side, "GetFloatv");
-+ params[0] = ENUM_TO_FLOAT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
-+ break;
-+ case GL_MAX_SHININESS_NV:
-+ CHECK_EXT1(NV_light_max_exponent, "GetFloatv");
-+ params[0] = ctx->Const.MaxShininess;
-+ break;
-+ case GL_MAX_SPOT_EXPONENT_NV:
-+ CHECK_EXT1(NV_light_max_exponent, "GetFloatv");
-+ params[0] = ctx->Const.MaxSpotExponent;
-+ break;
-+ case GL_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Array.ArrayBufferObj->Name);
-+ break;
-+ case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.BufferObj->Name);
-+ break;
-+ case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.BufferObj->Name);
-+ break;
-+ case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.BufferObj->Name);
-+ break;
-+ case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.BufferObj->Name);
-+ break;
-+ case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name);
-+ break;
-+ case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name);
-+ break;
-+ case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name);
-+ break;
-+ case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.BufferObj->Name);
-+ break;
-+ case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Array.ElementArrayBufferObj->Name);
-+ break;
-+ case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
-+ CHECK_EXT1(EXT_pixel_buffer_object, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Pack.BufferObj->Name);
-+ break;
-+ case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
-+ CHECK_EXT1(EXT_pixel_buffer_object, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Unpack.BufferObj->Name);
-+ break;
-+ case GL_VERTEX_PROGRAM_ARB:
-+ CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.Enabled);
-+ break;
-+ case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
-+ CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.PointSizeEnabled);
-+ break;
-+ case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
-+ CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.TwoSideEnabled);
-+ break;
-+ case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
-+ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Const.MaxProgramMatrixStackDepth);
-+ break;
-+ case GL_MAX_PROGRAM_MATRICES_ARB:
-+ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Const.MaxProgramMatrices);
-+ break;
-+ case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
-+ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->CurrentStack->Depth + 1);
-+ break;
-+ case GL_CURRENT_MATRIX_ARB:
-+ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetFloatv");
-+ {
-+ const GLfloat *matrix = ctx->CurrentStack->Top->m;
-+ params[0] = matrix[0];
-+ params[1] = matrix[1];
-+ params[2] = matrix[2];
-+ params[3] = matrix[3];
-+ params[4] = matrix[4];
-+ params[5] = matrix[5];
-+ params[6] = matrix[6];
-+ params[7] = matrix[7];
-+ params[8] = matrix[8];
-+ params[9] = matrix[9];
-+ params[10] = matrix[10];
-+ params[11] = matrix[11];
-+ params[12] = matrix[12];
-+ params[13] = matrix[13];
-+ params[14] = matrix[14];
-+ params[15] = matrix[15];
-+ }
-+ break;
-+ case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
-+ CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetFloatv");
-+ {
-+ const GLfloat *matrix = ctx->CurrentStack->Top->m;
-+ params[0] = matrix[0];
-+ params[1] = matrix[4];
-+ params[2] = matrix[8];
-+ params[3] = matrix[12];
-+ params[4] = matrix[1];
-+ params[5] = matrix[5];
-+ params[6] = matrix[9];
-+ params[7] = matrix[13];
-+ params[8] = matrix[2];
-+ params[9] = matrix[6];
-+ params[10] = matrix[10];
-+ params[11] = matrix[14];
-+ params[12] = matrix[3];
-+ params[13] = matrix[7];
-+ params[14] = matrix[11];
-+ params[15] = matrix[15];
-+ }
-+ break;
-+ case GL_MAX_VERTEX_ATTRIBS_ARB:
-+ CHECK_EXT1(ARB_vertex_program, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Const.VertexProgram.MaxAttribs);
-+ break;
-+ case GL_PROGRAM_ERROR_POSITION_ARB:
-+ CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Program.ErrorPos);
-+ break;
-+ case GL_FRAGMENT_PROGRAM_ARB:
-+ CHECK_EXT1(ARB_fragment_program, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled);
-+ break;
-+ case GL_MAX_TEXTURE_COORDS_ARB:
-+ CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Const.MaxTextureCoordUnits);
-+ break;
-+ case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
-+ CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Const.MaxTextureImageUnits);
-+ break;
-+ case GL_DEPTH_BOUNDS_TEST_EXT:
-+ CHECK_EXT1(EXT_depth_bounds_test, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.BoundsTest);
-+ break;
-+ case GL_DEPTH_BOUNDS_EXT:
-+ CHECK_EXT1(EXT_depth_bounds_test, "GetFloatv");
-+ params[0] = ctx->Depth.BoundsMin;
-+ params[1] = ctx->Depth.BoundsMax;
-+ break;
-+ case GL_FRAGMENT_PROGRAM_CALLBACK_MESA:
-+ CHECK_EXT1(MESA_program_debug, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.CallbackEnabled);
-+ break;
-+ case GL_VERTEX_PROGRAM_CALLBACK_MESA:
-+ CHECK_EXT1(MESA_program_debug, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.CallbackEnabled);
-+ break;
-+ case GL_FRAGMENT_PROGRAM_POSITION_MESA:
-+ CHECK_EXT1(MESA_program_debug, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->FragmentProgram.CurrentPosition);
-+ break;
-+ case GL_VERTEX_PROGRAM_POSITION_MESA:
-+ CHECK_EXT1(MESA_program_debug, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->VertexProgram.CurrentPosition);
-+ break;
-+ case GL_MAX_DRAW_BUFFERS_ARB:
-+ CHECK_EXT1(ARB_draw_buffers, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Const.MaxDrawBuffers);
-+ break;
-+ case GL_DRAW_BUFFER0_ARB:
-+ CHECK_EXT1(ARB_draw_buffers, "GetFloatv");
-+ params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]);
-+ break;
-+ case GL_DRAW_BUFFER1_ARB:
-+ CHECK_EXT1(ARB_draw_buffers, "GetFloatv");
-+ {
-+ GLenum buffer;
-+ if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-+ _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-+ return;
-+ }
-+ buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
-+ params[0] = ENUM_TO_FLOAT(buffer);
-+ }
-+ break;
-+ case GL_DRAW_BUFFER2_ARB:
-+ CHECK_EXT1(ARB_draw_buffers, "GetFloatv");
-+ {
-+ GLenum buffer;
-+ if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-+ _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-+ return;
-+ }
-+ buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
-+ params[0] = ENUM_TO_FLOAT(buffer);
-+ }
-+ break;
-+ case GL_DRAW_BUFFER3_ARB:
-+ CHECK_EXT1(ARB_draw_buffers, "GetFloatv");
-+ {
-+ GLenum buffer;
-+ if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-+ _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-+ return;
-+ }
-+ buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
-+ params[0] = ENUM_TO_FLOAT(buffer);
-+ }
-+ break;
-+ case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
-+ CHECK_EXT1(OES_read_format, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Const.ColorReadType);
-+ break;
-+ case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
-+ CHECK_EXT1(OES_read_format, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Const.ColorReadFormat);
-+ break;
-+ case GL_NUM_FRAGMENT_REGISTERS_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
-+ params[0] = (GLfloat)(6);
-+ break;
-+ case GL_NUM_FRAGMENT_CONSTANTS_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
-+ params[0] = (GLfloat)(8);
-+ break;
-+ case GL_NUM_PASSES_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
-+ params[0] = (GLfloat)(2);
-+ break;
-+ case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
-+ params[0] = (GLfloat)(8);
-+ break;
-+ case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
-+ params[0] = (GLfloat)(16);
-+ break;
-+ case GL_COLOR_ALPHA_PAIRING_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
-+ params[0] = BOOLEAN_TO_FLOAT(GL_TRUE);
-+ break;
-+ case GL_NUM_LOOPBACK_COMPONENTS_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
-+ params[0] = (GLfloat)(3);
-+ break;
-+ case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
-+ params[0] = (GLfloat)(3);
-+ break;
-+ case GL_STENCIL_BACK_FUNC:
-+ params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[1]);
-+ break;
-+ case GL_STENCIL_BACK_VALUE_MASK:
-+ params[0] = (GLfloat)(ctx->Stencil.ValueMask[1]);
-+ break;
-+ case GL_STENCIL_BACK_REF:
-+ params[0] = (GLfloat)(ctx->Stencil.Ref[1]);
-+ break;
-+ case GL_STENCIL_BACK_FAIL:
-+ params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[1]);
-+ break;
-+ case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
-+ params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[1]);
-+ break;
-+ case GL_STENCIL_BACK_PASS_DEPTH_PASS:
-+ params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[1]);
-+ break;
-+ case GL_FRAMEBUFFER_BINDING_EXT:
-+ CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->DrawBuffer->Name);
-+ break;
-+ case GL_RENDERBUFFER_BINDING_EXT:
-+ CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0);
-+ break;
-+ case GL_MAX_COLOR_ATTACHMENTS_EXT:
-+ CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Const.MaxColorAttachments);
-+ break;
-+ case GL_MAX_RENDERBUFFER_SIZE_EXT:
-+ CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
-+ params[0] = (GLfloat)(ctx->Const.MaxRenderbufferSize);
-+ break;
-+ case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
-+ CHECK_EXT1(ARB_fragment_shader, "GetFloatv");
-+ params[0] = (GLfloat)(MAX_FRAGMENT_UNIFORM_COMPONENTS);
-+ break;
-+ case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
-+ CHECK_EXT1(ARB_fragment_shader, "GetFloatv");
-+ params[0] = ENUM_TO_FLOAT(ctx->Hint.FragmentShaderDerivative);
-+ break;
-+ case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
-+ CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
-+ params[0] = (GLfloat)(MAX_VERTEX_UNIFORM_COMPONENTS);
-+ break;
-+ case GL_MAX_VARYING_FLOATS_ARB:
-+ CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
-+ params[0] = (GLfloat)(MAX_VARYING_FLOATS);
-+ break;
-+ case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
-+ CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
-+ params[0] = (GLfloat)(MAX_VERTEX_TEXTURE_IMAGE_UNITS);
-+ break;
-+ case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
-+ CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
-+ params[0] = (GLfloat)(MAX_COMBINED_TEXTURE_IMAGE_UNITS);
-+ break;
-+ default:
-+ _mesa_error(ctx, GL_INVALID_ENUM, "glGetFloatv(pname=0x%x)", pname);
-+ }
-+}
-+
-+void GLAPIENTRY
-+_mesa_GetIntegerv( GLenum pname, GLint *params )
-+{
-+ GET_CURRENT_CONTEXT(ctx);
-+ ASSERT_OUTSIDE_BEGIN_END(ctx);
-+
-+ if (!params)
-+ return;
-+
-+ if (ctx->NewState)
-+ _mesa_update_state(ctx);
-+
-+ if (ctx->Driver.GetIntegerv &&
-+ ctx->Driver.GetIntegerv(ctx, pname, params))
-+ return;
-+
-+ switch (pname) {
-+ case GL_ACCUM_RED_BITS:
-+ params[0] = ctx->DrawBuffer->Visual.accumRedBits;
-+ break;
-+ case GL_ACCUM_GREEN_BITS:
-+ params[0] = ctx->DrawBuffer->Visual.accumGreenBits;
-+ break;
-+ case GL_ACCUM_BLUE_BITS:
-+ params[0] = ctx->DrawBuffer->Visual.accumBlueBits;
-+ break;
-+ case GL_ACCUM_ALPHA_BITS:
-+ params[0] = ctx->DrawBuffer->Visual.accumAlphaBits;
-+ break;
-+ case GL_ACCUM_CLEAR_VALUE:
-+ params[0] = FLOAT_TO_INT(ctx->Accum.ClearColor[0]);
-+ params[1] = FLOAT_TO_INT(ctx->Accum.ClearColor[1]);
-+ params[2] = FLOAT_TO_INT(ctx->Accum.ClearColor[2]);
-+ params[3] = FLOAT_TO_INT(ctx->Accum.ClearColor[3]);
-+ break;
-+ case GL_ALPHA_BIAS:
-+ params[0] = IROUND(ctx->Pixel.AlphaBias);
-+ break;
-+ case GL_ALPHA_BITS:
-+ params[0] = ctx->DrawBuffer->Visual.alphaBits;
-+ break;
-+ case GL_ALPHA_SCALE:
-+ params[0] = IROUND(ctx->Pixel.AlphaScale);
-+ break;
-+ case GL_ALPHA_TEST:
-+ params[0] = BOOLEAN_TO_INT(ctx->Color.AlphaEnabled);
-+ break;
-+ case GL_ALPHA_TEST_FUNC:
-+ params[0] = ENUM_TO_INT(ctx->Color.AlphaFunc);
-+ break;
-+ case GL_ALPHA_TEST_REF:
-+ params[0] = FLOAT_TO_INT(ctx->Color.AlphaRef);
-+ break;
-+ case GL_ATTRIB_STACK_DEPTH:
-+ params[0] = ctx->AttribStackDepth;
-+ break;
-+ case GL_AUTO_NORMAL:
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.AutoNormal);
-+ break;
-+ case GL_AUX_BUFFERS:
-+ params[0] = ctx->DrawBuffer->Visual.numAuxBuffers;
-+ break;
-+ case GL_BLEND:
-+ params[0] = BOOLEAN_TO_INT(ctx->Color.BlendEnabled);
-+ break;
-+ case GL_BLEND_DST:
-+ params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB);
-+ break;
-+ case GL_BLEND_SRC:
-+ params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB);
-+ break;
-+ case GL_BLEND_SRC_RGB_EXT:
-+ params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB);
-+ break;
-+ case GL_BLEND_DST_RGB_EXT:
-+ params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB);
-+ break;
-+ case GL_BLEND_SRC_ALPHA_EXT:
-+ params[0] = ENUM_TO_INT(ctx->Color.BlendSrcA);
-+ break;
-+ case GL_BLEND_DST_ALPHA_EXT:
-+ params[0] = ENUM_TO_INT(ctx->Color.BlendDstA);
-+ break;
-+ case GL_BLEND_EQUATION:
-+ params[0] = ENUM_TO_INT(ctx->Color.BlendEquationRGB );
-+ break;
-+ case GL_BLEND_EQUATION_ALPHA_EXT:
-+ params[0] = ENUM_TO_INT(ctx->Color.BlendEquationA );
-+ break;
-+ case GL_BLEND_COLOR_EXT:
-+ params[0] = FLOAT_TO_INT(ctx->Color.BlendColor[0]);
-+ params[1] = FLOAT_TO_INT(ctx->Color.BlendColor[1]);
-+ params[2] = FLOAT_TO_INT(ctx->Color.BlendColor[2]);
-+ params[3] = FLOAT_TO_INT(ctx->Color.BlendColor[3]);
-+ break;
-+ case GL_BLUE_BIAS:
-+ params[0] = IROUND(ctx->Pixel.BlueBias);
-+ break;
-+ case GL_BLUE_BITS:
-+ params[0] = ctx->DrawBuffer->Visual.blueBits;
-+ break;
-+ case GL_BLUE_SCALE:
-+ params[0] = IROUND(ctx->Pixel.BlueScale);
-+ break;
-+ case GL_CLIENT_ATTRIB_STACK_DEPTH:
-+ params[0] = ctx->ClientAttribStackDepth;
-+ break;
-+ case GL_CLIP_PLANE0:
-+ params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
-+ break;
-+ case GL_CLIP_PLANE1:
-+ params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
-+ break;
-+ case GL_CLIP_PLANE2:
-+ params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
-+ break;
-+ case GL_CLIP_PLANE3:
-+ params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
-+ break;
-+ case GL_CLIP_PLANE4:
-+ params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
-+ break;
-+ case GL_CLIP_PLANE5:
-+ params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
-+ break;
-+ case GL_COLOR_CLEAR_VALUE:
-+ params[0] = FLOAT_TO_INT(ctx->Color.ClearColor[0]);
-+ params[1] = FLOAT_TO_INT(ctx->Color.ClearColor[1]);
-+ params[2] = FLOAT_TO_INT(ctx->Color.ClearColor[2]);
-+ params[3] = FLOAT_TO_INT(ctx->Color.ClearColor[3]);
-+ break;
-+ case GL_COLOR_MATERIAL:
-+ params[0] = BOOLEAN_TO_INT(ctx->Light.ColorMaterialEnabled);
-+ break;
-+ case GL_COLOR_MATERIAL_FACE:
-+ params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialFace);
-+ break;
-+ case GL_COLOR_MATERIAL_PARAMETER:
-+ params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialMode);
-+ break;
-+ case GL_COLOR_WRITEMASK:
-+ params[0] = ctx->Color.ColorMask[RCOMP] ? 1 : 0;
-+ params[1] = ctx->Color.ColorMask[GCOMP] ? 1 : 0;
-+ params[2] = ctx->Color.ColorMask[BCOMP] ? 1 : 0;
-+ params[3] = ctx->Color.ColorMask[ACOMP] ? 1 : 0;
-+ break;
-+ case GL_CULL_FACE:
-+ params[0] = BOOLEAN_TO_INT(ctx->Polygon.CullFlag);
-+ break;
-+ case GL_CULL_FACE_MODE:
-+ params[0] = ENUM_TO_INT(ctx->Polygon.CullFaceMode);
-+ break;
-+ case GL_CURRENT_COLOR:
-+ {
-+ FLUSH_CURRENT(ctx, 0);
-+ params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
-+ params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
-+ params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
-+ params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
-+ }
-+ break;
-+ case GL_CURRENT_INDEX:
-+ {
-+ FLUSH_CURRENT(ctx, 0);
-+ params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]);
-+ }
-+ break;
-+ case GL_CURRENT_NORMAL:
-+ {
-+ FLUSH_CURRENT(ctx, 0);
-+ params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
-+ params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
-+ params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
-+ }
-+ break;
-+ case GL_CURRENT_RASTER_COLOR:
-+ params[0] = FLOAT_TO_INT(ctx->Current.RasterColor[0]);
-+ params[1] = FLOAT_TO_INT(ctx->Current.RasterColor[1]);
-+ params[2] = FLOAT_TO_INT(ctx->Current.RasterColor[2]);
-+ params[3] = FLOAT_TO_INT(ctx->Current.RasterColor[3]);
-+ break;
-+ case GL_CURRENT_RASTER_DISTANCE:
-+ params[0] = IROUND(ctx->Current.RasterDistance);
-+ break;
-+ case GL_CURRENT_RASTER_INDEX:
-+ params[0] = IROUND(ctx->Current.RasterIndex);
-+ break;
-+ case GL_CURRENT_RASTER_POSITION:
-+ params[0] = IROUND(ctx->Current.RasterPos[0]);
-+ params[1] = IROUND(ctx->Current.RasterPos[1]);
-+ params[2] = IROUND(ctx->Current.RasterPos[2]);
-+ params[3] = IROUND(ctx->Current.RasterPos[3]);
-+ break;
-+ case GL_CURRENT_RASTER_SECONDARY_COLOR:
-+ params[0] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[0]);
-+ params[1] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[1]);
-+ params[2] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[2]);
-+ params[3] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[3]);
-+ break;
-+ case GL_CURRENT_RASTER_TEXTURE_COORDS:
-+ {
-+ const GLuint texUnit = ctx->Texture.CurrentUnit;
-+ params[0] = IROUND(ctx->Current.RasterTexCoords[texUnit][0]);
-+ params[1] = IROUND(ctx->Current.RasterTexCoords[texUnit][1]);
-+ params[2] = IROUND(ctx->Current.RasterTexCoords[texUnit][2]);
-+ params[3] = IROUND(ctx->Current.RasterTexCoords[texUnit][3]);
-+ }
-+ break;
-+ case GL_CURRENT_RASTER_POSITION_VALID:
-+ params[0] = BOOLEAN_TO_INT(ctx->Current.RasterPosValid);
-+ break;
-+ case GL_CURRENT_TEXTURE_COORDS:
-+ {
-+ const GLuint texUnit = ctx->Texture.CurrentUnit;
-+ params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]);
-+ params[1] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]);
-+ params[2] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]);
-+ params[3] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]);
-+ }
-+ break;
-+ case GL_DEPTH_BIAS:
-+ params[0] = IROUND(ctx->Pixel.DepthBias);
-+ break;
-+ case GL_DEPTH_BITS:
-+ params[0] = ctx->DrawBuffer->Visual.depthBits;
-+ break;
-+ case GL_DEPTH_CLEAR_VALUE:
-+ params[0] = IROUND(ctx->Depth.Clear);
-+ break;
-+ case GL_DEPTH_FUNC:
-+ params[0] = ENUM_TO_INT(ctx->Depth.Func);
-+ break;
-+ case GL_DEPTH_RANGE:
-+ params[0] = FLOAT_TO_INT(ctx->Viewport.Near);
-+ params[1] = FLOAT_TO_INT(ctx->Viewport.Far);
-+ break;
-+ case GL_DEPTH_SCALE:
-+ params[0] = IROUND(ctx->Pixel.DepthScale);
-+ break;
-+ case GL_DEPTH_TEST:
-+ params[0] = BOOLEAN_TO_INT(ctx->Depth.Test);
-+ break;
-+ case GL_DEPTH_WRITEMASK:
-+ params[0] = BOOLEAN_TO_INT(ctx->Depth.Mask);
-+ break;
-+ case GL_DITHER:
-+ params[0] = BOOLEAN_TO_INT(ctx->Color.DitherFlag);
-+ break;
-+ case GL_DOUBLEBUFFER:
-+ params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.doubleBufferMode);
-+ break;
-+ case GL_DRAW_BUFFER:
-+ params[0] = ENUM_TO_INT(ctx->DrawBuffer->ColorDrawBuffer[0]);
-+ break;
-+ case GL_EDGE_FLAG:
-+ {
-+ FLUSH_CURRENT(ctx, 0);
-+ params[0] = BOOLEAN_TO_INT(ctx->Current.EdgeFlag);
-+ }
-+ break;
-+ case GL_FEEDBACK_BUFFER_SIZE:
-+ params[0] = ctx->Feedback.BufferSize;
-+ break;
-+ case GL_FEEDBACK_BUFFER_TYPE:
-+ params[0] = ENUM_TO_INT(ctx->Feedback.Type);
-+ break;
-+ case GL_FOG:
-+ params[0] = BOOLEAN_TO_INT(ctx->Fog.Enabled);
-+ break;
-+ case GL_FOG_COLOR:
-+ params[0] = FLOAT_TO_INT(ctx->Fog.Color[0]);
-+ params[1] = FLOAT_TO_INT(ctx->Fog.Color[1]);
-+ params[2] = FLOAT_TO_INT(ctx->Fog.Color[2]);
-+ params[3] = FLOAT_TO_INT(ctx->Fog.Color[3]);
-+ break;
-+ case GL_FOG_DENSITY:
-+ params[0] = IROUND(ctx->Fog.Density);
-+ break;
-+ case GL_FOG_END:
-+ params[0] = IROUND(ctx->Fog.End);
-+ break;
-+ case GL_FOG_HINT:
-+ params[0] = ENUM_TO_INT(ctx->Hint.Fog);
-+ break;
-+ case GL_FOG_INDEX:
-+ params[0] = IROUND(ctx->Fog.Index);
-+ break;
-+ case GL_FOG_MODE:
-+ params[0] = ENUM_TO_INT(ctx->Fog.Mode);
-+ break;
-+ case GL_FOG_START:
-+ params[0] = IROUND(ctx->Fog.Start);
-+ break;
-+ case GL_FRONT_FACE:
-+ params[0] = ENUM_TO_INT(ctx->Polygon.FrontFace);
-+ break;
-+ case GL_GREEN_BIAS:
-+ params[0] = IROUND(ctx->Pixel.GreenBias);
-+ break;
-+ case GL_GREEN_BITS:
-+ params[0] = ctx->DrawBuffer->Visual.greenBits;
-+ break;
-+ case GL_GREEN_SCALE:
-+ params[0] = IROUND(ctx->Pixel.GreenScale);
-+ break;
-+ case GL_INDEX_BITS:
-+ params[0] = ctx->DrawBuffer->Visual.indexBits;
-+ break;
-+ case GL_INDEX_CLEAR_VALUE:
-+ params[0] = ctx->Color.ClearIndex;
-+ break;
-+ case GL_INDEX_MODE:
-+ params[0] = BOOLEAN_TO_INT(!ctx->DrawBuffer->Visual.rgbMode);
-+ break;
-+ case GL_INDEX_OFFSET:
-+ params[0] = ctx->Pixel.IndexOffset;
-+ break;
-+ case GL_INDEX_SHIFT:
-+ params[0] = ctx->Pixel.IndexShift;
-+ break;
-+ case GL_INDEX_WRITEMASK:
-+ params[0] = ctx->Color.IndexMask;
-+ break;
-+ case GL_LIGHT0:
-+ params[0] = BOOLEAN_TO_INT(ctx->Light.Light[0].Enabled);
-+ break;
-+ case GL_LIGHT1:
-+ params[0] = BOOLEAN_TO_INT(ctx->Light.Light[1].Enabled);
-+ break;
-+ case GL_LIGHT2:
-+ params[0] = BOOLEAN_TO_INT(ctx->Light.Light[2].Enabled);
-+ break;
-+ case GL_LIGHT3:
-+ params[0] = BOOLEAN_TO_INT(ctx->Light.Light[3].Enabled);
-+ break;
-+ case GL_LIGHT4:
-+ params[0] = BOOLEAN_TO_INT(ctx->Light.Light[4].Enabled);
-+ break;
-+ case GL_LIGHT5:
-+ params[0] = BOOLEAN_TO_INT(ctx->Light.Light[5].Enabled);
-+ break;
-+ case GL_LIGHT6:
-+ params[0] = BOOLEAN_TO_INT(ctx->Light.Light[6].Enabled);
-+ break;
-+ case GL_LIGHT7:
-+ params[0] = BOOLEAN_TO_INT(ctx->Light.Light[7].Enabled);
-+ break;
-+ case GL_LIGHTING:
-+ params[0] = BOOLEAN_TO_INT(ctx->Light.Enabled);
-+ break;
-+ case GL_LIGHT_MODEL_AMBIENT:
-+ params[0] = FLOAT_TO_INT(ctx->Light.Model.Ambient[0]);
-+ params[1] = FLOAT_TO_INT(ctx->Light.Model.Ambient[1]);
-+ params[2] = FLOAT_TO_INT(ctx->Light.Model.Ambient[2]);
-+ params[3] = FLOAT_TO_INT(ctx->Light.Model.Ambient[3]);
-+ break;
-+ case GL_LIGHT_MODEL_COLOR_CONTROL:
-+ params[0] = ENUM_TO_INT(ctx->Light.Model.ColorControl);
-+ break;
-+ case GL_LIGHT_MODEL_LOCAL_VIEWER:
-+ params[0] = BOOLEAN_TO_INT(ctx->Light.Model.LocalViewer);
-+ break;
-+ case GL_LIGHT_MODEL_TWO_SIDE:
-+ params[0] = BOOLEAN_TO_INT(ctx->Light.Model.TwoSide);
-+ break;
-+ case GL_LINE_SMOOTH:
-+ params[0] = BOOLEAN_TO_INT(ctx->Line.SmoothFlag);
-+ break;
-+ case GL_LINE_SMOOTH_HINT:
-+ params[0] = ENUM_TO_INT(ctx->Hint.LineSmooth);
-+ break;
-+ case GL_LINE_STIPPLE:
-+ params[0] = BOOLEAN_TO_INT(ctx->Line.StippleFlag);
-+ break;
-+ case GL_LINE_STIPPLE_PATTERN:
-+ params[0] = ctx->Line.StipplePattern;
-+ break;
-+ case GL_LINE_STIPPLE_REPEAT:
-+ params[0] = ctx->Line.StippleFactor;
-+ break;
-+ case GL_LINE_WIDTH:
-+ params[0] = IROUND(ctx->Line.Width);
-+ break;
-+ case GL_LINE_WIDTH_GRANULARITY:
-+ params[0] = IROUND(ctx->Const.LineWidthGranularity);
-+ break;
-+ case GL_LINE_WIDTH_RANGE:
-+ params[0] = IROUND(ctx->Const.MinLineWidthAA);
-+ params[1] = IROUND(ctx->Const.MaxLineWidthAA);
-+ break;
-+ case GL_ALIASED_LINE_WIDTH_RANGE:
-+ params[0] = IROUND(ctx->Const.MinLineWidth);
-+ params[1] = IROUND(ctx->Const.MaxLineWidth);
-+ break;
-+ case GL_LIST_BASE:
-+ params[0] = ctx->List.ListBase;
-+ break;
-+ case GL_LIST_INDEX:
-+ params[0] = ctx->ListState.CurrentListNum;
-+ break;
-+ case GL_LIST_MODE:
-+ {
-+ GLenum mode;
-+ if (!ctx->CompileFlag)
-+ mode = 0;
-+ else if (ctx->ExecuteFlag)
-+ mode = GL_COMPILE_AND_EXECUTE;
-+ else
-+ mode = GL_COMPILE;
-+ params[0] = ENUM_TO_INT(mode);
-+ }
-+ break;
-+ case GL_INDEX_LOGIC_OP:
-+ params[0] = BOOLEAN_TO_INT(ctx->Color.IndexLogicOpEnabled);
-+ break;
-+ case GL_COLOR_LOGIC_OP:
-+ params[0] = BOOLEAN_TO_INT(ctx->Color.ColorLogicOpEnabled);
-+ break;
-+ case GL_LOGIC_OP_MODE:
-+ params[0] = ENUM_TO_INT(ctx->Color.LogicOp);
-+ break;
-+ case GL_MAP1_COLOR_4:
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Color4);
-+ break;
-+ case GL_MAP1_GRID_DOMAIN:
-+ params[0] = IROUND(ctx->Eval.MapGrid1u1);
-+ params[1] = IROUND(ctx->Eval.MapGrid1u2);
-+ break;
-+ case GL_MAP1_GRID_SEGMENTS:
-+ params[0] = ctx->Eval.MapGrid1un;
-+ break;
-+ case GL_MAP1_INDEX:
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Index);
-+ break;
-+ case GL_MAP1_NORMAL:
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Normal);
-+ break;
-+ case GL_MAP1_TEXTURE_COORD_1:
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord1);
-+ break;
-+ case GL_MAP1_TEXTURE_COORD_2:
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord2);
-+ break;
-+ case GL_MAP1_TEXTURE_COORD_3:
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord3);
-+ break;
-+ case GL_MAP1_TEXTURE_COORD_4:
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord4);
-+ break;
-+ case GL_MAP1_VERTEX_3:
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Vertex3);
-+ break;
-+ case GL_MAP1_VERTEX_4:
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Vertex4);
-+ break;
-+ case GL_MAP2_COLOR_4:
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Color4);
-+ break;
-+ case GL_MAP2_GRID_DOMAIN:
-+ params[0] = IROUND(ctx->Eval.MapGrid2u1);
-+ params[1] = IROUND(ctx->Eval.MapGrid2u2);
-+ params[2] = IROUND(ctx->Eval.MapGrid2v1);
-+ params[3] = IROUND(ctx->Eval.MapGrid2v2);
-+ break;
-+ case GL_MAP2_GRID_SEGMENTS:
-+ params[0] = ctx->Eval.MapGrid2un;
-+ params[1] = ctx->Eval.MapGrid2vn;
-+ break;
-+ case GL_MAP2_INDEX:
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Index);
-+ break;
-+ case GL_MAP2_NORMAL:
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Normal);
-+ break;
-+ case GL_MAP2_TEXTURE_COORD_1:
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord1);
-+ break;
-+ case GL_MAP2_TEXTURE_COORD_2:
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord2);
-+ break;
-+ case GL_MAP2_TEXTURE_COORD_3:
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord3);
-+ break;
-+ case GL_MAP2_TEXTURE_COORD_4:
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord4);
-+ break;
-+ case GL_MAP2_VERTEX_3:
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Vertex3);
-+ break;
-+ case GL_MAP2_VERTEX_4:
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Vertex4);
-+ break;
-+ case GL_MAP_COLOR:
-+ params[0] = BOOLEAN_TO_INT(ctx->Pixel.MapColorFlag);
-+ break;
-+ case GL_MAP_STENCIL:
-+ params[0] = BOOLEAN_TO_INT(ctx->Pixel.MapStencilFlag);
-+ break;
-+ case GL_MATRIX_MODE:
-+ params[0] = ENUM_TO_INT(ctx->Transform.MatrixMode);
-+ break;
-+ case GL_MAX_ATTRIB_STACK_DEPTH:
-+ params[0] = MAX_ATTRIB_STACK_DEPTH;
-+ break;
-+ case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
-+ params[0] = MAX_CLIENT_ATTRIB_STACK_DEPTH;
-+ break;
-+ case GL_MAX_CLIP_PLANES:
-+ params[0] = ctx->Const.MaxClipPlanes;
-+ break;
-+ case GL_MAX_ELEMENTS_VERTICES:
-+ params[0] = ctx->Const.MaxArrayLockSize;
-+ break;
-+ case GL_MAX_ELEMENTS_INDICES:
-+ params[0] = ctx->Const.MaxArrayLockSize;
-+ break;
-+ case GL_MAX_EVAL_ORDER:
-+ params[0] = MAX_EVAL_ORDER;
-+ break;
-+ case GL_MAX_LIGHTS:
-+ params[0] = ctx->Const.MaxLights;
-+ break;
-+ case GL_MAX_LIST_NESTING:
-+ params[0] = MAX_LIST_NESTING;
-+ break;
-+ case GL_MAX_MODELVIEW_STACK_DEPTH:
-+ params[0] = MAX_MODELVIEW_STACK_DEPTH;
-+ break;
-+ case GL_MAX_NAME_STACK_DEPTH:
-+ params[0] = MAX_NAME_STACK_DEPTH;
-+ break;
-+ case GL_MAX_PIXEL_MAP_TABLE:
-+ params[0] = MAX_PIXEL_MAP_TABLE;
-+ break;
-+ case GL_MAX_PROJECTION_STACK_DEPTH:
-+ params[0] = MAX_PROJECTION_STACK_DEPTH;
-+ break;
-+ case GL_MAX_TEXTURE_SIZE:
-+ params[0] = 1 << (ctx->Const.MaxTextureLevels - 1);
-+ break;
-+ case GL_MAX_3D_TEXTURE_SIZE:
-+ params[0] = 1 << (ctx->Const.Max3DTextureLevels - 1);
-+ break;
-+ case GL_MAX_TEXTURE_STACK_DEPTH:
-+ params[0] = MAX_TEXTURE_STACK_DEPTH;
-+ break;
-+ case GL_MAX_VIEWPORT_DIMS:
-+ params[0] = ctx->Const.MaxViewportWidth;
-+ params[1] = ctx->Const.MaxViewportHeight;
-+ break;
-+ case GL_MODELVIEW_MATRIX:
-+ {
-+ const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
-+ params[0] = IROUND(matrix[0]);
-+ params[1] = IROUND(matrix[1]);
-+ params[2] = IROUND(matrix[2]);
-+ params[3] = IROUND(matrix[3]);
-+ params[4] = IROUND(matrix[4]);
-+ params[5] = IROUND(matrix[5]);
-+ params[6] = IROUND(matrix[6]);
-+ params[7] = IROUND(matrix[7]);
-+ params[8] = IROUND(matrix[8]);
-+ params[9] = IROUND(matrix[9]);
-+ params[10] = IROUND(matrix[10]);
-+ params[11] = IROUND(matrix[11]);
-+ params[12] = IROUND(matrix[12]);
-+ params[13] = IROUND(matrix[13]);
-+ params[14] = IROUND(matrix[14]);
-+ params[15] = IROUND(matrix[15]);
-+ }
-+ break;
-+ case GL_MODELVIEW_STACK_DEPTH:
-+ params[0] = ctx->ModelviewMatrixStack.Depth + 1;
-+ break;
-+ case GL_NAME_STACK_DEPTH:
-+ params[0] = ctx->Select.NameStackDepth;
-+ break;
-+ case GL_NORMALIZE:
-+ params[0] = BOOLEAN_TO_INT(ctx->Transform.Normalize);
-+ break;
-+ case GL_PACK_ALIGNMENT:
-+ params[0] = ctx->Pack.Alignment;
-+ break;
-+ case GL_PACK_LSB_FIRST:
-+ params[0] = BOOLEAN_TO_INT(ctx->Pack.LsbFirst);
-+ break;
-+ case GL_PACK_ROW_LENGTH:
-+ params[0] = ctx->Pack.RowLength;
-+ break;
-+ case GL_PACK_SKIP_PIXELS:
-+ params[0] = ctx->Pack.SkipPixels;
-+ break;
-+ case GL_PACK_SKIP_ROWS:
-+ params[0] = ctx->Pack.SkipRows;
-+ break;
-+ case GL_PACK_SWAP_BYTES:
-+ params[0] = BOOLEAN_TO_INT(ctx->Pack.SwapBytes);
-+ break;
-+ case GL_PACK_SKIP_IMAGES_EXT:
-+ params[0] = ctx->Pack.SkipImages;
-+ break;
-+ case GL_PACK_IMAGE_HEIGHT_EXT:
-+ params[0] = ctx->Pack.ImageHeight;
-+ break;
-+ case GL_PACK_INVERT_MESA:
-+ params[0] = BOOLEAN_TO_INT(ctx->Pack.Invert);
-+ break;
-+ case GL_PERSPECTIVE_CORRECTION_HINT:
-+ params[0] = ENUM_TO_INT(ctx->Hint.PerspectiveCorrection);
-+ break;
-+ case GL_PIXEL_MAP_A_TO_A_SIZE:
-+ params[0] = ctx->Pixel.MapAtoAsize;
-+ break;
-+ case GL_PIXEL_MAP_B_TO_B_SIZE:
-+ params[0] = ctx->Pixel.MapBtoBsize;
-+ break;
-+ case GL_PIXEL_MAP_G_TO_G_SIZE:
-+ params[0] = ctx->Pixel.MapGtoGsize;
-+ break;
-+ case GL_PIXEL_MAP_I_TO_A_SIZE:
-+ params[0] = ctx->Pixel.MapItoAsize;
-+ break;
-+ case GL_PIXEL_MAP_I_TO_B_SIZE:
-+ params[0] = ctx->Pixel.MapItoBsize;
-+ break;
-+ case GL_PIXEL_MAP_I_TO_G_SIZE:
-+ params[0] = ctx->Pixel.MapItoGsize;
-+ break;
-+ case GL_PIXEL_MAP_I_TO_I_SIZE:
-+ params[0] = ctx->Pixel.MapItoIsize;
-+ break;
-+ case GL_PIXEL_MAP_I_TO_R_SIZE:
-+ params[0] = ctx->Pixel.MapItoRsize;
-+ break;
-+ case GL_PIXEL_MAP_R_TO_R_SIZE:
-+ params[0] = ctx->Pixel.MapRtoRsize;
-+ break;
-+ case GL_PIXEL_MAP_S_TO_S_SIZE:
-+ params[0] = ctx->Pixel.MapStoSsize;
-+ break;
-+ case GL_POINT_SIZE:
-+ params[0] = IROUND(ctx->Point.Size);
-+ break;
-+ case GL_POINT_SIZE_GRANULARITY:
-+ params[0] = IROUND(ctx->Const.PointSizeGranularity);
-+ break;
-+ case GL_POINT_SIZE_RANGE:
-+ params[0] = IROUND(ctx->Const.MinPointSizeAA);
-+ params[1] = IROUND(ctx->Const.MaxPointSizeAA);
-+ break;
-+ case GL_ALIASED_POINT_SIZE_RANGE:
-+ params[0] = IROUND(ctx->Const.MinPointSize);
-+ params[1] = IROUND(ctx->Const.MaxPointSize);
-+ break;
-+ case GL_POINT_SMOOTH:
-+ params[0] = BOOLEAN_TO_INT(ctx->Point.SmoothFlag);
-+ break;
-+ case GL_POINT_SMOOTH_HINT:
-+ params[0] = ENUM_TO_INT(ctx->Hint.PointSmooth);
-+ break;
-+ case GL_POINT_SIZE_MIN_EXT:
-+ params[0] = IROUND(ctx->Point.MinSize);
-+ break;
-+ case GL_POINT_SIZE_MAX_EXT:
-+ params[0] = IROUND(ctx->Point.MaxSize);
-+ break;
-+ case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
-+ params[0] = IROUND(ctx->Point.Threshold);
-+ break;
-+ case GL_DISTANCE_ATTENUATION_EXT:
-+ params[0] = IROUND(ctx->Point.Params[0]);
-+ params[1] = IROUND(ctx->Point.Params[1]);
-+ params[2] = IROUND(ctx->Point.Params[2]);
-+ break;
-+ case GL_POLYGON_MODE:
-+ params[0] = ENUM_TO_INT(ctx->Polygon.FrontMode);
-+ params[1] = ENUM_TO_INT(ctx->Polygon.BackMode);
-+ break;
-+ case GL_POLYGON_OFFSET_BIAS_EXT:
-+ params[0] = IROUND(ctx->Polygon.OffsetUnits);
-+ break;
-+ case GL_POLYGON_OFFSET_FACTOR:
-+ params[0] = IROUND(ctx->Polygon.OffsetFactor );
-+ break;
-+ case GL_POLYGON_OFFSET_UNITS:
-+ params[0] = IROUND(ctx->Polygon.OffsetUnits );
-+ break;
-+ case GL_POLYGON_SMOOTH:
-+ params[0] = BOOLEAN_TO_INT(ctx->Polygon.SmoothFlag);
-+ break;
-+ case GL_POLYGON_SMOOTH_HINT:
-+ params[0] = ENUM_TO_INT(ctx->Hint.PolygonSmooth);
-+ break;
-+ case GL_POLYGON_STIPPLE:
-+ params[0] = BOOLEAN_TO_INT(ctx->Polygon.StippleFlag);
-+ break;
-+ case GL_PROJECTION_MATRIX:
-+ {
-+ const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
-+ params[0] = IROUND(matrix[0]);
-+ params[1] = IROUND(matrix[1]);
-+ params[2] = IROUND(matrix[2]);
-+ params[3] = IROUND(matrix[3]);
-+ params[4] = IROUND(matrix[4]);
-+ params[5] = IROUND(matrix[5]);
-+ params[6] = IROUND(matrix[6]);
-+ params[7] = IROUND(matrix[7]);
-+ params[8] = IROUND(matrix[8]);
-+ params[9] = IROUND(matrix[9]);
-+ params[10] = IROUND(matrix[10]);
-+ params[11] = IROUND(matrix[11]);
-+ params[12] = IROUND(matrix[12]);
-+ params[13] = IROUND(matrix[13]);
-+ params[14] = IROUND(matrix[14]);
-+ params[15] = IROUND(matrix[15]);
-+ }
-+ break;
-+ case GL_PROJECTION_STACK_DEPTH:
-+ params[0] = ctx->ProjectionMatrixStack.Depth + 1;
-+ break;
-+ case GL_READ_BUFFER:
-+ params[0] = ENUM_TO_INT(ctx->ReadBuffer->ColorReadBuffer);
-+ break;
-+ case GL_RED_BIAS:
-+ params[0] = IROUND(ctx->Pixel.RedBias);
-+ break;
-+ case GL_RED_BITS:
-+ params[0] = ctx->DrawBuffer->Visual.redBits ;
-+ break;
-+ case GL_RED_SCALE:
-+ params[0] = IROUND(ctx->Pixel.RedScale);
-+ break;
-+ case GL_RENDER_MODE:
-+ params[0] = ENUM_TO_INT(ctx->RenderMode);
-+ break;
-+ case GL_RESCALE_NORMAL:
-+ params[0] = BOOLEAN_TO_INT(ctx->Transform.RescaleNormals);
-+ break;
-+ case GL_RGBA_MODE:
-+ params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.rgbMode);
-+ break;
-+ case GL_SCISSOR_BOX:
-+ params[0] = ctx->Scissor.X;
-+ params[1] = ctx->Scissor.Y;
-+ params[2] = ctx->Scissor.Width;
-+ params[3] = ctx->Scissor.Height;
-+ break;
-+ case GL_SCISSOR_TEST:
-+ params[0] = BOOLEAN_TO_INT(ctx->Scissor.Enabled);
-+ break;
-+ case GL_SELECTION_BUFFER_SIZE:
-+ params[0] = ctx->Select.BufferSize;
-+ break;
-+ case GL_SHADE_MODEL:
-+ params[0] = ENUM_TO_INT(ctx->Light.ShadeModel);
-+ break;
-+ case GL_SHARED_TEXTURE_PALETTE_EXT:
-+ params[0] = BOOLEAN_TO_INT(ctx->Texture.SharedPalette);
-+ break;
-+ case GL_STENCIL_BITS:
-+ params[0] = ctx->DrawBuffer->Visual.stencilBits;
-+ break;
-+ case GL_STENCIL_CLEAR_VALUE:
-+ params[0] = ctx->Stencil.Clear;
-+ break;
-+ case GL_STENCIL_FAIL:
-+ params[0] = ENUM_TO_INT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
-+ break;
-+ case GL_STENCIL_FUNC:
-+ params[0] = ENUM_TO_INT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
-+ break;
-+ case GL_STENCIL_PASS_DEPTH_FAIL:
-+ params[0] = ENUM_TO_INT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
-+ break;
-+ case GL_STENCIL_PASS_DEPTH_PASS:
-+ params[0] = ENUM_TO_INT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
-+ break;
-+ case GL_STENCIL_REF:
-+ params[0] = ctx->Stencil.Ref[ctx->Stencil.ActiveFace];
-+ break;
-+ case GL_STENCIL_TEST:
-+ params[0] = BOOLEAN_TO_INT(ctx->Stencil.Enabled);
-+ break;
-+ case GL_STENCIL_VALUE_MASK:
-+ params[0] = ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace];
-+ break;
-+ case GL_STENCIL_WRITEMASK:
-+ params[0] = ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace];
-+ break;
-+ case GL_STEREO:
-+ params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.stereoMode);
-+ break;
-+ case GL_SUBPIXEL_BITS:
-+ params[0] = ctx->Const.SubPixelBits;
-+ break;
-+ case GL_TEXTURE_1D:
-+ params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D));
-+ break;
-+ case GL_TEXTURE_2D:
-+ params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D));
-+ break;
-+ case GL_TEXTURE_3D:
-+ params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_3D));
-+ break;
-+ case GL_TEXTURE_BINDING_1D:
-+ params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current1D->Name;
-+ break;
-+ case GL_TEXTURE_BINDING_2D:
-+ params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current2D->Name;
-+ break;
-+ case GL_TEXTURE_BINDING_3D:
-+ params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current3D->Name;
-+ break;
-+ case GL_TEXTURE_ENV_COLOR:
-+ {
-+ const GLfloat *color = ctx->Texture.Unit[ctx->Texture.CurrentUnit].EnvColor;
-+ params[0] = FLOAT_TO_INT(color[0]);
-+ params[1] = FLOAT_TO_INT(color[1]);
-+ params[2] = FLOAT_TO_INT(color[2]);
-+ params[3] = FLOAT_TO_INT(color[3]);
-+ }
-+ break;
-+ case GL_TEXTURE_ENV_MODE:
-+ params[0] = ENUM_TO_INT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].EnvMode);
-+ break;
-+ case GL_TEXTURE_GEN_S:
-+ params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0));
-+ break;
-+ case GL_TEXTURE_GEN_T:
-+ params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0));
-+ break;
-+ case GL_TEXTURE_GEN_R:
-+ params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0));
-+ break;
-+ case GL_TEXTURE_GEN_Q:
-+ params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0));
-+ break;
-+ case GL_TEXTURE_MATRIX:
-+ {
-+ const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
-+ params[0] = IROUND(matrix[0]);
-+ params[1] = IROUND(matrix[1]);
-+ params[2] = IROUND(matrix[2]);
-+ params[3] = IROUND(matrix[3]);
-+ params[4] = IROUND(matrix[4]);
-+ params[5] = IROUND(matrix[5]);
-+ params[6] = IROUND(matrix[6]);
-+ params[7] = IROUND(matrix[7]);
-+ params[8] = IROUND(matrix[8]);
-+ params[9] = IROUND(matrix[9]);
-+ params[10] = IROUND(matrix[10]);
-+ params[11] = IROUND(matrix[11]);
-+ params[12] = IROUND(matrix[12]);
-+ params[13] = IROUND(matrix[13]);
-+ params[14] = IROUND(matrix[14]);
-+ params[15] = IROUND(matrix[15]);
-+ }
-+ break;
-+ case GL_TEXTURE_STACK_DEPTH:
-+ params[0] = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1;
-+ break;
-+ case GL_UNPACK_ALIGNMENT:
-+ params[0] = ctx->Unpack.Alignment;
-+ break;
-+ case GL_UNPACK_LSB_FIRST:
-+ params[0] = BOOLEAN_TO_INT(ctx->Unpack.LsbFirst);
-+ break;
-+ case GL_UNPACK_ROW_LENGTH:
-+ params[0] = ctx->Unpack.RowLength;
-+ break;
-+ case GL_UNPACK_SKIP_PIXELS:
-+ params[0] = ctx->Unpack.SkipPixels;
-+ break;
-+ case GL_UNPACK_SKIP_ROWS:
-+ params[0] = ctx->Unpack.SkipRows;
-+ break;
-+ case GL_UNPACK_SWAP_BYTES:
-+ params[0] = BOOLEAN_TO_INT(ctx->Unpack.SwapBytes);
-+ break;
-+ case GL_UNPACK_SKIP_IMAGES_EXT:
-+ params[0] = ctx->Unpack.SkipImages;
-+ break;
-+ case GL_UNPACK_IMAGE_HEIGHT_EXT:
-+ params[0] = ctx->Unpack.ImageHeight;
-+ break;
-+ case GL_UNPACK_CLIENT_STORAGE_APPLE:
-+ params[0] = BOOLEAN_TO_INT(ctx->Unpack.ClientStorage);
-+ break;
-+ case GL_VIEWPORT:
-+ params[0] = ctx->Viewport.X;
-+ params[1] = ctx->Viewport.Y;
-+ params[2] = ctx->Viewport.Width;
-+ params[3] = ctx->Viewport.Height;
-+ break;
-+ case GL_ZOOM_X:
-+ params[0] = IROUND(ctx->Pixel.ZoomX);
-+ break;
-+ case GL_ZOOM_Y:
-+ params[0] = IROUND(ctx->Pixel.ZoomY);
-+ break;
-+ case GL_VERTEX_ARRAY:
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Vertex.Enabled);
-+ break;
-+ case GL_VERTEX_ARRAY_SIZE:
-+ params[0] = ctx->Array.ArrayObj->Vertex.Size;
-+ break;
-+ case GL_VERTEX_ARRAY_TYPE:
-+ params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Vertex.Type);
-+ break;
-+ case GL_VERTEX_ARRAY_STRIDE:
-+ params[0] = ctx->Array.ArrayObj->Vertex.Stride;
-+ break;
-+ case GL_VERTEX_ARRAY_COUNT_EXT:
-+ params[0] = 0;
-+ break;
-+ case GL_NORMAL_ARRAY:
-+ params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Normal.Enabled);
-+ break;
-+ case GL_NORMAL_ARRAY_TYPE:
-+ params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Normal.Type);
-+ break;
-+ case GL_NORMAL_ARRAY_STRIDE:
-+ params[0] = ctx->Array.ArrayObj->Normal.Stride;
-+ break;
-+ case GL_NORMAL_ARRAY_COUNT_EXT:
-+ params[0] = 0;
-+ break;
-+ case GL_COLOR_ARRAY:
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Color.Enabled);
-+ break;
-+ case GL_COLOR_ARRAY_SIZE:
-+ params[0] = ctx->Array.ArrayObj->Color.Size;
-+ break;
-+ case GL_COLOR_ARRAY_TYPE:
-+ params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Color.Type);
-+ break;
-+ case GL_COLOR_ARRAY_STRIDE:
-+ params[0] = ctx->Array.ArrayObj->Color.Stride;
-+ break;
-+ case GL_COLOR_ARRAY_COUNT_EXT:
-+ params[0] = 0;
-+ break;
-+ case GL_INDEX_ARRAY:
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Index.Enabled);
-+ break;
-+ case GL_INDEX_ARRAY_TYPE:
-+ params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Index.Type);
-+ break;
-+ case GL_INDEX_ARRAY_STRIDE:
-+ params[0] = ctx->Array.ArrayObj->Index.Stride;
-+ break;
-+ case GL_INDEX_ARRAY_COUNT_EXT:
-+ params[0] = 0;
-+ break;
-+ case GL_TEXTURE_COORD_ARRAY:
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled);
-+ break;
-+ case GL_TEXTURE_COORD_ARRAY_SIZE:
-+ params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size;
-+ break;
-+ case GL_TEXTURE_COORD_ARRAY_TYPE:
-+ params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
-+ break;
-+ case GL_TEXTURE_COORD_ARRAY_STRIDE:
-+ params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride;
-+ break;
-+ case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
-+ params[0] = 0;
-+ break;
-+ case GL_EDGE_FLAG_ARRAY:
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->EdgeFlag.Enabled);
-+ break;
-+ case GL_EDGE_FLAG_ARRAY_STRIDE:
-+ params[0] = ctx->Array.ArrayObj->EdgeFlag.Stride;
-+ break;
-+ case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
-+ params[0] = 0;
-+ break;
-+ case GL_MAX_TEXTURE_UNITS_ARB:
-+ CHECK_EXT1(ARB_multitexture, "GetIntegerv");
-+ params[0] = ctx->Const.MaxTextureUnits;
-+ break;
-+ case GL_ACTIVE_TEXTURE_ARB:
-+ CHECK_EXT1(ARB_multitexture, "GetIntegerv");
-+ params[0] = GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit;
-+ break;
-+ case GL_CLIENT_ACTIVE_TEXTURE_ARB:
-+ CHECK_EXT1(ARB_multitexture, "GetIntegerv");
-+ params[0] = GL_TEXTURE0_ARB + ctx->Array.ActiveTexture;
-+ break;
-+ case GL_TEXTURE_CUBE_MAP_ARB:
-+ CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB));
-+ break;
-+ case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
-+ CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv");
-+ params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentCubeMap->Name;
-+ break;
-+ case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
-+ CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv");
-+ params[0] = (1 << (ctx->Const.MaxCubeTextureLevels - 1));
-+ break;
-+ case GL_TEXTURE_COMPRESSION_HINT_ARB:
-+ CHECK_EXT1(ARB_texture_compression, "GetIntegerv");
-+ params[0] = ctx->Hint.TextureCompression;
-+ break;
-+ case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
-+ CHECK_EXT1(ARB_texture_compression, "GetIntegerv");
-+ params[0] = _mesa_get_compressed_formats(ctx, NULL, GL_FALSE);
-+ break;
-+ case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
-+ CHECK_EXT1(ARB_texture_compression, "GetIntegerv");
-+ {
-+ GLint formats[100];
-+ GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
-+ ASSERT(n <= 100);
-+ for (i = 0; i < n; i++)
-+ params[i] = ENUM_TO_INT(formats[i]);
-+ }
-+ break;
-+ case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
-+ CHECK_EXT1(EXT_compiled_vertex_array, "GetIntegerv");
-+ params[0] = ctx->Array.LockFirst;
-+ break;
-+ case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
-+ CHECK_EXT1(EXT_compiled_vertex_array, "GetIntegerv");
-+ params[0] = ctx->Array.LockCount;
-+ break;
-+ case GL_TRANSPOSE_COLOR_MATRIX_ARB:
-+ {
-+ const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
-+ params[0] = IROUND(matrix[0]);
-+ params[1] = IROUND(matrix[4]);
-+ params[2] = IROUND(matrix[8]);
-+ params[3] = IROUND(matrix[12]);
-+ params[4] = IROUND(matrix[1]);
-+ params[5] = IROUND(matrix[5]);
-+ params[6] = IROUND(matrix[9]);
-+ params[7] = IROUND(matrix[13]);
-+ params[8] = IROUND(matrix[2]);
-+ params[9] = IROUND(matrix[6]);
-+ params[10] = IROUND(matrix[10]);
-+ params[11] = IROUND(matrix[14]);
-+ params[12] = IROUND(matrix[3]);
-+ params[13] = IROUND(matrix[7]);
-+ params[14] = IROUND(matrix[11]);
-+ params[15] = IROUND(matrix[15]);
-+ }
-+ break;
-+ case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
-+ {
-+ const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
-+ params[0] = IROUND(matrix[0]);
-+ params[1] = IROUND(matrix[4]);
-+ params[2] = IROUND(matrix[8]);
-+ params[3] = IROUND(matrix[12]);
-+ params[4] = IROUND(matrix[1]);
-+ params[5] = IROUND(matrix[5]);
-+ params[6] = IROUND(matrix[9]);
-+ params[7] = IROUND(matrix[13]);
-+ params[8] = IROUND(matrix[2]);
-+ params[9] = IROUND(matrix[6]);
-+ params[10] = IROUND(matrix[10]);
-+ params[11] = IROUND(matrix[14]);
-+ params[12] = IROUND(matrix[3]);
-+ params[13] = IROUND(matrix[7]);
-+ params[14] = IROUND(matrix[11]);
-+ params[15] = IROUND(matrix[15]);
-+ }
-+ break;
-+ case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
-+ {
-+ const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
-+ params[0] = IROUND(matrix[0]);
-+ params[1] = IROUND(matrix[4]);
-+ params[2] = IROUND(matrix[8]);
-+ params[3] = IROUND(matrix[12]);
-+ params[4] = IROUND(matrix[1]);
-+ params[5] = IROUND(matrix[5]);
-+ params[6] = IROUND(matrix[9]);
-+ params[7] = IROUND(matrix[13]);
-+ params[8] = IROUND(matrix[2]);
-+ params[9] = IROUND(matrix[6]);
-+ params[10] = IROUND(matrix[10]);
-+ params[11] = IROUND(matrix[14]);
-+ params[12] = IROUND(matrix[3]);
-+ params[13] = IROUND(matrix[7]);
-+ params[14] = IROUND(matrix[11]);
-+ params[15] = IROUND(matrix[15]);
-+ }
-+ break;
-+ case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
-+ {
-+ const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
-+ params[0] = IROUND(matrix[0]);
-+ params[1] = IROUND(matrix[4]);
-+ params[2] = IROUND(matrix[8]);
-+ params[3] = IROUND(matrix[12]);
-+ params[4] = IROUND(matrix[1]);
-+ params[5] = IROUND(matrix[5]);
-+ params[6] = IROUND(matrix[9]);
-+ params[7] = IROUND(matrix[13]);
-+ params[8] = IROUND(matrix[2]);
-+ params[9] = IROUND(matrix[6]);
-+ params[10] = IROUND(matrix[10]);
-+ params[11] = IROUND(matrix[14]);
-+ params[12] = IROUND(matrix[3]);
-+ params[13] = IROUND(matrix[7]);
-+ params[14] = IROUND(matrix[11]);
-+ params[15] = IROUND(matrix[15]);
-+ }
-+ break;
-+ case GL_COLOR_MATRIX_SGI:
-+ {
-+ const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
-+ params[0] = IROUND(matrix[0]);
-+ params[1] = IROUND(matrix[1]);
-+ params[2] = IROUND(matrix[2]);
-+ params[3] = IROUND(matrix[3]);
-+ params[4] = IROUND(matrix[4]);
-+ params[5] = IROUND(matrix[5]);
-+ params[6] = IROUND(matrix[6]);
-+ params[7] = IROUND(matrix[7]);
-+ params[8] = IROUND(matrix[8]);
-+ params[9] = IROUND(matrix[9]);
-+ params[10] = IROUND(matrix[10]);
-+ params[11] = IROUND(matrix[11]);
-+ params[12] = IROUND(matrix[12]);
-+ params[13] = IROUND(matrix[13]);
-+ params[14] = IROUND(matrix[14]);
-+ params[15] = IROUND(matrix[15]);
-+ }
-+ break;
-+ case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
-+ params[0] = ctx->ColorMatrixStack.Depth + 1;
-+ break;
-+ case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
-+ params[0] = MAX_COLOR_STACK_DEPTH;
-+ break;
-+ case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
-+ params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[0]);
-+ break;
-+ case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
-+ params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[1]);
-+ break;
-+ case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
-+ params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[2]);
-+ break;
-+ case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
-+ params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[3]);
-+ break;
-+ case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
-+ params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[0]);
-+ break;
-+ case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
-+ params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[1]);
-+ break;
-+ case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
-+ params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[2]);
-+ break;
-+ case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
-+ params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[3]);
-+ break;
-+ case GL_CONVOLUTION_1D_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution1DEnabled);
-+ break;
-+ case GL_CONVOLUTION_2D_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution2DEnabled);
-+ break;
-+ case GL_SEPARABLE_2D_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Pixel.Separable2DEnabled);
-+ break;
-+ case GL_POST_CONVOLUTION_RED_SCALE_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetIntegerv");
-+ params[0] = IROUND(ctx->Pixel.PostConvolutionScale[0]);
-+ break;
-+ case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetIntegerv");
-+ params[0] = IROUND(ctx->Pixel.PostConvolutionScale[1]);
-+ break;
-+ case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetIntegerv");
-+ params[0] = IROUND(ctx->Pixel.PostConvolutionScale[2]);
-+ break;
-+ case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetIntegerv");
-+ params[0] = IROUND(ctx->Pixel.PostConvolutionScale[3]);
-+ break;
-+ case GL_POST_CONVOLUTION_RED_BIAS_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetIntegerv");
-+ params[0] = IROUND(ctx->Pixel.PostConvolutionBias[0]);
-+ break;
-+ case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetIntegerv");
-+ params[0] = IROUND(ctx->Pixel.PostConvolutionBias[1]);
-+ break;
-+ case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetIntegerv");
-+ params[0] = IROUND(ctx->Pixel.PostConvolutionBias[2]);
-+ break;
-+ case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
-+ CHECK_EXT1(EXT_convolution, "GetIntegerv");
-+ params[0] = IROUND(ctx->Pixel.PostConvolutionBias[3]);
-+ break;
-+ case GL_HISTOGRAM:
-+ CHECK_EXT1(EXT_histogram, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Pixel.HistogramEnabled);
-+ break;
-+ case GL_MINMAX:
-+ CHECK_EXT1(EXT_histogram, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Pixel.MinMaxEnabled);
-+ break;
-+ case GL_COLOR_TABLE_SGI:
-+ CHECK_EXT1(SGI_color_table, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled);
-+ break;
-+ case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
-+ CHECK_EXT1(SGI_color_table, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Pixel.PostConvolutionColorTableEnabled);
-+ break;
-+ case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
-+ CHECK_EXT1(SGI_color_table, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Pixel.PostColorMatrixColorTableEnabled);
-+ break;
-+ case GL_TEXTURE_COLOR_TABLE_SGI:
-+ CHECK_EXT1(SGI_texture_color_table, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
-+ break;
-+ case GL_COLOR_SUM_EXT:
-+ CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Fog.ColorSumEnabled);
-+ break;
-+ case GL_CURRENT_SECONDARY_COLOR_EXT:
-+ CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
-+ {
-+ FLUSH_CURRENT(ctx, 0);
-+ params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
-+ params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
-+ params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
-+ params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]);
-+ }
-+ break;
-+ case GL_SECONDARY_COLOR_ARRAY_EXT:
-+ CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Enabled);
-+ break;
-+ case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
-+ CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
-+ params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Type);
-+ break;
-+ case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
-+ CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
-+ params[0] = ctx->Array.ArrayObj->SecondaryColor.Stride;
-+ break;
-+ case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
-+ CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
-+ params[0] = ctx->Array.ArrayObj->SecondaryColor.Size;
-+ break;
-+ case GL_CURRENT_FOG_COORDINATE_EXT:
-+ CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
-+ {
-+ FLUSH_CURRENT(ctx, 0);
-+ params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
-+ }
-+ break;
-+ case GL_FOG_COORDINATE_ARRAY_EXT:
-+ CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->FogCoord.Enabled);
-+ break;
-+ case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
-+ CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
-+ params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->FogCoord.Type);
-+ break;
-+ case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
-+ CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
-+ params[0] = ctx->Array.ArrayObj->FogCoord.Stride;
-+ break;
-+ case GL_FOG_COORDINATE_SOURCE_EXT:
-+ CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
-+ params[0] = ENUM_TO_INT(ctx->Fog.FogCoordinateSource);
-+ break;
-+ case GL_MAX_TEXTURE_LOD_BIAS_EXT:
-+ CHECK_EXT1(EXT_texture_lod_bias, "GetIntegerv");
-+ params[0] = IROUND(ctx->Const.MaxTextureLodBias);
-+ break;
-+ case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
-+ CHECK_EXT1(EXT_texture_filter_anisotropic, "GetIntegerv");
-+ params[0] = IROUND(ctx->Const.MaxTextureMaxAnisotropy);
-+ break;
-+ case GL_MULTISAMPLE_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Multisample.Enabled);
-+ break;
-+ case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToCoverage);
-+ break;
-+ case GL_SAMPLE_ALPHA_TO_ONE_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToOne);
-+ break;
-+ case GL_SAMPLE_COVERAGE_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverage);
-+ break;
-+ case GL_SAMPLE_COVERAGE_VALUE_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetIntegerv");
-+ params[0] = IROUND(ctx->Multisample.SampleCoverageValue);
-+ break;
-+ case GL_SAMPLE_COVERAGE_INVERT_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverageInvert);
-+ break;
-+ case GL_SAMPLE_BUFFERS_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetIntegerv");
-+ params[0] = ctx->DrawBuffer->Visual.sampleBuffers;
-+ break;
-+ case GL_SAMPLES_ARB:
-+ CHECK_EXT1(ARB_multisample, "GetIntegerv");
-+ params[0] = ctx->DrawBuffer->Visual.samples;
-+ break;
-+ case GL_RASTER_POSITION_UNCLIPPED_IBM:
-+ CHECK_EXT1(IBM_rasterpos_clip, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Transform.RasterPositionUnclipped);
-+ break;
-+ case GL_POINT_SPRITE_NV:
-+ CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Point.PointSprite);
-+ break;
-+ case GL_POINT_SPRITE_R_MODE_NV:
-+ CHECK_EXT1(NV_point_sprite, "GetIntegerv");
-+ params[0] = ENUM_TO_INT(ctx->Point.SpriteRMode);
-+ break;
-+ case GL_POINT_SPRITE_COORD_ORIGIN:
-+ CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetIntegerv");
-+ params[0] = ENUM_TO_INT(ctx->Point.SpriteOrigin);
-+ break;
-+ case GL_GENERATE_MIPMAP_HINT_SGIS:
-+ CHECK_EXT1(SGIS_generate_mipmap, "GetIntegerv");
-+ params[0] = ENUM_TO_INT(ctx->Hint.GenerateMipmap);
-+ break;
-+ case GL_VERTEX_PROGRAM_BINDING_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = (ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY0_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY1_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY2_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY3_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY5_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY6_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY7_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY8_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY9_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY10_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY11_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY12_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY13_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY14_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
-+ break;
-+ case GL_VERTEX_ATTRIB_ARRAY15_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB0_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[0]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB1_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[1]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB2_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[2]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB3_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[3]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB4_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[4]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB5_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[5]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB6_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[6]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB7_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[7]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB8_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[8]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB9_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[9]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB10_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[10]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB11_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[11]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB12_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[12]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB13_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[13]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB14_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[14]);
-+ break;
-+ case GL_MAP1_VERTEX_ATTRIB15_4_NV:
-+ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[15]);
-+ break;
-+ case GL_FRAGMENT_PROGRAM_NV:
-+ CHECK_EXT1(NV_fragment_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled);
-+ break;
-+ case GL_FRAGMENT_PROGRAM_BINDING_NV:
-+ CHECK_EXT1(NV_fragment_program, "GetIntegerv");
-+ params[0] = ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0;
-+ break;
-+ case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
-+ CHECK_EXT1(NV_fragment_program, "GetIntegerv");
-+ params[0] = MAX_NV_FRAGMENT_PROGRAM_PARAMS;
-+ break;
-+ case GL_TEXTURE_RECTANGLE_NV:
-+ CHECK_EXT1(NV_texture_rectangle, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
-+ break;
-+ case GL_TEXTURE_BINDING_RECTANGLE_NV:
-+ CHECK_EXT1(NV_texture_rectangle, "GetIntegerv");
-+ params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentRect->Name;
-+ break;
-+ case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
-+ CHECK_EXT1(NV_texture_rectangle, "GetIntegerv");
-+ params[0] = ctx->Const.MaxTextureRectSize;
-+ break;
-+ case GL_STENCIL_TEST_TWO_SIDE_EXT:
-+ CHECK_EXT1(EXT_stencil_two_side, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Stencil.TestTwoSide);
-+ break;
-+ case GL_ACTIVE_STENCIL_FACE_EXT:
-+ CHECK_EXT1(EXT_stencil_two_side, "GetIntegerv");
-+ params[0] = ENUM_TO_INT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
-+ break;
-+ case GL_MAX_SHININESS_NV:
-+ CHECK_EXT1(NV_light_max_exponent, "GetIntegerv");
-+ params[0] = IROUND(ctx->Const.MaxShininess);
-+ break;
-+ case GL_MAX_SPOT_EXPONENT_NV:
-+ CHECK_EXT1(NV_light_max_exponent, "GetIntegerv");
-+ params[0] = IROUND(ctx->Const.MaxSpotExponent);
-+ break;
-+ case GL_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
-+ params[0] = ctx->Array.ArrayBufferObj->Name;
-+ break;
-+ case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
-+ params[0] = ctx->Array.ArrayObj->Vertex.BufferObj->Name;
-+ break;
-+ case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
-+ params[0] = ctx->Array.ArrayObj->Normal.BufferObj->Name;
-+ break;
-+ case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
-+ params[0] = ctx->Array.ArrayObj->Color.BufferObj->Name;
-+ break;
-+ case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
-+ params[0] = ctx->Array.ArrayObj->Index.BufferObj->Name;
-+ break;
-+ case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
-+ params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name;
-+ break;
-+ case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
-+ params[0] = ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name;
-+ break;
-+ case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
-+ params[0] = ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name;
-+ break;
-+ case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
-+ params[0] = ctx->Array.ArrayObj->FogCoord.BufferObj->Name;
-+ break;
-+ case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
-+ CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
-+ params[0] = ctx->Array.ElementArrayBufferObj->Name;
-+ break;
-+ case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
-+ CHECK_EXT1(EXT_pixel_buffer_object, "GetIntegerv");
-+ params[0] = ctx->Pack.BufferObj->Name;
-+ break;
-+ case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
-+ CHECK_EXT1(EXT_pixel_buffer_object, "GetIntegerv");
-+ params[0] = ctx->Unpack.BufferObj->Name;
-+ break;
-+ case GL_VERTEX_PROGRAM_ARB:
-+ CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.Enabled);
-+ break;
-+ case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
-+ CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.PointSizeEnabled);
-+ break;
-+ case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
-+ CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.TwoSideEnabled);
-+ break;
-+ case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
-+ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv");
-+ params[0] = ctx->Const.MaxProgramMatrixStackDepth;
-+ break;
-+ case GL_MAX_PROGRAM_MATRICES_ARB:
-+ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv");
-+ params[0] = ctx->Const.MaxProgramMatrices;
-+ break;
-+ case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
-+ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->CurrentStack->Depth + 1);
-+ break;
-+ case GL_CURRENT_MATRIX_ARB:
-+ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetIntegerv");
-+ {
-+ const GLfloat *matrix = ctx->CurrentStack->Top->m;
-+ params[0] = IROUND(matrix[0]);
-+ params[1] = IROUND(matrix[1]);
-+ params[2] = IROUND(matrix[2]);
-+ params[3] = IROUND(matrix[3]);
-+ params[4] = IROUND(matrix[4]);
-+ params[5] = IROUND(matrix[5]);
-+ params[6] = IROUND(matrix[6]);
-+ params[7] = IROUND(matrix[7]);
-+ params[8] = IROUND(matrix[8]);
-+ params[9] = IROUND(matrix[9]);
-+ params[10] = IROUND(matrix[10]);
-+ params[11] = IROUND(matrix[11]);
-+ params[12] = IROUND(matrix[12]);
-+ params[13] = IROUND(matrix[13]);
-+ params[14] = IROUND(matrix[14]);
-+ params[15] = IROUND(matrix[15]);
-+ }
-+ break;
-+ case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
-+ CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetIntegerv");
-+ {
-+ const GLfloat *matrix = ctx->CurrentStack->Top->m;
-+ params[0] = IROUND(matrix[0]);
-+ params[1] = IROUND(matrix[4]);
-+ params[2] = IROUND(matrix[8]);
-+ params[3] = IROUND(matrix[12]);
-+ params[4] = IROUND(matrix[1]);
-+ params[5] = IROUND(matrix[5]);
-+ params[6] = IROUND(matrix[9]);
-+ params[7] = IROUND(matrix[13]);
-+ params[8] = IROUND(matrix[2]);
-+ params[9] = IROUND(matrix[6]);
-+ params[10] = IROUND(matrix[10]);
-+ params[11] = IROUND(matrix[14]);
-+ params[12] = IROUND(matrix[3]);
-+ params[13] = IROUND(matrix[7]);
-+ params[14] = IROUND(matrix[11]);
-+ params[15] = IROUND(matrix[15]);
-+ }
-+ break;
-+ case GL_MAX_VERTEX_ATTRIBS_ARB:
-+ CHECK_EXT1(ARB_vertex_program, "GetIntegerv");
-+ params[0] = ctx->Const.VertexProgram.MaxAttribs;
-+ break;
-+ case GL_PROGRAM_ERROR_POSITION_ARB:
-+ CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetIntegerv");
-+ params[0] = ctx->Program.ErrorPos;
-+ break;
-+ case GL_FRAGMENT_PROGRAM_ARB:
-+ CHECK_EXT1(ARB_fragment_program, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled);
-+ break;
-+ case GL_MAX_TEXTURE_COORDS_ARB:
-+ CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetIntegerv");
-+ params[0] = ctx->Const.MaxTextureCoordUnits;
-+ break;
-+ case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
-+ CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetIntegerv");
-+ params[0] = ctx->Const.MaxTextureImageUnits;
-+ break;
-+ case GL_DEPTH_BOUNDS_TEST_EXT:
-+ CHECK_EXT1(EXT_depth_bounds_test, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->Depth.BoundsTest);
-+ break;
-+ case GL_DEPTH_BOUNDS_EXT:
-+ CHECK_EXT1(EXT_depth_bounds_test, "GetIntegerv");
-+ params[0] = IROUND(ctx->Depth.BoundsMin);
-+ params[1] = IROUND(ctx->Depth.BoundsMax);
-+ break;
-+ case GL_FRAGMENT_PROGRAM_CALLBACK_MESA:
-+ CHECK_EXT1(MESA_program_debug, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.CallbackEnabled);
-+ break;
-+ case GL_VERTEX_PROGRAM_CALLBACK_MESA:
-+ CHECK_EXT1(MESA_program_debug, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.CallbackEnabled);
-+ break;
-+ case GL_FRAGMENT_PROGRAM_POSITION_MESA:
-+ CHECK_EXT1(MESA_program_debug, "GetIntegerv");
-+ params[0] = ctx->FragmentProgram.CurrentPosition;
-+ break;
-+ case GL_VERTEX_PROGRAM_POSITION_MESA:
-+ CHECK_EXT1(MESA_program_debug, "GetIntegerv");
-+ params[0] = ctx->VertexProgram.CurrentPosition;
-+ break;
-+ case GL_MAX_DRAW_BUFFERS_ARB:
-+ CHECK_EXT1(ARB_draw_buffers, "GetIntegerv");
-+ params[0] = ctx->Const.MaxDrawBuffers;
-+ break;
-+ case GL_DRAW_BUFFER0_ARB:
-+ CHECK_EXT1(ARB_draw_buffers, "GetIntegerv");
-+ params[0] = ENUM_TO_INT(ctx->DrawBuffer->ColorDrawBuffer[0]);
-+ break;
-+ case GL_DRAW_BUFFER1_ARB:
-+ CHECK_EXT1(ARB_draw_buffers, "GetIntegerv");
-+ {
-+ GLenum buffer;
-+ if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-+ _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-+ return;
-+ }
-+ buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
-+ params[0] = ENUM_TO_INT(buffer);
-+ }
-+ break;
-+ case GL_DRAW_BUFFER2_ARB:
-+ CHECK_EXT1(ARB_draw_buffers, "GetIntegerv");
-+ {
-+ GLenum buffer;
-+ if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-+ _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-+ return;
-+ }
-+ buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
-+ params[0] = ENUM_TO_INT(buffer);
-+ }
-+ break;
-+ case GL_DRAW_BUFFER3_ARB:
-+ CHECK_EXT1(ARB_draw_buffers, "GetIntegerv");
-+ {
-+ GLenum buffer;
-+ if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-+ _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-+ return;
-+ }
-+ buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
-+ params[0] = ENUM_TO_INT(buffer);
-+ }
-+ break;
-+ case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
-+ CHECK_EXT1(OES_read_format, "GetIntegerv");
-+ params[0] = ctx->Const.ColorReadType;
-+ break;
-+ case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
-+ CHECK_EXT1(OES_read_format, "GetIntegerv");
-+ params[0] = ctx->Const.ColorReadFormat;
-+ break;
-+ case GL_NUM_FRAGMENT_REGISTERS_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
-+ params[0] = 6;
-+ break;
-+ case GL_NUM_FRAGMENT_CONSTANTS_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
-+ params[0] = 8;
-+ break;
-+ case GL_NUM_PASSES_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
-+ params[0] = 2;
-+ break;
-+ case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
-+ params[0] = 8;
-+ break;
-+ case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
-+ params[0] = 16;
-+ break;
-+ case GL_COLOR_ALPHA_PAIRING_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
-+ params[0] = BOOLEAN_TO_INT(GL_TRUE);
-+ break;
-+ case GL_NUM_LOOPBACK_COMPONENTS_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
-+ params[0] = 3;
-+ break;
-+ case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
-+ CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
-+ params[0] = 3;
-+ break;
-+ case GL_STENCIL_BACK_FUNC:
-+ params[0] = ENUM_TO_INT(ctx->Stencil.Function[1]);
-+ break;
-+ case GL_STENCIL_BACK_VALUE_MASK:
-+ params[0] = ctx->Stencil.ValueMask[1];
-+ break;
-+ case GL_STENCIL_BACK_REF:
-+ params[0] = ctx->Stencil.Ref[1];
-+ break;
-+ case GL_STENCIL_BACK_FAIL:
-+ params[0] = ENUM_TO_INT(ctx->Stencil.FailFunc[1]);
-+ break;
-+ case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
-+ params[0] = ENUM_TO_INT(ctx->Stencil.ZFailFunc[1]);
-+ break;
-+ case GL_STENCIL_BACK_PASS_DEPTH_PASS:
-+ params[0] = ENUM_TO_INT(ctx->Stencil.ZPassFunc[1]);
-+ break;
-+ case GL_FRAMEBUFFER_BINDING_EXT:
-+ CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
-+ params[0] = ctx->DrawBuffer->Name;
-+ break;
-+ case GL_RENDERBUFFER_BINDING_EXT:
-+ CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
-+ params[0] = ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0;
-+ break;
-+ case GL_MAX_COLOR_ATTACHMENTS_EXT:
-+ CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
-+ params[0] = ctx->Const.MaxColorAttachments;
-+ break;
-+ case GL_MAX_RENDERBUFFER_SIZE_EXT:
-+ CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
-+ params[0] = ctx->Const.MaxRenderbufferSize;
-+ break;
-+ case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
-+ CHECK_EXT1(ARB_fragment_shader, "GetIntegerv");
-+ params[0] = MAX_FRAGMENT_UNIFORM_COMPONENTS;
-+ break;
-+ case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
-+ CHECK_EXT1(ARB_fragment_shader, "GetIntegerv");
-+ params[0] = ENUM_TO_INT(ctx->Hint.FragmentShaderDerivative);
-+ break;
-+ case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
-+ CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
-+ params[0] = MAX_VERTEX_UNIFORM_COMPONENTS;
-+ break;
-+ case GL_MAX_VARYING_FLOATS_ARB:
-+ CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
-+ params[0] = MAX_VARYING_FLOATS;
-+ break;
-+ case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
-+ CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
-+ params[0] = MAX_VERTEX_TEXTURE_IMAGE_UNITS;
-+ break;
-+ case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
-+ CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
-+ params[0] = MAX_COMBINED_TEXTURE_IMAGE_UNITS;
-+ break;
-+ default:
-+ _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv(pname=0x%x)", pname);
-+ }
-+}
-+
-+
-+void GLAPIENTRY
-+_mesa_GetDoublev( GLenum pname, GLdouble *params )
-+{
-+ const GLfloat magic = -1234.5F;
-+ GLfloat values[16];
-+ GLuint i;
-+
-+ if (!params)
-+ return;
-+
-+ /* Init temp array to magic numbers so we can figure out how many values
-+ * are returned by the GetFloatv() call.
-+ */
-+ for (i = 0; i < 16; i++)
-+ values[i] = magic;
-+
-+ _mesa_GetFloatv(pname, values);
-+
-+ for (i = 0; i < 16 && values[i] != magic; i++)
-+ params[i] = (GLdouble) values[i];
-+}
-+
-Index: qemu-0.12.4/target-i386/mesa_gl.h
-===================================================================
---- /dev/null
-+++ qemu-0.12.4/target-i386/mesa_gl.h
-@@ -0,0 +1,2251 @@
-+/*
-+ * Mesa 3-D graphics library
-+ * Version: 6.5.1
-+ *
-+ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
-+ *
-+ * 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
-+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+
-+#ifndef __gl_h_
-+#define __gl_h_
-+
-+#if defined(USE_MGL_NAMESPACE)
-+#include "gl_mangle.h"
-+#endif
-+
-+
-+/**********************************************************************
-+ * Begin system-specific stuff. Do not do any of this when building
-+ * for SciTech SNAP, as this is all done before this header file is
-+ * included.
-+ */
-+#if !defined(__SCITECH_SNAP__)
-+
-+#if defined(__BEOS__)
-+#include <stdlib.h> /* to get some BeOS-isms */
-+#endif
-+
-+#if !defined(OPENSTEP) && (defined(NeXT) || defined(NeXT_PDO))
-+#define OPENSTEP
-+#endif
-+
-+#if defined(_WIN32) && !defined(__WIN32__) && !defined(__CYGWIN__)
-+#define __WIN32__
-+#endif
-+
-+#if !defined(OPENSTEP) && (defined(__WIN32__) && !defined(__CYGWIN__))
-+# if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */
-+# define GLAPI __declspec(dllexport)
-+# elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
-+# define GLAPI __declspec(dllimport)
-+# else /* for use with static link lib build of Win32 edition only */
-+# define GLAPI extern
-+# endif /* _STATIC_MESA support */
-+# define GLAPIENTRY __stdcall
-+#elif defined(__CYGWIN__) && defined(USE_OPENGL32) /* use native windows opengl32 */
-+# define GLAPI extern
-+# define GLAPIENTRY __stdcall
-+#elif defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 303
-+# define GLAPI __attribute__((visibility("default")))
-+# define GLAPIENTRY
-+#endif /* WIN32 && !CYGWIN */
-+
-+#if (defined(__BEOS__) && defined(__POWERPC__)) || defined(__QUICKDRAW__)
-+# define PRAGMA_EXPORT_SUPPORTED 1
-+#endif
-+
-+/*
-+ * WINDOWS: Include windows.h here to define APIENTRY.
-+ * It is also useful when applications include this file by
-+ * including only glut.h, since glut.h depends on windows.h.
-+ * Applications needing to include windows.h with parms other
-+ * than "WIN32_LEAN_AND_MEAN" may include windows.h before
-+ * glut.h or gl.h.
-+ */
-+#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__)
-+#define WIN32_LEAN_AND_MEAN 1
-+#include <windows.h>
-+#endif
-+
-+#if defined(_WIN32) && !defined(_WINGDI_) && !defined(_GNU_H_WINDOWS32_DEFINES) && !defined(OPENSTEP) && !defined(__CYGWIN__)
-+#include <GL/mesa_wgl.h>
-+#endif
-+
-+#if defined(macintosh) && PRAGMA_IMPORT_SUPPORTED
-+#pragma import on
-+#endif
-+
-+#ifndef GLAPI
-+#define GLAPI extern
-+#endif
-+
-+#ifndef GLAPIENTRY
-+#define GLAPIENTRY
-+#endif
-+
-+#ifndef APIENTRY
-+#define APIENTRY GLAPIENTRY
-+#endif
-+
-+/* "P" suffix to be used for a pointer to a function */
-+#ifndef APIENTRYP
-+#define APIENTRYP APIENTRY *
-+#endif
-+
-+#ifndef GLAPIENTRYP
-+#define GLAPIENTRYP GLAPIENTRY *
-+#endif
-+
-+#ifdef CENTERLINE_CLPP
-+#define signed
-+#endif
-+
-+#if defined(PRAGMA_EXPORT_SUPPORTED)
-+#pragma export on
-+#endif
-+
-+#endif /* !__SCITECH_SNAP__ */
-+/*
-+ * End system-specific stuff.
-+ **********************************************************************/
-+
-+
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+
-+
-+#define GL_VERSION_1_1 1
-+#define GL_VERSION_1_2 1
-+#define GL_VERSION_1_3 1
-+#define GL_ARB_imaging 1
-+
-+
-+/*
-+ * Datatypes
-+ */
-+typedef unsigned int GLenum;
-+typedef unsigned char GLboolean;
-+typedef unsigned int GLbitfield;
-+typedef void GLvoid;
-+typedef signed char GLbyte; /* 1-byte signed */
-+typedef short GLshort; /* 2-byte signed */
-+typedef int GLint; /* 4-byte signed */
-+typedef unsigned char GLubyte; /* 1-byte unsigned */
-+typedef unsigned short GLushort; /* 2-byte unsigned */
-+typedef unsigned int GLuint; /* 4-byte unsigned */
-+typedef int GLsizei; /* 4-byte signed */
-+typedef float GLfloat; /* single precision float */
-+typedef float GLclampf; /* single precision float in [0,1] */
-+typedef double GLdouble; /* double precision float */
-+typedef double GLclampd; /* double precision float in [0,1] */
-+
-+
-+
-+/*
-+ * Constants
-+ */
-+
-+/* Boolean values */
-+#define GL_FALSE 0x0
-+#define GL_TRUE 0x1
-+
-+/* Data types */
-+#define GL_BYTE 0x1400
-+#define GL_UNSIGNED_BYTE 0x1401
-+#define GL_SHORT 0x1402
-+#define GL_UNSIGNED_SHORT 0x1403
-+#define GL_INT 0x1404
-+#define GL_UNSIGNED_INT 0x1405
-+#define GL_FLOAT 0x1406
-+#define GL_2_BYTES 0x1407
-+#define GL_3_BYTES 0x1408
-+#define GL_4_BYTES 0x1409
-+#define GL_DOUBLE 0x140A
-+
-+/* Primitives */
-+#define GL_POINTS 0x0000
-+#define GL_LINES 0x0001
-+#define GL_LINE_LOOP 0x0002
-+#define GL_LINE_STRIP 0x0003
-+#define GL_TRIANGLES 0x0004
-+#define GL_TRIANGLE_STRIP 0x0005
-+#define GL_TRIANGLE_FAN 0x0006
-+#define GL_QUADS 0x0007
-+#define GL_QUAD_STRIP 0x0008
-+#define GL_POLYGON 0x0009
-+
-+/* Vertex Arrays */
-+#define GL_VERTEX_ARRAY 0x8074
-+#define GL_NORMAL_ARRAY 0x8075
-+#define GL_COLOR_ARRAY 0x8076
-+#define GL_INDEX_ARRAY 0x8077
-+#define GL_TEXTURE_COORD_ARRAY 0x8078
-+#define GL_EDGE_FLAG_ARRAY 0x8079
-+#define GL_VERTEX_ARRAY_SIZE 0x807A
-+#define GL_VERTEX_ARRAY_TYPE 0x807B
-+#define GL_VERTEX_ARRAY_STRIDE 0x807C
-+#define GL_NORMAL_ARRAY_TYPE 0x807E
-+#define GL_NORMAL_ARRAY_STRIDE 0x807F
-+#define GL_COLOR_ARRAY_SIZE 0x8081
-+#define GL_COLOR_ARRAY_TYPE 0x8082
-+#define GL_COLOR_ARRAY_STRIDE 0x8083
-+#define GL_INDEX_ARRAY_TYPE 0x8085
-+#define GL_INDEX_ARRAY_STRIDE 0x8086
-+#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088
-+#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089
-+#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A
-+#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C
-+#define GL_VERTEX_ARRAY_POINTER 0x808E
-+#define GL_NORMAL_ARRAY_POINTER 0x808F
-+#define GL_COLOR_ARRAY_POINTER 0x8090
-+#define GL_INDEX_ARRAY_POINTER 0x8091
-+#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092
-+#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093
-+#define GL_V2F 0x2A20
-+#define GL_V3F 0x2A21
-+#define GL_C4UB_V2F 0x2A22
-+#define GL_C4UB_V3F 0x2A23
-+#define GL_C3F_V3F 0x2A24
-+#define GL_N3F_V3F 0x2A25
-+#define GL_C4F_N3F_V3F 0x2A26
-+#define GL_T2F_V3F 0x2A27
-+#define GL_T4F_V4F 0x2A28
-+#define GL_T2F_C4UB_V3F 0x2A29
-+#define GL_T2F_C3F_V3F 0x2A2A
-+#define GL_T2F_N3F_V3F 0x2A2B
-+#define GL_T2F_C4F_N3F_V3F 0x2A2C
-+#define GL_T4F_C4F_N3F_V4F 0x2A2D
-+
-+/* Matrix Mode */
-+#define GL_MATRIX_MODE 0x0BA0
-+#define GL_MODELVIEW 0x1700
-+#define GL_PROJECTION 0x1701
-+#define GL_TEXTURE 0x1702
-+
-+/* Points */
-+#define GL_POINT_SMOOTH 0x0B10
-+#define GL_POINT_SIZE 0x0B11
-+#define GL_POINT_SIZE_GRANULARITY 0x0B13
-+#define GL_POINT_SIZE_RANGE 0x0B12
-+
-+/* Lines */
-+#define GL_LINE_SMOOTH 0x0B20
-+#define GL_LINE_STIPPLE 0x0B24
-+#define GL_LINE_STIPPLE_PATTERN 0x0B25
-+#define GL_LINE_STIPPLE_REPEAT 0x0B26
-+#define GL_LINE_WIDTH 0x0B21
-+#define GL_LINE_WIDTH_GRANULARITY 0x0B23
-+#define GL_LINE_WIDTH_RANGE 0x0B22
-+
-+/* Polygons */
-+#define GL_POINT 0x1B00
-+#define GL_LINE 0x1B01
-+#define GL_FILL 0x1B02
-+#define GL_CW 0x0900
-+#define GL_CCW 0x0901
-+#define GL_FRONT 0x0404
-+#define GL_BACK 0x0405
-+#define GL_POLYGON_MODE 0x0B40
-+#define GL_POLYGON_SMOOTH 0x0B41
-+#define GL_POLYGON_STIPPLE 0x0B42
-+#define GL_EDGE_FLAG 0x0B43
-+#define GL_CULL_FACE 0x0B44
-+#define GL_CULL_FACE_MODE 0x0B45
-+#define GL_FRONT_FACE 0x0B46
-+#define GL_POLYGON_OFFSET_FACTOR 0x8038
-+#define GL_POLYGON_OFFSET_UNITS 0x2A00
-+#define GL_POLYGON_OFFSET_POINT 0x2A01
-+#define GL_POLYGON_OFFSET_LINE 0x2A02
-+#define GL_POLYGON_OFFSET_FILL 0x8037
-+
-+/* Display Lists */
-+#define GL_COMPILE 0x1300
-+#define GL_COMPILE_AND_EXECUTE 0x1301
-+#define GL_LIST_BASE 0x0B32
-+#define GL_LIST_INDEX 0x0B33
-+#define GL_LIST_MODE 0x0B30
-+
-+/* Depth buffer */
-+#define GL_NEVER 0x0200
-+#define GL_LESS 0x0201
-+#define GL_EQUAL 0x0202
-+#define GL_LEQUAL 0x0203
-+#define GL_GREATER 0x0204
-+#define GL_NOTEQUAL 0x0205
-+#define GL_GEQUAL 0x0206
-+#define GL_ALWAYS 0x0207
-+#define GL_DEPTH_TEST 0x0B71
-+#define GL_DEPTH_BITS 0x0D56
-+#define GL_DEPTH_CLEAR_VALUE 0x0B73
-+#define GL_DEPTH_FUNC 0x0B74
-+#define GL_DEPTH_RANGE 0x0B70
-+#define GL_DEPTH_WRITEMASK 0x0B72
-+#define GL_DEPTH_COMPONENT 0x1902
-+
-+/* Lighting */
-+#define GL_LIGHTING 0x0B50
-+#define GL_LIGHT0 0x4000
-+#define GL_LIGHT1 0x4001
-+#define GL_LIGHT2 0x4002
-+#define GL_LIGHT3 0x4003
-+#define GL_LIGHT4 0x4004
-+#define GL_LIGHT5 0x4005
-+#define GL_LIGHT6 0x4006
-+#define GL_LIGHT7 0x4007
-+#define GL_SPOT_EXPONENT 0x1205
-+#define GL_SPOT_CUTOFF 0x1206
-+#define GL_CONSTANT_ATTENUATION 0x1207
-+#define GL_LINEAR_ATTENUATION 0x1208
-+#define GL_QUADRATIC_ATTENUATION 0x1209
-+#define GL_AMBIENT 0x1200
-+#define GL_DIFFUSE 0x1201
-+#define GL_SPECULAR 0x1202
-+#define GL_SHININESS 0x1601
-+#define GL_EMISSION 0x1600
-+#define GL_POSITION 0x1203
-+#define GL_SPOT_DIRECTION 0x1204
-+#define GL_AMBIENT_AND_DIFFUSE 0x1602
-+#define GL_COLOR_INDEXES 0x1603
-+#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52
-+#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51
-+#define GL_LIGHT_MODEL_AMBIENT 0x0B53
-+#define GL_FRONT_AND_BACK 0x0408
-+#define GL_SHADE_MODEL 0x0B54
-+#define GL_FLAT 0x1D00
-+#define GL_SMOOTH 0x1D01
-+#define GL_COLOR_MATERIAL 0x0B57
-+#define GL_COLOR_MATERIAL_FACE 0x0B55
-+#define GL_COLOR_MATERIAL_PARAMETER 0x0B56
-+#define GL_NORMALIZE 0x0BA1
-+
-+/* User clipping planes */
-+#define GL_CLIP_PLANE0 0x3000
-+#define GL_CLIP_PLANE1 0x3001
-+#define GL_CLIP_PLANE2 0x3002
-+#define GL_CLIP_PLANE3 0x3003
-+#define GL_CLIP_PLANE4 0x3004
-+#define GL_CLIP_PLANE5 0x3005
-+
-+/* Accumulation buffer */
-+#define GL_ACCUM_RED_BITS 0x0D58
-+#define GL_ACCUM_GREEN_BITS 0x0D59
-+#define GL_ACCUM_BLUE_BITS 0x0D5A
-+#define GL_ACCUM_ALPHA_BITS 0x0D5B
-+#define GL_ACCUM_CLEAR_VALUE 0x0B80
-+#define GL_ACCUM 0x0100
-+#define GL_ADD 0x0104
-+#define GL_LOAD 0x0101
-+#define GL_MULT 0x0103
-+#define GL_RETURN 0x0102
-+
-+/* Alpha testing */
-+#define GL_ALPHA_TEST 0x0BC0
-+#define GL_ALPHA_TEST_REF 0x0BC2
-+#define GL_ALPHA_TEST_FUNC 0x0BC1
-+
-+/* Blending */
-+#define GL_BLEND 0x0BE2
-+#define GL_BLEND_SRC 0x0BE1
-+#define GL_BLEND_DST 0x0BE0
-+#define GL_ZERO 0x0
-+#define GL_ONE 0x1
-+#define GL_SRC_COLOR 0x0300
-+#define GL_ONE_MINUS_SRC_COLOR 0x0301
-+#define GL_SRC_ALPHA 0x0302
-+#define GL_ONE_MINUS_SRC_ALPHA 0x0303
-+#define GL_DST_ALPHA 0x0304
-+#define GL_ONE_MINUS_DST_ALPHA 0x0305
-+#define GL_DST_COLOR 0x0306
-+#define GL_ONE_MINUS_DST_COLOR 0x0307
-+#define GL_SRC_ALPHA_SATURATE 0x0308
-+
-+/* Render Mode */
-+#define GL_FEEDBACK 0x1C01
-+#define GL_RENDER 0x1C00
-+#define GL_SELECT 0x1C02
-+
-+/* Feedback */
-+#define GL_2D 0x0600
-+#define GL_3D 0x0601
-+#define GL_3D_COLOR 0x0602
-+#define GL_3D_COLOR_TEXTURE 0x0603
-+#define GL_4D_COLOR_TEXTURE 0x0604
-+#define GL_POINT_TOKEN 0x0701
-+#define GL_LINE_TOKEN 0x0702
-+#define GL_LINE_RESET_TOKEN 0x0707
-+#define GL_POLYGON_TOKEN 0x0703
-+#define GL_BITMAP_TOKEN 0x0704
-+#define GL_DRAW_PIXEL_TOKEN 0x0705
-+#define GL_COPY_PIXEL_TOKEN 0x0706
-+#define GL_PASS_THROUGH_TOKEN 0x0700
-+#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0
-+#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1
-+#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2
-+
-+/* Selection */
-+#define GL_SELECTION_BUFFER_POINTER 0x0DF3
-+#define GL_SELECTION_BUFFER_SIZE 0x0DF4
-+
-+/* Fog */
-+#define GL_FOG 0x0B60
-+#define GL_FOG_MODE 0x0B65
-+#define GL_FOG_DENSITY 0x0B62
-+#define GL_FOG_COLOR 0x0B66
-+#define GL_FOG_INDEX 0x0B61
-+#define GL_FOG_START 0x0B63
-+#define GL_FOG_END 0x0B64
-+#define GL_LINEAR 0x2601
-+#define GL_EXP 0x0800
-+#define GL_EXP2 0x0801
-+
-+/* Logic Ops */
-+#define GL_LOGIC_OP 0x0BF1
-+#define GL_INDEX_LOGIC_OP 0x0BF1
-+#define GL_COLOR_LOGIC_OP 0x0BF2
-+#define GL_LOGIC_OP_MODE 0x0BF0
-+#define GL_CLEAR 0x1500
-+#define GL_SET 0x150F
-+#define GL_COPY 0x1503
-+#define GL_COPY_INVERTED 0x150C
-+#define GL_NOOP 0x1505
-+#define GL_INVERT 0x150A
-+#define GL_AND 0x1501
-+#define GL_NAND 0x150E
-+#define GL_OR 0x1507
-+#define GL_NOR 0x1508
-+#define GL_XOR 0x1506
-+#define GL_EQUIV 0x1509
-+#define GL_AND_REVERSE 0x1502
-+#define GL_AND_INVERTED 0x1504
-+#define GL_OR_REVERSE 0x150B
-+#define GL_OR_INVERTED 0x150D
-+
-+/* Stencil */
-+#define GL_STENCIL_BITS 0x0D57
-+#define GL_STENCIL_TEST 0x0B90
-+#define GL_STENCIL_CLEAR_VALUE 0x0B91
-+#define GL_STENCIL_FUNC 0x0B92
-+#define GL_STENCIL_VALUE_MASK 0x0B93
-+#define GL_STENCIL_FAIL 0x0B94
-+#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
-+#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96
-+#define GL_STENCIL_REF 0x0B97
-+#define GL_STENCIL_WRITEMASK 0x0B98
-+#define GL_STENCIL_INDEX 0x1901
-+#define GL_KEEP 0x1E00
-+#define GL_REPLACE 0x1E01
-+#define GL_INCR 0x1E02
-+#define GL_DECR 0x1E03
-+
-+/* Buffers, Pixel Drawing/Reading */
-+#define GL_NONE 0x0
-+#define GL_LEFT 0x0406
-+#define GL_RIGHT 0x0407
-+/*GL_FRONT 0x0404 */
-+/*GL_BACK 0x0405 */
-+/*GL_FRONT_AND_BACK 0x0408 */
-+#define GL_FRONT_LEFT 0x0400
-+#define GL_FRONT_RIGHT 0x0401
-+#define GL_BACK_LEFT 0x0402
-+#define GL_BACK_RIGHT 0x0403
-+#define GL_AUX0 0x0409
-+#define GL_AUX1 0x040A
-+#define GL_AUX2 0x040B
-+#define GL_AUX3 0x040C
-+#define GL_COLOR_INDEX 0x1900
-+#define GL_RED 0x1903
-+#define GL_GREEN 0x1904
-+#define GL_BLUE 0x1905
-+#define GL_ALPHA 0x1906
-+#define GL_LUMINANCE 0x1909
-+#define GL_LUMINANCE_ALPHA 0x190A
-+#define GL_ALPHA_BITS 0x0D55
-+#define GL_RED_BITS 0x0D52
-+#define GL_GREEN_BITS 0x0D53
-+#define GL_BLUE_BITS 0x0D54
-+#define GL_INDEX_BITS 0x0D51
-+#define GL_SUBPIXEL_BITS 0x0D50
-+#define GL_AUX_BUFFERS 0x0C00
-+#define GL_READ_BUFFER 0x0C02
-+#define GL_DRAW_BUFFER 0x0C01
-+#define GL_DOUBLEBUFFER 0x0C32
-+#define GL_STEREO 0x0C33
-+#define GL_BITMAP 0x1A00
-+#define GL_COLOR 0x1800
-+#define GL_DEPTH 0x1801
-+#define GL_STENCIL 0x1802
-+#define GL_DITHER 0x0BD0
-+#define GL_RGB 0x1907
-+#define GL_RGBA 0x1908
-+
-+/* Implementation limits */
-+#define GL_MAX_LIST_NESTING 0x0B31
-+#define GL_MAX_EVAL_ORDER 0x0D30
-+#define GL_MAX_LIGHTS 0x0D31
-+#define GL_MAX_CLIP_PLANES 0x0D32
-+#define GL_MAX_TEXTURE_SIZE 0x0D33
-+#define GL_MAX_PIXEL_MAP_TABLE 0x0D34
-+#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35
-+#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36
-+#define GL_MAX_NAME_STACK_DEPTH 0x0D37
-+#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38
-+#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39
-+#define GL_MAX_VIEWPORT_DIMS 0x0D3A
-+#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B
-+
-+/* Gets */
-+#define GL_ATTRIB_STACK_DEPTH 0x0BB0
-+#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1
-+#define GL_COLOR_CLEAR_VALUE 0x0C22
-+#define GL_COLOR_WRITEMASK 0x0C23
-+#define GL_CURRENT_INDEX 0x0B01
-+#define GL_CURRENT_COLOR 0x0B00
-+#define GL_CURRENT_NORMAL 0x0B02
-+#define GL_CURRENT_RASTER_COLOR 0x0B04
-+#define GL_CURRENT_RASTER_DISTANCE 0x0B09
-+#define GL_CURRENT_RASTER_INDEX 0x0B05
-+#define GL_CURRENT_RASTER_POSITION 0x0B07
-+#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06
-+#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08
-+#define GL_CURRENT_TEXTURE_COORDS 0x0B03
-+#define GL_INDEX_CLEAR_VALUE 0x0C20
-+#define GL_INDEX_MODE 0x0C30
-+#define GL_INDEX_WRITEMASK 0x0C21
-+#define GL_MODELVIEW_MATRIX 0x0BA6
-+#define GL_MODELVIEW_STACK_DEPTH 0x0BA3
-+#define GL_NAME_STACK_DEPTH 0x0D70
-+#define GL_PROJECTION_MATRIX 0x0BA7
-+#define GL_PROJECTION_STACK_DEPTH 0x0BA4
-+#define GL_RENDER_MODE 0x0C40
-+#define GL_RGBA_MODE 0x0C31
-+#define GL_TEXTURE_MATRIX 0x0BA8
-+#define GL_TEXTURE_STACK_DEPTH 0x0BA5
-+#define GL_VIEWPORT 0x0BA2
-+
-+/* Evaluators */
-+#define GL_AUTO_NORMAL 0x0D80
-+#define GL_MAP1_COLOR_4 0x0D90
-+#define GL_MAP1_INDEX 0x0D91
-+#define GL_MAP1_NORMAL 0x0D92
-+#define GL_MAP1_TEXTURE_COORD_1 0x0D93
-+#define GL_MAP1_TEXTURE_COORD_2 0x0D94
-+#define GL_MAP1_TEXTURE_COORD_3 0x0D95
-+#define GL_MAP1_TEXTURE_COORD_4 0x0D96
-+#define GL_MAP1_VERTEX_3 0x0D97
-+#define GL_MAP1_VERTEX_4 0x0D98
-+#define GL_MAP2_COLOR_4 0x0DB0
-+#define GL_MAP2_INDEX 0x0DB1
-+#define GL_MAP2_NORMAL 0x0DB2
-+#define GL_MAP2_TEXTURE_COORD_1 0x0DB3
-+#define GL_MAP2_TEXTURE_COORD_2 0x0DB4
-+#define GL_MAP2_TEXTURE_COORD_3 0x0DB5
-+#define GL_MAP2_TEXTURE_COORD_4 0x0DB6
-+#define GL_MAP2_VERTEX_3 0x0DB7
-+#define GL_MAP2_VERTEX_4 0x0DB8
-+#define GL_MAP1_GRID_DOMAIN 0x0DD0
-+#define GL_MAP1_GRID_SEGMENTS 0x0DD1
-+#define GL_MAP2_GRID_DOMAIN 0x0DD2
-+#define GL_MAP2_GRID_SEGMENTS 0x0DD3
-+#define GL_COEFF 0x0A00
-+#define GL_ORDER 0x0A01
-+#define GL_DOMAIN 0x0A02
-+
-+/* Hints */
-+#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50
-+#define GL_POINT_SMOOTH_HINT 0x0C51
-+#define GL_LINE_SMOOTH_HINT 0x0C52
-+#define GL_POLYGON_SMOOTH_HINT 0x0C53
-+#define GL_FOG_HINT 0x0C54
-+#define GL_DONT_CARE 0x1100
-+#define GL_FASTEST 0x1101
-+#define GL_NICEST 0x1102
-+
-+/* Scissor box */
-+#define GL_SCISSOR_BOX 0x0C10
-+#define GL_SCISSOR_TEST 0x0C11
-+
-+/* Pixel Mode / Transfer */
-+#define GL_MAP_COLOR 0x0D10
-+#define GL_MAP_STENCIL 0x0D11
-+#define GL_INDEX_SHIFT 0x0D12
-+#define GL_INDEX_OFFSET 0x0D13
-+#define GL_RED_SCALE 0x0D14
-+#define GL_RED_BIAS 0x0D15
-+#define GL_GREEN_SCALE 0x0D18
-+#define GL_GREEN_BIAS 0x0D19
-+#define GL_BLUE_SCALE 0x0D1A
-+#define GL_BLUE_BIAS 0x0D1B
-+#define GL_ALPHA_SCALE 0x0D1C
-+#define GL_ALPHA_BIAS 0x0D1D
-+#define GL_DEPTH_SCALE 0x0D1E
-+#define GL_DEPTH_BIAS 0x0D1F
-+#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1
-+#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0
-+#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2
-+#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3
-+#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4
-+#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5
-+#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6
-+#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7
-+#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8
-+#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9
-+#define GL_PIXEL_MAP_S_TO_S 0x0C71
-+#define GL_PIXEL_MAP_I_TO_I 0x0C70
-+#define GL_PIXEL_MAP_I_TO_R 0x0C72
-+#define GL_PIXEL_MAP_I_TO_G 0x0C73
-+#define GL_PIXEL_MAP_I_TO_B 0x0C74
-+#define GL_PIXEL_MAP_I_TO_A 0x0C75
-+#define GL_PIXEL_MAP_R_TO_R 0x0C76
-+#define GL_PIXEL_MAP_G_TO_G 0x0C77
-+#define GL_PIXEL_MAP_B_TO_B 0x0C78
-+#define GL_PIXEL_MAP_A_TO_A 0x0C79
-+#define GL_PACK_ALIGNMENT 0x0D05
-+#define GL_PACK_LSB_FIRST 0x0D01
-+#define GL_PACK_ROW_LENGTH 0x0D02
-+#define GL_PACK_SKIP_PIXELS 0x0D04
-+#define GL_PACK_SKIP_ROWS 0x0D03
-+#define GL_PACK_SWAP_BYTES 0x0D00
-+#define GL_UNPACK_ALIGNMENT 0x0CF5
-+#define GL_UNPACK_LSB_FIRST 0x0CF1
-+#define GL_UNPACK_ROW_LENGTH 0x0CF2
-+#define GL_UNPACK_SKIP_PIXELS 0x0CF4
-+#define GL_UNPACK_SKIP_ROWS 0x0CF3
-+#define GL_UNPACK_SWAP_BYTES 0x0CF0
-+#define GL_ZOOM_X 0x0D16
-+#define GL_ZOOM_Y 0x0D17
-+
-+/* Texture mapping */
-+#define GL_TEXTURE_ENV 0x2300
-+#define GL_TEXTURE_ENV_MODE 0x2200
-+#define GL_TEXTURE_1D 0x0DE0
-+#define GL_TEXTURE_2D 0x0DE1
-+#define GL_TEXTURE_WRAP_S 0x2802
-+#define GL_TEXTURE_WRAP_T 0x2803
-+#define GL_TEXTURE_MAG_FILTER 0x2800
-+#define GL_TEXTURE_MIN_FILTER 0x2801
-+#define GL_TEXTURE_ENV_COLOR 0x2201
-+#define GL_TEXTURE_GEN_S 0x0C60
-+#define GL_TEXTURE_GEN_T 0x0C61
-+#define GL_TEXTURE_GEN_MODE 0x2500
-+#define GL_TEXTURE_BORDER_COLOR 0x1004
-+#define GL_TEXTURE_WIDTH 0x1000
-+#define GL_TEXTURE_HEIGHT 0x1001
-+#define GL_TEXTURE_BORDER 0x1005
-+#define GL_TEXTURE_COMPONENTS 0x1003
-+#define GL_TEXTURE_RED_SIZE 0x805C
-+#define GL_TEXTURE_GREEN_SIZE 0x805D
-+#define GL_TEXTURE_BLUE_SIZE 0x805E
-+#define GL_TEXTURE_ALPHA_SIZE 0x805F
-+#define GL_TEXTURE_LUMINANCE_SIZE 0x8060
-+#define GL_TEXTURE_INTENSITY_SIZE 0x8061
-+#define GL_NEAREST_MIPMAP_NEAREST 0x2700
-+#define GL_NEAREST_MIPMAP_LINEAR 0x2702
-+#define GL_LINEAR_MIPMAP_NEAREST 0x2701
-+#define GL_LINEAR_MIPMAP_LINEAR 0x2703
-+#define GL_OBJECT_LINEAR 0x2401
-+#define GL_OBJECT_PLANE 0x2501
-+#define GL_EYE_LINEAR 0x2400
-+#define GL_EYE_PLANE 0x2502
-+#define GL_SPHERE_MAP 0x2402
-+#define GL_DECAL 0x2101
-+#define GL_MODULATE 0x2100
-+#define GL_NEAREST 0x2600
-+#define GL_REPEAT 0x2901
-+#define GL_CLAMP 0x2900
-+#define GL_S 0x2000
-+#define GL_T 0x2001
-+#define GL_R 0x2002
-+#define GL_Q 0x2003
-+#define GL_TEXTURE_GEN_R 0x0C62
-+#define GL_TEXTURE_GEN_Q 0x0C63
-+
-+/* Utility */
-+#define GL_VENDOR 0x1F00
-+#define GL_RENDERER 0x1F01
-+#define GL_VERSION 0x1F02
-+#define GL_EXTENSIONS 0x1F03
-+
-+/* Errors */
-+#define GL_NO_ERROR 0x0
-+#define GL_INVALID_ENUM 0x0500
-+#define GL_INVALID_VALUE 0x0501
-+#define GL_INVALID_OPERATION 0x0502
-+#define GL_STACK_OVERFLOW 0x0503
-+#define GL_STACK_UNDERFLOW 0x0504
-+#define GL_OUT_OF_MEMORY 0x0505
-+
-+/* glPush/PopAttrib bits */
-+#define GL_CURRENT_BIT 0x00000001
-+#define GL_POINT_BIT 0x00000002
-+#define GL_LINE_BIT 0x00000004
-+#define GL_POLYGON_BIT 0x00000008
-+#define GL_POLYGON_STIPPLE_BIT 0x00000010
-+#define GL_PIXEL_MODE_BIT 0x00000020
-+#define GL_LIGHTING_BIT 0x00000040
-+#define GL_FOG_BIT 0x00000080
-+#define GL_DEPTH_BUFFER_BIT 0x00000100
-+#define GL_ACCUM_BUFFER_BIT 0x00000200
-+#define GL_STENCIL_BUFFER_BIT 0x00000400
-+#define GL_VIEWPORT_BIT 0x00000800
-+#define GL_TRANSFORM_BIT 0x00001000
-+#define GL_ENABLE_BIT 0x00002000
-+#define GL_COLOR_BUFFER_BIT 0x00004000
-+#define GL_HINT_BIT 0x00008000
-+#define GL_EVAL_BIT 0x00010000
-+#define GL_LIST_BIT 0x00020000
-+#define GL_TEXTURE_BIT 0x00040000
-+#define GL_SCISSOR_BIT 0x00080000
-+#define GL_ALL_ATTRIB_BITS 0x000FFFFF
-+
-+
-+/* OpenGL 1.1 */
-+#define GL_PROXY_TEXTURE_1D 0x8063
-+#define GL_PROXY_TEXTURE_2D 0x8064
-+#define GL_TEXTURE_PRIORITY 0x8066
-+#define GL_TEXTURE_RESIDENT 0x8067
-+#define GL_TEXTURE_BINDING_1D 0x8068
-+#define GL_TEXTURE_BINDING_2D 0x8069
-+#define GL_TEXTURE_INTERNAL_FORMAT 0x1003
-+#define GL_ALPHA4 0x803B
-+#define GL_ALPHA8 0x803C
-+#define GL_ALPHA12 0x803D
-+#define GL_ALPHA16 0x803E
-+#define GL_LUMINANCE4 0x803F
-+#define GL_LUMINANCE8 0x8040
-+#define GL_LUMINANCE12 0x8041
-+#define GL_LUMINANCE16 0x8042
-+#define GL_LUMINANCE4_ALPHA4 0x8043
-+#define GL_LUMINANCE6_ALPHA2 0x8044
-+#define GL_LUMINANCE8_ALPHA8 0x8045
-+#define GL_LUMINANCE12_ALPHA4 0x8046
-+#define GL_LUMINANCE12_ALPHA12 0x8047
-+#define GL_LUMINANCE16_ALPHA16 0x8048
-+#define GL_INTENSITY 0x8049
-+#define GL_INTENSITY4 0x804A
-+#define GL_INTENSITY8 0x804B
-+#define GL_INTENSITY12 0x804C
-+#define GL_INTENSITY16 0x804D
-+#define GL_R3_G3_B2 0x2A10
-+#define GL_RGB4 0x804F
-+#define GL_RGB5 0x8050
-+#define GL_RGB8 0x8051
-+#define GL_RGB10 0x8052
-+#define GL_RGB12 0x8053
-+#define GL_RGB16 0x8054
-+#define GL_RGBA2 0x8055
-+#define GL_RGBA4 0x8056
-+#define GL_RGB5_A1 0x8057
-+#define GL_RGBA8 0x8058
-+#define GL_RGB10_A2 0x8059
-+#define GL_RGBA12 0x805A
-+#define GL_RGBA16 0x805B
-+#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001
-+#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002
-+#define GL_ALL_CLIENT_ATTRIB_BITS 0xFFFFFFFF
-+#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF
-+
-+
-+
-+/*
-+ * Miscellaneous
-+ */
-+
-+GLAPI void GLAPIENTRY glClearIndex( GLfloat c );
-+
-+GLAPI void GLAPIENTRY glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha );
-+
-+GLAPI void GLAPIENTRY glClear( GLbitfield mask );
-+
-+GLAPI void GLAPIENTRY glIndexMask( GLuint mask );
-+
-+GLAPI void GLAPIENTRY glColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha );
-+
-+GLAPI void GLAPIENTRY glAlphaFunc( GLenum func, GLclampf ref );
-+
-+GLAPI void GLAPIENTRY glBlendFunc( GLenum sfactor, GLenum dfactor );
-+
-+GLAPI void GLAPIENTRY glLogicOp( GLenum opcode );
-+
-+GLAPI void GLAPIENTRY glCullFace( GLenum mode );
-+
-+GLAPI void GLAPIENTRY glFrontFace( GLenum mode );
-+
-+GLAPI void GLAPIENTRY glPointSize( GLfloat size );
-+
-+GLAPI void GLAPIENTRY glLineWidth( GLfloat width );
-+
-+GLAPI void GLAPIENTRY glLineStipple( GLint factor, GLushort pattern );
-+
-+GLAPI void GLAPIENTRY glPolygonMode( GLenum face, GLenum mode );
-+
-+GLAPI void GLAPIENTRY glPolygonOffset( GLfloat factor, GLfloat units );
-+
-+GLAPI void GLAPIENTRY glPolygonStipple( const GLubyte *mask );
-+
-+GLAPI void GLAPIENTRY glGetPolygonStipple( GLubyte *mask );
-+
-+GLAPI void GLAPIENTRY glEdgeFlag( GLboolean flag );
-+
-+GLAPI void GLAPIENTRY glEdgeFlagv( const GLboolean *flag );
-+
-+GLAPI void GLAPIENTRY glScissor( GLint x, GLint y, GLsizei width, GLsizei height);
-+
-+GLAPI void GLAPIENTRY glClipPlane( GLenum plane, const GLdouble *equation );
-+
-+GLAPI void GLAPIENTRY glGetClipPlane( GLenum plane, GLdouble *equation );
-+
-+GLAPI void GLAPIENTRY glDrawBuffer( GLenum mode );
-+
-+GLAPI void GLAPIENTRY glReadBuffer( GLenum mode );
-+
-+GLAPI void GLAPIENTRY glEnable( GLenum cap );
-+
-+GLAPI void GLAPIENTRY glDisable( GLenum cap );
-+
-+GLAPI GLboolean GLAPIENTRY glIsEnabled( GLenum cap );
-+
-+
-+GLAPI void GLAPIENTRY glEnableClientState( GLenum cap ); /* 1.1 */
-+
-+GLAPI void GLAPIENTRY glDisableClientState( GLenum cap ); /* 1.1 */
-+
-+
-+GLAPI void GLAPIENTRY glGetBooleanv( GLenum pname, GLboolean *params );
-+
-+GLAPI void GLAPIENTRY glGetDoublev( GLenum pname, GLdouble *params );
-+
-+GLAPI void GLAPIENTRY glGetFloatv( GLenum pname, GLfloat *params );
-+
-+GLAPI void GLAPIENTRY glGetIntegerv( GLenum pname, GLint *params );
-+
-+
-+GLAPI void GLAPIENTRY glPushAttrib( GLbitfield mask );
-+
-+GLAPI void GLAPIENTRY glPopAttrib( void );
-+
-+
-+GLAPI void GLAPIENTRY glPushClientAttrib( GLbitfield mask ); /* 1.1 */
-+
-+GLAPI void GLAPIENTRY glPopClientAttrib( void ); /* 1.1 */
-+
-+
-+GLAPI GLint GLAPIENTRY glRenderMode( GLenum mode );
-+
-+GLAPI GLenum GLAPIENTRY glGetError( void );
-+
-+GLAPI const GLubyte * GLAPIENTRY glGetString( GLenum name );
-+
-+GLAPI void GLAPIENTRY glFinish( void );
-+
-+GLAPI void GLAPIENTRY glFlush( void );
-+
-+GLAPI void GLAPIENTRY glHint( GLenum target, GLenum mode );
-+
-+
-+/*
-+ * Depth Buffer
-+ */
-+
-+GLAPI void GLAPIENTRY glClearDepth( GLclampd depth );
-+
-+GLAPI void GLAPIENTRY glDepthFunc( GLenum func );
-+
-+GLAPI void GLAPIENTRY glDepthMask( GLboolean flag );
-+
-+GLAPI void GLAPIENTRY glDepthRange( GLclampd near_val, GLclampd far_val );
-+
-+
-+/*
-+ * Accumulation Buffer
-+ */
-+
-+GLAPI void GLAPIENTRY glClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
-+
-+GLAPI void GLAPIENTRY glAccum( GLenum op, GLfloat value );
-+
-+
-+/*
-+ * Transformation
-+ */
-+
-+GLAPI void GLAPIENTRY glMatrixMode( GLenum mode );
-+
-+GLAPI void GLAPIENTRY glOrtho( GLdouble left, GLdouble right,
-+ GLdouble bottom, GLdouble top,
-+ GLdouble near_val, GLdouble far_val );
-+
-+GLAPI void GLAPIENTRY glFrustum( GLdouble left, GLdouble right,
-+ GLdouble bottom, GLdouble top,
-+ GLdouble near_val, GLdouble far_val );
-+
-+GLAPI void GLAPIENTRY glViewport( GLint x, GLint y,
-+ GLsizei width, GLsizei height );
-+
-+GLAPI void GLAPIENTRY glPushMatrix( void );
-+
-+GLAPI void GLAPIENTRY glPopMatrix( void );
-+
-+GLAPI void GLAPIENTRY glLoadIdentity( void );
-+
-+GLAPI void GLAPIENTRY glLoadMatrixd( const GLdouble *m );
-+GLAPI void GLAPIENTRY glLoadMatrixf( const GLfloat *m );
-+
-+GLAPI void GLAPIENTRY glMultMatrixd( const GLdouble *m );
-+GLAPI void GLAPIENTRY glMultMatrixf( const GLfloat *m );
-+
-+GLAPI void GLAPIENTRY glRotated( GLdouble angle,
-+ GLdouble x, GLdouble y, GLdouble z );
-+GLAPI void GLAPIENTRY glRotatef( GLfloat angle,
-+ GLfloat x, GLfloat y, GLfloat z );
-+
-+GLAPI void GLAPIENTRY glScaled( GLdouble x, GLdouble y, GLdouble z );
-+GLAPI void GLAPIENTRY glScalef( GLfloat x, GLfloat y, GLfloat z );
-+
-+GLAPI void GLAPIENTRY glTranslated( GLdouble x, GLdouble y, GLdouble z );
-+GLAPI void GLAPIENTRY glTranslatef( GLfloat x, GLfloat y, GLfloat z );
-+
-+
-+/*
-+ * Display Lists
-+ */
-+
-+GLAPI GLboolean GLAPIENTRY glIsList( GLuint list );
-+
-+GLAPI void GLAPIENTRY glDeleteLists( GLuint list, GLsizei range );
-+
-+GLAPI GLuint GLAPIENTRY glGenLists( GLsizei range );
-+
-+GLAPI void GLAPIENTRY glNewList( GLuint list, GLenum mode );
-+
-+GLAPI void GLAPIENTRY glEndList( void );
-+
-+GLAPI void GLAPIENTRY glCallList( GLuint list );
-+
-+GLAPI void GLAPIENTRY glCallLists( GLsizei n, GLenum type,
-+ const GLvoid *lists );
-+
-+GLAPI void GLAPIENTRY glListBase( GLuint base );
-+
-+
-+/*
-+ * Drawing Functions
-+ */
-+
-+GLAPI void GLAPIENTRY glBegin( GLenum mode );
-+
-+GLAPI void GLAPIENTRY glEnd( void );
-+
-+
-+GLAPI void GLAPIENTRY glVertex2d( GLdouble x, GLdouble y );
-+GLAPI void GLAPIENTRY glVertex2f( GLfloat x, GLfloat y );
-+GLAPI void GLAPIENTRY glVertex2i( GLint x, GLint y );
-+GLAPI void GLAPIENTRY glVertex2s( GLshort x, GLshort y );
-+
-+GLAPI void GLAPIENTRY glVertex3d( GLdouble x, GLdouble y, GLdouble z );
-+GLAPI void GLAPIENTRY glVertex3f( GLfloat x, GLfloat y, GLfloat z );
-+GLAPI void GLAPIENTRY glVertex3i( GLint x, GLint y, GLint z );
-+GLAPI void GLAPIENTRY glVertex3s( GLshort x, GLshort y, GLshort z );
-+
-+GLAPI void GLAPIENTRY glVertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
-+GLAPI void GLAPIENTRY glVertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
-+GLAPI void GLAPIENTRY glVertex4i( GLint x, GLint y, GLint z, GLint w );
-+GLAPI void GLAPIENTRY glVertex4s( GLshort x, GLshort y, GLshort z, GLshort w );
-+
-+GLAPI void GLAPIENTRY glVertex2dv( const GLdouble *v );
-+GLAPI void GLAPIENTRY glVertex2fv( const GLfloat *v );
-+GLAPI void GLAPIENTRY glVertex2iv( const GLint *v );
-+GLAPI void GLAPIENTRY glVertex2sv( const GLshort *v );
-+
-+GLAPI void GLAPIENTRY glVertex3dv( const GLdouble *v );
-+GLAPI void GLAPIENTRY glVertex3fv( const GLfloat *v );
-+GLAPI void GLAPIENTRY glVertex3iv( const GLint *v );
-+GLAPI void GLAPIENTRY glVertex3sv( const GLshort *v );
-+
-+GLAPI void GLAPIENTRY glVertex4dv( const GLdouble *v );
-+GLAPI void GLAPIENTRY glVertex4fv( const GLfloat *v );
-+GLAPI void GLAPIENTRY glVertex4iv( const GLint *v );
-+GLAPI void GLAPIENTRY glVertex4sv( const GLshort *v );
-+
-+
-+GLAPI void GLAPIENTRY glNormal3b( GLbyte nx, GLbyte ny, GLbyte nz );
-+GLAPI void GLAPIENTRY glNormal3d( GLdouble nx, GLdouble ny, GLdouble nz );
-+GLAPI void GLAPIENTRY glNormal3f( GLfloat nx, GLfloat ny, GLfloat nz );
-+GLAPI void GLAPIENTRY glNormal3i( GLint nx, GLint ny, GLint nz );
-+GLAPI void GLAPIENTRY glNormal3s( GLshort nx, GLshort ny, GLshort nz );
-+
-+GLAPI void GLAPIENTRY glNormal3bv( const GLbyte *v );
-+GLAPI void GLAPIENTRY glNormal3dv( const GLdouble *v );
-+GLAPI void GLAPIENTRY glNormal3fv( const GLfloat *v );
-+GLAPI void GLAPIENTRY glNormal3iv( const GLint *v );
-+GLAPI void GLAPIENTRY glNormal3sv( const GLshort *v );
-+
-+
-+GLAPI void GLAPIENTRY glIndexd( GLdouble c );
-+GLAPI void GLAPIENTRY glIndexf( GLfloat c );
-+GLAPI void GLAPIENTRY glIndexi( GLint c );
-+GLAPI void GLAPIENTRY glIndexs( GLshort c );
-+GLAPI void GLAPIENTRY glIndexub( GLubyte c ); /* 1.1 */
-+
-+GLAPI void GLAPIENTRY glIndexdv( const GLdouble *c );
-+GLAPI void GLAPIENTRY glIndexfv( const GLfloat *c );
-+GLAPI void GLAPIENTRY glIndexiv( const GLint *c );
-+GLAPI void GLAPIENTRY glIndexsv( const GLshort *c );
-+GLAPI void GLAPIENTRY glIndexubv( const GLubyte *c ); /* 1.1 */
-+
-+GLAPI void GLAPIENTRY glColor3b( GLbyte red, GLbyte green, GLbyte blue );
-+GLAPI void GLAPIENTRY glColor3d( GLdouble red, GLdouble green, GLdouble blue );
-+GLAPI void GLAPIENTRY glColor3f( GLfloat red, GLfloat green, GLfloat blue );
-+GLAPI void GLAPIENTRY glColor3i( GLint red, GLint green, GLint blue );
-+GLAPI void GLAPIENTRY glColor3s( GLshort red, GLshort green, GLshort blue );
-+GLAPI void GLAPIENTRY glColor3ub( GLubyte red, GLubyte green, GLubyte blue );
-+GLAPI void GLAPIENTRY glColor3ui( GLuint red, GLuint green, GLuint blue );
-+GLAPI void GLAPIENTRY glColor3us( GLushort red, GLushort green, GLushort blue );
-+
-+GLAPI void GLAPIENTRY glColor4b( GLbyte red, GLbyte green,
-+ GLbyte blue, GLbyte alpha );
-+GLAPI void GLAPIENTRY glColor4d( GLdouble red, GLdouble green,
-+ GLdouble blue, GLdouble alpha );
-+GLAPI void GLAPIENTRY glColor4f( GLfloat red, GLfloat green,
-+ GLfloat blue, GLfloat alpha );
-+GLAPI void GLAPIENTRY glColor4i( GLint red, GLint green,
-+ GLint blue, GLint alpha );
-+GLAPI void GLAPIENTRY glColor4s( GLshort red, GLshort green,
-+ GLshort blue, GLshort alpha );
-+GLAPI void GLAPIENTRY glColor4ub( GLubyte red, GLubyte green,
-+ GLubyte blue, GLubyte alpha );
-+GLAPI void GLAPIENTRY glColor4ui( GLuint red, GLuint green,
-+ GLuint blue, GLuint alpha );
-+GLAPI void GLAPIENTRY glColor4us( GLushort red, GLushort green,
-+ GLushort blue, GLushort alpha );
-+
-+
-+GLAPI void GLAPIENTRY glColor3bv( const GLbyte *v );
-+GLAPI void GLAPIENTRY glColor3dv( const GLdouble *v );
-+GLAPI void GLAPIENTRY glColor3fv( const GLfloat *v );
-+GLAPI void GLAPIENTRY glColor3iv( const GLint *v );
-+GLAPI void GLAPIENTRY glColor3sv( const GLshort *v );
-+GLAPI void GLAPIENTRY glColor3ubv( const GLubyte *v );
-+GLAPI void GLAPIENTRY glColor3uiv( const GLuint *v );
-+GLAPI void GLAPIENTRY glColor3usv( const GLushort *v );
-+
-+GLAPI void GLAPIENTRY glColor4bv( const GLbyte *v );
-+GLAPI void GLAPIENTRY glColor4dv( const GLdouble *v );
-+GLAPI void GLAPIENTRY glColor4fv( const GLfloat *v );
-+GLAPI void GLAPIENTRY glColor4iv( const GLint *v );
-+GLAPI void GLAPIENTRY glColor4sv( const GLshort *v );
-+GLAPI void GLAPIENTRY glColor4ubv( const GLubyte *v );
-+GLAPI void GLAPIENTRY glColor4uiv( const GLuint *v );
-+GLAPI void GLAPIENTRY glColor4usv( const GLushort *v );
-+
-+
-+GLAPI void GLAPIENTRY glTexCoord1d( GLdouble s );
-+GLAPI void GLAPIENTRY glTexCoord1f( GLfloat s );
-+GLAPI void GLAPIENTRY glTexCoord1i( GLint s );
-+GLAPI void GLAPIENTRY glTexCoord1s( GLshort s );
-+
-+GLAPI void GLAPIENTRY glTexCoord2d( GLdouble s, GLdouble t );
-+GLAPI void GLAPIENTRY glTexCoord2f( GLfloat s, GLfloat t );
-+GLAPI void GLAPIENTRY glTexCoord2i( GLint s, GLint t );
-+GLAPI void GLAPIENTRY glTexCoord2s( GLshort s, GLshort t );
-+
-+GLAPI void GLAPIENTRY glTexCoord3d( GLdouble s, GLdouble t, GLdouble r );
-+GLAPI void GLAPIENTRY glTexCoord3f( GLfloat s, GLfloat t, GLfloat r );
-+GLAPI void GLAPIENTRY glTexCoord3i( GLint s, GLint t, GLint r );
-+GLAPI void GLAPIENTRY glTexCoord3s( GLshort s, GLshort t, GLshort r );
-+
-+GLAPI void GLAPIENTRY glTexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q );
-+GLAPI void GLAPIENTRY glTexCoord4f( GLfloat s, GLfloat t, GLfloat r, GLfloat q );
-+GLAPI void GLAPIENTRY glTexCoord4i( GLint s, GLint t, GLint r, GLint q );
-+GLAPI void GLAPIENTRY glTexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q );
-+
-+GLAPI void GLAPIENTRY glTexCoord1dv( const GLdouble *v );
-+GLAPI void GLAPIENTRY glTexCoord1fv( const GLfloat *v );
-+GLAPI void GLAPIENTRY glTexCoord1iv( const GLint *v );
-+GLAPI void GLAPIENTRY glTexCoord1sv( const GLshort *v );
-+
-+GLAPI void GLAPIENTRY glTexCoord2dv( const GLdouble *v );
-+GLAPI void GLAPIENTRY glTexCoord2fv( const GLfloat *v );
-+GLAPI void GLAPIENTRY glTexCoord2iv( const GLint *v );
-+GLAPI void GLAPIENTRY glTexCoord2sv( const GLshort *v );
-+
-+GLAPI void GLAPIENTRY glTexCoord3dv( const GLdouble *v );
-+GLAPI void GLAPIENTRY glTexCoord3fv( const GLfloat *v );
-+GLAPI void GLAPIENTRY glTexCoord3iv( const GLint *v );
-+GLAPI void GLAPIENTRY glTexCoord3sv( const GLshort *v );
-+
-+GLAPI void GLAPIENTRY glTexCoord4dv( const GLdouble *v );
-+GLAPI void GLAPIENTRY glTexCoord4fv( const GLfloat *v );
-+GLAPI void GLAPIENTRY glTexCoord4iv( const GLint *v );
-+GLAPI void GLAPIENTRY glTexCoord4sv( const GLshort *v );
-+
-+
-+GLAPI void GLAPIENTRY glRasterPos2d( GLdouble x, GLdouble y );
-+GLAPI void GLAPIENTRY glRasterPos2f( GLfloat x, GLfloat y );
-+GLAPI void GLAPIENTRY glRasterPos2i( GLint x, GLint y );
-+GLAPI void GLAPIENTRY glRasterPos2s( GLshort x, GLshort y );
-+
-+GLAPI void GLAPIENTRY glRasterPos3d( GLdouble x, GLdouble y, GLdouble z );
-+GLAPI void GLAPIENTRY glRasterPos3f( GLfloat x, GLfloat y, GLfloat z );
-+GLAPI void GLAPIENTRY glRasterPos3i( GLint x, GLint y, GLint z );
-+GLAPI void GLAPIENTRY glRasterPos3s( GLshort x, GLshort y, GLshort z );
-+
-+GLAPI void GLAPIENTRY glRasterPos4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
-+GLAPI void GLAPIENTRY glRasterPos4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
-+GLAPI void GLAPIENTRY glRasterPos4i( GLint x, GLint y, GLint z, GLint w );
-+GLAPI void GLAPIENTRY glRasterPos4s( GLshort x, GLshort y, GLshort z, GLshort w );
-+
-+GLAPI void GLAPIENTRY glRasterPos2dv( const GLdouble *v );
-+GLAPI void GLAPIENTRY glRasterPos2fv( const GLfloat *v );
-+GLAPI void GLAPIENTRY glRasterPos2iv( const GLint *v );
-+GLAPI void GLAPIENTRY glRasterPos2sv( const GLshort *v );
-+
-+GLAPI void GLAPIENTRY glRasterPos3dv( const GLdouble *v );
-+GLAPI void GLAPIENTRY glRasterPos3fv( const GLfloat *v );
-+GLAPI void GLAPIENTRY glRasterPos3iv( const GLint *v );
-+GLAPI void GLAPIENTRY glRasterPos3sv( const GLshort *v );
-+
-+GLAPI void GLAPIENTRY glRasterPos4dv( const GLdouble *v );
-+GLAPI void GLAPIENTRY glRasterPos4fv( const GLfloat *v );
-+GLAPI void GLAPIENTRY glRasterPos4iv( const GLint *v );
-+GLAPI void GLAPIENTRY glRasterPos4sv( const GLshort *v );
-+
-+
-+GLAPI void GLAPIENTRY glRectd( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 );
-+GLAPI void GLAPIENTRY glRectf( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 );
-+GLAPI void GLAPIENTRY glRecti( GLint x1, GLint y1, GLint x2, GLint y2 );
-+GLAPI void GLAPIENTRY glRects( GLshort x1, GLshort y1, GLshort x2, GLshort y2 );
-+
-+
-+GLAPI void GLAPIENTRY glRectdv( const GLdouble *v1, const GLdouble *v2 );
-+GLAPI void GLAPIENTRY glRectfv( const GLfloat *v1, const GLfloat *v2 );
-+GLAPI void GLAPIENTRY glRectiv( const GLint *v1, const GLint *v2 );
-+GLAPI void GLAPIENTRY glRectsv( const GLshort *v1, const GLshort *v2 );
-+
-+
-+/*
-+ * Vertex Arrays (1.1)
-+ */
-+
-+GLAPI void GLAPIENTRY glVertexPointer( GLint size, GLenum type,
-+ GLsizei stride, const GLvoid *ptr );
-+
-+GLAPI void GLAPIENTRY glNormalPointer( GLenum type, GLsizei stride,
-+ const GLvoid *ptr );
-+
-+GLAPI void GLAPIENTRY glColorPointer( GLint size, GLenum type,
-+ GLsizei stride, const GLvoid *ptr );
-+
-+GLAPI void GLAPIENTRY glIndexPointer( GLenum type, GLsizei stride,
-+ const GLvoid *ptr );
-+
-+GLAPI void GLAPIENTRY glTexCoordPointer( GLint size, GLenum type,
-+ GLsizei stride, const GLvoid *ptr );
-+
-+GLAPI void GLAPIENTRY glEdgeFlagPointer( GLsizei stride, const GLvoid *ptr );
-+
-+GLAPI void GLAPIENTRY glGetPointerv( GLenum pname, GLvoid **params );
-+
-+GLAPI void GLAPIENTRY glArrayElement( GLint i );
-+
-+GLAPI void GLAPIENTRY glDrawArrays( GLenum mode, GLint first, GLsizei count );
-+
-+GLAPI void GLAPIENTRY glDrawElements( GLenum mode, GLsizei count,
-+ GLenum type, const GLvoid *indices );
-+
-+GLAPI void GLAPIENTRY glInterleavedArrays( GLenum format, GLsizei stride,
-+ const GLvoid *pointer );
-+
-+/*
-+ * Lighting
-+ */
-+
-+GLAPI void GLAPIENTRY glShadeModel( GLenum mode );
-+
-+GLAPI void GLAPIENTRY glLightf( GLenum light, GLenum pname, GLfloat param );
-+GLAPI void GLAPIENTRY glLighti( GLenum light, GLenum pname, GLint param );
-+GLAPI void GLAPIENTRY glLightfv( GLenum light, GLenum pname,
-+ const GLfloat *params );
-+GLAPI void GLAPIENTRY glLightiv( GLenum light, GLenum pname,
-+ const GLint *params );
-+
-+GLAPI void GLAPIENTRY glGetLightfv( GLenum light, GLenum pname,
-+ GLfloat *params );
-+GLAPI void GLAPIENTRY glGetLightiv( GLenum light, GLenum pname,
-+ GLint *params );
-+
-+GLAPI void GLAPIENTRY glLightModelf( GLenum pname, GLfloat param );
-+GLAPI void GLAPIENTRY glLightModeli( GLenum pname, GLint param );
-+GLAPI void GLAPIENTRY glLightModelfv( GLenum pname, const GLfloat *params );
-+GLAPI void GLAPIENTRY glLightModeliv( GLenum pname, const GLint *params );
-+
-+GLAPI void GLAPIENTRY glMaterialf( GLenum face, GLenum pname, GLfloat param );
-+GLAPI void GLAPIENTRY glMateriali( GLenum face, GLenum pname, GLint param );
-+GLAPI void GLAPIENTRY glMaterialfv( GLenum face, GLenum pname, const GLfloat *params );
-+GLAPI void GLAPIENTRY glMaterialiv( GLenum face, GLenum pname, const GLint *params );
-+
-+GLAPI void GLAPIENTRY glGetMaterialfv( GLenum face, GLenum pname, GLfloat *params );
-+GLAPI void GLAPIENTRY glGetMaterialiv( GLenum face, GLenum pname, GLint *params );
-+
-+GLAPI void GLAPIENTRY glColorMaterial( GLenum face, GLenum mode );
-+
-+
-+/*
-+ * Raster functions
-+ */
-+
-+GLAPI void GLAPIENTRY glPixelZoom( GLfloat xfactor, GLfloat yfactor );
-+
-+GLAPI void GLAPIENTRY glPixelStoref( GLenum pname, GLfloat param );
-+GLAPI void GLAPIENTRY glPixelStorei( GLenum pname, GLint param );
-+
-+GLAPI void GLAPIENTRY glPixelTransferf( GLenum pname, GLfloat param );
-+GLAPI void GLAPIENTRY glPixelTransferi( GLenum pname, GLint param );
-+
-+GLAPI void GLAPIENTRY glPixelMapfv( GLenum map, GLsizei mapsize,
-+ const GLfloat *values );
-+GLAPI void GLAPIENTRY glPixelMapuiv( GLenum map, GLsizei mapsize,
-+ const GLuint *values );
-+GLAPI void GLAPIENTRY glPixelMapusv( GLenum map, GLsizei mapsize,
-+ const GLushort *values );
-+
-+GLAPI void GLAPIENTRY glGetPixelMapfv( GLenum map, GLfloat *values );
-+GLAPI void GLAPIENTRY glGetPixelMapuiv( GLenum map, GLuint *values );
-+GLAPI void GLAPIENTRY glGetPixelMapusv( GLenum map, GLushort *values );
-+
-+GLAPI void GLAPIENTRY glBitmap( GLsizei width, GLsizei height,
-+ GLfloat xorig, GLfloat yorig,
-+ GLfloat xmove, GLfloat ymove,
-+ const GLubyte *bitmap );
-+
-+GLAPI void GLAPIENTRY glReadPixels( GLint x, GLint y,
-+ GLsizei width, GLsizei height,
-+ GLenum format, GLenum type,
-+ GLvoid *pixels );
-+
-+GLAPI void GLAPIENTRY glDrawPixels( GLsizei width, GLsizei height,
-+ GLenum format, GLenum type,
-+ const GLvoid *pixels );
-+
-+GLAPI void GLAPIENTRY glCopyPixels( GLint x, GLint y,
-+ GLsizei width, GLsizei height,
-+ GLenum type );
-+
-+/*
-+ * Stenciling
-+ */
-+
-+GLAPI void GLAPIENTRY glStencilFunc( GLenum func, GLint ref, GLuint mask );
-+
-+GLAPI void GLAPIENTRY glStencilMask( GLuint mask );
-+
-+GLAPI void GLAPIENTRY glStencilOp( GLenum fail, GLenum zfail, GLenum zpass );
-+
-+GLAPI void GLAPIENTRY glClearStencil( GLint s );
-+
-+
-+
-+/*
-+ * Texture mapping
-+ */
-+
-+GLAPI void GLAPIENTRY glTexGend( GLenum coord, GLenum pname, GLdouble param );
-+GLAPI void GLAPIENTRY glTexGenf( GLenum coord, GLenum pname, GLfloat param );
-+GLAPI void GLAPIENTRY glTexGeni( GLenum coord, GLenum pname, GLint param );
-+
-+GLAPI void GLAPIENTRY glTexGendv( GLenum coord, GLenum pname, const GLdouble *params );
-+GLAPI void GLAPIENTRY glTexGenfv( GLenum coord, GLenum pname, const GLfloat *params );
-+GLAPI void GLAPIENTRY glTexGeniv( GLenum coord, GLenum pname, const GLint *params );
-+
-+GLAPI void GLAPIENTRY glGetTexGendv( GLenum coord, GLenum pname, GLdouble *params );
-+GLAPI void GLAPIENTRY glGetTexGenfv( GLenum coord, GLenum pname, GLfloat *params );
-+GLAPI void GLAPIENTRY glGetTexGeniv( GLenum coord, GLenum pname, GLint *params );
-+
-+
-+GLAPI void GLAPIENTRY glTexEnvf( GLenum target, GLenum pname, GLfloat param );
-+GLAPI void GLAPIENTRY glTexEnvi( GLenum target, GLenum pname, GLint param );
-+
-+GLAPI void GLAPIENTRY glTexEnvfv( GLenum target, GLenum pname, const GLfloat *params );
-+GLAPI void GLAPIENTRY glTexEnviv( GLenum target, GLenum pname, const GLint *params );
-+
-+GLAPI void GLAPIENTRY glGetTexEnvfv( GLenum target, GLenum pname, GLfloat *params );
-+GLAPI void GLAPIENTRY glGetTexEnviv( GLenum target, GLenum pname, GLint *params );
-+
-+
-+GLAPI void GLAPIENTRY glTexParameterf( GLenum target, GLenum pname, GLfloat param );
-+GLAPI void GLAPIENTRY glTexParameteri( GLenum target, GLenum pname, GLint param );
-+
-+GLAPI void GLAPIENTRY glTexParameterfv( GLenum target, GLenum pname,
-+ const GLfloat *params );
-+GLAPI void GLAPIENTRY glTexParameteriv( GLenum target, GLenum pname,
-+ const GLint *params );
-+
-+GLAPI void GLAPIENTRY glGetTexParameterfv( GLenum target,
-+ GLenum pname, GLfloat *params);
-+GLAPI void GLAPIENTRY glGetTexParameteriv( GLenum target,
-+ GLenum pname, GLint *params );
-+
-+GLAPI void GLAPIENTRY glGetTexLevelParameterfv( GLenum target, GLint level,
-+ GLenum pname, GLfloat *params );
-+GLAPI void GLAPIENTRY glGetTexLevelParameteriv( GLenum target, GLint level,
-+ GLenum pname, GLint *params );
-+
-+
-+GLAPI void GLAPIENTRY glTexImage1D( GLenum target, GLint level,
-+ GLint internalFormat,
-+ GLsizei width, GLint border,
-+ GLenum format, GLenum type,
-+ const GLvoid *pixels );
-+
-+GLAPI void GLAPIENTRY glTexImage2D( GLenum target, GLint level,
-+ GLint internalFormat,
-+ GLsizei width, GLsizei height,
-+ GLint border, GLenum format, GLenum type,
-+ const GLvoid *pixels );
-+
-+GLAPI void GLAPIENTRY glGetTexImage( GLenum target, GLint level,
-+ GLenum format, GLenum type,
-+ GLvoid *pixels );
-+
-+
-+/* 1.1 functions */
-+
-+GLAPI void GLAPIENTRY glGenTextures( GLsizei n, GLuint *textures );
-+
-+GLAPI void GLAPIENTRY glDeleteTextures( GLsizei n, const GLuint *textures);
-+
-+GLAPI void GLAPIENTRY glBindTexture( GLenum target, GLuint texture );
-+
-+GLAPI void GLAPIENTRY glPrioritizeTextures( GLsizei n,
-+ const GLuint *textures,
-+ const GLclampf *priorities );
-+
-+GLAPI GLboolean GLAPIENTRY glAreTexturesResident( GLsizei n,
-+ const GLuint *textures,
-+ GLboolean *residences );
-+
-+GLAPI GLboolean GLAPIENTRY glIsTexture( GLuint texture );
-+
-+
-+GLAPI void GLAPIENTRY glTexSubImage1D( GLenum target, GLint level,
-+ GLint xoffset,
-+ GLsizei width, GLenum format,
-+ GLenum type, const GLvoid *pixels );
-+
-+
-+GLAPI void GLAPIENTRY glTexSubImage2D( GLenum target, GLint level,
-+ GLint xoffset, GLint yoffset,
-+ GLsizei width, GLsizei height,
-+ GLenum format, GLenum type,
-+ const GLvoid *pixels );
-+
-+
-+GLAPI void GLAPIENTRY glCopyTexImage1D( GLenum target, GLint level,
-+ GLenum internalformat,
-+ GLint x, GLint y,
-+ GLsizei width, GLint border );
-+
-+
-+GLAPI void GLAPIENTRY glCopyTexImage2D( GLenum target, GLint level,
-+ GLenum internalformat,
-+ GLint x, GLint y,
-+ GLsizei width, GLsizei height,
-+ GLint border );
-+
-+
-+GLAPI void GLAPIENTRY glCopyTexSubImage1D( GLenum target, GLint level,
-+ GLint xoffset, GLint x, GLint y,
-+ GLsizei width );
-+
-+
-+GLAPI void GLAPIENTRY glCopyTexSubImage2D( GLenum target, GLint level,
-+ GLint xoffset, GLint yoffset,
-+ GLint x, GLint y,
-+ GLsizei width, GLsizei height );
-+
-+
-+/*
-+ * Evaluators
-+ */
-+
-+GLAPI void GLAPIENTRY glMap1d( GLenum target, GLdouble u1, GLdouble u2,
-+ GLint stride,
-+ GLint order, const GLdouble *points );
-+GLAPI void GLAPIENTRY glMap1f( GLenum target, GLfloat u1, GLfloat u2,
-+ GLint stride,
-+ GLint order, const GLfloat *points );
-+
-+GLAPI void GLAPIENTRY glMap2d( GLenum target,
-+ GLdouble u1, GLdouble u2, GLint ustride, GLint uorder,
-+ GLdouble v1, GLdouble v2, GLint vstride, GLint vorder,
-+ const GLdouble *points );
-+GLAPI void GLAPIENTRY glMap2f( GLenum target,
-+ GLfloat u1, GLfloat u2, GLint ustride, GLint uorder,
-+ GLfloat v1, GLfloat v2, GLint vstride, GLint vorder,
-+ const GLfloat *points );
-+
-+GLAPI void GLAPIENTRY glGetMapdv( GLenum target, GLenum query, GLdouble *v );
-+GLAPI void GLAPIENTRY glGetMapfv( GLenum target, GLenum query, GLfloat *v );
-+GLAPI void GLAPIENTRY glGetMapiv( GLenum target, GLenum query, GLint *v );
-+
-+GLAPI void GLAPIENTRY glEvalCoord1d( GLdouble u );
-+GLAPI void GLAPIENTRY glEvalCoord1f( GLfloat u );
-+
-+GLAPI void GLAPIENTRY glEvalCoord1dv( const GLdouble *u );
-+GLAPI void GLAPIENTRY glEvalCoord1fv( const GLfloat *u );
-+
-+GLAPI void GLAPIENTRY glEvalCoord2d( GLdouble u, GLdouble v );
-+GLAPI void GLAPIENTRY glEvalCoord2f( GLfloat u, GLfloat v );
-+
-+GLAPI void GLAPIENTRY glEvalCoord2dv( const GLdouble *u );
-+GLAPI void GLAPIENTRY glEvalCoord2fv( const GLfloat *u );
-+
-+GLAPI void GLAPIENTRY glMapGrid1d( GLint un, GLdouble u1, GLdouble u2 );
-+GLAPI void GLAPIENTRY glMapGrid1f( GLint un, GLfloat u1, GLfloat u2 );
-+
-+GLAPI void GLAPIENTRY glMapGrid2d( GLint un, GLdouble u1, GLdouble u2,
-+ GLint vn, GLdouble v1, GLdouble v2 );
-+GLAPI void GLAPIENTRY glMapGrid2f( GLint un, GLfloat u1, GLfloat u2,
-+ GLint vn, GLfloat v1, GLfloat v2 );
-+
-+GLAPI void GLAPIENTRY glEvalPoint1( GLint i );
-+
-+GLAPI void GLAPIENTRY glEvalPoint2( GLint i, GLint j );
-+
-+GLAPI void GLAPIENTRY glEvalMesh1( GLenum mode, GLint i1, GLint i2 );
-+
-+GLAPI void GLAPIENTRY glEvalMesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 );
-+
-+
-+/*
-+ * Fog
-+ */
-+
-+GLAPI void GLAPIENTRY glFogf( GLenum pname, GLfloat param );
-+
-+GLAPI void GLAPIENTRY glFogi( GLenum pname, GLint param );
-+
-+GLAPI void GLAPIENTRY glFogfv( GLenum pname, const GLfloat *params );
-+
-+GLAPI void GLAPIENTRY glFogiv( GLenum pname, const GLint *params );
-+
-+
-+/*
-+ * Selection and Feedback
-+ */
-+
-+GLAPI void GLAPIENTRY glFeedbackBuffer( GLsizei size, GLenum type, GLfloat *buffer );
-+
-+GLAPI void GLAPIENTRY glPassThrough( GLfloat token );
-+
-+GLAPI void GLAPIENTRY glSelectBuffer( GLsizei size, GLuint *buffer );
-+
-+GLAPI void GLAPIENTRY glInitNames( void );
-+
-+GLAPI void GLAPIENTRY glLoadName( GLuint name );
-+
-+GLAPI void GLAPIENTRY glPushName( GLuint name );
-+
-+GLAPI void GLAPIENTRY glPopName( void );
-+
-+
-+
-+/*
-+ * OpenGL 1.2
-+ */
-+
-+#define GL_RESCALE_NORMAL 0x803A
-+#define GL_CLAMP_TO_EDGE 0x812F
-+#define GL_MAX_ELEMENTS_VERTICES 0x80E8
-+#define GL_MAX_ELEMENTS_INDICES 0x80E9
-+#define GL_BGR 0x80E0
-+#define GL_BGRA 0x80E1
-+#define GL_UNSIGNED_BYTE_3_3_2 0x8032
-+#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362
-+#define GL_UNSIGNED_SHORT_5_6_5 0x8363
-+#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364
-+#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
-+#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365
-+#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
-+#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366
-+#define GL_UNSIGNED_INT_8_8_8_8 0x8035
-+#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367
-+#define GL_UNSIGNED_INT_10_10_10_2 0x8036
-+#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
-+#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8
-+#define GL_SINGLE_COLOR 0x81F9
-+#define GL_SEPARATE_SPECULAR_COLOR 0x81FA
-+#define GL_TEXTURE_MIN_LOD 0x813A
-+#define GL_TEXTURE_MAX_LOD 0x813B
-+#define GL_TEXTURE_BASE_LEVEL 0x813C
-+#define GL_TEXTURE_MAX_LEVEL 0x813D
-+#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12
-+#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13
-+#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22
-+#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23
-+#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
-+#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
-+#define GL_PACK_SKIP_IMAGES 0x806B
-+#define GL_PACK_IMAGE_HEIGHT 0x806C
-+#define GL_UNPACK_SKIP_IMAGES 0x806D
-+#define GL_UNPACK_IMAGE_HEIGHT 0x806E
-+#define GL_TEXTURE_3D 0x806F
-+#define GL_PROXY_TEXTURE_3D 0x8070
-+#define GL_TEXTURE_DEPTH 0x8071
-+#define GL_TEXTURE_WRAP_R 0x8072
-+#define GL_MAX_3D_TEXTURE_SIZE 0x8073
-+#define GL_TEXTURE_BINDING_3D 0x806A
-+
-+GLAPI void GLAPIENTRY glDrawRangeElements( GLenum mode, GLuint start,
-+ GLuint end, GLsizei count, GLenum type, const GLvoid *indices );
-+
-+GLAPI void GLAPIENTRY glTexImage3D( GLenum target, GLint level,
-+ GLint internalFormat,
-+ GLsizei width, GLsizei height,
-+ GLsizei depth, GLint border,
-+ GLenum format, GLenum type,
-+ const GLvoid *pixels );
-+
-+GLAPI void GLAPIENTRY glTexSubImage3D( GLenum target, GLint level,
-+ GLint xoffset, GLint yoffset,
-+ GLint zoffset, GLsizei width,
-+ GLsizei height, GLsizei depth,
-+ GLenum format,
-+ GLenum type, const GLvoid *pixels);
-+
-+GLAPI void GLAPIENTRY glCopyTexSubImage3D( GLenum target, GLint level,
-+ GLint xoffset, GLint yoffset,
-+ GLint zoffset, GLint x,
-+ GLint y, GLsizei width,
-+ GLsizei height );
-+
-+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
-+typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
-+typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
-+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-+
-+
-+/*
-+ * GL_ARB_imaging
-+ */
-+
-+#define GL_CONSTANT_COLOR 0x8001
-+#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
-+#define GL_CONSTANT_ALPHA 0x8003
-+#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
-+#define GL_COLOR_TABLE 0x80D0
-+#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1
-+#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2
-+#define GL_PROXY_COLOR_TABLE 0x80D3
-+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
-+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
-+#define GL_COLOR_TABLE_SCALE 0x80D6
-+#define GL_COLOR_TABLE_BIAS 0x80D7
-+#define GL_COLOR_TABLE_FORMAT 0x80D8
-+#define GL_COLOR_TABLE_WIDTH 0x80D9
-+#define GL_COLOR_TABLE_RED_SIZE 0x80DA
-+#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB
-+#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC
-+#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD
-+#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE
-+#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF
-+#define GL_CONVOLUTION_1D 0x8010
-+#define GL_CONVOLUTION_2D 0x8011
-+#define GL_SEPARABLE_2D 0x8012
-+#define GL_CONVOLUTION_BORDER_MODE 0x8013
-+#define GL_CONVOLUTION_FILTER_SCALE 0x8014
-+#define GL_CONVOLUTION_FILTER_BIAS 0x8015
-+#define GL_REDUCE 0x8016
-+#define GL_CONVOLUTION_FORMAT 0x8017
-+#define GL_CONVOLUTION_WIDTH 0x8018
-+#define GL_CONVOLUTION_HEIGHT 0x8019
-+#define GL_MAX_CONVOLUTION_WIDTH 0x801A
-+#define GL_MAX_CONVOLUTION_HEIGHT 0x801B
-+#define GL_POST_CONVOLUTION_RED_SCALE 0x801C
-+#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D
-+#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E
-+#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F
-+#define GL_POST_CONVOLUTION_RED_BIAS 0x8020
-+#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021
-+#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022
-+#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023
-+#define GL_CONSTANT_BORDER 0x8151
-+#define GL_REPLICATE_BORDER 0x8153
-+#define GL_CONVOLUTION_BORDER_COLOR 0x8154
-+#define GL_COLOR_MATRIX 0x80B1
-+#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2
-+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3
-+#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4
-+#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5
-+#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6
-+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7
-+#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8
-+#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9
-+#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA
-+#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB
-+#define GL_HISTOGRAM 0x8024
-+#define GL_PROXY_HISTOGRAM 0x8025
-+#define GL_HISTOGRAM_WIDTH 0x8026
-+#define GL_HISTOGRAM_FORMAT 0x8027
-+#define GL_HISTOGRAM_RED_SIZE 0x8028
-+#define GL_HISTOGRAM_GREEN_SIZE 0x8029
-+#define GL_HISTOGRAM_BLUE_SIZE 0x802A
-+#define GL_HISTOGRAM_ALPHA_SIZE 0x802B
-+#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C
-+#define GL_HISTOGRAM_SINK 0x802D
-+#define GL_MINMAX 0x802E
-+#define GL_MINMAX_FORMAT 0x802F
-+#define GL_MINMAX_SINK 0x8030
-+#define GL_TABLE_TOO_LARGE 0x8031
-+#define GL_BLEND_EQUATION 0x8009
-+#define GL_MIN 0x8007
-+#define GL_MAX 0x8008
-+#define GL_FUNC_ADD 0x8006
-+#define GL_FUNC_SUBTRACT 0x800A
-+#define GL_FUNC_REVERSE_SUBTRACT 0x800B
-+#define GL_BLEND_COLOR 0x8005
-+
-+
-+GLAPI void GLAPIENTRY glColorTable( GLenum target, GLenum internalformat,
-+ GLsizei width, GLenum format,
-+ GLenum type, const GLvoid *table );
-+
-+GLAPI void GLAPIENTRY glColorSubTable( GLenum target,
-+ GLsizei start, GLsizei count,
-+ GLenum format, GLenum type,
-+ const GLvoid *data );
-+
-+GLAPI void GLAPIENTRY glColorTableParameteriv(GLenum target, GLenum pname,
-+ const GLint *params);
-+
-+GLAPI void GLAPIENTRY glColorTableParameterfv(GLenum target, GLenum pname,
-+ const GLfloat *params);
-+
-+GLAPI void GLAPIENTRY glCopyColorSubTable( GLenum target, GLsizei start,
-+ GLint x, GLint y, GLsizei width );
-+
-+GLAPI void GLAPIENTRY glCopyColorTable( GLenum target, GLenum internalformat,
-+ GLint x, GLint y, GLsizei width );
-+
-+GLAPI void GLAPIENTRY glGetColorTable( GLenum target, GLenum format,
-+ GLenum type, GLvoid *table );
-+
-+GLAPI void GLAPIENTRY glGetColorTableParameterfv( GLenum target, GLenum pname,
-+ GLfloat *params );
-+
-+GLAPI void GLAPIENTRY glGetColorTableParameteriv( GLenum target, GLenum pname,
-+ GLint *params );
-+
-+GLAPI void GLAPIENTRY glBlendEquation( GLenum mode );
-+
-+GLAPI void GLAPIENTRY glBlendColor( GLclampf red, GLclampf green,
-+ GLclampf blue, GLclampf alpha );
-+
-+GLAPI void GLAPIENTRY glHistogram( GLenum target, GLsizei width,
-+ GLenum internalformat, GLboolean sink );
-+
-+GLAPI void GLAPIENTRY glResetHistogram( GLenum target );
-+
-+GLAPI void GLAPIENTRY glGetHistogram( GLenum target, GLboolean reset,
-+ GLenum format, GLenum type,
-+ GLvoid *values );
-+
-+GLAPI void GLAPIENTRY glGetHistogramParameterfv( GLenum target, GLenum pname,
-+ GLfloat *params );
-+
-+GLAPI void GLAPIENTRY glGetHistogramParameteriv( GLenum target, GLenum pname,
-+ GLint *params );
-+
-+GLAPI void GLAPIENTRY glMinmax( GLenum target, GLenum internalformat,
-+ GLboolean sink );
-+
-+GLAPI void GLAPIENTRY glResetMinmax( GLenum target );
-+
-+GLAPI void GLAPIENTRY glGetMinmax( GLenum target, GLboolean reset,
-+ GLenum format, GLenum types,
-+ GLvoid *values );
-+
-+GLAPI void GLAPIENTRY glGetMinmaxParameterfv( GLenum target, GLenum pname,
-+ GLfloat *params );
-+
-+GLAPI void GLAPIENTRY glGetMinmaxParameteriv( GLenum target, GLenum pname,
-+ GLint *params );
-+
-+GLAPI void GLAPIENTRY glConvolutionFilter1D( GLenum target,
-+ GLenum internalformat, GLsizei width, GLenum format, GLenum type,
-+ const GLvoid *image );
-+
-+GLAPI void GLAPIENTRY glConvolutionFilter2D( GLenum target,
-+ GLenum internalformat, GLsizei width, GLsizei height, GLenum format,
-+ GLenum type, const GLvoid *image );
-+
-+GLAPI void GLAPIENTRY glConvolutionParameterf( GLenum target, GLenum pname,
-+ GLfloat params );
-+
-+GLAPI void GLAPIENTRY glConvolutionParameterfv( GLenum target, GLenum pname,
-+ const GLfloat *params );
-+
-+GLAPI void GLAPIENTRY glConvolutionParameteri( GLenum target, GLenum pname,
-+ GLint params );
-+
-+GLAPI void GLAPIENTRY glConvolutionParameteriv( GLenum target, GLenum pname,
-+ const GLint *params );
-+
-+GLAPI void GLAPIENTRY glCopyConvolutionFilter1D( GLenum target,
-+ GLenum internalformat, GLint x, GLint y, GLsizei width );
-+
-+GLAPI void GLAPIENTRY glCopyConvolutionFilter2D( GLenum target,
-+ GLenum internalformat, GLint x, GLint y, GLsizei width,
-+ GLsizei height);
-+
-+GLAPI void GLAPIENTRY glGetConvolutionFilter( GLenum target, GLenum format,
-+ GLenum type, GLvoid *image );
-+
-+GLAPI void GLAPIENTRY glGetConvolutionParameterfv( GLenum target, GLenum pname,
-+ GLfloat *params );
-+
-+GLAPI void GLAPIENTRY glGetConvolutionParameteriv( GLenum target, GLenum pname,
-+ GLint *params );
-+
-+GLAPI void GLAPIENTRY glSeparableFilter2D( GLenum target,
-+ GLenum internalformat, GLsizei width, GLsizei height, GLenum format,
-+ GLenum type, const GLvoid *row, const GLvoid *column );
-+
-+GLAPI void GLAPIENTRY glGetSeparableFilter( GLenum target, GLenum format,
-+ GLenum type, GLvoid *row, GLvoid *column, GLvoid *span );
-+
-+typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-+typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
-+typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
-+typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
-+typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-+typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table);
-+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
-+typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
-+typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
-+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params);
-+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params);
-+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
-+typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-+typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
-+typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image);
-+typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
-+typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
-+typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
-+typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
-+typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
-+typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink);
-+typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target);
-+typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target);
-+
-+
-+
-+/*
-+ * OpenGL 1.3
-+ */
-+
-+/* multitexture */
-+#define GL_TEXTURE0 0x84C0
-+#define GL_TEXTURE1 0x84C1
-+#define GL_TEXTURE2 0x84C2
-+#define GL_TEXTURE3 0x84C3
-+#define GL_TEXTURE4 0x84C4
-+#define GL_TEXTURE5 0x84C5
-+#define GL_TEXTURE6 0x84C6
-+#define GL_TEXTURE7 0x84C7
-+#define GL_TEXTURE8 0x84C8
-+#define GL_TEXTURE9 0x84C9
-+#define GL_TEXTURE10 0x84CA
-+#define GL_TEXTURE11 0x84CB
-+#define GL_TEXTURE12 0x84CC
-+#define GL_TEXTURE13 0x84CD
-+#define GL_TEXTURE14 0x84CE
-+#define GL_TEXTURE15 0x84CF
-+#define GL_TEXTURE16 0x84D0
-+#define GL_TEXTURE17 0x84D1
-+#define GL_TEXTURE18 0x84D2
-+#define GL_TEXTURE19 0x84D3
-+#define GL_TEXTURE20 0x84D4
-+#define GL_TEXTURE21 0x84D5
-+#define GL_TEXTURE22 0x84D6
-+#define GL_TEXTURE23 0x84D7
-+#define GL_TEXTURE24 0x84D8
-+#define GL_TEXTURE25 0x84D9
-+#define GL_TEXTURE26 0x84DA
-+#define GL_TEXTURE27 0x84DB
-+#define GL_TEXTURE28 0x84DC
-+#define GL_TEXTURE29 0x84DD
-+#define GL_TEXTURE30 0x84DE
-+#define GL_TEXTURE31 0x84DF
-+#define GL_ACTIVE_TEXTURE 0x84E0
-+#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1
-+#define GL_MAX_TEXTURE_UNITS 0x84E2
-+/* texture_cube_map */
-+#define GL_NORMAL_MAP 0x8511
-+#define GL_REFLECTION_MAP 0x8512
-+#define GL_TEXTURE_CUBE_MAP 0x8513
-+#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514
-+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
-+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
-+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
-+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
-+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
-+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
-+#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B
-+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
-+/* texture_compression */
-+#define GL_COMPRESSED_ALPHA 0x84E9
-+#define GL_COMPRESSED_LUMINANCE 0x84EA
-+#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB
-+#define GL_COMPRESSED_INTENSITY 0x84EC
-+#define GL_COMPRESSED_RGB 0x84ED
-+#define GL_COMPRESSED_RGBA 0x84EE
-+#define GL_TEXTURE_COMPRESSION_HINT 0x84EF
-+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0
-+#define GL_TEXTURE_COMPRESSED 0x86A1
-+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
-+#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
-+/* multisample */
-+#define GL_MULTISAMPLE 0x809D
-+#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
-+#define GL_SAMPLE_ALPHA_TO_ONE 0x809F
-+#define GL_SAMPLE_COVERAGE 0x80A0
-+#define GL_SAMPLE_BUFFERS 0x80A8
-+#define GL_SAMPLES 0x80A9
-+#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
-+#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
-+#define GL_MULTISAMPLE_BIT 0x20000000
-+/* transpose_matrix */
-+#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3
-+#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4
-+#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5
-+#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6
-+/* texture_env_combine */
-+#define GL_COMBINE 0x8570
-+#define GL_COMBINE_RGB 0x8571
-+#define GL_COMBINE_ALPHA 0x8572
-+#define GL_SOURCE0_RGB 0x8580
-+#define GL_SOURCE1_RGB 0x8581
-+#define GL_SOURCE2_RGB 0x8582
-+#define GL_SOURCE0_ALPHA 0x8588
-+#define GL_SOURCE1_ALPHA 0x8589
-+#define GL_SOURCE2_ALPHA 0x858A
-+#define GL_OPERAND0_RGB 0x8590
-+#define GL_OPERAND1_RGB 0x8591
-+#define GL_OPERAND2_RGB 0x8592
-+#define GL_OPERAND0_ALPHA 0x8598
-+#define GL_OPERAND1_ALPHA 0x8599
-+#define GL_OPERAND2_ALPHA 0x859A
-+#define GL_RGB_SCALE 0x8573
-+#define GL_ADD_SIGNED 0x8574
-+#define GL_INTERPOLATE 0x8575
-+#define GL_SUBTRACT 0x84E7
-+#define GL_CONSTANT 0x8576
-+#define GL_PRIMARY_COLOR 0x8577
-+#define GL_PREVIOUS 0x8578
-+/* texture_env_dot3 */
-+#define GL_DOT3_RGB 0x86AE
-+#define GL_DOT3_RGBA 0x86AF
-+/* texture_border_clamp */
-+#define GL_CLAMP_TO_BORDER 0x812D
-+
-+GLAPI void GLAPIENTRY glActiveTexture( GLenum texture );
-+
-+GLAPI void GLAPIENTRY glClientActiveTexture( GLenum texture );
-+
-+GLAPI void GLAPIENTRY glCompressedTexImage1D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data );
-+
-+GLAPI void GLAPIENTRY glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data );
-+
-+GLAPI void GLAPIENTRY glCompressedTexImage3D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data );
-+
-+GLAPI void GLAPIENTRY glCompressedTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data );
-+
-+GLAPI void GLAPIENTRY glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data );
-+
-+GLAPI void GLAPIENTRY glCompressedTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data );
-+
-+GLAPI void GLAPIENTRY glGetCompressedTexImage( GLenum target, GLint lod, GLvoid *img );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord1d( GLenum target, GLdouble s );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord1dv( GLenum target, const GLdouble *v );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord1f( GLenum target, GLfloat s );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord1fv( GLenum target, const GLfloat *v );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord1i( GLenum target, GLint s );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord1iv( GLenum target, const GLint *v );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord1s( GLenum target, GLshort s );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord1sv( GLenum target, const GLshort *v );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord2d( GLenum target, GLdouble s, GLdouble t );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord2dv( GLenum target, const GLdouble *v );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord2f( GLenum target, GLfloat s, GLfloat t );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord2fv( GLenum target, const GLfloat *v );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord2i( GLenum target, GLint s, GLint t );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord2iv( GLenum target, const GLint *v );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord2s( GLenum target, GLshort s, GLshort t );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord2sv( GLenum target, const GLshort *v );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord3d( GLenum target, GLdouble s, GLdouble t, GLdouble r );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord3dv( GLenum target, const GLdouble *v );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord3f( GLenum target, GLfloat s, GLfloat t, GLfloat r );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord3fv( GLenum target, const GLfloat *v );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord3i( GLenum target, GLint s, GLint t, GLint r );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord3iv( GLenum target, const GLint *v );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord3s( GLenum target, GLshort s, GLshort t, GLshort r );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord3sv( GLenum target, const GLshort *v );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord4d( GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord4dv( GLenum target, const GLdouble *v );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord4f( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord4fv( GLenum target, const GLfloat *v );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord4i( GLenum target, GLint s, GLint t, GLint r, GLint q );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord4iv( GLenum target, const GLint *v );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord4s( GLenum target, GLshort s, GLshort t, GLshort r, GLshort q );
-+
-+GLAPI void GLAPIENTRY glMultiTexCoord4sv( GLenum target, const GLshort *v );
-+
-+
-+GLAPI void GLAPIENTRY glLoadTransposeMatrixd( const GLdouble m[16] );
-+
-+GLAPI void GLAPIENTRY glLoadTransposeMatrixf( const GLfloat m[16] );
-+
-+GLAPI void GLAPIENTRY glMultTransposeMatrixd( const GLdouble m[16] );
-+
-+GLAPI void GLAPIENTRY glMultTransposeMatrixf( const GLfloat m[16] );
-+
-+GLAPI void GLAPIENTRY glSampleCoverage( GLclampf value, GLboolean invert );
-+
-+typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
-+typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v);
-+typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m);
-+typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m);
-+typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m);
-+typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m);
-+typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
-+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *img);
-+
-+
-+/*
-+ * GL_ARB_multitexture (ARB extension 1 and OpenGL 1.2.1)
-+ */
-+#ifndef GL_ARB_multitexture
-+#define GL_ARB_multitexture 1
-+
-+#define GL_TEXTURE0_ARB 0x84C0
-+#define GL_TEXTURE1_ARB 0x84C1
-+#define GL_TEXTURE2_ARB 0x84C2
-+#define GL_TEXTURE3_ARB 0x84C3
-+#define GL_TEXTURE4_ARB 0x84C4
-+#define GL_TEXTURE5_ARB 0x84C5
-+#define GL_TEXTURE6_ARB 0x84C6
-+#define GL_TEXTURE7_ARB 0x84C7
-+#define GL_TEXTURE8_ARB 0x84C8
-+#define GL_TEXTURE9_ARB 0x84C9
-+#define GL_TEXTURE10_ARB 0x84CA
-+#define GL_TEXTURE11_ARB 0x84CB
-+#define GL_TEXTURE12_ARB 0x84CC
-+#define GL_TEXTURE13_ARB 0x84CD
-+#define GL_TEXTURE14_ARB 0x84CE
-+#define GL_TEXTURE15_ARB 0x84CF
-+#define GL_TEXTURE16_ARB 0x84D0
-+#define GL_TEXTURE17_ARB 0x84D1
-+#define GL_TEXTURE18_ARB 0x84D2
-+#define GL_TEXTURE19_ARB 0x84D3
-+#define GL_TEXTURE20_ARB 0x84D4
-+#define GL_TEXTURE21_ARB 0x84D5
-+#define GL_TEXTURE22_ARB 0x84D6
-+#define GL_TEXTURE23_ARB 0x84D7
-+#define GL_TEXTURE24_ARB 0x84D8
-+#define GL_TEXTURE25_ARB 0x84D9
-+#define GL_TEXTURE26_ARB 0x84DA
-+#define GL_TEXTURE27_ARB 0x84DB
-+#define GL_TEXTURE28_ARB 0x84DC
-+#define GL_TEXTURE29_ARB 0x84DD
-+#define GL_TEXTURE30_ARB 0x84DE
-+#define GL_TEXTURE31_ARB 0x84DF
-+#define GL_ACTIVE_TEXTURE_ARB 0x84E0
-+#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1
-+#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2
-+
-+GLAPI void GLAPIENTRY glActiveTextureARB(GLenum texture);
-+GLAPI void GLAPIENTRY glClientActiveTextureARB(GLenum texture);
-+GLAPI void GLAPIENTRY glMultiTexCoord1dARB(GLenum target, GLdouble s);
-+GLAPI void GLAPIENTRY glMultiTexCoord1dvARB(GLenum target, const GLdouble *v);
-+GLAPI void GLAPIENTRY glMultiTexCoord1fARB(GLenum target, GLfloat s);
-+GLAPI void GLAPIENTRY glMultiTexCoord1fvARB(GLenum target, const GLfloat *v);
-+GLAPI void GLAPIENTRY glMultiTexCoord1iARB(GLenum target, GLint s);
-+GLAPI void GLAPIENTRY glMultiTexCoord1ivARB(GLenum target, const GLint *v);
-+GLAPI void GLAPIENTRY glMultiTexCoord1sARB(GLenum target, GLshort s);
-+GLAPI void GLAPIENTRY glMultiTexCoord1svARB(GLenum target, const GLshort *v);
-+GLAPI void GLAPIENTRY glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t);
-+GLAPI void GLAPIENTRY glMultiTexCoord2dvARB(GLenum target, const GLdouble *v);
-+GLAPI void GLAPIENTRY glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t);
-+GLAPI void GLAPIENTRY glMultiTexCoord2fvARB(GLenum target, const GLfloat *v);
-+GLAPI void GLAPIENTRY glMultiTexCoord2iARB(GLenum target, GLint s, GLint t);
-+GLAPI void GLAPIENTRY glMultiTexCoord2ivARB(GLenum target, const GLint *v);
-+GLAPI void GLAPIENTRY glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t);
-+GLAPI void GLAPIENTRY glMultiTexCoord2svARB(GLenum target, const GLshort *v);
-+GLAPI void GLAPIENTRY glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r);
-+GLAPI void GLAPIENTRY glMultiTexCoord3dvARB(GLenum target, const GLdouble *v);
-+GLAPI void GLAPIENTRY glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r);
-+GLAPI void GLAPIENTRY glMultiTexCoord3fvARB(GLenum target, const GLfloat *v);
-+GLAPI void GLAPIENTRY glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r);
-+GLAPI void GLAPIENTRY glMultiTexCoord3ivARB(GLenum target, const GLint *v);
-+GLAPI void GLAPIENTRY glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r);
-+GLAPI void GLAPIENTRY glMultiTexCoord3svARB(GLenum target, const GLshort *v);
-+GLAPI void GLAPIENTRY glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-+GLAPI void GLAPIENTRY glMultiTexCoord4dvARB(GLenum target, const GLdouble *v);
-+GLAPI void GLAPIENTRY glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-+GLAPI void GLAPIENTRY glMultiTexCoord4fvARB(GLenum target, const GLfloat *v);
-+GLAPI void GLAPIENTRY glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q);
-+GLAPI void GLAPIENTRY glMultiTexCoord4ivARB(GLenum target, const GLint *v);
-+GLAPI void GLAPIENTRY glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-+GLAPI void GLAPIENTRY glMultiTexCoord4svARB(GLenum target, const GLshort *v);
-+
-+typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
-+typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
-+
-+#endif /* GL_ARB_multitexture */
-+
-+
-+
-+/*
-+ * Define this token if you want "old-style" header file behaviour (extensions
-+ * defined in gl.h). Otherwise, extensions will be included from glext.h.
-+ */
-+#if defined(GL_GLEXT_LEGACY)
-+
-+/* All extensions that used to be here are now found in glext.h */
-+
-+#else /* GL_GLEXT_LEGACY */
-+
-+#include <mesa_glext.h>
-+
-+#endif /* GL_GLEXT_LEGACY */
-+
-+
-+
-+#if GL_ARB_shader_objects
-+
-+#ifndef GL_MESA_shader_debug
-+#define GL_MESA_shader_debug 1
-+
-+#define GL_DEBUG_OBJECT_MESA 0x8759
-+#define GL_DEBUG_PRINT_MESA 0x875A
-+#define GL_DEBUG_ASSERT_MESA 0x875B
-+
-+GLAPI GLhandleARB APIENTRY glCreateDebugObjectMESA (void);
-+GLAPI void APIENTRY glClearDebugLogMESA (GLhandleARB obj, GLenum logType, GLenum shaderType);
-+GLAPI void APIENTRY glGetDebugLogMESA (GLhandleARB obj, GLenum logType, GLenum shaderType, GLsizei maxLength,
-+ GLsizei *length, GLcharARB *debugLog);
-+GLAPI GLsizei APIENTRY glGetDebugLogLengthMESA (GLhandleARB obj, GLenum logType, GLenum shaderType);
-+
-+#endif /* GL_MESA_shader_debug */
-+
-+#endif /* GL_ARB_shader_objects */
-+
-+
-+/*
-+ * ???. GL_MESA_packed_depth_stencil
-+ * XXX obsolete
-+ */
-+#ifndef GL_MESA_packed_depth_stencil
-+#define GL_MESA_packed_depth_stencil 1
-+
-+#define GL_DEPTH_STENCIL_MESA 0x8750
-+#define GL_UNSIGNED_INT_24_8_MESA 0x8751
-+#define GL_UNSIGNED_INT_8_24_REV_MESA 0x8752
-+#define GL_UNSIGNED_SHORT_15_1_MESA 0x8753
-+#define GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754
-+
-+#endif /* GL_MESA_packed_depth_stencil */
-+
-+
-+#ifndef GL_MESA_program_debug
-+#define GL_MESA_program_debug 1
-+
-+#define GL_FRAGMENT_PROGRAM_POSITION_MESA 0x8bb0
-+#define GL_FRAGMENT_PROGRAM_CALLBACK_MESA 0x8bb1
-+#define GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA 0x8bb2
-+#define GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA 0x8bb3
-+#define GL_VERTEX_PROGRAM_POSITION_MESA 0x8bb4
-+#define GL_VERTEX_PROGRAM_CALLBACK_MESA 0x8bb5
-+#define GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA 0x8bb6
-+#define GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA 0x8bb7
-+
-+typedef void (*GLprogramcallbackMESA)(GLenum target, GLvoid *data);
-+
-+GLAPI void GLAPIENTRY glProgramCallbackMESA(GLenum target, GLprogramcallbackMESA callback, GLvoid *data);
-+
-+GLAPI void GLAPIENTRY glGetProgramRegisterfvMESA(GLenum target, GLsizei len, const GLubyte *name, GLfloat *v);
-+
-+#endif /* GL_MESA_program_debug */
-+
-+
-+#ifndef GL_ATI_blend_equation_separate
-+#define GL_ATI_blend_equation_separate 1
-+
-+#define GL_ALPHA_BLEND_EQUATION_ATI 0x883D
-+
-+GLAPI void GLAPIENTRY glBlendEquationSeparateATI( GLenum modeRGB, GLenum modeA );
-+typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEATIPROC) (GLenum modeRGB, GLenum modeA);
-+
-+#endif /* GL_ATI_blend_equation_separate */
-+
-+
-+
-+/**
-+ ** NOTE!!!!! If you add new functions to this file, or update
-+ ** glext.h be sure to regenerate the gl_mangle.h file. See comments
-+ ** in that file for details.
-+ **/
-+
-+
-+
-+/**********************************************************************
-+ * Begin system-specific stuff
-+ */
-+#if defined(PRAGMA_EXPORT_SUPPORTED)
-+#pragma export off
-+#endif
-+
-+#if defined(macintosh) && PRAGMA_IMPORT_SUPPORTED
-+#pragma import off
-+#endif
-+/*
-+ * End system-specific stuff
-+ **********************************************************************/
-+
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif /* __gl_h_ */
-Index: qemu-0.12.4/target-i386/mesa_glext.h
-===================================================================
---- /dev/null
-+++ qemu-0.12.4/target-i386/mesa_glext.h
-@@ -0,0 +1,7279 @@
-+#ifndef __glext_h_
-+#define __glext_h_
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+/*
-+** Copyright (c) 2007 The Khronos Group Inc.
-+**
-+** Permission is hereby granted, free of charge, to any person obtaining a
-+** copy of this software and/or associated documentation files (the
-+** "Materials"), to deal in the Materials without restriction, including
-+** without limitation the rights to use, copy, modify, merge, publish,
-+** distribute, sublicense, and/or sell copies of the Materials, and to
-+** permit persons to whom the Materials are 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 Materials.
-+**
-+** THE MATERIALS ARE 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-+*/
-+
-+#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
-+#define WIN32_LEAN_AND_MEAN 1
-+#include <windows.h>
-+#endif
-+
-+#ifndef APIENTRY
-+#define APIENTRY
-+#endif
-+#ifndef APIENTRYP
-+#define APIENTRYP APIENTRY *
-+#endif
-+#ifndef GLAPI
-+#define GLAPI extern
-+#endif
-+
-+/*************************************************************/
-+
-+/* Header file version number, required by OpenGL ABI for Linux */
-+/* glext.h last updated 2007/02/12 */
-+/* Current version at http://www.opengl.org/registry/ */
-+#define GL_GLEXT_VERSION 39
-+
-+#ifndef GL_VERSION_1_2
-+#define GL_UNSIGNED_BYTE_3_3_2 0x8032
-+#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
-+#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
-+#define GL_UNSIGNED_INT_8_8_8_8 0x8035
-+#define GL_UNSIGNED_INT_10_10_10_2 0x8036
-+#define GL_RESCALE_NORMAL 0x803A
-+#define GL_TEXTURE_BINDING_3D 0x806A
-+#define GL_PACK_SKIP_IMAGES 0x806B
-+#define GL_PACK_IMAGE_HEIGHT 0x806C
-+#define GL_UNPACK_SKIP_IMAGES 0x806D
-+#define GL_UNPACK_IMAGE_HEIGHT 0x806E
-+#define GL_TEXTURE_3D 0x806F
-+#define GL_PROXY_TEXTURE_3D 0x8070
-+#define GL_TEXTURE_DEPTH 0x8071
-+#define GL_TEXTURE_WRAP_R 0x8072
-+#define GL_MAX_3D_TEXTURE_SIZE 0x8073
-+#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362
-+#define GL_UNSIGNED_SHORT_5_6_5 0x8363
-+#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364
-+#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365
-+#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366
-+#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367
-+#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
-+#define GL_BGR 0x80E0
-+#define GL_BGRA 0x80E1
-+#define GL_MAX_ELEMENTS_VERTICES 0x80E8
-+#define GL_MAX_ELEMENTS_INDICES 0x80E9
-+#define GL_CLAMP_TO_EDGE 0x812F
-+#define GL_TEXTURE_MIN_LOD 0x813A
-+#define GL_TEXTURE_MAX_LOD 0x813B
-+#define GL_TEXTURE_BASE_LEVEL 0x813C
-+#define GL_TEXTURE_MAX_LEVEL 0x813D
-+#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8
-+#define GL_SINGLE_COLOR 0x81F9
-+#define GL_SEPARATE_SPECULAR_COLOR 0x81FA
-+#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12
-+#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13
-+#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22
-+#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23
-+#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
-+#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
-+#endif
-+
-+#ifndef GL_ARB_imaging
-+#define GL_CONSTANT_COLOR 0x8001
-+#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
-+#define GL_CONSTANT_ALPHA 0x8003
-+#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
-+#define GL_BLEND_COLOR 0x8005
-+#define GL_FUNC_ADD 0x8006
-+#define GL_MIN 0x8007
-+#define GL_MAX 0x8008
-+#define GL_BLEND_EQUATION 0x8009
-+#define GL_FUNC_SUBTRACT 0x800A
-+#define GL_FUNC_REVERSE_SUBTRACT 0x800B
-+#define GL_CONVOLUTION_1D 0x8010
-+#define GL_CONVOLUTION_2D 0x8011
-+#define GL_SEPARABLE_2D 0x8012
-+#define GL_CONVOLUTION_BORDER_MODE 0x8013
-+#define GL_CONVOLUTION_FILTER_SCALE 0x8014
-+#define GL_CONVOLUTION_FILTER_BIAS 0x8015
-+#define GL_REDUCE 0x8016
-+#define GL_CONVOLUTION_FORMAT 0x8017
-+#define GL_CONVOLUTION_WIDTH 0x8018
-+#define GL_CONVOLUTION_HEIGHT 0x8019
-+#define GL_MAX_CONVOLUTION_WIDTH 0x801A
-+#define GL_MAX_CONVOLUTION_HEIGHT 0x801B
-+#define GL_POST_CONVOLUTION_RED_SCALE 0x801C
-+#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D
-+#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E
-+#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F
-+#define GL_POST_CONVOLUTION_RED_BIAS 0x8020
-+#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021
-+#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022
-+#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023
-+#define GL_HISTOGRAM 0x8024
-+#define GL_PROXY_HISTOGRAM 0x8025
-+#define GL_HISTOGRAM_WIDTH 0x8026
-+#define GL_HISTOGRAM_FORMAT 0x8027
-+#define GL_HISTOGRAM_RED_SIZE 0x8028
-+#define GL_HISTOGRAM_GREEN_SIZE 0x8029
-+#define GL_HISTOGRAM_BLUE_SIZE 0x802A
-+#define GL_HISTOGRAM_ALPHA_SIZE 0x802B
-+#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C
-+#define GL_HISTOGRAM_SINK 0x802D
-+#define GL_MINMAX 0x802E
-+#define GL_MINMAX_FORMAT 0x802F
-+#define GL_MINMAX_SINK 0x8030
-+#define GL_TABLE_TOO_LARGE 0x8031
-+#define GL_COLOR_MATRIX 0x80B1
-+#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2
-+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3
-+#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4
-+#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5
-+#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6
-+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7
-+#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8
-+#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9
-+#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA
-+#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB
-+#define GL_COLOR_TABLE 0x80D0
-+#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1
-+#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2
-+#define GL_PROXY_COLOR_TABLE 0x80D3
-+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
-+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
-+#define GL_COLOR_TABLE_SCALE 0x80D6
-+#define GL_COLOR_TABLE_BIAS 0x80D7
-+#define GL_COLOR_TABLE_FORMAT 0x80D8
-+#define GL_COLOR_TABLE_WIDTH 0x80D9
-+#define GL_COLOR_TABLE_RED_SIZE 0x80DA
-+#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB
-+#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC
-+#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD
-+#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE
-+#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF
-+#define GL_CONSTANT_BORDER 0x8151
-+#define GL_REPLICATE_BORDER 0x8153
-+#define GL_CONVOLUTION_BORDER_COLOR 0x8154
-+#endif
-+
-+#ifndef GL_VERSION_1_3
-+#define GL_TEXTURE0 0x84C0
-+#define GL_TEXTURE1 0x84C1
-+#define GL_TEXTURE2 0x84C2
-+#define GL_TEXTURE3 0x84C3
-+#define GL_TEXTURE4 0x84C4
-+#define GL_TEXTURE5 0x84C5
-+#define GL_TEXTURE6 0x84C6
-+#define GL_TEXTURE7 0x84C7
-+#define GL_TEXTURE8 0x84C8
-+#define GL_TEXTURE9 0x84C9
-+#define GL_TEXTURE10 0x84CA
-+#define GL_TEXTURE11 0x84CB
-+#define GL_TEXTURE12 0x84CC
-+#define GL_TEXTURE13 0x84CD
-+#define GL_TEXTURE14 0x84CE
-+#define GL_TEXTURE15 0x84CF
-+#define GL_TEXTURE16 0x84D0
-+#define GL_TEXTURE17 0x84D1
-+#define GL_TEXTURE18 0x84D2
-+#define GL_TEXTURE19 0x84D3
-+#define GL_TEXTURE20 0x84D4
-+#define GL_TEXTURE21 0x84D5
-+#define GL_TEXTURE22 0x84D6
-+#define GL_TEXTURE23 0x84D7
-+#define GL_TEXTURE24 0x84D8
-+#define GL_TEXTURE25 0x84D9
-+#define GL_TEXTURE26 0x84DA
-+#define GL_TEXTURE27 0x84DB
-+#define GL_TEXTURE28 0x84DC
-+#define GL_TEXTURE29 0x84DD
-+#define GL_TEXTURE30 0x84DE
-+#define GL_TEXTURE31 0x84DF
-+#define GL_ACTIVE_TEXTURE 0x84E0
-+#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1
-+#define GL_MAX_TEXTURE_UNITS 0x84E2
-+#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3
-+#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4
-+#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5
-+#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6
-+#define GL_MULTISAMPLE 0x809D
-+#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
-+#define GL_SAMPLE_ALPHA_TO_ONE 0x809F
-+#define GL_SAMPLE_COVERAGE 0x80A0
-+#define GL_SAMPLE_BUFFERS 0x80A8
-+#define GL_SAMPLES 0x80A9
-+#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
-+#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
-+#define GL_MULTISAMPLE_BIT 0x20000000
-+#define GL_NORMAL_MAP 0x8511
-+#define GL_REFLECTION_MAP 0x8512
-+#define GL_TEXTURE_CUBE_MAP 0x8513
-+#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514
-+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
-+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
-+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
-+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
-+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
-+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
-+#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B
-+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
-+#define GL_COMPRESSED_ALPHA 0x84E9
-+#define GL_COMPRESSED_LUMINANCE 0x84EA
-+#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB
-+#define GL_COMPRESSED_INTENSITY 0x84EC
-+#define GL_COMPRESSED_RGB 0x84ED
-+#define GL_COMPRESSED_RGBA 0x84EE
-+#define GL_TEXTURE_COMPRESSION_HINT 0x84EF
-+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0
-+#define GL_TEXTURE_COMPRESSED 0x86A1
-+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
-+#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
-+#define GL_CLAMP_TO_BORDER 0x812D
-+#define GL_COMBINE 0x8570
-+#define GL_COMBINE_RGB 0x8571
-+#define GL_COMBINE_ALPHA 0x8572
-+#define GL_SOURCE0_RGB 0x8580
-+#define GL_SOURCE1_RGB 0x8581
-+#define GL_SOURCE2_RGB 0x8582
-+#define GL_SOURCE0_ALPHA 0x8588
-+#define GL_SOURCE1_ALPHA 0x8589
-+#define GL_SOURCE2_ALPHA 0x858A
-+#define GL_OPERAND0_RGB 0x8590
-+#define GL_OPERAND1_RGB 0x8591
-+#define GL_OPERAND2_RGB 0x8592
-+#define GL_OPERAND0_ALPHA 0x8598
-+#define GL_OPERAND1_ALPHA 0x8599
-+#define GL_OPERAND2_ALPHA 0x859A
-+#define GL_RGB_SCALE 0x8573
-+#define GL_ADD_SIGNED 0x8574
-+#define GL_INTERPOLATE 0x8575
-+#define GL_SUBTRACT 0x84E7
-+#define GL_CONSTANT 0x8576
-+#define GL_PRIMARY_COLOR 0x8577
-+#define GL_PREVIOUS 0x8578
-+#define GL_DOT3_RGB 0x86AE
-+#define GL_DOT3_RGBA 0x86AF
-+#endif
-+
-+#ifndef GL_VERSION_1_4
-+#define GL_BLEND_DST_RGB 0x80C8
-+#define GL_BLEND_SRC_RGB 0x80C9
-+#define GL_BLEND_DST_ALPHA 0x80CA
-+#define GL_BLEND_SRC_ALPHA 0x80CB
-+#define GL_POINT_SIZE_MIN 0x8126
-+#define GL_POINT_SIZE_MAX 0x8127
-+#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128
-+#define GL_POINT_DISTANCE_ATTENUATION 0x8129
-+#define GL_GENERATE_MIPMAP 0x8191
-+#define GL_GENERATE_MIPMAP_HINT 0x8192
-+#define GL_DEPTH_COMPONENT16 0x81A5
-+#define GL_DEPTH_COMPONENT24 0x81A6
-+#define GL_DEPTH_COMPONENT32 0x81A7
-+#define GL_MIRRORED_REPEAT 0x8370
-+#define GL_FOG_COORDINATE_SOURCE 0x8450
-+#define GL_FOG_COORDINATE 0x8451
-+#define GL_FRAGMENT_DEPTH 0x8452
-+#define GL_CURRENT_FOG_COORDINATE 0x8453
-+#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454
-+#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455
-+#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456
-+#define GL_FOG_COORDINATE_ARRAY 0x8457
-+#define GL_COLOR_SUM 0x8458
-+#define GL_CURRENT_SECONDARY_COLOR 0x8459
-+#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A
-+#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B
-+#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C
-+#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D
-+#define GL_SECONDARY_COLOR_ARRAY 0x845E
-+#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD
-+#define GL_TEXTURE_FILTER_CONTROL 0x8500
-+#define GL_TEXTURE_LOD_BIAS 0x8501
-+#define GL_INCR_WRAP 0x8507
-+#define GL_DECR_WRAP 0x8508
-+#define GL_TEXTURE_DEPTH_SIZE 0x884A
-+#define GL_DEPTH_TEXTURE_MODE 0x884B
-+#define GL_TEXTURE_COMPARE_MODE 0x884C
-+#define GL_TEXTURE_COMPARE_FUNC 0x884D
-+#define GL_COMPARE_R_TO_TEXTURE 0x884E
-+#endif
-+
-+#ifndef GL_VERSION_1_5
-+#define GL_BUFFER_SIZE 0x8764
-+#define GL_BUFFER_USAGE 0x8765
-+#define GL_QUERY_COUNTER_BITS 0x8864
-+#define GL_CURRENT_QUERY 0x8865
-+#define GL_QUERY_RESULT 0x8866
-+#define GL_QUERY_RESULT_AVAILABLE 0x8867
-+#define GL_ARRAY_BUFFER 0x8892
-+#define GL_ELEMENT_ARRAY_BUFFER 0x8893
-+#define GL_ARRAY_BUFFER_BINDING 0x8894
-+#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895
-+#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896
-+#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897
-+#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898
-+#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899
-+#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A
-+#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B
-+#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C
-+#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D
-+#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E
-+#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
-+#define GL_READ_ONLY 0x88B8
-+#define GL_WRITE_ONLY 0x88B9
-+#define GL_READ_WRITE 0x88BA
-+#define GL_BUFFER_ACCESS 0x88BB
-+#define GL_BUFFER_MAPPED 0x88BC
-+#define GL_BUFFER_MAP_POINTER 0x88BD
-+#define GL_STREAM_DRAW 0x88E0
-+#define GL_STREAM_READ 0x88E1
-+#define GL_STREAM_COPY 0x88E2
-+#define GL_STATIC_DRAW 0x88E4
-+#define GL_STATIC_READ 0x88E5
-+#define GL_STATIC_COPY 0x88E6
-+#define GL_DYNAMIC_DRAW 0x88E8
-+#define GL_DYNAMIC_READ 0x88E9
-+#define GL_DYNAMIC_COPY 0x88EA
-+#define GL_SAMPLES_PASSED 0x8914
-+#define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE
-+#define GL_FOG_COORD GL_FOG_COORDINATE
-+#define GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE
-+#define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE
-+#define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE
-+#define GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER
-+#define GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY
-+#define GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING
-+#define GL_SRC0_RGB GL_SOURCE0_RGB
-+#define GL_SRC1_RGB GL_SOURCE1_RGB
-+#define GL_SRC2_RGB GL_SOURCE2_RGB
-+#define GL_SRC0_ALPHA GL_SOURCE0_ALPHA
-+#define GL_SRC1_ALPHA GL_SOURCE1_ALPHA
-+#define GL_SRC2_ALPHA GL_SOURCE2_ALPHA
-+#endif
-+
-+#ifndef GL_VERSION_2_0
-+#define GL_BLEND_EQUATION_RGB GL_BLEND_EQUATION
-+#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622
-+#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623
-+#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624
-+#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625
-+#define GL_CURRENT_VERTEX_ATTRIB 0x8626
-+#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642
-+#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643
-+#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645
-+#define GL_STENCIL_BACK_FUNC 0x8800
-+#define GL_STENCIL_BACK_FAIL 0x8801
-+#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802
-+#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803
-+#define GL_MAX_DRAW_BUFFERS 0x8824
-+#define GL_DRAW_BUFFER0 0x8825
-+#define GL_DRAW_BUFFER1 0x8826
-+#define GL_DRAW_BUFFER2 0x8827
-+#define GL_DRAW_BUFFER3 0x8828
-+#define GL_DRAW_BUFFER4 0x8829
-+#define GL_DRAW_BUFFER5 0x882A
-+#define GL_DRAW_BUFFER6 0x882B
-+#define GL_DRAW_BUFFER7 0x882C
-+#define GL_DRAW_BUFFER8 0x882D
-+#define GL_DRAW_BUFFER9 0x882E
-+#define GL_DRAW_BUFFER10 0x882F
-+#define GL_DRAW_BUFFER11 0x8830
-+#define GL_DRAW_BUFFER12 0x8831
-+#define GL_DRAW_BUFFER13 0x8832
-+#define GL_DRAW_BUFFER14 0x8833
-+#define GL_DRAW_BUFFER15 0x8834
-+#define GL_BLEND_EQUATION_ALPHA 0x883D
-+#define GL_POINT_SPRITE 0x8861
-+#define GL_COORD_REPLACE 0x8862
-+#define GL_MAX_VERTEX_ATTRIBS 0x8869
-+#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
-+#define GL_MAX_TEXTURE_COORDS 0x8871
-+#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872
-+#define GL_FRAGMENT_SHADER 0x8B30
-+#define GL_VERTEX_SHADER 0x8B31
-+#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49
-+#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A
-+#define GL_MAX_VARYING_FLOATS 0x8B4B
-+#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
-+#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
-+#define GL_SHADER_TYPE 0x8B4F
-+#define GL_FLOAT_VEC2 0x8B50
-+#define GL_FLOAT_VEC3 0x8B51
-+#define GL_FLOAT_VEC4 0x8B52
-+#define GL_INT_VEC2 0x8B53
-+#define GL_INT_VEC3 0x8B54
-+#define GL_INT_VEC4 0x8B55
-+#define GL_BOOL 0x8B56
-+#define GL_BOOL_VEC2 0x8B57
-+#define GL_BOOL_VEC3 0x8B58
-+#define GL_BOOL_VEC4 0x8B59
-+#define GL_FLOAT_MAT2 0x8B5A
-+#define GL_FLOAT_MAT3 0x8B5B
-+#define GL_FLOAT_MAT4 0x8B5C
-+#define GL_SAMPLER_1D 0x8B5D
-+#define GL_SAMPLER_2D 0x8B5E
-+#define GL_SAMPLER_3D 0x8B5F
-+#define GL_SAMPLER_CUBE 0x8B60
-+#define GL_SAMPLER_1D_SHADOW 0x8B61
-+#define GL_SAMPLER_2D_SHADOW 0x8B62
-+#define GL_DELETE_STATUS 0x8B80
-+#define GL_COMPILE_STATUS 0x8B81
-+#define GL_LINK_STATUS 0x8B82
-+#define GL_VALIDATE_STATUS 0x8B83
-+#define GL_INFO_LOG_LENGTH 0x8B84
-+#define GL_ATTACHED_SHADERS 0x8B85
-+#define GL_ACTIVE_UNIFORMS 0x8B86
-+#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87
-+#define GL_SHADER_SOURCE_LENGTH 0x8B88
-+#define GL_ACTIVE_ATTRIBUTES 0x8B89
-+#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A
-+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B
-+#define GL_SHADING_LANGUAGE_VERSION 0x8B8C
-+#define GL_CURRENT_PROGRAM 0x8B8D
-+#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0
-+#define GL_LOWER_LEFT 0x8CA1
-+#define GL_UPPER_LEFT 0x8CA2
-+#define GL_STENCIL_BACK_REF 0x8CA3
-+#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4
-+#define GL_STENCIL_BACK_WRITEMASK 0x8CA5
-+#endif
-+
-+#ifndef GL_VERSION_2_1
-+#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F
-+#define GL_PIXEL_PACK_BUFFER 0x88EB
-+#define GL_PIXEL_UNPACK_BUFFER 0x88EC
-+#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED
-+#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF
-+#define GL_FLOAT_MAT2x3 0x8B65
-+#define GL_FLOAT_MAT2x4 0x8B66
-+#define GL_FLOAT_MAT3x2 0x8B67
-+#define GL_FLOAT_MAT3x4 0x8B68
-+#define GL_FLOAT_MAT4x2 0x8B69
-+#define GL_FLOAT_MAT4x3 0x8B6A
-+#define GL_SRGB 0x8C40
-+#define GL_SRGB8 0x8C41
-+#define GL_SRGB_ALPHA 0x8C42
-+#define GL_SRGB8_ALPHA8 0x8C43
-+#define GL_SLUMINANCE_ALPHA 0x8C44
-+#define GL_SLUMINANCE8_ALPHA8 0x8C45
-+#define GL_SLUMINANCE 0x8C46
-+#define GL_SLUMINANCE8 0x8C47
-+#define GL_COMPRESSED_SRGB 0x8C48
-+#define GL_COMPRESSED_SRGB_ALPHA 0x8C49
-+#define GL_COMPRESSED_SLUMINANCE 0x8C4A
-+#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B
-+#endif
-+
-+#ifndef GL_ARB_multitexture
-+#define GL_TEXTURE0_ARB 0x84C0
-+#define GL_TEXTURE1_ARB 0x84C1
-+#define GL_TEXTURE2_ARB 0x84C2
-+#define GL_TEXTURE3_ARB 0x84C3
-+#define GL_TEXTURE4_ARB 0x84C4
-+#define GL_TEXTURE5_ARB 0x84C5
-+#define GL_TEXTURE6_ARB 0x84C6
-+#define GL_TEXTURE7_ARB 0x84C7
-+#define GL_TEXTURE8_ARB 0x84C8
-+#define GL_TEXTURE9_ARB 0x84C9
-+#define GL_TEXTURE10_ARB 0x84CA
-+#define GL_TEXTURE11_ARB 0x84CB
-+#define GL_TEXTURE12_ARB 0x84CC
-+#define GL_TEXTURE13_ARB 0x84CD
-+#define GL_TEXTURE14_ARB 0x84CE
-+#define GL_TEXTURE15_ARB 0x84CF
-+#define GL_TEXTURE16_ARB 0x84D0
-+#define GL_TEXTURE17_ARB 0x84D1
-+#define GL_TEXTURE18_ARB 0x84D2
-+#define GL_TEXTURE19_ARB 0x84D3
-+#define GL_TEXTURE20_ARB 0x84D4
-+#define GL_TEXTURE21_ARB 0x84D5
-+#define GL_TEXTURE22_ARB 0x84D6
-+#define GL_TEXTURE23_ARB 0x84D7
-+#define GL_TEXTURE24_ARB 0x84D8
-+#define GL_TEXTURE25_ARB 0x84D9
-+#define GL_TEXTURE26_ARB 0x84DA
-+#define GL_TEXTURE27_ARB 0x84DB
-+#define GL_TEXTURE28_ARB 0x84DC
-+#define GL_TEXTURE29_ARB 0x84DD
-+#define GL_TEXTURE30_ARB 0x84DE
-+#define GL_TEXTURE31_ARB 0x84DF
-+#define GL_ACTIVE_TEXTURE_ARB 0x84E0
-+#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1
-+#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2
-+#endif
-+
-+#ifndef GL_ARB_transpose_matrix
-+#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3
-+#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4
-+#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5
-+#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6
-+#endif
-+
-+#ifndef GL_ARB_multisample
-+#define GL_MULTISAMPLE_ARB 0x809D
-+#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E
-+#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F
-+#define GL_SAMPLE_COVERAGE_ARB 0x80A0
-+#define GL_SAMPLE_BUFFERS_ARB 0x80A8
-+#define GL_SAMPLES_ARB 0x80A9
-+#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA
-+#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB
-+#define GL_MULTISAMPLE_BIT_ARB 0x20000000
-+#endif
-+
-+#ifndef GL_ARB_texture_env_add
-+#endif
-+
-+#ifndef GL_ARB_texture_cube_map
-+#define GL_NORMAL_MAP_ARB 0x8511
-+#define GL_REFLECTION_MAP_ARB 0x8512
-+#define GL_TEXTURE_CUBE_MAP_ARB 0x8513
-+#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514
-+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515
-+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516
-+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517
-+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518
-+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519
-+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A
-+#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B
-+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C
-+#endif
-+
-+#ifndef GL_ARB_texture_compression
-+#define GL_COMPRESSED_ALPHA_ARB 0x84E9
-+#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA
-+#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB
-+#define GL_COMPRESSED_INTENSITY_ARB 0x84EC
-+#define GL_COMPRESSED_RGB_ARB 0x84ED
-+#define GL_COMPRESSED_RGBA_ARB 0x84EE
-+#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF
-+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0
-+#define GL_TEXTURE_COMPRESSED_ARB 0x86A1
-+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2
-+#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3
-+#endif
-+
-+#ifndef GL_ARB_texture_border_clamp
-+#define GL_CLAMP_TO_BORDER_ARB 0x812D
-+#endif
-+
-+#ifndef GL_ARB_point_parameters
-+#define GL_POINT_SIZE_MIN_ARB 0x8126
-+#define GL_POINT_SIZE_MAX_ARB 0x8127
-+#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128
-+#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129
-+#endif
-+
-+#ifndef GL_ARB_vertex_blend
-+#define GL_MAX_VERTEX_UNITS_ARB 0x86A4
-+#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5
-+#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6
-+#define GL_VERTEX_BLEND_ARB 0x86A7
-+#define GL_CURRENT_WEIGHT_ARB 0x86A8
-+#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9
-+#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA
-+#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB
-+#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC
-+#define GL_WEIGHT_ARRAY_ARB 0x86AD
-+#define GL_MODELVIEW0_ARB 0x1700
-+#define GL_MODELVIEW1_ARB 0x850A
-+#define GL_MODELVIEW2_ARB 0x8722
-+#define GL_MODELVIEW3_ARB 0x8723
-+#define GL_MODELVIEW4_ARB 0x8724
-+#define GL_MODELVIEW5_ARB 0x8725
-+#define GL_MODELVIEW6_ARB 0x8726
-+#define GL_MODELVIEW7_ARB 0x8727
-+#define GL_MODELVIEW8_ARB 0x8728
-+#define GL_MODELVIEW9_ARB 0x8729
-+#define GL_MODELVIEW10_ARB 0x872A
-+#define GL_MODELVIEW11_ARB 0x872B
-+#define GL_MODELVIEW12_ARB 0x872C
-+#define GL_MODELVIEW13_ARB 0x872D
-+#define GL_MODELVIEW14_ARB 0x872E
-+#define GL_MODELVIEW15_ARB 0x872F
-+#define GL_MODELVIEW16_ARB 0x8730
-+#define GL_MODELVIEW17_ARB 0x8731
-+#define GL_MODELVIEW18_ARB 0x8732
-+#define GL_MODELVIEW19_ARB 0x8733
-+#define GL_MODELVIEW20_ARB 0x8734
-+#define GL_MODELVIEW21_ARB 0x8735
-+#define GL_MODELVIEW22_ARB 0x8736
-+#define GL_MODELVIEW23_ARB 0x8737
-+#define GL_MODELVIEW24_ARB 0x8738
-+#define GL_MODELVIEW25_ARB 0x8739
-+#define GL_MODELVIEW26_ARB 0x873A
-+#define GL_MODELVIEW27_ARB 0x873B
-+#define GL_MODELVIEW28_ARB 0x873C
-+#define GL_MODELVIEW29_ARB 0x873D
-+#define GL_MODELVIEW30_ARB 0x873E
-+#define GL_MODELVIEW31_ARB 0x873F
-+#endif
-+
-+#ifndef GL_ARB_matrix_palette
-+#define GL_MATRIX_PALETTE_ARB 0x8840
-+#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841
-+#define GL_MAX_PALETTE_MATRICES_ARB 0x8842
-+#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843
-+#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844
-+#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845
-+#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846
-+#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847
-+#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848
-+#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849
-+#endif
-+
-+#ifndef GL_ARB_texture_env_combine
-+#define GL_COMBINE_ARB 0x8570
-+#define GL_COMBINE_RGB_ARB 0x8571
-+#define GL_COMBINE_ALPHA_ARB 0x8572
-+#define GL_SOURCE0_RGB_ARB 0x8580
-+#define GL_SOURCE1_RGB_ARB 0x8581
-+#define GL_SOURCE2_RGB_ARB 0x8582
-+#define GL_SOURCE0_ALPHA_ARB 0x8588
-+#define GL_SOURCE1_ALPHA_ARB 0x8589
-+#define GL_SOURCE2_ALPHA_ARB 0x858A
-+#define GL_OPERAND0_RGB_ARB 0x8590
-+#define GL_OPERAND1_RGB_ARB 0x8591
-+#define GL_OPERAND2_RGB_ARB 0x8592
-+#define GL_OPERAND0_ALPHA_ARB 0x8598
-+#define GL_OPERAND1_ALPHA_ARB 0x8599
-+#define GL_OPERAND2_ALPHA_ARB 0x859A
-+#define GL_RGB_SCALE_ARB 0x8573
-+#define GL_ADD_SIGNED_ARB 0x8574
-+#define GL_INTERPOLATE_ARB 0x8575
-+#define GL_SUBTRACT_ARB 0x84E7
-+#define GL_CONSTANT_ARB 0x8576
-+#define GL_PRIMARY_COLOR_ARB 0x8577
-+#define GL_PREVIOUS_ARB 0x8578
-+#endif
-+
-+#ifndef GL_ARB_texture_env_crossbar
-+#endif
-+
-+#ifndef GL_ARB_texture_env_dot3
-+#define GL_DOT3_RGB_ARB 0x86AE
-+#define GL_DOT3_RGBA_ARB 0x86AF
-+#endif
-+
-+#ifndef GL_ARB_texture_mirrored_repeat
-+#define GL_MIRRORED_REPEAT_ARB 0x8370
-+#endif
-+
-+#ifndef GL_ARB_depth_texture
-+#define GL_DEPTH_COMPONENT16_ARB 0x81A5
-+#define GL_DEPTH_COMPONENT24_ARB 0x81A6
-+#define GL_DEPTH_COMPONENT32_ARB 0x81A7
-+#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A
-+#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B
-+#endif
-+
-+#ifndef GL_ARB_shadow
-+#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C
-+#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D
-+#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E
-+#endif
-+
-+#ifndef GL_ARB_shadow_ambient
-+#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF
-+#endif
-+
-+#ifndef GL_ARB_window_pos
-+#endif
-+
-+#ifndef GL_ARB_vertex_program
-+#define GL_COLOR_SUM_ARB 0x8458
-+#define GL_VERTEX_PROGRAM_ARB 0x8620
-+#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622
-+#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623
-+#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624
-+#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625
-+#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626
-+#define GL_PROGRAM_LENGTH_ARB 0x8627
-+#define GL_PROGRAM_STRING_ARB 0x8628
-+#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E
-+#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F
-+#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640
-+#define GL_CURRENT_MATRIX_ARB 0x8641
-+#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642
-+#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643
-+#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645
-+#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B
-+#define GL_PROGRAM_BINDING_ARB 0x8677
-+#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869
-+#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A
-+#define GL_PROGRAM_ERROR_STRING_ARB 0x8874
-+#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875
-+#define GL_PROGRAM_FORMAT_ARB 0x8876
-+#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0
-+#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1
-+#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2
-+#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3
-+#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4
-+#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5
-+#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6
-+#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7
-+#define GL_PROGRAM_PARAMETERS_ARB 0x88A8
-+#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9
-+#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA
-+#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB
-+#define GL_PROGRAM_ATTRIBS_ARB 0x88AC
-+#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD
-+#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE
-+#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF
-+#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0
-+#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1
-+#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2
-+#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3
-+#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4
-+#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5
-+#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6
-+#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7
-+#define GL_MATRIX0_ARB 0x88C0
-+#define GL_MATRIX1_ARB 0x88C1
-+#define GL_MATRIX2_ARB 0x88C2
-+#define GL_MATRIX3_ARB 0x88C3
-+#define GL_MATRIX4_ARB 0x88C4
-+#define GL_MATRIX5_ARB 0x88C5
-+#define GL_MATRIX6_ARB 0x88C6
-+#define GL_MATRIX7_ARB 0x88C7
-+#define GL_MATRIX8_ARB 0x88C8
-+#define GL_MATRIX9_ARB 0x88C9
-+#define GL_MATRIX10_ARB 0x88CA
-+#define GL_MATRIX11_ARB 0x88CB
-+#define GL_MATRIX12_ARB 0x88CC
-+#define GL_MATRIX13_ARB 0x88CD
-+#define GL_MATRIX14_ARB 0x88CE
-+#define GL_MATRIX15_ARB 0x88CF
-+#define GL_MATRIX16_ARB 0x88D0
-+#define GL_MATRIX17_ARB 0x88D1
-+#define GL_MATRIX18_ARB 0x88D2
-+#define GL_MATRIX19_ARB 0x88D3
-+#define GL_MATRIX20_ARB 0x88D4
-+#define GL_MATRIX21_ARB 0x88D5
-+#define GL_MATRIX22_ARB 0x88D6
-+#define GL_MATRIX23_ARB 0x88D7
-+#define GL_MATRIX24_ARB 0x88D8
-+#define GL_MATRIX25_ARB 0x88D9
-+#define GL_MATRIX26_ARB 0x88DA
-+#define GL_MATRIX27_ARB 0x88DB
-+#define GL_MATRIX28_ARB 0x88DC
-+#define GL_MATRIX29_ARB 0x88DD
-+#define GL_MATRIX30_ARB 0x88DE
-+#define GL_MATRIX31_ARB 0x88DF
-+#endif
-+
-+#ifndef GL_ARB_fragment_program
-+#define GL_FRAGMENT_PROGRAM_ARB 0x8804
-+#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805
-+#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806
-+#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807
-+#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808
-+#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809
-+#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A
-+#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B
-+#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C
-+#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D
-+#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E
-+#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F
-+#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810
-+#define GL_MAX_TEXTURE_COORDS_ARB 0x8871
-+#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872
-+#endif
-+
-+#ifndef GL_ARB_vertex_buffer_object
-+#define GL_BUFFER_SIZE_ARB 0x8764
-+#define GL_BUFFER_USAGE_ARB 0x8765
-+#define GL_ARRAY_BUFFER_ARB 0x8892
-+#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893
-+#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894
-+#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895
-+#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896
-+#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897
-+#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898
-+#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899
-+#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A
-+#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B
-+#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C
-+#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D
-+#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E
-+#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F
-+#define GL_READ_ONLY_ARB 0x88B8
-+#define GL_WRITE_ONLY_ARB 0x88B9
-+#define GL_READ_WRITE_ARB 0x88BA
-+#define GL_BUFFER_ACCESS_ARB 0x88BB
-+#define GL_BUFFER_MAPPED_ARB 0x88BC
-+#define GL_BUFFER_MAP_POINTER_ARB 0x88BD
-+#define GL_STREAM_DRAW_ARB 0x88E0
-+#define GL_STREAM_READ_ARB 0x88E1
-+#define GL_STREAM_COPY_ARB 0x88E2
-+#define GL_STATIC_DRAW_ARB 0x88E4
-+#define GL_STATIC_READ_ARB 0x88E5
-+#define GL_STATIC_COPY_ARB 0x88E6
-+#define GL_DYNAMIC_DRAW_ARB 0x88E8
-+#define GL_DYNAMIC_READ_ARB 0x88E9
-+#define GL_DYNAMIC_COPY_ARB 0x88EA
-+#endif
-+
-+#ifndef GL_ARB_occlusion_query
-+#define GL_QUERY_COUNTER_BITS_ARB 0x8864
-+#define GL_CURRENT_QUERY_ARB 0x8865
-+#define GL_QUERY_RESULT_ARB 0x8866
-+#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867
-+#define GL_SAMPLES_PASSED_ARB 0x8914
-+#endif
-+
-+#ifndef GL_ARB_shader_objects
-+#define GL_PROGRAM_OBJECT_ARB 0x8B40
-+#define GL_SHADER_OBJECT_ARB 0x8B48
-+#define GL_OBJECT_TYPE_ARB 0x8B4E
-+#define GL_OBJECT_SUBTYPE_ARB 0x8B4F
-+#define GL_FLOAT_VEC2_ARB 0x8B50
-+#define GL_FLOAT_VEC3_ARB 0x8B51
-+#define GL_FLOAT_VEC4_ARB 0x8B52
-+#define GL_INT_VEC2_ARB 0x8B53
-+#define GL_INT_VEC3_ARB 0x8B54
-+#define GL_INT_VEC4_ARB 0x8B55
-+#define GL_BOOL_ARB 0x8B56
-+#define GL_BOOL_VEC2_ARB 0x8B57
-+#define GL_BOOL_VEC3_ARB 0x8B58
-+#define GL_BOOL_VEC4_ARB 0x8B59
-+#define GL_FLOAT_MAT2_ARB 0x8B5A
-+#define GL_FLOAT_MAT3_ARB 0x8B5B
-+#define GL_FLOAT_MAT4_ARB 0x8B5C
-+#define GL_SAMPLER_1D_ARB 0x8B5D
-+#define GL_SAMPLER_2D_ARB 0x8B5E
-+#define GL_SAMPLER_3D_ARB 0x8B5F
-+#define GL_SAMPLER_CUBE_ARB 0x8B60
-+#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61
-+#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62
-+#define GL_SAMPLER_2D_RECT_ARB 0x8B63
-+#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64
-+#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80
-+#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81
-+#define GL_OBJECT_LINK_STATUS_ARB 0x8B82
-+#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83
-+#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84
-+#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85
-+#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86
-+#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87
-+#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88
-+#endif
-+
-+#ifndef GL_ARB_vertex_shader
-+#define GL_VERTEX_SHADER_ARB 0x8B31
-+#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A
-+#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B
-+#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C
-+#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D
-+#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89
-+#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A
-+#endif
-+
-+#ifndef GL_ARB_fragment_shader
-+#define GL_FRAGMENT_SHADER_ARB 0x8B30
-+#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49
-+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B
-+#endif
-+
-+#ifndef GL_ARB_shading_language_100
-+#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C
-+#endif
-+
-+#ifndef GL_ARB_texture_non_power_of_two
-+#endif
-+
-+#ifndef GL_ARB_point_sprite
-+#define GL_POINT_SPRITE_ARB 0x8861
-+#define GL_COORD_REPLACE_ARB 0x8862
-+#endif
-+
-+#ifndef GL_ARB_fragment_program_shadow
-+#endif
-+
-+#ifndef GL_ARB_draw_buffers
-+#define GL_MAX_DRAW_BUFFERS_ARB 0x8824
-+#define GL_DRAW_BUFFER0_ARB 0x8825
-+#define GL_DRAW_BUFFER1_ARB 0x8826
-+#define GL_DRAW_BUFFER2_ARB 0x8827
-+#define GL_DRAW_BUFFER3_ARB 0x8828
-+#define GL_DRAW_BUFFER4_ARB 0x8829
-+#define GL_DRAW_BUFFER5_ARB 0x882A
-+#define GL_DRAW_BUFFER6_ARB 0x882B
-+#define GL_DRAW_BUFFER7_ARB 0x882C
-+#define GL_DRAW_BUFFER8_ARB 0x882D
-+#define GL_DRAW_BUFFER9_ARB 0x882E
-+#define GL_DRAW_BUFFER10_ARB 0x882F
-+#define GL_DRAW_BUFFER11_ARB 0x8830
-+#define GL_DRAW_BUFFER12_ARB 0x8831
-+#define GL_DRAW_BUFFER13_ARB 0x8832
-+#define GL_DRAW_BUFFER14_ARB 0x8833
-+#define GL_DRAW_BUFFER15_ARB 0x8834
-+#endif
-+
-+#ifndef GL_ARB_texture_rectangle
-+#define GL_TEXTURE_RECTANGLE_ARB 0x84F5
-+#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6
-+#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7
-+#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8
-+#endif
-+
-+#ifndef GL_ARB_color_buffer_float
-+#define GL_RGBA_FLOAT_MODE_ARB 0x8820
-+#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A
-+#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B
-+#define GL_CLAMP_READ_COLOR_ARB 0x891C
-+#define GL_FIXED_ONLY_ARB 0x891D
-+#endif
-+
-+#ifndef GL_ARB_half_float_pixel
-+#define GL_HALF_FLOAT_ARB 0x140B
-+#endif
-+
-+#ifndef GL_ARB_texture_float
-+#define GL_TEXTURE_RED_TYPE_ARB 0x8C10
-+#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11
-+#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12
-+#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13
-+#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14
-+#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15
-+#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16
-+#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17
-+#define GL_RGBA32F_ARB 0x8814
-+#define GL_RGB32F_ARB 0x8815
-+#define GL_ALPHA32F_ARB 0x8816
-+#define GL_INTENSITY32F_ARB 0x8817
-+#define GL_LUMINANCE32F_ARB 0x8818
-+#define GL_LUMINANCE_ALPHA32F_ARB 0x8819
-+#define GL_RGBA16F_ARB 0x881A
-+#define GL_RGB16F_ARB 0x881B
-+#define GL_ALPHA16F_ARB 0x881C
-+#define GL_INTENSITY16F_ARB 0x881D
-+#define GL_LUMINANCE16F_ARB 0x881E
-+#define GL_LUMINANCE_ALPHA16F_ARB 0x881F
-+#endif
-+
-+#ifndef GL_ARB_pixel_buffer_object
-+#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB
-+#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC
-+#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED
-+#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF
-+#endif
-+
-+#ifndef GL_EXT_abgr
-+#define GL_ABGR_EXT 0x8000
-+#endif
-+
-+#ifndef GL_EXT_blend_color
-+#define GL_CONSTANT_COLOR_EXT 0x8001
-+#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002
-+#define GL_CONSTANT_ALPHA_EXT 0x8003
-+#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004
-+#define GL_BLEND_COLOR_EXT 0x8005
-+#endif
-+
-+#ifndef GL_EXT_polygon_offset
-+#define GL_POLYGON_OFFSET_EXT 0x8037
-+#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038
-+#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039
-+#endif
-+
-+#ifndef GL_EXT_texture
-+#define GL_ALPHA4_EXT 0x803B
-+#define GL_ALPHA8_EXT 0x803C
-+#define GL_ALPHA12_EXT 0x803D
-+#define GL_ALPHA16_EXT 0x803E
-+#define GL_LUMINANCE4_EXT 0x803F
-+#define GL_LUMINANCE8_EXT 0x8040
-+#define GL_LUMINANCE12_EXT 0x8041
-+#define GL_LUMINANCE16_EXT 0x8042
-+#define GL_LUMINANCE4_ALPHA4_EXT 0x8043
-+#define GL_LUMINANCE6_ALPHA2_EXT 0x8044
-+#define GL_LUMINANCE8_ALPHA8_EXT 0x8045
-+#define GL_LUMINANCE12_ALPHA4_EXT 0x8046
-+#define GL_LUMINANCE12_ALPHA12_EXT 0x8047
-+#define GL_LUMINANCE16_ALPHA16_EXT 0x8048
-+#define GL_INTENSITY_EXT 0x8049
-+#define GL_INTENSITY4_EXT 0x804A
-+#define GL_INTENSITY8_EXT 0x804B
-+#define GL_INTENSITY12_EXT 0x804C
-+#define GL_INTENSITY16_EXT 0x804D
-+#define GL_RGB2_EXT 0x804E
-+#define GL_RGB4_EXT 0x804F
-+#define GL_RGB5_EXT 0x8050
-+#define GL_RGB8_EXT 0x8051
-+#define GL_RGB10_EXT 0x8052
-+#define GL_RGB12_EXT 0x8053
-+#define GL_RGB16_EXT 0x8054
-+#define GL_RGBA2_EXT 0x8055
-+#define GL_RGBA4_EXT 0x8056
-+#define GL_RGB5_A1_EXT 0x8057
-+#define GL_RGBA8_EXT 0x8058
-+#define GL_RGB10_A2_EXT 0x8059
-+#define GL_RGBA12_EXT 0x805A
-+#define GL_RGBA16_EXT 0x805B
-+#define GL_TEXTURE_RED_SIZE_EXT 0x805C
-+#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D
-+#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E
-+#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F
-+#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060
-+#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061
-+#define GL_REPLACE_EXT 0x8062
-+#define GL_PROXY_TEXTURE_1D_EXT 0x8063
-+#define GL_PROXY_TEXTURE_2D_EXT 0x8064
-+#define GL_TEXTURE_TOO_LARGE_EXT 0x8065
-+#endif
-+
-+#ifndef GL_EXT_texture3D
-+#define GL_PACK_SKIP_IMAGES_EXT 0x806B
-+#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C
-+#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D
-+#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E
-+#define GL_TEXTURE_3D_EXT 0x806F
-+#define GL_PROXY_TEXTURE_3D_EXT 0x8070
-+#define GL_TEXTURE_DEPTH_EXT 0x8071
-+#define GL_TEXTURE_WRAP_R_EXT 0x8072
-+#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073
-+#endif
-+
-+#ifndef GL_SGIS_texture_filter4
-+#define GL_FILTER4_SGIS 0x8146
-+#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147
-+#endif
-+
-+#ifndef GL_EXT_subtexture
-+#endif
-+
-+#ifndef GL_EXT_copy_texture
-+#endif
-+
-+#ifndef GL_EXT_histogram
-+#define GL_HISTOGRAM_EXT 0x8024
-+#define GL_PROXY_HISTOGRAM_EXT 0x8025
-+#define GL_HISTOGRAM_WIDTH_EXT 0x8026
-+#define GL_HISTOGRAM_FORMAT_EXT 0x8027
-+#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028
-+#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029
-+#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A
-+#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B
-+#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C
-+#define GL_HISTOGRAM_SINK_EXT 0x802D
-+#define GL_MINMAX_EXT 0x802E
-+#define GL_MINMAX_FORMAT_EXT 0x802F
-+#define GL_MINMAX_SINK_EXT 0x8030
-+#define GL_TABLE_TOO_LARGE_EXT 0x8031
-+#endif
-+
-+#ifndef GL_EXT_convolution
-+#define GL_CONVOLUTION_1D_EXT 0x8010
-+#define GL_CONVOLUTION_2D_EXT 0x8011
-+#define GL_SEPARABLE_2D_EXT 0x8012
-+#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013
-+#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014
-+#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015
-+#define GL_REDUCE_EXT 0x8016
-+#define GL_CONVOLUTION_FORMAT_EXT 0x8017
-+#define GL_CONVOLUTION_WIDTH_EXT 0x8018
-+#define GL_CONVOLUTION_HEIGHT_EXT 0x8019
-+#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A
-+#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B
-+#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C
-+#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D
-+#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E
-+#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F
-+#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020
-+#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021
-+#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022
-+#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023
-+#endif
-+
-+#ifndef GL_SGI_color_matrix
-+#define GL_COLOR_MATRIX_SGI 0x80B1
-+#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2
-+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3
-+#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4
-+#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5
-+#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6
-+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7
-+#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8
-+#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9
-+#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA
-+#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB
-+#endif
-+
-+#ifndef GL_SGI_color_table
-+#define GL_COLOR_TABLE_SGI 0x80D0
-+#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1
-+#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2
-+#define GL_PROXY_COLOR_TABLE_SGI 0x80D3
-+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4
-+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5
-+#define GL_COLOR_TABLE_SCALE_SGI 0x80D6
-+#define GL_COLOR_TABLE_BIAS_SGI 0x80D7
-+#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8
-+#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9
-+#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA
-+#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB
-+#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC
-+#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD
-+#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE
-+#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF
-+#endif
-+
-+#ifndef GL_SGIS_pixel_texture
-+#define GL_PIXEL_TEXTURE_SGIS 0x8353
-+#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354
-+#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355
-+#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356
-+#endif
-+
-+#ifndef GL_SGIX_pixel_texture
-+#define GL_PIXEL_TEX_GEN_SGIX 0x8139
-+#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B
-+#endif
-+
-+#ifndef GL_SGIS_texture4D
-+#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130
-+#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131
-+#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132
-+#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133
-+#define GL_TEXTURE_4D_SGIS 0x8134
-+#define GL_PROXY_TEXTURE_4D_SGIS 0x8135
-+#define GL_TEXTURE_4DSIZE_SGIS 0x8136
-+#define GL_TEXTURE_WRAP_Q_SGIS 0x8137
-+#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138
-+#define GL_TEXTURE_4D_BINDING_SGIS 0x814F
-+#endif
-+
-+#ifndef GL_SGI_texture_color_table
-+#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC
-+#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD
-+#endif
-+
-+#ifndef GL_EXT_cmyka
-+#define GL_CMYK_EXT 0x800C
-+#define GL_CMYKA_EXT 0x800D
-+#define GL_PACK_CMYK_HINT_EXT 0x800E
-+#define GL_UNPACK_CMYK_HINT_EXT 0x800F
-+#endif
-+
-+#ifndef GL_EXT_texture_object
-+#define GL_TEXTURE_PRIORITY_EXT 0x8066
-+#define GL_TEXTURE_RESIDENT_EXT 0x8067
-+#define GL_TEXTURE_1D_BINDING_EXT 0x8068
-+#define GL_TEXTURE_2D_BINDING_EXT 0x8069
-+#define GL_TEXTURE_3D_BINDING_EXT 0x806A
-+#endif
-+
-+#ifndef GL_SGIS_detail_texture
-+#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095
-+#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096
-+#define GL_LINEAR_DETAIL_SGIS 0x8097
-+#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098
-+#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099
-+#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A
-+#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B
-+#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C
-+#endif
-+
-+#ifndef GL_SGIS_sharpen_texture
-+#define GL_LINEAR_SHARPEN_SGIS 0x80AD
-+#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE
-+#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF
-+#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0
-+#endif
-+
-+#ifndef GL_EXT_packed_pixels
-+#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032
-+#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033
-+#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034
-+#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035
-+#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036
-+#endif
-+
-+#ifndef GL_SGIS_texture_lod
-+#define GL_TEXTURE_MIN_LOD_SGIS 0x813A
-+#define GL_TEXTURE_MAX_LOD_SGIS 0x813B
-+#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C
-+#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D
-+#endif
-+
-+#ifndef GL_SGIS_multisample
-+#define GL_MULTISAMPLE_SGIS 0x809D
-+#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E
-+#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F
-+#define GL_SAMPLE_MASK_SGIS 0x80A0
-+#define GL_1PASS_SGIS 0x80A1
-+#define GL_2PASS_0_SGIS 0x80A2
-+#define GL_2PASS_1_SGIS 0x80A3
-+#define GL_4PASS_0_SGIS 0x80A4
-+#define GL_4PASS_1_SGIS 0x80A5
-+#define GL_4PASS_2_SGIS 0x80A6
-+#define GL_4PASS_3_SGIS 0x80A7
-+#define GL_SAMPLE_BUFFERS_SGIS 0x80A8
-+#define GL_SAMPLES_SGIS 0x80A9
-+#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA
-+#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB
-+#define GL_SAMPLE_PATTERN_SGIS 0x80AC
-+#endif
-+
-+#ifndef GL_EXT_rescale_normal
-+#define GL_RESCALE_NORMAL_EXT 0x803A
-+#endif
-+
-+#ifndef GL_EXT_vertex_array
-+#define GL_VERTEX_ARRAY_EXT 0x8074
-+#define GL_NORMAL_ARRAY_EXT 0x8075
-+#define GL_COLOR_ARRAY_EXT 0x8076
-+#define GL_INDEX_ARRAY_EXT 0x8077
-+#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078
-+#define GL_EDGE_FLAG_ARRAY_EXT 0x8079
-+#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A
-+#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B
-+#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C
-+#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D
-+#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E
-+#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F
-+#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080
-+#define GL_COLOR_ARRAY_SIZE_EXT 0x8081
-+#define GL_COLOR_ARRAY_TYPE_EXT 0x8082
-+#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083
-+#define GL_COLOR_ARRAY_COUNT_EXT 0x8084
-+#define GL_INDEX_ARRAY_TYPE_EXT 0x8085
-+#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086
-+#define GL_INDEX_ARRAY_COUNT_EXT 0x8087
-+#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088
-+#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089
-+#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A
-+#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B
-+#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C
-+#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D
-+#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E
-+#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F
-+#define GL_COLOR_ARRAY_POINTER_EXT 0x8090
-+#define GL_INDEX_ARRAY_POINTER_EXT 0x8091
-+#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092
-+#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093
-+#endif
-+
-+#ifndef GL_EXT_misc_attribute
-+#endif
-+
-+#ifndef GL_SGIS_generate_mipmap
-+#define GL_GENERATE_MIPMAP_SGIS 0x8191
-+#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192
-+#endif
-+
-+#ifndef GL_SGIX_clipmap
-+#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170
-+#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171
-+#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172
-+#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173
-+#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174
-+#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175
-+#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176
-+#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177
-+#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178
-+#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D
-+#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E
-+#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F
-+#endif
-+
-+#ifndef GL_SGIX_shadow
-+#define GL_TEXTURE_COMPARE_SGIX 0x819A
-+#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B
-+#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C
-+#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D
-+#endif
-+
-+#ifndef GL_SGIS_texture_edge_clamp
-+#define GL_CLAMP_TO_EDGE_SGIS 0x812F
-+#endif
-+
-+#ifndef GL_SGIS_texture_border_clamp
-+#define GL_CLAMP_TO_BORDER_SGIS 0x812D
-+#endif
-+
-+#ifndef GL_EXT_blend_minmax
-+#define GL_FUNC_ADD_EXT 0x8006
-+#define GL_MIN_EXT 0x8007
-+#define GL_MAX_EXT 0x8008
-+#define GL_BLEND_EQUATION_EXT 0x8009
-+#endif
-+
-+#ifndef GL_EXT_blend_subtract
-+#define GL_FUNC_SUBTRACT_EXT 0x800A
-+#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B
-+#endif
-+
-+#ifndef GL_EXT_blend_logic_op
-+#endif
-+
-+#ifndef GL_SGIX_interlace
-+#define GL_INTERLACE_SGIX 0x8094
-+#endif
-+
-+#ifndef GL_SGIX_pixel_tiles
-+#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E
-+#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F
-+#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140
-+#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141
-+#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142
-+#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143
-+#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144
-+#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145
-+#endif
-+
-+#ifndef GL_SGIS_texture_select
-+#define GL_DUAL_ALPHA4_SGIS 0x8110
-+#define GL_DUAL_ALPHA8_SGIS 0x8111
-+#define GL_DUAL_ALPHA12_SGIS 0x8112
-+#define GL_DUAL_ALPHA16_SGIS 0x8113
-+#define GL_DUAL_LUMINANCE4_SGIS 0x8114
-+#define GL_DUAL_LUMINANCE8_SGIS 0x8115
-+#define GL_DUAL_LUMINANCE12_SGIS 0x8116
-+#define GL_DUAL_LUMINANCE16_SGIS 0x8117
-+#define GL_DUAL_INTENSITY4_SGIS 0x8118
-+#define GL_DUAL_INTENSITY8_SGIS 0x8119
-+#define GL_DUAL_INTENSITY12_SGIS 0x811A
-+#define GL_DUAL_INTENSITY16_SGIS 0x811B
-+#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C
-+#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D
-+#define GL_QUAD_ALPHA4_SGIS 0x811E
-+#define GL_QUAD_ALPHA8_SGIS 0x811F
-+#define GL_QUAD_LUMINANCE4_SGIS 0x8120
-+#define GL_QUAD_LUMINANCE8_SGIS 0x8121
-+#define GL_QUAD_INTENSITY4_SGIS 0x8122
-+#define GL_QUAD_INTENSITY8_SGIS 0x8123
-+#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124
-+#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125
-+#endif
-+
-+#ifndef GL_SGIX_sprite
-+#define GL_SPRITE_SGIX 0x8148
-+#define GL_SPRITE_MODE_SGIX 0x8149
-+#define GL_SPRITE_AXIS_SGIX 0x814A
-+#define GL_SPRITE_TRANSLATION_SGIX 0x814B
-+#define GL_SPRITE_AXIAL_SGIX 0x814C
-+#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D
-+#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E
-+#endif
-+
-+#ifndef GL_SGIX_texture_multi_buffer
-+#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E
-+#endif
-+
-+#ifndef GL_EXT_point_parameters
-+#define GL_POINT_SIZE_MIN_EXT 0x8126
-+#define GL_POINT_SIZE_MAX_EXT 0x8127
-+#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128
-+#define GL_DISTANCE_ATTENUATION_EXT 0x8129
-+#endif
-+
-+#ifndef GL_SGIS_point_parameters
-+#define GL_POINT_SIZE_MIN_SGIS 0x8126
-+#define GL_POINT_SIZE_MAX_SGIS 0x8127
-+#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128
-+#define GL_DISTANCE_ATTENUATION_SGIS 0x8129
-+#endif
-+
-+#ifndef GL_SGIX_instruments
-+#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180
-+#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181
-+#endif
-+
-+#ifndef GL_SGIX_texture_scale_bias
-+#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179
-+#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A
-+#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B
-+#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C
-+#endif
-+
-+#ifndef GL_SGIX_framezoom
-+#define GL_FRAMEZOOM_SGIX 0x818B
-+#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C
-+#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D
-+#endif
-+
-+#ifndef GL_SGIX_tag_sample_buffer
-+#endif
-+
-+#ifndef GL_FfdMaskSGIX
-+#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001
-+#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002
-+#endif
-+
-+#ifndef GL_SGIX_polynomial_ffd
-+#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194
-+#define GL_TEXTURE_DEFORMATION_SGIX 0x8195
-+#define GL_DEFORMATIONS_MASK_SGIX 0x8196
-+#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197
-+#endif
-+
-+#ifndef GL_SGIX_reference_plane
-+#define GL_REFERENCE_PLANE_SGIX 0x817D
-+#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E
-+#endif
-+
-+#ifndef GL_SGIX_flush_raster
-+#endif
-+
-+#ifndef GL_SGIX_depth_texture
-+#define GL_DEPTH_COMPONENT16_SGIX 0x81A5
-+#define GL_DEPTH_COMPONENT24_SGIX 0x81A6
-+#define GL_DEPTH_COMPONENT32_SGIX 0x81A7
-+#endif
-+
-+#ifndef GL_SGIS_fog_function
-+#define GL_FOG_FUNC_SGIS 0x812A
-+#define GL_FOG_FUNC_POINTS_SGIS 0x812B
-+#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C
-+#endif
-+
-+#ifndef GL_SGIX_fog_offset
-+#define GL_FOG_OFFSET_SGIX 0x8198
-+#define GL_FOG_OFFSET_VALUE_SGIX 0x8199
-+#endif
-+
-+#ifndef GL_HP_image_transform
-+#define GL_IMAGE_SCALE_X_HP 0x8155
-+#define GL_IMAGE_SCALE_Y_HP 0x8156
-+#define GL_IMAGE_TRANSLATE_X_HP 0x8157
-+#define GL_IMAGE_TRANSLATE_Y_HP 0x8158
-+#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159
-+#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A
-+#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B
-+#define GL_IMAGE_MAG_FILTER_HP 0x815C
-+#define GL_IMAGE_MIN_FILTER_HP 0x815D
-+#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E
-+#define GL_CUBIC_HP 0x815F
-+#define GL_AVERAGE_HP 0x8160
-+#define GL_IMAGE_TRANSFORM_2D_HP 0x8161
-+#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162
-+#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163
-+#endif
-+
-+#ifndef GL_HP_convolution_border_modes
-+#define GL_IGNORE_BORDER_HP 0x8150
-+#define GL_CONSTANT_BORDER_HP 0x8151
-+#define GL_REPLICATE_BORDER_HP 0x8153
-+#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154
-+#endif
-+
-+#ifndef GL_INGR_palette_buffer
-+#endif
-+
-+#ifndef GL_SGIX_texture_add_env
-+#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE
-+#endif
-+
-+#ifndef GL_EXT_color_subtable
-+#endif
-+
-+#ifndef GL_PGI_vertex_hints
-+#define GL_VERTEX_DATA_HINT_PGI 0x1A22A
-+#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B
-+#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C
-+#define GL_MAX_VERTEX_HINT_PGI 0x1A22D
-+#define GL_COLOR3_BIT_PGI 0x00010000
-+#define GL_COLOR4_BIT_PGI 0x00020000
-+#define GL_EDGEFLAG_BIT_PGI 0x00040000
-+#define GL_INDEX_BIT_PGI 0x00080000
-+#define GL_MAT_AMBIENT_BIT_PGI 0x00100000
-+#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000
-+#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000
-+#define GL_MAT_EMISSION_BIT_PGI 0x00800000
-+#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000
-+#define GL_MAT_SHININESS_BIT_PGI 0x02000000
-+#define GL_MAT_SPECULAR_BIT_PGI 0x04000000
-+#define GL_NORMAL_BIT_PGI 0x08000000
-+#define GL_TEXCOORD1_BIT_PGI 0x10000000
-+#define GL_TEXCOORD2_BIT_PGI 0x20000000
-+#define GL_TEXCOORD3_BIT_PGI 0x40000000
-+#define GL_TEXCOORD4_BIT_PGI 0x80000000
-+#define GL_VERTEX23_BIT_PGI 0x00000004
-+#define GL_VERTEX4_BIT_PGI 0x00000008
-+#endif
-+
-+#ifndef GL_PGI_misc_hints
-+#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8
-+#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD
-+#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE
-+#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202
-+#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203
-+#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204
-+#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C
-+#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D
-+#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E
-+#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F
-+#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210
-+#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211
-+#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216
-+#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217
-+#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218
-+#define GL_FULL_STIPPLE_HINT_PGI 0x1A219
-+#define GL_CLIP_NEAR_HINT_PGI 0x1A220
-+#define GL_CLIP_FAR_HINT_PGI 0x1A221
-+#define GL_WIDE_LINE_HINT_PGI 0x1A222
-+#define GL_BACK_NORMALS_HINT_PGI 0x1A223
-+#endif
-+
-+#ifndef GL_EXT_paletted_texture
-+#define GL_COLOR_INDEX1_EXT 0x80E2
-+#define GL_COLOR_INDEX2_EXT 0x80E3
-+#define GL_COLOR_INDEX4_EXT 0x80E4
-+#define GL_COLOR_INDEX8_EXT 0x80E5
-+#define GL_COLOR_INDEX12_EXT 0x80E6
-+#define GL_COLOR_INDEX16_EXT 0x80E7
-+#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED
-+#endif
-+
-+#ifndef GL_EXT_clip_volume_hint
-+#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0
-+#endif
-+
-+#ifndef GL_SGIX_list_priority
-+#define GL_LIST_PRIORITY_SGIX 0x8182
-+#endif
-+
-+#ifndef GL_SGIX_ir_instrument1
-+#define GL_IR_INSTRUMENT1_SGIX 0x817F
-+#endif
-+
-+#ifndef GL_SGIX_calligraphic_fragment
-+#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183
-+#endif
-+
-+#ifndef GL_SGIX_texture_lod_bias
-+#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E
-+#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F
-+#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190
-+#endif
-+
-+#ifndef GL_SGIX_shadow_ambient
-+#define GL_SHADOW_AMBIENT_SGIX 0x80BF
-+#endif
-+
-+#ifndef GL_EXT_index_texture
-+#endif
-+
-+#ifndef GL_EXT_index_material
-+#define GL_INDEX_MATERIAL_EXT 0x81B8
-+#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9
-+#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA
-+#endif
-+
-+#ifndef GL_EXT_index_func
-+#define GL_INDEX_TEST_EXT 0x81B5
-+#define GL_INDEX_TEST_FUNC_EXT 0x81B6
-+#define GL_INDEX_TEST_REF_EXT 0x81B7
-+#endif
-+
-+#ifndef GL_EXT_index_array_formats
-+#define GL_IUI_V2F_EXT 0x81AD
-+#define GL_IUI_V3F_EXT 0x81AE
-+#define GL_IUI_N3F_V2F_EXT 0x81AF
-+#define GL_IUI_N3F_V3F_EXT 0x81B0
-+#define GL_T2F_IUI_V2F_EXT 0x81B1
-+#define GL_T2F_IUI_V3F_EXT 0x81B2
-+#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3
-+#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4
-+#endif
-+
-+#ifndef GL_EXT_compiled_vertex_array
-+#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8
-+#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9
-+#endif
-+
-+#ifndef GL_EXT_cull_vertex
-+#define GL_CULL_VERTEX_EXT 0x81AA
-+#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB
-+#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC
-+#endif
-+
-+#ifndef GL_SGIX_ycrcb
-+#define GL_YCRCB_422_SGIX 0x81BB
-+#define GL_YCRCB_444_SGIX 0x81BC
-+#endif
-+
-+#ifndef GL_SGIX_fragment_lighting
-+#define GL_FRAGMENT_LIGHTING_SGIX 0x8400
-+#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401
-+#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402
-+#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403
-+#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404
-+#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405
-+#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406
-+#define GL_LIGHT_ENV_MODE_SGIX 0x8407
-+#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408
-+#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409
-+#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A
-+#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B
-+#define GL_FRAGMENT_LIGHT0_SGIX 0x840C
-+#define GL_FRAGMENT_LIGHT1_SGIX 0x840D
-+#define GL_FRAGMENT_LIGHT2_SGIX 0x840E
-+#define GL_FRAGMENT_LIGHT3_SGIX 0x840F
-+#define GL_FRAGMENT_LIGHT4_SGIX 0x8410
-+#define GL_FRAGMENT_LIGHT5_SGIX 0x8411
-+#define GL_FRAGMENT_LIGHT6_SGIX 0x8412
-+#define GL_FRAGMENT_LIGHT7_SGIX 0x8413
-+#endif
-+
-+#ifndef GL_IBM_rasterpos_clip
-+#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262
-+#endif
-+
-+#ifndef GL_HP_texture_lighting
-+#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167
-+#define GL_TEXTURE_POST_SPECULAR_HP 0x8168
-+#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169
-+#endif
-+
-+#ifndef GL_EXT_draw_range_elements
-+#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8
-+#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9
-+#endif
-+
-+#ifndef GL_WIN_phong_shading
-+#define GL_PHONG_WIN 0x80EA
-+#define GL_PHONG_HINT_WIN 0x80EB
-+#endif
-+
-+#ifndef GL_WIN_specular_fog
-+#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC
-+#endif
-+
-+#ifndef GL_EXT_light_texture
-+#define GL_FRAGMENT_MATERIAL_EXT 0x8349
-+#define GL_FRAGMENT_NORMAL_EXT 0x834A
-+#define GL_FRAGMENT_COLOR_EXT 0x834C
-+#define GL_ATTENUATION_EXT 0x834D
-+#define GL_SHADOW_ATTENUATION_EXT 0x834E
-+#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F
-+#define GL_TEXTURE_LIGHT_EXT 0x8350
-+#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351
-+#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352
-+/* reuse GL_FRAGMENT_DEPTH_EXT */
-+#endif
-+
-+#ifndef GL_SGIX_blend_alpha_minmax
-+#define GL_ALPHA_MIN_SGIX 0x8320
-+#define GL_ALPHA_MAX_SGIX 0x8321
-+#endif
-+
-+#ifndef GL_SGIX_impact_pixel_texture
-+#define GL_PIXEL_TEX_GEN_Q_CEILING_SGIX 0x8184
-+#define GL_PIXEL_TEX_GEN_Q_ROUND_SGIX 0x8185
-+#define GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX 0x8186
-+#define GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX 0x8187
-+#define GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX 0x8188
-+#define GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX 0x8189
-+#define GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX 0x818A
-+#endif
-+
-+#ifndef GL_EXT_bgra
-+#define GL_BGR_EXT 0x80E0
-+#define GL_BGRA_EXT 0x80E1
-+#endif
-+
-+#ifndef GL_SGIX_async
-+#define GL_ASYNC_MARKER_SGIX 0x8329
-+#endif
-+
-+#ifndef GL_SGIX_async_pixel
-+#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C
-+#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D
-+#define GL_ASYNC_READ_PIXELS_SGIX 0x835E
-+#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F
-+#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360
-+#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361
-+#endif
-+
-+#ifndef GL_SGIX_async_histogram
-+#define GL_ASYNC_HISTOGRAM_SGIX 0x832C
-+#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D
-+#endif
-+
-+#ifndef GL_INTEL_texture_scissor
-+#endif
-+
-+#ifndef GL_INTEL_parallel_arrays
-+#define GL_PARALLEL_ARRAYS_INTEL 0x83F4
-+#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5
-+#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6
-+#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7
-+#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8
-+#endif
-+
-+#ifndef GL_HP_occlusion_test
-+#define GL_OCCLUSION_TEST_HP 0x8165
-+#define GL_OCCLUSION_TEST_RESULT_HP 0x8166
-+#endif
-+
-+#ifndef GL_EXT_pixel_transform
-+#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330
-+#define GL_PIXEL_MAG_FILTER_EXT 0x8331
-+#define GL_PIXEL_MIN_FILTER_EXT 0x8332
-+#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333
-+#define GL_CUBIC_EXT 0x8334
-+#define GL_AVERAGE_EXT 0x8335
-+#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336
-+#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337
-+#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338
-+#endif
-+
-+#ifndef GL_EXT_pixel_transform_color_table
-+#endif
-+
-+#ifndef GL_EXT_shared_texture_palette
-+#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB
-+#endif
-+
-+#ifndef GL_EXT_separate_specular_color
-+#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8
-+#define GL_SINGLE_COLOR_EXT 0x81F9
-+#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA
-+#endif
-+
-+#ifndef GL_EXT_secondary_color
-+#define GL_COLOR_SUM_EXT 0x8458
-+#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459
-+#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A
-+#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B
-+#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C
-+#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D
-+#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E
-+#endif
-+
-+#ifndef GL_EXT_texture_perturb_normal
-+#define GL_PERTURB_EXT 0x85AE
-+#define GL_TEXTURE_NORMAL_EXT 0x85AF
-+#endif
-+
-+#ifndef GL_EXT_multi_draw_arrays
-+#endif
-+
-+#ifndef GL_EXT_fog_coord
-+#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450
-+#define GL_FOG_COORDINATE_EXT 0x8451
-+#define GL_FRAGMENT_DEPTH_EXT 0x8452
-+#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453
-+#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454
-+#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455
-+#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456
-+#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457
-+#endif
-+
-+#ifndef GL_REND_screen_coordinates
-+#define GL_SCREEN_COORDINATES_REND 0x8490
-+#define GL_INVERTED_SCREEN_W_REND 0x8491
-+#endif
-+
-+#ifndef GL_EXT_coordinate_frame
-+#define GL_TANGENT_ARRAY_EXT 0x8439
-+#define GL_BINORMAL_ARRAY_EXT 0x843A
-+#define GL_CURRENT_TANGENT_EXT 0x843B
-+#define GL_CURRENT_BINORMAL_EXT 0x843C
-+#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E
-+#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F
-+#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440
-+#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441
-+#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442
-+#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443
-+#define GL_MAP1_TANGENT_EXT 0x8444
-+#define GL_MAP2_TANGENT_EXT 0x8445
-+#define GL_MAP1_BINORMAL_EXT 0x8446
-+#define GL_MAP2_BINORMAL_EXT 0x8447
-+#endif
-+
-+#ifndef GL_EXT_texture_env_combine
-+#define GL_COMBINE_EXT 0x8570
-+#define GL_COMBINE_RGB_EXT 0x8571
-+#define GL_COMBINE_ALPHA_EXT 0x8572
-+#define GL_RGB_SCALE_EXT 0x8573
-+#define GL_ADD_SIGNED_EXT 0x8574
-+#define GL_INTERPOLATE_EXT 0x8575
-+#define GL_CONSTANT_EXT 0x8576
-+#define GL_PRIMARY_COLOR_EXT 0x8577
-+#define GL_PREVIOUS_EXT 0x8578
-+#define GL_SOURCE0_RGB_EXT 0x8580
-+#define GL_SOURCE1_RGB_EXT 0x8581
-+#define GL_SOURCE2_RGB_EXT 0x8582
-+#define GL_SOURCE0_ALPHA_EXT 0x8588
-+#define GL_SOURCE1_ALPHA_EXT 0x8589
-+#define GL_SOURCE2_ALPHA_EXT 0x858A
-+#define GL_OPERAND0_RGB_EXT 0x8590
-+#define GL_OPERAND1_RGB_EXT 0x8591
-+#define GL_OPERAND2_RGB_EXT 0x8592
-+#define GL_OPERAND0_ALPHA_EXT 0x8598
-+#define GL_OPERAND1_ALPHA_EXT 0x8599
-+#define GL_OPERAND2_ALPHA_EXT 0x859A
-+#endif
-+
-+#ifndef GL_APPLE_specular_vector
-+#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0
-+#endif
-+
-+#ifndef GL_APPLE_transform_hint
-+#define GL_TRANSFORM_HINT_APPLE 0x85B1
-+#endif
-+
-+#ifndef GL_SGIX_fog_scale
-+#define GL_FOG_SCALE_SGIX 0x81FC
-+#define GL_FOG_SCALE_VALUE_SGIX 0x81FD
-+#endif
-+
-+#ifndef GL_SUNX_constant_data
-+#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5
-+#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6
-+#endif
-+
-+#ifndef GL_SUN_global_alpha
-+#define GL_GLOBAL_ALPHA_SUN 0x81D9
-+#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA
-+#endif
-+
-+#ifndef GL_SUN_triangle_list
-+#define GL_RESTART_SUN 0x0001
-+#define GL_REPLACE_MIDDLE_SUN 0x0002
-+#define GL_REPLACE_OLDEST_SUN 0x0003
-+#define GL_TRIANGLE_LIST_SUN 0x81D7
-+#define GL_REPLACEMENT_CODE_SUN 0x81D8
-+#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0
-+#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1
-+#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2
-+#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3
-+#define GL_R1UI_V3F_SUN 0x85C4
-+#define GL_R1UI_C4UB_V3F_SUN 0x85C5
-+#define GL_R1UI_C3F_V3F_SUN 0x85C6
-+#define GL_R1UI_N3F_V3F_SUN 0x85C7
-+#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8
-+#define GL_R1UI_T2F_V3F_SUN 0x85C9
-+#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA
-+#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB
-+#endif
-+
-+#ifndef GL_SUN_vertex
-+#endif
-+
-+#ifndef GL_EXT_blend_func_separate
-+#define GL_BLEND_DST_RGB_EXT 0x80C8
-+#define GL_BLEND_SRC_RGB_EXT 0x80C9
-+#define GL_BLEND_DST_ALPHA_EXT 0x80CA
-+#define GL_BLEND_SRC_ALPHA_EXT 0x80CB
-+#endif
-+
-+#ifndef GL_INGR_color_clamp
-+#define GL_RED_MIN_CLAMP_INGR 0x8560
-+#define GL_GREEN_MIN_CLAMP_INGR 0x8561
-+#define GL_BLUE_MIN_CLAMP_INGR 0x8562
-+#define GL_ALPHA_MIN_CLAMP_INGR 0x8563
-+#define GL_RED_MAX_CLAMP_INGR 0x8564
-+#define GL_GREEN_MAX_CLAMP_INGR 0x8565
-+#define GL_BLUE_MAX_CLAMP_INGR 0x8566
-+#define GL_ALPHA_MAX_CLAMP_INGR 0x8567
-+#endif
-+
-+#ifndef GL_INGR_interlace_read
-+#define GL_INTERLACE_READ_INGR 0x8568
-+#endif
-+
-+#ifndef GL_EXT_stencil_wrap
-+#define GL_INCR_WRAP_EXT 0x8507
-+#define GL_DECR_WRAP_EXT 0x8508
-+#endif
-+
-+#ifndef GL_EXT_422_pixels
-+#define GL_422_EXT 0x80CC
-+#define GL_422_REV_EXT 0x80CD
-+#define GL_422_AVERAGE_EXT 0x80CE
-+#define GL_422_REV_AVERAGE_EXT 0x80CF
-+#endif
-+
-+#ifndef GL_NV_texgen_reflection
-+#define GL_NORMAL_MAP_NV 0x8511
-+#define GL_REFLECTION_MAP_NV 0x8512
-+#endif
-+
-+#ifndef GL_EXT_texture_cube_map
-+#define GL_NORMAL_MAP_EXT 0x8511
-+#define GL_REFLECTION_MAP_EXT 0x8512
-+#define GL_TEXTURE_CUBE_MAP_EXT 0x8513
-+#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514
-+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515
-+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516
-+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517
-+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518
-+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519
-+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A
-+#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B
-+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C
-+#endif
-+
-+#ifndef GL_SUN_convolution_border_modes
-+#define GL_WRAP_BORDER_SUN 0x81D4
-+#endif
-+
-+#ifndef GL_EXT_texture_env_add
-+#endif
-+
-+#ifndef GL_EXT_texture_lod_bias
-+#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD
-+#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500
-+#define GL_TEXTURE_LOD_BIAS_EXT 0x8501
-+#endif
-+
-+#ifndef GL_EXT_texture_filter_anisotropic
-+#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
-+#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
-+#endif
-+
-+#ifndef GL_EXT_vertex_weighting
-+#define GL_MODELVIEW0_STACK_DEPTH_EXT GL_MODELVIEW_STACK_DEPTH
-+#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502
-+#define GL_MODELVIEW0_MATRIX_EXT GL_MODELVIEW_MATRIX
-+#define GL_MODELVIEW1_MATRIX_EXT 0x8506
-+#define GL_VERTEX_WEIGHTING_EXT 0x8509
-+#define GL_MODELVIEW0_EXT GL_MODELVIEW
-+#define GL_MODELVIEW1_EXT 0x850A
-+#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B
-+#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C
-+#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D
-+#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E
-+#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F
-+#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510
-+#endif
-+
-+#ifndef GL_NV_light_max_exponent
-+#define GL_MAX_SHININESS_NV 0x8504
-+#define GL_MAX_SPOT_EXPONENT_NV 0x8505
-+#endif
-+
-+#ifndef GL_NV_vertex_array_range
-+#define GL_VERTEX_ARRAY_RANGE_NV 0x851D
-+#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E
-+#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F
-+#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520
-+#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521
-+#endif
-+
-+#ifndef GL_NV_register_combiners
-+#define GL_REGISTER_COMBINERS_NV 0x8522
-+#define GL_VARIABLE_A_NV 0x8523
-+#define GL_VARIABLE_B_NV 0x8524
-+#define GL_VARIABLE_C_NV 0x8525
-+#define GL_VARIABLE_D_NV 0x8526
-+#define GL_VARIABLE_E_NV 0x8527
-+#define GL_VARIABLE_F_NV 0x8528
-+#define GL_VARIABLE_G_NV 0x8529
-+#define GL_CONSTANT_COLOR0_NV 0x852A
-+#define GL_CONSTANT_COLOR1_NV 0x852B
-+#define GL_PRIMARY_COLOR_NV 0x852C
-+#define GL_SECONDARY_COLOR_NV 0x852D
-+#define GL_SPARE0_NV 0x852E
-+#define GL_SPARE1_NV 0x852F
-+#define GL_DISCARD_NV 0x8530
-+#define GL_E_TIMES_F_NV 0x8531
-+#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532
-+#define GL_UNSIGNED_IDENTITY_NV 0x8536
-+#define GL_UNSIGNED_INVERT_NV 0x8537
-+#define GL_EXPAND_NORMAL_NV 0x8538
-+#define GL_EXPAND_NEGATE_NV 0x8539
-+#define GL_HALF_BIAS_NORMAL_NV 0x853A
-+#define GL_HALF_BIAS_NEGATE_NV 0x853B
-+#define GL_SIGNED_IDENTITY_NV 0x853C
-+#define GL_SIGNED_NEGATE_NV 0x853D
-+#define GL_SCALE_BY_TWO_NV 0x853E
-+#define GL_SCALE_BY_FOUR_NV 0x853F
-+#define GL_SCALE_BY_ONE_HALF_NV 0x8540
-+#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541
-+#define GL_COMBINER_INPUT_NV 0x8542
-+#define GL_COMBINER_MAPPING_NV 0x8543
-+#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544
-+#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545
-+#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546
-+#define GL_COMBINER_MUX_SUM_NV 0x8547
-+#define GL_COMBINER_SCALE_NV 0x8548
-+#define GL_COMBINER_BIAS_NV 0x8549
-+#define GL_COMBINER_AB_OUTPUT_NV 0x854A
-+#define GL_COMBINER_CD_OUTPUT_NV 0x854B
-+#define GL_COMBINER_SUM_OUTPUT_NV 0x854C
-+#define GL_MAX_GENERAL_COMBINERS_NV 0x854D
-+#define GL_NUM_GENERAL_COMBINERS_NV 0x854E
-+#define GL_COLOR_SUM_CLAMP_NV 0x854F
-+#define GL_COMBINER0_NV 0x8550
-+#define GL_COMBINER1_NV 0x8551
-+#define GL_COMBINER2_NV 0x8552
-+#define GL_COMBINER3_NV 0x8553
-+#define GL_COMBINER4_NV 0x8554
-+#define GL_COMBINER5_NV 0x8555
-+#define GL_COMBINER6_NV 0x8556
-+#define GL_COMBINER7_NV 0x8557
-+/* reuse GL_TEXTURE0_ARB */
-+/* reuse GL_TEXTURE1_ARB */
-+/* reuse GL_ZERO */
-+/* reuse GL_NONE */
-+/* reuse GL_FOG */
-+#endif
-+
-+#ifndef GL_NV_fog_distance
-+#define GL_FOG_DISTANCE_MODE_NV 0x855A
-+#define GL_EYE_RADIAL_NV 0x855B
-+#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C
-+/* reuse GL_EYE_PLANE */
-+#endif
-+
-+#ifndef GL_NV_texgen_emboss
-+#define GL_EMBOSS_LIGHT_NV 0x855D
-+#define GL_EMBOSS_CONSTANT_NV 0x855E
-+#define GL_EMBOSS_MAP_NV 0x855F
-+#endif
-+
-+#ifndef GL_NV_blend_square
-+#endif
-+
-+#ifndef GL_NV_texture_env_combine4
-+#define GL_COMBINE4_NV 0x8503
-+#define GL_SOURCE3_RGB_NV 0x8583
-+#define GL_SOURCE3_ALPHA_NV 0x858B
-+#define GL_OPERAND3_RGB_NV 0x8593
-+#define GL_OPERAND3_ALPHA_NV 0x859B
-+#endif
-+
-+#ifndef GL_MESA_resize_buffers
-+#endif
-+
-+#ifndef GL_MESA_window_pos
-+#endif
-+
-+#ifndef GL_EXT_texture_compression_s3tc
-+#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
-+#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
-+#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
-+#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
-+#endif
-+
-+#ifndef GL_IBM_cull_vertex
-+#define GL_CULL_VERTEX_IBM 103050
-+#endif
-+
-+#ifndef GL_IBM_multimode_draw_arrays
-+#endif
-+
-+#ifndef GL_IBM_vertex_array_lists
-+#define GL_VERTEX_ARRAY_LIST_IBM 103070
-+#define GL_NORMAL_ARRAY_LIST_IBM 103071
-+#define GL_COLOR_ARRAY_LIST_IBM 103072
-+#define GL_INDEX_ARRAY_LIST_IBM 103073
-+#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074
-+#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075
-+#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076
-+#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077
-+#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080
-+#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081
-+#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082
-+#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083
-+#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084
-+#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085
-+#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086
-+#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087
-+#endif
-+
-+#ifndef GL_SGIX_subsample
-+#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0
-+#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1
-+#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2
-+#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3
-+#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4
-+#endif
-+
-+#ifndef GL_SGIX_ycrcb_subsample
-+#endif
-+
-+#ifndef GL_SGIX_ycrcba
-+#define GL_YCRCB_SGIX 0x8318
-+#define GL_YCRCBA_SGIX 0x8319
-+#endif
-+
-+#ifndef GL_SGI_depth_pass_instrument
-+#define GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310
-+#define GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311
-+#define GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312
-+#endif
-+
-+#ifndef GL_3DFX_texture_compression_FXT1
-+#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0
-+#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1
-+#endif
-+
-+#ifndef GL_3DFX_multisample
-+#define GL_MULTISAMPLE_3DFX 0x86B2
-+#define GL_SAMPLE_BUFFERS_3DFX 0x86B3
-+#define GL_SAMPLES_3DFX 0x86B4
-+#define GL_MULTISAMPLE_BIT_3DFX 0x20000000
-+#endif
-+
-+#ifndef GL_3DFX_tbuffer
-+#endif
-+
-+#ifndef GL_EXT_multisample
-+#define GL_MULTISAMPLE_EXT 0x809D
-+#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E
-+#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F
-+#define GL_SAMPLE_MASK_EXT 0x80A0
-+#define GL_1PASS_EXT 0x80A1
-+#define GL_2PASS_0_EXT 0x80A2
-+#define GL_2PASS_1_EXT 0x80A3
-+#define GL_4PASS_0_EXT 0x80A4
-+#define GL_4PASS_1_EXT 0x80A5
-+#define GL_4PASS_2_EXT 0x80A6
-+#define GL_4PASS_3_EXT 0x80A7
-+#define GL_SAMPLE_BUFFERS_EXT 0x80A8
-+#define GL_SAMPLES_EXT 0x80A9
-+#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA
-+#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB
-+#define GL_SAMPLE_PATTERN_EXT 0x80AC
-+#define GL_MULTISAMPLE_BIT_EXT 0x20000000
-+#endif
-+
-+#ifndef GL_SGIX_vertex_preclip
-+#define GL_VERTEX_PRECLIP_SGIX 0x83EE
-+#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF
-+#endif
-+
-+#ifndef GL_SGIX_convolution_accuracy
-+#define GL_CONVOLUTION_HINT_SGIX 0x8316
-+#endif
-+
-+#ifndef GL_SGIX_resample
-+#define GL_PACK_RESAMPLE_SGIX 0x842C
-+#define GL_UNPACK_RESAMPLE_SGIX 0x842D
-+#define GL_RESAMPLE_REPLICATE_SGIX 0x842E
-+#define GL_RESAMPLE_ZERO_FILL_SGIX 0x842F
-+#define GL_RESAMPLE_DECIMATE_SGIX 0x8430
-+#endif
-+
-+#ifndef GL_SGIS_point_line_texgen
-+#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0
-+#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1
-+#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2
-+#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3
-+#define GL_EYE_POINT_SGIS 0x81F4
-+#define GL_OBJECT_POINT_SGIS 0x81F5
-+#define GL_EYE_LINE_SGIS 0x81F6
-+#define GL_OBJECT_LINE_SGIS 0x81F7
-+#endif
-+
-+#ifndef GL_SGIS_texture_color_mask
-+#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF
-+#endif
-+
-+#ifndef GL_EXT_texture_env_dot3
-+#define GL_DOT3_RGB_EXT 0x8740
-+#define GL_DOT3_RGBA_EXT 0x8741
-+#endif
-+
-+#ifndef GL_ATI_texture_mirror_once
-+#define GL_MIRROR_CLAMP_ATI 0x8742
-+#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743
-+#endif
-+
-+#ifndef GL_NV_fence
-+#define GL_ALL_COMPLETED_NV 0x84F2
-+#define GL_FENCE_STATUS_NV 0x84F3
-+#define GL_FENCE_CONDITION_NV 0x84F4
-+#endif
-+
-+#ifndef GL_IBM_texture_mirrored_repeat
-+#define GL_MIRRORED_REPEAT_IBM 0x8370
-+#endif
-+
-+#ifndef GL_NV_evaluators
-+#define GL_EVAL_2D_NV 0x86C0
-+#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1
-+#define GL_MAP_TESSELLATION_NV 0x86C2
-+#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3
-+#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4
-+#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5
-+#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6
-+#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7
-+#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8
-+#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9
-+#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA
-+#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB
-+#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC
-+#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD
-+#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE
-+#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF
-+#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0
-+#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1
-+#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2
-+#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3
-+#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4
-+#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5
-+#define GL_MAX_MAP_TESSELLATION_NV 0x86D6
-+#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7
-+#endif
-+
-+#ifndef GL_NV_packed_depth_stencil
-+#define GL_DEPTH_STENCIL_NV 0x84F9
-+#define GL_UNSIGNED_INT_24_8_NV 0x84FA
-+#endif
-+
-+#ifndef GL_NV_register_combiners2
-+#define GL_PER_STAGE_CONSTANTS_NV 0x8535
-+#endif
-+
-+#ifndef GL_NV_texture_compression_vtc
-+#endif
-+
-+#ifndef GL_NV_texture_rectangle
-+#define GL_TEXTURE_RECTANGLE_NV 0x84F5
-+#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6
-+#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7
-+#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8
-+#endif
-+
-+#ifndef GL_NV_texture_shader
-+#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C
-+#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D
-+#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E
-+#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9
-+#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA
-+#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB
-+#define GL_DSDT_MAG_INTENSITY_NV 0x86DC
-+#define GL_SHADER_CONSISTENT_NV 0x86DD
-+#define GL_TEXTURE_SHADER_NV 0x86DE
-+#define GL_SHADER_OPERATION_NV 0x86DF
-+#define GL_CULL_MODES_NV 0x86E0
-+#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1
-+#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2
-+#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3
-+#define GL_OFFSET_TEXTURE_2D_MATRIX_NV GL_OFFSET_TEXTURE_MATRIX_NV
-+#define GL_OFFSET_TEXTURE_2D_SCALE_NV GL_OFFSET_TEXTURE_SCALE_NV
-+#define GL_OFFSET_TEXTURE_2D_BIAS_NV GL_OFFSET_TEXTURE_BIAS_NV
-+#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4
-+#define GL_CONST_EYE_NV 0x86E5
-+#define GL_PASS_THROUGH_NV 0x86E6
-+#define GL_CULL_FRAGMENT_NV 0x86E7
-+#define GL_OFFSET_TEXTURE_2D_NV 0x86E8
-+#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9
-+#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA
-+#define GL_DOT_PRODUCT_NV 0x86EC
-+#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED
-+#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE
-+#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0
-+#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1
-+#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2
-+#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3
-+#define GL_HILO_NV 0x86F4
-+#define GL_DSDT_NV 0x86F5
-+#define GL_DSDT_MAG_NV 0x86F6
-+#define GL_DSDT_MAG_VIB_NV 0x86F7
-+#define GL_HILO16_NV 0x86F8
-+#define GL_SIGNED_HILO_NV 0x86F9
-+#define GL_SIGNED_HILO16_NV 0x86FA
-+#define GL_SIGNED_RGBA_NV 0x86FB
-+#define GL_SIGNED_RGBA8_NV 0x86FC
-+#define GL_SIGNED_RGB_NV 0x86FE
-+#define GL_SIGNED_RGB8_NV 0x86FF
-+#define GL_SIGNED_LUMINANCE_NV 0x8701
-+#define GL_SIGNED_LUMINANCE8_NV 0x8702
-+#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703
-+#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704
-+#define GL_SIGNED_ALPHA_NV 0x8705
-+#define GL_SIGNED_ALPHA8_NV 0x8706
-+#define GL_SIGNED_INTENSITY_NV 0x8707
-+#define GL_SIGNED_INTENSITY8_NV 0x8708
-+#define GL_DSDT8_NV 0x8709
-+#define GL_DSDT8_MAG8_NV 0x870A
-+#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B
-+#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C
-+#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
-+#define GL_HI_SCALE_NV 0x870E
-+#define GL_LO_SCALE_NV 0x870F
-+#define GL_DS_SCALE_NV 0x8710
-+#define GL_DT_SCALE_NV 0x8711
-+#define GL_MAGNITUDE_SCALE_NV 0x8712
-+#define GL_VIBRANCE_SCALE_NV 0x8713
-+#define GL_HI_BIAS_NV 0x8714
-+#define GL_LO_BIAS_NV 0x8715
-+#define GL_DS_BIAS_NV 0x8716
-+#define GL_DT_BIAS_NV 0x8717
-+#define GL_MAGNITUDE_BIAS_NV 0x8718
-+#define GL_VIBRANCE_BIAS_NV 0x8719
-+#define GL_TEXTURE_BORDER_VALUES_NV 0x871A
-+#define GL_TEXTURE_HI_SIZE_NV 0x871B
-+#define GL_TEXTURE_LO_SIZE_NV 0x871C
-+#define GL_TEXTURE_DS_SIZE_NV 0x871D
-+#define GL_TEXTURE_DT_SIZE_NV 0x871E
-+#define GL_TEXTURE_MAG_SIZE_NV 0x871F
-+#endif
-+
-+#ifndef GL_NV_texture_shader2
-+#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF
-+#endif
-+
-+#ifndef GL_NV_vertex_array_range2
-+#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533
-+#endif
-+
-+#ifndef GL_NV_vertex_program
-+#define GL_VERTEX_PROGRAM_NV 0x8620
-+#define GL_VERTEX_STATE_PROGRAM_NV 0x8621
-+#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623
-+#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624
-+#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625
-+#define GL_CURRENT_ATTRIB_NV 0x8626
-+#define GL_PROGRAM_LENGTH_NV 0x8627
-+#define GL_PROGRAM_STRING_NV 0x8628
-+#define GL_MODELVIEW_PROJECTION_NV 0x8629
-+#define GL_IDENTITY_NV 0x862A
-+#define GL_INVERSE_NV 0x862B
-+#define GL_TRANSPOSE_NV 0x862C
-+#define GL_INVERSE_TRANSPOSE_NV 0x862D
-+#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E
-+#define GL_MAX_TRACK_MATRICES_NV 0x862F
-+#define GL_MATRIX0_NV 0x8630
-+#define GL_MATRIX1_NV 0x8631
-+#define GL_MATRIX2_NV 0x8632
-+#define GL_MATRIX3_NV 0x8633
-+#define GL_MATRIX4_NV 0x8634
-+#define GL_MATRIX5_NV 0x8635
-+#define GL_MATRIX6_NV 0x8636
-+#define GL_MATRIX7_NV 0x8637
-+#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640
-+#define GL_CURRENT_MATRIX_NV 0x8641
-+#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642
-+#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643
-+#define GL_PROGRAM_PARAMETER_NV 0x8644
-+#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645
-+#define GL_PROGRAM_TARGET_NV 0x8646
-+#define GL_PROGRAM_RESIDENT_NV 0x8647
-+#define GL_TRACK_MATRIX_NV 0x8648
-+#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649
-+#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A
-+#define GL_PROGRAM_ERROR_POSITION_NV 0x864B
-+#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650
-+#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651
-+#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652
-+#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653
-+#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654
-+#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655
-+#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656
-+#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657
-+#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658
-+#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659
-+#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A
-+#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B
-+#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C
-+#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D
-+#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E
-+#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F
-+#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660
-+#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661
-+#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662
-+#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663
-+#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664
-+#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665
-+#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666
-+#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667
-+#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668
-+#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669
-+#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A
-+#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B
-+#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C
-+#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D
-+#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E
-+#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F
-+#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670
-+#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671
-+#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672
-+#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673
-+#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674
-+#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675
-+#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676
-+#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677
-+#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678
-+#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679
-+#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A
-+#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B
-+#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C
-+#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D
-+#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E
-+#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F
-+#endif
-+
-+#ifndef GL_SGIX_texture_coordinate_clamp
-+#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369
-+#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A
-+#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B
-+#endif
-+
-+#ifndef GL_SGIX_scalebias_hint
-+#define GL_SCALEBIAS_HINT_SGIX 0x8322
-+#endif
-+
-+#ifndef GL_OML_interlace
-+#define GL_INTERLACE_OML 0x8980
-+#define GL_INTERLACE_READ_OML 0x8981
-+#endif
-+
-+#ifndef GL_OML_subsample
-+#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982
-+#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983
-+#endif
-+
-+#ifndef GL_OML_resample
-+#define GL_PACK_RESAMPLE_OML 0x8984
-+#define GL_UNPACK_RESAMPLE_OML 0x8985
-+#define GL_RESAMPLE_REPLICATE_OML 0x8986
-+#define GL_RESAMPLE_ZERO_FILL_OML 0x8987
-+#define GL_RESAMPLE_AVERAGE_OML 0x8988
-+#define GL_RESAMPLE_DECIMATE_OML 0x8989
-+#endif
-+
-+#ifndef GL_NV_copy_depth_to_color
-+#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E
-+#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F
-+#endif
-+
-+#ifndef GL_ATI_envmap_bumpmap
-+#define GL_BUMP_ROT_MATRIX_ATI 0x8775
-+#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776
-+#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777
-+#define GL_BUMP_TEX_UNITS_ATI 0x8778
-+#define GL_DUDV_ATI 0x8779
-+#define GL_DU8DV8_ATI 0x877A
-+#define GL_BUMP_ENVMAP_ATI 0x877B
-+#define GL_BUMP_TARGET_ATI 0x877C
-+#endif
-+
-+#ifndef GL_ATI_fragment_shader
-+#define GL_FRAGMENT_SHADER_ATI 0x8920
-+#define GL_REG_0_ATI 0x8921
-+#define GL_REG_1_ATI 0x8922
-+#define GL_REG_2_ATI 0x8923
-+#define GL_REG_3_ATI 0x8924
-+#define GL_REG_4_ATI 0x8925
-+#define GL_REG_5_ATI 0x8926
-+#define GL_REG_6_ATI 0x8927
-+#define GL_REG_7_ATI 0x8928
-+#define GL_REG_8_ATI 0x8929
-+#define GL_REG_9_ATI 0x892A
-+#define GL_REG_10_ATI 0x892B
-+#define GL_REG_11_ATI 0x892C
-+#define GL_REG_12_ATI 0x892D
-+#define GL_REG_13_ATI 0x892E
-+#define GL_REG_14_ATI 0x892F
-+#define GL_REG_15_ATI 0x8930
-+#define GL_REG_16_ATI 0x8931
-+#define GL_REG_17_ATI 0x8932
-+#define GL_REG_18_ATI 0x8933
-+#define GL_REG_19_ATI 0x8934
-+#define GL_REG_20_ATI 0x8935
-+#define GL_REG_21_ATI 0x8936
-+#define GL_REG_22_ATI 0x8937
-+#define GL_REG_23_ATI 0x8938
-+#define GL_REG_24_ATI 0x8939
-+#define GL_REG_25_ATI 0x893A
-+#define GL_REG_26_ATI 0x893B
-+#define GL_REG_27_ATI 0x893C
-+#define GL_REG_28_ATI 0x893D
-+#define GL_REG_29_ATI 0x893E
-+#define GL_REG_30_ATI 0x893F
-+#define GL_REG_31_ATI 0x8940
-+#define GL_CON_0_ATI 0x8941
-+#define GL_CON_1_ATI 0x8942
-+#define GL_CON_2_ATI 0x8943
-+#define GL_CON_3_ATI 0x8944
-+#define GL_CON_4_ATI 0x8945
-+#define GL_CON_5_ATI 0x8946
-+#define GL_CON_6_ATI 0x8947
-+#define GL_CON_7_ATI 0x8948
-+#define GL_CON_8_ATI 0x8949
-+#define GL_CON_9_ATI 0x894A
-+#define GL_CON_10_ATI 0x894B
-+#define GL_CON_11_ATI 0x894C
-+#define GL_CON_12_ATI 0x894D
-+#define GL_CON_13_ATI 0x894E
-+#define GL_CON_14_ATI 0x894F
-+#define GL_CON_15_ATI 0x8950
-+#define GL_CON_16_ATI 0x8951
-+#define GL_CON_17_ATI 0x8952
-+#define GL_CON_18_ATI 0x8953
-+#define GL_CON_19_ATI 0x8954
-+#define GL_CON_20_ATI 0x8955
-+#define GL_CON_21_ATI 0x8956
-+#define GL_CON_22_ATI 0x8957
-+#define GL_CON_23_ATI 0x8958
-+#define GL_CON_24_ATI 0x8959
-+#define GL_CON_25_ATI 0x895A
-+#define GL_CON_26_ATI 0x895B
-+#define GL_CON_27_ATI 0x895C
-+#define GL_CON_28_ATI 0x895D
-+#define GL_CON_29_ATI 0x895E
-+#define GL_CON_30_ATI 0x895F
-+#define GL_CON_31_ATI 0x8960
-+#define GL_MOV_ATI 0x8961
-+#define GL_ADD_ATI 0x8963
-+#define GL_MUL_ATI 0x8964
-+#define GL_SUB_ATI 0x8965
-+#define GL_DOT3_ATI 0x8966
-+#define GL_DOT4_ATI 0x8967
-+#define GL_MAD_ATI 0x8968
-+#define GL_LERP_ATI 0x8969
-+#define GL_CND_ATI 0x896A
-+#define GL_CND0_ATI 0x896B
-+#define GL_DOT2_ADD_ATI 0x896C
-+#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D
-+#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E
-+#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F
-+#define GL_NUM_PASSES_ATI 0x8970
-+#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971
-+#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972
-+#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973
-+#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974
-+#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975
-+#define GL_SWIZZLE_STR_ATI 0x8976
-+#define GL_SWIZZLE_STQ_ATI 0x8977
-+#define GL_SWIZZLE_STR_DR_ATI 0x8978
-+#define GL_SWIZZLE_STQ_DQ_ATI 0x8979
-+#define GL_SWIZZLE_STRQ_ATI 0x897A
-+#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B
-+#define GL_RED_BIT_ATI 0x00000001
-+#define GL_GREEN_BIT_ATI 0x00000002
-+#define GL_BLUE_BIT_ATI 0x00000004
-+#define GL_2X_BIT_ATI 0x00000001
-+#define GL_4X_BIT_ATI 0x00000002
-+#define GL_8X_BIT_ATI 0x00000004
-+#define GL_HALF_BIT_ATI 0x00000008
-+#define GL_QUARTER_BIT_ATI 0x00000010
-+#define GL_EIGHTH_BIT_ATI 0x00000020
-+#define GL_SATURATE_BIT_ATI 0x00000040
-+#define GL_COMP_BIT_ATI 0x00000002
-+#define GL_NEGATE_BIT_ATI 0x00000004
-+#define GL_BIAS_BIT_ATI 0x00000008
-+#endif
-+
-+#ifndef GL_ATI_pn_triangles
-+#define GL_PN_TRIANGLES_ATI 0x87F0
-+#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1
-+#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2
-+#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3
-+#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4
-+#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5
-+#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6
-+#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7
-+#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8
-+#endif
-+
-+#ifndef GL_ATI_vertex_array_object
-+#define GL_STATIC_ATI 0x8760
-+#define GL_DYNAMIC_ATI 0x8761
-+#define GL_PRESERVE_ATI 0x8762
-+#define GL_DISCARD_ATI 0x8763
-+#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764
-+#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765
-+#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766
-+#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767
-+#endif
-+
-+#ifndef GL_EXT_vertex_shader
-+#define GL_VERTEX_SHADER_EXT 0x8780
-+#define GL_VERTEX_SHADER_BINDING_EXT 0x8781
-+#define GL_OP_INDEX_EXT 0x8782
-+#define GL_OP_NEGATE_EXT 0x8783
-+#define GL_OP_DOT3_EXT 0x8784
-+#define GL_OP_DOT4_EXT 0x8785
-+#define GL_OP_MUL_EXT 0x8786
-+#define GL_OP_ADD_EXT 0x8787
-+#define GL_OP_MADD_EXT 0x8788
-+#define GL_OP_FRAC_EXT 0x8789
-+#define GL_OP_MAX_EXT 0x878A
-+#define GL_OP_MIN_EXT 0x878B
-+#define GL_OP_SET_GE_EXT 0x878C
-+#define GL_OP_SET_LT_EXT 0x878D
-+#define GL_OP_CLAMP_EXT 0x878E
-+#define GL_OP_FLOOR_EXT 0x878F
-+#define GL_OP_ROUND_EXT 0x8790
-+#define GL_OP_EXP_BASE_2_EXT 0x8791
-+#define GL_OP_LOG_BASE_2_EXT 0x8792
-+#define GL_OP_POWER_EXT 0x8793
-+#define GL_OP_RECIP_EXT 0x8794
-+#define GL_OP_RECIP_SQRT_EXT 0x8795
-+#define GL_OP_SUB_EXT 0x8796
-+#define GL_OP_CROSS_PRODUCT_EXT 0x8797
-+#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798
-+#define GL_OP_MOV_EXT 0x8799
-+#define GL_OUTPUT_VERTEX_EXT 0x879A
-+#define GL_OUTPUT_COLOR0_EXT 0x879B
-+#define GL_OUTPUT_COLOR1_EXT 0x879C
-+#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D
-+#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E
-+#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F
-+#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0
-+#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1
-+#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2
-+#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3
-+#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4
-+#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5
-+#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6
-+#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7
-+#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8
-+#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9
-+#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA
-+#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB
-+#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC
-+#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD
-+#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE
-+#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF
-+#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0
-+#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1
-+#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2
-+#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3
-+#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4
-+#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5
-+#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6
-+#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7
-+#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8
-+#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9
-+#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA
-+#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB
-+#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC
-+#define GL_OUTPUT_FOG_EXT 0x87BD
-+#define GL_SCALAR_EXT 0x87BE
-+#define GL_VECTOR_EXT 0x87BF
-+#define GL_MATRIX_EXT 0x87C0
-+#define GL_VARIANT_EXT 0x87C1
-+#define GL_INVARIANT_EXT 0x87C2
-+#define GL_LOCAL_CONSTANT_EXT 0x87C3
-+#define GL_LOCAL_EXT 0x87C4
-+#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5
-+#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6
-+#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7
-+#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8
-+#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9
-+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA
-+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB
-+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC
-+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD
-+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE
-+#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF
-+#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0
-+#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1
-+#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2
-+#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3
-+#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4
-+#define GL_X_EXT 0x87D5
-+#define GL_Y_EXT 0x87D6
-+#define GL_Z_EXT 0x87D7
-+#define GL_W_EXT 0x87D8
-+#define GL_NEGATIVE_X_EXT 0x87D9
-+#define GL_NEGATIVE_Y_EXT 0x87DA
-+#define GL_NEGATIVE_Z_EXT 0x87DB
-+#define GL_NEGATIVE_W_EXT 0x87DC
-+#define GL_ZERO_EXT 0x87DD
-+#define GL_ONE_EXT 0x87DE
-+#define GL_NEGATIVE_ONE_EXT 0x87DF
-+#define GL_NORMALIZED_RANGE_EXT 0x87E0
-+#define GL_FULL_RANGE_EXT 0x87E1
-+#define GL_CURRENT_VERTEX_EXT 0x87E2
-+#define GL_MVP_MATRIX_EXT 0x87E3
-+#define GL_VARIANT_VALUE_EXT 0x87E4
-+#define GL_VARIANT_DATATYPE_EXT 0x87E5
-+#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6
-+#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7
-+#define GL_VARIANT_ARRAY_EXT 0x87E8
-+#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9
-+#define GL_INVARIANT_VALUE_EXT 0x87EA
-+#define GL_INVARIANT_DATATYPE_EXT 0x87EB
-+#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC
-+#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED
-+#endif
-+
-+#ifndef GL_ATI_vertex_streams
-+#define GL_MAX_VERTEX_STREAMS_ATI 0x876B
-+#define GL_VERTEX_STREAM0_ATI 0x876C
-+#define GL_VERTEX_STREAM1_ATI 0x876D
-+#define GL_VERTEX_STREAM2_ATI 0x876E
-+#define GL_VERTEX_STREAM3_ATI 0x876F
-+#define GL_VERTEX_STREAM4_ATI 0x8770
-+#define GL_VERTEX_STREAM5_ATI 0x8771
-+#define GL_VERTEX_STREAM6_ATI 0x8772
-+#define GL_VERTEX_STREAM7_ATI 0x8773
-+#define GL_VERTEX_SOURCE_ATI 0x8774
-+#endif
-+
-+#ifndef GL_ATI_element_array
-+#define GL_ELEMENT_ARRAY_ATI 0x8768
-+#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769
-+#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A
-+#endif
-+
-+#ifndef GL_SUN_mesh_array
-+#define GL_QUAD_MESH_SUN 0x8614
-+#define GL_TRIANGLE_MESH_SUN 0x8615
-+#endif
-+
-+#ifndef GL_SUN_slice_accum
-+#define GL_SLICE_ACCUM_SUN 0x85CC
-+#endif
-+
-+#ifndef GL_NV_multisample_filter_hint
-+#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534
-+#endif
-+
-+#ifndef GL_NV_depth_clamp
-+#define GL_DEPTH_CLAMP_NV 0x864F
-+#endif
-+
-+#ifndef GL_NV_occlusion_query
-+#define GL_PIXEL_COUNTER_BITS_NV 0x8864
-+#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865
-+#define GL_PIXEL_COUNT_NV 0x8866
-+#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867
-+#endif
-+
-+#ifndef GL_NV_point_sprite
-+#define GL_POINT_SPRITE_NV 0x8861
-+#define GL_COORD_REPLACE_NV 0x8862
-+#define GL_POINT_SPRITE_R_MODE_NV 0x8863
-+#endif
-+
-+#ifndef GL_NV_texture_shader3
-+#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850
-+#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851
-+#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852
-+#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853
-+#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854
-+#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855
-+#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856
-+#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857
-+#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858
-+#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859
-+#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A
-+#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B
-+#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C
-+#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D
-+#define GL_HILO8_NV 0x885E
-+#define GL_SIGNED_HILO8_NV 0x885F
-+#define GL_FORCE_BLUE_TO_ONE_NV 0x8860
-+#endif
-+
-+#ifndef GL_NV_vertex_program1_1
-+#endif
-+
-+#ifndef GL_EXT_shadow_funcs
-+#endif
-+
-+#ifndef GL_EXT_stencil_two_side
-+#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910
-+#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911
-+#endif
-+
-+#ifndef GL_ATI_text_fragment_shader
-+#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200
-+#endif
-+
-+#ifndef GL_APPLE_client_storage
-+#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2
-+#endif
-+
-+#ifndef GL_APPLE_element_array
-+#define GL_ELEMENT_ARRAY_APPLE 0x8768
-+#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8769
-+#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x876A
-+#endif
-+
-+#ifndef GL_APPLE_fence
-+#define GL_DRAW_PIXELS_APPLE 0x8A0A
-+#define GL_FENCE_APPLE 0x8A0B
-+#endif
-+
-+#ifndef GL_APPLE_vertex_array_object
-+#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5
-+#endif
-+
-+#ifndef GL_APPLE_vertex_array_range
-+#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D
-+#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E
-+#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F
-+#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521
-+#define GL_STORAGE_CACHED_APPLE 0x85BE
-+#define GL_STORAGE_SHARED_APPLE 0x85BF
-+#endif
-+
-+#ifndef GL_APPLE_ycbcr_422
-+#define GL_YCBCR_422_APPLE 0x85B9
-+#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA
-+#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB
-+#endif
-+
-+#ifndef GL_S3_s3tc
-+#define GL_RGB_S3TC 0x83A0
-+#define GL_RGB4_S3TC 0x83A1
-+#define GL_RGBA_S3TC 0x83A2
-+#define GL_RGBA4_S3TC 0x83A3
-+#endif
-+
-+#ifndef GL_ATI_draw_buffers
-+#define GL_MAX_DRAW_BUFFERS_ATI 0x8824
-+#define GL_DRAW_BUFFER0_ATI 0x8825
-+#define GL_DRAW_BUFFER1_ATI 0x8826
-+#define GL_DRAW_BUFFER2_ATI 0x8827
-+#define GL_DRAW_BUFFER3_ATI 0x8828
-+#define GL_DRAW_BUFFER4_ATI 0x8829
-+#define GL_DRAW_BUFFER5_ATI 0x882A
-+#define GL_DRAW_BUFFER6_ATI 0x882B
-+#define GL_DRAW_BUFFER7_ATI 0x882C
-+#define GL_DRAW_BUFFER8_ATI 0x882D
-+#define GL_DRAW_BUFFER9_ATI 0x882E
-+#define GL_DRAW_BUFFER10_ATI 0x882F
-+#define GL_DRAW_BUFFER11_ATI 0x8830
-+#define GL_DRAW_BUFFER12_ATI 0x8831
-+#define GL_DRAW_BUFFER13_ATI 0x8832
-+#define GL_DRAW_BUFFER14_ATI 0x8833
-+#define GL_DRAW_BUFFER15_ATI 0x8834
-+#endif
-+
-+#ifndef GL_ATI_pixel_format_float
-+#define GL_TYPE_RGBA_FLOAT_ATI 0x8820
-+#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835
-+#endif
-+
-+#ifndef GL_ATI_texture_env_combine3
-+#define GL_MODULATE_ADD_ATI 0x8744
-+#define GL_MODULATE_SIGNED_ADD_ATI 0x8745
-+#define GL_MODULATE_SUBTRACT_ATI 0x8746
-+#endif
-+
-+#ifndef GL_ATI_texture_float
-+#define GL_RGBA_FLOAT32_ATI 0x8814
-+#define GL_RGB_FLOAT32_ATI 0x8815
-+#define GL_ALPHA_FLOAT32_ATI 0x8816
-+#define GL_INTENSITY_FLOAT32_ATI 0x8817
-+#define GL_LUMINANCE_FLOAT32_ATI 0x8818
-+#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819
-+#define GL_RGBA_FLOAT16_ATI 0x881A
-+#define GL_RGB_FLOAT16_ATI 0x881B
-+#define GL_ALPHA_FLOAT16_ATI 0x881C
-+#define GL_INTENSITY_FLOAT16_ATI 0x881D
-+#define GL_LUMINANCE_FLOAT16_ATI 0x881E
-+#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F
-+#endif
-+
-+#ifndef GL_NV_float_buffer
-+#define GL_FLOAT_R_NV 0x8880
-+#define GL_FLOAT_RG_NV 0x8881
-+#define GL_FLOAT_RGB_NV 0x8882
-+#define GL_FLOAT_RGBA_NV 0x8883
-+#define GL_FLOAT_R16_NV 0x8884
-+#define GL_FLOAT_R32_NV 0x8885
-+#define GL_FLOAT_RG16_NV 0x8886
-+#define GL_FLOAT_RG32_NV 0x8887
-+#define GL_FLOAT_RGB16_NV 0x8888
-+#define GL_FLOAT_RGB32_NV 0x8889
-+#define GL_FLOAT_RGBA16_NV 0x888A
-+#define GL_FLOAT_RGBA32_NV 0x888B
-+#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C
-+#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D
-+#define GL_FLOAT_RGBA_MODE_NV 0x888E
-+#endif
-+
-+#ifndef GL_NV_fragment_program
-+#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868
-+#define GL_FRAGMENT_PROGRAM_NV 0x8870
-+#define GL_MAX_TEXTURE_COORDS_NV 0x8871
-+#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872
-+#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873
-+#define GL_PROGRAM_ERROR_STRING_NV 0x8874
-+#endif
-+
-+#ifndef GL_NV_half_float
-+#define GL_HALF_FLOAT_NV 0x140B
-+#endif
-+
-+#ifndef GL_NV_pixel_data_range
-+#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878
-+#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879
-+#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A
-+#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B
-+#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C
-+#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D
-+#endif
-+
-+#ifndef GL_NV_primitive_restart
-+#define GL_PRIMITIVE_RESTART_NV 0x8558
-+#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559
-+#endif
-+
-+#ifndef GL_NV_texture_expand_normal
-+#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F
-+#endif
-+
-+#ifndef GL_NV_vertex_program2
-+#endif
-+
-+#ifndef GL_ATI_map_object_buffer
-+#endif
-+
-+#ifndef GL_ATI_separate_stencil
-+#define GL_STENCIL_BACK_FUNC_ATI 0x8800
-+#define GL_STENCIL_BACK_FAIL_ATI 0x8801
-+#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802
-+#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803
-+#endif
-+
-+#ifndef GL_ATI_vertex_attrib_array_object
-+#endif
-+
-+#ifndef GL_OES_read_format
-+#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A
-+#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B
-+#endif
-+
-+#ifndef GL_EXT_depth_bounds_test
-+#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890
-+#define GL_DEPTH_BOUNDS_EXT 0x8891
-+#endif
-+
-+#ifndef GL_EXT_texture_mirror_clamp
-+#define GL_MIRROR_CLAMP_EXT 0x8742
-+#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
-+#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912
-+#endif
-+
-+#ifndef GL_EXT_blend_equation_separate
-+#define GL_BLEND_EQUATION_RGB_EXT GL_BLEND_EQUATION
-+#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D
-+#endif
-+
-+#ifndef GL_MESA_pack_invert
-+#define GL_PACK_INVERT_MESA 0x8758
-+#endif
-+
-+#ifndef GL_MESA_ycbcr_texture
-+#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA
-+#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB
-+#define GL_YCBCR_MESA 0x8757
-+#endif
-+
-+#ifndef GL_EXT_pixel_buffer_object
-+#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB
-+#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC
-+#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED
-+#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF
-+#endif
-+
-+#ifndef GL_NV_fragment_program_option
-+#endif
-+
-+#ifndef GL_NV_fragment_program2
-+#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4
-+#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5
-+#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6
-+#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7
-+#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8
-+#endif
-+
-+#ifndef GL_NV_vertex_program2_option
-+/* reuse GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */
-+/* reuse GL_MAX_PROGRAM_CALL_DEPTH_NV */
-+#endif
-+
-+#ifndef GL_NV_vertex_program3
-+/* reuse GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */
-+#endif
-+
-+#ifndef GL_EXT_framebuffer_object
-+#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506
-+#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8
-+#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6
-+#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7
-+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0
-+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1
-+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2
-+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3
-+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4
-+#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5
-+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6
-+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7
-+#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9
-+#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA
-+#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB
-+#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC
-+#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD
-+#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF
-+#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0
-+#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1
-+#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2
-+#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3
-+#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4
-+#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5
-+#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6
-+#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7
-+#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8
-+#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9
-+#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA
-+#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB
-+#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC
-+#define GL_COLOR_ATTACHMENT13_EXT 0x8CED
-+#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE
-+#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF
-+#define GL_DEPTH_ATTACHMENT_EXT 0x8D00
-+#define GL_STENCIL_ATTACHMENT_EXT 0x8D20
-+#define GL_FRAMEBUFFER_EXT 0x8D40
-+#define GL_RENDERBUFFER_EXT 0x8D41
-+#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42
-+#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43
-+#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44
-+#define GL_STENCIL_INDEX1_EXT 0x8D46
-+#define GL_STENCIL_INDEX4_EXT 0x8D47
-+#define GL_STENCIL_INDEX8_EXT 0x8D48
-+#define GL_STENCIL_INDEX16_EXT 0x8D49
-+#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50
-+#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51
-+#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52
-+#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53
-+#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54
-+#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55
-+#endif
-+
-+#ifndef GL_GREMEDY_string_marker
-+#endif
-+
-+#ifndef GL_EXT_packed_depth_stencil
-+#define GL_DEPTH_STENCIL_EXT 0x84F9
-+#define GL_UNSIGNED_INT_24_8_EXT 0x84FA
-+#define GL_DEPTH24_STENCIL8_EXT 0x88F0
-+#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1
-+#endif
-+
-+#ifndef GL_EXT_stencil_clear_tag
-+#define GL_STENCIL_TAG_BITS_EXT 0x88F2
-+#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3
-+#endif
-+
-+#ifndef GL_EXT_texture_sRGB
-+#define GL_SRGB_EXT 0x8C40
-+#define GL_SRGB8_EXT 0x8C41
-+#define GL_SRGB_ALPHA_EXT 0x8C42
-+#define GL_SRGB8_ALPHA8_EXT 0x8C43
-+#define GL_SLUMINANCE_ALPHA_EXT 0x8C44
-+#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45
-+#define GL_SLUMINANCE_EXT 0x8C46
-+#define GL_SLUMINANCE8_EXT 0x8C47
-+#define GL_COMPRESSED_SRGB_EXT 0x8C48
-+#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49
-+#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A
-+#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B
-+#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
-+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
-+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
-+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
-+#endif
-+
-+#ifndef GL_EXT_framebuffer_blit
-+#define GL_READ_FRAMEBUFFER_EXT 0x8CA8
-+#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9
-+#define GL_READ_FRAMEBUFFER_BINDING_EXT GL_FRAMEBUFFER_BINDING_EXT
-+#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CAA
-+#endif
-+
-+#ifndef GL_EXT_framebuffer_multisample
-+#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
-+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
-+#define GL_MAX_SAMPLES_EXT 0x8D57
-+#endif
-+
-+#ifndef GL_MESAX_texture_stack
-+#define GL_TEXTURE_1D_STACK_MESAX 0x8759
-+#define GL_TEXTURE_2D_STACK_MESAX 0x875A
-+#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B
-+#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C
-+#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D
-+#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E
-+#endif
-+
-+#ifndef GL_EXT_timer_query
-+#define GL_TIME_ELAPSED_EXT 0x88BF
-+#endif
-+
-+#ifndef GL_EXT_gpu_program_parameters
-+#endif
-+
-+#ifndef GL_APPLE_flush_buffer_range
-+#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12
-+#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13
-+#endif
-+
-+#ifndef GL_NV_gpu_program4
-+#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904
-+#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905
-+#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906
-+#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907
-+#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908
-+#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909
-+#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5
-+#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6
-+#endif
-+
-+#ifndef GL_NV_geometry_program4
-+#define GL_LINES_ADJACENCY_EXT 0x000A
-+#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B
-+#define GL_TRIANGLES_ADJACENCY_EXT 0x000C
-+#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D
-+#define GL_GEOMETRY_PROGRAM_NV 0x8C26
-+#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27
-+#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28
-+#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA
-+#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB
-+#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC
-+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
-+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
-+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
-+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9
-+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4
-+#define GL_PROGRAM_POINT_SIZE_EXT 0x8642
-+#endif
-+
-+#ifndef GL_EXT_geometry_shader4
-+#define GL_GEOMETRY_SHADER_EXT 0x8DD9
-+/* reuse GL_GEOMETRY_VERTICES_OUT_EXT */
-+/* reuse GL_GEOMETRY_INPUT_TYPE_EXT */
-+/* reuse GL_GEOMETRY_OUTPUT_TYPE_EXT */
-+/* reuse GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT */
-+#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD
-+#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE
-+#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B
-+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
-+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
-+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
-+/* reuse GL_LINES_ADJACENCY_EXT */
-+/* reuse GL_LINE_STRIP_ADJACENCY_EXT */
-+/* reuse GL_TRIANGLES_ADJACENCY_EXT */
-+/* reuse GL_TRIANGLE_STRIP_ADJACENCY_EXT */
-+/* reuse GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT */
-+/* reuse GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT */
-+/* reuse GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT */
-+/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */
-+/* reuse GL_PROGRAM_POINT_SIZE_EXT */
-+#endif
-+
-+#ifndef GL_NV_vertex_program4
-+#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD
-+#endif
-+
-+#ifndef GL_EXT_gpu_shader4
-+#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0
-+#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1
-+#define GL_SAMPLER_BUFFER_EXT 0x8DC2
-+#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3
-+#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4
-+#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5
-+#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6
-+#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7
-+#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8
-+#define GL_INT_SAMPLER_1D_EXT 0x8DC9
-+#define GL_INT_SAMPLER_2D_EXT 0x8DCA
-+#define GL_INT_SAMPLER_3D_EXT 0x8DCB
-+#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC
-+#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD
-+#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE
-+#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF
-+#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0
-+#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1
-+#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2
-+#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3
-+#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4
-+#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5
-+#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6
-+#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7
-+#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8
-+#endif
-+
-+#ifndef GL_EXT_draw_instanced
-+#endif
-+
-+#ifndef GL_EXT_packed_float
-+#define GL_R11F_G11F_B10F_EXT 0x8C3A
-+#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B
-+#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C
-+#endif
-+
-+#ifndef GL_EXT_texture_array
-+#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18
-+#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19
-+#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A
-+#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B
-+#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C
-+#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D
-+#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF
-+#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E
-+/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */
-+#endif
-+
-+#ifndef GL_EXT_texture_buffer_object
-+#define GL_TEXTURE_BUFFER_EXT 0x8C2A
-+#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B
-+#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C
-+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D
-+#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E
-+#endif
-+
-+#ifndef GL_EXT_texture_compression_latc
-+#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70
-+#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71
-+#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72
-+#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73
-+#endif
-+
-+#ifndef GL_EXT_texture_compression_rgtc
-+#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB
-+#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC
-+#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD
-+#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE
-+#endif
-+
-+#ifndef GL_EXT_texture_shared_exponent
-+#define GL_RGB9_E5_EXT 0x8C3D
-+#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E
-+#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F
-+#endif
-+
-+#ifndef GL_NV_depth_buffer_float
-+#define GL_DEPTH_COMPONENT32F_NV 0x8DAB
-+#define GL_DEPTH32F_STENCIL8_NV 0x8DAC
-+#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD
-+#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF
-+#endif
-+
-+#ifndef GL_NV_fragment_program4
-+#endif
-+
-+#ifndef GL_NV_framebuffer_multisample_coverage
-+#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB
-+#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10
-+#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11
-+#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12
-+#endif
-+
-+#ifndef GL_EXT_framebuffer_sRGB
-+#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9
-+#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA
-+#endif
-+
-+#ifndef GL_NV_geometry_shader4
-+#endif
-+
-+#ifndef GL_NV_parameter_buffer_object
-+#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0
-+#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1
-+#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2
-+#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3
-+#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4
-+#endif
-+
-+#ifndef GL_EXT_draw_buffers2
-+#endif
-+
-+#ifndef GL_NV_transform_feedback
-+#define GL_BACK_PRIMARY_COLOR_NV 0x8C77
-+#define GL_BACK_SECONDARY_COLOR_NV 0x8C78
-+#define GL_TEXTURE_COORD_NV 0x8C79
-+#define GL_CLIP_DISTANCE_NV 0x8C7A
-+#define GL_VERTEX_ID_NV 0x8C7B
-+#define GL_PRIMITIVE_ID_NV 0x8C7C
-+#define GL_GENERIC_ATTRIB_NV 0x8C7D
-+#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E
-+#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F
-+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80
-+#define GL_ACTIVE_VARYINGS_NV 0x8C81
-+#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82
-+#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83
-+#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84
-+#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85
-+#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86
-+#define GL_PRIMITIVES_GENERATED_NV 0x8C87
-+#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88
-+#define GL_RASTERIZER_DISCARD_NV 0x8C89
-+#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_ATTRIBS_NV 0x8C8A
-+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B
-+#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C
-+#define GL_SEPARATE_ATTRIBS_NV 0x8C8D
-+#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E
-+#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F
-+#endif
-+
-+#ifndef GL_EXT_bindable_uniform
-+#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2
-+#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3
-+#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4
-+#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED
-+#define GL_UNIFORM_BUFFER_EXT 0x8DEE
-+#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF
-+#endif
-+
-+#ifndef GL_EXT_texture_integer
-+#define GL_RGBA32UI_EXT 0x8D70
-+#define GL_RGB32UI_EXT 0x8D71
-+#define GL_ALPHA32UI_EXT 0x8D72
-+#define GL_INTENSITY32UI_EXT 0x8D73
-+#define GL_LUMINANCE32UI_EXT 0x8D74
-+#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75
-+#define GL_RGBA16UI_EXT 0x8D76
-+#define GL_RGB16UI_EXT 0x8D77
-+#define GL_ALPHA16UI_EXT 0x8D78
-+#define GL_INTENSITY16UI_EXT 0x8D79
-+#define GL_LUMINANCE16UI_EXT 0x8D7A
-+#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B
-+#define GL_RGBA8UI_EXT 0x8D7C
-+#define GL_RGB8UI_EXT 0x8D7D
-+#define GL_ALPHA8UI_EXT 0x8D7E
-+#define GL_INTENSITY8UI_EXT 0x8D7F
-+#define GL_LUMINANCE8UI_EXT 0x8D80
-+#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81
-+#define GL_RGBA32I_EXT 0x8D82
-+#define GL_RGB32I_EXT 0x8D83
-+#define GL_ALPHA32I_EXT 0x8D84
-+#define GL_INTENSITY32I_EXT 0x8D85
-+#define GL_LUMINANCE32I_EXT 0x8D86
-+#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87
-+#define GL_RGBA16I_EXT 0x8D88
-+#define GL_RGB16I_EXT 0x8D89
-+#define GL_ALPHA16I_EXT 0x8D8A
-+#define GL_INTENSITY16I_EXT 0x8D8B
-+#define GL_LUMINANCE16I_EXT 0x8D8C
-+#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D
-+#define GL_RGBA8I_EXT 0x8D8E
-+#define GL_RGB8I_EXT 0x8D8F
-+#define GL_ALPHA8I_EXT 0x8D90
-+#define GL_INTENSITY8I_EXT 0x8D91
-+#define GL_LUMINANCE8I_EXT 0x8D92
-+#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93
-+#define GL_RED_INTEGER_EXT 0x8D94
-+#define GL_GREEN_INTEGER_EXT 0x8D95
-+#define GL_BLUE_INTEGER_EXT 0x8D96
-+#define GL_ALPHA_INTEGER_EXT 0x8D97
-+#define GL_RGB_INTEGER_EXT 0x8D98
-+#define GL_RGBA_INTEGER_EXT 0x8D99
-+#define GL_BGR_INTEGER_EXT 0x8D9A
-+#define GL_BGRA_INTEGER_EXT 0x8D9B
-+#define GL_LUMINANCE_INTEGER_EXT 0x8D9C
-+#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D
-+#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E
-+#endif
-+
-+
-+/*************************************************************/
-+
-+#include <stddef.h>
-+#ifndef GL_VERSION_2_0
-+/* GL type for program/shader text */
-+typedef char GLchar; /* native character */
-+#endif
-+
-+#ifndef GL_VERSION_1_5
-+/* GL types for handling large vertex buffer objects */
-+typedef ptrdiff_t GLintptr;
-+typedef ptrdiff_t GLsizeiptr;
-+#endif
-+
-+#ifndef GL_ARB_vertex_buffer_object
-+/* GL types for handling large vertex buffer objects */
-+typedef ptrdiff_t GLintptrARB;
-+typedef ptrdiff_t GLsizeiptrARB;
-+#endif
-+
-+#ifndef GL_ARB_shader_objects
-+/* GL types for handling shader object handles and program/shader text */
-+typedef char GLcharARB; /* native character */
-+typedef unsigned int GLhandleARB; /* shader object handle */
-+#endif
-+
-+/* GL types for "half" precision (s10e5) float data in host memory */
-+#ifndef GL_ARB_half_float_pixel
-+typedef unsigned short GLhalfARB;
-+#endif
-+
-+#ifndef GL_NV_half_float
-+typedef unsigned short GLhalfNV;
-+#endif
-+
-+#ifndef GLEXT_64_TYPES_DEFINED
-+/* This code block is duplicated in glext.h, so must be protected */
-+#define GLEXT_64_TYPES_DEFINED
-+/* Define int32_t, int64_t, and uint64_t types for UST/MSC */
-+/* (as used in the GL_EXT_timer_query extension). */
-+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-+#include <inttypes.h>
-+#elif defined(__sun__)
-+#include <inttypes.h>
-+#if defined(__STDC__)
-+#if defined(__arch64__)
-+typedef long int int64_t;
-+typedef unsigned long int uint64_t;
-+#else
-+typedef long long int int64_t;
-+typedef unsigned long long int uint64_t;
-+#endif /* __arch64__ */
-+#endif /* __STDC__ */
-+#elif defined( __VMS )
-+#include <inttypes.h>
-+#elif defined(__SCO__) || defined(__USLC__)
-+#include <stdint.h>
-+#elif defined(__UNIXOS2__) || defined(__SOL64__)
-+typedef long int int32_t;
-+typedef long long int int64_t;
-+typedef unsigned long long int uint64_t;
-+#elif defined(_WIN32) && defined(__GNUC__)
-+#include <stdint.h>
-+#elif defined(_WIN32)
-+typedef __int32 int32_t;
-+typedef __int64 int64_t;
-+typedef unsigned __int64 uint64_t;
-+#else
-+#include <inttypes.h> /* Fallback option */
-+#endif
-+#endif
-+
-+#ifndef GL_EXT_timer_query
-+typedef int64_t GLint64EXT;
-+typedef uint64_t GLuint64EXT;
-+#endif
-+
-+#ifndef GL_VERSION_1_2
-+#define GL_VERSION_1_2 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glBlendColor (GLclampf, GLclampf, GLclampf, GLclampf);
-+GLAPI void APIENTRY glBlendEquation (GLenum);
-+GLAPI void APIENTRY glDrawRangeElements (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);
-+GLAPI void APIENTRY glColorTable (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
-+GLAPI void APIENTRY glColorTableParameterfv (GLenum, GLenum, const GLfloat *);
-+GLAPI void APIENTRY glColorTableParameteriv (GLenum, GLenum, const GLint *);
-+GLAPI void APIENTRY glCopyColorTable (GLenum, GLenum, GLint, GLint, GLsizei);
-+GLAPI void APIENTRY glGetColorTable (GLenum, GLenum, GLenum, GLvoid *);
-+GLAPI void APIENTRY glGetColorTableParameterfv (GLenum, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetColorTableParameteriv (GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glColorSubTable (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-+GLAPI void APIENTRY glCopyColorSubTable (GLenum, GLsizei, GLint, GLint, GLsizei);
-+GLAPI void APIENTRY glConvolutionFilter1D (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
-+GLAPI void APIENTRY glConvolutionFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-+GLAPI void APIENTRY glConvolutionParameterf (GLenum, GLenum, GLfloat);
-+GLAPI void APIENTRY glConvolutionParameterfv (GLenum, GLenum, const GLfloat *);
-+GLAPI void APIENTRY glConvolutionParameteri (GLenum, GLenum, GLint);
-+GLAPI void APIENTRY glConvolutionParameteriv (GLenum, GLenum, const GLint *);
-+GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum, GLenum, GLint, GLint, GLsizei);
-+GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei);
-+GLAPI void APIENTRY glGetConvolutionFilter (GLenum, GLenum, GLenum, GLvoid *);
-+GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glGetSeparableFilter (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *);
-+GLAPI void APIENTRY glSeparableFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *);
-+GLAPI void APIENTRY glGetHistogram (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
-+GLAPI void APIENTRY glGetHistogramParameterfv (GLenum, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetHistogramParameteriv (GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glGetMinmax (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
-+GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glHistogram (GLenum, GLsizei, GLenum, GLboolean);
-+GLAPI void APIENTRY glMinmax (GLenum, GLenum, GLboolean);
-+GLAPI void APIENTRY glResetHistogram (GLenum);
-+GLAPI void APIENTRY glResetMinmax (GLenum);
-+GLAPI void APIENTRY glTexImage3D (GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-+GLAPI void APIENTRY glTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-+GLAPI void APIENTRY glCopyTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-+typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
-+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
-+typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
-+typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
-+typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-+typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table);
-+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
-+typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
-+typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
-+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params);
-+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params);
-+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
-+typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-+typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
-+typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image);
-+typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
-+typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
-+typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
-+typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
-+typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
-+typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink);
-+typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target);
-+typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target);
-+typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
-+typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
-+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-+#endif
-+
-+#ifndef GL_VERSION_1_3
-+#define GL_VERSION_1_3 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glActiveTexture (GLenum);
-+GLAPI void APIENTRY glClientActiveTexture (GLenum);
-+GLAPI void APIENTRY glMultiTexCoord1d (GLenum, GLdouble);
-+GLAPI void APIENTRY glMultiTexCoord1dv (GLenum, const GLdouble *);
-+GLAPI void APIENTRY glMultiTexCoord1f (GLenum, GLfloat);
-+GLAPI void APIENTRY glMultiTexCoord1fv (GLenum, const GLfloat *);
-+GLAPI void APIENTRY glMultiTexCoord1i (GLenum, GLint);
-+GLAPI void APIENTRY glMultiTexCoord1iv (GLenum, const GLint *);
-+GLAPI void APIENTRY glMultiTexCoord1s (GLenum, GLshort);
-+GLAPI void APIENTRY glMultiTexCoord1sv (GLenum, const GLshort *);
-+GLAPI void APIENTRY glMultiTexCoord2d (GLenum, GLdouble, GLdouble);
-+GLAPI void APIENTRY glMultiTexCoord2dv (GLenum, const GLdouble *);
-+GLAPI void APIENTRY glMultiTexCoord2f (GLenum, GLfloat, GLfloat);
-+GLAPI void APIENTRY glMultiTexCoord2fv (GLenum, const GLfloat *);
-+GLAPI void APIENTRY glMultiTexCoord2i (GLenum, GLint, GLint);
-+GLAPI void APIENTRY glMultiTexCoord2iv (GLenum, const GLint *);
-+GLAPI void APIENTRY glMultiTexCoord2s (GLenum, GLshort, GLshort);
-+GLAPI void APIENTRY glMultiTexCoord2sv (GLenum, const GLshort *);
-+GLAPI void APIENTRY glMultiTexCoord3d (GLenum, GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glMultiTexCoord3dv (GLenum, const GLdouble *);
-+GLAPI void APIENTRY glMultiTexCoord3f (GLenum, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glMultiTexCoord3fv (GLenum, const GLfloat *);
-+GLAPI void APIENTRY glMultiTexCoord3i (GLenum, GLint, GLint, GLint);
-+GLAPI void APIENTRY glMultiTexCoord3iv (GLenum, const GLint *);
-+GLAPI void APIENTRY glMultiTexCoord3s (GLenum, GLshort, GLshort, GLshort);
-+GLAPI void APIENTRY glMultiTexCoord3sv (GLenum, const GLshort *);
-+GLAPI void APIENTRY glMultiTexCoord4d (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glMultiTexCoord4dv (GLenum, const GLdouble *);
-+GLAPI void APIENTRY glMultiTexCoord4f (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glMultiTexCoord4fv (GLenum, const GLfloat *);
-+GLAPI void APIENTRY glMultiTexCoord4i (GLenum, GLint, GLint, GLint, GLint);
-+GLAPI void APIENTRY glMultiTexCoord4iv (GLenum, const GLint *);
-+GLAPI void APIENTRY glMultiTexCoord4s (GLenum, GLshort, GLshort, GLshort, GLshort);
-+GLAPI void APIENTRY glMultiTexCoord4sv (GLenum, const GLshort *);
-+GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *);
-+GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *);
-+GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *);
-+GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *);
-+GLAPI void APIENTRY glSampleCoverage (GLclampf, GLboolean);
-+GLAPI void APIENTRY glCompressedTexImage3D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glCompressedTexImage2D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glCompressedTexImage1D (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glGetCompressedTexImage (GLenum, GLint, GLvoid *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
-+typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v);
-+typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m);
-+typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m);
-+typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m);
-+typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m);
-+typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
-+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img);
-+#endif
-+
-+#ifndef GL_VERSION_1_4
-+#define GL_VERSION_1_4 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glBlendFuncSeparate (GLenum, GLenum, GLenum, GLenum);
-+GLAPI void APIENTRY glFogCoordf (GLfloat);
-+GLAPI void APIENTRY glFogCoordfv (const GLfloat *);
-+GLAPI void APIENTRY glFogCoordd (GLdouble);
-+GLAPI void APIENTRY glFogCoorddv (const GLdouble *);
-+GLAPI void APIENTRY glFogCoordPointer (GLenum, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glMultiDrawArrays (GLenum, GLint *, GLsizei *, GLsizei);
-+GLAPI void APIENTRY glMultiDrawElements (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei);
-+GLAPI void APIENTRY glPointParameterf (GLenum, GLfloat);
-+GLAPI void APIENTRY glPointParameterfv (GLenum, const GLfloat *);
-+GLAPI void APIENTRY glPointParameteri (GLenum, GLint);
-+GLAPI void APIENTRY glPointParameteriv (GLenum, const GLint *);
-+GLAPI void APIENTRY glSecondaryColor3b (GLbyte, GLbyte, GLbyte);
-+GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *);
-+GLAPI void APIENTRY glSecondaryColor3d (GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *);
-+GLAPI void APIENTRY glSecondaryColor3f (GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *);
-+GLAPI void APIENTRY glSecondaryColor3i (GLint, GLint, GLint);
-+GLAPI void APIENTRY glSecondaryColor3iv (const GLint *);
-+GLAPI void APIENTRY glSecondaryColor3s (GLshort, GLshort, GLshort);
-+GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *);
-+GLAPI void APIENTRY glSecondaryColor3ub (GLubyte, GLubyte, GLubyte);
-+GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *);
-+GLAPI void APIENTRY glSecondaryColor3ui (GLuint, GLuint, GLuint);
-+GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *);
-+GLAPI void APIENTRY glSecondaryColor3us (GLushort, GLushort, GLushort);
-+GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *);
-+GLAPI void APIENTRY glSecondaryColorPointer (GLint, GLenum, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glWindowPos2d (GLdouble, GLdouble);
-+GLAPI void APIENTRY glWindowPos2dv (const GLdouble *);
-+GLAPI void APIENTRY glWindowPos2f (GLfloat, GLfloat);
-+GLAPI void APIENTRY glWindowPos2fv (const GLfloat *);
-+GLAPI void APIENTRY glWindowPos2i (GLint, GLint);
-+GLAPI void APIENTRY glWindowPos2iv (const GLint *);
-+GLAPI void APIENTRY glWindowPos2s (GLshort, GLshort);
-+GLAPI void APIENTRY glWindowPos2sv (const GLshort *);
-+GLAPI void APIENTRY glWindowPos3d (GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glWindowPos3dv (const GLdouble *);
-+GLAPI void APIENTRY glWindowPos3f (GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glWindowPos3fv (const GLfloat *);
-+GLAPI void APIENTRY glWindowPos3i (GLint, GLint, GLint);
-+GLAPI void APIENTRY glWindowPos3iv (const GLint *);
-+GLAPI void APIENTRY glWindowPos3s (GLshort, GLshort, GLshort);
-+GLAPI void APIENTRY glWindowPos3sv (const GLshort *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-+typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord);
-+typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord);
-+typedef void (APIENTRYP PFNGLFOGCOORDDPROC) (GLdouble coord);
-+typedef void (APIENTRYP PFNGLFOGCOORDDVPROC) (const GLdouble *coord);
-+typedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
-+typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
-+typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
-+typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
-+typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
-+typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC) (const GLdouble *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC) (const GLfloat *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2IPROC) (GLint x, GLint y);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC) (const GLint *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC) (const GLshort *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC) (const GLdouble *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC) (const GLfloat *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC) (const GLint *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort *v);
-+#endif
-+
-+#ifndef GL_VERSION_1_5
-+#define GL_VERSION_1_5 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glGenQueries (GLsizei, GLuint *);
-+GLAPI void APIENTRY glDeleteQueries (GLsizei, const GLuint *);
-+GLAPI GLboolean APIENTRY glIsQuery (GLuint);
-+GLAPI void APIENTRY glBeginQuery (GLenum, GLuint);
-+GLAPI void APIENTRY glEndQuery (GLenum);
-+GLAPI void APIENTRY glGetQueryiv (GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glGetQueryObjectiv (GLuint, GLenum, GLint *);
-+GLAPI void APIENTRY glGetQueryObjectuiv (GLuint, GLenum, GLuint *);
-+GLAPI void APIENTRY glBindBuffer (GLenum, GLuint);
-+GLAPI void APIENTRY glDeleteBuffers (GLsizei, const GLuint *);
-+GLAPI void APIENTRY glGenBuffers (GLsizei, GLuint *);
-+GLAPI GLboolean APIENTRY glIsBuffer (GLuint);
-+GLAPI void APIENTRY glBufferData (GLenum, GLsizeiptr, const GLvoid *, GLenum);
-+GLAPI void APIENTRY glBufferSubData (GLenum, GLintptr, GLsizeiptr, const GLvoid *);
-+GLAPI void APIENTRY glGetBufferSubData (GLenum, GLintptr, GLsizeiptr, GLvoid *);
-+GLAPI GLvoid* APIENTRY glMapBuffer (GLenum, GLenum);
-+GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum);
-+GLAPI void APIENTRY glGetBufferParameteriv (GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glGetBufferPointerv (GLenum, GLenum, GLvoid* *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids);
-+typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids);
-+typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id);
-+typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);
-+typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target);
-+typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params);
-+typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
-+typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
-+typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
-+typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer);
-+typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
-+typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data);
-+typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
-+typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target);
-+typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid* *params);
-+#endif
-+
-+#ifndef GL_VERSION_2_0
-+#define GL_VERSION_2_0 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glBlendEquationSeparate (GLenum, GLenum);
-+GLAPI void APIENTRY glDrawBuffers (GLsizei, const GLenum *);
-+GLAPI void APIENTRY glStencilOpSeparate (GLenum, GLenum, GLenum, GLenum);
-+GLAPI void APIENTRY glStencilFuncSeparate (GLenum, GLenum, GLint, GLuint);
-+GLAPI void APIENTRY glStencilMaskSeparate (GLenum, GLuint);
-+GLAPI void APIENTRY glAttachShader (GLuint, GLuint);
-+GLAPI void APIENTRY glBindAttribLocation (GLuint, GLuint, const GLchar *);
-+GLAPI void APIENTRY glCompileShader (GLuint);
-+GLAPI GLuint APIENTRY glCreateProgram (void);
-+GLAPI GLuint APIENTRY glCreateShader (GLenum);
-+GLAPI void APIENTRY glDeleteProgram (GLuint);
-+GLAPI void APIENTRY glDeleteShader (GLuint);
-+GLAPI void APIENTRY glDetachShader (GLuint, GLuint);
-+GLAPI void APIENTRY glDisableVertexAttribArray (GLuint);
-+GLAPI void APIENTRY glEnableVertexAttribArray (GLuint);
-+GLAPI void APIENTRY glGetActiveAttrib (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *);
-+GLAPI void APIENTRY glGetActiveUniform (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *);
-+GLAPI void APIENTRY glGetAttachedShaders (GLuint, GLsizei, GLsizei *, GLuint *);
-+GLAPI GLint APIENTRY glGetAttribLocation (GLuint, const GLchar *);
-+GLAPI void APIENTRY glGetProgramiv (GLuint, GLenum, GLint *);
-+GLAPI void APIENTRY glGetProgramInfoLog (GLuint, GLsizei, GLsizei *, GLchar *);
-+GLAPI void APIENTRY glGetShaderiv (GLuint, GLenum, GLint *);
-+GLAPI void APIENTRY glGetShaderInfoLog (GLuint, GLsizei, GLsizei *, GLchar *);
-+GLAPI void APIENTRY glGetShaderSource (GLuint, GLsizei, GLsizei *, GLchar *);
-+GLAPI GLint APIENTRY glGetUniformLocation (GLuint, const GLchar *);
-+GLAPI void APIENTRY glGetUniformfv (GLuint, GLint, GLfloat *);
-+GLAPI void APIENTRY glGetUniformiv (GLuint, GLint, GLint *);
-+GLAPI void APIENTRY glGetVertexAttribdv (GLuint, GLenum, GLdouble *);
-+GLAPI void APIENTRY glGetVertexAttribfv (GLuint, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetVertexAttribiv (GLuint, GLenum, GLint *);
-+GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint, GLenum, GLvoid* *);
-+GLAPI GLboolean APIENTRY glIsProgram (GLuint);
-+GLAPI GLboolean APIENTRY glIsShader (GLuint);
-+GLAPI void APIENTRY glLinkProgram (GLuint);
-+GLAPI void APIENTRY glShaderSource (GLuint, GLsizei, const GLchar* *, const GLint *);
-+GLAPI void APIENTRY glUseProgram (GLuint);
-+GLAPI void APIENTRY glUniform1f (GLint, GLfloat);
-+GLAPI void APIENTRY glUniform2f (GLint, GLfloat, GLfloat);
-+GLAPI void APIENTRY glUniform3f (GLint, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glUniform4f (GLint, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glUniform1i (GLint, GLint);
-+GLAPI void APIENTRY glUniform2i (GLint, GLint, GLint);
-+GLAPI void APIENTRY glUniform3i (GLint, GLint, GLint, GLint);
-+GLAPI void APIENTRY glUniform4i (GLint, GLint, GLint, GLint, GLint);
-+GLAPI void APIENTRY glUniform1fv (GLint, GLsizei, const GLfloat *);
-+GLAPI void APIENTRY glUniform2fv (GLint, GLsizei, const GLfloat *);
-+GLAPI void APIENTRY glUniform3fv (GLint, GLsizei, const GLfloat *);
-+GLAPI void APIENTRY glUniform4fv (GLint, GLsizei, const GLfloat *);
-+GLAPI void APIENTRY glUniform1iv (GLint, GLsizei, const GLint *);
-+GLAPI void APIENTRY glUniform2iv (GLint, GLsizei, const GLint *);
-+GLAPI void APIENTRY glUniform3iv (GLint, GLsizei, const GLint *);
-+GLAPI void APIENTRY glUniform4iv (GLint, GLsizei, const GLint *);
-+GLAPI void APIENTRY glUniformMatrix2fv (GLint, GLsizei, GLboolean, const GLfloat *);
-+GLAPI void APIENTRY glUniformMatrix3fv (GLint, GLsizei, GLboolean, const GLfloat *);
-+GLAPI void APIENTRY glUniformMatrix4fv (GLint, GLsizei, GLboolean, const GLfloat *);
-+GLAPI void APIENTRY glValidateProgram (GLuint);
-+GLAPI void APIENTRY glVertexAttrib1d (GLuint, GLdouble);
-+GLAPI void APIENTRY glVertexAttrib1dv (GLuint, const GLdouble *);
-+GLAPI void APIENTRY glVertexAttrib1f (GLuint, GLfloat);
-+GLAPI void APIENTRY glVertexAttrib1fv (GLuint, const GLfloat *);
-+GLAPI void APIENTRY glVertexAttrib1s (GLuint, GLshort);
-+GLAPI void APIENTRY glVertexAttrib1sv (GLuint, const GLshort *);
-+GLAPI void APIENTRY glVertexAttrib2d (GLuint, GLdouble, GLdouble);
-+GLAPI void APIENTRY glVertexAttrib2dv (GLuint, const GLdouble *);
-+GLAPI void APIENTRY glVertexAttrib2f (GLuint, GLfloat, GLfloat);
-+GLAPI void APIENTRY glVertexAttrib2fv (GLuint, const GLfloat *);
-+GLAPI void APIENTRY glVertexAttrib2s (GLuint, GLshort, GLshort);
-+GLAPI void APIENTRY glVertexAttrib2sv (GLuint, const GLshort *);
-+GLAPI void APIENTRY glVertexAttrib3d (GLuint, GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glVertexAttrib3dv (GLuint, const GLdouble *);
-+GLAPI void APIENTRY glVertexAttrib3f (GLuint, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glVertexAttrib3fv (GLuint, const GLfloat *);
-+GLAPI void APIENTRY glVertexAttrib3s (GLuint, GLshort, GLshort, GLshort);
-+GLAPI void APIENTRY glVertexAttrib3sv (GLuint, const GLshort *);
-+GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint, const GLbyte *);
-+GLAPI void APIENTRY glVertexAttrib4Niv (GLuint, const GLint *);
-+GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint, const GLshort *);
-+GLAPI void APIENTRY glVertexAttrib4Nub (GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
-+GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint, const GLubyte *);
-+GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint, const GLuint *);
-+GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint, const GLushort *);
-+GLAPI void APIENTRY glVertexAttrib4bv (GLuint, const GLbyte *);
-+GLAPI void APIENTRY glVertexAttrib4d (GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glVertexAttrib4dv (GLuint, const GLdouble *);
-+GLAPI void APIENTRY glVertexAttrib4f (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glVertexAttrib4fv (GLuint, const GLfloat *);
-+GLAPI void APIENTRY glVertexAttrib4iv (GLuint, const GLint *);
-+GLAPI void APIENTRY glVertexAttrib4s (GLuint, GLshort, GLshort, GLshort, GLshort);
-+GLAPI void APIENTRY glVertexAttrib4sv (GLuint, const GLshort *);
-+GLAPI void APIENTRY glVertexAttrib4ubv (GLuint, const GLubyte *);
-+GLAPI void APIENTRY glVertexAttrib4uiv (GLuint, const GLuint *);
-+GLAPI void APIENTRY glVertexAttrib4usv (GLuint, const GLushort *);
-+GLAPI void APIENTRY glVertexAttribPointer (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
-+typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs);
-+typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
-+typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
-+typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
-+typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
-+typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);
-+typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
-+typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void);
-+typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
-+typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);
-+typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);
-+typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
-+typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
-+typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
-+typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-+typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj);
-+typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
-+typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-+typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-+typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
-+typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
-+typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);
-+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params);
-+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
-+typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program);
-+typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader);
-+typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);
-+typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length);
-+typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);
-+typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
-+typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
-+typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-+typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-+typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
-+typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
-+typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
-+typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-+typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-+typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-+typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-+typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-+typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);
-+typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);
-+typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);
-+typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);
-+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-+typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
-+#endif
-+
-+#ifndef GL_VERSION_2_1
-+#define GL_VERSION_2_1 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glUniformMatrix2x3fv (GLint, GLsizei, GLboolean, const GLfloat *);
-+GLAPI void APIENTRY glUniformMatrix3x2fv (GLint, GLsizei, GLboolean, const GLfloat *);
-+GLAPI void APIENTRY glUniformMatrix2x4fv (GLint, GLsizei, GLboolean, const GLfloat *);
-+GLAPI void APIENTRY glUniformMatrix4x2fv (GLint, GLsizei, GLboolean, const GLfloat *);
-+GLAPI void APIENTRY glUniformMatrix3x4fv (GLint, GLsizei, GLboolean, const GLfloat *);
-+GLAPI void APIENTRY glUniformMatrix4x3fv (GLint, GLsizei, GLboolean, const GLfloat *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-+#endif
-+
-+#ifndef GL_ARB_multitexture
-+#define GL_ARB_multitexture 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glActiveTextureARB (GLenum);
-+GLAPI void APIENTRY glClientActiveTextureARB (GLenum);
-+GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum, GLdouble);
-+GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum, const GLdouble *);
-+GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum, GLfloat);
-+GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum, const GLfloat *);
-+GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum, GLint);
-+GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum, const GLint *);
-+GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum, GLshort);
-+GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum, const GLshort *);
-+GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum, GLdouble, GLdouble);
-+GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum, const GLdouble *);
-+GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum, GLfloat, GLfloat);
-+GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum, const GLfloat *);
-+GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum, GLint, GLint);
-+GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum, const GLint *);
-+GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum, GLshort, GLshort);
-+GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum, const GLshort *);
-+GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum, GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum, const GLdouble *);
-+GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum, const GLfloat *);
-+GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum, GLint, GLint, GLint);
-+GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum, const GLint *);
-+GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum, GLshort, GLshort, GLshort);
-+GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum, const GLshort *);
-+GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum, const GLdouble *);
-+GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum, const GLfloat *);
-+GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum, GLint, GLint, GLint, GLint);
-+GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum, const GLint *);
-+GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum, GLshort, GLshort, GLshort, GLshort);
-+GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum, const GLshort *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
-+typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
-+#endif
-+
-+#ifndef GL_ARB_transpose_matrix
-+#define GL_ARB_transpose_matrix 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *);
-+GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *);
-+GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *);
-+GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
-+typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
-+typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
-+typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
-+#endif
-+
-+#ifndef GL_ARB_multisample
-+#define GL_ARB_multisample 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glSampleCoverageARB (GLclampf, GLboolean);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert);
-+#endif
-+
-+#ifndef GL_ARB_texture_env_add
-+#define GL_ARB_texture_env_add 1
-+#endif
-+
-+#ifndef GL_ARB_texture_cube_map
-+#define GL_ARB_texture_cube_map 1
-+#endif
-+
-+#ifndef GL_ARB_texture_compression
-+#define GL_ARB_texture_compression 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum, GLint, GLvoid *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, GLvoid *img);
-+#endif
-+
-+#ifndef GL_ARB_texture_border_clamp
-+#define GL_ARB_texture_border_clamp 1
-+#endif
-+
-+#ifndef GL_ARB_point_parameters
-+#define GL_ARB_point_parameters 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glPointParameterfARB (GLenum, GLfloat);
-+GLAPI void APIENTRY glPointParameterfvARB (GLenum, const GLfloat *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param);
-+typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params);
-+#endif
-+
-+#ifndef GL_ARB_vertex_blend
-+#define GL_ARB_vertex_blend 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glWeightbvARB (GLint, const GLbyte *);
-+GLAPI void APIENTRY glWeightsvARB (GLint, const GLshort *);
-+GLAPI void APIENTRY glWeightivARB (GLint, const GLint *);
-+GLAPI void APIENTRY glWeightfvARB (GLint, const GLfloat *);
-+GLAPI void APIENTRY glWeightdvARB (GLint, const GLdouble *);
-+GLAPI void APIENTRY glWeightubvARB (GLint, const GLubyte *);
-+GLAPI void APIENTRY glWeightusvARB (GLint, const GLushort *);
-+GLAPI void APIENTRY glWeightuivARB (GLint, const GLuint *);
-+GLAPI void APIENTRY glWeightPointerARB (GLint, GLenum, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glVertexBlendARB (GLint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights);
-+typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights);
-+typedef void (APIENTRYP PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights);
-+typedef void (APIENTRYP PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights);
-+typedef void (APIENTRYP PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights);
-+typedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights);
-+typedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights);
-+typedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights);
-+typedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-+typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count);
-+#endif
-+
-+#ifndef GL_ARB_matrix_palette
-+#define GL_ARB_matrix_palette 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint);
-+GLAPI void APIENTRY glMatrixIndexubvARB (GLint, const GLubyte *);
-+GLAPI void APIENTRY glMatrixIndexusvARB (GLint, const GLushort *);
-+GLAPI void APIENTRY glMatrixIndexuivARB (GLint, const GLuint *);
-+GLAPI void APIENTRY glMatrixIndexPointerARB (GLint, GLenum, GLsizei, const GLvoid *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index);
-+typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices);
-+typedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices);
-+typedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices);
-+typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-+#endif
-+
-+#ifndef GL_ARB_texture_env_combine
-+#define GL_ARB_texture_env_combine 1
-+#endif
-+
-+#ifndef GL_ARB_texture_env_crossbar
-+#define GL_ARB_texture_env_crossbar 1
-+#endif
-+
-+#ifndef GL_ARB_texture_env_dot3
-+#define GL_ARB_texture_env_dot3 1
-+#endif
-+
-+#ifndef GL_ARB_texture_mirrored_repeat
-+#define GL_ARB_texture_mirrored_repeat 1
-+#endif
-+
-+#ifndef GL_ARB_depth_texture
-+#define GL_ARB_depth_texture 1
-+#endif
-+
-+#ifndef GL_ARB_shadow
-+#define GL_ARB_shadow 1
-+#endif
-+
-+#ifndef GL_ARB_shadow_ambient
-+#define GL_ARB_shadow_ambient 1
-+#endif
-+
-+#ifndef GL_ARB_window_pos
-+#define GL_ARB_window_pos 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glWindowPos2dARB (GLdouble, GLdouble);
-+GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *);
-+GLAPI void APIENTRY glWindowPos2fARB (GLfloat, GLfloat);
-+GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *);
-+GLAPI void APIENTRY glWindowPos2iARB (GLint, GLint);
-+GLAPI void APIENTRY glWindowPos2ivARB (const GLint *);
-+GLAPI void APIENTRY glWindowPos2sARB (GLshort, GLshort);
-+GLAPI void APIENTRY glWindowPos2svARB (const GLshort *);
-+GLAPI void APIENTRY glWindowPos3dARB (GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *);
-+GLAPI void APIENTRY glWindowPos3fARB (GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *);
-+GLAPI void APIENTRY glWindowPos3iARB (GLint, GLint, GLint);
-+GLAPI void APIENTRY glWindowPos3ivARB (const GLint *);
-+GLAPI void APIENTRY glWindowPos3sARB (GLshort, GLshort, GLshort);
-+GLAPI void APIENTRY glWindowPos3svARB (const GLshort *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC) (const GLint *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC) (const GLint *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v);
-+#endif
-+
-+#ifndef GL_ARB_vertex_program
-+#define GL_ARB_vertex_program 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glVertexAttrib1dARB (GLuint, GLdouble);
-+GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint, const GLdouble *);
-+GLAPI void APIENTRY glVertexAttrib1fARB (GLuint, GLfloat);
-+GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint, const GLfloat *);
-+GLAPI void APIENTRY glVertexAttrib1sARB (GLuint, GLshort);
-+GLAPI void APIENTRY glVertexAttrib1svARB (GLuint, const GLshort *);
-+GLAPI void APIENTRY glVertexAttrib2dARB (GLuint, GLdouble, GLdouble);
-+GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint, const GLdouble *);
-+GLAPI void APIENTRY glVertexAttrib2fARB (GLuint, GLfloat, GLfloat);
-+GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint, const GLfloat *);
-+GLAPI void APIENTRY glVertexAttrib2sARB (GLuint, GLshort, GLshort);
-+GLAPI void APIENTRY glVertexAttrib2svARB (GLuint, const GLshort *);
-+GLAPI void APIENTRY glVertexAttrib3dARB (GLuint, GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint, const GLdouble *);
-+GLAPI void APIENTRY glVertexAttrib3fARB (GLuint, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint, const GLfloat *);
-+GLAPI void APIENTRY glVertexAttrib3sARB (GLuint, GLshort, GLshort, GLshort);
-+GLAPI void APIENTRY glVertexAttrib3svARB (GLuint, const GLshort *);
-+GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint, const GLbyte *);
-+GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint, const GLint *);
-+GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint, const GLshort *);
-+GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
-+GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint, const GLubyte *);
-+GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint, const GLuint *);
-+GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint, const GLushort *);
-+GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint, const GLbyte *);
-+GLAPI void APIENTRY glVertexAttrib4dARB (GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint, const GLdouble *);
-+GLAPI void APIENTRY glVertexAttrib4fARB (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint, const GLfloat *);
-+GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint, const GLint *);
-+GLAPI void APIENTRY glVertexAttrib4sARB (GLuint, GLshort, GLshort, GLshort, GLshort);
-+GLAPI void APIENTRY glVertexAttrib4svARB (GLuint, const GLshort *);
-+GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint, const GLubyte *);
-+GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint, const GLuint *);
-+GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint, const GLushort *);
-+GLAPI void APIENTRY glVertexAttribPointerARB (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint);
-+GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint);
-+GLAPI void APIENTRY glProgramStringARB (GLenum, GLenum, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glBindProgramARB (GLenum, GLuint);
-+GLAPI void APIENTRY glDeleteProgramsARB (GLsizei, const GLuint *);
-+GLAPI void APIENTRY glGenProgramsARB (GLsizei, GLuint *);
-+GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum, GLuint, const GLdouble *);
-+GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum, GLuint, const GLfloat *);
-+GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum, GLuint, const GLdouble *);
-+GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum, GLuint, const GLfloat *);
-+GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum, GLuint, GLdouble *);
-+GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum, GLuint, GLfloat *);
-+GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum, GLuint, GLdouble *);
-+GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum, GLuint, GLfloat *);
-+GLAPI void APIENTRY glGetProgramivARB (GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glGetProgramStringARB (GLenum, GLenum, GLvoid *);
-+GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint, GLenum, GLdouble *);
-+GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetVertexAttribivARB (GLuint, GLenum, GLint *);
-+GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint, GLenum, GLvoid* *);
-+GLAPI GLboolean APIENTRY glIsProgramARB (GLuint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
-+typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
-+typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
-+typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid *string);
-+typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program);
-+typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs);
-+typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs);
-+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
-+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
-+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
-+typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
-+typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, GLvoid *string);
-+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params);
-+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
-+typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program);
-+#endif
-+
-+#ifndef GL_ARB_fragment_program
-+#define GL_ARB_fragment_program 1
-+/* All ARB_fragment_program entry points are shared with ARB_vertex_program. */
-+#endif
-+
-+#ifndef GL_ARB_vertex_buffer_object
-+#define GL_ARB_vertex_buffer_object 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glBindBufferARB (GLenum, GLuint);
-+GLAPI void APIENTRY glDeleteBuffersARB (GLsizei, const GLuint *);
-+GLAPI void APIENTRY glGenBuffersARB (GLsizei, GLuint *);
-+GLAPI GLboolean APIENTRY glIsBufferARB (GLuint);
-+GLAPI void APIENTRY glBufferDataARB (GLenum, GLsizeiptrARB, const GLvoid *, GLenum);
-+GLAPI void APIENTRY glBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid *);
-+GLAPI void APIENTRY glGetBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, GLvoid *);
-+GLAPI GLvoid* APIENTRY glMapBufferARB (GLenum, GLenum);
-+GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum);
-+GLAPI void APIENTRY glGetBufferParameterivARB (GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glGetBufferPointervARB (GLenum, GLenum, GLvoid* *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
-+typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers);
-+typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers);
-+typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC) (GLuint buffer);
-+typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage);
-+typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data);
-+typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access);
-+typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC) (GLenum target);
-+typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid* *params);
-+#endif
-+
-+#ifndef GL_ARB_occlusion_query
-+#define GL_ARB_occlusion_query 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glGenQueriesARB (GLsizei, GLuint *);
-+GLAPI void APIENTRY glDeleteQueriesARB (GLsizei, const GLuint *);
-+GLAPI GLboolean APIENTRY glIsQueryARB (GLuint);
-+GLAPI void APIENTRY glBeginQueryARB (GLenum, GLuint);
-+GLAPI void APIENTRY glEndQueryARB (GLenum);
-+GLAPI void APIENTRY glGetQueryivARB (GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glGetQueryObjectivARB (GLuint, GLenum, GLint *);
-+GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint, GLenum, GLuint *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids);
-+typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids);
-+typedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC) (GLuint id);
-+typedef void (APIENTRYP PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id);
-+typedef void (APIENTRYP PFNGLENDQUERYARBPROC) (GLenum target);
-+typedef void (APIENTRYP PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params);
-+#endif
-+
-+#ifndef GL_ARB_shader_objects
-+#define GL_ARB_shader_objects 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB);
-+GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum);
-+GLAPI void APIENTRY glDetachObjectARB (GLhandleARB, GLhandleARB);
-+GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum);
-+GLAPI void APIENTRY glShaderSourceARB (GLhandleARB, GLsizei, const GLcharARB* *, const GLint *);
-+GLAPI void APIENTRY glCompileShaderARB (GLhandleARB);
-+GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB (void);
-+GLAPI void APIENTRY glAttachObjectARB (GLhandleARB, GLhandleARB);
-+GLAPI void APIENTRY glLinkProgramARB (GLhandleARB);
-+GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB);
-+GLAPI void APIENTRY glValidateProgramARB (GLhandleARB);
-+GLAPI void APIENTRY glUniform1fARB (GLint, GLfloat);
-+GLAPI void APIENTRY glUniform2fARB (GLint, GLfloat, GLfloat);
-+GLAPI void APIENTRY glUniform3fARB (GLint, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glUniform4fARB (GLint, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glUniform1iARB (GLint, GLint);
-+GLAPI void APIENTRY glUniform2iARB (GLint, GLint, GLint);
-+GLAPI void APIENTRY glUniform3iARB (GLint, GLint, GLint, GLint);
-+GLAPI void APIENTRY glUniform4iARB (GLint, GLint, GLint, GLint, GLint);
-+GLAPI void APIENTRY glUniform1fvARB (GLint, GLsizei, const GLfloat *);
-+GLAPI void APIENTRY glUniform2fvARB (GLint, GLsizei, const GLfloat *);
-+GLAPI void APIENTRY glUniform3fvARB (GLint, GLsizei, const GLfloat *);
-+GLAPI void APIENTRY glUniform4fvARB (GLint, GLsizei, const GLfloat *);
-+GLAPI void APIENTRY glUniform1ivARB (GLint, GLsizei, const GLint *);
-+GLAPI void APIENTRY glUniform2ivARB (GLint, GLsizei, const GLint *);
-+GLAPI void APIENTRY glUniform3ivARB (GLint, GLsizei, const GLint *);
-+GLAPI void APIENTRY glUniform4ivARB (GLint, GLsizei, const GLint *);
-+GLAPI void APIENTRY glUniformMatrix2fvARB (GLint, GLsizei, GLboolean, const GLfloat *);
-+GLAPI void APIENTRY glUniformMatrix3fvARB (GLint, GLsizei, GLboolean, const GLfloat *);
-+GLAPI void APIENTRY glUniformMatrix4fvARB (GLint, GLsizei, GLboolean, const GLfloat *);
-+GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB, GLenum, GLint *);
-+GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *);
-+GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB, GLsizei, GLsizei *, GLhandleARB *);
-+GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB, const GLcharARB *);
-+GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *);
-+GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB, GLint, GLfloat *);
-+GLAPI void APIENTRY glGetUniformivARB (GLhandleARB, GLint, GLint *);
-+GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj);
-+typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname);
-+typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj);
-+typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType);
-+typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length);
-+typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj);
-+typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void);
-+typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj);
-+typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj);
-+typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj);
-+typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj);
-+typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0);
-+typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1);
-+typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-+typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-+typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0);
-+typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1);
-+typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2);
-+typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-+typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
-+typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
-+typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
-+typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
-+typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value);
-+typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value);
-+typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value);
-+typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value);
-+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-+typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
-+typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);
-+typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
-+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
-+typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params);
-+typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);
-+#endif
-+
-+#ifndef GL_ARB_vertex_shader
-+#define GL_ARB_vertex_shader 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB, GLuint, const GLcharARB *);
-+GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *);
-+GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB, const GLcharARB *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name);
-+typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
-+typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
-+#endif
-+
-+#ifndef GL_ARB_fragment_shader
-+#define GL_ARB_fragment_shader 1
-+#endif
-+
-+#ifndef GL_ARB_shading_language_100
-+#define GL_ARB_shading_language_100 1
-+#endif
-+
-+#ifndef GL_ARB_texture_non_power_of_two
-+#define GL_ARB_texture_non_power_of_two 1
-+#endif
-+
-+#ifndef GL_ARB_point_sprite
-+#define GL_ARB_point_sprite 1
-+#endif
-+
-+#ifndef GL_ARB_fragment_program_shadow
-+#define GL_ARB_fragment_program_shadow 1
-+#endif
-+
-+#ifndef GL_ARB_draw_buffers
-+#define GL_ARB_draw_buffers 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glDrawBuffersARB (GLsizei, const GLenum *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs);
-+#endif
-+
-+#ifndef GL_ARB_texture_rectangle
-+#define GL_ARB_texture_rectangle 1
-+#endif
-+
-+#ifndef GL_ARB_color_buffer_float
-+#define GL_ARB_color_buffer_float 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glClampColorARB (GLenum, GLenum);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp);
-+#endif
-+
-+#ifndef GL_ARB_half_float_pixel
-+#define GL_ARB_half_float_pixel 1
-+#endif
-+
-+#ifndef GL_ARB_texture_float
-+#define GL_ARB_texture_float 1
-+#endif
-+
-+#ifndef GL_ARB_pixel_buffer_object
-+#define GL_ARB_pixel_buffer_object 1
-+#endif
-+
-+#ifndef GL_EXT_abgr
-+#define GL_EXT_abgr 1
-+#endif
-+
-+#ifndef GL_EXT_blend_color
-+#define GL_EXT_blend_color 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glBlendColorEXT (GLclampf, GLclampf, GLclampf, GLclampf);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-+#endif
-+
-+#ifndef GL_EXT_polygon_offset
-+#define GL_EXT_polygon_offset 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat, GLfloat);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias);
-+#endif
-+
-+#ifndef GL_EXT_texture
-+#define GL_EXT_texture 1
-+#endif
-+
-+#ifndef GL_EXT_texture3D
-+#define GL_EXT_texture3D 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glTexImage3DEXT (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-+GLAPI void APIENTRY glTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
-+typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
-+#endif
-+
-+#ifndef GL_SGIS_texture_filter4
-+#define GL_SGIS_texture_filter4 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum, GLenum, GLfloat *);
-+GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum, GLenum, GLsizei, const GLfloat *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights);
-+typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
-+#endif
-+
-+#ifndef GL_EXT_subtexture
-+#define GL_EXT_subtexture 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glTexSubImage1DEXT (GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *);
-+GLAPI void APIENTRY glTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
-+typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
-+#endif
-+
-+#ifndef GL_EXT_copy_texture
-+#define GL_EXT_copy_texture 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
-+GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
-+GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei);
-+GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-+GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-+typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-+#endif
-+
-+#ifndef GL_EXT_histogram
-+#define GL_EXT_histogram 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glGetHistogramEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
-+GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glGetMinmaxEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
-+GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glHistogramEXT (GLenum, GLsizei, GLenum, GLboolean);
-+GLAPI void APIENTRY glMinmaxEXT (GLenum, GLenum, GLboolean);
-+GLAPI void APIENTRY glResetHistogramEXT (GLenum);
-+GLAPI void APIENTRY glResetMinmaxEXT (GLenum);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
-+typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
-+typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
-+typedef void (APIENTRYP PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink);
-+typedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC) (GLenum target);
-+typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target);
-+#endif
-+
-+#ifndef GL_EXT_convolution
-+#define GL_EXT_convolution 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
-+GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-+GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum, GLenum, GLfloat);
-+GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum, GLenum, const GLfloat *);
-+GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum, GLenum, GLint);
-+GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum, GLenum, const GLint *);
-+GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum, GLenum, GLint, GLint, GLsizei);
-+GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei);
-+GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum, GLenum, GLenum, GLvoid *);
-+GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *);
-+GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
-+typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
-+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params);
-+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params);
-+typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
-+typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-+typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
-+typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image);
-+typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
-+typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
-+#endif
-+
-+#ifndef GL_SGI_color_matrix
-+#define GL_SGI_color_matrix 1
-+#endif
-+
-+#ifndef GL_SGI_color_table
-+#define GL_SGI_color_table 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glColorTableSGI (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
-+GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum, GLenum, const GLfloat *);
-+GLAPI void APIENTRY glColorTableParameterivSGI (GLenum, GLenum, const GLint *);
-+GLAPI void APIENTRY glCopyColorTableSGI (GLenum, GLenum, GLint, GLint, GLsizei);
-+GLAPI void APIENTRY glGetColorTableSGI (GLenum, GLenum, GLenum, GLvoid *);
-+GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum, GLenum, GLint *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
-+typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params);
-+typedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-+typedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table);
-+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params);
-+#endif
-+
-+#ifndef GL_SGIX_pixel_texture
-+#define GL_SGIX_pixel_texture 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glPixelTexGenSGIX (GLenum);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode);
-+#endif
-+
-+#ifndef GL_SGIS_pixel_texture
-+#define GL_SGIS_pixel_texture 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum, GLint);
-+GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum, const GLint *);
-+GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum, GLfloat);
-+GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum, const GLfloat *);
-+GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum, GLint *);
-+GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum, GLfloat *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param);
-+typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params);
-+typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
-+typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params);
-+#endif
-+
-+#ifndef GL_SGIS_texture4D
-+#define GL_SGIS_texture4D 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glTexImage4DSGIS (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-+GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
-+typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels);
-+#endif
-+
-+#ifndef GL_SGI_texture_color_table
-+#define GL_SGI_texture_color_table 1
-+#endif
-+
-+#ifndef GL_EXT_cmyka
-+#define GL_EXT_cmyka 1
-+#endif
-+
-+#ifndef GL_EXT_texture_object
-+#define GL_EXT_texture_object 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei, const GLuint *, GLboolean *);
-+GLAPI void APIENTRY glBindTextureEXT (GLenum, GLuint);
-+GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei, const GLuint *);
-+GLAPI void APIENTRY glGenTexturesEXT (GLsizei, GLuint *);
-+GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint);
-+GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei, const GLuint *, const GLclampf *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences);
-+typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture);
-+typedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures);
-+typedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures);
-+typedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC) (GLuint texture);
-+typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities);
-+#endif
-+
-+#ifndef GL_SGIS_detail_texture
-+#define GL_SGIS_detail_texture 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum, GLsizei, const GLfloat *);
-+GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum, GLfloat *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
-+typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
-+#endif
-+
-+#ifndef GL_SGIS_sharpen_texture
-+#define GL_SGIS_sharpen_texture 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum, GLsizei, const GLfloat *);
-+GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum, GLfloat *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
-+typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
-+#endif
-+
-+#ifndef GL_EXT_packed_pixels
-+#define GL_EXT_packed_pixels 1
-+#endif
-+
-+#ifndef GL_SGIS_texture_lod
-+#define GL_SGIS_texture_lod 1
-+#endif
-+
-+#ifndef GL_SGIS_multisample
-+#define GL_SGIS_multisample 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glSampleMaskSGIS (GLclampf, GLboolean);
-+GLAPI void APIENTRY glSamplePatternSGIS (GLenum);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert);
-+typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern);
-+#endif
-+
-+#ifndef GL_EXT_rescale_normal
-+#define GL_EXT_rescale_normal 1
-+#endif
-+
-+#ifndef GL_EXT_vertex_array
-+#define GL_EXT_vertex_array 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glArrayElementEXT (GLint);
-+GLAPI void APIENTRY glColorPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glDrawArraysEXT (GLenum, GLint, GLsizei);
-+GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei, GLsizei, const GLboolean *);
-+GLAPI void APIENTRY glGetPointervEXT (GLenum, GLvoid* *);
-+GLAPI void APIENTRY glIndexPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glNormalPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glTexCoordPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glVertexPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i);
-+typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
-+typedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count);
-+typedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer);
-+typedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC) (GLenum pname, GLvoid* *params);
-+typedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
-+typedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
-+typedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
-+typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
-+#endif
-+
-+#ifndef GL_EXT_misc_attribute
-+#define GL_EXT_misc_attribute 1
-+#endif
-+
-+#ifndef GL_SGIS_generate_mipmap
-+#define GL_SGIS_generate_mipmap 1
-+#endif
-+
-+#ifndef GL_SGIX_clipmap
-+#define GL_SGIX_clipmap 1
-+#endif
-+
-+#ifndef GL_SGIX_shadow
-+#define GL_SGIX_shadow 1
-+#endif
-+
-+#ifndef GL_SGIS_texture_edge_clamp
-+#define GL_SGIS_texture_edge_clamp 1
-+#endif
-+
-+#ifndef GL_SGIS_texture_border_clamp
-+#define GL_SGIS_texture_border_clamp 1
-+#endif
-+
-+#ifndef GL_EXT_blend_minmax
-+#define GL_EXT_blend_minmax 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glBlendEquationEXT (GLenum);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);
-+#endif
-+
-+#ifndef GL_EXT_blend_subtract
-+#define GL_EXT_blend_subtract 1
-+#endif
-+
-+#ifndef GL_EXT_blend_logic_op
-+#define GL_EXT_blend_logic_op 1
-+#endif
-+
-+#ifndef GL_SGIX_interlace
-+#define GL_SGIX_interlace 1
-+#endif
-+
-+#ifndef GL_SGIX_pixel_tiles
-+#define GL_SGIX_pixel_tiles 1
-+#endif
-+
-+#ifndef GL_SGIX_texture_select
-+#define GL_SGIX_texture_select 1
-+#endif
-+
-+#ifndef GL_SGIX_sprite
-+#define GL_SGIX_sprite 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum, GLfloat);
-+GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum, const GLfloat *);
-+GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum, GLint);
-+GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum, const GLint *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param);
-+typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param);
-+typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params);
-+#endif
-+
-+#ifndef GL_SGIX_texture_multi_buffer
-+#define GL_SGIX_texture_multi_buffer 1
-+#endif
-+
-+#ifndef GL_EXT_point_parameters
-+#define GL_EXT_point_parameters 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glPointParameterfEXT (GLenum, GLfloat);
-+GLAPI void APIENTRY glPointParameterfvEXT (GLenum, const GLfloat *);
-+/* ERO Begin */
-+GLAPI void APIENTRY glPointParameteriEXT (GLenum, GLint);
-+GLAPI void APIENTRY glPointParameterivEXT (GLenum, const GLint *);
-+/* ERO end */
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param);
-+typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params);
-+#endif
-+
-+#ifndef GL_SGIS_point_parameters
-+#define GL_SGIS_point_parameters 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glPointParameterfSGIS (GLenum, GLfloat);
-+GLAPI void APIENTRY glPointParameterfvSGIS (GLenum, const GLfloat *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
-+typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
-+#endif
-+
-+#ifndef GL_SGIX_instruments
-+#define GL_SGIX_instruments 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI GLint APIENTRY glGetInstrumentsSGIX (void);
-+GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei, GLint *);
-+GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *);
-+GLAPI void APIENTRY glReadInstrumentsSGIX (GLint);
-+GLAPI void APIENTRY glStartInstrumentsSGIX (void);
-+GLAPI void APIENTRY glStopInstrumentsSGIX (GLint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) (void);
-+typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer);
-+typedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p);
-+typedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker);
-+typedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC) (void);
-+typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker);
-+#endif
-+
-+#ifndef GL_SGIX_texture_scale_bias
-+#define GL_SGIX_texture_scale_bias 1
-+#endif
-+
-+#ifndef GL_SGIX_framezoom
-+#define GL_SGIX_framezoom 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glFrameZoomSGIX (GLint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor);
-+#endif
-+
-+#ifndef GL_SGIX_tag_sample_buffer
-+#define GL_SGIX_tag_sample_buffer 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glTagSampleBufferSGIX (void);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) (void);
-+#endif
-+
-+#ifndef GL_SGIX_polynomial_ffd
-+#define GL_SGIX_polynomial_ffd 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *);
-+GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *);
-+GLAPI void APIENTRY glDeformSGIX (GLbitfield);
-+GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);
-+typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);
-+typedef void (APIENTRYP PFNGLDEFORMSGIXPROC) (GLbitfield mask);
-+typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask);
-+#endif
-+
-+#ifndef GL_SGIX_reference_plane
-+#define GL_SGIX_reference_plane 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation);
-+#endif
-+
-+#ifndef GL_SGIX_flush_raster
-+#define GL_SGIX_flush_raster 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glFlushRasterSGIX (void);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void);
-+#endif
-+
-+#ifndef GL_SGIX_depth_texture
-+#define GL_SGIX_depth_texture 1
-+#endif
-+
-+#ifndef GL_SGIS_fog_function
-+#define GL_SGIS_fog_function 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glFogFuncSGIS (GLsizei, const GLfloat *);
-+GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points);
-+typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points);
-+#endif
-+
-+#ifndef GL_SGIX_fog_offset
-+#define GL_SGIX_fog_offset 1
-+#endif
-+
-+#ifndef GL_HP_image_transform
-+#define GL_HP_image_transform 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glImageTransformParameteriHP (GLenum, GLenum, GLint);
-+GLAPI void APIENTRY glImageTransformParameterfHP (GLenum, GLenum, GLfloat);
-+GLAPI void APIENTRY glImageTransformParameterivHP (GLenum, GLenum, const GLint *);
-+GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum, GLenum, const GLfloat *);
-+GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum, GLenum, GLfloat *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param);
-+typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param);
-+typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params);
-+typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params);
-+#endif
-+
-+#ifndef GL_HP_convolution_border_modes
-+#define GL_HP_convolution_border_modes 1
-+#endif
-+
-+#ifndef GL_SGIX_texture_add_env
-+#define GL_SGIX_texture_add_env 1
-+#endif
-+
-+#ifndef GL_EXT_color_subtable
-+#define GL_EXT_color_subtable 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glColorSubTableEXT (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-+GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum, GLsizei, GLint, GLint, GLsizei);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
-+typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
-+#endif
-+
-+#ifndef GL_PGI_vertex_hints
-+#define GL_PGI_vertex_hints 1
-+#endif
-+
-+#ifndef GL_PGI_misc_hints
-+#define GL_PGI_misc_hints 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glHintPGI (GLenum, GLint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode);
-+#endif
-+
-+#ifndef GL_EXT_paletted_texture
-+#define GL_EXT_paletted_texture 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glColorTableEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
-+GLAPI void APIENTRY glGetColorTableEXT (GLenum, GLenum, GLenum, GLvoid *);
-+GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum, GLenum, GLfloat *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
-+typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *data);
-+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-+#endif
-+
-+#ifndef GL_EXT_clip_volume_hint
-+#define GL_EXT_clip_volume_hint 1
-+#endif
-+
-+#ifndef GL_SGIX_list_priority
-+#define GL_SGIX_list_priority 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetListParameterivSGIX (GLuint, GLenum, GLint *);
-+GLAPI void APIENTRY glListParameterfSGIX (GLuint, GLenum, GLfloat);
-+GLAPI void APIENTRY glListParameterfvSGIX (GLuint, GLenum, const GLfloat *);
-+GLAPI void APIENTRY glListParameteriSGIX (GLuint, GLenum, GLint);
-+GLAPI void APIENTRY glListParameterivSGIX (GLuint, GLenum, const GLint *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param);
-+typedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param);
-+typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params);
-+#endif
-+
-+#ifndef GL_SGIX_ir_instrument1
-+#define GL_SGIX_ir_instrument1 1
-+#endif
-+
-+#ifndef GL_SGIX_calligraphic_fragment
-+#define GL_SGIX_calligraphic_fragment 1
-+#endif
-+
-+#ifndef GL_SGIX_texture_lod_bias
-+#define GL_SGIX_texture_lod_bias 1
-+#endif
-+
-+#ifndef GL_SGIX_shadow_ambient
-+#define GL_SGIX_shadow_ambient 1
-+#endif
-+
-+#ifndef GL_EXT_index_texture
-+#define GL_EXT_index_texture 1
-+#endif
-+
-+#ifndef GL_EXT_index_material
-+#define GL_EXT_index_material 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glIndexMaterialEXT (GLenum, GLenum);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode);
-+#endif
-+
-+#ifndef GL_EXT_index_func
-+#define GL_EXT_index_func 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glIndexFuncEXT (GLenum, GLclampf);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref);
-+#endif
-+
-+#ifndef GL_EXT_index_array_formats
-+#define GL_EXT_index_array_formats 1
-+#endif
-+
-+#ifndef GL_EXT_compiled_vertex_array
-+#define GL_EXT_compiled_vertex_array 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glLockArraysEXT (GLint, GLsizei);
-+GLAPI void APIENTRY glUnlockArraysEXT (void);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);
-+typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void);
-+#endif
-+
-+#ifndef GL_EXT_cull_vertex
-+#define GL_EXT_cull_vertex 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glCullParameterdvEXT (GLenum, GLdouble *);
-+GLAPI void APIENTRY glCullParameterfvEXT (GLenum, GLfloat *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params);
-+typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params);
-+#endif
-+
-+#ifndef GL_SGIX_ycrcb
-+#define GL_SGIX_ycrcb 1
-+#endif
-+
-+#ifndef GL_SGIX_fragment_lighting
-+#define GL_SGIX_fragment_lighting 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum, GLenum);
-+GLAPI void APIENTRY glFragmentLightfSGIX (GLenum, GLenum, GLfloat);
-+GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum, GLenum, const GLfloat *);
-+GLAPI void APIENTRY glFragmentLightiSGIX (GLenum, GLenum, GLint);
-+GLAPI void APIENTRY glFragmentLightivSGIX (GLenum, GLenum, const GLint *);
-+GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum, GLfloat);
-+GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum, const GLfloat *);
-+GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum, GLint);
-+GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum, const GLint *);
-+GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum, GLenum, GLfloat);
-+GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum, GLenum, const GLfloat *);
-+GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum, GLenum, GLint);
-+GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum, GLenum, const GLint *);
-+GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glLightEnviSGIX (GLenum, GLint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode);
-+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param);
-+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param);
-+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params);
-+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param);
-+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param);
-+typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params);
-+typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param);
-+typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param);
-+typedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params);
-+typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param);
-+#endif
-+
-+#ifndef GL_IBM_rasterpos_clip
-+#define GL_IBM_rasterpos_clip 1
-+#endif
-+
-+#ifndef GL_HP_texture_lighting
-+#define GL_HP_texture_lighting 1
-+#endif
-+
-+#ifndef GL_EXT_draw_range_elements
-+#define GL_EXT_draw_range_elements 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
-+#endif
-+
-+#ifndef GL_WIN_phong_shading
-+#define GL_WIN_phong_shading 1
-+#endif
-+
-+#ifndef GL_WIN_specular_fog
-+#define GL_WIN_specular_fog 1
-+#endif
-+
-+#ifndef GL_EXT_light_texture
-+#define GL_EXT_light_texture 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glApplyTextureEXT (GLenum);
-+GLAPI void APIENTRY glTextureLightEXT (GLenum);
-+GLAPI void APIENTRY glTextureMaterialEXT (GLenum, GLenum);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode);
-+typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname);
-+typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode);
-+#endif
-+
-+#ifndef GL_SGIX_blend_alpha_minmax
-+#define GL_SGIX_blend_alpha_minmax 1
-+#endif
-+
-+#ifndef GL_EXT_bgra
-+#define GL_EXT_bgra 1
-+#endif
-+
-+#ifndef GL_SGIX_async
-+#define GL_SGIX_async 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint);
-+GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *);
-+GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *);
-+GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei);
-+GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint, GLsizei);
-+GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker);
-+typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp);
-+typedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp);
-+typedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range);
-+typedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range);
-+typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker);
-+#endif
-+
-+#ifndef GL_SGIX_async_pixel
-+#define GL_SGIX_async_pixel 1
-+#endif
-+
-+#ifndef GL_SGIX_async_histogram
-+#define GL_SGIX_async_histogram 1
-+#endif
-+
-+#ifndef GL_INTEL_parallel_arrays
-+#define GL_INTEL_parallel_arrays 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glVertexPointervINTEL (GLint, GLenum, const GLvoid* *);
-+GLAPI void APIENTRY glNormalPointervINTEL (GLenum, const GLvoid* *);
-+GLAPI void APIENTRY glColorPointervINTEL (GLint, GLenum, const GLvoid* *);
-+GLAPI void APIENTRY glTexCoordPointervINTEL (GLint, GLenum, const GLvoid* *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
-+typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const GLvoid* *pointer);
-+typedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
-+typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
-+#endif
-+
-+#ifndef GL_HP_occlusion_test
-+#define GL_HP_occlusion_test 1
-+#endif
-+
-+#ifndef GL_EXT_pixel_transform
-+#define GL_EXT_pixel_transform 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum, GLenum, GLint);
-+GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum, GLenum, GLfloat);
-+GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum, GLenum, const GLint *);
-+GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum, GLenum, const GLfloat *);
-+/* ERO Begin */
-+GLAPI void APIENTRY glGetPixelTransformParameterivEXT (GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glGetPixelTransformParameterfvEXT (GLenum, GLenum, GLfloat *);
-+/* ERO End */
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param);
-+typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param);
-+typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
-+typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
-+/* ERO Begin */
-+typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-+/* ERO End */
-+#endif
-+
-+#ifndef GL_EXT_pixel_transform_color_table
-+#define GL_EXT_pixel_transform_color_table 1
-+#endif
-+
-+#ifndef GL_EXT_shared_texture_palette
-+#define GL_EXT_shared_texture_palette 1
-+#endif
-+
-+#ifndef GL_EXT_separate_specular_color
-+#define GL_EXT_separate_specular_color 1
-+#endif
-+
-+#ifndef GL_EXT_secondary_color
-+#define GL_EXT_secondary_color 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte, GLbyte, GLbyte);
-+GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *);
-+GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *);
-+GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *);
-+GLAPI void APIENTRY glSecondaryColor3iEXT (GLint, GLint, GLint);
-+GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *);
-+GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort, GLshort, GLshort);
-+GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *);
-+GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte, GLubyte, GLubyte);
-+GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *);
-+GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint, GLuint, GLuint);
-+GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *);
-+GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort, GLushort, GLushort);
-+GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *);
-+GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint, GLenum, GLsizei, const GLvoid *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-+#endif
-+
-+#ifndef GL_EXT_texture_perturb_normal
-+#define GL_EXT_texture_perturb_normal 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glTextureNormalEXT (GLenum);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode);
-+#endif
-+
-+#ifndef GL_EXT_multi_draw_arrays
-+#define GL_EXT_multi_draw_arrays 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei);
-+GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
-+typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
-+#endif
-+
-+#ifndef GL_EXT_fog_coord
-+#define GL_EXT_fog_coord 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glFogCoordfEXT (GLfloat);
-+GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *);
-+GLAPI void APIENTRY glFogCoorddEXT (GLdouble);
-+GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *);
-+GLAPI void APIENTRY glFogCoordPointerEXT (GLenum, GLsizei, const GLvoid *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord);
-+typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord);
-+typedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC) (GLdouble coord);
-+typedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord);
-+typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
-+#endif
-+
-+#ifndef GL_REND_screen_coordinates
-+#define GL_REND_screen_coordinates 1
-+#endif
-+
-+#ifndef GL_EXT_coordinate_frame
-+#define GL_EXT_coordinate_frame 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glTangent3bEXT (GLbyte, GLbyte, GLbyte);
-+GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *);
-+GLAPI void APIENTRY glTangent3dEXT (GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *);
-+GLAPI void APIENTRY glTangent3fEXT (GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *);
-+GLAPI void APIENTRY glTangent3iEXT (GLint, GLint, GLint);
-+GLAPI void APIENTRY glTangent3ivEXT (const GLint *);
-+GLAPI void APIENTRY glTangent3sEXT (GLshort, GLshort, GLshort);
-+GLAPI void APIENTRY glTangent3svEXT (const GLshort *);
-+GLAPI void APIENTRY glBinormal3bEXT (GLbyte, GLbyte, GLbyte);
-+GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *);
-+GLAPI void APIENTRY glBinormal3dEXT (GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *);
-+GLAPI void APIENTRY glBinormal3fEXT (GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *);
-+GLAPI void APIENTRY glBinormal3iEXT (GLint, GLint, GLint);
-+GLAPI void APIENTRY glBinormal3ivEXT (const GLint *);
-+GLAPI void APIENTRY glBinormal3sEXT (GLshort, GLshort, GLshort);
-+GLAPI void APIENTRY glBinormal3svEXT (const GLshort *);
-+GLAPI void APIENTRY glTangentPointerEXT (GLenum, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glBinormalPointerEXT (GLenum, GLsizei, const GLvoid *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz);
-+typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte *v);
-+typedef void (APIENTRYP PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz);
-+typedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC) (const GLdouble *v);
-+typedef void (APIENTRYP PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz);
-+typedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC) (const GLfloat *v);
-+typedef void (APIENTRYP PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz);
-+typedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC) (const GLint *v);
-+typedef void (APIENTRYP PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz);
-+typedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC) (const GLshort *v);
-+typedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz);
-+typedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v);
-+typedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz);
-+typedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v);
-+typedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz);
-+typedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v);
-+typedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz);
-+typedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC) (const GLint *v);
-+typedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz);
-+typedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC) (const GLshort *v);
-+typedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
-+typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
-+#endif
-+
-+#ifndef GL_EXT_texture_env_combine
-+#define GL_EXT_texture_env_combine 1
-+#endif
-+
-+#ifndef GL_APPLE_specular_vector
-+#define GL_APPLE_specular_vector 1
-+#endif
-+
-+#ifndef GL_APPLE_transform_hint
-+#define GL_APPLE_transform_hint 1
-+#endif
-+
-+#ifndef GL_SGIX_fog_scale
-+#define GL_SGIX_fog_scale 1
-+#endif
-+
-+#ifndef GL_SUNX_constant_data
-+#define GL_SUNX_constant_data 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glFinishTextureSUNX (void);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) (void);
-+#endif
-+
-+#ifndef GL_SUN_global_alpha
-+#define GL_SUN_global_alpha 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte);
-+GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort);
-+GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint);
-+GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat);
-+GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble);
-+GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte);
-+GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort);
-+GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor);
-+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor);
-+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor);
-+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor);
-+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor);
-+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor);
-+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor);
-+typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor);
-+#endif
-+
-+#ifndef GL_SUN_triangle_list
-+#define GL_SUN_triangle_list 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint);
-+GLAPI void APIENTRY glReplacementCodeusSUN (GLushort);
-+GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte);
-+GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *);
-+GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *);
-+GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *);
-+GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum, GLsizei, const GLvoid* *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const GLvoid* *pointer);
-+#endif
-+
-+#ifndef GL_SUN_vertex
-+#define GL_SUN_vertex 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat);
-+GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *, const GLfloat *);
-+GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *, const GLfloat *);
-+GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *, const GLfloat *);
-+GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *);
-+GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
-+GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *, const GLfloat *);
-+GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *, const GLfloat *);
-+GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat, GLfloat, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *, const GLubyte *, const GLfloat *);
-+GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
-+GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
-+GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
-+GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
-+GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *, const GLfloat *);
-+GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *, const GLubyte *, const GLfloat *);
-+GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *);
-+GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *);
-+GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *);
-+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *);
-+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *);
-+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
-+typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-+typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-+typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint *rc, const GLubyte *c, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *n, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-+#endif
-+
-+#ifndef GL_EXT_blend_func_separate
-+#define GL_EXT_blend_func_separate 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum, GLenum, GLenum, GLenum);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-+#endif
-+
-+#ifndef GL_INGR_blend_func_separate
-+#define GL_INGR_blend_func_separate 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum, GLenum, GLenum, GLenum);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-+#endif
-+
-+#ifndef GL_INGR_color_clamp
-+#define GL_INGR_color_clamp 1
-+#endif
-+
-+#ifndef GL_INGR_interlace_read
-+#define GL_INGR_interlace_read 1
-+#endif
-+
-+#ifndef GL_EXT_stencil_wrap
-+#define GL_EXT_stencil_wrap 1
-+#endif
-+
-+#ifndef GL_EXT_422_pixels
-+#define GL_EXT_422_pixels 1
-+#endif
-+
-+#ifndef GL_NV_texgen_reflection
-+#define GL_NV_texgen_reflection 1
-+#endif
-+
-+#ifndef GL_SUN_convolution_border_modes
-+#define GL_SUN_convolution_border_modes 1
-+#endif
-+
-+#ifndef GL_EXT_texture_env_add
-+#define GL_EXT_texture_env_add 1
-+#endif
-+
-+#ifndef GL_EXT_texture_lod_bias
-+#define GL_EXT_texture_lod_bias 1
-+#endif
-+
-+#ifndef GL_EXT_texture_filter_anisotropic
-+#define GL_EXT_texture_filter_anisotropic 1
-+#endif
-+
-+#ifndef GL_EXT_vertex_weighting
-+#define GL_EXT_vertex_weighting 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glVertexWeightfEXT (GLfloat);
-+GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *);
-+GLAPI void APIENTRY glVertexWeightPointerEXT (GLsizei, GLenum, GLsizei, const GLvoid *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight);
-+typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight);
-+typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer);
-+#endif
-+
-+#ifndef GL_NV_light_max_exponent
-+#define GL_NV_light_max_exponent 1
-+#endif
-+
-+#ifndef GL_NV_vertex_array_range
-+#define GL_NV_vertex_array_range 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glFlushVertexArrayRangeNV (void);
-+GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei, const GLvoid *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void);
-+typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const GLvoid *pointer);
-+#endif
-+
-+#ifndef GL_NV_register_combiners
-+#define GL_NV_register_combiners 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glCombinerParameterfvNV (GLenum, const GLfloat *);
-+GLAPI void APIENTRY glCombinerParameterfNV (GLenum, GLfloat);
-+GLAPI void APIENTRY glCombinerParameterivNV (GLenum, const GLint *);
-+GLAPI void APIENTRY glCombinerParameteriNV (GLenum, GLint);
-+GLAPI void APIENTRY glCombinerInputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum);
-+GLAPI void APIENTRY glCombinerOutputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean);
-+GLAPI void APIENTRY glFinalCombinerInputNV (GLenum, GLenum, GLenum, GLenum);
-+GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum, GLenum, GLenum, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum, GLenum, GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum, GLenum, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum, GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum, GLenum, GLint *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param);
-+typedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
-+typedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param);
-+typedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
-+typedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
-+typedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
-+typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params);
-+#endif
-+
-+#ifndef GL_NV_fog_distance
-+#define GL_NV_fog_distance 1
-+#endif
-+
-+#ifndef GL_NV_texgen_emboss
-+#define GL_NV_texgen_emboss 1
-+#endif
-+
-+#ifndef GL_NV_blend_square
-+#define GL_NV_blend_square 1
-+#endif
-+
-+#ifndef GL_NV_texture_env_combine4
-+#define GL_NV_texture_env_combine4 1
-+#endif
-+
-+#ifndef GL_MESA_resize_buffers
-+#define GL_MESA_resize_buffers 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glResizeBuffersMESA (void);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void);
-+#endif
-+
-+#ifndef GL_MESA_window_pos
-+#define GL_MESA_window_pos 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glWindowPos2dMESA (GLdouble, GLdouble);
-+GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *);
-+GLAPI void APIENTRY glWindowPos2fMESA (GLfloat, GLfloat);
-+GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *);
-+GLAPI void APIENTRY glWindowPos2iMESA (GLint, GLint);
-+GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *);
-+GLAPI void APIENTRY glWindowPos2sMESA (GLshort, GLshort);
-+GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *);
-+GLAPI void APIENTRY glWindowPos3dMESA (GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *);
-+GLAPI void APIENTRY glWindowPos3fMESA (GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *);
-+GLAPI void APIENTRY glWindowPos3iMESA (GLint, GLint, GLint);
-+GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *);
-+GLAPI void APIENTRY glWindowPos3sMESA (GLshort, GLshort, GLshort);
-+GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *);
-+GLAPI void APIENTRY glWindowPos4dMESA (GLdouble, GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *);
-+GLAPI void APIENTRY glWindowPos4fMESA (GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *);
-+GLAPI void APIENTRY glWindowPos4iMESA (GLint, GLint, GLint, GLint);
-+GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *);
-+GLAPI void APIENTRY glWindowPos4sMESA (GLshort, GLshort, GLshort, GLshort);
-+GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y);
-+typedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z);
-+typedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-+typedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-+typedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w);
-+typedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v);
-+typedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w);
-+typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v);
-+#endif
-+
-+#ifndef GL_IBM_cull_vertex
-+#define GL_IBM_cull_vertex 1
-+#endif
-+
-+#ifndef GL_IBM_multimode_draw_arrays
-+#define GL_IBM_multimode_draw_arrays 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *, const GLint *, const GLsizei *, GLsizei, GLint);
-+GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *, const GLsizei *, GLenum, const GLvoid* const *, GLsizei, GLint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
-+typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, GLint modestride);
-+#endif
-+
-+#ifndef GL_IBM_vertex_array_lists
-+#define GL_IBM_vertex_array_lists 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
-+GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
-+GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint, const GLboolean* *, GLint);
-+GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
-+GLAPI void APIENTRY glIndexPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
-+GLAPI void APIENTRY glNormalPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
-+GLAPI void APIENTRY glTexCoordPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
-+GLAPI void APIENTRY glVertexPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
-+typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean* *pointer, GLint ptrstride);
-+typedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
-+typedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
-+typedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
-+typedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
-+typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
-+#endif
-+
-+#ifndef GL_SGIX_subsample
-+#define GL_SGIX_subsample 1
-+#endif
-+
-+#ifndef GL_SGIX_ycrcba
-+#define GL_SGIX_ycrcba 1
-+#endif
-+
-+#ifndef GL_SGIX_ycrcb_subsample
-+#define GL_SGIX_ycrcb_subsample 1
-+#endif
-+
-+#ifndef GL_SGIX_depth_pass_instrument
-+#define GL_SGIX_depth_pass_instrument 1
-+#endif
-+
-+#ifndef GL_3DFX_texture_compression_FXT1
-+#define GL_3DFX_texture_compression_FXT1 1
-+#endif
-+
-+#ifndef GL_3DFX_multisample
-+#define GL_3DFX_multisample 1
-+#endif
-+
-+#ifndef GL_3DFX_tbuffer
-+#define GL_3DFX_tbuffer 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glTbufferMask3DFX (GLuint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);
-+#endif
-+
-+#ifndef GL_EXT_multisample
-+#define GL_EXT_multisample 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glSampleMaskEXT (GLclampf, GLboolean);
-+GLAPI void APIENTRY glSamplePatternEXT (GLenum);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert);
-+typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern);
-+#endif
-+
-+#ifndef GL_SGIX_vertex_preclip
-+#define GL_SGIX_vertex_preclip 1
-+#endif
-+
-+#ifndef GL_SGIX_convolution_accuracy
-+#define GL_SGIX_convolution_accuracy 1
-+#endif
-+
-+#ifndef GL_SGIX_resample
-+#define GL_SGIX_resample 1
-+#endif
-+
-+#ifndef GL_SGIS_point_line_texgen
-+#define GL_SGIS_point_line_texgen 1
-+#endif
-+
-+#ifndef GL_SGIS_texture_color_mask
-+#define GL_SGIS_texture_color_mask 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean, GLboolean, GLboolean, GLboolean);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-+#endif
-+
-+#ifndef GL_SGIX_igloo_interface
-+#define GL_SGIX_igloo_interface 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum, const GLvoid *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid *params);
-+#endif
-+
-+#ifndef GL_EXT_texture_env_dot3
-+#define GL_EXT_texture_env_dot3 1
-+#endif
-+
-+#ifndef GL_ATI_texture_mirror_once
-+#define GL_ATI_texture_mirror_once 1
-+#endif
-+
-+#ifndef GL_NV_fence
-+#define GL_NV_fence 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glDeleteFencesNV (GLsizei, const GLuint *);
-+GLAPI void APIENTRY glGenFencesNV (GLsizei, GLuint *);
-+GLAPI GLboolean APIENTRY glIsFenceNV (GLuint);
-+GLAPI GLboolean APIENTRY glTestFenceNV (GLuint);
-+GLAPI void APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *);
-+GLAPI void APIENTRY glFinishFenceNV (GLuint);
-+GLAPI void APIENTRY glSetFenceNV (GLuint, GLenum);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
-+typedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
-+typedef GLboolean (APIENTRYP PFNGLISFENCENVPROC) (GLuint fence);
-+typedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence);
-+typedef void (APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence);
-+typedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
-+#endif
-+
-+#ifndef GL_NV_evaluators
-+#define GL_NV_evaluators 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLint, GLint, GLboolean, const GLvoid *);
-+GLAPI void APIENTRY glMapParameterivNV (GLenum, GLenum, const GLint *);
-+GLAPI void APIENTRY glMapParameterfvNV (GLenum, GLenum, const GLfloat *);
-+GLAPI void APIENTRY glGetMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLboolean, GLvoid *);
-+GLAPI void APIENTRY glGetMapParameterivNV (GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glGetMapParameterfvNV (GLenum, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum, GLuint, GLenum, GLint *);
-+GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum, GLuint, GLenum, GLfloat *);
-+GLAPI void APIENTRY glEvalMapsNV (GLenum, GLenum);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points);
-+typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params);
-+typedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid *points);
-+typedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode);
-+#endif
-+
-+#ifndef GL_NV_packed_depth_stencil
-+#define GL_NV_packed_depth_stencil 1
-+#endif
-+
-+#ifndef GL_NV_register_combiners2
-+#define GL_NV_register_combiners2 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum, GLenum, const GLfloat *);
-+GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum, GLenum, GLfloat *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params);
-+#endif
-+
-+#ifndef GL_NV_texture_compression_vtc
-+#define GL_NV_texture_compression_vtc 1
-+#endif
-+
-+#ifndef GL_NV_texture_rectangle
-+#define GL_NV_texture_rectangle 1
-+#endif
-+
-+#ifndef GL_NV_texture_shader
-+#define GL_NV_texture_shader 1
-+#endif
-+
-+#ifndef GL_NV_texture_shader2
-+#define GL_NV_texture_shader2 1
-+#endif
-+
-+#ifndef GL_NV_vertex_array_range2
-+#define GL_NV_vertex_array_range2 1
-+#endif
-+
-+#ifndef GL_NV_vertex_program
-+#define GL_NV_vertex_program 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei, const GLuint *, GLboolean *);
-+GLAPI void APIENTRY glBindProgramNV (GLenum, GLuint);
-+GLAPI void APIENTRY glDeleteProgramsNV (GLsizei, const GLuint *);
-+GLAPI void APIENTRY glExecuteProgramNV (GLenum, GLuint, const GLfloat *);
-+GLAPI void APIENTRY glGenProgramsNV (GLsizei, GLuint *);
-+GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum, GLuint, GLenum, GLdouble *);
-+GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum, GLuint, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetProgramivNV (GLuint, GLenum, GLint *);
-+GLAPI void APIENTRY glGetProgramStringNV (GLuint, GLenum, GLubyte *);
-+GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum, GLuint, GLenum, GLint *);
-+GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint, GLenum, GLdouble *);
-+GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetVertexAttribivNV (GLuint, GLenum, GLint *);
-+GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint, GLenum, GLvoid* *);
-+GLAPI GLboolean APIENTRY glIsProgramNV (GLuint);
-+GLAPI void APIENTRY glLoadProgramNV (GLenum, GLuint, GLsizei, const GLubyte *);
-+GLAPI void APIENTRY glProgramParameter4dNV (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glProgramParameter4dvNV (GLenum, GLuint, const GLdouble *);
-+GLAPI void APIENTRY glProgramParameter4fNV (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glProgramParameter4fvNV (GLenum, GLuint, const GLfloat *);
-+GLAPI void APIENTRY glProgramParameters4dvNV (GLenum, GLuint, GLuint, const GLdouble *);
-+GLAPI void APIENTRY glProgramParameters4fvNV (GLenum, GLuint, GLuint, const GLfloat *);
-+GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei, const GLuint *);
-+GLAPI void APIENTRY glTrackMatrixNV (GLenum, GLuint, GLenum, GLenum);
-+GLAPI void APIENTRY glVertexAttribPointerNV (GLuint, GLint, GLenum, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glVertexAttrib1dNV (GLuint, GLdouble);
-+GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint, const GLdouble *);
-+GLAPI void APIENTRY glVertexAttrib1fNV (GLuint, GLfloat);
-+GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint, const GLfloat *);
-+GLAPI void APIENTRY glVertexAttrib1sNV (GLuint, GLshort);
-+GLAPI void APIENTRY glVertexAttrib1svNV (GLuint, const GLshort *);
-+GLAPI void APIENTRY glVertexAttrib2dNV (GLuint, GLdouble, GLdouble);
-+GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint, const GLdouble *);
-+GLAPI void APIENTRY glVertexAttrib2fNV (GLuint, GLfloat, GLfloat);
-+GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint, const GLfloat *);
-+GLAPI void APIENTRY glVertexAttrib2sNV (GLuint, GLshort, GLshort);
-+GLAPI void APIENTRY glVertexAttrib2svNV (GLuint, const GLshort *);
-+GLAPI void APIENTRY glVertexAttrib3dNV (GLuint, GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint, const GLdouble *);
-+GLAPI void APIENTRY glVertexAttrib3fNV (GLuint, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint, const GLfloat *);
-+GLAPI void APIENTRY glVertexAttrib3sNV (GLuint, GLshort, GLshort, GLshort);
-+GLAPI void APIENTRY glVertexAttrib3svNV (GLuint, const GLshort *);
-+GLAPI void APIENTRY glVertexAttrib4dNV (GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint, const GLdouble *);
-+GLAPI void APIENTRY glVertexAttrib4fNV (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint, const GLfloat *);
-+GLAPI void APIENTRY glVertexAttrib4sNV (GLuint, GLshort, GLshort, GLshort, GLshort);
-+GLAPI void APIENTRY glVertexAttrib4svNV (GLuint, const GLshort *);
-+GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
-+GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint, const GLubyte *);
-+GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint, GLsizei, const GLdouble *);
-+GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint, GLsizei, const GLfloat *);
-+GLAPI void APIENTRY glVertexAttribs1svNV (GLuint, GLsizei, const GLshort *);
-+GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint, GLsizei, const GLdouble *);
-+GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint, GLsizei, const GLfloat *);
-+GLAPI void APIENTRY glVertexAttribs2svNV (GLuint, GLsizei, const GLshort *);
-+GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint, GLsizei, const GLdouble *);
-+GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint, GLsizei, const GLfloat *);
-+GLAPI void APIENTRY glVertexAttribs3svNV (GLuint, GLsizei, const GLshort *);
-+GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint, GLsizei, const GLdouble *);
-+GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint, GLsizei, const GLfloat *);
-+GLAPI void APIENTRY glVertexAttribs4svNV (GLuint, GLsizei, const GLshort *);
-+GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint, GLsizei, const GLubyte *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences);
-+typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id);
-+typedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
-+typedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs);
-+typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params);
-+typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program);
-+typedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params);
-+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
-+typedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC) (GLuint id);
-+typedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program);
-+typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-+typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-+typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLuint count, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLuint count, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
-+typedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v);
-+#endif
-+
-+#ifndef GL_SGIX_texture_coordinate_clamp
-+#define GL_SGIX_texture_coordinate_clamp 1
-+#endif
-+
-+#ifndef GL_SGIX_scalebias_hint
-+#define GL_SGIX_scalebias_hint 1
-+#endif
-+
-+#ifndef GL_OML_interlace
-+#define GL_OML_interlace 1
-+#endif
-+
-+#ifndef GL_OML_subsample
-+#define GL_OML_subsample 1
-+#endif
-+
-+#ifndef GL_OML_resample
-+#define GL_OML_resample 1
-+#endif
-+
-+#ifndef GL_NV_copy_depth_to_color
-+#define GL_NV_copy_depth_to_color 1
-+#endif
-+
-+#ifndef GL_ATI_envmap_bumpmap
-+#define GL_ATI_envmap_bumpmap 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glTexBumpParameterivATI (GLenum, const GLint *);
-+GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum, const GLfloat *);
-+GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum, GLint *);
-+GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum, GLfloat *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param);
-+typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param);
-+typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param);
-+typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param);
-+#endif
-+
-+#ifndef GL_ATI_fragment_shader
-+#define GL_ATI_fragment_shader 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint);
-+GLAPI void APIENTRY glBindFragmentShaderATI (GLuint);
-+GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint);
-+GLAPI void APIENTRY glBeginFragmentShaderATI (void);
-+GLAPI void APIENTRY glEndFragmentShaderATI (void);
-+GLAPI void APIENTRY glPassTexCoordATI (GLuint, GLuint, GLenum);
-+GLAPI void APIENTRY glSampleMapATI (GLuint, GLuint, GLenum);
-+GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
-+GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
-+GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
-+GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint);
-+GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
-+GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
-+GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint, const GLfloat *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range);
-+typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id);
-+typedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id);
-+typedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC) (void);
-+typedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC) (void);
-+typedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle);
-+typedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle);
-+typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
-+typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
-+typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
-+typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
-+typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
-+typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
-+typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value);
-+#endif
-+
-+#ifndef GL_ATI_pn_triangles
-+#define GL_ATI_pn_triangles 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glPNTrianglesiATI (GLenum, GLint);
-+GLAPI void APIENTRY glPNTrianglesfATI (GLenum, GLfloat);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param);
-+typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param);
-+#endif
-+
-+#ifndef GL_ATI_vertex_array_object
-+#define GL_ATI_vertex_array_object 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei, const GLvoid *, GLenum);
-+GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint);
-+GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint, GLuint, GLsizei, const GLvoid *, GLenum);
-+GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetObjectBufferivATI (GLuint, GLenum, GLint *);
-+GLAPI void APIENTRY glFreeObjectBufferATI (GLuint);
-+/* ERO Begin */
-+GLAPI void APIENTRY glDeleteObjectBufferATI (GLuint);
-+/* ERO End */
-+GLAPI void APIENTRY glArrayObjectATI (GLenum, GLint, GLenum, GLsizei, GLuint, GLuint);
-+GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetArrayObjectivATI (GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glVariantArrayObjectATI (GLuint, GLenum, GLsizei, GLuint, GLuint);
-+GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint, GLenum, GLint *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const GLvoid *pointer, GLenum usage);
-+typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer);
-+typedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve);
-+typedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer);
-+typedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
-+typedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
-+typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params);
-+#endif
-+
-+#ifndef GL_EXT_vertex_shader
-+#define GL_EXT_vertex_shader 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glBeginVertexShaderEXT (void);
-+GLAPI void APIENTRY glEndVertexShaderEXT (void);
-+GLAPI void APIENTRY glBindVertexShaderEXT (GLuint);
-+GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint);
-+GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint);
-+GLAPI void APIENTRY glShaderOp1EXT (GLenum, GLuint, GLuint);
-+GLAPI void APIENTRY glShaderOp2EXT (GLenum, GLuint, GLuint, GLuint);
-+GLAPI void APIENTRY glShaderOp3EXT (GLenum, GLuint, GLuint, GLuint, GLuint);
-+GLAPI void APIENTRY glSwizzleEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum);
-+GLAPI void APIENTRY glWriteMaskEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum);
-+GLAPI void APIENTRY glInsertComponentEXT (GLuint, GLuint, GLuint);
-+GLAPI void APIENTRY glExtractComponentEXT (GLuint, GLuint, GLuint);
-+GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum, GLenum, GLenum, GLuint);
-+GLAPI void APIENTRY glSetInvariantEXT (GLuint, GLenum, const GLvoid *);
-+GLAPI void APIENTRY glSetLocalConstantEXT (GLuint, GLenum, const GLvoid *);
-+GLAPI void APIENTRY glVariantbvEXT (GLuint, const GLbyte *);
-+GLAPI void APIENTRY glVariantsvEXT (GLuint, const GLshort *);
-+GLAPI void APIENTRY glVariantivEXT (GLuint, const GLint *);
-+GLAPI void APIENTRY glVariantfvEXT (GLuint, const GLfloat *);
-+GLAPI void APIENTRY glVariantdvEXT (GLuint, const GLdouble *);
-+GLAPI void APIENTRY glVariantubvEXT (GLuint, const GLubyte *);
-+GLAPI void APIENTRY glVariantusvEXT (GLuint, const GLushort *);
-+GLAPI void APIENTRY glVariantuivEXT (GLuint, const GLuint *);
-+GLAPI void APIENTRY glVariantPointerEXT (GLuint, GLenum, GLuint, const GLvoid *);
-+GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint);
-+GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint);
-+GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum, GLenum);
-+GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum, GLenum);
-+GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum, GLenum, GLenum);
-+GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum, GLenum);
-+GLAPI GLuint APIENTRY glBindParameterEXT (GLenum);
-+GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint, GLenum);
-+GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint, GLenum, GLboolean *);
-+GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint, GLenum, GLint *);
-+GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetVariantPointervEXT (GLuint, GLenum, GLvoid* *);
-+GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint, GLenum, GLboolean *);
-+GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint, GLenum, GLint *);
-+GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint, GLenum, GLboolean *);
-+GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint, GLenum, GLint *);
-+GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint, GLenum, GLfloat *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) (void);
-+typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) (void);
-+typedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id);
-+typedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range);
-+typedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id);
-+typedef void (APIENTRYP PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1);
-+typedef void (APIENTRYP PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
-+typedef void (APIENTRYP PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
-+typedef void (APIENTRYP PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
-+typedef void (APIENTRYP PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
-+typedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
-+typedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
-+typedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
-+typedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const GLvoid *addr);
-+typedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const GLvoid *addr);
-+typedef void (APIENTRYP PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr);
-+typedef void (APIENTRYP PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr);
-+typedef void (APIENTRYP PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr);
-+typedef void (APIENTRYP PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr);
-+typedef void (APIENTRYP PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr);
-+typedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr);
-+typedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr);
-+typedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr);
-+typedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const GLvoid *addr);
-+typedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
-+typedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
-+typedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value);
-+typedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value);
-+typedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value);
-+typedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value);
-+typedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC) (GLenum value);
-+typedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap);
-+typedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
-+typedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
-+typedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
-+typedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid* *data);
-+typedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
-+typedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
-+typedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
-+typedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
-+typedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
-+typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
-+#endif
-+
-+#ifndef GL_ATI_vertex_streams
-+#define GL_ATI_vertex_streams 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glVertexStream1sATI (GLenum, GLshort);
-+GLAPI void APIENTRY glVertexStream1svATI (GLenum, const GLshort *);
-+GLAPI void APIENTRY glVertexStream1iATI (GLenum, GLint);
-+GLAPI void APIENTRY glVertexStream1ivATI (GLenum, const GLint *);
-+GLAPI void APIENTRY glVertexStream1fATI (GLenum, GLfloat);
-+GLAPI void APIENTRY glVertexStream1fvATI (GLenum, const GLfloat *);
-+GLAPI void APIENTRY glVertexStream1dATI (GLenum, GLdouble);
-+GLAPI void APIENTRY glVertexStream1dvATI (GLenum, const GLdouble *);
-+GLAPI void APIENTRY glVertexStream2sATI (GLenum, GLshort, GLshort);
-+GLAPI void APIENTRY glVertexStream2svATI (GLenum, const GLshort *);
-+GLAPI void APIENTRY glVertexStream2iATI (GLenum, GLint, GLint);
-+GLAPI void APIENTRY glVertexStream2ivATI (GLenum, const GLint *);
-+GLAPI void APIENTRY glVertexStream2fATI (GLenum, GLfloat, GLfloat);
-+GLAPI void APIENTRY glVertexStream2fvATI (GLenum, const GLfloat *);
-+GLAPI void APIENTRY glVertexStream2dATI (GLenum, GLdouble, GLdouble);
-+GLAPI void APIENTRY glVertexStream2dvATI (GLenum, const GLdouble *);
-+GLAPI void APIENTRY glVertexStream3sATI (GLenum, GLshort, GLshort, GLshort);
-+GLAPI void APIENTRY glVertexStream3svATI (GLenum, const GLshort *);
-+GLAPI void APIENTRY glVertexStream3iATI (GLenum, GLint, GLint, GLint);
-+GLAPI void APIENTRY glVertexStream3ivATI (GLenum, const GLint *);
-+GLAPI void APIENTRY glVertexStream3fATI (GLenum, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glVertexStream3fvATI (GLenum, const GLfloat *);
-+GLAPI void APIENTRY glVertexStream3dATI (GLenum, GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glVertexStream3dvATI (GLenum, const GLdouble *);
-+GLAPI void APIENTRY glVertexStream4sATI (GLenum, GLshort, GLshort, GLshort, GLshort);
-+GLAPI void APIENTRY glVertexStream4svATI (GLenum, const GLshort *);
-+GLAPI void APIENTRY glVertexStream4iATI (GLenum, GLint, GLint, GLint, GLint);
-+GLAPI void APIENTRY glVertexStream4ivATI (GLenum, const GLint *);
-+GLAPI void APIENTRY glVertexStream4fATI (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glVertexStream4fvATI (GLenum, const GLfloat *);
-+GLAPI void APIENTRY glVertexStream4dATI (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glVertexStream4dvATI (GLenum, const GLdouble *);
-+GLAPI void APIENTRY glNormalStream3bATI (GLenum, GLbyte, GLbyte, GLbyte);
-+GLAPI void APIENTRY glNormalStream3bvATI (GLenum, const GLbyte *);
-+GLAPI void APIENTRY glNormalStream3sATI (GLenum, GLshort, GLshort, GLshort);
-+GLAPI void APIENTRY glNormalStream3svATI (GLenum, const GLshort *);
-+GLAPI void APIENTRY glNormalStream3iATI (GLenum, GLint, GLint, GLint);
-+GLAPI void APIENTRY glNormalStream3ivATI (GLenum, const GLint *);
-+GLAPI void APIENTRY glNormalStream3fATI (GLenum, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glNormalStream3fvATI (GLenum, const GLfloat *);
-+GLAPI void APIENTRY glNormalStream3dATI (GLenum, GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glNormalStream3dvATI (GLenum, const GLdouble *);
-+GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum);
-+GLAPI void APIENTRY glVertexBlendEnviATI (GLenum, GLint);
-+GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum, GLfloat);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-+typedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords);
-+typedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
-+typedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords);
-+typedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz);
-+typedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
-+typedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz);
-+typedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
-+typedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
-+typedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
-+typedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
-+typedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
-+typedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream);
-+typedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param);
-+typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param);
-+#endif
-+
-+#ifndef GL_ATI_element_array
-+#define GL_ATI_element_array 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glElementPointerATI (GLenum, const GLvoid *);
-+GLAPI void APIENTRY glDrawElementArrayATI (GLenum, GLsizei);
-+GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum, GLuint, GLuint, GLsizei);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const GLvoid *pointer);
-+typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count);
-+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count);
-+#endif
-+
-+#ifndef GL_SUN_mesh_array
-+#define GL_SUN_mesh_array 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum, GLint, GLsizei, GLsizei);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width);
-+#endif
-+
-+#ifndef GL_SUN_slice_accum
-+#define GL_SUN_slice_accum 1
-+#endif
-+
-+#ifndef GL_NV_multisample_filter_hint
-+#define GL_NV_multisample_filter_hint 1
-+#endif
-+
-+#ifndef GL_NV_depth_clamp
-+#define GL_NV_depth_clamp 1
-+#endif
-+
-+#ifndef GL_NV_occlusion_query
-+#define GL_NV_occlusion_query 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei, GLuint *);
-+GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei, const GLuint *);
-+GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint);
-+GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint);
-+GLAPI void APIENTRY glEndOcclusionQueryNV (void);
-+GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint, GLenum, GLint *);
-+GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint, GLenum, GLuint *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids);
-+typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids);
-+typedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id);
-+typedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id);
-+typedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC) (void);
-+typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params);
-+#endif
-+
-+#ifndef GL_NV_point_sprite
-+#define GL_NV_point_sprite 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glPointParameteriNV (GLenum, GLint);
-+GLAPI void APIENTRY glPointParameterivNV (GLenum, const GLint *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param);
-+typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
-+#endif
-+
-+#ifndef GL_NV_texture_shader3
-+#define GL_NV_texture_shader3 1
-+#endif
-+
-+#ifndef GL_NV_vertex_program1_1
-+#define GL_NV_vertex_program1_1 1
-+#endif
-+
-+#ifndef GL_EXT_shadow_funcs
-+#define GL_EXT_shadow_funcs 1
-+#endif
-+
-+#ifndef GL_EXT_stencil_two_side
-+#define GL_EXT_stencil_two_side 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face);
-+#endif
-+
-+#ifndef GL_ATI_text_fragment_shader
-+#define GL_ATI_text_fragment_shader 1
-+#endif
-+
-+#ifndef GL_APPLE_client_storage
-+#define GL_APPLE_client_storage 1
-+#endif
-+
-+#ifndef GL_APPLE_element_array
-+#define GL_APPLE_element_array 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glElementPointerAPPLE (GLenum, const GLvoid *);
-+GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum, GLint, GLsizei);
-+GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, GLint, GLsizei);
-+GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum, const GLint *, const GLsizei *, GLsizei);
-+GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, const GLint *, const GLsizei *, GLsizei);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const GLvoid *pointer);
-+typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count);
-+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
-+typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
-+typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount);
-+#endif
-+
-+#ifndef GL_APPLE_fence
-+#define GL_APPLE_fence 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glGenFencesAPPLE (GLsizei, GLuint *);
-+GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei, const GLuint *);
-+GLAPI void APIENTRY glSetFenceAPPLE (GLuint);
-+GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint);
-+GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint);
-+GLAPI void APIENTRY glFinishFenceAPPLE (GLuint);
-+GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum, GLuint);
-+GLAPI void APIENTRY glFinishObjectAPPLE (GLenum, GLint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint *fences);
-+typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint *fences);
-+typedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC) (GLuint fence);
-+typedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC) (GLuint fence);
-+typedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC) (GLuint fence);
-+typedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC) (GLuint fence);
-+typedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name);
-+typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name);
-+#endif
-+
-+#ifndef GL_APPLE_vertex_array_object
-+#define GL_APPLE_vertex_array_object 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint);
-+GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei, const GLuint *);
-+GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei, GLuint *);
-+GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array);
-+typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays);
-+typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays);
-+typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array);
-+#endif
-+
-+#ifndef GL_APPLE_vertex_array_range
-+#define GL_APPLE_vertex_array_range 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei, GLvoid *);
-+GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei, GLvoid *);
-+GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum, GLint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer);
-+typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer);
-+typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param);
-+#endif
-+
-+#ifndef GL_APPLE_ycbcr_422
-+#define GL_APPLE_ycbcr_422 1
-+#endif
-+
-+#ifndef GL_S3_s3tc
-+#define GL_S3_s3tc 1
-+#endif
-+
-+#ifndef GL_ATI_draw_buffers
-+#define GL_ATI_draw_buffers 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glDrawBuffersATI (GLsizei, const GLenum *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs);
-+#endif
-+
-+#ifndef GL_ATI_pixel_format_float
-+#define GL_ATI_pixel_format_float 1
-+/* This is really a WGL extension, but defines some associated GL enums.
-+ * ATI does not export "GL_ATI_pixel_format_float" in the GL_EXTENSIONS string.
-+ */
-+#endif
-+
-+#ifndef GL_ATI_texture_env_combine3
-+#define GL_ATI_texture_env_combine3 1
-+#endif
-+
-+#ifndef GL_ATI_texture_float
-+#define GL_ATI_texture_float 1
-+#endif
-+
-+#ifndef GL_NV_float_buffer
-+#define GL_NV_float_buffer 1
-+#endif
-+
-+#ifndef GL_NV_fragment_program
-+#define GL_NV_fragment_program 1
-+/* Some NV_fragment_program entry points are shared with ARB_vertex_program. */
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint, GLsizei, const GLubyte *, GLfloat, GLfloat, GLfloat, GLfloat);
-+GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint, GLsizei, const GLubyte *, GLdouble, GLdouble, GLdouble, GLdouble);
-+GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint, GLsizei, const GLubyte *, const GLfloat *);
-+GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint, GLsizei, const GLubyte *, const GLdouble *);
-+GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint, GLsizei, const GLubyte *, GLfloat *);
-+GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint, GLsizei, const GLubyte *, GLdouble *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-+typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-+typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);
-+typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);
-+typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);
-+#endif
-+
-+#ifndef GL_NV_half_float
-+#define GL_NV_half_float 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glVertex2hNV (GLhalfNV, GLhalfNV);
-+GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *);
-+GLAPI void APIENTRY glVertex3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
-+GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *);
-+GLAPI void APIENTRY glVertex4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
-+GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *);
-+GLAPI void APIENTRY glNormal3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
-+GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *);
-+GLAPI void APIENTRY glColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
-+GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *);
-+GLAPI void APIENTRY glColor4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
-+GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *);
-+GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV);
-+GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *);
-+GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV, GLhalfNV);
-+GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *);
-+GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
-+GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *);
-+GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
-+GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *);
-+GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum, GLhalfNV);
-+GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum, const GLhalfNV *);
-+GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum, GLhalfNV, GLhalfNV);
-+GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum, const GLhalfNV *);
-+GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV);
-+GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum, const GLhalfNV *);
-+GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
-+GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum, const GLhalfNV *);
-+GLAPI void APIENTRY glFogCoordhNV (GLhalfNV);
-+GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *);
-+GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
-+GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *);
-+GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV);
-+GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *);
-+GLAPI void APIENTRY glVertexAttrib1hNV (GLuint, GLhalfNV);
-+GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint, const GLhalfNV *);
-+GLAPI void APIENTRY glVertexAttrib2hNV (GLuint, GLhalfNV, GLhalfNV);
-+GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint, const GLhalfNV *);
-+GLAPI void APIENTRY glVertexAttrib3hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV);
-+GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint, const GLhalfNV *);
-+GLAPI void APIENTRY glVertexAttrib4hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
-+GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint, const GLhalfNV *);
-+GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint, GLsizei, const GLhalfNV *);
-+GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint, GLsizei, const GLhalfNV *);
-+GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint, GLsizei, const GLhalfNV *);
-+GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint, GLsizei, const GLhalfNV *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y);
-+typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z);
-+typedef void (APIENTRYP PFNGLVERTEX3HVNVPROC) (const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
-+typedef void (APIENTRYP PFNGLVERTEX4HVNVPROC) (const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);
-+typedef void (APIENTRYP PFNGLNORMAL3HVNVPROC) (const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
-+typedef void (APIENTRYP PFNGLCOLOR3HVNVPROC) (const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);
-+typedef void (APIENTRYP PFNGLCOLOR4HVNVPROC) (const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC) (GLhalfNV s);
-+typedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC) (const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t);
-+typedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC) (const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r);
-+typedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC) (const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
-+typedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC) (const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
-+typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog);
-+typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
-+typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight);
-+typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
-+#endif
-+
-+#ifndef GL_NV_pixel_data_range
-+#define GL_NV_pixel_data_range 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glPixelDataRangeNV (GLenum, GLsizei, GLvoid *);
-+GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, GLvoid *pointer);
-+typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target);
-+#endif
-+
-+#ifndef GL_NV_primitive_restart
-+#define GL_NV_primitive_restart 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glPrimitiveRestartNV (void);
-+GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) (void);
-+typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index);
-+#endif
-+
-+#ifndef GL_NV_texture_expand_normal
-+#define GL_NV_texture_expand_normal 1
-+#endif
-+
-+#ifndef GL_NV_vertex_program2
-+#define GL_NV_vertex_program2 1
-+#endif
-+
-+#ifndef GL_ATI_map_object_buffer
-+#define GL_ATI_map_object_buffer 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI GLvoid* APIENTRY glMapObjectBufferATI (GLuint);
-+GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef GLvoid* (APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer);
-+typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer);
-+#endif
-+
-+#ifndef GL_ATI_separate_stencil
-+#define GL_ATI_separate_stencil 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glStencilOpSeparateATI (GLenum, GLenum, GLenum, GLenum);
-+GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum, GLenum, GLint, GLuint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
-+typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
-+#endif
-+
-+#ifndef GL_ATI_vertex_attrib_array_object
-+#define GL_ATI_vertex_attrib_array_object 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint, GLint, GLenum, GLboolean, GLsizei, GLuint, GLuint);
-+GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint, GLenum, GLfloat *);
-+GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint, GLenum, GLint *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
-+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat *params);
-+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint *params);
-+#endif
-+
-+#ifndef GL_OES_read_format
-+#define GL_OES_read_format 1
-+#endif
-+
-+#ifndef GL_EXT_depth_bounds_test
-+#define GL_EXT_depth_bounds_test 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glDepthBoundsEXT (GLclampd, GLclampd);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax);
-+#endif
-+
-+#ifndef GL_EXT_texture_mirror_clamp
-+#define GL_EXT_texture_mirror_clamp 1
-+#endif
-+
-+#ifndef GL_EXT_blend_equation_separate
-+#define GL_EXT_blend_equation_separate 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum, GLenum);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha);
-+#endif
-+
-+#ifndef GL_MESA_pack_invert
-+#define GL_MESA_pack_invert 1
-+#endif
-+
-+#ifndef GL_MESA_ycbcr_texture
-+#define GL_MESA_ycbcr_texture 1
-+#endif
-+
-+#ifndef GL_EXT_pixel_buffer_object
-+#define GL_EXT_pixel_buffer_object 1
-+#endif
-+
-+#ifndef GL_NV_fragment_program_option
-+#define GL_NV_fragment_program_option 1
-+#endif
-+
-+#ifndef GL_NV_fragment_program2
-+#define GL_NV_fragment_program2 1
-+#endif
-+
-+#ifndef GL_NV_vertex_program2_option
-+#define GL_NV_vertex_program2_option 1
-+#endif
-+
-+#ifndef GL_NV_vertex_program3
-+#define GL_NV_vertex_program3 1
-+#endif
-+
-+#ifndef GL_EXT_framebuffer_object
-+#define GL_EXT_framebuffer_object 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint);
-+GLAPI void APIENTRY glBindRenderbufferEXT (GLenum, GLuint);
-+GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei, const GLuint *);
-+GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei, GLuint *);
-+GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum, GLenum, GLsizei, GLsizei);
-+GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum, GLenum, GLint *);
-+GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint);
-+GLAPI void APIENTRY glBindFramebufferEXT (GLenum, GLuint);
-+GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei, const GLuint *);
-+GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei, GLuint *);
-+GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum);
-+GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum, GLenum, GLenum, GLuint, GLint);
-+GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum, GLenum, GLenum, GLuint, GLint);
-+GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum, GLenum, GLenum, GLuint, GLint, GLint);
-+GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum, GLenum, GLenum, GLuint);
-+GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum, GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glGenerateMipmapEXT (GLenum);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer);
-+typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer);
-+typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers);
-+typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers);
-+typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-+typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer);
-+typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer);
-+typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers);
-+typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers);
-+typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target);
-+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-+typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-+typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target);
-+#endif
-+
-+#ifndef GL_GREMEDY_string_marker
-+#define GL_GREMEDY_string_marker 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei, const GLvoid *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const GLvoid *string);
-+#endif
-+
-+#ifndef GL_EXT_packed_depth_stencil
-+#define GL_EXT_packed_depth_stencil 1
-+#endif
-+
-+#ifndef GL_EXT_stencil_clear_tag
-+#define GL_EXT_stencil_clear_tag 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glStencilClearTagEXT (GLsizei, GLuint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag);
-+#endif
-+
-+#ifndef GL_EXT_texture_sRGB
-+#define GL_EXT_texture_sRGB 1
-+#endif
-+
-+#ifndef GL_EXT_framebuffer_blit
-+#define GL_EXT_framebuffer_blit 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glBlitFramebufferEXT (GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-+#endif
-+
-+#ifndef GL_EXT_framebuffer_multisample
-+#define GL_EXT_framebuffer_multisample 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-+#endif
-+
-+#ifndef GL_MESAX_texture_stack
-+#define GL_MESAX_texture_stack 1
-+#endif
-+
-+#ifndef GL_EXT_timer_query
-+#define GL_EXT_timer_query 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint, GLenum, GLint64EXT *);
-+GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint, GLenum, GLuint64EXT *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT *params);
-+typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT *params);
-+#endif
-+
-+#ifndef GL_EXT_gpu_program_parameters
-+#define GL_EXT_gpu_program_parameters 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum, GLuint, GLsizei, const GLfloat *);
-+GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum, GLuint, GLsizei, const GLfloat *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-+#endif
-+
-+#ifndef GL_APPLE_flush_buffer_range
-+#define GL_APPLE_flush_buffer_range 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum, GLenum, GLint);
-+GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum, GLintptr, GLsizeiptr);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param);
-+typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size);
-+#endif
-+
-+#ifndef GL_NV_gpu_program4
-+#define GL_NV_gpu_program4 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum, GLuint, GLint, GLint, GLint, GLint);
-+GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum, GLuint, const GLint *);
-+GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum, GLuint, GLsizei, const GLint *);
-+GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint);
-+GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum, GLuint, const GLuint *);
-+GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum, GLuint, GLsizei, const GLuint *);
-+GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum, GLuint, GLint, GLint, GLint, GLint);
-+GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum, GLuint, const GLint *);
-+GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum, GLuint, GLsizei, const GLint *);
-+GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint);
-+GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum, GLuint, const GLuint *);
-+GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum, GLuint, GLsizei, const GLuint *);
-+GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum, GLuint, GLint *);
-+GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum, GLuint, GLuint *);
-+GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum, GLuint, GLint *);
-+GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum, GLuint, GLuint *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
-+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
-+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
-+typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
-+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
-+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
-+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
-+typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
-+typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params);
-+typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params);
-+typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params);
-+typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params);
-+#endif
-+
-+#ifndef GL_NV_geometry_program4
-+#define GL_NV_geometry_program4 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glProgramVertexLimitNV (GLenum, GLint);
-+GLAPI void APIENTRY glFramebufferTextureEXT (GLenum, GLenum, GLuint, GLint);
-+GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum, GLenum, GLuint, GLint, GLint);
-+GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum, GLenum, GLuint, GLint, GLenum);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit);
-+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
-+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
-+#endif
-+
-+#ifndef GL_EXT_geometry_shader4
-+#define GL_EXT_geometry_shader4 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glProgramParameteriEXT (GLuint, GLenum, GLint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value);
-+#endif
-+
-+#ifndef GL_NV_vertex_program4
-+#define GL_NV_vertex_program4 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint, GLint);
-+GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint, GLint, GLint);
-+GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint, GLint, GLint, GLint);
-+GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint, GLint, GLint, GLint, GLint);
-+GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint, GLuint);
-+GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint, GLuint, GLuint);
-+GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint, GLuint, GLuint, GLuint);
-+GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint, GLuint, GLuint, GLuint, GLuint);
-+GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint, const GLint *);
-+GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint, const GLint *);
-+GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint, const GLint *);
-+GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint, const GLint *);
-+GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint, const GLuint *);
-+GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint, const GLuint *);
-+GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint, const GLuint *);
-+GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint, const GLuint *);
-+GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint, const GLbyte *);
-+GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint, const GLshort *);
-+GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint, const GLubyte *);
-+GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint, const GLushort *);
-+GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint, GLint, GLenum, GLsizei, const GLvoid *);
-+GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint, GLenum, GLint *);
-+GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint, GLenum, GLuint *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v);
-+typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params);
-+#endif
-+
-+#ifndef GL_EXT_gpu_shader4
-+#define GL_EXT_gpu_shader4 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glGetUniformuivEXT (GLuint, GLint, GLuint *);
-+GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint, GLuint, const GLchar *);
-+GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint, const GLchar *);
-+GLAPI void APIENTRY glUniform1uiEXT (GLint, GLuint);
-+GLAPI void APIENTRY glUniform2uiEXT (GLint, GLuint, GLuint);
-+GLAPI void APIENTRY glUniform3uiEXT (GLint, GLuint, GLuint, GLuint);
-+GLAPI void APIENTRY glUniform4uiEXT (GLint, GLuint, GLuint, GLuint, GLuint);
-+GLAPI void APIENTRY glUniform1uivEXT (GLint, GLsizei, const GLuint *);
-+GLAPI void APIENTRY glUniform2uivEXT (GLint, GLsizei, const GLuint *);
-+GLAPI void APIENTRY glUniform3uivEXT (GLint, GLsizei, const GLuint *);
-+GLAPI void APIENTRY glUniform4uivEXT (GLint, GLsizei, const GLuint *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params);
-+typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name);
-+typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name);
-+typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0);
-+typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1);
-+typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
-+typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-+typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
-+typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
-+typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
-+typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
-+#endif
-+
-+#ifndef GL_EXT_draw_instanced
-+#define GL_EXT_draw_instanced 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum, GLint, GLsizei, GLsizei);
-+GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum, GLsizei, GLenum, const GLvoid *, GLsizei);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
-+typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
-+#endif
-+
-+#ifndef GL_EXT_packed_float
-+#define GL_EXT_packed_float 1
-+#endif
-+
-+#ifndef GL_EXT_texture_array
-+#define GL_EXT_texture_array 1
-+#endif
-+
-+#ifndef GL_EXT_texture_buffer_object
-+#define GL_EXT_texture_buffer_object 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glTexBufferEXT (GLenum, GLenum, GLuint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer);
-+#endif
-+
-+#ifndef GL_EXT_texture_compression_latc
-+#define GL_EXT_texture_compression_latc 1
-+#endif
-+
-+#ifndef GL_EXT_texture_compression_rgtc
-+#define GL_EXT_texture_compression_rgtc 1
-+#endif
-+
-+#ifndef GL_EXT_texture_shared_exponent
-+#define GL_EXT_texture_shared_exponent 1
-+#endif
-+
-+#ifndef GL_NV_depth_buffer_float
-+#define GL_NV_depth_buffer_float 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glDepthRangedNV (GLdouble, GLdouble);
-+GLAPI void APIENTRY glClearDepthdNV (GLdouble);
-+GLAPI void APIENTRY glDepthBoundsdNV (GLdouble, GLdouble);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar);
-+typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth);
-+typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax);
-+#endif
-+
-+#ifndef GL_NV_fragment_program4
-+#define GL_NV_fragment_program4 1
-+#endif
-+
-+#ifndef GL_NV_framebuffer_multisample_coverage
-+#define GL_NV_framebuffer_multisample_coverage 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum, GLsizei, GLsizei, GLenum, GLsizei, GLsizei);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
-+#endif
-+
-+#ifndef GL_EXT_framebuffer_sRGB
-+#define GL_EXT_framebuffer_sRGB 1
-+#endif
-+
-+#ifndef GL_NV_geometry_shader4
-+#define GL_NV_geometry_shader4 1
-+#endif
-+
-+#ifndef GL_NV_parameter_buffer_object
-+#define GL_NV_parameter_buffer_object 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum, GLuint, GLuint, GLsizei, const GLfloat *);
-+GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum, GLuint, GLuint, GLsizei, const GLint *);
-+GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum, GLuint, GLuint, GLsizei, const GLuint *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params);
-+typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params);
-+typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params);
-+#endif
-+
-+#ifndef GL_EXT_draw_buffers2
-+#define GL_EXT_draw_buffers2 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint, GLboolean, GLboolean, GLboolean, GLboolean);
-+GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum, GLuint, GLboolean *);
-+GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum, GLuint, GLint *);
-+GLAPI void APIENTRY glEnableIndexedEXT (GLenum, GLuint);
-+GLAPI void APIENTRY glDisableIndexedEXT (GLenum, GLuint);
-+GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum, GLuint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
-+typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data);
-+typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint *data);
-+typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
-+typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
-+typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index);
-+#endif
-+
-+#ifndef GL_NV_transform_feedback
-+#define GL_NV_transform_feedback 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum);
-+GLAPI void APIENTRY glEndTransformFeedbackNV (void);
-+GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLuint, const GLint *, GLenum);
-+GLAPI void APIENTRY glBindBufferRangeNV (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr);
-+GLAPI void APIENTRY glBindBufferOffsetNV (GLenum, GLuint, GLuint, GLintptr);
-+GLAPI void APIENTRY glBindBufferBaseNV (GLenum, GLuint, GLuint);
-+GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint, GLsizei, const GLint *, GLenum);
-+GLAPI void APIENTRY glActiveVaryingNV (GLuint, const GLchar *);
-+GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint, const GLchar *);
-+GLAPI void APIENTRY glGetActiveVaryingNV (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *);
-+GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint, GLuint, GLint *);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode);
-+typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) (void);
-+typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode);
-+typedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-+typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
-+typedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer);
-+typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode);
-+typedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name);
-+typedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name);
-+typedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-+typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location);
-+#endif
-+
-+#ifndef GL_EXT_bindable_uniform
-+#define GL_EXT_bindable_uniform 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glUniformBufferEXT (GLuint, GLint, GLuint);
-+GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint, GLint);
-+GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint, GLint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer);
-+typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location);
-+typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location);
-+#endif
-+
-+#ifndef GL_EXT_texture_integer
-+#define GL_EXT_texture_integer 1
-+#ifdef GL_GLEXT_PROTOTYPES
-+GLAPI void APIENTRY glTexParameterIivEXT (GLenum, GLenum, const GLint *);
-+GLAPI void APIENTRY glTexParameterIuivEXT (GLenum, GLenum, const GLuint *);
-+GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum, GLenum, GLint *);
-+GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum, GLenum, GLuint *);
-+GLAPI void APIENTRY glClearColorIiEXT (GLint, GLint, GLint, GLint);
-+GLAPI void APIENTRY glClearColorIuiEXT (GLuint, GLuint, GLuint, GLuint);
-+#endif /* GL_GLEXT_PROTOTYPES */
-+typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
-+typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params);
-+typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-+typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params);
-+typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha);
-+typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha);
-+#endif
-+
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif
-+
-+
-+/* ERO */
-+GLAPI void GLAPIENTRY fake_gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *data);
-Index: qemu-0.12.4/target-i386/mesa_glu.h
-===================================================================
---- /dev/null
-+++ qemu-0.12.4/target-i386/mesa_glu.h
-@@ -0,0 +1,354 @@
-+/*
-+** License Applicability. Except to the extent portions of this file are
-+** made subject to an alternative license as permitted in the SGI Free
-+** Software License B, Version 1.1 (the "License"), the contents of this
-+** file are subject only to the provisions of the License. You may not use
-+** this file except in compliance with the License. You may obtain a copy
-+** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-+** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-+**
-+** http://oss.sgi.com/projects/FreeB
-+**
-+** Note that, as provided in the License, the Software is distributed on an
-+** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-+** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-+** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-+** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-+**
-+** Original Code. The Original Code is: OpenGL Sample Implementation,
-+** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-+** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-+** Copyright in any portions created by third parties is as indicated
-+** elsewhere herein. All Rights Reserved.
-+**
-+** Additional Notice Provisions: This software was created using the
-+** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has
-+** not been independently verified as being compliant with the OpenGL(R)
-+** version 1.2.1 Specification.
-+*/
-+
-+#ifndef __glu_h__
-+#define __glu_h__
-+
-+#if defined(USE_MGL_NAMESPACE)
-+#include "glu_mangle.h"
-+#endif
-+
-+//#include <GL/gl.h>
-+#include "mesa_gl.h"
-+
-+#ifndef GLAPIENTRY
-+#define GLAPIENTRY
-+#endif
-+
-+#ifndef GLAPIENTRYP
-+#define GLAPIENTRYP GLAPIENTRY *
-+#endif
-+
-+#ifdef GLAPI
-+#undef GLAPI
-+#endif
-+
-+# if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GLU32)
-+# define GLAPI __declspec(dllexport)
-+# elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
-+# define GLAPI __declspec(dllimport)
-+# else /* for use with static link lib build of Win32 edition only */
-+# define GLAPI extern
-+# endif /* _STATIC_MESA support */
-+
-+
-+#ifndef GLAPI
-+#define GLAPI
-+#endif
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+/*************************************************************/
-+
-+/* Extensions */
-+#define GLU_EXT_object_space_tess 1
-+#define GLU_EXT_nurbs_tessellator 1
-+
-+/* Boolean */
-+#define GLU_FALSE 0
-+#define GLU_TRUE 1
-+
-+/* Version */
-+#define GLU_VERSION_1_1 1
-+#define GLU_VERSION_1_2 1
-+#define GLU_VERSION_1_3 1
-+
-+/* StringName */
-+#define GLU_VERSION 100800
-+#define GLU_EXTENSIONS 100801
-+
-+/* ErrorCode */
-+#define GLU_INVALID_ENUM 100900
-+#define GLU_INVALID_VALUE 100901
-+#define GLU_OUT_OF_MEMORY 100902
-+#define GLU_INCOMPATIBLE_GL_VERSION 100903
-+#define GLU_INVALID_OPERATION 100904
-+
-+/* NurbsDisplay */
-+/* GLU_FILL */
-+#define GLU_OUTLINE_POLYGON 100240
-+#define GLU_OUTLINE_PATCH 100241
-+
-+/* NurbsCallback */
-+#define GLU_NURBS_ERROR 100103
-+#define GLU_ERROR 100103
-+#define GLU_NURBS_BEGIN 100164
-+#define GLU_NURBS_BEGIN_EXT 100164
-+#define GLU_NURBS_VERTEX 100165
-+#define GLU_NURBS_VERTEX_EXT 100165
-+#define GLU_NURBS_NORMAL 100166
-+#define GLU_NURBS_NORMAL_EXT 100166
-+#define GLU_NURBS_COLOR 100167
-+#define GLU_NURBS_COLOR_EXT 100167
-+#define GLU_NURBS_TEXTURE_COORD 100168
-+#define GLU_NURBS_TEX_COORD_EXT 100168
-+#define GLU_NURBS_END 100169
-+#define GLU_NURBS_END_EXT 100169
-+#define GLU_NURBS_BEGIN_DATA 100170
-+#define GLU_NURBS_BEGIN_DATA_EXT 100170
-+#define GLU_NURBS_VERTEX_DATA 100171
-+#define GLU_NURBS_VERTEX_DATA_EXT 100171
-+#define GLU_NURBS_NORMAL_DATA 100172
-+#define GLU_NURBS_NORMAL_DATA_EXT 100172
-+#define GLU_NURBS_COLOR_DATA 100173
-+#define GLU_NURBS_COLOR_DATA_EXT 100173
-+#define GLU_NURBS_TEXTURE_COORD_DATA 100174
-+#define GLU_NURBS_TEX_COORD_DATA_EXT 100174
-+#define GLU_NURBS_END_DATA 100175
-+#define GLU_NURBS_END_DATA_EXT 100175
-+
-+/* NurbsError */
-+#define GLU_NURBS_ERROR1 100251
-+#define GLU_NURBS_ERROR2 100252
-+#define GLU_NURBS_ERROR3 100253
-+#define GLU_NURBS_ERROR4 100254
-+#define GLU_NURBS_ERROR5 100255
-+#define GLU_NURBS_ERROR6 100256
-+#define GLU_NURBS_ERROR7 100257
-+#define GLU_NURBS_ERROR8 100258
-+#define GLU_NURBS_ERROR9 100259
-+#define GLU_NURBS_ERROR10 100260
-+#define GLU_NURBS_ERROR11 100261
-+#define GLU_NURBS_ERROR12 100262
-+#define GLU_NURBS_ERROR13 100263
-+#define GLU_NURBS_ERROR14 100264
-+#define GLU_NURBS_ERROR15 100265
-+#define GLU_NURBS_ERROR16 100266
-+#define GLU_NURBS_ERROR17 100267
-+#define GLU_NURBS_ERROR18 100268
-+#define GLU_NURBS_ERROR19 100269
-+#define GLU_NURBS_ERROR20 100270
-+#define GLU_NURBS_ERROR21 100271
-+#define GLU_NURBS_ERROR22 100272
-+#define GLU_NURBS_ERROR23 100273
-+#define GLU_NURBS_ERROR24 100274
-+#define GLU_NURBS_ERROR25 100275
-+#define GLU_NURBS_ERROR26 100276
-+#define GLU_NURBS_ERROR27 100277
-+#define GLU_NURBS_ERROR28 100278
-+#define GLU_NURBS_ERROR29 100279
-+#define GLU_NURBS_ERROR30 100280
-+#define GLU_NURBS_ERROR31 100281
-+#define GLU_NURBS_ERROR32 100282
-+#define GLU_NURBS_ERROR33 100283
-+#define GLU_NURBS_ERROR34 100284
-+#define GLU_NURBS_ERROR35 100285
-+#define GLU_NURBS_ERROR36 100286
-+#define GLU_NURBS_ERROR37 100287
-+
-+/* NurbsProperty */
-+#define GLU_AUTO_LOAD_MATRIX 100200
-+#define GLU_CULLING 100201
-+#define GLU_SAMPLING_TOLERANCE 100203
-+#define GLU_DISPLAY_MODE 100204
-+#define GLU_PARAMETRIC_TOLERANCE 100202
-+#define GLU_SAMPLING_METHOD 100205
-+#define GLU_U_STEP 100206
-+#define GLU_V_STEP 100207
-+#define GLU_NURBS_MODE 100160
-+#define GLU_NURBS_MODE_EXT 100160
-+#define GLU_NURBS_TESSELLATOR 100161
-+#define GLU_NURBS_TESSELLATOR_EXT 100161
-+#define GLU_NURBS_RENDERER 100162
-+#define GLU_NURBS_RENDERER_EXT 100162
-+
-+/* NurbsSampling */
-+#define GLU_OBJECT_PARAMETRIC_ERROR 100208
-+#define GLU_OBJECT_PARAMETRIC_ERROR_EXT 100208
-+#define GLU_OBJECT_PATH_LENGTH 100209
-+#define GLU_OBJECT_PATH_LENGTH_EXT 100209
-+#define GLU_PATH_LENGTH 100215
-+#define GLU_PARAMETRIC_ERROR 100216
-+#define GLU_DOMAIN_DISTANCE 100217
-+
-+/* NurbsTrim */
-+#define GLU_MAP1_TRIM_2 100210
-+#define GLU_MAP1_TRIM_3 100211
-+
-+/* QuadricDrawStyle */
-+#define GLU_POINT 100010
-+#define GLU_LINE 100011
-+#define GLU_FILL 100012
-+#define GLU_SILHOUETTE 100013
-+
-+/* QuadricCallback */
-+/* GLU_ERROR */
-+
-+/* QuadricNormal */
-+#define GLU_SMOOTH 100000
-+#define GLU_FLAT 100001
-+#define GLU_NONE 100002
-+
-+/* QuadricOrientation */
-+#define GLU_OUTSIDE 100020
-+#define GLU_INSIDE 100021
-+
-+/* TessCallback */
-+#define GLU_TESS_BEGIN 100100
-+#define GLU_BEGIN 100100
-+#define GLU_TESS_VERTEX 100101
-+#define GLU_VERTEX 100101
-+#define GLU_TESS_END 100102
-+#define GLU_END 100102
-+#define GLU_TESS_ERROR 100103
-+#define GLU_TESS_EDGE_FLAG 100104
-+#define GLU_EDGE_FLAG 100104
-+#define GLU_TESS_COMBINE 100105
-+#define GLU_TESS_BEGIN_DATA 100106
-+#define GLU_TESS_VERTEX_DATA 100107
-+#define GLU_TESS_END_DATA 100108
-+#define GLU_TESS_ERROR_DATA 100109
-+#define GLU_TESS_EDGE_FLAG_DATA 100110
-+#define GLU_TESS_COMBINE_DATA 100111
-+
-+/* TessContour */
-+#define GLU_CW 100120
-+#define GLU_CCW 100121
-+#define GLU_INTERIOR 100122
-+#define GLU_EXTERIOR 100123
-+#define GLU_UNKNOWN 100124
-+
-+/* TessProperty */
-+#define GLU_TESS_WINDING_RULE 100140
-+#define GLU_TESS_BOUNDARY_ONLY 100141
-+#define GLU_TESS_TOLERANCE 100142
-+
-+/* TessError */
-+#define GLU_TESS_ERROR1 100151
-+#define GLU_TESS_ERROR2 100152
-+#define GLU_TESS_ERROR3 100153
-+#define GLU_TESS_ERROR4 100154
-+#define GLU_TESS_ERROR5 100155
-+#define GLU_TESS_ERROR6 100156
-+#define GLU_TESS_ERROR7 100157
-+#define GLU_TESS_ERROR8 100158
-+#define GLU_TESS_MISSING_BEGIN_POLYGON 100151
-+#define GLU_TESS_MISSING_BEGIN_CONTOUR 100152
-+#define GLU_TESS_MISSING_END_POLYGON 100153
-+#define GLU_TESS_MISSING_END_CONTOUR 100154
-+#define GLU_TESS_COORD_TOO_LARGE 100155
-+#define GLU_TESS_NEED_COMBINE_CALLBACK 100156
-+
-+/* TessWinding */
-+#define GLU_TESS_WINDING_ODD 100130
-+#define GLU_TESS_WINDING_NONZERO 100131
-+#define GLU_TESS_WINDING_POSITIVE 100132
-+#define GLU_TESS_WINDING_NEGATIVE 100133
-+#define GLU_TESS_WINDING_ABS_GEQ_TWO 100134
-+
-+/*************************************************************/
-+
-+
-+#ifdef __cplusplus
-+class GLUnurbs;
-+class GLUquadric;
-+class GLUtesselator;
-+#else
-+typedef struct GLUnurbs GLUnurbs;
-+typedef struct GLUquadric GLUquadric;
-+typedef struct GLUtesselator GLUtesselator;
-+#endif
-+
-+typedef GLUnurbs GLUnurbsObj;
-+typedef GLUquadric GLUquadricObj;
-+typedef GLUtesselator GLUtesselatorObj;
-+typedef GLUtesselator GLUtriangulatorObj;
-+
-+#define GLU_TESS_MAX_COORD 1.0e150
-+
-+/* Internal convenience typedefs */
-+typedef void (GLAPIENTRYP _GLUfuncptr)();
-+
-+GLAPI void GLAPIENTRY gluBeginCurve (GLUnurbs* nurb);
-+GLAPI void GLAPIENTRY gluBeginPolygon (GLUtesselator* tess);
-+GLAPI void GLAPIENTRY gluBeginSurface (GLUnurbs* nurb);
-+GLAPI void GLAPIENTRY gluBeginTrim (GLUnurbs* nurb);
-+GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
-+GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
-+GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
-+GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
-+GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
-+GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
-+GLAPI GLboolean GLAPIENTRY gluCheckExtension (const GLubyte *extName, const GLubyte *extString);
-+GLAPI void GLAPIENTRY gluCylinder (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks);
-+GLAPI void GLAPIENTRY gluDeleteNurbsRenderer (GLUnurbs* nurb);
-+GLAPI void GLAPIENTRY gluDeleteQuadric (GLUquadric* quad);
-+GLAPI void GLAPIENTRY gluDeleteTess (GLUtesselator* tess);
-+GLAPI void GLAPIENTRY gluDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops);
-+GLAPI void GLAPIENTRY gluEndCurve (GLUnurbs* nurb);
-+GLAPI void GLAPIENTRY gluEndPolygon (GLUtesselator* tess);
-+GLAPI void GLAPIENTRY gluEndSurface (GLUnurbs* nurb);
-+GLAPI void GLAPIENTRY gluEndTrim (GLUnurbs* nurb);
-+GLAPI const GLubyte * GLAPIENTRY gluErrorString (GLenum error);
-+GLAPI void GLAPIENTRY gluGetNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat* data);
-+GLAPI const GLubyte * GLAPIENTRY gluGetString (GLenum name);
-+GLAPI void GLAPIENTRY gluGetTessProperty (GLUtesselator* tess, GLenum which, GLdouble* data);
-+GLAPI void GLAPIENTRY gluLoadSamplingMatrices (GLUnurbs* nurb, const GLfloat *model, const GLfloat *perspective, const GLint *view);
-+GLAPI void GLAPIENTRY gluLookAt (GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ);
-+GLAPI GLUnurbs* GLAPIENTRY gluNewNurbsRenderer (void);
-+GLAPI GLUquadric* GLAPIENTRY gluNewQuadric (void);
-+GLAPI GLUtesselator* GLAPIENTRY gluNewTess (void);
-+GLAPI void GLAPIENTRY gluNextContour (GLUtesselator* tess, GLenum type);
-+GLAPI void GLAPIENTRY gluNurbsCallback (GLUnurbs* nurb, GLenum which, _GLUfuncptr CallBackFunc);
-+GLAPI void GLAPIENTRY gluNurbsCallbackData (GLUnurbs* nurb, GLvoid* userData);
-+GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
-+GLAPI void GLAPIENTRY gluNurbsCurve (GLUnurbs* nurb, GLint knotCount, GLfloat *knots, GLint stride, GLfloat *control, GLint order, GLenum type);
-+GLAPI void GLAPIENTRY gluNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat value);
-+GLAPI void GLAPIENTRY gluNurbsSurface (GLUnurbs* nurb, GLint sKnotCount, GLfloat* sKnots, GLint tKnotCount, GLfloat* tKnots, GLint sStride, GLint tStride, GLfloat* control, GLint sOrder, GLint tOrder, GLenum type);
-+GLAPI void GLAPIENTRY gluOrtho2D (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
-+GLAPI void GLAPIENTRY gluPartialDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops, GLdouble start, GLdouble sweep);
-+GLAPI void GLAPIENTRY gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
-+GLAPI void GLAPIENTRY gluPickMatrix (GLdouble x, GLdouble y, GLdouble delX, GLdouble delY, GLint *viewport);
-+GLAPI GLint GLAPIENTRY gluProject (GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* winX, GLdouble* winY, GLdouble* winZ);
-+GLAPI void GLAPIENTRY gluPwlCurve (GLUnurbs* nurb, GLint count, GLfloat* data, GLint stride, GLenum type);
-+GLAPI void GLAPIENTRY gluQuadricCallback (GLUquadric* quad, GLenum which, _GLUfuncptr CallBackFunc);
-+GLAPI void GLAPIENTRY gluQuadricDrawStyle (GLUquadric* quad, GLenum draw);
-+GLAPI void GLAPIENTRY gluQuadricNormals (GLUquadric* quad, GLenum normal);
-+GLAPI void GLAPIENTRY gluQuadricOrientation (GLUquadric* quad, GLenum orientation);
-+GLAPI void GLAPIENTRY gluQuadricTexture (GLUquadric* quad, GLboolean texture);
-+GLAPI GLint GLAPIENTRY gluScaleImage (GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void *dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut);
-+GLAPI void GLAPIENTRY gluSphere (GLUquadric* quad, GLdouble radius, GLint slices, GLint stacks);
-+GLAPI void GLAPIENTRY gluTessBeginContour (GLUtesselator* tess);
-+GLAPI void GLAPIENTRY gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data);
-+GLAPI void GLAPIENTRY gluTessCallback (GLUtesselator* tess, GLenum which, _GLUfuncptr CallBackFunc);
-+GLAPI void GLAPIENTRY gluTessEndContour (GLUtesselator* tess);
-+GLAPI void GLAPIENTRY gluTessEndPolygon (GLUtesselator* tess);
-+GLAPI void GLAPIENTRY gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ);
-+GLAPI void GLAPIENTRY gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data);
-+GLAPI void GLAPIENTRY gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data);
-+GLAPI GLint GLAPIENTRY gluUnProject (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ);
-+GLAPI GLint GLAPIENTRY gluUnProject4 (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble nearVal, GLdouble farVal, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW);
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif /* __glu_h__ */
-Index: qemu-0.12.4/target-i386/mesa_glx.h
-===================================================================
---- /dev/null
-+++ qemu-0.12.4/target-i386/mesa_glx.h
-@@ -0,0 +1,510 @@
-+/*
-+ * Mesa 3-D graphics library
-+ * Version: 6.5
-+ *
-+ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
-+ *
-+ * 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
-+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+
-+#ifndef GLX_H
-+#define GLX_H
-+
-+
-+#ifdef __VMS
-+#include <GL/vms_x_fix.h>
-+# ifdef __cplusplus
-+/* VMS Xlib.h gives problems with C++.
-+ * this avoids a bunch of trivial warnings */
-+#pragma message disable nosimpint
-+#endif
-+#endif
-+#include <X11/Xlib.h>
-+#include <X11/Xutil.h>
-+#ifdef __VMS
-+# ifdef __cplusplus
-+#pragma message enable nosimpint
-+#endif
-+#endif
-+#include <mesa_gl.h>
-+
-+
-+#if defined(USE_MGL_NAMESPACE)
-+#include "glx_mangle.h"
-+#endif
-+
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+
-+#define GLX_VERSION_1_1 1
-+#define GLX_VERSION_1_2 1
-+#define GLX_VERSION_1_3 1
-+#define GLX_VERSION_1_4 1
-+
-+#define GLX_EXTENSION_NAME "GLX"
-+
-+
-+
-+/*
-+ * Tokens for glXChooseVisual and glXGetConfig:
-+ */
-+#define GLX_USE_GL 1
-+#define GLX_BUFFER_SIZE 2
-+#define GLX_LEVEL 3
-+#define GLX_RGBA 4
-+#define GLX_DOUBLEBUFFER 5
-+#define GLX_STEREO 6
-+#define GLX_AUX_BUFFERS 7
-+#define GLX_RED_SIZE 8
-+#define GLX_GREEN_SIZE 9
-+#define GLX_BLUE_SIZE 10
-+#define GLX_ALPHA_SIZE 11
-+#define GLX_DEPTH_SIZE 12
-+#define GLX_STENCIL_SIZE 13
-+#define GLX_ACCUM_RED_SIZE 14
-+#define GLX_ACCUM_GREEN_SIZE 15
-+#define GLX_ACCUM_BLUE_SIZE 16
-+#define GLX_ACCUM_ALPHA_SIZE 17
-+
-+
-+/*
-+ * Error codes returned by glXGetConfig:
-+ */
-+#define GLX_BAD_SCREEN 1
-+#define GLX_BAD_ATTRIBUTE 2
-+#define GLX_NO_EXTENSION 3
-+#define GLX_BAD_VISUAL 4
-+#define GLX_BAD_CONTEXT 5
-+#define GLX_BAD_VALUE 6
-+#define GLX_BAD_ENUM 7
-+
-+
-+/*
-+ * GLX 1.1 and later:
-+ */
-+#define GLX_VENDOR 1
-+#define GLX_VERSION 2
-+#define GLX_EXTENSIONS 3
-+
-+
-+/*
-+ * GLX 1.3 and later:
-+ */
-+#define GLX_CONFIG_CAVEAT 0x20
-+#define GLX_DONT_CARE 0xFFFFFFFF
-+#define GLX_X_VISUAL_TYPE 0x22
-+#define GLX_TRANSPARENT_TYPE 0x23
-+#define GLX_TRANSPARENT_INDEX_VALUE 0x24
-+#define GLX_TRANSPARENT_RED_VALUE 0x25
-+#define GLX_TRANSPARENT_GREEN_VALUE 0x26
-+#define GLX_TRANSPARENT_BLUE_VALUE 0x27
-+#define GLX_TRANSPARENT_ALPHA_VALUE 0x28
-+#define GLX_WINDOW_BIT 0x00000001
-+#define GLX_PIXMAP_BIT 0x00000002
-+#define GLX_PBUFFER_BIT 0x00000004
-+#define GLX_AUX_BUFFERS_BIT 0x00000010
-+#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001
-+#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002
-+#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004
-+#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008
-+#define GLX_DEPTH_BUFFER_BIT 0x00000020
-+#define GLX_STENCIL_BUFFER_BIT 0x00000040
-+#define GLX_ACCUM_BUFFER_BIT 0x00000080
-+#define GLX_NONE 0x8000
-+#define GLX_SLOW_CONFIG 0x8001
-+#define GLX_TRUE_COLOR 0x8002
-+#define GLX_DIRECT_COLOR 0x8003
-+#define GLX_PSEUDO_COLOR 0x8004
-+#define GLX_STATIC_COLOR 0x8005
-+#define GLX_GRAY_SCALE 0x8006
-+#define GLX_STATIC_GRAY 0x8007
-+#define GLX_TRANSPARENT_RGB 0x8008
-+#define GLX_TRANSPARENT_INDEX 0x8009
-+#define GLX_VISUAL_ID 0x800B
-+#define GLX_SCREEN 0x800C
-+#define GLX_NON_CONFORMANT_CONFIG 0x800D
-+#define GLX_DRAWABLE_TYPE 0x8010
-+#define GLX_RENDER_TYPE 0x8011
-+#define GLX_X_RENDERABLE 0x8012
-+#define GLX_FBCONFIG_ID 0x8013
-+#define GLX_RGBA_TYPE 0x8014
-+#define GLX_COLOR_INDEX_TYPE 0x8015
-+#define GLX_MAX_PBUFFER_WIDTH 0x8016
-+#define GLX_MAX_PBUFFER_HEIGHT 0x8017
-+#define GLX_MAX_PBUFFER_PIXELS 0x8018
-+#define GLX_PRESERVED_CONTENTS 0x801B
-+#define GLX_LARGEST_PBUFFER 0x801C
-+#define GLX_WIDTH 0x801D
-+#define GLX_HEIGHT 0x801E
-+#define GLX_EVENT_MASK 0x801F
-+#define GLX_DAMAGED 0x8020
-+#define GLX_SAVED 0x8021
-+#define GLX_WINDOW 0x8022
-+#define GLX_PBUFFER 0x8023
-+#define GLX_PBUFFER_HEIGHT 0x8040
-+#define GLX_PBUFFER_WIDTH 0x8041
-+#define GLX_RGBA_BIT 0x00000001
-+#define GLX_COLOR_INDEX_BIT 0x00000002
-+#define GLX_PBUFFER_CLOBBER_MASK 0x08000000
-+
-+
-+/*
-+ * GLX 1.4 and later:
-+ */
-+#define GLX_SAMPLE_BUFFERS 0x186a0 /*100000*/
-+#define GLX_SAMPLES 0x186a1 /*100001*/
-+
-+
-+
-+typedef struct __GLXcontextRec *GLXContext;
-+typedef XID GLXPixmap;
-+typedef XID GLXDrawable;
-+/* GLX 1.3 and later */
-+typedef struct __GLXFBConfigRec *GLXFBConfig;
-+typedef XID GLXFBConfigID;
-+typedef XID GLXContextID;
-+typedef XID GLXWindow;
-+typedef XID GLXPbuffer;
-+
-+
-+
-+extern XVisualInfo* glXChooseVisual( Display *dpy, int screen,
-+ int *attribList );
-+
-+extern GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis,
-+ GLXContext shareList, Bool direct );
-+
-+extern void glXDestroyContext( Display *dpy, GLXContext ctx );
-+
-+extern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable,
-+ GLXContext ctx);
-+
-+extern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
-+ unsigned long mask );
-+
-+extern void glXSwapBuffers( Display *dpy, GLXDrawable drawable );
-+
-+extern GLXPixmap glXCreateGLXPixmap( Display *dpy, XVisualInfo *visual,
-+ Pixmap pixmap );
-+
-+extern void glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap );
-+
-+extern Bool glXQueryExtension( Display *dpy, int *errorb, int *event );
-+
-+extern Bool glXQueryVersion( Display *dpy, int *maj, int *min );
-+
-+extern Bool glXIsDirect( Display *dpy, GLXContext ctx );
-+
-+extern int glXGetConfig( Display *dpy, XVisualInfo *visual,
-+ int attrib, int *value );
-+
-+extern GLXContext glXGetCurrentContext( void );
-+
-+extern GLXDrawable glXGetCurrentDrawable( void );
-+
-+extern void glXWaitGL( void );
-+
-+extern void glXWaitX( void );
-+
-+extern void glXUseXFont( Font font, int first, int count, int list );
-+
-+
-+
-+/* GLX 1.1 and later */
-+extern const char *glXQueryExtensionsString( Display *dpy, int screen );
-+
-+extern const char *glXQueryServerString( Display *dpy, int screen, int name );
-+
-+extern const char *glXGetClientString( Display *dpy, int name );
-+
-+
-+/* GLX 1.2 and later */
-+extern Display *glXGetCurrentDisplay( void );
-+
-+
-+/* GLX 1.3 and later */
-+extern GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen,
-+ const int *attribList, int *nitems );
-+
-+extern int glXGetFBConfigAttrib( Display *dpy, GLXFBConfig config,
-+ int attribute, int *value );
-+
-+extern GLXFBConfig *glXGetFBConfigs( Display *dpy, int screen,
-+ int *nelements );
-+
-+extern XVisualInfo *glXGetVisualFromFBConfig( Display *dpy,
-+ GLXFBConfig config );
-+
-+extern GLXWindow glXCreateWindow( Display *dpy, GLXFBConfig config,
-+ Window win, const int *attribList );
-+
-+extern void glXDestroyWindow( Display *dpy, GLXWindow window );
-+
-+extern GLXPixmap glXCreatePixmap( Display *dpy, GLXFBConfig config,
-+ Pixmap pixmap, const int *attribList );
-+
-+extern void glXDestroyPixmap( Display *dpy, GLXPixmap pixmap );
-+
-+extern GLXPbuffer glXCreatePbuffer( Display *dpy, GLXFBConfig config,
-+ const int *attribList );
-+
-+extern void glXDestroyPbuffer( Display *dpy, GLXPbuffer pbuf );
-+
-+extern void glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute,
-+ unsigned int *value );
-+
-+extern GLXContext glXCreateNewContext( Display *dpy, GLXFBConfig config,
-+ int renderType, GLXContext shareList,
-+ Bool direct );
-+
-+extern Bool glXMakeContextCurrent( Display *dpy, GLXDrawable draw,
-+ GLXDrawable read, GLXContext ctx );
-+
-+extern GLXDrawable glXGetCurrentReadDrawable( void );
-+
-+extern int glXQueryContext( Display *dpy, GLXContext ctx, int attribute,
-+ int *value );
-+
-+extern void glXSelectEvent( Display *dpy, GLXDrawable drawable,
-+ unsigned long mask );
-+
-+extern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable,
-+ unsigned long *mask );
-+
-+
-+/* GLX 1.4 and later */
-+extern void (*glXGetProcAddress(const GLubyte *procname))( void );
-+
-+
-+#ifndef GLX_GLXEXT_LEGACY
-+
-+#include <mesa_glxext.h>
-+
-+#else
-+
-+
-+
-+/*
-+ * ARB 2. GLX_ARB_get_proc_address
-+ */
-+#ifndef GLX_ARB_get_proc_address
-+#define GLX_ARB_get_proc_address 1
-+
-+typedef void (*__GLXextFuncPtr)(void);
-+extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *);
-+
-+#endif /* GLX_ARB_get_proc_address */
-+
-+
-+
-+#endif /* GLX_GLXEXT_LEGACY */
-+
-+
-+/**
-+ ** The following aren't in glxext.h yet.
-+ **/
-+
-+
-+/*
-+ * ???. GLX_NV_vertex_array_range
-+ */
-+#ifndef GLX_NV_vertex_array_range
-+#define GLX_NV_vertex_array_range
-+
-+extern void *glXAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
-+extern void glXFreeMemoryNV(GLvoid *pointer);
-+typedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
-+typedef void ( * PFNGLXFREEMEMORYNVPROC) (GLvoid *pointer);
-+
-+#endif /* GLX_NV_vertex_array_range */
-+
-+
-+/*
-+ * ???. GLX_MESA_allocate_memory
-+ */
-+#ifndef GLX_MESA_allocate_memory
-+#define GLX_MESA_allocate_memory 1
-+
-+extern void *glXAllocateMemoryMESA(Display *dpy, int scrn, size_t size, float readfreq, float writefreq, float priority);
-+extern void glXFreeMemoryMESA(Display *dpy, int scrn, void *pointer);
-+extern GLuint glXGetMemoryOffsetMESA(Display *dpy, int scrn, const void *pointer);
-+typedef void * ( * PFNGLXALLOCATEMEMORYMESAPROC) (Display *dpy, int scrn, size_t size, float readfreq, float writefreq, float priority);
-+typedef void ( * PFNGLXFREEMEMORYMESAPROC) (Display *dpy, int scrn, void *pointer);
-+typedef GLuint (* PFNGLXGETMEMORYOFFSETMESAPROC) (Display *dpy, int scrn, const void *pointer);
-+
-+#endif /* GLX_MESA_allocate_memory */
-+
-+
-+/*
-+ * ARB ?. GLX_ARB_render_texture
-+ * XXX This was never finalized!
-+ */
-+#ifndef GLX_ARB_render_texture
-+#define GLX_ARB_render_texture 1
-+
-+extern Bool glXBindTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer);
-+extern Bool glXReleaseTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer);
-+extern Bool glXDrawableAttribARB(Display *dpy, GLXDrawable draw, const int *attribList);
-+
-+#endif /* GLX_ARB_render_texture */
-+
-+
-+#ifndef GLX_ATI_render_texture
-+#define GLX_ATI_render_texture 1
-+
-+extern void glXBindTexImageATI(Display *dpy, GLXPbuffer pbuffer, int buffer);
-+extern void glXReleaseTexImageATI(Display *dpy, GLXPbuffer pbuffer, int buffer);
-+extern void glXDrawableAttribATI(Display *dpy, GLXDrawable draw, const int *attribList);
-+
-+#endif /* GLX_ATI_render_texture */
-+
-+
-+/*
-+ * Remove this when glxext.h is updated.
-+ */
-+#ifndef GLX_NV_float_buffer
-+#define GLX_NV_float_buffer 1
-+
-+#define GLX_FLOAT_COMPONENTS_NV 0x20B0
-+
-+#endif /* GLX_NV_float_buffer */
-+
-+
-+
-+/*
-+ * #?. GLX_MESA_swap_frame_usage
-+ */
-+#ifndef GLX_MESA_swap_frame_usage
-+#define GLX_MESA_swap_frame_usage 1
-+
-+extern int glXGetFrameUsageMESA(Display *dpy, GLXDrawable drawable, float *usage);
-+extern int glXBeginFrameTrackingMESA(Display *dpy, GLXDrawable drawable);
-+extern int glXEndFrameTrackingMESA(Display *dpy, GLXDrawable drawable);
-+extern int glXQueryFrameTrackingMESA(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage);
-+
-+typedef int (*PFNGLXGETFRAMEUSAGEMESAPROC) (Display *dpy, GLXDrawable drawable, float *usage);
-+typedef int (*PFNGLXBEGINFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable);
-+typedef int (*PFNGLXENDFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable);
-+typedef int (*PFNGLXQUERYFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage);
-+
-+#endif /* GLX_MESA_swap_frame_usage */
-+
-+
-+
-+/*
-+ * #?. GLX_MESA_swap_control
-+ */
-+#ifndef GLX_MESA_swap_control
-+#define GLX_MESA_swap_control 1
-+
-+extern int glXSwapIntervalMESA(unsigned int interval);
-+extern int glXGetSwapIntervalMESA(void);
-+
-+typedef int (*PFNGLXSWAPINTERVALMESAPROC)(unsigned int interval);
-+typedef int (*PFNGLXGETSWAPINTERVALMESAPROC)(void);
-+
-+#endif /* GLX_MESA_swap_control */
-+
-+
-+
-+/*
-+ * #?. GLX_EXT_texture_from_pixmap
-+ * XXX not finished?
-+ */
-+#ifndef GLX_EXT_texture_from_pixmap
-+#define GLX_EXT_texture_from_pixmap 1
-+
-+#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0
-+#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1
-+#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2
-+#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3
-+#define GLX_Y_INVERTED_EXT 0x20D4
-+
-+#define GLX_TEXTURE_FORMAT_EXT 0x20D5
-+#define GLX_TEXTURE_TARGET_EXT 0x20D6
-+#define GLX_MIPMAP_TEXTURE_EXT 0x20D7
-+
-+#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8
-+#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9
-+#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA
-+
-+#define GLX_TEXTURE_1D_BIT_EXT 0x00000001
-+#define GLX_TEXTURE_2D_BIT_EXT 0x00000002
-+#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004
-+
-+#define GLX_TEXTURE_1D_EXT 0x20DB
-+#define GLX_TEXTURE_2D_EXT 0x20DC
-+#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD
-+
-+#define GLX_FRONT_LEFT_EXT 0x20DE
-+#define GLX_FRONT_RIGHT_EXT 0x20DF
-+#define GLX_BACK_LEFT_EXT 0x20E0
-+#define GLX_BACK_RIGHT_EXT 0x20E1
-+#define GLX_FRONT_EXT GLX_FRONT_LEFT_EXT
-+#define GLX_BACK_EXT GLX_BACK_LEFT_EXT
-+#define GLX_AUX0_EXT 0x20E2
-+#define GLX_AUX1_EXT 0x20E3
-+#define GLX_AUX2_EXT 0x20E4
-+#define GLX_AUX3_EXT 0x20E5
-+#define GLX_AUX4_EXT 0x20E6
-+#define GLX_AUX5_EXT 0x20E7
-+#define GLX_AUX6_EXT 0x20E8
-+#define GLX_AUX7_EXT 0x20E9
-+#define GLX_AUX8_EXT 0x20EA
-+#define GLX_AUX9_EXT 0x20EB
-+
-+extern void glXBindTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list);
-+extern void glXReleaseTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer);
-+
-+#endif /* GLX_EXT_texture_from_pixmap */
-+
-+
-+
-+
-+/*** Should these go here, or in another header? */
-+/*
-+** GLX Events
-+*/
-+typedef struct {
-+ int event_type; /* GLX_DAMAGED or GLX_SAVED */
-+ int draw_type; /* GLX_WINDOW or GLX_PBUFFER */
-+ unsigned long serial; /* # of last request processed by server */
-+ Bool send_event; /* true if this came for SendEvent request */
-+ Display *display; /* display the event was read from */
-+ GLXDrawable drawable; /* XID of Drawable */
-+ unsigned int buffer_mask; /* mask indicating which buffers are affected */
-+ unsigned int aux_buffer; /* which aux buffer was affected */
-+ int x, y;
-+ int width, height;
-+ int count; /* if nonzero, at least this many more */
-+} GLXPbufferClobberEvent;
-+
-+typedef union __GLXEvent {
-+ GLXPbufferClobberEvent glxpbufferclobber;
-+ long pad[24];
-+} GLXEvent;
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif
-Index: qemu-0.12.4/target-i386/mesa_glxext.h
-===================================================================
---- /dev/null
-+++ qemu-0.12.4/target-i386/mesa_glxext.h
-@@ -0,0 +1,785 @@
-+#ifndef __glxext_h_
-+#define __glxext_h_
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+/*
-+** Copyright (c) 2007 The Khronos Group Inc.
-+**
-+** Permission is hereby granted, free of charge, to any person obtaining a
-+** copy of this software and/or associated documentation files (the
-+** "Materials"), to deal in the Materials without restriction, including
-+** without limitation the rights to use, copy, modify, merge, publish,
-+** distribute, sublicense, and/or sell copies of the Materials, and to
-+** permit persons to whom the Materials are 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 Materials.
-+**
-+** THE MATERIALS ARE 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-+*/
-+
-+#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
-+#define WIN32_LEAN_AND_MEAN 1
-+#include <windows.h>
-+#endif
-+
-+#ifndef APIENTRY
-+#define APIENTRY
-+#endif
-+#ifndef APIENTRYP
-+#define APIENTRYP APIENTRY *
-+#endif
-+#ifndef GLAPI
-+#define GLAPI extern
-+#endif
-+
-+/*************************************************************/
-+
-+/* Header file version number, required by OpenGL ABI for Linux */
-+/* glxext.h last updated 2007/04/21 */
-+/* Current version at http://www.opengl.org/registry/ */
-+#define GLX_GLXEXT_VERSION 19
-+
-+#ifndef GLX_VERSION_1_3
-+#define GLX_WINDOW_BIT 0x00000001
-+#define GLX_PIXMAP_BIT 0x00000002
-+#define GLX_PBUFFER_BIT 0x00000004
-+#define GLX_RGBA_BIT 0x00000001
-+#define GLX_COLOR_INDEX_BIT 0x00000002
-+#define GLX_PBUFFER_CLOBBER_MASK 0x08000000
-+#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001
-+#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002
-+#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004
-+#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008
-+#define GLX_AUX_BUFFERS_BIT 0x00000010
-+#define GLX_DEPTH_BUFFER_BIT 0x00000020
-+#define GLX_STENCIL_BUFFER_BIT 0x00000040
-+#define GLX_ACCUM_BUFFER_BIT 0x00000080
-+#define GLX_CONFIG_CAVEAT 0x20
-+#define GLX_X_VISUAL_TYPE 0x22
-+#define GLX_TRANSPARENT_TYPE 0x23
-+#define GLX_TRANSPARENT_INDEX_VALUE 0x24
-+#define GLX_TRANSPARENT_RED_VALUE 0x25
-+#define GLX_TRANSPARENT_GREEN_VALUE 0x26
-+#define GLX_TRANSPARENT_BLUE_VALUE 0x27
-+#define GLX_TRANSPARENT_ALPHA_VALUE 0x28
-+#define GLX_DONT_CARE 0xFFFFFFFF
-+#define GLX_NONE 0x8000
-+#define GLX_SLOW_CONFIG 0x8001
-+#define GLX_TRUE_COLOR 0x8002
-+#define GLX_DIRECT_COLOR 0x8003
-+#define GLX_PSEUDO_COLOR 0x8004
-+#define GLX_STATIC_COLOR 0x8005
-+#define GLX_GRAY_SCALE 0x8006
-+#define GLX_STATIC_GRAY 0x8007
-+#define GLX_TRANSPARENT_RGB 0x8008
-+#define GLX_TRANSPARENT_INDEX 0x8009
-+#define GLX_VISUAL_ID 0x800B
-+#define GLX_SCREEN 0x800C
-+#define GLX_NON_CONFORMANT_CONFIG 0x800D
-+#define GLX_DRAWABLE_TYPE 0x8010
-+#define GLX_RENDER_TYPE 0x8011
-+#define GLX_X_RENDERABLE 0x8012
-+#define GLX_FBCONFIG_ID 0x8013
-+#define GLX_RGBA_TYPE 0x8014
-+#define GLX_COLOR_INDEX_TYPE 0x8015
-+#define GLX_MAX_PBUFFER_WIDTH 0x8016
-+#define GLX_MAX_PBUFFER_HEIGHT 0x8017
-+#define GLX_MAX_PBUFFER_PIXELS 0x8018
-+#define GLX_PRESERVED_CONTENTS 0x801B
-+#define GLX_LARGEST_PBUFFER 0x801C
-+#define GLX_WIDTH 0x801D
-+#define GLX_HEIGHT 0x801E
-+#define GLX_EVENT_MASK 0x801F
-+#define GLX_DAMAGED 0x8020
-+#define GLX_SAVED 0x8021
-+#define GLX_WINDOW 0x8022
-+#define GLX_PBUFFER 0x8023
-+#define GLX_PBUFFER_HEIGHT 0x8040
-+#define GLX_PBUFFER_WIDTH 0x8041
-+#endif
-+
-+#ifndef GLX_VERSION_1_4
-+#define GLX_SAMPLE_BUFFERS 100000
-+#define GLX_SAMPLES 100001
-+#endif
-+
-+#ifndef GLX_ARB_get_proc_address
-+#endif
-+
-+#ifndef GLX_ARB_multisample
-+#define GLX_SAMPLE_BUFFERS_ARB 100000
-+#define GLX_SAMPLES_ARB 100001
-+#endif
-+
-+#ifndef GLX_ARB_fbconfig_float
-+#define GLX_RGBA_FLOAT_TYPE_ARB 0x20B9
-+#define GLX_RGBA_FLOAT_BIT_ARB 0x00000004
-+#endif
-+
-+#ifndef GLX_SGIS_multisample
-+#define GLX_SAMPLE_BUFFERS_SGIS 100000
-+#define GLX_SAMPLES_SGIS 100001
-+#endif
-+
-+#ifndef GLX_EXT_visual_info
-+#define GLX_X_VISUAL_TYPE_EXT 0x22
-+#define GLX_TRANSPARENT_TYPE_EXT 0x23
-+#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24
-+#define GLX_TRANSPARENT_RED_VALUE_EXT 0x25
-+#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26
-+#define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27
-+#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28
-+#define GLX_NONE_EXT 0x8000
-+#define GLX_TRUE_COLOR_EXT 0x8002
-+#define GLX_DIRECT_COLOR_EXT 0x8003
-+#define GLX_PSEUDO_COLOR_EXT 0x8004
-+#define GLX_STATIC_COLOR_EXT 0x8005
-+#define GLX_GRAY_SCALE_EXT 0x8006
-+#define GLX_STATIC_GRAY_EXT 0x8007
-+#define GLX_TRANSPARENT_RGB_EXT 0x8008
-+#define GLX_TRANSPARENT_INDEX_EXT 0x8009
-+#endif
-+
-+#ifndef GLX_SGI_swap_control
-+#endif
-+
-+#ifndef GLX_SGI_video_sync
-+#endif
-+
-+#ifndef GLX_SGI_make_current_read
-+#endif
-+
-+#ifndef GLX_SGIX_video_source
-+#endif
-+
-+#ifndef GLX_EXT_visual_rating
-+#define GLX_VISUAL_CAVEAT_EXT 0x20
-+#define GLX_SLOW_VISUAL_EXT 0x8001
-+#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D
-+/* reuse GLX_NONE_EXT */
-+#endif
-+
-+#ifndef GLX_EXT_import_context
-+#define GLX_SHARE_CONTEXT_EXT 0x800A
-+#define GLX_VISUAL_ID_EXT 0x800B
-+#define GLX_SCREEN_EXT 0x800C
-+#endif
-+
-+#ifndef GLX_SGIX_fbconfig
-+#define GLX_WINDOW_BIT_SGIX 0x00000001
-+#define GLX_PIXMAP_BIT_SGIX 0x00000002
-+#define GLX_RGBA_BIT_SGIX 0x00000001
-+#define GLX_COLOR_INDEX_BIT_SGIX 0x00000002
-+#define GLX_DRAWABLE_TYPE_SGIX 0x8010
-+#define GLX_RENDER_TYPE_SGIX 0x8011
-+#define GLX_X_RENDERABLE_SGIX 0x8012
-+#define GLX_FBCONFIG_ID_SGIX 0x8013
-+#define GLX_RGBA_TYPE_SGIX 0x8014
-+#define GLX_COLOR_INDEX_TYPE_SGIX 0x8015
-+/* reuse GLX_SCREEN_EXT */
-+#endif
-+
-+#ifndef GLX_SGIX_pbuffer
-+#define GLX_PBUFFER_BIT_SGIX 0x00000004
-+#define GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000
-+#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001
-+#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002
-+#define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004
-+#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008
-+#define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010
-+#define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020
-+#define GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040
-+#define GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080
-+#define GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100
-+#define GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016
-+#define GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017
-+#define GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018
-+#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019
-+#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A
-+#define GLX_PRESERVED_CONTENTS_SGIX 0x801B
-+#define GLX_LARGEST_PBUFFER_SGIX 0x801C
-+#define GLX_WIDTH_SGIX 0x801D
-+#define GLX_HEIGHT_SGIX 0x801E
-+#define GLX_EVENT_MASK_SGIX 0x801F
-+#define GLX_DAMAGED_SGIX 0x8020
-+#define GLX_SAVED_SGIX 0x8021
-+#define GLX_WINDOW_SGIX 0x8022
-+#define GLX_PBUFFER_SGIX 0x8023
-+#endif
-+
-+#ifndef GLX_SGI_cushion
-+#endif
-+
-+#ifndef GLX_SGIX_video_resize
-+#define GLX_SYNC_FRAME_SGIX 0x00000000
-+#define GLX_SYNC_SWAP_SGIX 0x00000001
-+#endif
-+
-+#ifndef GLX_SGIX_dmbuffer
-+#define GLX_DIGITAL_MEDIA_PBUFFER_SGIX 0x8024
-+#endif
-+
-+#ifndef GLX_SGIX_swap_group
-+#endif
-+
-+#ifndef GLX_SGIX_swap_barrier
-+#endif
-+
-+#ifndef GLX_SGIS_blended_overlay
-+#define GLX_BLENDED_RGBA_SGIS 0x8025
-+#endif
-+
-+#ifndef GLX_SGIS_shared_multisample
-+#define GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026
-+#define GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027
-+#endif
-+
-+#ifndef GLX_SUN_get_transparent_index
-+#endif
-+
-+#ifndef GLX_3DFX_multisample
-+#define GLX_SAMPLE_BUFFERS_3DFX 0x8050
-+#define GLX_SAMPLES_3DFX 0x8051
-+#endif
-+
-+#ifndef GLX_MESA_copy_sub_buffer
-+#endif
-+
-+#ifndef GLX_MESA_pixmap_colormap
-+#endif
-+
-+#ifndef GLX_MESA_release_buffers
-+#endif
-+
-+#ifndef GLX_MESA_set_3dfx_mode
-+#define GLX_3DFX_WINDOW_MODE_MESA 0x1
-+#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2
-+#endif
-+
-+#ifndef GLX_SGIX_visual_select_group
-+#define GLX_VISUAL_SELECT_GROUP_SGIX 0x8028
-+#endif
-+
-+#ifndef GLX_OML_swap_method
-+#define GLX_SWAP_METHOD_OML 0x8060
-+#define GLX_SWAP_EXCHANGE_OML 0x8061
-+#define GLX_SWAP_COPY_OML 0x8062
-+#define GLX_SWAP_UNDEFINED_OML 0x8063
-+#endif
-+
-+#ifndef GLX_OML_sync_control
-+#endif
-+
-+#ifndef GLX_NV_float_buffer
-+#define GLX_FLOAT_COMPONENTS_NV 0x20B0
-+#endif
-+
-+#ifndef GLX_SGIX_hyperpipe
-+#define GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX 80
-+#define GLX_BAD_HYPERPIPE_CONFIG_SGIX 91
-+#define GLX_BAD_HYPERPIPE_SGIX 92
-+#define GLX_HYPERPIPE_DISPLAY_PIPE_SGIX 0x00000001
-+#define GLX_HYPERPIPE_RENDER_PIPE_SGIX 0x00000002
-+#define GLX_PIPE_RECT_SGIX 0x00000001
-+#define GLX_PIPE_RECT_LIMITS_SGIX 0x00000002
-+#define GLX_HYPERPIPE_STEREO_SGIX 0x00000003
-+#define GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX 0x00000004
-+#define GLX_HYPERPIPE_ID_SGIX 0x8030
-+#endif
-+
-+#ifndef GLX_MESA_agp_offset
-+#endif
-+
-+#ifndef GLX_EXT_fbconfig_packed_float
-+#define GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1
-+#define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008
-+#endif
-+
-+#ifndef GLX_EXT_framebuffer_sRGB
-+#define GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2
-+#endif
-+
-+#ifndef GLX_EXT_texture_from_pixmap
-+#define GLX_TEXTURE_1D_BIT_EXT 0x00000001
-+#define GLX_TEXTURE_2D_BIT_EXT 0x00000002
-+#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004
-+#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0
-+#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1
-+#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2
-+#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3
-+#define GLX_Y_INVERTED_EXT 0x20D4
-+#define GLX_TEXTURE_FORMAT_EXT 0x20D5
-+#define GLX_TEXTURE_TARGET_EXT 0x20D6
-+#define GLX_MIPMAP_TEXTURE_EXT 0x20D7
-+#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8
-+#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9
-+#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA
-+#define GLX_TEXTURE_1D_EXT 0x20DB
-+#define GLX_TEXTURE_2D_EXT 0x20DC
-+#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD
-+#define GLX_FRONT_LEFT_EXT 0x20DE
-+#define GLX_FRONT_RIGHT_EXT 0x20DF
-+#define GLX_BACK_LEFT_EXT 0x20E0
-+#define GLX_BACK_RIGHT_EXT 0x20E1
-+#define GLX_FRONT_EXT GLX_FRONT_LEFT_EXT
-+#define GLX_BACK_EXT GLX_BACK_LEFT_EXT
-+#define GLX_AUX0_EXT 0x20E2
-+#define GLX_AUX1_EXT 0x20E3
-+#define GLX_AUX2_EXT 0x20E4
-+#define GLX_AUX3_EXT 0x20E5
-+#define GLX_AUX4_EXT 0x20E6
-+#define GLX_AUX5_EXT 0x20E7
-+#define GLX_AUX6_EXT 0x20E8
-+#define GLX_AUX7_EXT 0x20E9
-+#define GLX_AUX8_EXT 0x20EA
-+#define GLX_AUX9_EXT 0x20EB
-+#endif
-+
-+
-+/*************************************************************/
-+
-+#ifndef GLX_ARB_get_proc_address
-+typedef void (*__GLXextFuncPtr)(void);
-+#endif
-+
-+#ifndef GLX_SGIX_video_source
-+typedef XID GLXVideoSourceSGIX;
-+#endif
-+
-+#ifndef GLX_SGIX_fbconfig
-+typedef XID GLXFBConfigIDSGIX;
-+typedef struct __GLXFBConfigRec *GLXFBConfigSGIX;
-+#endif
-+
-+#ifndef GLX_SGIX_pbuffer
-+typedef XID GLXPbufferSGIX;
-+typedef struct {
-+ int type;
-+ unsigned long serial; /* # of last request processed by server */
-+ Bool send_event; /* true if this came for SendEvent request */
-+ Display *display; /* display the event was read from */
-+ GLXDrawable drawable; /* i.d. of Drawable */
-+ int event_type; /* GLX_DAMAGED_SGIX or GLX_SAVED_SGIX */
-+ int draw_type; /* GLX_WINDOW_SGIX or GLX_PBUFFER_SGIX */
-+ unsigned int mask; /* mask indicating which buffers are affected*/
-+ int x, y;
-+ int width, height;
-+ int count; /* if nonzero, at least this many more */
-+} GLXBufferClobberEventSGIX;
-+#endif
-+
-+#ifndef GLEXT_64_TYPES_DEFINED
-+/* This code block is duplicated in glxext.h, so must be protected */
-+#define GLEXT_64_TYPES_DEFINED
-+/* Define int32_t, int64_t, and uint64_t types for UST/MSC */
-+/* (as used in the GLX_OML_sync_control extension). */
-+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-+#include <inttypes.h>
-+#elif defined(__sun__) || defined(__digital__)
-+#include <inttypes.h>
-+#if defined(__STDC__)
-+#if defined(__arch64__)
-+typedef long int int64_t;
-+typedef unsigned long int uint64_t;
-+#else
-+typedef long long int int64_t;
-+typedef unsigned long long int uint64_t;
-+#endif /* __arch64__ */
-+#endif /* __STDC__ */
-+#elif defined( __VMS )
-+#include <inttypes.h>
-+#elif defined(__SCO__) || defined(__USLC__)
-+#include <stdint.h>
-+#elif defined(__UNIXOS2__) || defined(__SOL64__)
-+typedef long int int32_t;
-+typedef long long int int64_t;
-+typedef unsigned long long int uint64_t;
-+#elif defined(_WIN32) && defined(__GNUC__)
-+#include <stdint.h>
-+#elif defined(_WIN32)
-+typedef __int32 int32_t;
-+typedef __int64 int64_t;
-+typedef unsigned __int64 uint64_t;
-+#else
-+#include <inttypes.h> /* Fallback option */
-+#endif
-+#endif
-+
-+#ifndef GLX_VERSION_1_3
-+#define GLX_VERSION_1_3 1
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern GLXFBConfig * glXGetFBConfigs (Display *, int, int *);
-+extern GLXFBConfig * glXChooseFBConfig (Display *, int, const int *, int *);
-+extern int glXGetFBConfigAttrib (Display *, GLXFBConfig, int, int *);
-+extern XVisualInfo * glXGetVisualFromFBConfig (Display *, GLXFBConfig);
-+extern GLXWindow glXCreateWindow (Display *, GLXFBConfig, Window, const int *);
-+extern void glXDestroyWindow (Display *, GLXWindow);
-+extern GLXPixmap glXCreatePixmap (Display *, GLXFBConfig, Pixmap, const int *);
-+extern void glXDestroyPixmap (Display *, GLXPixmap);
-+extern GLXPbuffer glXCreatePbuffer (Display *, GLXFBConfig, const int *);
-+extern void glXDestroyPbuffer (Display *, GLXPbuffer);
-+extern void glXQueryDrawable (Display *, GLXDrawable, int, unsigned int *);
-+extern GLXContext glXCreateNewContext (Display *, GLXFBConfig, int, GLXContext, Bool);
-+extern Bool glXMakeContextCurrent (Display *, GLXDrawable, GLXDrawable, GLXContext);
-+extern GLXDrawable glXGetCurrentReadDrawable (void);
-+extern Display * glXGetCurrentDisplay (void);
-+extern int glXQueryContext (Display *, GLXContext, int, int *);
-+extern void glXSelectEvent (Display *, GLXDrawable, unsigned long);
-+extern void glXGetSelectedEvent (Display *, GLXDrawable, unsigned long *);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef GLXFBConfig * ( * PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements);
-+typedef GLXFBConfig * ( * PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements);
-+typedef int ( * PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value);
-+typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config);
-+typedef GLXWindow ( * PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list);
-+typedef void ( * PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win);
-+typedef GLXPixmap ( * PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list);
-+typedef void ( * PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap);
-+typedef GLXPbuffer ( * PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list);
-+typedef void ( * PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf);
-+typedef void ( * PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value);
-+typedef GLXContext ( * PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
-+typedef Bool ( * PFNGLXMAKECONTEXTCURRENTPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
-+typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLEPROC) (void);
-+typedef Display * ( * PFNGLXGETCURRENTDISPLAYPROC) (void);
-+typedef int ( * PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value);
-+typedef void ( * PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask);
-+typedef void ( * PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask);
-+#endif
-+
-+#ifndef GLX_VERSION_1_4
-+#define GLX_VERSION_1_4 1
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern __GLXextFuncPtr glXGetProcAddress (const GLubyte *);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName);
-+#endif
-+
-+#ifndef GLX_ARB_get_proc_address
-+#define GLX_ARB_get_proc_address 1
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSARBPROC) (const GLubyte *procName);
-+#endif
-+
-+#ifndef GLX_ARB_multisample
-+#define GLX_ARB_multisample 1
-+#endif
-+
-+#ifndef GLX_ARB_fbconfig_float
-+#define GLX_ARB_fbconfig_float 1
-+#endif
-+
-+#ifndef GLX_SGIS_multisample
-+#define GLX_SGIS_multisample 1
-+#endif
-+
-+#ifndef GLX_EXT_visual_info
-+#define GLX_EXT_visual_info 1
-+#endif
-+
-+#ifndef GLX_SGI_swap_control
-+#define GLX_SGI_swap_control 1
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern int glXSwapIntervalSGI (int);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef int ( * PFNGLXSWAPINTERVALSGIPROC) (int interval);
-+#endif
-+
-+#ifndef GLX_SGI_video_sync
-+#define GLX_SGI_video_sync 1
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern int glXGetVideoSyncSGI (unsigned int *);
-+extern int glXWaitVideoSyncSGI (int, int, unsigned int *);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef int ( * PFNGLXGETVIDEOSYNCSGIPROC) (unsigned int *count);
-+typedef int ( * PFNGLXWAITVIDEOSYNCSGIPROC) (int divisor, int remainder, unsigned int *count);
-+#endif
-+
-+#ifndef GLX_SGI_make_current_read
-+#define GLX_SGI_make_current_read 1
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern Bool glXMakeCurrentReadSGI (Display *, GLXDrawable, GLXDrawable, GLXContext);
-+extern GLXDrawable glXGetCurrentReadDrawableSGI (void);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef Bool ( * PFNGLXMAKECURRENTREADSGIPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
-+typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLESGIPROC) (void);
-+#endif
-+
-+#ifndef GLX_SGIX_video_source
-+#define GLX_SGIX_video_source 1
-+#ifdef _VL_H
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern GLXVideoSourceSGIX glXCreateGLXVideoSourceSGIX (Display *, int, VLServer, VLPath, int, VLNode);
-+extern void glXDestroyGLXVideoSourceSGIX (Display *, GLXVideoSourceSGIX);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef GLXVideoSourceSGIX ( * PFNGLXCREATEGLXVIDEOSOURCESGIXPROC) (Display *display, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode);
-+typedef void ( * PFNGLXDESTROYGLXVIDEOSOURCESGIXPROC) (Display *dpy, GLXVideoSourceSGIX glxvideosource);
-+#endif /* _VL_H */
-+#endif
-+
-+#ifndef GLX_EXT_visual_rating
-+#define GLX_EXT_visual_rating 1
-+#endif
-+
-+#ifndef GLX_EXT_import_context
-+#define GLX_EXT_import_context 1
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern Display * glXGetCurrentDisplayEXT (void);
-+extern int glXQueryContextInfoEXT (Display *, GLXContext, int, int *);
-+extern GLXContextID glXGetContextIDEXT (const GLXContext);
-+extern GLXContext glXImportContextEXT (Display *, GLXContextID);
-+extern void glXFreeContextEXT (Display *, GLXContext);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef Display * ( * PFNGLXGETCURRENTDISPLAYEXTPROC) (void);
-+typedef int ( * PFNGLXQUERYCONTEXTINFOEXTPROC) (Display *dpy, GLXContext context, int attribute, int *value);
-+typedef GLXContextID ( * PFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context);
-+typedef GLXContext ( * PFNGLXIMPORTCONTEXTEXTPROC) (Display *dpy, GLXContextID contextID);
-+typedef void ( * PFNGLXFREECONTEXTEXTPROC) (Display *dpy, GLXContext context);
-+#endif
-+
-+#ifndef GLX_SGIX_fbconfig
-+#define GLX_SGIX_fbconfig 1
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern int glXGetFBConfigAttribSGIX (Display *, GLXFBConfigSGIX, int, int *);
-+extern GLXFBConfigSGIX * glXChooseFBConfigSGIX (Display *, int, int *, int *);
-+extern GLXPixmap glXCreateGLXPixmapWithConfigSGIX (Display *, GLXFBConfigSGIX, Pixmap);
-+extern GLXContext glXCreateContextWithConfigSGIX (Display *, GLXFBConfigSGIX, int, GLXContext, Bool);
-+extern XVisualInfo * glXGetVisualFromFBConfigSGIX (Display *, GLXFBConfigSGIX);
-+extern GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX (Display *, XVisualInfo *);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef int ( * PFNGLXGETFBCONFIGATTRIBSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int attribute, int *value);
-+typedef GLXFBConfigSGIX * ( * PFNGLXCHOOSEFBCONFIGSGIXPROC) (Display *dpy, int screen, int *attrib_list, int *nelements);
-+typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, Pixmap pixmap);
-+typedef GLXContext ( * PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct);
-+typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config);
-+typedef GLXFBConfigSGIX ( * PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) (Display *dpy, XVisualInfo *vis);
-+#endif
-+
-+#ifndef GLX_SGIX_pbuffer
-+#define GLX_SGIX_pbuffer 1
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern GLXPbufferSGIX glXCreateGLXPbufferSGIX (Display *, GLXFBConfigSGIX, unsigned int, unsigned int, int *);
-+extern void glXDestroyGLXPbufferSGIX (Display *, GLXPbufferSGIX);
-+extern int glXQueryGLXPbufferSGIX (Display *, GLXPbufferSGIX, int, unsigned int *);
-+extern void glXSelectEventSGIX (Display *, GLXDrawable, unsigned long);
-+extern void glXGetSelectedEventSGIX (Display *, GLXDrawable, unsigned long *);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef GLXPbufferSGIX ( * PFNGLXCREATEGLXPBUFFERSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list);
-+typedef void ( * PFNGLXDESTROYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf);
-+typedef int ( * PFNGLXQUERYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int *value);
-+typedef void ( * PFNGLXSELECTEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long mask);
-+typedef void ( * PFNGLXGETSELECTEDEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long *mask);
-+#endif
-+
-+#ifndef GLX_SGI_cushion
-+#define GLX_SGI_cushion 1
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern void glXCushionSGI (Display *, Window, float);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef void ( * PFNGLXCUSHIONSGIPROC) (Display *dpy, Window window, float cushion);
-+#endif
-+
-+#ifndef GLX_SGIX_video_resize
-+#define GLX_SGIX_video_resize 1
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern int glXBindChannelToWindowSGIX (Display *, int, int, Window);
-+extern int glXChannelRectSGIX (Display *, int, int, int, int, int, int);
-+extern int glXQueryChannelRectSGIX (Display *, int, int, int *, int *, int *, int *);
-+extern int glXQueryChannelDeltasSGIX (Display *, int, int, int *, int *, int *, int *);
-+extern int glXChannelRectSyncSGIX (Display *, int, int, GLenum);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef int ( * PFNGLXBINDCHANNELTOWINDOWSGIXPROC) (Display *display, int screen, int channel, Window window);
-+typedef int ( * PFNGLXCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int x, int y, int w, int h);
-+typedef int ( * PFNGLXQUERYCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int *dx, int *dy, int *dw, int *dh);
-+typedef int ( * PFNGLXQUERYCHANNELDELTASSGIXPROC) (Display *display, int screen, int channel, int *x, int *y, int *w, int *h);
-+typedef int ( * PFNGLXCHANNELRECTSYNCSGIXPROC) (Display *display, int screen, int channel, GLenum synctype);
-+#endif
-+
-+#ifndef GLX_SGIX_dmbuffer
-+#define GLX_SGIX_dmbuffer 1
-+#ifdef _DM_BUFFER_H_
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern Bool glXAssociateDMPbufferSGIX (Display *, GLXPbufferSGIX, DMparams *, DMbuffer);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef Bool ( * PFNGLXASSOCIATEDMPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuffer, DMparams *params, DMbuffer dmbuffer);
-+#endif /* _DM_BUFFER_H_ */
-+#endif
-+
-+#ifndef GLX_SGIX_swap_group
-+#define GLX_SGIX_swap_group 1
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern void glXJoinSwapGroupSGIX (Display *, GLXDrawable, GLXDrawable);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef void ( * PFNGLXJOINSWAPGROUPSGIXPROC) (Display *dpy, GLXDrawable drawable, GLXDrawable member);
-+#endif
-+
-+#ifndef GLX_SGIX_swap_barrier
-+#define GLX_SGIX_swap_barrier 1
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern void glXBindSwapBarrierSGIX (Display *, GLXDrawable, int);
-+extern Bool glXQueryMaxSwapBarriersSGIX (Display *, int, int *);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef void ( * PFNGLXBINDSWAPBARRIERSGIXPROC) (Display *dpy, GLXDrawable drawable, int barrier);
-+typedef Bool ( * PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) (Display *dpy, int screen, int *max);
-+#endif
-+
-+#ifndef GLX_SUN_get_transparent_index
-+#define GLX_SUN_get_transparent_index 1
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern Status glXGetTransparentIndexSUN (Display *, Window, Window, long *);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef Status ( * PFNGLXGETTRANSPARENTINDEXSUNPROC) (Display *dpy, Window overlay, Window underlay, long *pTransparentIndex);
-+#endif
-+
-+#ifndef GLX_MESA_copy_sub_buffer
-+#define GLX_MESA_copy_sub_buffer 1
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern void glXCopySubBufferMESA (Display *, GLXDrawable, int, int, int, int);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef void ( * PFNGLXCOPYSUBBUFFERMESAPROC) (Display *dpy, GLXDrawable drawable, int x, int y, int width, int height);
-+#endif
-+
-+#ifndef GLX_MESA_pixmap_colormap
-+#define GLX_MESA_pixmap_colormap 1
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern GLXPixmap glXCreateGLXPixmapMESA (Display *, XVisualInfo *, Pixmap, Colormap);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPMESAPROC) (Display *dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap);
-+#endif
-+
-+#ifndef GLX_MESA_release_buffers
-+#define GLX_MESA_release_buffers 1
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern Bool glXReleaseBuffersMESA (Display *, GLXDrawable);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef Bool ( * PFNGLXRELEASEBUFFERSMESAPROC) (Display *dpy, GLXDrawable drawable);
-+#endif
-+
-+#ifndef GLX_MESA_set_3dfx_mode
-+#define GLX_MESA_set_3dfx_mode 1
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern Bool glXSet3DfxModeMESA (int);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef Bool ( * PFNGLXSET3DFXMODEMESAPROC) (int mode);
-+#endif
-+
-+#ifndef GLX_SGIX_visual_select_group
-+#define GLX_SGIX_visual_select_group 1
-+#endif
-+
-+#ifndef GLX_OML_swap_method
-+#define GLX_OML_swap_method 1
-+#endif
-+
-+#ifndef GLX_OML_sync_control
-+#define GLX_OML_sync_control 1
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern Bool glXGetSyncValuesOML (Display *, GLXDrawable, int64_t *, int64_t *, int64_t *);
-+extern Bool glXGetMscRateOML (Display *, GLXDrawable, int32_t *, int32_t *);
-+extern int64_t glXSwapBuffersMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t);
-+extern Bool glXWaitForMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t, int64_t *, int64_t *, int64_t *);
-+extern Bool glXWaitForSbcOML (Display *, GLXDrawable, int64_t, int64_t *, int64_t *, int64_t *);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef Bool ( * PFNGLXGETSYNCVALUESOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t *ust, int64_t *msc, int64_t *sbc);
-+typedef Bool ( * PFNGLXGETMSCRATEOMLPROC) (Display *dpy, GLXDrawable drawable, int32_t *numerator, int32_t *denominator);
-+typedef int64_t ( * PFNGLXSWAPBUFFERSMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder);
-+typedef Bool ( * PFNGLXWAITFORMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc);
-+typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_sbc, int64_t *ust, int64_t *msc, int64_t *sbc);
-+#endif
-+
-+#ifndef GLX_NV_float_buffer
-+#define GLX_NV_float_buffer 1
-+#endif
-+
-+#ifndef GLX_SGIX_hyperpipe
-+#define GLX_SGIX_hyperpipe 1
-+
-+typedef struct {
-+ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
-+ int networkId;
-+} GLXHyperpipeNetworkSGIX;
-+
-+typedef struct {
-+ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
-+ int channel;
-+ unsigned int
-+ participationType;
-+ int timeSlice;
-+} GLXHyperpipeConfigSGIX;
-+
-+typedef struct {
-+ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
-+ int srcXOrigin, srcYOrigin, srcWidth, srcHeight;
-+ int destXOrigin, destYOrigin, destWidth, destHeight;
-+} GLXPipeRect;
-+
-+typedef struct {
-+ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
-+ int XOrigin, YOrigin, maxHeight, maxWidth;
-+} GLXPipeRectLimits;
-+
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern GLXHyperpipeNetworkSGIX * glXQueryHyperpipeNetworkSGIX (Display *, int *);
-+extern int glXHyperpipeConfigSGIX (Display *, int, int, GLXHyperpipeConfigSGIX *, int *);
-+extern GLXHyperpipeConfigSGIX * glXQueryHyperpipeConfigSGIX (Display *, int, int *);
-+extern int glXDestroyHyperpipeConfigSGIX (Display *, int);
-+extern int glXBindHyperpipeSGIX (Display *, int);
-+extern int glXQueryHyperpipeBestAttribSGIX (Display *, int, int, int, void *, void *);
-+extern int glXHyperpipeAttribSGIX (Display *, int, int, int, void *);
-+extern int glXQueryHyperpipeAttribSGIX (Display *, int, int, int, void *);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef GLXHyperpipeNetworkSGIX * ( * PFNGLXQUERYHYPERPIPENETWORKSGIXPROC) (Display *dpy, int *npipes);
-+typedef int ( * PFNGLXHYPERPIPECONFIGSGIXPROC) (Display *dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX *cfg, int *hpId);
-+typedef GLXHyperpipeConfigSGIX * ( * PFNGLXQUERYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId, int *npipes);
-+typedef int ( * PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId);
-+typedef int ( * PFNGLXBINDHYPERPIPESGIXPROC) (Display *dpy, int hpId);
-+typedef int ( * PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList, void *returnAttribList);
-+typedef int ( * PFNGLXHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList);
-+typedef int ( * PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *returnAttribList);
-+#endif
-+
-+#ifndef GLX_MESA_agp_offset
-+#define GLX_MESA_agp_offset 1
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern unsigned int glXGetAGPOffsetMESA (const void *);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef unsigned int ( * PFNGLXGETAGPOFFSETMESAPROC) (const void *pointer);
-+#endif
-+
-+#ifndef GLX_EXT_fbconfig_packed_float
-+#define GLX_EXT_fbconfig_packed_float 1
-+#endif
-+
-+#ifndef GLX_EXT_framebuffer_sRGB
-+#define GLX_EXT_framebuffer_sRGB 1
-+#endif
-+
-+#ifndef GLX_EXT_texture_from_pixmap
-+#define GLX_EXT_texture_from_pixmap 1
-+#ifdef GLX_GLXEXT_PROTOTYPES
-+extern void glXBindTexImageEXT (Display *, GLXDrawable, int, const int *);
-+extern void glXReleaseTexImageEXT (Display *, GLXDrawable, int);
-+#endif /* GLX_GLXEXT_PROTOTYPES */
-+typedef void ( * PFNGLXBINDTEXIMAGEEXTPROC) (Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list);
-+typedef void ( * PFNGLXRELEASETEXIMAGEEXTPROC) (Display *dpy, GLXDrawable drawable, int buffer);
-+#endif
-+
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif
-Index: qemu-0.12.4/target-i386/mesa_mipmap.c
-===================================================================
---- /dev/null
-+++ qemu-0.12.4/target-i386/mesa_mipmap.c
-@@ -0,0 +1,824 @@
-+
-+/*
-+ * Mesa 3-D graphics library
-+ * Version: 3.4
-+ * Copyright (C) 1995-2000 Brian Paul
-+ *
-+ * This library is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Library General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2 of the License, or (at your option) any later version.
-+ *
-+ * This library 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
-+ * Library General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Library General Public
-+ * License along with this library; if not, write to the Free
-+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+
-+#ifdef PC_HEADER
-+#include "all.h"
-+#else
-+#include <assert.h>
-+#include <math.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+//#include "gluP.h"
-+#endif
-+
-+
-+/*
-+ * Compute ceiling of integer quotient of A divided by B:
-+ */
-+#define CEILING( A, B ) ( (A) % (B) == 0 ? (A)/(B) : (A)/(B)+1 )
-+
-+
-+
-+#ifdef EPSILON
-+#undef EPSILON
-+#endif
-+#define EPSILON 0.001
-+
-+
-+/* To work around optimizer bug in MSVC4.1 */
-+#if defined(__WIN32__) && !defined(OPENSTEP)
-+void
-+dummy(GLuint j, GLuint k)
-+{
-+}
-+#else
-+#define dummy(J, K)
-+#endif
-+
-+
-+static GLint GLAPIENTRY
-+mesa_gluScaleImage(GLenum format,
-+ GLsizei widthin, GLsizei heightin,
-+ GLenum typein, const void *datain,
-+ GLsizei widthout, GLsizei heightout,
-+ GLenum typeout, void *dataout)
-+{
-+ GLint components, i, j, k;
-+ GLfloat *tempin, *tempout;
-+ GLfloat sx, sy;
-+ GLint unpackrowlength, unpackalignment, unpackskiprows, unpackskippixels;
-+ GLint packrowlength, packalignment, packskiprows, packskippixels;
-+ GLint sizein, sizeout;
-+ GLint rowstride, rowlen;
-+
-+
-+ /* Determine number of components per pixel */
-+ switch (format) {
-+ case GL_COLOR_INDEX:
-+ case GL_STENCIL_INDEX:
-+ case GL_DEPTH_COMPONENT:
-+ case GL_RED:
-+ case GL_GREEN:
-+ case GL_BLUE:
-+ case GL_ALPHA:
-+ case GL_LUMINANCE:
-+ components = 1;
-+ break;
-+ case GL_LUMINANCE_ALPHA:
-+ components = 2;
-+ break;
-+ case GL_RGB:
-+ case GL_BGR:
-+ components = 3;
-+ break;
-+ case GL_RGBA:
-+ case GL_BGRA:
-+#ifdef GL_EXT_abgr
-+ case GL_ABGR_EXT:
-+#endif
-+ components = 4;
-+ break;
-+ default:
-+ return GLU_INVALID_ENUM;
-+ }
-+
-+ /* Determine bytes per input datum */
-+ switch (typein) {
-+ case GL_UNSIGNED_BYTE:
-+ sizein = sizeof(GLubyte);
-+ break;
-+ case GL_BYTE:
-+ sizein = sizeof(GLbyte);
-+ break;
-+ case GL_UNSIGNED_SHORT:
-+ sizein = sizeof(GLushort);
-+ break;
-+ case GL_SHORT:
-+ sizein = sizeof(GLshort);
-+ break;
-+ case GL_UNSIGNED_INT:
-+ sizein = sizeof(GLuint);
-+ break;
-+ case GL_INT:
-+ sizein = sizeof(GLint);
-+ break;
-+ case GL_FLOAT:
-+ sizein = sizeof(GLfloat);
-+ break;
-+ case GL_BITMAP:
-+ /* not implemented yet */
-+ default:
-+ return GL_INVALID_ENUM;
-+ }
-+
-+ /* Determine bytes per output datum */
-+ switch (typeout) {
-+ case GL_UNSIGNED_BYTE:
-+ sizeout = sizeof(GLubyte);
-+ break;
-+ case GL_BYTE:
-+ sizeout = sizeof(GLbyte);
-+ break;
-+ case GL_UNSIGNED_SHORT:
-+ sizeout = sizeof(GLushort);
-+ break;
-+ case GL_SHORT:
-+ sizeout = sizeof(GLshort);
-+ break;
-+ case GL_UNSIGNED_INT:
-+ sizeout = sizeof(GLuint);
-+ break;
-+ case GL_INT:
-+ sizeout = sizeof(GLint);
-+ break;
-+ case GL_FLOAT:
-+ sizeout = sizeof(GLfloat);
-+ break;
-+ case GL_BITMAP:
-+ /* not implemented yet */
-+ default:
-+ return GL_INVALID_ENUM;
-+ }
-+
-+ /* Get glPixelStore state */
-+ glGetIntegerv(GL_UNPACK_ROW_LENGTH, &unpackrowlength);
-+ glGetIntegerv(GL_UNPACK_ALIGNMENT, &unpackalignment);
-+ glGetIntegerv(GL_UNPACK_SKIP_ROWS, &unpackskiprows);
-+ glGetIntegerv(GL_UNPACK_SKIP_PIXELS, &unpackskippixels);
-+ glGetIntegerv(GL_PACK_ROW_LENGTH, &packrowlength);
-+ glGetIntegerv(GL_PACK_ALIGNMENT, &packalignment);
-+ glGetIntegerv(GL_PACK_SKIP_ROWS, &packskiprows);
-+ glGetIntegerv(GL_PACK_SKIP_PIXELS, &packskippixels);
-+
-+ /* Allocate storage for intermediate images */
-+ tempin = (GLfloat *) malloc(widthin * heightin
-+ * components * sizeof(GLfloat));
-+ if (!tempin) {
-+ return GLU_OUT_OF_MEMORY;
-+ }
-+ tempout = (GLfloat *) malloc(widthout * heightout
-+ * components * sizeof(GLfloat));
-+ if (!tempout) {
-+ free(tempin);
-+ return GLU_OUT_OF_MEMORY;
-+ }
-+
-+
-+ /*
-+ * Unpack the pixel data and convert to floating point
-+ */
-+
-+ if (unpackrowlength > 0) {
-+ rowlen = unpackrowlength;
-+ }
-+ else {
-+ rowlen = widthin;
-+ }
-+ if (sizein >= unpackalignment) {
-+ rowstride = components * rowlen;
-+ }
-+ else {
-+ rowstride = unpackalignment / sizein
-+ * CEILING(components * rowlen * sizein, unpackalignment);
-+ }
-+
-+ switch (typein) {
-+ case GL_UNSIGNED_BYTE:
-+ k = 0;
-+ for (i = 0; i < heightin; i++) {
-+ GLubyte *ubptr = (GLubyte *) datain
-+ + i * rowstride
-+ + unpackskiprows * rowstride + unpackskippixels * components;
-+ for (j = 0; j < widthin * components; j++) {
-+ dummy(j, k);
-+ tempin[k++] = (GLfloat) * ubptr++;
-+ }
-+ }
-+ break;
-+ case GL_BYTE:
-+ k = 0;
-+ for (i = 0; i < heightin; i++) {
-+ GLbyte *bptr = (GLbyte *) datain
-+ + i * rowstride
-+ + unpackskiprows * rowstride + unpackskippixels * components;
-+ for (j = 0; j < widthin * components; j++) {
-+ dummy(j, k);
-+ tempin[k++] = (GLfloat) * bptr++;
-+ }
-+ }
-+ break;
-+ case GL_UNSIGNED_SHORT:
-+ k = 0;
-+ for (i = 0; i < heightin; i++) {
-+ GLushort *usptr = (GLushort *) datain
-+ + i * rowstride
-+ + unpackskiprows * rowstride + unpackskippixels * components;
-+ for (j = 0; j < widthin * components; j++) {
-+ dummy(j, k);
-+ tempin[k++] = (GLfloat) * usptr++;
-+ }
-+ }
-+ break;
-+ case GL_SHORT:
-+ k = 0;
-+ for (i = 0; i < heightin; i++) {
-+ GLshort *sptr = (GLshort *) datain
-+ + i * rowstride
-+ + unpackskiprows * rowstride + unpackskippixels * components;
-+ for (j = 0; j < widthin * components; j++) {
-+ dummy(j, k);
-+ tempin[k++] = (GLfloat) * sptr++;
-+ }
-+ }
-+ break;
-+ case GL_UNSIGNED_INT:
-+ k = 0;
-+ for (i = 0; i < heightin; i++) {
-+ GLuint *uiptr = (GLuint *) datain
-+ + i * rowstride
-+ + unpackskiprows * rowstride + unpackskippixels * components;
-+ for (j = 0; j < widthin * components; j++) {
-+ dummy(j, k);
-+ tempin[k++] = (GLfloat) * uiptr++;
-+ }
-+ }
-+ break;
-+ case GL_INT:
-+ k = 0;
-+ for (i = 0; i < heightin; i++) {
-+ GLint *iptr = (GLint *) datain
-+ + i * rowstride
-+ + unpackskiprows * rowstride + unpackskippixels * components;
-+ for (j = 0; j < widthin * components; j++) {
-+ dummy(j, k);
-+ tempin[k++] = (GLfloat) * iptr++;
-+ }
-+ }
-+ break;
-+ case GL_FLOAT:
-+ k = 0;
-+ for (i = 0; i < heightin; i++) {
-+ GLfloat *fptr = (GLfloat *) datain
-+ + i * rowstride
-+ + unpackskiprows * rowstride + unpackskippixels * components;
-+ for (j = 0; j < widthin * components; j++) {
-+ dummy(j, k);
-+ tempin[k++] = *fptr++;
-+ }
-+ }
-+ break;
-+ default:
-+ return GLU_INVALID_ENUM;
-+ }
-+
-+
-+ /*
-+ * Scale the image!
-+ */
-+
-+ if (widthout > 1)
-+ sx = (GLfloat) (widthin - 1) / (GLfloat) (widthout - 1);
-+ else
-+ sx = (GLfloat) (widthin - 1);
-+ if (heightout > 1)
-+ sy = (GLfloat) (heightin - 1) / (GLfloat) (heightout - 1);
-+ else
-+ sy = (GLfloat) (heightin - 1);
-+
-+/*#define POINT_SAMPLE*/
-+#ifdef POINT_SAMPLE
-+ for (i = 0; i < heightout; i++) {
-+ GLint ii = i * sy;
-+ for (j = 0; j < widthout; j++) {
-+ GLint jj = j * sx;
-+
-+ GLfloat *src = tempin + (ii * widthin + jj) * components;
-+ GLfloat *dst = tempout + (i * widthout + j) * components;
-+
-+ for (k = 0; k < components; k++) {
-+ *dst++ = *src++;
-+ }
-+ }
-+ }
-+#else
-+ if (sx < 1.0 && sy < 1.0) {
-+ /* magnify both width and height: use weighted sample of 4 pixels */
-+ GLint i0, i1, j0, j1;
-+ GLfloat alpha, beta;
-+ GLfloat *src00, *src01, *src10, *src11;
-+ GLfloat s1, s2;
-+ GLfloat *dst;
-+
-+ for (i = 0; i < heightout; i++) {
-+ i0 = i * sy;
-+ i1 = i0 + 1;
-+ if (i1 >= heightin)
-+ i1 = heightin - 1;
-+/* i1 = (i+1) * sy - EPSILON;*/
-+ alpha = i * sy - i0;
-+ for (j = 0; j < widthout; j++) {
-+ j0 = j * sx;
-+ j1 = j0 + 1;
-+ if (j1 >= widthin)
-+ j1 = widthin - 1;
-+/* j1 = (j+1) * sx - EPSILON; */
-+ beta = j * sx - j0;
-+
-+ /* compute weighted average of pixels in rect (i0,j0)-(i1,j1) */
-+ src00 = tempin + (i0 * widthin + j0) * components;
-+ src01 = tempin + (i0 * widthin + j1) * components;
-+ src10 = tempin + (i1 * widthin + j0) * components;
-+ src11 = tempin + (i1 * widthin + j1) * components;
-+
-+ dst = tempout + (i * widthout + j) * components;
-+
-+ for (k = 0; k < components; k++) {
-+ s1 = *src00++ * (1.0 - beta) + *src01++ * beta;
-+ s2 = *src10++ * (1.0 - beta) + *src11++ * beta;
-+ *dst++ = s1 * (1.0 - alpha) + s2 * alpha;
-+ }
-+ }
-+ }
-+ }
-+ else {
-+ /* shrink width and/or height: use an unweighted box filter */
-+ GLint i0, i1;
-+ GLint j0, j1;
-+ GLint ii, jj;
-+ GLfloat sum, *dst;
-+
-+ for (i = 0; i < heightout; i++) {
-+ i0 = i * sy;
-+ i1 = i0 + 1;
-+ if (i1 >= heightin)
-+ i1 = heightin - 1;
-+/* i1 = (i+1) * sy - EPSILON; */
-+ for (j = 0; j < widthout; j++) {
-+ j0 = j * sx;
-+ j1 = j0 + 1;
-+ if (j1 >= widthin)
-+ j1 = widthin - 1;
-+/* j1 = (j+1) * sx - EPSILON; */
-+
-+ dst = tempout + (i * widthout + j) * components;
-+
-+ /* compute average of pixels in the rectangle (i0,j0)-(i1,j1) */
-+ for (k = 0; k < components; k++) {
-+ sum = 0.0;
-+ for (ii = i0; ii <= i1; ii++) {
-+ for (jj = j0; jj <= j1; jj++) {
-+ sum += *(tempin + (ii * widthin + jj) * components + k);
-+ }
-+ }
-+ sum /= (j1 - j0 + 1) * (i1 - i0 + 1);
-+ *dst++ = sum;
-+ }
-+ }
-+ }
-+ }
-+#endif
-+
-+
-+ /*
-+ * Return output image
-+ */
-+
-+ if (packrowlength > 0) {
-+ rowlen = packrowlength;
-+ }
-+ else {
-+ rowlen = widthout;
-+ }
-+ if (sizeout >= packalignment) {
-+ rowstride = components * rowlen;
-+ }
-+ else {
-+ rowstride = packalignment / sizeout
-+ * CEILING(components * rowlen * sizeout, packalignment);
-+ }
-+
-+ switch (typeout) {
-+ case GL_UNSIGNED_BYTE:
-+ k = 0;
-+ for (i = 0; i < heightout; i++) {
-+ GLubyte *ubptr = (GLubyte *) dataout
-+ + i * rowstride
-+ + packskiprows * rowstride + packskippixels * components;
-+ for (j = 0; j < widthout * components; j++) {
-+ dummy(j, k + i);
-+ *ubptr++ = (GLubyte) tempout[k++];
-+ }
-+ }
-+ break;
-+ case GL_BYTE:
-+ k = 0;
-+ for (i = 0; i < heightout; i++) {
-+ GLbyte *bptr = (GLbyte *) dataout
-+ + i * rowstride
-+ + packskiprows * rowstride + packskippixels * components;
-+ for (j = 0; j < widthout * components; j++) {
-+ dummy(j, k + i);
-+ *bptr++ = (GLbyte) tempout[k++];
-+ }
-+ }
-+ break;
-+ case GL_UNSIGNED_SHORT:
-+ k = 0;
-+ for (i = 0; i < heightout; i++) {
-+ GLushort *usptr = (GLushort *) dataout
-+ + i * rowstride
-+ + packskiprows * rowstride + packskippixels * components;
-+ for (j = 0; j < widthout * components; j++) {
-+ dummy(j, k + i);
-+ *usptr++ = (GLushort) tempout[k++];
-+ }
-+ }
-+ break;
-+ case GL_SHORT:
-+ k = 0;
-+ for (i = 0; i < heightout; i++) {
-+ GLshort *sptr = (GLshort *) dataout
-+ + i * rowstride
-+ + packskiprows * rowstride + packskippixels * components;
-+ for (j = 0; j < widthout * components; j++) {
-+ dummy(j, k + i);
-+ *sptr++ = (GLshort) tempout[k++];
-+ }
-+ }
-+ break;
-+ case GL_UNSIGNED_INT:
-+ k = 0;
-+ for (i = 0; i < heightout; i++) {
-+ GLuint *uiptr = (GLuint *) dataout
-+ + i * rowstride
-+ + packskiprows * rowstride + packskippixels * components;
-+ for (j = 0; j < widthout * components; j++) {
-+ dummy(j, k + i);
-+ *uiptr++ = (GLuint) tempout[k++];
-+ }
-+ }
-+ break;
-+ case GL_INT:
-+ k = 0;
-+ for (i = 0; i < heightout; i++) {
-+ GLint *iptr = (GLint *) dataout
-+ + i * rowstride
-+ + packskiprows * rowstride + packskippixels * components;
-+ for (j = 0; j < widthout * components; j++) {
-+ dummy(j, k + i);
-+ *iptr++ = (GLint) tempout[k++];
-+ }
-+ }
-+ break;
-+ case GL_FLOAT:
-+ k = 0;
-+ for (i = 0; i < heightout; i++) {
-+ GLfloat *fptr = (GLfloat *) dataout
-+ + i * rowstride
-+ + packskiprows * rowstride + packskippixels * components;
-+ for (j = 0; j < widthout * components; j++) {
-+ dummy(j, k + i);
-+ *fptr++ = tempout[k++];
-+ }
-+ }
-+ break;
-+ default:
-+ return GLU_INVALID_ENUM;
-+ }
-+
-+
-+ /* free temporary image storage */
-+ free(tempin);
-+ free(tempout);
-+
-+ return 0;
-+}
-+
-+
-+
-+/*
-+ * Return the largest k such that 2^k <= n.
-+ */
-+static GLint
-+ilog2(GLint n)
-+{
-+ GLint k;
-+
-+ if (n <= 0)
-+ return 0;
-+ for (k = 0; n >>= 1; k++);
-+ return k;
-+}
-+
-+
-+
-+/*
-+ * Find the value nearest to n which is also a power of two.
-+ */
-+static GLint
-+round2(GLint n)
-+{
-+ GLint m;
-+
-+ for (m = 1; m < n; m *= 2);
-+
-+ /* m>=n */
-+ if (m - n <= n - m / 2) {
-+ return m;
-+ }
-+ else {
-+ return m / 2;
-+ }
-+}
-+
-+
-+/*
-+ * Given an pixel format and datatype, return the number of bytes to
-+ * store one pixel.
-+ */
-+static GLint
-+bytes_per_pixel(GLenum format, GLenum type)
-+{
-+ GLint n, m;
-+
-+ switch (format) {
-+ case GL_COLOR_INDEX:
-+ case GL_STENCIL_INDEX:
-+ case GL_DEPTH_COMPONENT:
-+ case GL_RED:
-+ case GL_GREEN:
-+ case GL_BLUE:
-+ case GL_ALPHA:
-+ case GL_LUMINANCE:
-+ n = 1;
-+ break;
-+ case GL_LUMINANCE_ALPHA:
-+ n = 2;
-+ break;
-+ case GL_RGB:
-+ case GL_BGR:
-+ n = 3;
-+ break;
-+ case GL_RGBA:
-+ case GL_BGRA:
-+#ifdef GL_EXT_abgr
-+ case GL_ABGR_EXT:
-+#endif
-+ n = 4;
-+ break;
-+ default:
-+ n = 0;
-+ }
-+
-+ switch (type) {
-+ case GL_UNSIGNED_BYTE:
-+ m = sizeof(GLubyte);
-+ break;
-+ case GL_BYTE:
-+ m = sizeof(GLbyte);
-+ break;
-+ case GL_BITMAP:
-+ m = 1;
-+ break;
-+ case GL_UNSIGNED_SHORT:
-+ m = sizeof(GLushort);
-+ break;
-+ case GL_SHORT:
-+ m = sizeof(GLshort);
-+ break;
-+ case GL_UNSIGNED_INT:
-+ m = sizeof(GLuint);
-+ break;
-+ case GL_INT:
-+ m = sizeof(GLint);
-+ break;
-+ case GL_FLOAT:
-+ m = sizeof(GLfloat);
-+ break;
-+ default:
-+ m = 0;
-+ }
-+
-+ return n * m;
-+}
-+
-+
-+
-+/*
-+ * WARNING: This function isn't finished and has never been tested!!!!
-+ */
-+GLint GLAPIENTRY
-+mesa_gluBuild1DMipmaps(GLenum target, GLint components,
-+ GLsizei width, GLenum format, GLenum type, const void *data)
-+{
-+ GLubyte *texture;
-+ GLint levels, max_levels;
-+ GLint new_width, max_width;
-+ GLint i, j, k, l;
-+
-+ if (width < 1)
-+ return GLU_INVALID_VALUE;
-+
-+ glGetIntegerv(GL_MAX_TEXTURE_SIZE, &max_width);
-+ max_levels = ilog2(max_width) + 1;
-+
-+ /* Compute how many mipmap images to make */
-+ levels = ilog2(width) + 1;
-+ if (levels > max_levels) {
-+ levels = max_levels;
-+ }
-+
-+ new_width = 1 << (levels - 1);
-+
-+ texture = (GLubyte *) malloc(new_width * components);
-+ if (!texture) {
-+ return GLU_OUT_OF_MEMORY;
-+ }
-+
-+ if (width != new_width) {
-+ /* initial rescaling */
-+ switch (type) {
-+ case GL_UNSIGNED_BYTE:
-+ {
-+ GLubyte *ub_data = (GLubyte *) data;
-+ for (i = 0; i < new_width; i++) {
-+ j = i * width / new_width;
-+ for (k = 0; k < components; k++) {
-+ texture[i * components + k] = ub_data[j * components + k];
-+ }
-+ }
-+ }
-+ break;
-+ default:
-+ /* Not implemented */
-+ return GLU_ERROR;
-+ }
-+ }
-+
-+ /* generate and load mipmap images */
-+ for (l = 0; l < levels; l++) {
-+ glTexImage1D(GL_TEXTURE_1D, l, components, new_width, 0,
-+ format, GL_UNSIGNED_BYTE, texture);
-+
-+ /* Scale image down to 1/2 size */
-+ new_width = new_width / 2;
-+ for (i = 0; i < new_width; i++) {
-+ for (k = 0; k < components; k++) {
-+ GLint sample1, sample2;
-+ sample1 = (GLint) texture[i * 2 * components + k];
-+ sample2 = (GLint) texture[(i * 2 + 1) * components + k];
-+ texture[i * components + k] = (GLubyte) ((sample1 + sample2) / 2);
-+ }
-+ }
-+ }
-+
-+ free(texture);
-+
-+ return 0;
-+}
-+
-+
-+
-+GLint GLAPIENTRY
-+mesa_gluBuild2DMipmaps(GLenum target, GLint components,
-+ GLsizei width, GLsizei height, GLenum format,
-+ GLenum type, const void *data)
-+{
-+ GLint w, h, maxsize;
-+ void *image, *newimage;
-+ GLint neww, newh, level, bpp;
-+ int error;
-+ GLboolean done;
-+ GLint retval = 0;
-+ GLint unpackrowlength, unpackalignment, unpackskiprows, unpackskippixels;
-+ GLint packrowlength, packalignment, packskiprows, packskippixels;
-+
-+ if (width < 1 || height < 1)
-+ return GLU_INVALID_VALUE;
-+
-+ glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxsize);
-+
-+ w = round2(width);
-+ if (w > maxsize) {
-+ w = maxsize;
-+ }
-+ h = round2(height);
-+ if (h > maxsize) {
-+ h = maxsize;
-+ }
-+
-+ bpp = bytes_per_pixel(format, type);
-+ if (bpp == 0) {
-+ /* probably a bad format or type enum */
-+ return GLU_INVALID_ENUM;
-+ }
-+
-+ /* Get current glPixelStore values */
-+ glGetIntegerv(GL_UNPACK_ROW_LENGTH, &unpackrowlength);
-+ glGetIntegerv(GL_UNPACK_ALIGNMENT, &unpackalignment);
-+ glGetIntegerv(GL_UNPACK_SKIP_ROWS, &unpackskiprows);
-+ glGetIntegerv(GL_UNPACK_SKIP_PIXELS, &unpackskippixels);
-+ glGetIntegerv(GL_PACK_ROW_LENGTH, &packrowlength);
-+ glGetIntegerv(GL_PACK_ALIGNMENT, &packalignment);
-+ glGetIntegerv(GL_PACK_SKIP_ROWS, &packskiprows);
-+ glGetIntegerv(GL_PACK_SKIP_PIXELS, &packskippixels);
-+
-+ /* set pixel packing */
-+ glPixelStorei(GL_PACK_ROW_LENGTH, 0);
-+ glPixelStorei(GL_PACK_ALIGNMENT, 1);
-+ glPixelStorei(GL_PACK_SKIP_ROWS, 0);
-+ glPixelStorei(GL_PACK_SKIP_PIXELS, 0);
-+
-+ done = GL_FALSE;
-+
-+ if (w != width || h != height) {
-+ /* must rescale image to get "top" mipmap texture image */
-+ image = malloc((w + 4) * h * bpp);
-+ if (!image) {
-+ return GLU_OUT_OF_MEMORY;
-+ }
-+ error = mesa_gluScaleImage(format, width, height, type, data,
-+ w, h, type, image);
-+ if (error) {
-+ retval = error;
-+ done = GL_TRUE;
-+ }
-+ }
-+ else {
-+ image = (void *) data;
-+ }
-+
-+ level = 0;
-+ while (!done) {
-+ if (image != data) {
-+ /* set pixel unpacking */
-+ glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
-+ glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-+ glPixelStorei(GL_UNPACK_SKIP_ROWS, 0);
-+ glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
-+ }
-+
-+ glTexImage2D(target, level, components, w, h, 0, format, type, image);
-+
-+ if (w == 1 && h == 1)
-+ break;
-+
-+ neww = (w < 2) ? 1 : w / 2;
-+ newh = (h < 2) ? 1 : h / 2;
-+ newimage = malloc((neww + 4) * newh * bpp);
-+ if (!newimage) {
-+ return GLU_OUT_OF_MEMORY;
-+ }
-+
-+ error = mesa_gluScaleImage(format, w, h, type, image,
-+ neww, newh, type, newimage);
-+ if (error) {
-+ retval = error;
-+ done = GL_TRUE;
-+ }
-+
-+ if (image != data) {
-+ free(image);
-+ }
-+ image = newimage;
-+
-+ w = neww;
-+ h = newh;
-+ level++;
-+ }
-+
-+ if (image != data) {
-+ free(image);
-+ }
-+
-+ /* Restore original glPixelStore state */
-+ glPixelStorei(GL_UNPACK_ROW_LENGTH, unpackrowlength);
-+ glPixelStorei(GL_UNPACK_ALIGNMENT, unpackalignment);
-+ glPixelStorei(GL_UNPACK_SKIP_ROWS, unpackskiprows);
-+ glPixelStorei(GL_UNPACK_SKIP_PIXELS, unpackskippixels);
-+ glPixelStorei(GL_PACK_ROW_LENGTH, packrowlength);
-+ glPixelStorei(GL_PACK_ALIGNMENT, packalignment);
-+ glPixelStorei(GL_PACK_SKIP_ROWS, packskiprows);
-+ glPixelStorei(GL_PACK_SKIP_PIXELS, packskippixels);
-+
-+ return retval;
-+}
-Index: qemu-0.12.4/target-i386/opengl_exec.c
-===================================================================
---- /dev/null
-+++ qemu-0.12.4/target-i386/opengl_exec.c
-@@ -0,0 +1,3931 @@
-+/*
-+ * Host-side implementation of GL/GLX API
-+ *
-+ * Copyright (c) 2006,2007 Even Rouault
-+ *
-+ * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+ * THE SOFTWARE.
-+ */
-+
-+
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <assert.h>
-+#include <string.h>
-+
-+#include <X11/Xlib.h>
-+#include <X11/Xutil.h>
-+
-+#define GL_GLEXT_PROTOTYPES
-+#define GLX_GLXEXT_PROTOTYPES
-+
-+#include <mesa_gl.h>
-+#include <mesa_glx.h>
-+
-+// TODO
-+typedef long unsigned int target_phys_addr_t;
-+
-+#include "opengl_func.h"
-+
-+#include "mesa_glu.h"
-+#include "mesa_mipmap.c"
-+
-+#include "../qemu-common.h"
-+
-+//#define SYSTEMATIC_ERROR_CHECK
-+#define BUFFER_BEGINEND
-+#define glGetError() 0
-+
-+#define GET_EXT_PTR(type, funcname, args_decl) \
-+ static int detect_##funcname = 0; \
-+ static type(*ptr_func_##funcname)args_decl = NULL; \
-+ if (detect_##funcname == 0) \
-+ { \
-+ detect_##funcname = 1; \
-+ ptr_func_##funcname = (type(*)args_decl)glXGetProcAddressARB((const GLubyte*)#funcname); \
-+ assert (ptr_func_##funcname); \
-+ }
-+
-+#define GET_EXT_PTR_NO_FAIL(type, funcname, args_decl) \
-+ static int detect_##funcname = 0; \
-+ static type(*ptr_func_##funcname)args_decl = NULL; \
-+ if (detect_##funcname == 0) \
-+ { \
-+ detect_##funcname = 1; \
-+ ptr_func_##funcname = (type(*)args_decl)glXGetProcAddressARB((const GLubyte*)#funcname); \
-+ }
-+
-+#ifndef WIN32
-+#include <dlfcn.h>
-+#endif
-+
-+static void *get_glu_ptr(const char *name)
-+{
-+ static void *handle = (void *) -1;
-+
-+ if (handle == (void *) -1) {
-+#ifndef WIN32
-+ handle = dlopen("libGLU.so", RTLD_LAZY);
-+ if (!handle)
-+ fprintf(stderr, "can't load libGLU.so : %s\n", dlerror());
-+#else
-+ handle = (void *) LoadLibrary("glu32.dll");
-+ if (!handle)
-+ fprintf(stderr, "can't load glu32.dll\n");
-+#endif
-+ }
-+ if (handle) {
-+#ifndef WIN32
-+ return dlsym(handle, name);
-+#else
-+ return GetProcAddress(handle, name);
-+#endif
-+ }
-+ return NULL;
-+}
-+
-+#define GET_GLU_PTR(type, funcname, args_decl) \
-+ static int detect_##funcname = 0; \
-+ static type(*ptr_func_##funcname)args_decl = NULL; \
-+ if (detect_##funcname == 0) \
-+ { \
-+ detect_##funcname = 1; \
-+ ptr_func_##funcname = (type(*)args_decl)get_glu_ptr(#funcname); \
-+ }
-+
-+int display_function_call = 0;
-+
-+static const int defaultAttribList[] = {
-+ GLX_RGBA,
-+ GLX_RED_SIZE, 1,
-+ GLX_GREEN_SIZE, 1,
-+ GLX_BLUE_SIZE, 1,
-+ GLX_DOUBLEBUFFER,
-+ None
-+};
-+
-+static XVisualInfo *get_default_visual(Display *dpy)
-+{
-+ static XVisualInfo *vis = NULL;
-+ XVisualInfo theTemplate;
-+ int numVisuals;
-+
-+ if (vis)
-+ return vis;
-+ fprintf(stderr, "get_default_visual\n");
-+ /* if (vis == NULL) vis = glXChooseVisual(dpy, 0,
-+ * (int*)defaultAttribList); */
-+ theTemplate.screen = 0;
-+ vis = XGetVisualInfo(dpy, VisualScreenMask, &theTemplate, &numVisuals);
-+
-+ return vis;
-+}
-+
-+
-+static Display *parent_dpy = NULL;
-+static Window qemu_parent_window = 0;
-+
-+static Window active_win = 0; /* FIXME */
-+static int active_win_x = 0;
-+static int active_win_y = 0;
-+
-+void opengl_exec_set_parent_window(Display *_dpy, Window _parent_window)
-+{
-+ parent_dpy = _dpy;
-+ qemu_parent_window = _parent_window;
-+ if (active_win)
-+ XReparentWindow(_dpy, active_win, _parent_window, active_win_x,
-+ active_win_y);
-+}
-+
-+static int local_connection = 0;
-+void opengl_exec_set_local_connection()
-+{
-+ local_connection = 1;
-+}
-+
-+static GLXDrawable create_window(Display *dpy, Window local_parent_window,
-+ XVisualInfo *vis, const char *name,
-+ int x, int y, int width, int height)
-+{
-+ int scrnum;
-+ XSetWindowAttributes attr = { 0 };
-+ unsigned long mask;
-+ Window root;
-+ Window win;
-+
-+ scrnum = DefaultScreen(dpy);
-+ root = RootWindow(dpy, scrnum);
-+
-+ /* window attributes */
-+ attr.background_pixel = 0xff000000;
-+ attr.border_pixel = 0;
-+ attr.colormap = XCreateColormap(dpy, root, vis->visual, AllocNone);
-+ attr.event_mask = 0; /* StructureNotifyMask | ExposureMask | KeyPressMask */
-+ attr.save_under = True;
-+ // if (local_parent_window == NULL && qemu_parent_window == NULL)
-+ attr.override_redirect = True;
-+ // else
-+ // attr.override_redirect = True;
-+ attr.cursor = None;
-+ mask =
-+ CWBackPixel | CWBorderPixel | CWColormap | CWEventMask |
-+ CWOverrideRedirect | CWSaveUnder;
-+
-+ if (local_parent_window)
-+ win = XCreateWindow(dpy, local_parent_window, 0, 0, width, height, 0,
-+ vis->depth, InputOutput, vis->visual, mask, &attr);
-+ else if (qemu_parent_window)
-+ win = XCreateWindow(dpy, qemu_parent_window, 0, 0, width, height, 0,
-+ vis->depth, InputOutput, vis->visual, mask, &attr);
-+ else
-+ win = XCreateWindow(dpy, root, 0, 0, width, height, 0, vis->depth,
-+ InputOutput, vis->visual, mask, &attr);
-+
-+ /* set hints and properties */
-+ {
-+ XSizeHints sizehints;
-+
-+ sizehints.x = x;
-+ sizehints.y = y;
-+ sizehints.width = width;
-+ sizehints.height = height;
-+ sizehints.flags = USSize | USPosition;
-+ XSetWMNormalHints(dpy, win, &sizehints);
-+ XSetStandardProperties(dpy, win, name, name, None,
-+ (char **) NULL, 0, &sizehints);
-+ }
-+
-+ XSync(dpy, 0);
-+
-+ /*
-+ * int loop = 1; while (loop) { while (XPending(dpy) > 0) { XEvent event;
-+ * XNextEvent(dpy, &event); switch (event.type) { case CreateNotify: { if
-+ * (((XCreateWindowEvent*)&event)->window == win) { loop = 0; } break; } }
-+ * } } */
-+
-+ /* TODO */
-+ if (!active_win)
-+ active_win = win;
-+
-+ return win;
-+}
-+
-+typedef struct {
-+ void *key;
-+ void *value;
-+} Assoc;
-+
-+#define MAX_HANDLED_PROCESS 100
-+#define MAX_ASSOC_SIZE 100
-+
-+#define MAX_FBCONFIG 10
-+
-+#include "opengl_utils.h"
-+
-+#define MAX(a, b) (((a) > (b)) ? (a) : (b))
-+
-+
-+typedef struct {
-+ int x;
-+ int y;
-+ int width;
-+ int height;
-+ int map_state;
-+} WindowPosStruct;
-+
-+typedef struct {
-+ GLbitfield mask;
-+ int activeTextureIndex;
-+} ClientState;
-+
-+#define MAX_CLIENT_STATE_STACK_SIZE 16
-+
-+typedef struct {
-+ int ref;
-+ int fake_ctxt;
-+ int fake_shareList;
-+ GLXContext context;
-+ GLXDrawable drawable;
-+
-+ void *vertexPointer;
-+ void *normalPointer;
-+ void *colorPointer;
-+ void *secondaryColorPointer;
-+ void *indexPointer;
-+ void *texCoordPointer[NB_MAX_TEXTURES];
-+ void *edgeFlagPointer;
-+ void *vertexAttribPointer[MY_GL_MAX_VERTEX_ATTRIBS_ARB];
-+ void *vertexAttribPointerNV[MY_GL_MAX_VERTEX_ATTRIBS_NV];
-+ void *weightPointer;
-+ void *matrixIndexPointer;
-+ void *fogCoordPointer;
-+ void *variantPointerEXT[MY_GL_MAX_VARIANT_POINTER_EXT];
-+ void *interleavedArrays;
-+ void *elementPointerATI;
-+
-+ int vertexPointerSize;
-+ int normalPointerSize;
-+ int colorPointerSize;
-+ int secondaryColorPointerSize;
-+ int indexPointerSize;
-+ int texCoordPointerSize[NB_MAX_TEXTURES];
-+ int edgeFlagPointerSize;
-+ int vertexAttribPointerSize[MY_GL_MAX_VERTEX_ATTRIBS_ARB];
-+ int vertexAttribPointerNVSize[MY_GL_MAX_VERTEX_ATTRIBS_NV];
-+ int weightPointerSize;
-+ int matrixIndexPointerSize;
-+ int fogCoordPointerSize;
-+ int variantPointerEXTSize[MY_GL_MAX_VARIANT_POINTER_EXT];
-+ int interleavedArraysSize;
-+ int elementPointerATISize;
-+
-+ int selectBufferSize;
-+ void *selectBufferPtr;
-+ int feedbackBufferSize;
-+ void *feedbackBufferPtr;
-+
-+ ClientState clientStateStack[MAX_CLIENT_STATE_STACK_SIZE];
-+ int clientStateSp;
-+ int activeTextureIndex;
-+
-+ unsigned int ownTabTextures[32768];
-+ unsigned int *tabTextures;
-+ RangeAllocator ownTextureAllocator;
-+ RangeAllocator *textureAllocator;
-+
-+ unsigned int ownTabBuffers[32768];
-+ unsigned int *tabBuffers;
-+ RangeAllocator ownBufferAllocator;
-+ RangeAllocator *bufferAllocator;
-+
-+ unsigned int ownTabLists[32768];
-+ unsigned int *tabLists;
-+ RangeAllocator ownListAllocator;
-+ RangeAllocator *listAllocator;
-+
-+#ifdef SYSTEMATIC_ERROR_CHECK
-+ int last_error;
-+#endif
-+} GLState;
-+
-+typedef struct {
-+ int process_id;
-+ int instr_counter;
-+
-+ int x, y, width, height;
-+ WindowPosStruct currentDrawablePos;
-+
-+ int next_available_context_number;
-+ int next_available_pbuffer_number;
-+
-+ int nb_states;
-+ GLState default_state;
-+ GLState **glstates;
-+ GLState *current_state;
-+
-+ int nfbconfig;
-+ GLXFBConfig *fbconfigs[MAX_FBCONFIG];
-+ int fbconfigs_max[MAX_FBCONFIG];
-+ int nfbconfig_total;
-+
-+ Assoc association_fakecontext_glxcontext[MAX_ASSOC_SIZE];
-+ Assoc association_fakepbuffer_pbuffer[MAX_ASSOC_SIZE];
-+ Assoc association_clientdrawable_serverdrawable[MAX_ASSOC_SIZE];
-+ Assoc association_fakecontext_visual[MAX_ASSOC_SIZE];
-+
-+ Display *dpy;
-+
-+ int began;
-+ int primitive;
-+ int bufsize;
-+ int bufstart;
-+ arg_t *cmdbuf;
-+} ProcessStruct;
-+
-+static ProcessStruct processes[MAX_HANDLED_PROCESS];
-+
-+void init_process_tab()
-+{
-+ memset(processes, 0, sizeof(processes));
-+}
-+
-+#define ARG_TO_CHAR(x) (char)(x)
-+#define ARG_TO_UNSIGNED_CHAR(x) (unsigned char)(x)
-+#define ARG_TO_SHORT(x) (short)(x)
-+#define ARG_TO_UNSIGNED_SHORT(x) (unsigned short)(x)
-+#define ARG_TO_INT(x) (int)(x)
-+#define ARG_TO_UNSIGNED_INT(x) (unsigned int)(x)
-+#define ARG_TO_FLOAT(x) (*(float*)&(x))
-+#define ARG_TO_DOUBLE(x) (*(double*)(x))
-+
-+#include "server_stub.c"
-+
-+/* ---- */
-+
-+#ifdef BUFFER_BEGINEND
-+/* A user of the following two functions must not buffer any calls that
-+ * may throw an error (i.e. errors conditions must be checked before
-+ * storing in the buffer) or return values. */
-+static inline arg_t *cmd_buffer_alloc(ProcessStruct *process, size_t elems)
-+{
-+ arg_t *ret;
-+
-+ if (unlikely(process->bufstart + elems > process->bufsize)) {
-+ process->bufsize = (process->bufsize ?: 0x100) << 1;
-+ process->cmdbuf = qemu_realloc(process->cmdbuf,
-+ process->bufsize * sizeof(arg_t));
-+ }
-+
-+ ret = process->cmdbuf + process->bufstart;
-+ process->bufstart += elems;
-+ return ret;
-+}
-+
-+static inline void cmd_buffer_replay(ProcessStruct *process)
-+{
-+ Signature *sig;
-+ int func_number;
-+ int ret_int;
-+ char ret_char;
-+ arg_t *call = process->cmdbuf;
-+
-+ while (process->bufstart) {
-+ func_number = *call ++;
-+ sig = (Signature *) tab_opengl_calls[func_number];
-+
-+ execute_func(func_number, call, &ret_int, &ret_char);
-+
-+ call += sig->nb_args;
-+ process->bufstart -= sig->nb_args + 1;
-+ }
-+}
-+#endif
-+
-+/* ---- */
-+
-+typedef void *ClientGLXDrawable;
-+static inline ClientGLXDrawable to_drawable(arg_t arg)
-+{
-+#ifdef TARGET_X86_64
-+ if (arg > (unsigned long) -1) {
-+ fprintf(stderr, "GLXDrawable too big for this implementation\n");
-+ exit(-1);
-+ }
-+#endif
-+ return (void *) (unsigned long) arg;
-+}
-+
-+GLXContext get_association_fakecontext_glxcontext(
-+ ProcessStruct *process, int fakecontext)
-+{
-+ int i;
-+
-+ for (i = 0;
-+ i < MAX_ASSOC_SIZE &&
-+ process->association_fakecontext_glxcontext[i].key; i++)
-+ if ((int) (long) process->association_fakecontext_glxcontext[i].key ==
-+ fakecontext)
-+ return (GLXContext)
-+ process->association_fakecontext_glxcontext[i].value;
-+
-+ return NULL;
-+}
-+
-+void set_association_fakecontext_glxcontext(
-+ ProcessStruct *process, int fakecontext, GLXContext glxcontext)
-+{
-+ int i;
-+
-+ for (i = 0;
-+ i < MAX_ASSOC_SIZE &&
-+ process->association_fakecontext_glxcontext[i].key; i++)
-+ if ((int) (long) process->association_fakecontext_glxcontext[i].key ==
-+ fakecontext)
-+ break;
-+
-+ if (i < MAX_ASSOC_SIZE) {
-+ process->association_fakecontext_glxcontext[i].key =
-+ (void *) (long) fakecontext;
-+ process->association_fakecontext_glxcontext[i].value =
-+ (void *) glxcontext;
-+ } else
-+ fprintf(stderr, "MAX_ASSOC_SIZE reached\n");
-+}
-+
-+void unset_association_fakecontext_glxcontext(
-+ ProcessStruct *process, int fakecontext)
-+{
-+ int i;
-+
-+ for (i = 0;
-+ i < MAX_ASSOC_SIZE &&
-+ process->association_fakecontext_glxcontext[i].key; i++)
-+ if ((int) (long) process->association_fakecontext_glxcontext[i].key ==
-+ fakecontext) {
-+ memmove(&process->association_fakecontext_glxcontext[i],
-+ &process->association_fakecontext_glxcontext[i + 1],
-+ sizeof(Assoc) * (MAX_ASSOC_SIZE - 1 - i));
-+ return;
-+ }
-+}
-+
-+/* ---- */
-+
-+XVisualInfo *get_association_fakecontext_visual(
-+ ProcessStruct *process, int fakecontext)
-+{
-+ int i;
-+
-+ for (i = 0;
-+ i < MAX_ASSOC_SIZE && process->association_fakecontext_visual[i].key;
-+ i++)
-+ if ((int) (long) process->association_fakecontext_visual[i].key ==
-+ fakecontext)
-+ return process->association_fakecontext_visual[i].value;
-+
-+ return NULL;
-+}
-+
-+void set_association_fakecontext_visual(ProcessStruct *process,
-+ int fakecontext, XVisualInfo *visual)
-+{
-+ int i;
-+
-+ for (i = 0;
-+ i < MAX_ASSOC_SIZE && process->association_fakecontext_visual[i].key;
-+ i++)
-+ if ((int) (long) process->association_fakecontext_visual[i].key ==
-+ fakecontext)
-+ break;
-+
-+ if (i < MAX_ASSOC_SIZE) {
-+ process->association_fakecontext_visual[i].key =
-+ (void *) (long) fakecontext;
-+ process->association_fakecontext_visual[i].value = (void *) visual;
-+ } else
-+ fprintf(stderr, "MAX_ASSOC_SIZE reached\n");
-+}
-+
-+/* ---- */
-+
-+GLXPbuffer get_association_fakepbuffer_pbuffer(
-+ ProcessStruct *process, ClientGLXDrawable fakepbuffer)
-+{
-+ int i;
-+
-+ for (i = 0; i < MAX_ASSOC_SIZE &&
-+ process->association_fakepbuffer_pbuffer[i].key; i ++)
-+ if ((ClientGLXDrawable)
-+ process->association_fakepbuffer_pbuffer[i].key ==
-+ fakepbuffer)
-+ return (GLXPbuffer)
-+ process->association_fakepbuffer_pbuffer[i].value;
-+
-+ return 0;
-+}
-+
-+void set_association_fakepbuffer_pbuffer(ProcessStruct *process,
-+ ClientGLXDrawable fakepbuffer, GLXPbuffer pbuffer)
-+{
-+ int i;
-+
-+ for (i = 0;
-+ i < MAX_ASSOC_SIZE &&
-+ process->association_fakepbuffer_pbuffer[i].key; i++)
-+ if ((ClientGLXDrawable)
-+ process->association_fakepbuffer_pbuffer[i].key ==
-+ fakepbuffer)
-+ break;
-+
-+ if (i < MAX_ASSOC_SIZE) {
-+ process->association_fakepbuffer_pbuffer[i].key = (void *) fakepbuffer;
-+ process->association_fakepbuffer_pbuffer[i].value = (void *) pbuffer;
-+ } else
-+ fprintf(stderr, "MAX_ASSOC_SIZE reached\n");
-+}
-+
-+void unset_association_fakepbuffer_pbuffer(ProcessStruct *process,
-+ ClientGLXDrawable fakepbuffer)
-+{
-+ int i;
-+
-+ for (i = 0; i < MAX_ASSOC_SIZE &&
-+ process->association_fakepbuffer_pbuffer[i].key; i++)
-+ if ((ClientGLXDrawable)
-+ process->association_fakepbuffer_pbuffer[i].key ==
-+ fakepbuffer) {
-+ memmove(&process->association_fakepbuffer_pbuffer[i],
-+ &process->association_fakepbuffer_pbuffer[i + 1],
-+ sizeof(Assoc) * (MAX_ASSOC_SIZE - 1 - i));
-+ return;
-+ }
-+}
-+
-+/* ---- */
-+
-+GLXDrawable get_association_clientdrawable_serverdrawable(
-+ ProcessStruct *process, ClientGLXDrawable clientdrawable)
-+{
-+ int i;
-+
-+ for (i = 0; i < MAX_ASSOC_SIZE &&
-+ process->association_clientdrawable_serverdrawable[i].key;
-+ i++)
-+ if ((ClientGLXDrawable) process->
-+ association_clientdrawable_serverdrawable[i].key ==
-+ clientdrawable)
-+ return (GLXDrawable) process->
-+ association_clientdrawable_serverdrawable[i].value;
-+
-+ return (GLXDrawable) 0;
-+}
-+
-+ClientGLXDrawable get_association_serverdrawable_clientdrawable(
-+ ProcessStruct *process, GLXDrawable serverdrawable)
-+{
-+ int i;
-+
-+ for (i = 0; i < MAX_ASSOC_SIZE &&
-+ process->association_clientdrawable_serverdrawable[i].key;
-+ i ++)
-+ if ((GLXDrawable) process->
-+ association_clientdrawable_serverdrawable[i].value ==
-+ serverdrawable)
-+ return (ClientGLXDrawable)
-+ process->association_clientdrawable_serverdrawable[i].key;
-+
-+ return NULL;
-+}
-+
-+void set_association_clientdrawable_serverdrawable(
-+ ProcessStruct *process, ClientGLXDrawable clientdrawable,
-+ GLXDrawable serverdrawable)
-+{
-+ int i;
-+
-+ for (i = 0; process->association_clientdrawable_serverdrawable[i].key;
-+ i ++)
-+ if ((ClientGLXDrawable) process->
-+ association_clientdrawable_serverdrawable[i].key ==
-+ clientdrawable)
-+ break;
-+
-+ if (i < MAX_ASSOC_SIZE) {
-+ process->association_clientdrawable_serverdrawable[i].key =
-+ (void *) clientdrawable;
-+ process->association_clientdrawable_serverdrawable[i].value =
-+ (void *) serverdrawable;
-+ } else
-+ fprintf(stderr, "MAX_ASSOC_SIZE reached\n");
-+}
-+
-+static void _get_window_pos(Display *dpy, Window win, WindowPosStruct *pos)
-+{
-+ XWindowAttributes window_attributes_return;
-+ Window child;
-+ int x, y;
-+ Window root = DefaultRootWindow(dpy);
-+
-+ XGetWindowAttributes(dpy, win, &window_attributes_return);
-+ XTranslateCoordinates(dpy, win, root, 0, 0, &x, &y, &child);
-+ /* printf("%d %d %d %d\n", x, y, window_attributes_return.width,
-+ * window_attributes_return.height); */
-+ pos->x = x;
-+ pos->y = y;
-+ pos->width = window_attributes_return.width;
-+ pos->height = window_attributes_return.height;
-+ pos->map_state = window_attributes_return.map_state;
-+}
-+
-+static int is_gl_vendor_ati(Display *dpy)
-+{
-+ static int is_gl_vendor_ati_flag = 0;
-+ static int has_init = 0;
-+
-+ if (has_init == 0) {
-+ has_init = 1;
-+ is_gl_vendor_ati_flag =
-+ (strncmp(glXGetClientString(dpy, GLX_VENDOR), "ATI", 3) == 0);
-+ }
-+ return is_gl_vendor_ati_flag;
-+}
-+
-+static int get_server_texture(ProcessStruct *process,
-+ unsigned int client_texture)
-+{
-+ unsigned int server_texture = 0;
-+
-+ if (client_texture < 32768) {
-+ server_texture = process->current_state->tabTextures[client_texture];
-+ } else {
-+ fprintf(stderr, "invalid texture name %d\n", client_texture);
-+ }
-+ return server_texture;
-+}
-+
-+static int get_server_buffer(ProcessStruct *process,
-+ unsigned int client_buffer)
-+{
-+ unsigned int server_buffer = 0;
-+
-+ if (client_buffer < 32768) {
-+ server_buffer = process->current_state->tabBuffers[client_buffer];
-+ } else {
-+ fprintf(stderr, "invalid buffer name %d\n", client_buffer);
-+ }
-+ return server_buffer;
-+}
-+
-+
-+static int get_server_list(ProcessStruct *process, unsigned int client_list)
-+{
-+ unsigned int server_list = 0;
-+
-+ if (client_list < 32768) {
-+ server_list = process->current_state->tabLists[client_list];
-+ } else {
-+ fprintf(stderr, "invalid list name %d\n", client_list);
-+ }
-+ return server_list;
-+}
-+
-+GLXFBConfig get_fbconfig(ProcessStruct *process, int client_fbconfig)
-+{
-+ int i;
-+ int nbtotal = 0;
-+
-+ for (i = 0; i < process->nfbconfig; i++) {
-+ assert(client_fbconfig >= 1 + nbtotal);
-+ if (client_fbconfig <= nbtotal + process->fbconfigs_max[i]) {
-+ return process->fbconfigs[i][client_fbconfig - 1 - nbtotal];
-+ }
-+ nbtotal += process->fbconfigs_max[i];
-+ }
-+ return 0;
-+}
-+
-+typedef struct {
-+ int attribListLength;
-+ int *attribList;
-+ XVisualInfo *visInfo;
-+} AssocAttribListVisual;
-+
-+static int nTabAssocAttribListVisual = 0;
-+static AssocAttribListVisual *tabAssocAttribListVisual = NULL;
-+
-+static int _compute_length_of_attrib_list_including_zero(const int *attribList,
-+ int
-+ booleanMustHaveValue)
-+{
-+ int i = 0;
-+
-+ while (attribList[i]) {
-+ if (booleanMustHaveValue ||
-+ !(attribList[i] == GLX_USE_GL || attribList[i] == GLX_RGBA ||
-+ attribList[i] == GLX_DOUBLEBUFFER ||
-+ attribList[i] == GLX_STEREO)) {
-+ i += 2;
-+ } else {
-+ i++;
-+ }
-+ }
-+ return i + 1;
-+}
-+
-+static int glXChooseVisualFunc(Display *dpy, const int *_attribList)
-+{
-+ if (_attribList == NULL)
-+ return 0;
-+ int attribListLength =
-+ _compute_length_of_attrib_list_including_zero(_attribList, 0);
-+ int i;
-+
-+ int *attribList = malloc(sizeof(int) * attribListLength);
-+ memcpy(attribList, _attribList, sizeof(int) * attribListLength);
-+
-+ i = 0;
-+ while (attribList[i]) {
-+ if (!
-+ (attribList[i] == GLX_USE_GL || attribList[i] == GLX_RGBA ||
-+ attribList[i] == GLX_DOUBLEBUFFER ||
-+ attribList[i] == GLX_STEREO)) {
-+ if (attribList[i] == GLX_SAMPLE_BUFFERS && attribList[i + 1] != 0
-+ && getenv("DISABLE_SAMPLE_BUFFERS")) {
-+ fprintf(stderr, "Disabling GLX_SAMPLE_BUFFERS\n");
-+ attribList[i + 1] = 0;
-+ }
-+ i += 2;
-+ } else {
-+ i++;
-+ }
-+ }
-+
-+ for (i = 0; i < nTabAssocAttribListVisual; i++) {
-+ if (tabAssocAttribListVisual[i].attribListLength == attribListLength
-+ && memcmp(tabAssocAttribListVisual[i].attribList, attribList,
-+ attribListLength * sizeof(int)) == 0) {
-+ free(attribList);
-+ return (tabAssocAttribListVisual[i].
-+ visInfo) ? tabAssocAttribListVisual[i].visInfo->
-+ visualid : 0;
-+ }
-+ }
-+ XVisualInfo *visInfo = glXChooseVisual(dpy, 0, attribList);
-+
-+ tabAssocAttribListVisual = realloc(
-+ tabAssocAttribListVisual, sizeof(AssocAttribListVisual) *
-+ (nTabAssocAttribListVisual + 1));
-+ tabAssocAttribListVisual[nTabAssocAttribListVisual].attribListLength =
-+ attribListLength;
-+ tabAssocAttribListVisual[nTabAssocAttribListVisual].attribList =
-+ (int *) malloc(sizeof(int) * attribListLength);
-+ memcpy(tabAssocAttribListVisual[nTabAssocAttribListVisual].attribList,
-+ attribList, sizeof(int) * attribListLength);
-+ tabAssocAttribListVisual[nTabAssocAttribListVisual].visInfo = visInfo;
-+ nTabAssocAttribListVisual++;
-+ free(attribList);
-+ return (visInfo) ? visInfo->visualid : 0;
-+}
-+
-+static XVisualInfo *get_visual_info_from_visual_id(Display *dpy,
-+ int visualid)
-+{
-+ int i, n;
-+ XVisualInfo template;
-+ XVisualInfo *visInfo;
-+
-+ for (i = 0; i < nTabAssocAttribListVisual; i++) {
-+ if (tabAssocAttribListVisual[i].visInfo &&
-+ tabAssocAttribListVisual[i].visInfo->visualid == visualid) {
-+ return tabAssocAttribListVisual[i].visInfo;
-+ }
-+ }
-+ template.visualid = visualid;
-+ visInfo = XGetVisualInfo(dpy, VisualIDMask, &template, &n);
-+ tabAssocAttribListVisual =
-+ realloc(tabAssocAttribListVisual,
-+ sizeof(AssocAttribListVisual) * (nTabAssocAttribListVisual +
-+ 1));
-+ tabAssocAttribListVisual[nTabAssocAttribListVisual].attribListLength = 0;
-+ tabAssocAttribListVisual[nTabAssocAttribListVisual].attribList = NULL;
-+ tabAssocAttribListVisual[nTabAssocAttribListVisual].visInfo = visInfo;
-+ nTabAssocAttribListVisual++;
-+ return visInfo;
-+}
-+
-+typedef struct {
-+ int x;
-+ int y;
-+ int width;
-+ int height;
-+ int xhot;
-+ int yhot;
-+ int *pixels;
-+} ClientCursor;
-+
-+#if 0
-+static ClientCursor client_cursor = { 0 };
-+#endif
-+
-+static void do_glClientActiveTextureARB(int texture)
-+{
-+ GET_EXT_PTR_NO_FAIL(void, glClientActiveTextureARB, (int));
-+
-+ if (ptr_func_glClientActiveTextureARB) {
-+ ptr_func_glClientActiveTextureARB(texture);
-+ }
-+}
-+
-+#ifdef CURSOR_TRICK
-+static void do_glActiveTextureARB(int texture)
-+{
-+ GET_EXT_PTR_NO_FAIL(void, glActiveTextureARB, (int));
-+
-+ if (ptr_func_glActiveTextureARB) {
-+ ptr_func_glActiveTextureARB(texture);
-+ }
-+}
-+
-+static void do_glUseProgramObjectARB(GLhandleARB programObj)
-+{
-+ GET_EXT_PTR_NO_FAIL(void, glUseProgramObjectARB, (GLhandleARB));
-+
-+ if (ptr_func_glUseProgramObjectARB) {
-+ ptr_func_glUseProgramObjectARB(programObj);
-+ }
-+}
-+#endif
-+
-+static void destroy_gl_state(GLState *state)
-+{
-+ int i;
-+
-+ if (state->vertexPointer)
-+ free(state->vertexPointer);
-+ if (state->normalPointer)
-+ free(state->normalPointer);
-+ if (state->indexPointer)
-+ free(state->indexPointer);
-+ if (state->colorPointer)
-+ free(state->colorPointer);
-+ if (state->secondaryColorPointer)
-+ free(state->secondaryColorPointer);
-+ for (i = 0; i < NB_MAX_TEXTURES; i++) {
-+ if (state->texCoordPointer[i])
-+ free(state->texCoordPointer[i]);
-+ }
-+ for (i = 0; i < MY_GL_MAX_VERTEX_ATTRIBS_ARB; i++) {
-+ if (state->vertexAttribPointer[i])
-+ free(state->vertexAttribPointer[i]);
-+ }
-+ for (i = 0; i < MY_GL_MAX_VERTEX_ATTRIBS_NV; i++) {
-+ if (state->vertexAttribPointerNV[i])
-+ free(state->vertexAttribPointerNV[i]);
-+ }
-+ if (state->weightPointer)
-+ free(state->weightPointer);
-+ if (state->matrixIndexPointer)
-+ free(state->matrixIndexPointer);
-+ if (state->fogCoordPointer)
-+ free(state->fogCoordPointer);
-+ for (i = 0; i < MY_GL_MAX_VARIANT_POINTER_EXT; i++) {
-+ if (state->variantPointerEXT[i])
-+ free(state->variantPointerEXT[i]);
-+ }
-+ if (state->interleavedArrays)
-+ free(state->interleavedArrays);
-+ if (state->elementPointerATI)
-+ free(state->elementPointerATI);
-+}
-+
-+static void init_gl_state(GLState *state)
-+{
-+ state->textureAllocator = &state->ownTextureAllocator;
-+ state->tabTextures = state->ownTabTextures;
-+ state->bufferAllocator = &state->ownBufferAllocator;
-+ state->tabBuffers = state->ownTabBuffers;
-+ state->listAllocator = &state->ownListAllocator;
-+ state->tabLists = state->ownTabLists;
-+}
-+
-+/*
-+ * Translate the nth element of list from type to GLuint.
-+ */
-+static GLuint translate_id(GLsizei n, GLenum type, const GLvoid *list)
-+{
-+ GLbyte *bptr;
-+ GLubyte *ubptr;
-+ GLshort *sptr;
-+ GLushort *usptr;
-+ GLint *iptr;
-+ GLuint *uiptr;
-+ GLfloat *fptr;
-+
-+ switch (type) {
-+ case GL_BYTE:
-+ bptr = (GLbyte *) list;
-+ return (GLuint) *(bptr + n);
-+ case GL_UNSIGNED_BYTE:
-+ ubptr = (GLubyte *) list;
-+ return (GLuint) *(ubptr + n);
-+ case GL_SHORT:
-+ sptr = (GLshort *) list;
-+ return (GLuint) *(sptr + n);
-+ case GL_UNSIGNED_SHORT:
-+ usptr = (GLushort *) list;
-+ return (GLuint) *(usptr + n);
-+ case GL_INT:
-+ iptr = (GLint *) list;
-+ return (GLuint) *(iptr + n);
-+ case GL_UNSIGNED_INT:
-+ uiptr = (GLuint *) list;
-+ return (GLuint) *(uiptr + n);
-+ case GL_FLOAT:
-+ fptr = (GLfloat *) list;
-+ return (GLuint) *(fptr + n);
-+ case GL_2_BYTES:
-+ ubptr = ((GLubyte *) list) + 2 * n;
-+ return (GLuint) *ubptr * 256 + (GLuint) *(ubptr + 1);
-+ case GL_3_BYTES:
-+ ubptr = ((GLubyte *) list) + 3 * n;
-+ return (GLuint) *ubptr * 65536 + (GLuint) *(ubptr + 1) * 256 +
-+ (GLuint) *(ubptr + 2);
-+ case GL_4_BYTES:
-+ ubptr = ((GLubyte *) list) + 4 * n;
-+ return (GLuint) *ubptr * 16777216 + (GLuint) *(ubptr + 1) * 65536 +
-+ (GLuint) *(ubptr + 2) * 256 + (GLuint) *(ubptr + 3);
-+ default:
-+ return 0;
-+ }
-+}
-+
-+void _create_context(ProcessStruct *process, GLXContext ctxt, int fake_ctxt,
-+ GLXContext shareList, int fake_shareList)
-+{
-+ process->glstates =
-+ realloc(process->glstates,
-+ (process->nb_states + 1) * sizeof(GLState *));
-+ process->glstates[process->nb_states] = malloc(sizeof(GLState));
-+ memset(process->glstates[process->nb_states], 0, sizeof(GLState));
-+ process->glstates[process->nb_states]->ref = 1;
-+ process->glstates[process->nb_states]->context = ctxt;
-+ process->glstates[process->nb_states]->fake_ctxt = fake_ctxt;
-+ process->glstates[process->nb_states]->fake_shareList = fake_shareList;
-+ init_gl_state(process->glstates[process->nb_states]);
-+ if (shareList && fake_shareList) {
-+ int i;
-+
-+ for (i = 0; i < process->nb_states; i++) {
-+ if (process->glstates[i]->fake_ctxt == fake_shareList) {
-+ process->glstates[i]->ref++;
-+ process->glstates[process->nb_states]->textureAllocator =
-+ process->glstates[i]->textureAllocator;
-+ process->glstates[process->nb_states]->tabTextures =
-+ process->glstates[i]->tabTextures;
-+ process->glstates[process->nb_states]->bufferAllocator =
-+ process->glstates[i]->bufferAllocator;
-+ process->glstates[process->nb_states]->tabBuffers =
-+ process->glstates[i]->tabBuffers;
-+ process->glstates[process->nb_states]->listAllocator =
-+ process->glstates[i]->listAllocator;
-+ process->glstates[process->nb_states]->tabLists =
-+ process->glstates[i]->tabLists;
-+ break;
-+ }
-+ }
-+ }
-+ process->nb_states++;
-+}
-+
-+static ProcessStruct *process;
-+
-+void do_disconnect_current(void)
-+{
-+ int i;
-+ Display *dpy = process->dpy;
-+
-+ glXMakeCurrent(dpy, 0, NULL);
-+
-+ for (i = 0; i < MAX_ASSOC_SIZE &&
-+ process->association_fakecontext_glxcontext[i].key; i ++) {
-+ GLXContext ctxt = process->association_fakecontext_glxcontext[i].value;
-+
-+ fprintf(stderr, "Destroy context corresponding to fake_context"
-+ " = %ld\n", (long) process->
-+ association_fakecontext_glxcontext[i].key);
-+ glXDestroyContext(dpy, ctxt);
-+ }
-+
-+ GET_EXT_PTR(void, glXDestroyPbuffer, (Display *, GLXPbuffer));
-+
-+ for (i = 0; i < MAX_ASSOC_SIZE &&
-+ process->association_fakepbuffer_pbuffer[i].key; i ++) {
-+ GLXPbuffer pbuffer = (GLXPbuffer)
-+ process->association_fakepbuffer_pbuffer[i].value;
-+
-+ fprintf(stderr, "Destroy pbuffer corresponding to fake_pbuffer"
-+ " = %ld\n", (long) process->
-+ association_fakepbuffer_pbuffer[i].key);
-+ if (!is_gl_vendor_ati(dpy))
-+ ptr_func_glXDestroyPbuffer(dpy, pbuffer);
-+ }
-+
-+ for (i = 0; i < MAX_ASSOC_SIZE && process->
-+ association_clientdrawable_serverdrawable[i].key; i ++) {
-+ Window win = (Window) process->
-+ association_clientdrawable_serverdrawable[i].value;
-+
-+ fprintf(stderr, "Destroy window %x corresponding to client_drawable "
-+ "= %p\n", (int) win, process->
-+ association_clientdrawable_serverdrawable[i].key);
-+
-+ XDestroyWindow(dpy, win);
-+ if (active_win == win)
-+ active_win = 0;
-+
-+ int loop = 1; // 1;
-+ while (loop) {
-+ while (XPending(dpy) > 0) {
-+ XEvent event;
-+
-+ XNextEvent(dpy, &event);
-+ switch (event.type) {
-+ case DestroyNotify:
-+ {
-+ if (((XDestroyWindowEvent *) &event)->window == win)
-+ loop = 0;
-+ break;
-+ }
-+ }
-+ }
-+ break; /* TODO */
-+ }
-+ }
-+
-+ for (i = 0; i < process->nb_states; i++) {
-+ destroy_gl_state(process->glstates[i]);
-+ free(process->glstates[i]);
-+ }
-+ destroy_gl_state(&process->default_state);
-+ free(process->glstates);
-+
-+ if (process->cmdbuf)
-+ qemu_free(process->cmdbuf);
-+
-+ for (i = 0; &processes[i] != process; i ++);
-+ memmove(&processes[i], &processes[i + 1],
-+ (MAX_HANDLED_PROCESS - 1 - i) * sizeof(ProcessStruct));
-+}
-+
-+static const int beginend_allowed[GL_N_CALLS] = {
-+#undef MAGIC_MACRO
-+#define MAGIC_MACRO(name) [name ## _func] = 1,
-+#include "gl_beginend.h"
-+};
-+
-+void do_context_switch(Display *dpy, pid_t pid, int call)
-+{
-+ int i;
-+
-+ for (i = 0; i < MAX_HANDLED_PROCESS; i ++)
-+ if (processes[i].process_id == pid) {
-+ process = &processes[i];
-+ break;
-+ } else if (processes[i].process_id == 0) {
-+ process = &processes[i];
-+ memset(process, 0, sizeof(ProcessStruct));
-+ process->process_id = pid;
-+ init_gl_state(&process->default_state);
-+ process->current_state = &process->default_state;
-+ process->dpy = dpy;
-+ break;
-+ }
-+ if (process == NULL) {
-+ fprintf(stderr, "Too many processes !\n");
-+ exit(-1);
-+ }
-+
-+ switch (call) {
-+ case _init32_func:
-+ case _init64_func:
-+ case _exit_process_func:
-+ case glXMakeCurrent_func:
-+ /* Do nothing */
-+ break;
-+
-+ default:
-+#if 0
-+ glFlush();
-+ glFinish();
-+ glXSwapBuffers(dpy, drawable);
-+ if (process->current_state == &process->default_state)
-+ /* Where do commands like glViewport go when no drawable or
-+ * context are current - i.e. after a call to
-+ * glXMakeCurrent(dpy, 0, 0) ? */;
-+ else
-+#endif
-+ glXMakeCurrent(dpy, process->current_state->drawable,
-+ process->current_state->context);
-+ }
-+}
-+
-+int do_function_call(int func_number, arg_t *args, char *ret_string)
-+{
-+ char ret_char = 0;
-+ int ret_int = 0;
-+ const char *ret_str = NULL;
-+ Display *dpy = process->dpy;
-+ Signature *signature = (Signature *) tab_opengl_calls[func_number];
-+ int ret_type = signature->ret_type;
-+
-+ if (parent_dpy)
-+ dpy = parent_dpy;
-+
-+ process->instr_counter++;
-+ if (display_function_call)
-+ fprintf(stderr, "[%d]> %s\n", process->instr_counter,
-+ tab_opengl_calls_name[func_number]);
-+
-+#ifdef BUFFER_BEGINEND
-+ if (process->began) {
-+ /* Need to check for any errors now because later we won't have
-+ * a chance to report them. */
-+ if (beginend_allowed[func_number]) {
-+ arg_t *buf = cmd_buffer_alloc(process, signature->nb_args + 1);
-+
-+ /* TODO: pointer arguments */
-+ buf[0] = func_number;
-+ memcpy(buf + 1, args, signature->nb_args * sizeof(arg_t));
-+ } else if (likely(func_number == glEnd_func)) {
-+ process->began = 0;
-+
-+ glBegin(process->primitive);
-+ cmd_buffer_replay(process);
-+ glEnd();
-+ } else {
-+ /* TODO: properly report */
-+#ifdef SYSTEMATIC_ERROR_CHECK
-+ process->current_state->last_error = INVALID_OPERATION;
-+#endif
-+ }
-+
-+ func_number = -1;
-+ }
-+#endif
-+
-+ switch (func_number) {
-+ case -1:
-+ break;
-+
-+ case _init_func:
-+ *(int *) args[1] = 1;
-+ break;
-+
-+ case _synchronize_func:
-+ ret_int = 1;
-+ break;
-+
-+ case _exit_process_func:
-+ do_disconnect_current();
-+ break;
-+
-+ case _changeWindowState_func:
-+ {
-+ ClientGLXDrawable client_drawable = to_drawable(args[0]);
-+
-+ if (display_function_call)
-+ fprintf(stderr, "client_drawable=%p\n",
-+ (void *) client_drawable);
-+
-+ GLXDrawable drawable =
-+ get_association_clientdrawable_serverdrawable(
-+ process, client_drawable);
-+ if (drawable) {
-+ if (args[1] == IsViewable) {
-+ WindowPosStruct pos;
-+
-+ _get_window_pos(dpy, drawable, &pos);
-+ if (pos.map_state != args[1]) {
-+ XMapWindow(dpy, drawable);
-+
-+ int loop = 1; // 1;
-+
-+ while (loop) {
-+ while (XPending(dpy) > 0) {
-+ XEvent event;
-+
-+ XNextEvent(dpy, &event);
-+ switch (event.type) {
-+ case ConfigureNotify:
-+ {
-+ if (((XConfigureEvent *) &event)->
-+ window == drawable) {
-+ loop = 0;
-+ }
-+ break;
-+ }
-+ }
-+ }
-+ break; /* TODO */
-+ }
-+ }
-+ }
-+ }
-+
-+ break;
-+ }
-+
-+ case _moveResizeWindow_func:
-+ {
-+ int *params = (int *) args[1];
-+ ClientGLXDrawable client_drawable = to_drawable(args[0]);
-+
-+ if (display_function_call)
-+ fprintf(stderr, "client_drawable=%p\n",
-+ (void *) client_drawable);
-+
-+ GLXDrawable drawable =
-+ get_association_clientdrawable_serverdrawable(
-+ process, client_drawable);
-+ if (drawable) {
-+ WindowPosStruct pos;
-+
-+ _get_window_pos(dpy, drawable, &pos);
-+ if (!
-+ (params[0] == pos.x && params[1] == pos.y &&
-+ params[2] == pos.width && params[3] == pos.height)) {
-+ int redim = !(params[2] == pos.width &&
-+ params[3] == pos.height);
-+ active_win_x = params[0];
-+ active_win_y = params[1];
-+
-+ fprintf(stderr, "old x=%d y=%d width=%d height=%d\n",
-+ pos.x, pos.y, pos.width, pos.height);
-+ fprintf(stderr, "new x=%d y=%d width=%d height=%d\n",
-+ params[0], params[1], params[2], params[3]);
-+ XMoveResizeWindow(dpy, drawable, params[0], params[1],
-+ params[2], params[3]);
-+ int loop = 0; // = 1
-+
-+ while (loop) {
-+ while (XPending(dpy) > 0) {
-+ XEvent event;
-+
-+ XNextEvent(dpy, &event);
-+ switch (event.type) {
-+ case ConfigureNotify:
-+ {
-+ if (((XConfigureEvent *) &event)->
-+ window == drawable) {
-+ loop = 0;
-+ }
-+ break;
-+ }
-+ }
-+ }
-+ }
-+ /* The window should have resized by now, but force the
-+ * new size anyway. */
-+ _get_window_pos(dpy, drawable, &pos);
-+ pos.width = params[2];
-+ pos.height = params[3];
-+ process->currentDrawablePos = pos;
-+ // if (getenv("FORCE_GL_VIEWPORT"))
-+ if (redim)
-+ glViewport(0, 0, pos.width, pos.height);
-+ }
-+ }
-+ break;
-+ }
-+
-+ case _send_cursor_func:
-+ {
-+#if 0
-+ int x = args[0];
-+ int y = args[1];
-+ int width = args[2];
-+ int height = args[3];
-+ int xhot = args[4];
-+ int yhot = args[5];
-+ int *pixels = (int *) args[6];
-+
-+ client_cursor.x = x;
-+ client_cursor.y = y;
-+ client_cursor.width = width;
-+ client_cursor.height = height;
-+ client_cursor.xhot = xhot;
-+ client_cursor.yhot = yhot;
-+ if (pixels) {
-+ client_cursor.pixels =
-+ realloc(client_cursor.pixels,
-+ client_cursor.width * client_cursor.height *
-+ sizeof(int));
-+ memcpy(client_cursor.pixels, pixels,
-+ client_cursor.width * client_cursor.height *
-+ sizeof(int));
-+ }
-+ int in_window = (x >= 0 && y >= 0 &&
-+ x < process->currentDrawablePos.width &&
-+ y < process->currentDrawablePos.height);
-+ // fprintf(stderr, "cursor at %d %d (%s)\n", x, y, (in_window) ?
-+ // "in window" : "not in window");
-+#endif
-+ break;
-+ }
-+
-+#ifdef BUFFER_BEGINEND
-+ case glBegin_func:
-+ process->began = 1;
-+ process->primitive = args[0];
-+ break;
-+#endif
-+
-+ case glXWaitGL_func:
-+ {
-+ glXWaitGL();
-+ ret_int = 0;
-+ break;
-+ }
-+
-+ case glXWaitX_func:
-+ {
-+ glXWaitX();
-+ ret_int = 0;
-+ break;
-+ }
-+
-+ case glXChooseVisual_func:
-+ {
-+ ret_int = glXChooseVisualFunc(dpy, (int *) args[2]);
-+ break;
-+ }
-+
-+ case glXQueryExtensionsString_func:
-+ {
-+ ret_str = glXQueryExtensionsString(dpy, 0);
-+ break;
-+ }
-+
-+ case glXQueryServerString_func:
-+ {
-+ ret_str = glXQueryServerString(dpy, 0, args[2]);
-+ break;
-+ }
-+
-+ case glXGetClientString_func:
-+ {
-+ ret_str = glXGetClientString(dpy, args[1]);
-+ break;
-+ }
-+
-+ case glXGetScreenDriver_func:
-+ {
-+ GET_EXT_PTR(const char *, glXGetScreenDriver, (Display *, int));
-+
-+ ret_str = ptr_func_glXGetScreenDriver(dpy, 0);
-+ break;
-+ }
-+
-+ case glXGetDriverConfig_func:
-+ {
-+ GET_EXT_PTR(const char *, glXGetDriverConfig, (const char *));
-+
-+ ret_str = ptr_func_glXGetDriverConfig((const char *) args[0]);
-+ break;
-+ }
-+
-+ case glXCreateContext_func:
-+ {
-+ int visualid = (int) args[1];
-+ int fake_shareList = (int) args[2];
-+
-+ if (1 || display_function_call)
-+ fprintf(stderr, "visualid=%d, fake_shareList=%d\n", visualid,
-+ fake_shareList);
-+
-+ GLXContext shareList = get_association_fakecontext_glxcontext(
-+ process, fake_shareList);
-+ XVisualInfo *vis = get_visual_info_from_visual_id(dpy, visualid);
-+ GLXContext ctxt;
-+
-+ if (vis) {
-+ ctxt = glXCreateContext(dpy, vis, shareList, args[3]);
-+ } else {
-+ vis = get_default_visual(dpy);
-+ int saved_visualid = vis->visualid;
-+
-+ vis->visualid = visualid ?: saved_visualid;
-+ ctxt = glXCreateContext(dpy, vis, shareList, args[3]);
-+ vis->visualid = saved_visualid;
-+ }
-+
-+ if (ctxt) {
-+ int fake_ctxt =++ process->next_available_context_number;
-+
-+ set_association_fakecontext_visual(process, fake_ctxt, vis);
-+ set_association_fakecontext_glxcontext(process,
-+ fake_ctxt, ctxt);
-+ ret_int = fake_ctxt;
-+
-+ _create_context(process, ctxt, fake_ctxt, shareList,
-+ fake_shareList);
-+ } else {
-+ ret_int = 0;
-+ }
-+
-+ break;
-+ }
-+
-+
-+ case glXCreateNewContext_func:
-+ {
-+ GET_EXT_PTR(GLXContext, glXCreateNewContext,
-+ (Display *, GLXFBConfig, int, GLXContext, int));
-+ int client_fbconfig = args[1];
-+
-+ ret_int = 0;
-+ GLXFBConfig fbconfig = get_fbconfig(process, client_fbconfig);
-+
-+ if (fbconfig) {
-+ int fake_shareList = args[3];
-+ GLXContext shareList = get_association_fakecontext_glxcontext(
-+ process, fake_shareList);
-+ process->next_available_context_number++;
-+ int fake_ctxt = process->next_available_context_number;
-+ GLXContext ctxt = ptr_func_glXCreateNewContext(
-+ dpy, fbconfig, args[2], shareList, args[4]);
-+ set_association_fakecontext_glxcontext(
-+ process, fake_ctxt, ctxt);
-+ ret_int = fake_ctxt;
-+
-+ _create_context(process, ctxt, fake_ctxt, shareList,
-+ fake_shareList);
-+ }
-+ break;
-+ }
-+
-+ case glXCopyContext_func:
-+ {
-+ int fake_src_ctxt = (int) args[1];
-+ int fake_dst_ctxt = (int) args[2];
-+ GLXContext src_ctxt;
-+ GLXContext dst_ctxt;
-+
-+ if (display_function_call)
-+ fprintf(stderr, "fake_src_ctxt=%i, fake_dst_ctxt=%i\n",
-+ fake_src_ctxt, fake_dst_ctxt);
-+
-+ if (!(src_ctxt = get_association_fakecontext_glxcontext(
-+ process, fake_src_ctxt)))
-+ fprintf(stderr, "invalid fake_src_ctxt (%i) !\n",
-+ fake_src_ctxt);
-+ else
-+ if (!(dst_ctxt = get_association_fakecontext_glxcontext(
-+ process, fake_dst_ctxt))) {
-+ fprintf(stderr, "invalid fake_dst_ctxt (%i) !\n",
-+ fake_dst_ctxt);
-+ } else
-+ glXCopyContext(dpy, src_ctxt, dst_ctxt, args[3]);
-+
-+ break;
-+ }
-+
-+ case glXDestroyContext_func:
-+ {
-+ int fake_ctxt = (int) args[1];
-+
-+ if (display_function_call)
-+ fprintf(stderr, "fake_ctxt=%d\n", fake_ctxt);
-+
-+ GLXContext ctxt = get_association_fakecontext_glxcontext(
-+ process, fake_ctxt);
-+ if (ctxt == NULL) {
-+ fprintf(stderr, "invalid fake_ctxt (%p) !\n",
-+ (void *) (long) fake_ctxt);
-+ } else {
-+ int i;
-+
-+ for (i = 0; i < process->nb_states; i ++) {
-+ if (process->glstates[i]->fake_ctxt == fake_ctxt) {
-+ if (ctxt == process->current_state->context)
-+ process->current_state = &process->default_state;
-+
-+ int fake_shareList =
-+ process->glstates[i]->fake_shareList;
-+ process->glstates[i]->ref--;
-+ if (process->glstates[i]->ref == 0) {
-+ fprintf(stderr,
-+ "destroy_gl_state fake_ctxt = %d\n",
-+ process->glstates[i]->fake_ctxt);
-+ destroy_gl_state(process->glstates[i]);
-+ free(process->glstates[i]);
-+ memmove(&process->glstates[i],
-+ &process->glstates[i + 1],
-+ (process->nb_states - i - 1) *
-+ sizeof(GLState *));
-+ process->nb_states --;
-+ }
-+
-+ if (fake_shareList) {
-+ for (i = 0; i < process->nb_states; i++) {
-+ if (process->glstates[i]->fake_ctxt ==
-+ fake_shareList) {
-+ process->glstates[i]->ref--;
-+ if (process->glstates[i]->ref == 0) {
-+ fprintf(stderr,
-+ "destroy_gl_state fake_ctxt = %d\n",
-+ process->glstates[i]->
-+ fake_ctxt);
-+ destroy_gl_state(process->
-+ glstates[i]);
-+ free(process->glstates[i]);
-+ memmove(&process->glstates[i],
-+ &process->glstates[i + 1],
-+ (process->nb_states - i - 1) *
-+ sizeof(GLState *));
-+ process->nb_states --;
-+ }
-+ break;
-+ }
-+ }
-+ }
-+
-+ glXDestroyContext(dpy, ctxt);
-+ unset_association_fakecontext_glxcontext(
-+ process, fake_ctxt);
-+
-+ break;
-+ }
-+ }
-+ }
-+ break;
-+ }
-+
-+ case glXQueryVersion_func:
-+ {
-+ ret_int = glXQueryVersion(dpy, (int *) args[1], (int *) args[2]);
-+ break;
-+ }
-+
-+ case glGetString_func:
-+ {
-+ ret_str = (char *) glGetString(args[0]);
-+ break;
-+ }
-+
-+ case glXMakeCurrent_func:
-+ {
-+ int i;
-+ ClientGLXDrawable client_drawable = to_drawable(args[1]);
-+ GLXDrawable drawable = 0;
-+ int fake_ctxt = (int) args[2];
-+
-+ if (display_function_call)
-+ fprintf(stderr, "client_drawable=%p fake_ctx=%d\n",
-+ (void *) client_drawable, fake_ctxt);
-+
-+ if (client_drawable == 0 && fake_ctxt == 0) {
-+ ret_int = glXMakeCurrent(dpy, 0, NULL);
-+ process->current_state = &process->default_state;
-+ } else if ((drawable = (GLXDrawable)
-+ get_association_fakepbuffer_pbuffer(
-+ process, client_drawable))) {
-+ GLXContext ctxt = get_association_fakecontext_glxcontext(
-+ process, fake_ctxt);
-+ if (ctxt == NULL) {
-+ fprintf(stderr, "invalid fake_ctxt (%d) (*)!\n",
-+ fake_ctxt);
-+ ret_int = 0;
-+ } else
-+ ret_int = glXMakeCurrent(dpy, drawable, ctxt);
-+ } else {
-+ GLXContext ctxt = get_association_fakecontext_glxcontext(
-+ process, fake_ctxt);
-+ if (ctxt == NULL) {
-+ fprintf(stderr, "invalid fake_ctxt (%d)!\n", fake_ctxt);
-+ ret_int = 0;
-+ } else {
-+ drawable = get_association_clientdrawable_serverdrawable(
-+ process, client_drawable);
-+ if (drawable == 0) {
-+ XVisualInfo *vis = get_association_fakecontext_visual(
-+ process, fake_ctxt);
-+ if (vis == NULL)
-+ vis = get_default_visual(dpy);
-+ /* if (local_connection) drawable = client_drawable;
-+ * else */
-+ {
-+ if ((int) (long) client_drawable ==
-+ RootWindow(dpy, 0) &&
-+ local_connection) {
-+ drawable = (GLXDrawable) client_drawable;
-+ } else {
-+ drawable = create_window(
-+ dpy, local_connection ?
-+ (Window) client_drawable :
-+ 0, vis, "", 0, 0, 16, 16);
-+ }
-+ }
-+ set_association_clientdrawable_serverdrawable(process,
-+ client_drawable, drawable);
-+ }
-+
-+ ret_int = glXMakeCurrent(dpy, drawable, ctxt);
-+ }
-+ }
-+
-+ if (ret_int) {
-+ for (i = 0; i < process->nb_states; i ++) {
-+ if (process->glstates[i]->fake_ctxt == fake_ctxt) {
-+ /* HACK !!! REMOVE */
-+ process->current_state = process->glstates[i];
-+ process->current_state->drawable = drawable;
-+ break;
-+ }
-+ }
-+
-+ if (i == process->nb_states) {
-+ fprintf(stderr, "error remembering the new context\n");
-+ exit(-1);
-+ }
-+ }
-+ break;
-+ }
-+
-+ case glXSwapBuffers_func:
-+ {
-+ ClientGLXDrawable client_drawable = to_drawable(args[1]);
-+
-+ if (display_function_call)
-+ fprintf(stderr, "client_drawable=%p\n", client_drawable);
-+
-+ GLXDrawable drawable =
-+ get_association_clientdrawable_serverdrawable(
-+ process, client_drawable);
-+ if (!drawable) {
-+ fprintf(stderr, "unknown client_drawable (%p) !\n",
-+ (void *) client_drawable);
-+ } else {
-+#ifdef CURSOR_TRICK
-+ if (client_cursor.pixels && local_connection == 0) {
-+ glPushAttrib(GL_ALL_ATTRIB_BITS);
-+ glPushClientAttrib(GL_ALL_ATTRIB_BITS);
-+
-+ glMatrixMode(GL_PROJECTION);
-+ glPushMatrix();
-+ glLoadIdentity();
-+ glOrtho(0, process->currentDrawablePos.width,
-+ process->currentDrawablePos.height, 0, -1, 1);
-+ glMatrixMode(GL_MODELVIEW);
-+ glPushMatrix();
-+ glLoadIdentity();
-+ glPixelZoom(1, -1);
-+
-+ glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
-+ glPixelStorei(GL_UNPACK_SKIP_ROWS, 0);
-+ glPixelStorei(GL_UNPACK_SWAP_BYTES, 0);
-+ glPixelStorei(GL_UNPACK_LSB_FIRST, 0);
-+ glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
-+ glShadeModel(GL_SMOOTH);
-+
-+ glEnable(GL_BLEND);
-+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-+ glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
-+
-+ int i, numUnits;
-+
-+ glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &numUnits);
-+ for (i = 0; i < numUnits; i++) {
-+ do_glActiveTextureARB(GL_TEXTURE0_ARB + i);
-+ glDisable(GL_TEXTURE_1D);
-+ glDisable(GL_TEXTURE_2D);
-+ glDisable(GL_TEXTURE_3D);
-+ }
-+ glDisable(GL_ALPHA_TEST);
-+ glDisable(GL_DEPTH_TEST);
-+ glDisable(GL_STENCIL_TEST);
-+ glDisable(GL_SCISSOR_TEST);
-+ glDisable(GL_FRAGMENT_PROGRAM_ARB);
-+ glDisable(GL_VERTEX_PROGRAM_ARB);
-+ do_glUseProgramObjectARB(0);
-+
-+ // memset(client_cursor.pixels, 255, client_cursor.width
-+ // * client_cursor.height * sizeof(int));
-+
-+ glRasterPos2d(client_cursor.x - client_cursor.xhot,
-+ client_cursor.y - client_cursor.yhot);
-+ glDrawPixels(client_cursor.width, client_cursor.height,
-+ GL_BGRA, GL_UNSIGNED_BYTE,
-+ client_cursor.pixels);
-+
-+ glMatrixMode(GL_MODELVIEW);
-+ glPopMatrix();
-+
-+ glMatrixMode(GL_PROJECTION);
-+ glPopMatrix();
-+
-+ glPopClientAttrib();
-+ glPopAttrib();
-+ }
-+#endif
-+
-+ ////////// HORRIBLE HORRIBLE HACK
-+ if (drawable != active_win && active_win) {
-+ glXMakeCurrent(dpy, active_win,
-+ processes[0].current_state->context);
-+ glXSwapBuffers(dpy, active_win);
-+ glXMakeCurrent(dpy, process->current_state->drawable,
-+ process->current_state->context);
-+ }
-+ glXSwapBuffers(dpy, drawable);
-+ }
-+ break;
-+ }
-+
-+ case glXIsDirect_func:
-+ {
-+ int fake_ctxt = (int) args[1];
-+
-+ if (display_function_call)
-+ fprintf(stderr, "fake_ctx=%x\n", fake_ctxt);
-+ GLXContext ctxt =
-+ get_association_fakecontext_glxcontext(process, fake_ctxt);
-+ if (ctxt == NULL) {
-+ fprintf(stderr, "invalid fake_ctxt (%x) !\n", fake_ctxt);
-+ ret_char = False;
-+ } else {
-+ ret_char = glXIsDirect(dpy, ctxt);
-+ }
-+ break;
-+ }
-+
-+ case glXGetConfig_func:
-+ {
-+ int visualid = args[1];
-+ XVisualInfo *vis = NULL;
-+
-+ if (visualid)
-+ vis = get_visual_info_from_visual_id(dpy, visualid);
-+ if (vis == NULL)
-+ vis = get_default_visual(dpy);
-+ ret_int = glXGetConfig(dpy, vis, args[2], (int *) args[3]);
-+ break;
-+ }
-+
-+ case glXGetConfig_extended_func:
-+ {
-+ int visualid = args[1];
-+ int n = args[2];
-+ int i;
-+ XVisualInfo *vis = NULL;
-+ int *attribs = (int *) args[3];
-+ int *values = (int *) args[4];
-+ int *res = (int *) args[5];
-+
-+ if (visualid)
-+ vis = get_visual_info_from_visual_id(dpy, visualid);
-+ if (vis == NULL)
-+ vis = get_default_visual(dpy);
-+
-+ for (i = 0; i < n; i++) {
-+ res[i] = glXGetConfig(dpy, vis, attribs[i], &values[i]);
-+ }
-+ break;
-+ }
-+
-+ case glXUseXFont_func:
-+ {
-+ /* implementation is client-side only :-) */
-+ break;
-+ }
-+
-+ case glXQueryExtension_func:
-+ {
-+ ret_int =
-+ glXQueryExtension(dpy, (int *) args[1], (int *) args[2]);
-+ break;
-+ }
-+
-+ case glXChooseFBConfig_func:
-+ {
-+ GET_EXT_PTR(GLXFBConfig *, glXChooseFBConfig,
-+ (Display *, int, int *, int *));
-+ if (process->nfbconfig == MAX_FBCONFIG) {
-+ *(int *) args[3] = 0;
-+ ret_int = 0;
-+ } else {
-+ GLXFBConfig *fbconfigs =
-+ ptr_func_glXChooseFBConfig(dpy, args[1], (int *) args[2],
-+ (int *) args[3]);
-+ if (fbconfigs) {
-+ process->fbconfigs[process->nfbconfig] = fbconfigs;
-+ process->fbconfigs_max[process->nfbconfig] =
-+ *(int *) args[3];
-+ process->nfbconfig++;
-+ ret_int = 1 + process->nfbconfig_total;
-+ process->nfbconfig_total +=
-+ process->fbconfigs_max[process->nfbconfig];
-+ } else {
-+ ret_int = 0;
-+ }
-+ }
-+ break;
-+ }
-+
-+ case glXChooseFBConfigSGIX_func:
-+ {
-+ GET_EXT_PTR(GLXFBConfigSGIX *, glXChooseFBConfigSGIX,
-+ (Display *, int, int *, int *));
-+ if (process->nfbconfig == MAX_FBCONFIG) {
-+ *(int *) args[3] = 0;
-+ ret_int = 0;
-+ } else {
-+ GLXFBConfigSGIX *fbconfigs =
-+ ptr_func_glXChooseFBConfigSGIX(dpy, args[1],
-+ (int *) args[2],
-+ (int *) args[3]);
-+ if (fbconfigs) {
-+ process->fbconfigs[process->nfbconfig] = fbconfigs;
-+ process->fbconfigs_max[process->nfbconfig] =
-+ *(int *) args[3];
-+ process->nfbconfig++;
-+ ret_int = 1 + process->nfbconfig_total;
-+ process->nfbconfig_total +=
-+ process->fbconfigs_max[process->nfbconfig];
-+ } else {
-+ ret_int = 0;
-+ }
-+ }
-+ break;
-+ }
-+
-+ case glXGetFBConfigs_func:
-+ {
-+ GET_EXT_PTR(GLXFBConfig *, glXGetFBConfigs,
-+ (Display *, int, int *));
-+ if (process->nfbconfig == MAX_FBCONFIG) {
-+ *(int *) args[2] = 0;
-+ ret_int = 0;
-+ } else {
-+ GLXFBConfig *fbconfigs =
-+ ptr_func_glXGetFBConfigs(dpy, args[1], (int *) args[2]);
-+ if (fbconfigs) {
-+ process->fbconfigs[process->nfbconfig] = fbconfigs;
-+ process->fbconfigs_max[process->nfbconfig] =
-+ *(int *) args[2];
-+ process->nfbconfig++;
-+ ret_int = 1 + process->nfbconfig_total;
-+ process->nfbconfig_total +=
-+ process->fbconfigs_max[process->nfbconfig];
-+ } else {
-+ ret_int = 0;
-+ }
-+ }
-+ break;
-+ }
-+
-+ case glXCreatePbuffer_func:
-+ {
-+ GET_EXT_PTR(GLXPbuffer, glXCreatePbuffer,
-+ (Display *, GLXFBConfig, int *));
-+ int client_fbconfig = args[1];
-+
-+ ret_int = 0;
-+ GLXFBConfig fbconfig = get_fbconfig(process, client_fbconfig);
-+
-+ if (fbconfig) {
-+ GLXPbuffer pbuffer =
-+ ptr_func_glXCreatePbuffer(dpy, fbconfig, (int *) args[2]);
-+ fprintf(stderr, "glXCreatePbuffer --> %x\n", (int) pbuffer);
-+ if (pbuffer) {
-+ ClientGLXDrawable fake_pbuffer = to_drawable(
-+ ++ process->next_available_pbuffer_number);
-+
-+ set_association_fakepbuffer_pbuffer(
-+ process, fake_pbuffer, pbuffer);
-+ fprintf(stderr,
-+ "set_association_fakepbuffer_pbuffer(%p, %x)\n",
-+ fake_pbuffer, (int) (long) pbuffer);
-+ ret_int = (int) (long) fake_pbuffer;
-+ }
-+ }
-+ break;
-+ }
-+
-+ case glXCreateGLXPbufferSGIX_func:
-+ {
-+ GET_EXT_PTR(GLXPbufferSGIX, glXCreateGLXPbufferSGIX,
-+ (Display *, GLXFBConfig, int, int, int *));
-+ int client_fbconfig = args[1];
-+
-+ ret_int = 0;
-+ GLXFBConfig fbconfig = get_fbconfig(process, client_fbconfig);
-+
-+ if (fbconfig) {
-+ GLXPbufferSGIX pbuffer = ptr_func_glXCreateGLXPbufferSGIX(
-+ dpy, fbconfig,
-+ args[2], args[3], (int *) args[4]);
-+ if (pbuffer) {
-+ ClientGLXDrawable fake_pbuffer = to_drawable(
-+ ++ process->next_available_pbuffer_number);
-+
-+ set_association_fakepbuffer_pbuffer(
-+ process, fake_pbuffer, pbuffer);
-+ ret_int = (int) (long) fake_pbuffer;
-+ }
-+ }
-+ break;
-+ }
-+
-+ case glXDestroyPbuffer_func:
-+ {
-+ GET_EXT_PTR(void, glXDestroyPbuffer, (Display *, GLXPbuffer));
-+ ClientGLXDrawable fake_pbuffer = to_drawable(args[1]);
-+
-+ if (display_function_call)
-+ fprintf(stderr, "fake_pbuffer=%p\n", fake_pbuffer);
-+
-+ GLXPbuffer pbuffer = get_association_fakepbuffer_pbuffer(
-+ process, fake_pbuffer);
-+ if (pbuffer == 0) {
-+ fprintf(stderr, "invalid fake_pbuffer (%p) !\n",
-+ fake_pbuffer);
-+ } else {
-+ if (!is_gl_vendor_ati(dpy))
-+ ptr_func_glXDestroyPbuffer(dpy, pbuffer);
-+ unset_association_fakepbuffer_pbuffer(process, fake_pbuffer);
-+ }
-+ break;
-+ }
-+
-+ case glXDestroyGLXPbufferSGIX_func:
-+ {
-+ GET_EXT_PTR(void, glXDestroyGLXPbufferSGIX,
-+ (Display *, GLXPbuffer));
-+ ClientGLXDrawable fake_pbuffer = to_drawable(args[1]);
-+
-+ if (display_function_call)
-+ fprintf(stderr, "fake_pbuffer=%p\n", fake_pbuffer);
-+
-+ GLXPbuffer pbuffer = get_association_fakepbuffer_pbuffer(
-+ process, fake_pbuffer);
-+ if (pbuffer == 0) {
-+ fprintf(stderr, "invalid fake_pbuffer (%p) !\n",
-+ fake_pbuffer);
-+ } else {
-+ if (!is_gl_vendor_ati(dpy))
-+ ptr_func_glXDestroyGLXPbufferSGIX(dpy, pbuffer);
-+ unset_association_fakepbuffer_pbuffer(process, fake_pbuffer);
-+ }
-+ break;
-+ }
-+
-+ case glXBindTexImageATI_func:
-+ {
-+ GET_EXT_PTR(void, glXBindTexImageATI,
-+ (Display *, GLXPbuffer, int));
-+ ClientGLXDrawable fake_pbuffer = to_drawable(args[1]);
-+
-+ if (display_function_call)
-+ fprintf(stderr, "fake_pbuffer=%p\n",
-+ fake_pbuffer);
-+
-+ GLXPbuffer pbuffer = get_association_fakepbuffer_pbuffer(
-+ process, fake_pbuffer);
-+ if (pbuffer == 0) {
-+ fprintf(stderr,
-+ "glXBindTexImageATI : invalid fake_pbuffer (%p) !\n",
-+ fake_pbuffer);
-+ } else {
-+ ptr_func_glXBindTexImageATI(dpy, pbuffer, args[2]);
-+ }
-+ break;
-+ }
-+
-+ case glXReleaseTexImageATI_func:
-+ {
-+ GET_EXT_PTR(void, glXReleaseTexImageATI,
-+ (Display *, GLXPbuffer, int));
-+ ClientGLXDrawable fake_pbuffer = to_drawable(args[1]);
-+
-+ if (display_function_call)
-+ fprintf(stderr, "fake_pbuffer=%d\n",
-+ (int) (long) fake_pbuffer);
-+
-+ GLXPbuffer pbuffer = get_association_fakepbuffer_pbuffer(
-+ process, fake_pbuffer);
-+ if (pbuffer == 0) {
-+ fprintf(stderr,
-+ "glXReleaseTexImageATI : invalid fake_pbuffer (%d) !\n",
-+ (int) (long) fake_pbuffer);
-+ } else {
-+ ptr_func_glXReleaseTexImageATI(dpy, pbuffer, args[2]);
-+ }
-+ break;
-+ }
-+
-+ case glXBindTexImageARB_func:
-+ {
-+ GET_EXT_PTR(Bool, glXBindTexImageARB,
-+ (Display *, GLXPbuffer, int));
-+ ClientGLXDrawable fake_pbuffer = to_drawable(args[1]);
-+
-+ if (display_function_call)
-+ fprintf(stderr, "fake_pbuffer=%p\n", fake_pbuffer);
-+
-+ GLXPbuffer pbuffer = get_association_fakepbuffer_pbuffer(
-+ process, fake_pbuffer);
-+ if (pbuffer == 0) {
-+ fprintf(stderr,
-+ "glXBindTexImageARB : invalid fake_pbuffer (%p) !\n",
-+ fake_pbuffer);
-+ ret_int = 0;
-+ } else {
-+ ret_int = ptr_func_glXBindTexImageARB(dpy, pbuffer, args[2]);
-+ }
-+ break;
-+ }
-+
-+ case glXReleaseTexImageARB_func:
-+ {
-+ GET_EXT_PTR(Bool, glXReleaseTexImageARB,
-+ (Display *, GLXPbuffer, int));
-+ ClientGLXDrawable fake_pbuffer = to_drawable(args[1]);
-+
-+ if (display_function_call)
-+ fprintf(stderr, "fake_pbuffer=%p\n", fake_pbuffer);
-+
-+ GLXPbuffer pbuffer = get_association_fakepbuffer_pbuffer(
-+ process, fake_pbuffer);
-+ if (pbuffer == 0) {
-+ fprintf(stderr,
-+ "glXReleaseTexImageARB : invalid fake_pbuffer (%p) !\n",
-+ fake_pbuffer);
-+ ret_int = 0;
-+ } else {
-+ ret_int =
-+ ptr_func_glXReleaseTexImageARB(dpy, pbuffer, args[2]);
-+ }
-+ break;
-+ }
-+
-+ case glXGetFBConfigAttrib_func:
-+ {
-+ GET_EXT_PTR(int, glXGetFBConfigAttrib,
-+ (Display *, GLXFBConfig, int, int *));
-+ int client_fbconfig = args[1];
-+
-+ ret_int = 0;
-+ GLXFBConfig fbconfig = get_fbconfig(process, client_fbconfig);
-+
-+ if (fbconfig)
-+ ret_int =
-+ ptr_func_glXGetFBConfigAttrib(dpy, fbconfig, args[2],
-+ (int *) args[3]);
-+ break;
-+ }
-+
-+ case glXGetFBConfigAttrib_extended_func:
-+ {
-+ GET_EXT_PTR(int, glXGetFBConfigAttrib,
-+ (Display *, GLXFBConfig, int, int *));
-+ int client_fbconfig = args[1];
-+ int n = args[2];
-+ int i;
-+ int *attribs = (int *) args[3];
-+ int *values = (int *) args[4];
-+ int *res = (int *) args[5];
-+ GLXFBConfig fbconfig = get_fbconfig(process, client_fbconfig);
-+
-+ for (i = 0; i < n; i++) {
-+ if (fbconfig) {
-+ res[i] =
-+ ptr_func_glXGetFBConfigAttrib(dpy, fbconfig,
-+ attribs[i], &values[i]);
-+ } else {
-+ res[i] = 0;
-+ }
-+ }
-+ break;
-+ }
-+
-+ case glXGetFBConfigAttribSGIX_func:
-+ {
-+ GET_EXT_PTR(int, glXGetFBConfigAttribSGIX,
-+ (Display *, GLXFBConfigSGIX, int, int *));
-+ int client_fbconfig = args[1];
-+
-+ ret_int = 0;
-+ GLXFBConfig fbconfig = get_fbconfig(process, client_fbconfig);
-+
-+ if (fbconfig)
-+ ret_int =
-+ ptr_func_glXGetFBConfigAttribSGIX(dpy,
-+ (GLXFBConfigSGIX)
-+ fbconfig, args[2],
-+ (int *) args[3]);
-+ break;
-+ }
-+
-+ case glXQueryContext_func:
-+ {
-+ GET_EXT_PTR(int, glXQueryContext,
-+ (Display *, GLXContext, int, int *));
-+ int fake_ctxt = (int) args[1];
-+
-+ if (display_function_call)
-+ fprintf(stderr, "fake_ctx=%i\n", fake_ctxt);
-+ GLXContext ctxt =
-+ get_association_fakecontext_glxcontext(process, fake_ctxt);
-+ if (ctxt == NULL) {
-+ fprintf(stderr, "invalid fake_ctxt (%i) !\n", fake_ctxt);
-+ ret_int = 0;
-+ } else {
-+ ret_int =
-+ ptr_func_glXQueryContext(dpy, ctxt, args[2],
-+ (int *) args[3]);
-+ }
-+ break;
-+ }
-+
-+ case glXQueryDrawable_func:
-+ {
-+ GET_EXT_PTR(void, glXQueryDrawable,
-+ (Display *, GLXDrawable, int, int *));
-+ ClientGLXDrawable client_drawable = to_drawable(args[1]);
-+ GLXDrawable drawable =
-+ get_association_clientdrawable_serverdrawable(
-+ process, client_drawable);
-+
-+ if (display_function_call)
-+ fprintf(stderr, "client_drawable=%p\n",
-+ client_drawable);
-+
-+ if (!drawable)
-+ fprintf(stderr, "invalid client_drawable (%p) !\n",
-+ client_drawable);
-+ else
-+ ptr_func_glXQueryDrawable(dpy, drawable,
-+ args[2], (int *) args[3]);
-+
-+ break;
-+ }
-+
-+ case glXQueryGLXPbufferSGIX_func:
-+ {
-+ GET_EXT_PTR(int, glXQueryGLXPbufferSGIX,
-+ (Display *, GLXFBConfigSGIX, int, int *));
-+ int client_fbconfig = args[1];
-+
-+ ret_int = 0;
-+ GLXFBConfig fbconfig = get_fbconfig(process, client_fbconfig);
-+
-+ if (fbconfig)
-+ ret_int = ptr_func_glXQueryGLXPbufferSGIX(dpy,
-+ (GLXFBConfigSGIX) fbconfig,
-+ args[2], (int *) args[3]);
-+ break;
-+ }
-+
-+ case glXCreateContextWithConfigSGIX_func:
-+ {
-+ GET_EXT_PTR(GLXContext, glXCreateContextWithConfigSGIX,
-+ (Display *, GLXFBConfigSGIX, int, GLXContext, int));
-+ int client_fbconfig = args[1];
-+
-+ ret_int = 0;
-+ GLXFBConfig fbconfig = get_fbconfig(process, client_fbconfig);
-+
-+ if (fbconfig) {
-+ GLXContext shareList = get_association_fakecontext_glxcontext(
-+ process, (int) args[3]);
-+ process->next_available_context_number++;
-+ int fake_ctxt = process->next_available_context_number;
-+ GLXContext ctxt = ptr_func_glXCreateContextWithConfigSGIX(
-+ dpy, (GLXFBConfigSGIX) fbconfig, args[2],
-+ shareList, args[4]);
-+ set_association_fakecontext_glxcontext(
-+ process, fake_ctxt, ctxt);
-+ ret_int = fake_ctxt;
-+ }
-+ break;
-+ }
-+
-+ case glXGetVisualFromFBConfig_func:
-+ {
-+ GET_EXT_PTR(XVisualInfo *, glXGetVisualFromFBConfig,
-+ (Display *, GLXFBConfig));
-+ int client_fbconfig = args[1];
-+
-+ ret_int = 0;
-+ GLXFBConfig fbconfig = get_fbconfig(process, client_fbconfig);
-+
-+ if (fbconfig) {
-+ XVisualInfo *vis =
-+ ptr_func_glXGetVisualFromFBConfig(dpy, fbconfig);
-+ ret_int = (vis) ? vis->visualid : 0;
-+ if (vis) {
-+ tabAssocAttribListVisual =
-+ realloc(tabAssocAttribListVisual,
-+ sizeof(AssocAttribListVisual) *
-+ (nTabAssocAttribListVisual + 1));
-+ tabAssocAttribListVisual[nTabAssocAttribListVisual].
-+ attribListLength = 0;
-+ tabAssocAttribListVisual[nTabAssocAttribListVisual].
-+ attribList = NULL;
-+ tabAssocAttribListVisual[nTabAssocAttribListVisual].
-+ visInfo = vis;
-+ nTabAssocAttribListVisual++;
-+ }
-+ if (display_function_call)
-+ fprintf(stderr, "visualid = %d\n", ret_int);
-+ }
-+ break;
-+ }
-+
-+ case glXSwapIntervalSGI_func:
-+ {
-+ GET_EXT_PTR(int, glXSwapIntervalSGI, (int));
-+
-+ ret_int = ptr_func_glXSwapIntervalSGI(args[0]);
-+ break;
-+ }
-+
-+ case glXGetProcAddress_fake_func:
-+ {
-+ if (display_function_call)
-+ fprintf(stderr, "%s\n", (char *) args[0]);
-+ ret_int = glXGetProcAddressARB((const GLubyte *) args[0]) != NULL;
-+ break;
-+ }
-+
-+ case glXGetProcAddress_global_fake_func:
-+ {
-+ int nbElts = args[0];
-+ char *huge_buffer = (char *) args[1];
-+ char *result = (char *) args[2];
-+ int i;
-+
-+ for (i = 0; i < nbElts; i++) {
-+ int len = strlen(huge_buffer);
-+
-+ result[i] =
-+ glXGetProcAddressARB((const GLubyte *) huge_buffer) !=
-+ NULL;
-+ huge_buffer += len + 1;
-+ }
-+ break;
-+ }
-+
-+/* Begin of texture stuff */
-+ case glBindTexture_func:
-+ case glBindTextureEXT_func:
-+ {
-+ int target = args[0];
-+ unsigned int client_texture = args[1];
-+ unsigned int server_texture;
-+
-+ if (client_texture == 0) {
-+ glBindTexture(target, 0);
-+ } else {
-+ alloc_value(process->current_state->textureAllocator,
-+ client_texture);
-+ server_texture =
-+ process->current_state->tabTextures[client_texture];
-+ if (server_texture == 0) {
-+ glGenTextures(1, &server_texture);
-+ process->current_state->tabTextures[client_texture] =
-+ server_texture;
-+ }
-+ glBindTexture(target, server_texture);
-+ }
-+ break;
-+ }
-+
-+ case glGenTextures_fake_func:
-+ {
-+ GET_EXT_PTR(void, glGenTextures, (GLsizei n, GLuint *textures));
-+ int i;
-+ int n = args[0];
-+ unsigned int *clientTabTextures = malloc(n * sizeof(int));
-+ unsigned int *serverTabTextures = malloc(n * sizeof(int));
-+
-+ alloc_range(process->current_state->textureAllocator, n,
-+ clientTabTextures);
-+
-+ ptr_func_glGenTextures(n, serverTabTextures);
-+ for (i = 0; i < n; i++) {
-+ process->current_state->tabTextures[clientTabTextures[i]] =
-+ serverTabTextures[i];
-+ }
-+
-+ free(clientTabTextures);
-+ free(serverTabTextures);
-+ break;
-+ }
-+
-+
-+ case glDeleteTextures_func:
-+ {
-+ GET_EXT_PTR(void, glDeleteTextures,
-+ (GLsizei n, const GLuint *textures));
-+ int i;
-+ int n = args[0];
-+ unsigned int *clientTabTextures = (unsigned int *) args[1];
-+
-+ delete_range(process->current_state->textureAllocator, n,
-+ clientTabTextures);
-+
-+ unsigned int *serverTabTextures = malloc(n * sizeof(int));
-+
-+ for (i = 0; i < n; i++) {
-+ serverTabTextures[i] =
-+ get_server_texture(process, clientTabTextures[i]);
-+ }
-+ ptr_func_glDeleteTextures(n, serverTabTextures);
-+ for (i = 0; i < n; i++) {
-+ process->current_state->tabTextures[clientTabTextures[i]] = 0;
-+ }
-+ free(serverTabTextures);
-+ break;
-+ }
-+
-+ case glPrioritizeTextures_func:
-+ {
-+ GET_EXT_PTR(void, glPrioritizeTextures,
-+ (GLsizei n, const GLuint *textures,
-+ const GLclampf *priorities));
-+
-+ int i;
-+ int n = args[0];
-+ unsigned int *textures = (unsigned int *) args[1];
-+
-+ for (i = 0; i < n; i++) {
-+ textures[i] = get_server_texture(process, textures[i]);
-+ }
-+ ptr_func_glPrioritizeTextures(n, textures,
-+ (const GLclampf *) args[2]);
-+ break;
-+ }
-+
-+ case glAreTexturesResident_func:
-+ {
-+ GET_EXT_PTR(void, glAreTexturesResident,
-+ (GLsizei n, const GLuint *textures,
-+ GLboolean *residences));
-+ int i;
-+ int n = args[0];
-+ unsigned int *textures = (unsigned int *) args[1];
-+
-+ for (i = 0; i < n; i++) {
-+ textures[i] = get_server_texture(process, textures[i]);
-+ }
-+ ptr_func_glAreTexturesResident(n, textures,
-+ (GLboolean *) args[2]);
-+ break;
-+ }
-+
-+ case glIsTexture_func:
-+ case glIsTextureEXT_func:
-+ {
-+ GET_EXT_PTR(GLboolean, glIsTexture, (GLuint texture));
-+ unsigned int client_texture = args[0];
-+ unsigned int server_texture =
-+ get_server_texture(process, client_texture);
-+ if (server_texture)
-+ ret_char = ptr_func_glIsTexture(server_texture);
-+ else
-+ ret_char = 0;
-+ break;
-+ }
-+
-+ case glFramebufferTexture1DEXT_func:
-+ {
-+ GET_EXT_PTR(void, glFramebufferTexture1DEXT,
-+ (int, int, int, int, int));
-+ unsigned int client_texture = args[3];
-+ unsigned int server_texture =
-+ get_server_texture(process, client_texture);
-+ if (server_texture)
-+ ptr_func_glFramebufferTexture1DEXT(args[0], args[1], args[2],
-+ server_texture, args[4]);
-+ break;
-+ }
-+
-+ case glFramebufferTexture2DEXT_func:
-+ {
-+ GET_EXT_PTR(void, glFramebufferTexture2DEXT,
-+ (int, int, int, int, int));
-+ unsigned int client_texture = args[3];
-+ unsigned int server_texture =
-+ get_server_texture(process, client_texture);
-+ if (server_texture)
-+ ptr_func_glFramebufferTexture2DEXT(args[0], args[1], args[2],
-+ server_texture, args[4]);
-+ break;
-+ }
-+
-+ case glFramebufferTexture3DEXT_func:
-+ {
-+ GET_EXT_PTR(void, glFramebufferTexture3DEXT,
-+ (int, int, int, int, int, int));
-+ unsigned int client_texture = args[3];
-+ unsigned int server_texture =
-+ get_server_texture(process, client_texture);
-+ if (server_texture)
-+ ptr_func_glFramebufferTexture3DEXT(args[0], args[1], args[2],
-+ server_texture, args[4],
-+ args[5]);
-+ break;
-+ }
-+/* End of texture stuff */
-+
-+/* Begin of list stuff */
-+ case glIsList_func:
-+ {
-+ unsigned int client_list = args[0];
-+ unsigned int server_list = get_server_list(process, client_list);
-+
-+ if (server_list)
-+ ret_char = glIsList(server_list);
-+ else
-+ ret_char = 0;
-+ break;
-+ }
-+
-+ case glDeleteLists_func:
-+ {
-+ int i;
-+ unsigned int first_client = args[0];
-+ int n = args[1];
-+
-+ unsigned int first_server =
-+ get_server_list(process, first_client);
-+ for (i = 0; i < n; i++) {
-+ if (get_server_list(process, first_client + i) !=
-+ first_server + i)
-+ break;
-+ }
-+ if (i == n) {
-+ glDeleteLists(first_server, n);
-+ } else {
-+ for (i = 0; i < n; i++) {
-+ glDeleteLists(get_server_list(process, first_client + i),
-+ 1);
-+ }
-+ }
-+
-+ for (i = 0; i < n; i++) {
-+ process->current_state->tabLists[first_client + i] = 0;
-+ }
-+ delete_consecutive_values(process->current_state->listAllocator,
-+ first_client, n);
-+ break;
-+ }
-+
-+ case glGenLists_fake_func:
-+ {
-+ int i;
-+ int n = args[0];
-+ unsigned int server_first = glGenLists(n);
-+
-+ if (server_first) {
-+ unsigned int client_first =
-+ alloc_range(process->current_state->listAllocator, n,
-+ NULL);
-+ for (i = 0; i < n; i++) {
-+ process->current_state->tabLists[client_first + i] =
-+ server_first + i;
-+ }
-+ }
-+ break;
-+ }
-+
-+ case glNewList_func:
-+ {
-+ unsigned int client_list = args[0];
-+ int mode = args[1];
-+
-+ alloc_value(process->current_state->listAllocator, client_list);
-+ unsigned int server_list = get_server_list(process, client_list);
-+
-+ if (server_list == 0) {
-+ server_list = glGenLists(1);
-+ process->current_state->tabLists[client_list] = server_list;
-+ }
-+ glNewList(server_list, mode);
-+ break;
-+ }
-+
-+ case glCallList_func:
-+ {
-+ unsigned int client_list = args[0];
-+ unsigned int server_list = get_server_list(process, client_list);
-+
-+ glCallList(server_list);
-+ break;
-+ }
-+
-+ case glCallLists_func:
-+ {
-+ int i;
-+ int n = args[0];
-+ int type = args[1];
-+ const GLvoid *lists = (const GLvoid *) args[2];
-+ int *new_lists = malloc(sizeof(int) * n);
-+
-+ for (i = 0; i < n; i++) {
-+ new_lists[i] =
-+ get_server_list(process, translate_id(i, type, lists));
-+ }
-+ glCallLists(n, GL_UNSIGNED_INT, new_lists);
-+ free(new_lists);
-+ break;
-+ }
-+
-+
-+/* End of list stuff */
-+
-+/* Begin of buffer stuff */
-+ case glBindBufferARB_func:
-+ {
-+ GET_EXT_PTR(void, glBindBufferARB, (int, int));
-+ int target = args[0];
-+ unsigned int client_buffer = args[1];
-+ unsigned int server_buffer;
-+
-+ if (client_buffer == 0) {
-+ ptr_func_glBindBufferARB(target, 0);
-+ } else {
-+ server_buffer = get_server_buffer(process, client_buffer);
-+ ptr_func_glBindBufferARB(target, server_buffer);
-+ }
-+ break;
-+ }
-+
-+ case glGenBuffersARB_fake_func:
-+ {
-+ GET_EXT_PTR(void, glGenBuffersARB, (int, unsigned int *));
-+ int i;
-+ int n = args[0];
-+ unsigned int *clientTabBuffers = malloc(n * sizeof(int));
-+ unsigned int *serverTabBuffers = malloc(n * sizeof(int));
-+
-+ alloc_range(process->current_state->bufferAllocator, n,
-+ clientTabBuffers);
-+
-+ ptr_func_glGenBuffersARB(n, serverTabBuffers);
-+ for (i = 0; i < n; i++) {
-+ process->current_state->tabBuffers[clientTabBuffers[i]] =
-+ serverTabBuffers[i];
-+ }
-+
-+ free(clientTabBuffers);
-+ free(serverTabBuffers);
-+ break;
-+ }
-+
-+
-+ case glDeleteBuffersARB_func:
-+ {
-+ GET_EXT_PTR(void, glDeleteBuffersARB, (int, int *));
-+ int i;
-+ int n = args[0];
-+ unsigned int *clientTabBuffers = (unsigned int *) args[1];
-+
-+ delete_range(process->current_state->bufferAllocator, n,
-+ clientTabBuffers);
-+
-+ int *serverTabBuffers = malloc(n * sizeof(int));
-+
-+ for (i = 0; i < n; i++) {
-+ serverTabBuffers[i] =
-+ get_server_buffer(process, clientTabBuffers[i]);
-+ }
-+ ptr_func_glDeleteBuffersARB(n, serverTabBuffers);
-+ for (i = 0; i < n; i++) {
-+ process->current_state->tabBuffers[clientTabBuffers[i]] = 0;
-+ }
-+ free(serverTabBuffers);
-+ break;
-+ }
-+
-+ case glIsBufferARB_func:
-+ {
-+ GET_EXT_PTR(int, glIsBufferARB, (int));
-+ unsigned int client_buffer = args[0];
-+ unsigned int server_buffer =
-+ get_server_buffer(process, client_buffer);
-+ if (server_buffer)
-+ ret_int = ptr_func_glIsBufferARB(server_buffer);
-+ else
-+ ret_int = 0;
-+ break;
-+ }
-+
-+/* End of buffer stuff */
-+
-+ case glShaderSourceARB_fake_func:
-+ {
-+ GET_EXT_PTR(void, glShaderSourceARB, (int, int, char **, void *));
-+ int size = args[1];
-+ int i;
-+ int acc_length = 0;
-+ GLcharARB **tab_prog = malloc(size * sizeof(GLcharARB *));
-+ int *tab_length = (int *) args[3];
-+
-+ for (i = 0; i < size; i++) {
-+ tab_prog[i] = ((GLcharARB *) args[2]) + acc_length;
-+ acc_length += tab_length[i];
-+ }
-+ ptr_func_glShaderSourceARB(args[0], args[1], tab_prog,
-+ tab_length);
-+ free(tab_prog);
-+ break;
-+ }
-+
-+ case glShaderSource_fake_func:
-+ {
-+ GET_EXT_PTR(void, glShaderSource, (int, int, char **, void *));
-+ int size = args[1];
-+ int i;
-+ int acc_length = 0;
-+ GLcharARB **tab_prog = malloc(size * sizeof(GLcharARB *));
-+ int *tab_length = (int *) args[3];
-+
-+ for (i = 0; i < size; i++) {
-+ tab_prog[i] = ((GLcharARB *) args[2]) + acc_length;
-+ acc_length += tab_length[i];
-+ }
-+ ptr_func_glShaderSource(args[0], args[1], tab_prog, tab_length);
-+ free(tab_prog);
-+ break;
-+ }
-+
-+ case glVertexPointer_fake_func:
-+ {
-+ int offset = args[0];
-+ int size = args[1];
-+ int type = args[2];
-+ int stride = args[3];
-+ int bytes_size = args[4];
-+
-+ process->current_state->vertexPointerSize =
-+ MAX(process->current_state->vertexPointerSize,
-+ offset + bytes_size);
-+ process->current_state->vertexPointer =
-+ realloc(process->current_state->vertexPointer,
-+ process->current_state->vertexPointerSize);
-+ memcpy(process->current_state->vertexPointer + offset,
-+ (void *) args[5], bytes_size);
-+ /* fprintf(stderr, "glVertexPointer_fake_func size=%d, type=%d,
-+ * stride=%d, byte_size=%d\n", size, type, stride, bytes_size); */
-+ glVertexPointer(size, type, stride,
-+ process->current_state->vertexPointer);
-+ break;
-+ }
-+
-+ case glNormalPointer_fake_func:
-+ {
-+ int offset = args[0];
-+ int type = args[1];
-+ int stride = args[2];
-+ int bytes_size = args[3];
-+
-+ process->current_state->normalPointerSize =
-+ MAX(process->current_state->normalPointerSize,
-+ offset + bytes_size);
-+ process->current_state->normalPointer =
-+ realloc(process->current_state->normalPointer,
-+ process->current_state->normalPointerSize);
-+ memcpy(process->current_state->normalPointer + offset,
-+ (void *) args[4], bytes_size);
-+ // fprintf(stderr, "glNormalPointer_fake_func type=%d, stride=%d,
-+ // byte_size=%d\n", type, stride, bytes_size);
-+ glNormalPointer(type, stride,
-+ process->current_state->normalPointer);
-+ break;
-+ }
-+
-+ case glIndexPointer_fake_func:
-+ {
-+ int offset = args[0];
-+ int type = args[1];
-+ int stride = args[2];
-+ int bytes_size = args[3];
-+
-+ process->current_state->indexPointerSize =
-+ MAX(process->current_state->indexPointerSize,
-+ offset + bytes_size);
-+ process->current_state->indexPointer =
-+ realloc(process->current_state->indexPointer,
-+ process->current_state->indexPointerSize);
-+ memcpy(process->current_state->indexPointer + offset,
-+ (void *) args[4], bytes_size);
-+ // fprintf(stderr, "glIndexPointer_fake_func type=%d, stride=%d,
-+ // byte_size=%d\n", type, stride, bytes_size);
-+ glIndexPointer(type, stride,
-+ process->current_state->indexPointer);
-+ break;
-+ }
-+
-+ case glEdgeFlagPointer_fake_func:
-+ {
-+ int offset = args[0];
-+ int stride = args[1];
-+ int bytes_size = args[2];
-+
-+ process->current_state->edgeFlagPointerSize =
-+ MAX(process->current_state->edgeFlagPointerSize,
-+ offset + bytes_size);
-+ process->current_state->edgeFlagPointer =
-+ realloc(process->current_state->edgeFlagPointer,
-+ process->current_state->edgeFlagPointerSize);
-+ memcpy(process->current_state->edgeFlagPointer + offset,
-+ (void *) args[3], bytes_size);
-+ // fprintf(stderr, "glEdgeFlagPointer_fake_func stride = %d,
-+ // bytes_size=%d\n", stride, bytes_size);
-+ glEdgeFlagPointer(stride,
-+ process->current_state->edgeFlagPointer);
-+ break;
-+ }
-+
-+ case glVertexAttribPointerARB_fake_func:
-+ {
-+ GET_EXT_PTR(void, glVertexAttribPointerARB,
-+ (int, int, int, int, int, void *));
-+ int offset = args[0];
-+ int index = args[1];
-+ int size = args[2];
-+ int type = args[3];
-+ int normalized = args[4];
-+ int stride = args[5];
-+ int bytes_size = args[6];
-+
-+ process->current_state->vertexAttribPointerSize[index] =
-+ MAX(process->current_state->vertexAttribPointerSize[index],
-+ offset + bytes_size);
-+ process->current_state->vertexAttribPointer[index] =
-+ realloc(process->current_state->vertexAttribPointer[index],
-+ process->current_state->
-+ vertexAttribPointerSize[index]);
-+ memcpy(process->current_state->vertexAttribPointer[index] +
-+ offset, (void *) args[7], bytes_size);
-+ ptr_func_glVertexAttribPointerARB(index, size, type, normalized,
-+ stride,
-+ process->current_state->
-+ vertexAttribPointer[index]);
-+ break;
-+ }
-+
-+ case glVertexAttribPointerNV_fake_func:
-+ {
-+ GET_EXT_PTR(void, glVertexAttribPointerNV,
-+ (int, int, int, int, void *));
-+ int offset = args[0];
-+ int index = args[1];
-+ int size = args[2];
-+ int type = args[3];
-+ int stride = args[4];
-+ int bytes_size = args[5];
-+
-+ process->current_state->vertexAttribPointerNVSize[index] =
-+ MAX(process->current_state->vertexAttribPointerNVSize[index],
-+ offset + bytes_size);
-+ process->current_state->vertexAttribPointerNV[index] =
-+ realloc(process->current_state->vertexAttribPointerNV[index],
-+ process->current_state->
-+ vertexAttribPointerNVSize[index]);
-+ memcpy(process->current_state->vertexAttribPointerNV[index] +
-+ offset, (void *) args[6], bytes_size);
-+ ptr_func_glVertexAttribPointerNV(index, size, type, stride,
-+ process->current_state->
-+ vertexAttribPointerNV[index]);
-+ break;
-+ }
-+
-+ case glColorPointer_fake_func:
-+ {
-+ int offset = args[0];
-+ int size = args[1];
-+ int type = args[2];
-+ int stride = args[3];
-+ int bytes_size = args[4];
-+
-+ process->current_state->colorPointerSize =
-+ MAX(process->current_state->colorPointerSize,
-+ offset + bytes_size);
-+ process->current_state->colorPointer =
-+ realloc(process->current_state->colorPointer,
-+ process->current_state->colorPointerSize);
-+ memcpy(process->current_state->colorPointer + offset,
-+ (void *) args[5], bytes_size);
-+ // fprintf(stderr, "glColorPointer_fake_func bytes_size = %d\n",
-+ // bytes_size);
-+ glColorPointer(size, type, stride,
-+ process->current_state->colorPointer);
-+
-+ break;
-+ }
-+
-+ case glSecondaryColorPointer_fake_func:
-+ {
-+ GET_EXT_PTR(void, glSecondaryColorPointer,
-+ (int, int, int, void *));
-+ int offset = args[0];
-+ int size = args[1];
-+ int type = args[2];
-+ int stride = args[3];
-+ int bytes_size = args[4];
-+
-+ process->current_state->secondaryColorPointerSize =
-+ MAX(process->current_state->secondaryColorPointerSize,
-+ offset + bytes_size);
-+ process->current_state->secondaryColorPointer =
-+ realloc(process->current_state->secondaryColorPointer,
-+ process->current_state->secondaryColorPointerSize);
-+ memcpy(process->current_state->secondaryColorPointer + offset,
-+ (void *) args[5], bytes_size);
-+ // fprintf(stderr, "glSecondaryColorPointer_fake_func bytes_size
-+ // = %d\n", bytes_size);
-+ ptr_func_glSecondaryColorPointer(size, type, stride,
-+ process->current_state->
-+ secondaryColorPointer);
-+
-+ break;
-+ }
-+
-+ case glPushClientAttrib_func:
-+ {
-+ int mask = args[0];
-+
-+ if (process->current_state->clientStateSp <
-+ MAX_CLIENT_STATE_STACK_SIZE) {
-+ process->current_state->clientStateStack[process->
-+ current_state->
-+ clientStateSp].mask =
-+ mask;
-+ if (mask & GL_CLIENT_VERTEX_ARRAY_BIT) {
-+ process->current_state->clientStateStack[process->
-+ current_state->
-+ clientStateSp].
-+ activeTextureIndex =
-+ process->current_state->activeTextureIndex;
-+ }
-+ process->current_state->clientStateSp++;
-+ }
-+ glPushClientAttrib(mask);
-+ break;
-+ }
-+
-+ case glPopClientAttrib_func:
-+ {
-+ if (process->current_state->clientStateSp > 0) {
-+ process->current_state->clientStateSp--;
-+ if (process->current_state->
-+ clientStateStack[process->current_state->clientStateSp].
-+ mask & GL_CLIENT_VERTEX_ARRAY_BIT) {
-+ process->current_state->activeTextureIndex =
-+ process->current_state->clientStateStack[process->
-+ current_state->
-+ clientStateSp].
-+ activeTextureIndex;
-+ }
-+ }
-+ glPopClientAttrib();
-+ break;
-+ }
-+
-+ case glClientActiveTexture_func:
-+ case glClientActiveTextureARB_func:
-+ {
-+ int activeTexture = args[0];
-+
-+ process->current_state->activeTextureIndex =
-+ activeTexture - GL_TEXTURE0_ARB;
-+ do_glClientActiveTextureARB(activeTexture);
-+ break;
-+ }
-+
-+ case glTexCoordPointer_fake_func:
-+ {
-+ int offset = args[0];
-+ int index = args[1];
-+ int size = args[2];
-+ int type = args[3];
-+ int stride = args[4];
-+ int bytes_size = args[5];
-+
-+ process->current_state->texCoordPointerSize[index] =
-+ MAX(process->current_state->texCoordPointerSize[index],
-+ offset + bytes_size);
-+ process->current_state->texCoordPointer[index] =
-+ realloc(process->current_state->texCoordPointer[index],
-+ process->current_state->texCoordPointerSize[index]);
-+ memcpy(process->current_state->texCoordPointer[index] + offset,
-+ (void *) args[6], bytes_size);
-+ /* fprintf(stderr, "glTexCoordPointer_fake_func size=%d, type=%d,
-+ * stride=%d, byte_size=%d\n", size, type, stride, bytes_size); */
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + index);
-+ glTexCoordPointer(size, type, stride,
-+ process->current_state->texCoordPointer[index]);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB +
-+ process->current_state->
-+ activeTextureIndex);
-+ break;
-+ }
-+
-+ case glWeightPointerARB_fake_func:
-+ {
-+ GET_EXT_PTR(void, glWeightPointerARB, (int, int, int, void *));
-+ int offset = args[0];
-+ int size = args[1];
-+ int type = args[2];
-+ int stride = args[3];
-+ int bytes_size = args[4];
-+
-+ process->current_state->weightPointerSize =
-+ MAX(process->current_state->weightPointerSize,
-+ offset + bytes_size);
-+ process->current_state->weightPointer =
-+ realloc(process->current_state->weightPointer,
-+ process->current_state->weightPointerSize);
-+ memcpy(process->current_state->weightPointer + offset,
-+ (void *) args[5], bytes_size);
-+ /* fprintf(stderr, "glWeightPointerARB_fake_func size=%d,
-+ * type=%d, stride=%d, byte_size=%d\n", size, type, stride,
-+ * bytes_size); */
-+ ptr_func_glWeightPointerARB(size, type, stride,
-+ process->current_state->
-+ weightPointer);
-+ break;
-+ }
-+
-+ case glMatrixIndexPointerARB_fake_func:
-+ {
-+ GET_EXT_PTR(void, glMatrixIndexPointerARB,
-+ (int, int, int, void *));
-+ int offset = args[0];
-+ int size = args[1];
-+ int type = args[2];
-+ int stride = args[3];
-+ int bytes_size = args[4];
-+
-+ process->current_state->matrixIndexPointerSize =
-+ MAX(process->current_state->matrixIndexPointerSize,
-+ offset + bytes_size);
-+ process->current_state->matrixIndexPointer =
-+ realloc(process->current_state->matrixIndexPointer,
-+ process->current_state->matrixIndexPointerSize);
-+ memcpy(process->current_state->matrixIndexPointer + offset,
-+ (void *) args[5], bytes_size);
-+ /* fprintf(stderr, "glMatrixIndexPointerARB_fake_func size=%d,
-+ * type=%d, stride=%d, byte_size=%d\n", size, type, stride,
-+ * bytes_size); */
-+ ptr_func_glMatrixIndexPointerARB(size, type, stride,
-+ process->current_state->
-+ matrixIndexPointer);
-+ break;
-+ }
-+
-+ case glFogCoordPointer_fake_func:
-+ {
-+ GET_EXT_PTR(void, glFogCoordPointer, (int, int, void *));
-+ int offset = args[0];
-+ int type = args[1];
-+ int stride = args[2];
-+ int bytes_size = args[3];
-+
-+ process->current_state->fogCoordPointerSize =
-+ MAX(process->current_state->fogCoordPointerSize,
-+ offset + bytes_size);
-+ process->current_state->fogCoordPointer =
-+ realloc(process->current_state->fogCoordPointer,
-+ process->current_state->fogCoordPointerSize);
-+ memcpy(process->current_state->fogCoordPointer + offset,
-+ (void *) args[4], bytes_size);
-+ // fprintf(stderr, "glFogCoordPointer_fake_func type=%d,
-+ // stride=%d, byte_size=%d\n", type, stride, bytes_size);
-+ ptr_func_glFogCoordPointer(type, stride,
-+ process->current_state->
-+ fogCoordPointer);
-+ break;
-+ }
-+
-+ case glVariantPointerEXT_fake_func:
-+ {
-+ GET_EXT_PTR(void, glVariantPointerEXT, (int, int, int, void *));
-+ int offset = args[0];
-+ int id = args[1];
-+ int type = args[2];
-+ int stride = args[3];
-+ int bytes_size = args[4];
-+
-+ process->current_state->variantPointerEXTSize[id] =
-+ MAX(process->current_state->variantPointerEXTSize[id],
-+ offset + bytes_size);
-+ process->current_state->variantPointerEXT[id] =
-+ realloc(process->current_state->variantPointerEXT[id],
-+ process->current_state->variantPointerEXTSize[id]);
-+ memcpy(process->current_state->variantPointerEXT[id] + offset,
-+ (void *) args[5], bytes_size);
-+ // fprintf(stderr, "glVariantPointerEXT_fake_func[%d] type=%d,
-+ // stride=%d, byte_size=%d\n", id, type, stride, bytes_size);
-+ ptr_func_glVariantPointerEXT(id, type, stride,
-+ process->current_state->
-+ variantPointerEXT[id]);
-+ break;
-+ }
-+
-+ case glInterleavedArrays_fake_func:
-+ {
-+ GET_EXT_PTR(void, glInterleavedArrays, (int, int, void *));
-+ int offset = args[0];
-+ int format = args[1];
-+ int stride = args[2];
-+ int bytes_size = args[3];
-+
-+ process->current_state->interleavedArraysSize =
-+ MAX(process->current_state->interleavedArraysSize,
-+ offset + bytes_size);
-+ process->current_state->interleavedArrays =
-+ realloc(process->current_state->interleavedArrays,
-+ process->current_state->interleavedArraysSize);
-+ memcpy(process->current_state->interleavedArrays + offset,
-+ (void *) args[4], bytes_size);
-+ // fprintf(stderr, "glInterleavedArrays_fake_func format=%d,
-+ // stride=%d, byte_size=%d\n", format, stride, bytes_size);
-+ ptr_func_glInterleavedArrays(format, stride,
-+ process->current_state->
-+ interleavedArrays);
-+ break;
-+ }
-+
-+ case glElementPointerATI_fake_func:
-+ {
-+ GET_EXT_PTR(void, glElementPointerATI, (int, void *));
-+ int type = args[0];
-+ int bytes_size = args[1];
-+
-+ process->current_state->elementPointerATISize = bytes_size;
-+ process->current_state->elementPointerATI =
-+ realloc(process->current_state->elementPointerATI,
-+ process->current_state->elementPointerATISize);
-+ memcpy(process->current_state->elementPointerATI,
-+ (void *) args[2], bytes_size);
-+ // fprintf(stderr, "glElementPointerATI_fake_func type=%d,
-+ // byte_size=%d\n", type, bytes_size);
-+ ptr_func_glElementPointerATI(type,
-+ process->current_state->
-+ elementPointerATI);
-+ break;
-+ }
-+
-+ case glTexCoordPointer01_fake_func:
-+ {
-+ int size = args[0];
-+ int type = args[1];
-+ int stride = args[2];
-+ int bytes_size = args[3];
-+
-+ process->current_state->texCoordPointerSize[0] = bytes_size;
-+ process->current_state->texCoordPointer[0] =
-+ realloc(process->current_state->texCoordPointer[0],
-+ bytes_size);
-+ memcpy(process->current_state->texCoordPointer[0],
-+ (void *) args[4], bytes_size);
-+ /* fprintf(stderr, "glTexCoordPointer01_fake_func size=%d,
-+ * type=%d, stride=%d, byte_size=%d\n", size, type, stride,
-+ * bytes_size); */
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 0);
-+ glTexCoordPointer(size, type, stride,
-+ process->current_state->texCoordPointer[0]);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 1);
-+ glTexCoordPointer(size, type, stride,
-+ process->current_state->texCoordPointer[0]);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB +
-+ process->current_state->
-+ activeTextureIndex);
-+ break;
-+ }
-+
-+ case glTexCoordPointer012_fake_func:
-+ {
-+ int size = args[0];
-+ int type = args[1];
-+ int stride = args[2];
-+ int bytes_size = args[3];
-+
-+ process->current_state->texCoordPointerSize[0] = bytes_size;
-+ process->current_state->texCoordPointer[0] =
-+ realloc(process->current_state->texCoordPointer[0],
-+ bytes_size);
-+ memcpy(process->current_state->texCoordPointer[0],
-+ (void *) args[4], bytes_size);
-+ /* fprintf(stderr, "glTexCoordPointer012_fake_func size=%d,
-+ * type=%d, stride=%d, byte_size=%d\n", size, type, stride,
-+ * bytes_size); */
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 0);
-+ glTexCoordPointer(size, type, stride,
-+ process->current_state->texCoordPointer[0]);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 1);
-+ glTexCoordPointer(size, type, stride,
-+ process->current_state->texCoordPointer[0]);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 2);
-+ glTexCoordPointer(size, type, stride,
-+ process->current_state->texCoordPointer[0]);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB +
-+ process->current_state->
-+ activeTextureIndex);
-+ break;
-+ }
-+
-+ case glVertexAndNormalPointer_fake_func:
-+ {
-+ int vertexPointerSize = args[0];
-+ int vertexPointerType = args[1];
-+ int vertexPointerStride = args[2];
-+ int normalPointerType = args[3];
-+ int normalPointerStride = args[4];
-+ int bytes_size = args[5];
-+ void *ptr = (void *) args[6];
-+
-+ process->current_state->vertexPointerSize = bytes_size;
-+ process->current_state->vertexPointer =
-+ realloc(process->current_state->vertexPointer, bytes_size);
-+ memcpy(process->current_state->vertexPointer, ptr, bytes_size);
-+ glVertexPointer(vertexPointerSize, vertexPointerType,
-+ vertexPointerStride,
-+ process->current_state->vertexPointer);
-+ glNormalPointer(normalPointerType, normalPointerStride,
-+ process->current_state->vertexPointer);
-+ break;
-+ }
-+
-+ case glVertexNormalPointerInterlaced_fake_func:
-+ {
-+ int i = 0;
-+ int offset = args[i++];
-+ int vertexPointerSize = args[i++];
-+ int vertexPointerType = args[i++];
-+ int stride = args[i++];
-+ int normalPointerOffset = args[i++];
-+ int normalPointerType = args[i++];
-+ int bytes_size = args[i++];
-+ void *ptr = (void *) args[i++];
-+
-+ process->current_state->vertexPointerSize =
-+ MAX(process->current_state->vertexPointerSize,
-+ offset + bytes_size);
-+ process->current_state->vertexPointer =
-+ realloc(process->current_state->vertexPointer,
-+ process->current_state->vertexPointerSize);
-+ memcpy(process->current_state->vertexPointer + offset, ptr,
-+ bytes_size);
-+ glVertexPointer(vertexPointerSize, vertexPointerType, stride,
-+ process->current_state->vertexPointer);
-+ glNormalPointer(normalPointerType, stride,
-+ process->current_state->vertexPointer +
-+ normalPointerOffset);
-+ break;
-+ }
-+
-+ case glTuxRacerDrawElements_fake_func:
-+ {
-+ int mode = args[0];
-+ int count = args[1];
-+ int isColorEnabled = args[2];
-+ void *ptr = (void *) args[3];
-+ int stride =
-+ 6 * sizeof(float) +
-+ ((isColorEnabled) ? 4 * sizeof(unsigned char) : 0);
-+ glVertexPointer(3, GL_FLOAT, stride, ptr);
-+ glNormalPointer(GL_FLOAT, stride, ptr + 3 * sizeof(float));
-+ if (isColorEnabled)
-+ glColorPointer(4, GL_UNSIGNED_BYTE, stride,
-+ ptr + 6 * sizeof(float));
-+ glDrawArrays(mode, 0, count);
-+ break;
-+ }
-+
-+ case glVertexNormalColorPointerInterlaced_fake_func:
-+ {
-+ int i = 0;
-+ int offset = args[i++];
-+ int vertexPointerSize = args[i++];
-+ int vertexPointerType = args[i++];
-+ int stride = args[i++];
-+ int normalPointerOffset = args[i++];
-+ int normalPointerType = args[i++];
-+ int colorPointerOffset = args[i++];
-+ int colorPointerSize = args[i++];
-+ int colorPointerType = args[i++];
-+ int bytes_size = args[i++];
-+ void *ptr = (void *) args[i++];
-+
-+ process->current_state->vertexPointerSize =
-+ MAX(process->current_state->vertexPointerSize,
-+ offset + bytes_size);
-+ process->current_state->vertexPointer =
-+ realloc(process->current_state->vertexPointer,
-+ process->current_state->vertexPointerSize);
-+ memcpy(process->current_state->vertexPointer + offset, ptr,
-+ bytes_size);
-+ glVertexPointer(vertexPointerSize, vertexPointerType, stride,
-+ process->current_state->vertexPointer);
-+ glNormalPointer(normalPointerType, stride,
-+ process->current_state->vertexPointer +
-+ normalPointerOffset);
-+ glColorPointer(colorPointerSize, colorPointerType, stride,
-+ process->current_state->vertexPointer +
-+ colorPointerOffset);
-+ break;
-+ }
-+
-+ case glVertexColorTexCoord0PointerInterlaced_fake_func:
-+ {
-+ int i = 0;
-+ int offset = args[i++];
-+ int vertexPointerSize = args[i++];
-+ int vertexPointerType = args[i++];
-+ int stride = args[i++];
-+ int colorPointerOffset = args[i++];
-+ int colorPointerSize = args[i++];
-+ int colorPointerType = args[i++];
-+ int texCoord0PointerOffset = args[i++];
-+ int texCoord0PointerSize = args[i++];
-+ int texCoord0PointerType = args[i++];
-+ int bytes_size = args[i++];
-+ void *ptr = (void *) args[i++];
-+
-+ process->current_state->vertexPointerSize =
-+ MAX(process->current_state->vertexPointerSize,
-+ offset + bytes_size);
-+ process->current_state->vertexPointer =
-+ realloc(process->current_state->vertexPointer,
-+ process->current_state->vertexPointerSize);
-+ memcpy(process->current_state->vertexPointer + offset, ptr,
-+ bytes_size);
-+ glVertexPointer(vertexPointerSize, vertexPointerType, stride,
-+ process->current_state->vertexPointer);
-+ glColorPointer(colorPointerSize, colorPointerType, stride,
-+ process->current_state->vertexPointer +
-+ colorPointerOffset);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 0);
-+ glTexCoordPointer(texCoord0PointerSize, texCoord0PointerType,
-+ stride,
-+ process->current_state->vertexPointer +
-+ texCoord0PointerOffset);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB +
-+ process->current_state->
-+ activeTextureIndex);
-+ break;
-+ }
-+
-+ case glVertexNormalTexCoord0PointerInterlaced_fake_func:
-+ {
-+ int i = 0;
-+ int offset = args[i++];
-+ int vertexPointerSize = args[i++];
-+ int vertexPointerType = args[i++];
-+ int stride = args[i++];
-+ int normalPointerOffset = args[i++];
-+ int normalPointerType = args[i++];
-+ int texCoord0PointerOffset = args[i++];
-+ int texCoord0PointerSize = args[i++];
-+ int texCoord0PointerType = args[i++];
-+ int bytes_size = args[i++];
-+ void *ptr = (void *) args[i++];
-+
-+ process->current_state->vertexPointerSize =
-+ MAX(process->current_state->vertexPointerSize,
-+ offset + bytes_size);
-+ process->current_state->vertexPointer =
-+ realloc(process->current_state->vertexPointer,
-+ process->current_state->vertexPointerSize);
-+ memcpy(process->current_state->vertexPointer + offset, ptr,
-+ bytes_size);
-+ glVertexPointer(vertexPointerSize, vertexPointerType, stride,
-+ process->current_state->vertexPointer);
-+ glNormalPointer(normalPointerType, stride,
-+ process->current_state->vertexPointer +
-+ normalPointerOffset);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 0);
-+ glTexCoordPointer(texCoord0PointerSize, texCoord0PointerType,
-+ stride,
-+ process->current_state->vertexPointer +
-+ texCoord0PointerOffset);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB +
-+ process->current_state->
-+ activeTextureIndex);
-+ break;
-+ }
-+
-+ case glVertexNormalTexCoord01PointerInterlaced_fake_func:
-+ {
-+ int i = 0;
-+ int offset = args[i++];
-+ int vertexPointerSize = args[i++];
-+ int vertexPointerType = args[i++];
-+ int stride = args[i++];
-+ int normalPointerOffset = args[i++];
-+ int normalPointerType = args[i++];
-+ int texCoord0PointerOffset = args[i++];
-+ int texCoord0PointerSize = args[i++];
-+ int texCoord0PointerType = args[i++];
-+ int texCoord1PointerOffset = args[i++];
-+ int texCoord1PointerSize = args[i++];
-+ int texCoord1PointerType = args[i++];
-+ int bytes_size = args[i++];
-+ void *ptr = (void *) args[i++];
-+
-+ process->current_state->vertexPointerSize =
-+ MAX(process->current_state->vertexPointerSize,
-+ offset + bytes_size);
-+ process->current_state->vertexPointer =
-+ realloc(process->current_state->vertexPointer,
-+ process->current_state->vertexPointerSize);
-+ memcpy(process->current_state->vertexPointer + offset, ptr,
-+ bytes_size);
-+ glVertexPointer(vertexPointerSize, vertexPointerType, stride,
-+ process->current_state->vertexPointer);
-+ glNormalPointer(normalPointerType, stride,
-+ process->current_state->vertexPointer +
-+ normalPointerOffset);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 0);
-+ glTexCoordPointer(texCoord0PointerSize, texCoord0PointerType,
-+ stride,
-+ process->current_state->vertexPointer +
-+ texCoord0PointerOffset);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 1);
-+ glTexCoordPointer(texCoord1PointerSize, texCoord1PointerType,
-+ stride,
-+ process->current_state->vertexPointer +
-+ texCoord1PointerOffset);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB +
-+ process->current_state->
-+ activeTextureIndex);
-+ break;
-+ }
-+
-+ case glVertexNormalTexCoord012PointerInterlaced_fake_func:
-+ {
-+ int i = 0;
-+ int offset = args[i++];
-+ int vertexPointerSize = args[i++];
-+ int vertexPointerType = args[i++];
-+ int stride = args[i++];
-+ int normalPointerOffset = args[i++];
-+ int normalPointerType = args[i++];
-+ int texCoord0PointerOffset = args[i++];
-+ int texCoord0PointerSize = args[i++];
-+ int texCoord0PointerType = args[i++];
-+ int texCoord1PointerOffset = args[i++];
-+ int texCoord1PointerSize = args[i++];
-+ int texCoord1PointerType = args[i++];
-+ int texCoord2PointerOffset = args[i++];
-+ int texCoord2PointerSize = args[i++];
-+ int texCoord2PointerType = args[i++];
-+ int bytes_size = args[i++];
-+ void *ptr = (void *) args[i++];
-+
-+ process->current_state->vertexPointerSize =
-+ MAX(process->current_state->vertexPointerSize,
-+ offset + bytes_size);
-+ process->current_state->vertexPointer =
-+ realloc(process->current_state->vertexPointer,
-+ process->current_state->vertexPointerSize);
-+ memcpy(process->current_state->vertexPointer + offset, ptr,
-+ bytes_size);
-+ glVertexPointer(vertexPointerSize, vertexPointerType, stride,
-+ process->current_state->vertexPointer);
-+ glNormalPointer(normalPointerType, stride,
-+ process->current_state->vertexPointer +
-+ normalPointerOffset);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 0);
-+ glTexCoordPointer(texCoord0PointerSize, texCoord0PointerType,
-+ stride,
-+ process->current_state->vertexPointer +
-+ texCoord0PointerOffset);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 1);
-+ glTexCoordPointer(texCoord1PointerSize, texCoord1PointerType,
-+ stride,
-+ process->current_state->vertexPointer +
-+ texCoord1PointerOffset);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 2);
-+ glTexCoordPointer(texCoord2PointerSize, texCoord2PointerType,
-+ stride,
-+ process->current_state->vertexPointer +
-+ texCoord2PointerOffset);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB +
-+ process->current_state->
-+ activeTextureIndex);
-+ break;
-+ }
-+
-+ case glVertexNormalColorTexCoord0PointerInterlaced_fake_func:
-+ {
-+ int i = 0;
-+ int offset = args[i++];
-+ int vertexPointerSize = args[i++];
-+ int vertexPointerType = args[i++];
-+ int stride = args[i++];
-+ int normalPointerOffset = args[i++];
-+ int normalPointerType = args[i++];
-+ int colorPointerOffset = args[i++];
-+ int colorPointerSize = args[i++];
-+ int colorPointerType = args[i++];
-+ int texCoord0PointerOffset = args[i++];
-+ int texCoord0PointerSize = args[i++];
-+ int texCoord0PointerType = args[i++];
-+ int bytes_size = args[i++];
-+ void *ptr = (void *) args[i++];
-+
-+ process->current_state->vertexPointerSize =
-+ MAX(process->current_state->vertexPointerSize,
-+ offset + bytes_size);
-+ process->current_state->vertexPointer =
-+ realloc(process->current_state->vertexPointer,
-+ process->current_state->vertexPointerSize);
-+ memcpy(process->current_state->vertexPointer + offset, ptr,
-+ bytes_size);
-+ glVertexPointer(vertexPointerSize, vertexPointerType, stride,
-+ process->current_state->vertexPointer);
-+ glNormalPointer(normalPointerType, stride,
-+ process->current_state->vertexPointer +
-+ normalPointerOffset);
-+ glColorPointer(colorPointerSize, colorPointerType, stride,
-+ process->current_state->vertexPointer +
-+ colorPointerOffset);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 0);
-+ glTexCoordPointer(texCoord0PointerSize, texCoord0PointerType,
-+ stride,
-+ process->current_state->vertexPointer +
-+ texCoord0PointerOffset);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB +
-+ process->current_state->
-+ activeTextureIndex);
-+ break;
-+ }
-+
-+ case glVertexNormalColorTexCoord01PointerInterlaced_fake_func:
-+ {
-+ int i = 0;
-+ int offset = args[i++];
-+ int vertexPointerSize = args[i++];
-+ int vertexPointerType = args[i++];
-+ int stride = args[i++];
-+ int normalPointerOffset = args[i++];
-+ int normalPointerType = args[i++];
-+ int colorPointerOffset = args[i++];
-+ int colorPointerSize = args[i++];
-+ int colorPointerType = args[i++];
-+ int texCoord0PointerOffset = args[i++];
-+ int texCoord0PointerSize = args[i++];
-+ int texCoord0PointerType = args[i++];
-+ int texCoord1PointerOffset = args[i++];
-+ int texCoord1PointerSize = args[i++];
-+ int texCoord1PointerType = args[i++];
-+ int bytes_size = args[i++];
-+ void *ptr = (void *) args[i++];
-+
-+ process->current_state->vertexPointerSize =
-+ MAX(process->current_state->vertexPointerSize,
-+ offset + bytes_size);
-+ process->current_state->vertexPointer =
-+ realloc(process->current_state->vertexPointer,
-+ process->current_state->vertexPointerSize);
-+ memcpy(process->current_state->vertexPointer + offset, ptr,
-+ bytes_size);
-+ glVertexPointer(vertexPointerSize, vertexPointerType, stride,
-+ process->current_state->vertexPointer);
-+ glNormalPointer(normalPointerType, stride,
-+ process->current_state->vertexPointer +
-+ normalPointerOffset);
-+ glColorPointer(colorPointerSize, colorPointerType, stride,
-+ process->current_state->vertexPointer +
-+ colorPointerOffset);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 0);
-+ glTexCoordPointer(texCoord0PointerSize, texCoord0PointerType,
-+ stride,
-+ process->current_state->vertexPointer +
-+ texCoord0PointerOffset);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 1);
-+ glTexCoordPointer(texCoord1PointerSize, texCoord1PointerType,
-+ stride,
-+ process->current_state->vertexPointer +
-+ texCoord1PointerOffset);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB +
-+ process->current_state->
-+ activeTextureIndex);
-+ break;
-+ }
-+
-+ case glVertexNormalColorTexCoord012PointerInterlaced_fake_func:
-+ {
-+ int i = 0;
-+ int offset = args[i++];
-+ int vertexPointerSize = args[i++];
-+ int vertexPointerType = args[i++];
-+ int stride = args[i++];
-+ int normalPointerOffset = args[i++];
-+ int normalPointerType = args[i++];
-+ int colorPointerOffset = args[i++];
-+ int colorPointerSize = args[i++];
-+ int colorPointerType = args[i++];
-+ int texCoord0PointerOffset = args[i++];
-+ int texCoord0PointerSize = args[i++];
-+ int texCoord0PointerType = args[i++];
-+ int texCoord1PointerOffset = args[i++];
-+ int texCoord1PointerSize = args[i++];
-+ int texCoord1PointerType = args[i++];
-+ int texCoord2PointerOffset = args[i++];
-+ int texCoord2PointerSize = args[i++];
-+ int texCoord2PointerType = args[i++];
-+ int bytes_size = args[i++];
-+ void *ptr = (void *) args[i++];
-+
-+ process->current_state->vertexPointerSize =
-+ MAX(process->current_state->vertexPointerSize,
-+ offset + bytes_size);
-+ process->current_state->vertexPointer =
-+ realloc(process->current_state->vertexPointer,
-+ process->current_state->vertexPointerSize);
-+ memcpy(process->current_state->vertexPointer + offset, ptr,
-+ bytes_size);
-+ glVertexPointer(vertexPointerSize, vertexPointerType, stride,
-+ process->current_state->vertexPointer);
-+ glNormalPointer(normalPointerType, stride,
-+ process->current_state->vertexPointer +
-+ normalPointerOffset);
-+ glColorPointer(colorPointerSize, colorPointerType, stride,
-+ process->current_state->vertexPointer +
-+ colorPointerOffset);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 0);
-+ glTexCoordPointer(texCoord0PointerSize, texCoord0PointerType,
-+ stride,
-+ process->current_state->vertexPointer +
-+ texCoord0PointerOffset);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 1);
-+ glTexCoordPointer(texCoord1PointerSize, texCoord1PointerType,
-+ stride,
-+ process->current_state->vertexPointer +
-+ texCoord1PointerOffset);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 2);
-+ glTexCoordPointer(texCoord2PointerSize, texCoord2PointerType,
-+ stride,
-+ process->current_state->vertexPointer +
-+ texCoord2PointerOffset);
-+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB +
-+ process->current_state->
-+ activeTextureIndex);
-+ break;
-+ }
-+
-+ case _glVertexPointer_buffer_func:
-+ {
-+ glVertexPointer(args[0], args[1], args[2], (void *) args[3]);
-+ break;
-+ }
-+
-+ case _glNormalPointer_buffer_func:
-+ {
-+ glNormalPointer(args[0], args[1], (void *) args[2]);
-+ break;
-+ }
-+
-+ case _glColorPointer_buffer_func:
-+ {
-+ glColorPointer(args[0], args[1], args[2], (void *) args[3]);
-+ break;
-+ }
-+
-+ case _glSecondaryColorPointer_buffer_func:
-+ {
-+ GET_EXT_PTR(void, glSecondaryColorPointer,
-+ (int, int, int, void *));
-+ ptr_func_glSecondaryColorPointer(args[0], args[1], args[2],
-+ (void *) args[3]);
-+ break;
-+ }
-+
-+ case _glIndexPointer_buffer_func:
-+ {
-+ glIndexPointer(args[0], args[1], (void *) args[2]);
-+ break;
-+ }
-+
-+ case _glTexCoordPointer_buffer_func:
-+ {
-+ glTexCoordPointer(args[0], args[1], args[2], (void *) args[3]);
-+ break;
-+ }
-+
-+ case _glEdgeFlagPointer_buffer_func:
-+ {
-+ glEdgeFlagPointer(args[0], (void *) args[1]);
-+ break;
-+ }
-+
-+ case _glVertexAttribPointerARB_buffer_func:
-+ {
-+ GET_EXT_PTR(void, glVertexAttribPointerARB,
-+ (int, int, int, int, int, void *));
-+ ptr_func_glVertexAttribPointerARB(args[0], args[1], args[2],
-+ args[3], args[4],
-+ (void *) args[5]);
-+ break;
-+ }
-+
-+ case _glWeightPointerARB_buffer_func:
-+ {
-+ GET_EXT_PTR(void, glWeightPointerARB, (int, int, int, void *));
-+
-+ ptr_func_glWeightPointerARB(args[0], args[1], args[2],
-+ (void *) args[3]);
-+ break;
-+ }
-+
-+ case _glMatrixIndexPointerARB_buffer_func:
-+ {
-+ GET_EXT_PTR(void, glMatrixIndexPointerARB,
-+ (int, int, int, void *));
-+ ptr_func_glMatrixIndexPointerARB(args[0], args[1], args[2],
-+ (void *) args[3]);
-+ break;
-+ }
-+
-+ case _glFogCoordPointer_buffer_func:
-+ {
-+ GET_EXT_PTR(void, glFogCoordPointer, (int, int, void *));
-+
-+ ptr_func_glFogCoordPointer(args[0], args[1], (void *) args[2]);
-+ break;
-+ }
-+
-+ case _glVariantPointerEXT_buffer_func:
-+ {
-+ GET_EXT_PTR(void, glVariantPointerEXT, (int, int, int, void *));
-+
-+ ptr_func_glVariantPointerEXT(args[0], args[1], args[2],
-+ (void *) args[3]);
-+ break;
-+ }
-+
-+ case _glDrawElements_buffer_func:
-+ {
-+ glDrawElements(args[0], args[1], args[2], (void *) args[3]);
-+ break;
-+ }
-+
-+ case _glDrawRangeElements_buffer_func:
-+ {
-+ glDrawRangeElements(args[0], args[1], args[2], args[3], args[4],
-+ (void *) args[5]);
-+ break;
-+ }
-+
-+ case _glMultiDrawElements_buffer_func:
-+ {
-+ GET_EXT_PTR(void, glMultiDrawElements,
-+ (int, int *, int, void **, int));
-+ ptr_func_glMultiDrawElements(args[0], (int *) args[1], args[2],
-+ (void **) args[3], args[4]);
-+ break;
-+ }
-+
-+ case _glGetError_fake_func:
-+ {
-+ break;
-+ }
-+
-+ case glGetIntegerv_func:
-+ {
-+ glGetIntegerv(args[0], (int *) args[1]);
-+ fprintf(stderr, "glGetIntegerv(%x)=%d\n", (int) args[0],
-+ *(int *) args[1]);
-+ break;
-+ }
-+
-+ case _glReadPixels_pbo_func:
-+ {
-+ glReadPixels(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]),
-+ ARG_TO_INT(args[2]), ARG_TO_INT(args[3]),
-+ ARG_TO_UNSIGNED_INT(args[4]),
-+ ARG_TO_UNSIGNED_INT(args[5]), (void *) (args[6]));
-+ break;
-+ }
-+
-+ case _glDrawPixels_pbo_func:
-+ {
-+ glDrawPixels(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]),
-+ ARG_TO_UNSIGNED_INT(args[2]),
-+ ARG_TO_UNSIGNED_INT(args[3]),
-+ (const void *) (args[4]));
-+ break;
-+ }
-+
-+ case _glMapBufferARB_fake_func:
-+ {
-+ GET_EXT_PTR(GLvoid *, glMapBufferARB, (GLenum, GLenum));
-+ GET_EXT_PTR(GLboolean, glUnmapBufferARB, (GLenum));
-+ int target = args[0];
-+ int size = args[1];
-+ void *dst_ptr = (void *) args[2];
-+ void *src_ptr = ptr_func_glMapBufferARB(target, GL_READ_ONLY);
-+
-+ if (src_ptr) {
-+ memcpy(dst_ptr, src_ptr, size);
-+ ret_int = ptr_func_glUnmapBufferARB(target);
-+ } else {
-+ ret_int = 0;
-+ }
-+ break;
-+ }
-+
-+ case fake_gluBuild2DMipmaps_func:
-+ {
-+ GET_GLU_PTR(GLint, gluBuild2DMipmaps,
-+ (GLenum arg_0, GLint arg_1, GLsizei arg_2,
-+ GLsizei arg_3, GLenum arg_4, GLenum arg_5,
-+ const GLvoid *arg_6));
-+ if (ptr_func_gluBuild2DMipmaps == NULL)
-+ ptr_func_gluBuild2DMipmaps = mesa_gluBuild2DMipmaps;
-+ ptr_func_gluBuild2DMipmaps(ARG_TO_UNSIGNED_INT(args[0]),
-+ ARG_TO_INT(args[1]),
-+ ARG_TO_INT(args[2]),
-+ ARG_TO_INT(args[3]),
-+ ARG_TO_UNSIGNED_INT(args[4]),
-+ ARG_TO_UNSIGNED_INT(args[5]),
-+ (const void *) (args[6]));
-+ break;
-+ }
-+
-+ case _glSelectBuffer_fake_func:
-+ {
-+ process->current_state->selectBufferSize = args[0] * 4;
-+ process->current_state->selectBufferPtr =
-+ realloc(process->current_state->selectBufferPtr,
-+ process->current_state->selectBufferSize);
-+ glSelectBuffer(args[0], process->current_state->selectBufferPtr);
-+ break;
-+ }
-+
-+ case _glGetSelectBuffer_fake_func:
-+ {
-+ void *ptr = (void *) args[0];
-+
-+ memcpy(ptr, process->current_state->selectBufferPtr,
-+ process->current_state->selectBufferSize);
-+ break;
-+ }
-+
-+ case _glFeedbackBuffer_fake_func:
-+ {
-+ process->current_state->feedbackBufferSize = args[0] * 4;
-+ process->current_state->feedbackBufferPtr =
-+ realloc(process->current_state->feedbackBufferPtr,
-+ process->current_state->feedbackBufferSize);
-+ glFeedbackBuffer(args[0], args[1],
-+ process->current_state->feedbackBufferPtr);
-+ break;
-+ }
-+
-+ case _glGetFeedbackBuffer_fake_func:
-+ {
-+ void *ptr = (void *) args[0];
-+
-+ memcpy(ptr, process->current_state->feedbackBufferPtr,
-+ process->current_state->feedbackBufferSize);
-+ break;
-+ }
-+
-+ /*
-+ * case glEnableClientState_func: { if (display_function_call)
-+ * fprintf(stderr, "cap : %s\n", nameArrays[args[0] -
-+ * GL_VERTEX_ARRAY]); glEnableClientState(args[0]); break; }
-+ *
-+ * case glDisableClientState_func: { if (display_function_call)
-+ * fprintf(stderr, "cap : %s\n", nameArrays[args[0] -
-+ * GL_VERTEX_ARRAY]); glDisableClientState(args[0]); break; }
-+ *
-+ * case glClientActiveTexture_func: case
-+ * glClientActiveTextureARB_func: { if (display_function_call)
-+ * fprintf(stderr, "client activeTexture %d\n", args[0] -
-+ * GL_TEXTURE0_ARB); glClientActiveTextureARB(args[0]); break; }
-+ *
-+ * case glActiveTextureARB_func: { if (display_function_call)
-+ * fprintf(stderr, "server activeTexture %d\n", args[0] -
-+ * GL_TEXTURE0_ARB); glActiveTextureARB(args[0]); break; }
-+ *
-+ * case glLockArraysEXT_func: break;
-+ *
-+ * case glUnlockArraysEXT_func: break;
-+ *
-+ * case glArrayElement_func: { glArrayElement(args[0]); break; }
-+ *
-+ * case glDrawArrays_func: { glDrawArrays(args[0],args[1],args[2]);
-+ * break; }
-+ *
-+ * case glDrawElements_func: {
-+ * glDrawElements(args[0],args[1],args[2],(void*)args[3]); break; }
-+ *
-+ * case glDrawRangeElements_func: {
-+ * glDrawRangeElements(args[0],args[1],args[2],args[3],args[4],(void*)args[5]);
-+ * break; } */
-+
-+ case glGetError_func:
-+ {
-+#ifdef SYSTEMATIC_ERROR_CHECK
-+ ret_int = process->current_state->last_error;
-+#else
-+ ret_int = glGetError();
-+#endif
-+ break;
-+ }
-+
-+ case glNewObjectBufferATI_func:
-+ {
-+ GET_EXT_PTR(int, glNewObjectBufferATI, (int, void *, int));
-+
-+ ret_int = ptr_func_glNewObjectBufferATI(args[0],
-+ (void *) args[1], args[2]);
-+ break;
-+ }
-+
-+ case glClear_func:
-+ /* HACK workaround for an unexplainable issue */
-+ if (args[0] & GL_COLOR_BUFFER_BIT)
-+ glClear(GL_COLOR_BUFFER_BIT);
-+ if (args[0] & GL_STENCIL_BUFFER_BIT)
-+ glClear(GL_STENCIL_BUFFER_BIT);
-+ if (args[0] & GL_DEPTH_BUFFER_BIT)
-+ glClear(GL_DEPTH_BUFFER_BIT);
-+ if (args[0] & GL_ACCUM_BUFFER_BIT)
-+ glClear(GL_ACCUM_BUFFER_BIT);
-+ break;
-+
-+ default:
-+ execute_func(func_number, args, &ret_int, &ret_char);
-+ break;
-+ }
-+
-+#ifdef SYSTEMATIC_ERROR_CHECK
-+ if (func_number == glGetError_func) {
-+ process->current_state->last_error = 0;
-+ } else {
-+ process->current_state->last_error = glGetError();
-+ if (process->current_state->last_error != 0) {
-+ printf("error %s 0x%x\n", tab_opengl_calls_name[func_number],
-+ process->current_state->last_error);
-+ }
-+ }
-+#endif
-+
-+ switch (ret_type) {
-+ case TYPE_NONE:
-+ break;
-+
-+ case TYPE_CHAR:
-+ case TYPE_UNSIGNED_CHAR:
-+ ret_int = ret_char;
-+ break;
-+
-+ case TYPE_INT:
-+ case TYPE_UNSIGNED_INT:
-+ break;
-+
-+ case TYPE_CONST_CHAR:
-+ {
-+ strncpy(ret_string, (ret_str) ? ret_str : "", 32768);
-+ break;
-+ }
-+
-+ default:
-+ fprintf(stderr, "unexpected ret type : %d\n", ret_type);
-+ exit(-1);
-+ break;
-+ }
-+
-+ if (display_function_call)
-+ fprintf(stderr, "[%d]< %s\n", process->instr_counter,
-+ tab_opengl_calls_name[func_number]);
-+
-+ return ret_int;
-+}
-Index: qemu-0.12.4/target-i386/opengl_func.h
-===================================================================
---- /dev/null
-+++ qemu-0.12.4/target-i386/opengl_func.h
-@@ -0,0 +1,1108 @@
-+/*
-+ * Main header for both host and guest sides
-+ *
-+ * Copyright (c) 2006,2007 Even Rouault
-+ *
-+ * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+ * THE SOFTWARE.
-+ */
-+
-+#include "mesa_gl.h"
-+#include "mesa_glext.h"
-+
-+/* Argument list are internally of a type that can hold a target pointer
-+ * or a host pointer. */
-+typedef target_phys_addr_t arg_t;
-+
-+enum {
-+ TYPE_NONE,
-+ TYPE_CHAR,
-+ TYPE_UNSIGNED_CHAR,
-+ TYPE_SHORT,
-+ TYPE_UNSIGNED_SHORT,
-+ TYPE_INT,
-+ TYPE_UNSIGNED_INT,
-+ TYPE_FLOAT,
-+ TYPE_DOUBLE,
-+ TYPE_1CHAR,
-+ TYPE_2CHAR,
-+ TYPE_3CHAR,
-+ TYPE_4CHAR,
-+ TYPE_128UCHAR,
-+ TYPE_1SHORT,
-+ TYPE_2SHORT,
-+ TYPE_3SHORT,
-+ TYPE_4SHORT,
-+ TYPE_1INT,
-+ TYPE_2INT,
-+ TYPE_3INT,
-+ TYPE_4INT,
-+ TYPE_1FLOAT,
-+ TYPE_2FLOAT,
-+ TYPE_3FLOAT,
-+ TYPE_4FLOAT,
-+ TYPE_16FLOAT,
-+ TYPE_1DOUBLE,
-+ TYPE_2DOUBLE,
-+ TYPE_3DOUBLE,
-+ TYPE_4DOUBLE,
-+ TYPE_16DOUBLE,
-+ TYPE_OUT_1INT,
-+ TYPE_OUT_1FLOAT,
-+ TYPE_OUT_4CHAR,
-+ TYPE_OUT_4INT,
-+ TYPE_OUT_4FLOAT,
-+ TYPE_OUT_4DOUBLE,
-+ TYPE_OUT_128UCHAR,
-+ TYPE_CONST_CHAR,
-+ TYPE_ARRAY_CHAR,
-+ TYPE_ARRAY_SHORT,
-+ TYPE_ARRAY_INT,
-+ TYPE_ARRAY_FLOAT,
-+ TYPE_ARRAY_DOUBLE,
-+ TYPE_IN_IGNORED_POINTER,
-+ TYPE_OUT_ARRAY_CHAR,
-+ TYPE_OUT_ARRAY_SHORT,
-+ TYPE_OUT_ARRAY_INT,
-+ TYPE_OUT_ARRAY_FLOAT,
-+ TYPE_OUT_ARRAY_DOUBLE,
-+ TYPE_NULL_TERMINATED_STRING,
-+
-+ TYPE_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
-+ TYPE_ARRAY_SHORT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
-+ TYPE_ARRAY_INT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
-+ TYPE_ARRAY_FLOAT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
-+ TYPE_ARRAY_DOUBLE_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
-+ TYPE_OUT_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
-+ TYPE_OUT_ARRAY_SHORT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
-+ TYPE_OUT_ARRAY_INT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
-+ TYPE_OUT_ARRAY_FLOAT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
-+ TYPE_OUT_ARRAY_DOUBLE_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
-+ /* .... */
-+ TYPE_LAST,
-+ /* .... */
-+ TYPE_1UCHAR = TYPE_CHAR,
-+ TYPE_1USHORT = TYPE_1SHORT,
-+ TYPE_1UINT = TYPE_1INT,
-+ TYPE_OUT_1UINT = TYPE_OUT_1INT,
-+ TYPE_OUT_4UCHAR = TYPE_OUT_4CHAR,
-+ TYPE_ARRAY_VOID = TYPE_ARRAY_CHAR,
-+ TYPE_ARRAY_SIGNED_CHAR = TYPE_ARRAY_CHAR,
-+ TYPE_ARRAY_UNSIGNED_CHAR = TYPE_ARRAY_CHAR,
-+ TYPE_ARRAY_UNSIGNED_SHORT = TYPE_ARRAY_SHORT,
-+ TYPE_ARRAY_UNSIGNED_INT = TYPE_ARRAY_INT,
-+ TYPE_OUT_ARRAY_VOID = TYPE_OUT_ARRAY_CHAR,
-+ TYPE_OUT_ARRAY_SIGNED_CHAR = TYPE_OUT_ARRAY_CHAR,
-+ TYPE_OUT_ARRAY_UNSIGNED_CHAR = TYPE_OUT_ARRAY_CHAR,
-+ TYPE_OUT_ARRAY_UNSIGNED_SHORT = TYPE_OUT_ARRAY_SHORT,
-+ TYPE_OUT_ARRAY_UNSIGNED_INT = TYPE_OUT_ARRAY_INT,
-+ TYPE_ARRAY_VOID_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS =
-+ TYPE_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
-+ TYPE_ARRAY_SIGNED_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS =
-+ TYPE_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
-+ TYPE_ARRAY_UNSIGNED_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS =
-+ TYPE_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
-+ TYPE_ARRAY_UNSIGNED_SHORT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS =
-+ TYPE_ARRAY_SHORT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
-+ TYPE_ARRAY_UNSIGNED_INT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS =
-+ TYPE_ARRAY_INT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
-+ TYPE_OUT_ARRAY_VOID_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS =
-+ TYPE_OUT_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
-+ TYPE_OUT_ARRAY_SIGNED_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS =
-+ TYPE_OUT_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
-+ TYPE_OUT_ARRAY_UNSIGNED_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS =
-+ TYPE_OUT_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
-+ TYPE_OUT_ARRAY_UNSIGNED_SHORT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS =
-+ TYPE_OUT_ARRAY_SHORT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
-+ TYPE_OUT_ARRAY_UNSIGNED_INT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS =
-+ TYPE_OUT_ARRAY_INT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
-+};
-+
-+#define CASE_IN_LENGTH_DEPENDING_ON_PREVIOUS_ARGS \
-+ case TYPE_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS: \
-+ case TYPE_ARRAY_SHORT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS: \
-+ case TYPE_ARRAY_INT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS: \
-+ case TYPE_ARRAY_FLOAT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS: \
-+ case TYPE_ARRAY_DOUBLE_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS
-+
-+#define CASE_OUT_LENGTH_DEPENDING_ON_PREVIOUS_ARGS \
-+ case TYPE_OUT_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS: \
-+ case TYPE_OUT_ARRAY_SHORT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS: \
-+ case TYPE_OUT_ARRAY_INT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS: \
-+ case TYPE_OUT_ARRAY_FLOAT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS: \
-+ case TYPE_OUT_ARRAY_DOUBLE_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS
-+
-+#define CASE_IN_UNKNOWN_SIZE_POINTERS \
-+ case TYPE_ARRAY_CHAR: \
-+ case TYPE_ARRAY_SHORT: \
-+ case TYPE_ARRAY_INT: \
-+ case TYPE_ARRAY_FLOAT: \
-+ case TYPE_ARRAY_DOUBLE
-+
-+#define CASE_IN_KNOWN_SIZE_POINTERS \
-+ case TYPE_1CHAR:\
-+ case TYPE_2CHAR:\
-+ case TYPE_3CHAR:\
-+ case TYPE_4CHAR:\
-+ case TYPE_128UCHAR:\
-+ case TYPE_1SHORT:\
-+ case TYPE_2SHORT:\
-+ case TYPE_3SHORT:\
-+ case TYPE_4SHORT:\
-+ case TYPE_1INT:\
-+ case TYPE_2INT:\
-+ case TYPE_3INT:\
-+ case TYPE_4INT:\
-+ case TYPE_1FLOAT:\
-+ case TYPE_2FLOAT:\
-+ case TYPE_3FLOAT:\
-+ case TYPE_4FLOAT:\
-+ case TYPE_16FLOAT:\
-+ case TYPE_1DOUBLE:\
-+ case TYPE_2DOUBLE:\
-+ case TYPE_3DOUBLE:\
-+ case TYPE_4DOUBLE:\
-+ case TYPE_16DOUBLE
-+
-+#define CASE_OUT_UNKNOWN_SIZE_POINTERS \
-+ case TYPE_OUT_ARRAY_CHAR: \
-+ case TYPE_OUT_ARRAY_SHORT: \
-+ case TYPE_OUT_ARRAY_INT: \
-+ case TYPE_OUT_ARRAY_FLOAT: \
-+ case TYPE_OUT_ARRAY_DOUBLE
-+
-+#define CASE_OUT_KNOWN_SIZE_POINTERS \
-+ case TYPE_OUT_1INT: \
-+ case TYPE_OUT_1FLOAT: \
-+ case TYPE_OUT_4CHAR: \
-+ case TYPE_OUT_4INT: \
-+ case TYPE_OUT_4FLOAT: \
-+ case TYPE_OUT_4DOUBLE: \
-+ case TYPE_OUT_128UCHAR \
-+
-+#define CASE_IN_POINTERS CASE_IN_UNKNOWN_SIZE_POINTERS: CASE_IN_KNOWN_SIZE_POINTERS: CASE_IN_LENGTH_DEPENDING_ON_PREVIOUS_ARGS
-+#define CASE_OUT_POINTERS CASE_OUT_UNKNOWN_SIZE_POINTERS: CASE_OUT_KNOWN_SIZE_POINTERS: CASE_OUT_LENGTH_DEPENDING_ON_PREVIOUS_ARGS
-+
-+#define CASE_POINTERS CASE_IN_POINTERS: CASE_OUT_POINTERS
-+#define CASE_KNOWN_SIZE_POINTERS CASE_IN_KNOWN_SIZE_POINTERS: CASE_OUT_KNOWN_SIZE_POINTERS
-+
-+
-+#define IS_ARRAY_CHAR(type) (type == TYPE_ARRAY_CHAR || type == TYPE_1CHAR || type == TYPE_2CHAR || type == TYPE_3CHAR || type == TYPE_4CHAR || type == TYPE_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS)
-+#define IS_ARRAY_SHORT(type) (type == TYPE_ARRAY_SHORT || type == TYPE_1SHORT || type == TYPE_2SHORT || type == TYPE_3SHORT || type == TYPE_4SHORT || type == TYPE_ARRAY_SHORT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS)
-+#define IS_ARRAY_INT(type) (type == TYPE_ARRAY_INT || type == TYPE_1INT || type == TYPE_2INT || type == TYPE_3INT || type == TYPE_4INT || type == TYPE_ARRAY_INT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS)
-+#define IS_ARRAY_FLOAT(type) (type == TYPE_ARRAY_FLOAT || type == TYPE_1FLOAT || type == TYPE_2FLOAT || type == TYPE_3FLOAT || type == TYPE_4FLOAT || type == TYPE_16FLOAT || type == TYPE_ARRAY_FLOAT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS)
-+#define IS_ARRAY_DOUBLE(type) (type == TYPE_ARRAY_DOUBLE || type == TYPE_1DOUBLE || type == TYPE_2DOUBLE || type == TYPE_3DOUBLE || type == TYPE_4DOUBLE || type == TYPE_16DOUBLE || type == TYPE_ARRAY_DOUBLE_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS)
-+
-+#define NB_MAX_TEXTURES 16
-+#define MY_GL_MAX_VERTEX_ATTRIBS_ARB 16
-+#define MY_GL_MAX_VERTEX_ATTRIBS_NV 16
-+#define MY_GL_MAX_VARIANT_POINTER_EXT 16
-+
-+static int tab_args_type_length[] = {
-+ 0,
-+ sizeof(char),
-+ sizeof(unsigned char),
-+ sizeof(short),
-+ sizeof(unsigned short),
-+ sizeof(int),
-+ sizeof(unsigned int),
-+ sizeof(float),
-+ sizeof(double),
-+ 1 * sizeof(char),
-+ 2 * sizeof(char),
-+ 3 * sizeof(char),
-+ 4 * sizeof(char),
-+ 128 * sizeof(char),
-+ 1 * sizeof(short),
-+ 2 * sizeof(short),
-+ 3 * sizeof(short),
-+ 4 * sizeof(short),
-+ 1 * sizeof(int),
-+ 2 * sizeof(int),
-+ 3 * sizeof(int),
-+ 4 * sizeof(int),
-+ 1 * sizeof(float),
-+ 2 * sizeof(float),
-+ 3 * sizeof(float),
-+ 4 * sizeof(float),
-+ 16 * sizeof(float),
-+ 1 * sizeof(double),
-+ 2 * sizeof(double),
-+ 3 * sizeof(double),
-+ 4 * sizeof(double),
-+ 16 * sizeof(double),
-+ sizeof(int),
-+ sizeof(float),
-+ 4 * sizeof(char),
-+ 4 * sizeof(int),
-+ 4 * sizeof(float),
-+ 4 * sizeof(double),
-+ 128 * sizeof(char),
-+ 0,
-+ 0,
-+ 0,
-+ 0,
-+ 0,
-+ 0,
-+ 0,
-+ 0,
-+ 0,
-+ 0,
-+ 0,
-+ 0,
-+ 0,
-+
-+ /* the following sizes are the size of 1 element of the array */
-+ sizeof(char),
-+ sizeof(short),
-+ sizeof(int),
-+ sizeof(float),
-+ sizeof(double),
-+ sizeof(char),
-+ sizeof(short),
-+ sizeof(int),
-+ sizeof(float),
-+ sizeof(double),
-+};
-+
-+typedef struct {
-+ int ret_type;
-+ int has_out_parameters;
-+ int nb_args;
-+ int args_type[0];
-+} Signature;
-+
-+static const int _init32_signature[] =
-+ { TYPE_NONE, 1, 2, TYPE_INT, TYPE_OUT_1INT };
-+static const int _init64_signature[] =
-+ { TYPE_NONE, 1, 2, TYPE_INT, TYPE_OUT_1INT };
-+
-+static const int _synchronize_signature[] = { TYPE_INT, 0, 0 };
-+
-+static const int _serialized_calls_signature[] =
-+ { TYPE_NONE, 0, 1, TYPE_ARRAY_CHAR };
-+
-+static const int _exit_process_signature[] = { TYPE_NONE, 0, 0 };
-+
-+static const int _changeWindowState_signature[] =
-+ { TYPE_NONE, 0, 2, TYPE_INT, TYPE_INT };
-+
-+static const int _moveResizeWindow_signature[] =
-+ { TYPE_NONE, 0, 2, TYPE_INT, TYPE_4INT };
-+
-+static const int _send_cursor_signature[] =
-+ { TYPE_NONE, 0, 7, TYPE_INT, TYPE_INT,
-+ TYPE_INT, TYPE_INT,
-+ TYPE_INT, TYPE_INT,
-+ TYPE_ARRAY_INT
-+};
-+
-+/* XVisualInfo* glXChooseVisual( Display *dpy, int screen, int *attribList ) */
-+static const int glXChooseVisual_signature[] =
-+ { TYPE_INT, 0, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_ARRAY_INT };
-+
-+/*GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis,
-+ GLXContext shareList, Bool direct )*/
-+static const int glXCreateContext_signature[] =
-+ { TYPE_INT, 0, 4, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT, TYPE_INT };
-+
-+static const int glXCopyContext_signature[] =
-+ { TYPE_NONE, 0, 4, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT,
-+TYPE_INT };
-+
-+/* void glXDestroyContext( Display *dpy, GLXContext ctx ) */
-+static const int glXDestroyContext_signature[] =
-+ { TYPE_NONE, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT };
-+
-+/* Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable, GLXContext ctx) */
-+//static const int glXMakeCurrent_signature[] = {TYPE_INT, 0, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT};
-+/* making it asynchronous */
-+static const int glXMakeCurrent_signature[] =
-+ { TYPE_NONE, 0, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT };
-+
-+/*int glXGetConfig( Display *dpy, XVisualInfo *visual,
-+ int attrib, int *value )*/
-+static const int glXGetConfig_signature[] =
-+ { TYPE_INT, 1, 4, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT,
-+TYPE_OUT_1INT };
-+
-+/* "glXGetConfig_extended"(dpy, visual_id, int n, int* attribs, int* values, int* rets) */
-+static const int glXGetConfig_extended_signature[] =
-+ { TYPE_NONE, 1, 6, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT,
-+TYPE_ARRAY_INT, TYPE_OUT_ARRAY_INT, TYPE_OUT_ARRAY_INT };
-+
-+/* void glXSwapBuffers( Display *dpy, GLXDrawable drawable ); */
-+static const int glXSwapBuffers_signature[] =
-+ { TYPE_NONE, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT };
-+
-+/* Bool glXQueryVersion( Display *dpy, int *maj, int *min ) */
-+static const int glXQueryVersion_signature[] =
-+ { TYPE_INT, 1, 3, TYPE_IN_IGNORED_POINTER, TYPE_OUT_1INT, TYPE_OUT_1INT };
-+
-+/* Bool glXQueryExtension( Display *dpy, int *errorBase, int *eventBase ) */
-+static const int glXQueryExtension_signature[] =
-+ { TYPE_INT, 1, 3, TYPE_IN_IGNORED_POINTER, TYPE_OUT_1INT, TYPE_OUT_1INT };
-+
-+static const int glXWaitGL_signature[] = { TYPE_INT, 0, 0 };
-+static const int glXWaitX_signature[] = { TYPE_INT, 0, 0 };
-+
-+/* GLX 1.1 and later */
-+
-+/* const char *glXGetClientString( Display *dpy, int name ) */
-+static const int glXGetClientString_signature[] =
-+ { TYPE_CONST_CHAR, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT };
-+
-+/*const char *glXQueryExtensionsString( Display *dpy, int screen ) */
-+static const int glXQueryExtensionsString_signature[] =
-+ { TYPE_CONST_CHAR, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT };
-+
-+/* const char *glXQueryServerString( Display *dpy, int screen, int name ) */
-+static const int glXQueryServerString_signature[] =
-+ { TYPE_CONST_CHAR, 0, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT };
-+
-+
-+static const int glXGetProcAddress_fake_signature[] =
-+ { TYPE_INT, 0, 1, TYPE_NULL_TERMINATED_STRING };
-+
-+static const int glXGetProcAddress_global_fake_signature[] =
-+ { TYPE_NONE, 1, 3, TYPE_INT, TYPE_ARRAY_CHAR, TYPE_OUT_ARRAY_CHAR };
-+
-+
-+/* GLX 1.3 and later */
-+
-+/*
-+GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen,
-+ const int *attribList, int *nitems ); */
-+static const int glXChooseFBConfig_signature[] =
-+ { TYPE_INT, 1, 4, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_ARRAY_INT,
-+TYPE_OUT_1INT };
-+
-+static const int glXChooseFBConfigSGIX_signature[] =
-+ { TYPE_INT, 1, 4, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_ARRAY_INT,
-+TYPE_OUT_1INT };
-+
-+static const int glXGetFBConfigs_signature[] =
-+ { TYPE_INT, 1, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_OUT_1INT };
-+
-+/* "glXGetFBConfigAttrib_extended"(dpy, fbconfig, int n, int* attribs, int* values, int* rets) */
-+static const int glXGetFBConfigAttrib_extended_signature[] =
-+ { TYPE_NONE, 1, 6, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT,
-+TYPE_ARRAY_INT, TYPE_OUT_ARRAY_INT, TYPE_OUT_ARRAY_INT };
-+
-+
-+/* GLXPbuffer glXCreatePbuffer( Display *dpy, GLXFBConfig config,
-+ const int *attribList ) */
-+static const int glXCreatePbuffer_signature[] =
-+ { TYPE_INT, 0, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_ARRAY_INT };
-+
-+static const int glXCreateGLXPbufferSGIX_signature[] =
-+ { TYPE_INT, 0, 5, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_ARRAY_INT };
-+
-+static const int glXDestroyPbuffer_signature[] =
-+ { TYPE_NONE, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT };
-+
-+static const int glXDestroyGLXPbufferSGIX_signature[] =
-+ { TYPE_NONE, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT };
-+
-+/* GLXContext glXCreateNewContext(Display * dpy
-+ GLXFBConfig config
-+ int renderType
-+ GLXContext ShareList
-+ Bool Direct) */
-+static const int glXCreateNewContext_signature[] =
-+ { TYPE_INT, 0, 5, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_INT };
-+
-+static const int glXCreateContextWithConfigSGIX_signature[] =
-+ { TYPE_INT, 0, 5, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_INT };
-+
-+/*XVisualInfo *glXGetVisualFromFBConfig( Display *dpy, GLXFBConfig config ) */
-+static const int glXGetVisualFromFBConfig_signature[] =
-+ { TYPE_INT, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT };
-+
-+/*int glXGetFBConfigAttrib(Display *dpy, GLXFBConfig config, int attribute, int *value)*/
-+static const int glXGetFBConfigAttrib_signature[] =
-+ { TYPE_INT, 1, 4, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT,
-+TYPE_OUT_1INT };
-+
-+static const int glXGetFBConfigAttribSGIX_signature[] =
-+ { TYPE_INT, 1, 4, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT,
-+TYPE_OUT_1INT };
-+
-+static const int glXQueryContext_signature[] =
-+ { TYPE_INT, 1, 4, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT,
-+TYPE_OUT_1INT };
-+
-+static const int glXQueryGLXPbufferSGIX_signature[] =
-+ { TYPE_INT, 1, 4, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT,
-+TYPE_OUT_1INT };
-+
-+static const int glXQueryDrawable_signature[] =
-+ { TYPE_NONE, 1, 4, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT,
-+TYPE_OUT_1INT };
-+
-+/* void glXUseXFont( Font font, int first, int count, int list ) */
-+static const int glXUseXFont_signature[] =
-+ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT };
-+
-+/* Bool glXIsDirect( Display *dpy, GLXContext ctx ) */
-+static const int glXIsDirect_signature[] =
-+ { TYPE_CHAR, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT };
-+
-+static const int glXGetScreenDriver_signature[] =
-+ { TYPE_CONST_CHAR, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT };
-+
-+static const int glXGetDriverConfig_signature[] =
-+ { TYPE_CONST_CHAR, 0, 1, TYPE_NULL_TERMINATED_STRING };
-+
-+
-+static const int glXWaitVideoSyncSGI_signature[] =
-+ { TYPE_INT, 1, 3, TYPE_INT, TYPE_INT, TYPE_OUT_1INT };
-+
-+static const int glXGetVideoSyncSGI_signature[] =
-+ { TYPE_INT, 1, 1, TYPE_OUT_1INT };
-+
-+static const int glXSwapIntervalSGI_signature[] =
-+ { TYPE_INT, 0, 1, TYPE_INT };
-+
-+static const int glXBindTexImageATI_signature[] =
-+ { TYPE_NONE, 0, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT };
-+static const int glXReleaseTexImageATI_signature[] =
-+ { TYPE_NONE, 0, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT };
-+static const int glXBindTexImageARB_signature[] =
-+ { TYPE_INT, 0, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT };
-+static const int glXReleaseTexImageARB_signature[] =
-+ { TYPE_INT, 0, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT };
-+
-+/* const GLubyte * glGetString( GLenum name ) */
-+static const int glGetString_signature[] =
-+ { TYPE_CONST_CHAR, 0, 1, TYPE_INT };
-+
-+/* void glShaderSourceARB (GLhandleARB handle , GLsizei size, const GLcharARB* *p_tab_prog, const GLint * tab_length) */
-+/* --> void glShaderSourceARB (GLhandleARB handle , GLsizei size, const GLcharARB* all_progs, const GLint * tab_length) */
-+static const int glShaderSourceARB_fake_signature[] =
-+ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR, TYPE_ARRAY_INT };
-+static const int glShaderSource_fake_signature[] =
-+ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR, TYPE_ARRAY_INT };
-+
-+static const int glVertexPointer_fake_signature[] =
-+ { TYPE_NONE, 0, 6, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_ARRAY_CHAR };
-+static const int glNormalPointer_fake_signature[] =
-+ { TYPE_NONE, 0, 5, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_ARRAY_CHAR };
-+static const int glColorPointer_fake_signature[] =
-+ { TYPE_NONE, 0, 6, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_ARRAY_CHAR };
-+static const int glSecondaryColorPointer_fake_signature[] =
-+ { TYPE_NONE, 0, 6, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_ARRAY_CHAR };
-+static const int glIndexPointer_fake_signature[] =
-+ { TYPE_NONE, 0, 5, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_ARRAY_CHAR };
-+static const int glTexCoordPointer_fake_signature[] =
-+ { TYPE_NONE, 0, 7, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_INT, TYPE_ARRAY_CHAR };
-+static const int glEdgeFlagPointer_fake_signature[] =
-+ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
-+static const int glVertexAttribPointerARB_fake_signature[] =
-+ { TYPE_NONE, 0, 8, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
-+static const int glVertexAttribPointerNV_fake_signature[] =
-+ { TYPE_NONE, 0, 7, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_INT, TYPE_ARRAY_CHAR };
-+static const int glWeightPointerARB_fake_signature[] =
-+ { TYPE_NONE, 0, 6, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_ARRAY_CHAR };
-+static const int glMatrixIndexPointerARB_fake_signature[] =
-+ { TYPE_NONE, 0, 6, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_ARRAY_CHAR };
-+static const int glFogCoordPointer_fake_signature[] =
-+ { TYPE_NONE, 0, 5, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_ARRAY_CHAR };
-+static const int glInterleavedArrays_fake_signature[] =
-+ { TYPE_NONE, 0, 5, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_ARRAY_CHAR };
-+static const int glElementPointerATI_fake_signature[] =
-+ { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
-+static const int glVariantPointerEXT_fake_signature[] =
-+ { TYPE_NONE, 0, 6, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_ARRAY_CHAR };
-+static const int glTuxRacerDrawElements_fake_signature[] =
-+ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
-+static const int glVertexAndNormalPointer_fake_signature[] =
-+ { TYPE_NONE, 0, 7, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_INT, TYPE_ARRAY_CHAR };
-+static const int glTexCoordPointer01_fake_signature[] =
-+ { TYPE_NONE, 0, 5, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_ARRAY_CHAR };
-+static const int glTexCoordPointer012_fake_signature[] =
-+ { TYPE_NONE, 0, 5, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_ARRAY_CHAR };
-+static const int glVertexNormalPointerInterlaced_fake_signature[] =
-+ { TYPE_NONE, 0, 8, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
-+static const int glVertexNormalColorPointerInterlaced_fake_signature[] =
-+ { TYPE_NONE, 0, 11, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
-+static const int glVertexColorTexCoord0PointerInterlaced_fake_signature[] =
-+ { TYPE_NONE, 0, 12, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
-+static const int glVertexNormalTexCoord0PointerInterlaced_fake_signature[] =
-+ { TYPE_NONE, 0, 11, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
-+static const int glVertexNormalTexCoord01PointerInterlaced_fake_signature[] =
-+ { TYPE_NONE, 0, 14, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
-+static const int glVertexNormalTexCoord012PointerInterlaced_fake_signature[] =
-+ { TYPE_NONE, 0, 17, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
-+static const int
-+ glVertexNormalColorTexCoord0PointerInterlaced_fake_signature[] =
-+ { TYPE_NONE, 0, 14, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_ARRAY_CHAR };
-+static const int
-+ glVertexNormalColorTexCoord01PointerInterlaced_fake_signature[] =
-+ { TYPE_NONE, 0, 17, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
-+static const int
-+ glVertexNormalColorTexCoord012PointerInterlaced_fake_signature[] =
-+ { TYPE_NONE, 0, 20, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
-+
-+static const int glGenTextures_fake_signature[] =
-+ { TYPE_NONE, 0, 1, TYPE_INT };
-+static const int glGenBuffersARB_fake_signature[] =
-+ { TYPE_NONE, 0, 1, TYPE_INT };
-+static const int glGenLists_fake_signature[] = { TYPE_NONE, 0, 1, TYPE_INT };
-+
-+static const int _glDrawElements_buffer_signature[] =
-+ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT };
-+static const int _glDrawRangeElements_buffer_signature[] =
-+ { TYPE_NONE, 0, 6, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_INT };
-+static const int _glMultiDrawElements_buffer_signature[] =
-+ { TYPE_NONE, 0, 5, TYPE_INT, TYPE_ARRAY_INT, TYPE_INT, TYPE_ARRAY_INT,
-+TYPE_INT };
-+
-+static const int _glVertexPointer_buffer_signature[] =
-+ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT };
-+static const int _glNormalPointer_buffer_signature[] =
-+ { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_INT };
-+static const int _glColorPointer_buffer_signature[] =
-+ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT };
-+static const int _glSecondaryColorPointer_buffer_signature[] =
-+ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT };
-+static const int _glIndexPointer_buffer_signature[] =
-+ { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_INT };
-+static const int _glTexCoordPointer_buffer_signature[] =
-+ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT };
-+static const int _glEdgeFlagPointer_buffer_signature[] =
-+ { TYPE_NONE, 0, 2, TYPE_INT, TYPE_INT };
-+static const int _glVertexAttribPointerARB_buffer_signature[] =
-+ { TYPE_NONE, 0, 6, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_INT };
-+static const int _glWeightPointerARB_buffer_signature[] =
-+ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT };
-+static const int _glMatrixIndexPointerARB_buffer_signature[] =
-+ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT };
-+static const int _glFogCoordPointer_buffer_signature[] =
-+ { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_INT };
-+static const int _glVariantPointerEXT_buffer_signature[] =
-+ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT };
-+
-+static const int _glReadPixels_pbo_signature[] =
-+ { TYPE_INT, 0, 7, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
-+TYPE_INT, TYPE_INT };
-+static const int _glDrawPixels_pbo_signature[] =
-+ { TYPE_NONE, 0, 5, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT };
-+static const int _glMapBufferARB_fake_signature[] =
-+ { TYPE_INT, 1, 3, TYPE_INT, TYPE_INT, TYPE_OUT_ARRAY_CHAR };
-+
-+static const int _glSelectBuffer_fake_signature[] =
-+ { TYPE_NONE, 0, 1, TYPE_INT };
-+static const int _glGetSelectBuffer_fake_signature[] =
-+ { TYPE_NONE, 1, 1, TYPE_ARRAY_CHAR };
-+static const int _glFeedbackBuffer_fake_signature[] =
-+ { TYPE_NONE, 0, 2, TYPE_INT, TYPE_INT };
-+static const int _glGetFeedbackBuffer_fake_signature[] =
-+ { TYPE_NONE, 1, 1, TYPE_ARRAY_CHAR };
-+
-+static const int _glGetError_fake_signature[] = { TYPE_NONE, 0, 0 };
-+
-+#define timesynchro_func -1
-+#define memorize_array_func -2
-+#define reuse_array_func -3
-+
-+#include "gl_func.h"
-+
-+static GLint __glTexParameter_size(FILE *err_file, GLenum pname)
-+{
-+ switch (pname) {
-+ case GL_TEXTURE_MAG_FILTER:
-+ case GL_TEXTURE_MIN_FILTER:
-+ case GL_TEXTURE_WRAP_S:
-+ case GL_TEXTURE_WRAP_T:
-+ case GL_TEXTURE_PRIORITY:
-+ case GL_TEXTURE_WRAP_R:
-+ case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB:
-+/* case GL_SHADOW_AMBIENT_SGIX:*/
-+ case GL_TEXTURE_MIN_LOD:
-+ case GL_TEXTURE_MAX_LOD:
-+ case GL_TEXTURE_BASE_LEVEL:
-+ case GL_TEXTURE_MAX_LEVEL:
-+ case GL_TEXTURE_CLIPMAP_FRAME_SGIX:
-+ case GL_TEXTURE_LOD_BIAS_S_SGIX:
-+ case GL_TEXTURE_LOD_BIAS_T_SGIX:
-+ case GL_TEXTURE_LOD_BIAS_R_SGIX:
-+ case GL_GENERATE_MIPMAP:
-+/* case GL_GENERATE_MIPMAP_SGIS:*/
-+ case GL_TEXTURE_COMPARE_SGIX:
-+ case GL_TEXTURE_COMPARE_OPERATOR_SGIX:
-+ case GL_TEXTURE_MAX_CLAMP_S_SGIX:
-+ case GL_TEXTURE_MAX_CLAMP_T_SGIX:
-+ case GL_TEXTURE_MAX_CLAMP_R_SGIX:
-+ case GL_TEXTURE_MAX_ANISOTROPY_EXT:
-+ case GL_TEXTURE_LOD_BIAS:
-+/* case GL_TEXTURE_LOD_BIAS_EXT:*/
-+ case GL_DEPTH_TEXTURE_MODE:
-+/* case GL_DEPTH_TEXTURE_MODE_ARB:*/
-+ case GL_TEXTURE_COMPARE_MODE:
-+/* case GL_TEXTURE_COMPARE_MODE_ARB:*/
-+ case GL_TEXTURE_COMPARE_FUNC:
-+/* case GL_TEXTURE_COMPARE_FUNC_ARB:*/
-+ case GL_TEXTURE_UNSIGNED_REMAP_MODE_NV:
-+ return 1;
-+ case GL_TEXTURE_CLIPMAP_CENTER_SGIX:
-+ case GL_TEXTURE_CLIPMAP_OFFSET_SGIX:
-+ return 2;
-+ case GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX:
-+ return 3;
-+ case GL_TEXTURE_BORDER_COLOR:
-+ case GL_POST_TEXTURE_FILTER_BIAS_SGIX:
-+ case GL_POST_TEXTURE_FILTER_SCALE_SGIX:
-+ return 4;
-+ default:
-+ fprintf(err_file, "unhandled pname = %d\n", pname);
-+ return 0;
-+ }
-+}
-+
-+static int __glLight_size(FILE *err_file, GLenum pname)
-+{
-+ switch (pname) {
-+ case GL_AMBIENT:
-+ case GL_DIFFUSE:
-+ case GL_SPECULAR:
-+ case GL_POSITION:
-+ return 4;
-+ break;
-+
-+ case GL_SPOT_DIRECTION:
-+ return 3;
-+ break;
-+
-+ case GL_SPOT_EXPONENT:
-+ case GL_SPOT_CUTOFF:
-+ case GL_CONSTANT_ATTENUATION:
-+ case GL_LINEAR_ATTENUATION:
-+ case GL_QUADRATIC_ATTENUATION:
-+ return 1;
-+ break;
-+
-+ default:
-+ fprintf(err_file, "unhandled pname = %d\n", pname);
-+ return 0;
-+ }
-+}
-+
-+static int __glMaterial_size(FILE *err_file, GLenum pname)
-+{
-+ switch (pname) {
-+ case GL_AMBIENT:
-+ case GL_DIFFUSE:
-+ case GL_SPECULAR:
-+ case GL_EMISSION:
-+ case GL_AMBIENT_AND_DIFFUSE:
-+ return 4;
-+ break;
-+
-+ case GL_SHININESS:
-+ return 1;
-+ break;
-+
-+ case GL_COLOR_INDEXES:
-+ return 3;
-+ break;
-+
-+ default:
-+ fprintf(err_file, "unhandled pname = %d\n", pname);
-+ return 0;
-+ }
-+}
-+
-+static inline int compute_arg_length(FILE *err_file, int func_number,
-+ int arg_i, arg_t *args)
-+{
-+ Signature *signature = (Signature *) tab_opengl_calls[func_number];
-+ int *args_type = signature->args_type;
-+
-+ switch (func_number) {
-+ case glProgramNamedParameter4fNV_func:
-+ case glProgramNamedParameter4dNV_func:
-+ case glProgramNamedParameter4fvNV_func:
-+ case glProgramNamedParameter4dvNV_func:
-+ case glGetProgramNamedParameterfvNV_func:
-+ case glGetProgramNamedParameterdvNV_func:
-+ if (arg_i == 2)
-+ return 1 * args[arg_i - 1] *
-+ tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glProgramStringARB_func:
-+ case glLoadProgramNV_func:
-+ case glGenProgramsNV_func:
-+ case glDeleteProgramsNV_func:
-+ case glGenProgramsARB_func:
-+ case glDeleteProgramsARB_func:
-+ case glRequestResidentProgramsNV_func:
-+ case glDrawBuffers_func:
-+ case glDrawBuffersARB_func:
-+ case glDrawBuffersATI_func:
-+ case glDeleteBuffers_func:
-+ case glDeleteBuffersARB_func:
-+ case glDeleteTextures_func:
-+ case glDeleteTexturesEXT_func:
-+ case glGenFramebuffersEXT_func:
-+ case glDeleteFramebuffersEXT_func:
-+ case glGenRenderbuffersEXT_func:
-+ case glDeleteRenderbuffersEXT_func:
-+ case glGenQueries_func:
-+ case glGenQueriesARB_func:
-+ case glDeleteQueries_func:
-+ case glDeleteQueriesARB_func:
-+ case glGenOcclusionQueriesNV_func:
-+ case glDeleteOcclusionQueriesNV_func:
-+ case glGenFencesNV_func:
-+ case glDeleteFencesNV_func:
-+ case glUniform1fv_func:
-+ case glUniform1iv_func:
-+ case glUniform1fvARB_func:
-+ case glUniform1ivARB_func:
-+ case glUniform1uivEXT_func:
-+ case glVertexAttribs1dvNV_func:
-+ case glVertexAttribs1fvNV_func:
-+ case glVertexAttribs1svNV_func:
-+ case glVertexAttribs1hvNV_func:
-+ case glWeightbvARB_func:
-+ case glWeightsvARB_func:
-+ case glWeightivARB_func:
-+ case glWeightfvARB_func:
-+ case glWeightdvARB_func:
-+ case glWeightubvARB_func:
-+ case glWeightusvARB_func:
-+ case glWeightuivARB_func:
-+ case glPixelMapfv_func:
-+ case glPixelMapuiv_func:
-+ case glPixelMapusv_func:
-+ case glProgramBufferParametersfvNV_func:
-+ case glProgramBufferParametersIivNV_func:
-+ case glProgramBufferParametersIuivNV_func:
-+ case glTransformFeedbackAttribsNV_func:
-+ case glTransformFeedbackVaryingsNV_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return 1 * args[arg_i - 1] *
-+ tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glUniform2fv_func:
-+ case glUniform2iv_func:
-+ case glUniform2fvARB_func:
-+ case glUniform2ivARB_func:
-+ case glUniform2uivEXT_func:
-+ case glVertexAttribs2dvNV_func:
-+ case glVertexAttribs2fvNV_func:
-+ case glVertexAttribs2svNV_func:
-+ case glVertexAttribs2hvNV_func:
-+ case glDetailTexFuncSGIS_func:
-+ case glSharpenTexFuncSGIS_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return 2 * args[arg_i - 1] *
-+ tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glUniform3fv_func:
-+ case glUniform3iv_func:
-+ case glUniform3fvARB_func:
-+ case glUniform3ivARB_func:
-+ case glUniform3uivEXT_func:
-+ case glVertexAttribs3dvNV_func:
-+ case glVertexAttribs3fvNV_func:
-+ case glVertexAttribs3svNV_func:
-+ case glVertexAttribs3hvNV_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return 3 * args[arg_i - 1] *
-+ tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glUniform4fv_func:
-+ case glUniform4iv_func:
-+ case glUniform4fvARB_func:
-+ case glUniform4ivARB_func:
-+ case glUniform4uivEXT_func:
-+ case glVertexAttribs4dvNV_func:
-+ case glVertexAttribs4fvNV_func:
-+ case glVertexAttribs4svNV_func:
-+ case glVertexAttribs4hvNV_func:
-+ case glVertexAttribs4ubvNV_func:
-+ case glProgramParameters4fvNV_func:
-+ case glProgramParameters4dvNV_func:
-+ case glProgramLocalParameters4fvEXT_func:
-+ case glProgramEnvParameters4fvEXT_func:
-+ case glProgramLocalParametersI4ivNV_func:
-+ case glProgramLocalParametersI4uivNV_func:
-+ case glProgramEnvParametersI4ivNV_func:
-+ case glProgramEnvParametersI4uivNV_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return 4 * args[arg_i - 1] *
-+ tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glPrioritizeTextures_func:
-+ case glPrioritizeTexturesEXT_func:
-+ case glAreProgramsResidentNV_func:
-+ case glAreTexturesResident_func:
-+ case glAreTexturesResidentEXT_func:
-+ if (arg_i == 1 || arg_i == 2)
-+ return args[0] * tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glLightfv_func:
-+ case glLightiv_func:
-+ case glGetLightfv_func:
-+ case glGetLightiv_func:
-+ case glFragmentLightfvSGIX_func:
-+ case glFragmentLightivSGIX_func:
-+ case glGetFragmentLightfvSGIX_func:
-+ case glGetFragmentLightivSGIX_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return __glLight_size(err_file,
-+ args[arg_i -
-+ 1]) *
-+ tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glLightModelfv_func:
-+ case glLightModeliv_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return ((args[arg_i - 1] ==
-+ GL_LIGHT_MODEL_AMBIENT) ? 4 : 1) *
-+ tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glFragmentLightModelfvSGIX_func:
-+ case glFragmentLightModelivSGIX_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return ((args[arg_i - 1] ==
-+ GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX) ? 4 : 1) *
-+ tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glMaterialfv_func:
-+ case glMaterialiv_func:
-+ case glGetMaterialfv_func:
-+ case glGetMaterialiv_func:
-+ case glFragmentMaterialfvSGIX_func:
-+ case glFragmentMaterialivSGIX_func:
-+ case glGetFragmentMaterialfvSGIX_func:
-+ case glGetFragmentMaterialivSGIX_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return __glMaterial_size(err_file,
-+ args[arg_i -
-+ 1]) *
-+ tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glTexParameterfv_func:
-+ case glTexParameteriv_func:
-+ case glGetTexParameterfv_func:
-+ case glGetTexParameteriv_func:
-+ case glTexParameterIivEXT_func:
-+ case glTexParameterIuivEXT_func:
-+ case glGetTexParameterIivEXT_func:
-+ case glGetTexParameterIuivEXT_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return __glTexParameter_size(err_file,
-+ args[arg_i -
-+ 1]) *
-+ tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glFogiv_func:
-+ case glFogfv_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return ((args[arg_i - 1] ==
-+ GL_FOG_COLOR) ? 4 : 1) *
-+ tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glTexGendv_func:
-+ case glTexGenfv_func:
-+ case glTexGeniv_func:
-+ case glGetTexGendv_func:
-+ case glGetTexGenfv_func:
-+ case glGetTexGeniv_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return ((args[arg_i - 1] ==
-+ GL_TEXTURE_GEN_MODE) ? 1 : 4) *
-+ tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glTexEnvfv_func:
-+ case glTexEnviv_func:
-+ case glGetTexEnvfv_func:
-+ case glGetTexEnviv_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return ((args[arg_i - 1] ==
-+ GL_TEXTURE_ENV_MODE) ? 1 : 4) *
-+ tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glConvolutionParameterfv_func:
-+ case glConvolutionParameteriv_func:
-+ case glGetConvolutionParameterfv_func:
-+ case glGetConvolutionParameteriv_func:
-+ case glConvolutionParameterfvEXT_func:
-+ case glConvolutionParameterivEXT_func:
-+ case glGetConvolutionParameterfvEXT_func:
-+ case glGetConvolutionParameterivEXT_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return ((args[arg_i - 1] == GL_CONVOLUTION_BORDER_COLOR ||
-+ args[arg_i - 1] == GL_CONVOLUTION_FILTER_SCALE ||
-+ args[arg_i - 1] ==
-+ GL_CONVOLUTION_FILTER_BIAS) ? 4 : 1) *
-+ tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glGetVertexAttribfvARB_func:
-+ case glGetVertexAttribfvNV_func:
-+ case glGetVertexAttribfv_func:
-+ case glGetVertexAttribdvARB_func:
-+ case glGetVertexAttribdvNV_func:
-+ case glGetVertexAttribdv_func:
-+ case glGetVertexAttribivARB_func:
-+ case glGetVertexAttribivNV_func:
-+ case glGetVertexAttribiv_func:
-+ case glGetVertexAttribIivEXT_func:
-+ case glGetVertexAttribIuivEXT_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return ((args[arg_i - 1] ==
-+ GL_CURRENT_VERTEX_ATTRIB_ARB) ? 4 : 1) *
-+ tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+
-+ case glPointParameterfv_func:
-+ case glPointParameterfvEXT_func:
-+ case glPointParameterfvARB_func:
-+ case glPointParameterfvSGIS_func:
-+ case glPointParameteriv_func:
-+ case glPointParameterivEXT_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return ((args[arg_i - 1] ==
-+ GL_POINT_DISTANCE_ATTENUATION) ? 3 : 1) *
-+ tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glUniformMatrix2fv_func:
-+ case glUniformMatrix2fvARB_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return 2 * 2 * args[1] * tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glUniformMatrix3fv_func:
-+ case glUniformMatrix3fvARB_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return 3 * 3 * args[1] * tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glUniformMatrix4fv_func:
-+ case glUniformMatrix4fvARB_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return 4 * 4 * args[1] * tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glUniformMatrix2x3fv_func:
-+ case glUniformMatrix3x2fv_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return 2 * 3 * args[1] * tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glUniformMatrix2x4fv_func:
-+ case glUniformMatrix4x2fv_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return 2 * 4 * args[1] * tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glUniformMatrix3x4fv_func:
-+ case glUniformMatrix4x3fv_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return 3 * 4 * args[1] * tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ case glSpriteParameterivSGIX_func:
-+ case glSpriteParameterfvSGIX_func:
-+ if (arg_i == signature->nb_args - 1)
-+ return ((args[arg_i - 1] ==
-+ GL_SPRITE_MODE_SGIX) ? 1 : 3) *
-+ tab_args_type_length[args_type[arg_i]];
-+ break;
-+
-+ default:
-+ break;
-+ }
-+
-+ fprintf(err_file,
-+ "invalid combination for compute_arg_length : func_number=%d, arg_i=%d\n",
-+ func_number, arg_i);
-+ return 0;
-+}
-+
-+#define IS_NULL_POINTER_OK_FOR_FUNC(func_number) \
-+ (func_number == glBitmap_func || \
-+ func_number == _send_cursor_func || \
-+ func_number == glTexImage1D_func || \
-+ func_number == glTexImage2D_func || \
-+ func_number == glTexImage3D_func || \
-+ func_number == glBufferDataARB_func || \
-+ func_number == glNewObjectBufferATI_func)
-+
-+#ifdef __amd64__
-+#define _init_func _init64_func
-+#else
-+#ifdef __i386__
-+#define _init_func _init32_func
-+#else
-+#error Unsupported ABI
-+#endif
-+#endif
-Index: qemu-0.12.4/target-i386/opengl_player.c
-===================================================================
---- /dev/null
-+++ qemu-0.12.4/target-i386/opengl_player.c
-@@ -0,0 +1,1461 @@
-+/*
-+ * Plays a sequence of OpenGL calls recorded either under qemu or with opengl_server
-+ *
-+ * Copyright (c) 2007 Even Rouault
-+ *
-+ * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+ * THE SOFTWARE.
-+ */
-+
-+/* gcc -O2 -g -Wall opengl_player.c opengl_exec.c -o opengl_player -I../i386-softmmu -I. -I.. -lGL */
-+
-+#include <stdlib.h>
-+#include <stdio.h>
-+#include <string.h>
-+#include <assert.h>
-+#include <unistd.h>
-+#include <sys/time.h>
-+#include <math.h>
-+
-+#include <GL/gl.h>
-+#include <X11/Xlib.h>
-+
-+// TODO
-+typedef long unsigned int target_phys_addr_t;
-+
-+#include "opengl_func.h"
-+#include "opengl_utils.h"
-+
-+//#include "ffmpeg/avcodec.h"
-+
-+extern void init_process_tab(void);
-+extern int do_function_call(int, arg_t *, char *);
-+
-+void do_disconnect_current(void);
-+void do_context_switch(Display *dpy, pid_t pid, int call);
-+
-+typedef struct {
-+ int n_used;
-+ unsigned int crc;
-+ int size;
-+ long long last_use;
-+} RecordBufferedArray;
-+
-+typedef struct {
-+ int size;
-+ long file_offset;
-+} ReplayBufferedArray;
-+
-+#define N_BUFFERED_ARRAYS 1024
-+RecordBufferedArray recordBufferedArrays[N_BUFFERED_ARRAYS];
-+
-+#define INSTR_WINDOW_SIZE 65536
-+short instrWindow[INSTR_WINDOW_SIZE];
-+int instrWindowCount = 0;
-+int instrWindowPtr = 0;
-+int instrWindowBeginPtr = 0;
-+
-+#include "ghash.c"
-+
-+#define PRIME 131
-+
-+typedef struct {
-+ int iFirstOccur;
-+ int nbOccur;
-+ int hash;
-+} SeqDesc;
-+
-+typedef struct {
-+ int hash;
-+ int offset;
-+} HashElt;
-+
-+int sort_hash_N;
-+short *sort_hash_tab;
-+int count_compar;
-+int collision_detected;
-+
-+static int sort_hash(const void *ptrA, const void *ptrB)
-+{
-+ const HashElt *a = (const HashElt *) ptrA;
-+ const HashElt *b = (const HashElt *) ptrB;
-+
-+ count_compar++;
-+ if (a->hash == b->hash) {
-+ int j;
-+
-+ for (j = 0; j < sort_hash_N; j++) {
-+ if (sort_hash_tab[a->offset + j] != sort_hash_tab[b->offset + j]) {
-+ collision_detected = 1;
-+ // fprintf(stderr, "collision de hash !\n");
-+ return sort_hash_tab[a->offset + j] <
-+ sort_hash_tab[b->offset + j] ? -1 : 1;
-+ }
-+ }
-+ return a->offset - b->offset;
-+ } else if (a->hash < b->hash)
-+ return -1;
-+ else
-+ return 1;
-+}
-+
-+static int sort_seq_desc_by_occur(const void *ptrA, const void *ptrB)
-+{
-+ const SeqDesc *a = (const SeqDesc *) ptrA;
-+ const SeqDesc *b = (const SeqDesc *) ptrB;
-+
-+ return b->nbOccur - a->nbOccur;
-+}
-+
-+static int sort_seq_desc_by_offset(const void *ptrA, const void *ptrB)
-+{
-+ const SeqDesc *a = (const SeqDesc *) ptrA;
-+ const SeqDesc *b = (const SeqDesc *) ptrB;
-+
-+ return a->iFirstOccur - b->iFirstOccur;
-+}
-+
-+void find_repeated_seq(short *tab, int iStart, int length)
-+{
-+ // SimpleHashTable* tableHash = simple_hash_table_new(free);
-+ int N = 10;
-+ int i;
-+ int hash = 0;
-+ int primeN = 1;
-+ HashElt *tabHash = malloc(sizeof(HashElt) * (length - N + 1));
-+
-+ short *new_tab = malloc(sizeof(short) * length);
-+ memcpy(&new_tab[0], &tab[iStart], sizeof(short) * (length - iStart));
-+ memcpy(&new_tab[length - iStart], &tab[0], sizeof(short) * iStart);
-+ tab = new_tab;
-+
-+ sort_hash_N = N;
-+ sort_hash_tab = tab;
-+
-+ fprintf(stderr, "(start) iStart = %d\n", iStart);
-+ for (i = 0; i < N; i++) {
-+ primeN *= PRIME;
-+ }
-+ for (i = 0; i < length; i++) {
-+ hash = hash * PRIME + tab[i];
-+ if (i >= N) {
-+ hash -= tab[i - N] * primeN;
-+ }
-+ if (i >= N - 1) {
-+ tabHash[i - (N - 1)].offset = i - (N - 1);
-+ tabHash[i - (N - 1)].hash =
-+ /* (i == 100) ? tabHash[0].hash : */ hash;
-+#if 0
-+ void **p_n_occurences =
-+ simple_hash_table_lookup_pointer(tableHash, hash);
-+ if (p_n_occurences == NULL) {
-+ SeqDesc *seqDesc = malloc(sizeof(SeqDesc));
-+
-+ seqDesc->iFirstOccur = i - (N - 1);
-+ seqDesc->nbOccur = 1;
-+ simple_hash_table_insert(tableHash, hash, seqDesc);
-+ } else {
-+ SeqDesc *seqDesc = (SeqDesc *) (*p_n_occurences);
-+ int j;
-+
-+ for (j = 0; j < N; j++) {
-+ if (tab[(iStart + seqDesc->iFirstOccur + j) % length] !=
-+ tab[(iStart + i - (N - 1) + j) % length])
-+ break;
-+ }
-+ if (j != N)
-+ fprintf(stderr, "arg\n");
-+ seqDesc->nbOccur++;
-+ // fprintf(stderr, "iStart = %d, i = %d, iFirstOccur = %d,
-+ // nbOccur = %d\n", iStart, i, seqDesc->iFirstOccur,
-+ // seqDesc->nbOccur);
-+ }
-+#endif
-+ }
-+ }
-+ collision_detected = 0;
-+ count_compar = 0;
-+ qsort(tabHash, length - N + 1, sizeof(HashElt), sort_hash);
-+ if (!collision_detected) {
-+ SeqDesc *tabSeqDesc = (SeqDesc *) malloc(sizeof(SeqDesc) * length);
-+ int nbSeqDesc = 0;
-+ int lastI = 0;
-+ int prevHash = tabHash[0].hash;
-+
-+ for (i = 1; i < length - N + 1; i++) {
-+ if (tabHash[i].hash != prevHash) {
-+ tabSeqDesc[nbSeqDesc].iFirstOccur = tabHash[lastI].offset;
-+ tabSeqDesc[nbSeqDesc].nbOccur = i - lastI;
-+ tabSeqDesc[nbSeqDesc].hash = prevHash;
-+ nbSeqDesc++;
-+ lastI = i;
-+ prevHash = tabHash[i].hash;
-+ }
-+ }
-+ tabSeqDesc[nbSeqDesc].iFirstOccur = tabHash[lastI].offset;
-+ tabSeqDesc[nbSeqDesc].nbOccur = i - lastI;
-+ nbSeqDesc++;
-+ qsort(tabSeqDesc, nbSeqDesc, sizeof(SeqDesc), sort_seq_desc_by_occur);
-+ for (i = 0; i < nbSeqDesc; i++) {
-+ if (tabSeqDesc[i].nbOccur < 10)
-+ break;
-+ // fprintf(stderr, "%d %d\n", tabSeqDesc[i].iFirstOccur,
-+ // tabSeqDesc[i].nbOccur);
-+ }
-+ nbSeqDesc = i;
-+ qsort(tabSeqDesc, nbSeqDesc, sizeof(SeqDesc),
-+ sort_seq_desc_by_offset);
-+ lastI = tabSeqDesc[0].iFirstOccur;
-+ int maxI = 0;
-+ int j = 0;
-+
-+ for (i = 1; i < nbSeqDesc; i++) {
-+ if (tabSeqDesc[i].iFirstOccur - lastI <= N) {
-+ if (tabSeqDesc[i].nbOccur > tabSeqDesc[maxI].nbOccur) {
-+ maxI = i;
-+ }
-+ } else {
-+ tabSeqDesc[j].iFirstOccur = tabSeqDesc[maxI].iFirstOccur;
-+ tabSeqDesc[j].nbOccur = tabSeqDesc[maxI].nbOccur;
-+ j++;
-+#define MAX(a,b) (((a)>(b)) ? (a) : (b))
-+ lastI = tabSeqDesc[maxI].iFirstOccur;
-+ while (i < nbSeqDesc &&
-+ tabSeqDesc[i].iFirstOccur - lastI <= N)
-+ i++;
-+ if (i == nbSeqDesc)
-+ break;
-+ maxI = i;
-+ }
-+ }
-+ nbSeqDesc = j;
-+ qsort(tabSeqDesc, nbSeqDesc, sizeof(SeqDesc), sort_seq_desc_by_occur);
-+ for (i = 0; i < nbSeqDesc; i++) {
-+ fprintf(stderr, "offset=%d occurNb=%d hash=%d:",
-+ tabSeqDesc[i].iFirstOccur, tabSeqDesc[i].nbOccur,
-+ tabSeqDesc[i].hash);
-+ for (j = 0; j < N; j++)
-+ fprintf(stderr, "%d ", tab[tabSeqDesc[i].iFirstOccur + j]);
-+ fprintf(stderr, "\n");
-+ }
-+ free(tabSeqDesc);
-+ } else {
-+ fprintf(stderr, "collision de hash !\n");
-+ }
-+
-+ fprintf(stderr, "(end) iStart = %d (count_compar = %d)\n", iStart,
-+ count_compar);
-+ // simple_hash_table_foreach(tableHash,
-+ free(tabHash);
-+ free(tab);
-+#if 0
-+ simple_hash_table_destroy(tableHash);
-+#endif
-+#if 0
-+ int i, j, k;
-+
-+ for (i = 0; i < length; i++) {
-+ int nMaxContiguous = 0;
-+ int jMax = 0;
-+
-+ for (j = 0; j < length; j++) {
-+ int nContiguous = 0;
-+
-+ for (k = 0; k < j - i; k++) {
-+ if (tab[(iStart + i + k) % length] ==
-+ tab[(iStart + i + j + k) % length]) {
-+ nContiguous++;
-+ } else
-+ break;
-+ }
-+ if (nContiguous >= nMaxContiguous) {
-+ nMaxContiguous = nContiguous;
-+ jMax = j;
-+ }
-+ }
-+ fprintf(stderr, "iStart = %d, i = %d, j = %d, nContiguous = %d\n",
-+ iStart, i, i + jMax, nMaxContiguous);
-+ }
-+#endif
-+}
-+
-+#define MAX_SERVER_STATE_STACK_SIZE 16
-+
-+typedef struct {
-+ GLbitfield mask;
-+ int matrixMode;
-+ int lastMatrixOp;
-+} ServerState;
-+
-+typedef struct {
-+ ServerState stackAttrib[MAX_SERVER_STATE_STACK_SIZE];
-+ int stackAttribPtr;
-+ int matrixMode;
-+ int lastMatrixOp;
-+} GLState;
-+
-+#define NB_STATES 100
-+GLState states[NB_STATES];
-+
-+void usage()
-+{
-+ printf("Usage : opengl_player [OPTION] filename\n\n");
-+ printf
-+ ("filename is the file where to read the OpenGL flow ('/tmp/debug_gl.bin' by default)\n");
-+ printf("'-' is supported and stands for standard input\n\n");
-+ printf("The following options are available :\n");
-+ printf
-+ ("--debug : output debugging trace on stderr\n");
-+ printf("--disable-real-time-play-back : play as fast as possible\n");
-+ printf
-+ ("--show-hard-disk-bandwidth : displays regularly the data bandwidth\n");
-+ printf("--h or --help : display this help\n");
-+}
-+
-+int main(int argc, char *argv[])
-+{
-+ static int args_size[50];
-+ int i;
-+ int visualid_fbconfig_read = -1;
-+ int visualid_fbconfig_real = 0;
-+ char *filename = "/tmp/debug_gl.bin";
-+ int slowdown = 0;
-+ int debug = 0;
-+ char *ret_string;
-+ arg_t args[50];
-+ struct timeval start_time, last_time, current_time;
-+ int noplay = 0;
-+ int count_last_time = 0, count_current = 0;
-+ int refresh_rate = 500;
-+ int disable_real_time_play_back = 0;
-+ int show_hard_disk_bandwith = 0;
-+ int last_offset = 0;
-+ int resize = 0;
-+ int window_width = 0, window_height = 0;
-+ int orig_window_width = 0;
-+ int show_offset = 0;
-+ int show_diff_offset = 0;
-+ int last_cmd_offset = 0;
-+ FILE *compressed_file = NULL;
-+ int sizeBufferedArraysPlay = 0;
-+ ReplayBufferedArray *replayBufferedArrays = NULL;
-+ int currentState = 0;
-+
-+ memset(recordBufferedArrays, 0, sizeof(recordBufferedArrays));
-+ memset(states, 0, sizeof(states));
-+ for (i = 0; i < NB_STATES; i++) {
-+ states[i].matrixMode = GL_MODELVIEW;
-+ states[i].lastMatrixOp = -1;
-+ }
-+
-+ /* avcodec_init(); AVCodec* avCodec =
-+ * avcodec_find_encoder(CODEC_ID_MPEG2VIDEO); AVCodecContext*
-+ * avCodecContext = avcodec_alloc_context(); */
-+
-+ for (i = 1; i < argc; i++) {
-+ if (argv[i][0] == '-' && argv[i][1] == '-')
-+ argv[i] = argv[i] + 1;
-+
-+ if (strncmp(argv[i], "-slowdown=", strlen("-slowdown=")) == 0) {
-+ slowdown = atoi(argv[i] + strlen("-slowdown="));
-+ } else if (strcmp(argv[i], "-noplay") == 0) {
-+ noplay = 1;
-+ } else if (strcmp(argv[i], "-debug") == 0) {
-+ debug = 1;
-+ } else if (strcmp(argv[i], "-disable-real-time-play-back") == 0) {
-+ disable_real_time_play_back = 1;
-+ } else if (strcmp(argv[i], "-show-hard-disk-bandwidth") == 0) {
-+ show_hard_disk_bandwith = 1;
-+ } else if (strcmp(argv[i], "-show-offset") == 0) {
-+ show_offset = 1;
-+ } else
-+ if (strncmp
-+ (argv[i], "-show-diff-offset",
-+ strlen("-show-diff-offset")) == 0) {
-+ show_diff_offset = atoi(argv[i] + strlen("-show-diff-offset="));
-+ } else if (strncmp(argv[i], "-width=", strlen("-width=")) == 0) {
-+ window_width = atoi(argv[i] + strlen("-width="));
-+ resize = 1;
-+ } else if (strncmp(argv[i], "-refreshrate=", strlen("-refreshrate="))
-+ == 0) {
-+ refresh_rate = atoi(argv[i] + strlen("-refreshrate="));
-+ } else
-+ if (strncmp
-+ (argv[i], "-output-compressed-filename=",
-+ strlen("-output-compressed-filename=")) == 0) {
-+ char *compressed_filename =
-+ argv[i] + strlen("-output-compressed-filename=");
-+ compressed_file = fopen(compressed_filename, "wb");
-+ } else if (strcmp(argv[i], "-") == 0) {
-+ filename = NULL;
-+ } else if (strcmp(argv[i], "-h") == 0 ||
-+ strcmp(argv[i], "-help") == 0) {
-+ usage();
-+ return 0;
-+ } else
-+ filename = argv[i];
-+ }
-+ FILE *f = (filename) ? fopen(filename, "rb") : stdin;
-+
-+ if (f == NULL) {
-+ fprintf(stderr, "cannot open %s\n", filename);
-+ return 0;
-+ }
-+ // FILE* fout = fopen("/tmp/raw", "wb");
-+
-+ init_process_tab();
-+ ret_string = malloc(32768);
-+
-+ gettimeofday(&start_time, NULL);
-+ gettimeofday(&last_time, NULL);
-+
-+// void* buffer= NULL;
-+#define WRITE_UNSIGNED_CHAR(x) do { unsigned char myvar = x; fwrite(&myvar, sizeof(myvar), 1, compressed_file); } while(0)
-+#define WRITE_SHORT(x) do { short myvar = x; fwrite(&myvar, sizeof(myvar), 1, compressed_file); } while(0)
-+#define WRITE_INT(x) do { int myvar = x; fwrite(&myvar, sizeof(myvar), 1, compressed_file); } while(0)
-+#define WRITE_LONGLONG(x) do { long long myvar = x; fwrite(&myvar, sizeof(myvar), 1, compressed_file); } while(0)
-+#define WRITE_FLOAT(x) do { float myvar = (float)x; fwrite(&myvar, sizeof(myvar), 1, compressed_file); } while(0)
-+#define WRITE_3DOUBLE_AS_3FLOAT(x) do { float myfloats[] = { x[0], x[1], x[2] }; fwrite(myfloats, sizeof(myvar), 1, compressed_file); } while(0)
-+
-+ // FILE* fopcodes = fopen("/tmp/opcodes.bin", "wb");
-+ do_context_switch(XOpenDisplay(NULL), 1, _init32_func);
-+
-+ long long instr_count = 0;
-+
-+ while (1) {
-+ short func_number;
-+ short memorize_array_play = -1;
-+ short reuse_array_play = -1;
-+
-+ begin:
-+ if (fread(&func_number, sizeof(short), 1, f) == 0)
-+ break;
-+ if (func_number == _exit_process_func)
-+ break;
-+
-+ if (func_number == _serialized_calls_func) {
-+ continue;
-+ }
-+ // fwrite(&func_number, sizeof(short), 1, fopcodes);
-+
-+ /*
-+ * instrWindow[instrWindowPtr] = func_number; instrWindowPtr++; if
-+ * (instrWindowPtr == INSTR_WINDOW_SIZE) instrWindowPtr = 0;
-+ * instrWindowCount++; if (instrWindowCount >= INSTR_WINDOW_SIZE) {
-+ * if ((instrWindowCount % (INSTR_WINDOW_SIZE / 2)) == 0)
-+ * find_repeated_seq(instrWindow, instrWindowBeginPtr,
-+ * INSTR_WINDOW_SIZE); instrWindowBeginPtr++; if (instrWindowBeginPtr
-+ * == INSTR_WINDOW_SIZE) instrWindowBeginPtr = 0; } */
-+
-+ /* -1 is special code that indicates time synchro */
-+ if (func_number == timesynchro_func) {
-+ long long ts_file;
-+ fread(&ts_file, sizeof(long long), 1, f);
-+
-+ if (compressed_file) {
-+ WRITE_SHORT(timesynchro_func);
-+ WRITE_LONGLONG(ts_file);
-+ }
-+
-+ if (!disable_real_time_play_back) {
-+ gettimeofday(&current_time, NULL);
-+ long long ts_real =
-+ (current_time.tv_sec -
-+ start_time.tv_sec) * (long long) 1000000 +
-+ current_time.tv_usec - start_time.tv_usec;
-+ // fprintf(stderr, "%d %d\n", (int)ts_real, (int)ts_file);
-+ if (ts_real < ts_file/* && ts_file - ts_real > 100 * 1000 */) {
-+ /* we're playing too fast */
-+ // fprintf(stderr, "waiting %d usec\n", (int)(ts_file -
-+ // ts_real));
-+ usleep((int) (ts_file - ts_real));
-+ }
-+ }
-+ continue;
-+ } else if (func_number == memorize_array_func) {
-+ fread(&memorize_array_play, sizeof(short), 1, f);
-+ goto begin;
-+ } else if (func_number == reuse_array_func) {
-+ fread(&reuse_array_play, sizeof(short), 1, f);
-+ goto begin;
-+ }
-+
-+ assert(func_number >= 0);
-+
-+ Signature *signature = (Signature *) tab_opengl_calls[func_number];
-+ int nb_args = signature->nb_args;
-+ int *args_type = signature->args_type;
-+
-+ for (i = 0; i < nb_args; i++) {
-+ switch (args_type[i]) {
-+#if 0
-+ case TYPE_UNSIGNED_CHAR:
-+ case TYPE_CHAR:
-+ {
-+ char c;
-+
-+ fread(&c, sizeof(c), 1, f);
-+ args[i] = c;
-+ break;
-+ }
-+
-+ case TYPE_UNSIGNED_SHORT:
-+ case TYPE_SHORT:
-+ {
-+ short s;
-+
-+ fread(&s, sizeof(s), 1, f);
-+ args[i] = s;
-+ break;
-+ }
-+
-+ case TYPE_FLOAT:
-+ fread(&args[i], sizeof(int), 1, f);
-+ break;
-+
-+#endif
-+ case TYPE_UNSIGNED_CHAR:
-+ case TYPE_CHAR:
-+ case TYPE_UNSIGNED_INT:
-+ case TYPE_INT:
-+ case TYPE_UNSIGNED_SHORT:
-+ case TYPE_SHORT:
-+ case TYPE_FLOAT:
-+ {
-+ int n;
-+ fread(&n, sizeof(int), 1, f);
-+ args[i] = n;
-+ break;
-+ }
-+
-+ case TYPE_NULL_TERMINATED_STRING:
-+ CASE_IN_UNKNOWN_SIZE_POINTERS:
-+ fread(&args_size[i], sizeof(int), 1, f);
-+ if (args_size[i]) {
-+ args[i] = (long) malloc(args_size[i]);
-+ fread((void *) args[i], args_size[i], 1, f);
-+ } else {
-+ if (!IS_NULL_POINTER_OK_FOR_FUNC(func_number)) {
-+ fprintf(stderr, "call %s arg %d\n",
-+ tab_opengl_calls_name[func_number], i);
-+ }
-+ args[i] = 0;
-+ }
-+ if (reuse_array_play >= 0) {
-+ long current_pos = ftell(f);
-+
-+ args_size[i] =
-+ replayBufferedArrays[reuse_array_play].size;
-+ args[i] = (long) malloc(args_size[i]);
-+ fseek(f,
-+ replayBufferedArrays[reuse_array_play].file_offset,
-+ SEEK_SET);
-+ fread((void *) args[i], args_size[i], 1, f);
-+ fseek(f, current_pos, SEEK_SET);
-+ }
-+ if (memorize_array_play >= 0) {
-+ assert(memorize_array_play <= sizeBufferedArraysPlay);
-+ if (memorize_array_play == sizeBufferedArraysPlay) {
-+ sizeBufferedArraysPlay++;
-+ replayBufferedArrays =
-+ realloc(replayBufferedArrays,
-+ sizeBufferedArraysPlay *
-+ sizeof(ReplayBufferedArray));
-+ replayBufferedArrays[sizeBufferedArraysPlay -
-+ 1].file_offset = 0;
-+ }
-+ replayBufferedArrays[memorize_array_play].file_offset =
-+ ftell(f) - args_size[i];
-+ replayBufferedArrays[memorize_array_play].size =
-+ args_size[i];
-+ }
-+ break;
-+
-+ CASE_IN_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
-+ {
-+ args_size[i] =
-+ compute_arg_length(stderr, func_number, i, args);
-+ args[i] =
-+ (args_size[i]) ? (long) malloc(args_size[i]) : 0;
-+ fread((void *) args[i], args_size[i], 1, f);
-+ break;
-+ }
-+
-+ CASE_OUT_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
-+ {
-+ args_size[i] =
-+ compute_arg_length(stderr, func_number, i, args);
-+ args[i] = (long) malloc(args_size[i]);
-+ break;
-+ }
-+
-+ CASE_OUT_UNKNOWN_SIZE_POINTERS:
-+ {
-+ fread(&args_size[i], sizeof(int), 1, f);
-+ if (args_size[i]) {
-+ args[i] = (long) malloc(args_size[i]);
-+ } else {
-+ if (!IS_NULL_POINTER_OK_FOR_FUNC(func_number)) {
-+ fprintf(stderr, "call %s arg %d\n",
-+ tab_opengl_calls_name[func_number], i);
-+ }
-+ args[i] = 0;
-+ }
-+ break;
-+ }
-+
-+ CASE_OUT_KNOWN_SIZE_POINTERS:
-+ {
-+ args_size[i] = tab_args_type_length[args_type[i]];
-+ assert(args_size[i]);
-+ args[i] = (long) malloc(args_size[i]);
-+ break;
-+ }
-+
-+ case TYPE_DOUBLE:
-+ CASE_IN_KNOWN_SIZE_POINTERS:
-+ args_size[i] = tab_args_type_length[args_type[i]];
-+ args[i] = (long) malloc(args_size[i]);
-+ fread((void *) args[i], args_size[i], 1, f);
-+ break;
-+
-+ case TYPE_IN_IGNORED_POINTER:
-+ args[i] = 0;
-+ break;
-+
-+ default:
-+ fprintf(stderr, "shouldn't happen : call %s arg %d\n",
-+ tab_opengl_calls_name[func_number], i);
-+ do_disconnect_current();
-+ return 0;
-+ }
-+ }
-+ if (debug)
-+ display_gl_call(stderr, func_number, args, args_size);
-+
-+ if (debug && reuse_array_play != -1)
-+ fprintf(stderr, "reuse_array_play %d\n", reuse_array_play);
-+ if (debug && memorize_array_play != -1)
-+ fprintf(stderr, "memorize_array_play %d\n", memorize_array_play);
-+
-+ if (compressed_file) {
-+ int reuse_array = -1;
-+ int memorize_array = -1;
-+ void *ptr = NULL;
-+ int bytes_size = 0;
-+ int do_default = 1;
-+
-+ switch (func_number) {
-+ case glXMakeCurrent_func:
-+ {
-+ currentState = args[2];
-+ assert(currentState >= 0 && currentState < NB_STATES);
-+ break;
-+ }
-+
-+ case glMatrixMode_func:
-+ {
-+ if (states[currentState].matrixMode == args[0]) {
-+ do_default = 0;
-+ } else {
-+ states[currentState].matrixMode = args[0];
-+ }
-+ break;
-+ }
-+
-+ case glLoadIdentity_func:
-+ case glLoadMatrixd_func:
-+ case glLoadMatrixf_func:
-+ case glMultMatrixd_func:
-+ case glMultMatrixf_func:
-+ case glOrtho_func:
-+ case glFrustum_func:
-+ case glRotated_func:
-+ case glRotatef_func:
-+ case glScaled_func:
-+ case glScalef_func:
-+ case glTranslated_func:
-+ case glTranslatef_func:
-+ case glPushMatrix_func:
-+ case glPopMatrix_func:
-+ {
-+ if (states[currentState].matrixMode == 5890) {
-+ if (states[currentState].lastMatrixOp ==
-+ glLoadIdentity_func &&
-+ func_number == glLoadIdentity_func) {
-+ do_default = 0;
-+ }
-+ states[currentState].lastMatrixOp = func_number;
-+ }
-+ break;
-+ }
-+
-+ case glPushAttrib_func:
-+ {
-+ if (states[currentState].stackAttribPtr <
-+ MAX_SERVER_STATE_STACK_SIZE) {
-+ int mask = args[0];
-+
-+ states[currentState].stackAttrib[states[currentState].
-+ stackAttribPtr].
-+ mask = mask;
-+ if (mask & GL_TRANSFORM_BIT) {
-+ states[currentState].
-+ stackAttrib[states[currentState].
-+ stackAttribPtr].matrixMode =
-+ states[currentState].matrixMode;
-+ states[currentState].
-+ stackAttrib[states[currentState].
-+ stackAttribPtr].lastMatrixOp =
-+ states[currentState].lastMatrixOp;
-+ }
-+ states[currentState].stackAttribPtr++;
-+ }
-+ break;
-+ }
-+
-+ case glPopAttrib_func:
-+ {
-+ if (states[currentState].stackAttribPtr > 0) {
-+ --states[currentState].stackAttribPtr;
-+ if (states[currentState].
-+ stackAttrib[states[currentState].stackAttribPtr].
-+ mask & GL_TRANSFORM_BIT) {
-+ states[currentState].matrixMode =
-+ states[currentState].
-+ stackAttrib[states[currentState].
-+ stackAttribPtr].matrixMode;
-+ states[currentState].lastMatrixOp =
-+ states[currentState].
-+ stackAttrib[states[currentState].
-+ stackAttribPtr].lastMatrixOp;
-+ }
-+ }
-+ break;
-+ }
-+
-+ case glBufferDataARB_func:
-+ {
-+ ptr = (void *) args[2];
-+ bytes_size = args_size[2];
-+ break;
-+ }
-+
-+ case glVertexPointer_fake_func:
-+ case glTexCoordPointer_fake_func:
-+ case glTexCoordPointer01_fake_func:
-+ case glDrawElements_func:
-+ {
-+ ptr = (void *) args[nb_args - 1];
-+ bytes_size = args_size[nb_args - 1];
-+ break;
-+ }
-+
-+ default:
-+ break;
-+ }
-+
-+ if (ptr) {
-+ unsigned int crc = calc_checksum(ptr, bytes_size, 0xFFFFFFFF);
-+ long long minInterest = 0x7FFFFFFFFFFFFFFFLL;
-+ int iMinUsed = -1;
-+
-+ instr_count++;
-+
-+ for (i = 0; i < N_BUFFERED_ARRAYS; i++) {
-+ if (recordBufferedArrays[i].crc == crc) {
-+ // fprintf(stderr, "reusing %d for crc %d\n", i,
-+ // crc);
-+ reuse_array = i;
-+ // fprintf(stderr, "reuse_array %d\n", i);
-+ recordBufferedArrays[i].n_used++;
-+ recordBufferedArrays[i].last_use = instr_count;
-+ break;
-+ } else if (recordBufferedArrays[i].n_used == 0) {
-+ // fprintf(stderr, "memorize_array %d\n", i);
-+ memorize_array = i;
-+ recordBufferedArrays[i].n_used = 1;
-+ recordBufferedArrays[i].crc = crc;
-+ recordBufferedArrays[i].size = bytes_size;
-+ recordBufferedArrays[i].last_use = instr_count;
-+ break;
-+ } else {
-+ long long interest =
-+ N_BUFFERED_ARRAYS *
-+ recordBufferedArrays[i].n_used / (instr_count -
-+ recordBufferedArrays
-+ [i].
-+ last_use)
-+ /** recordBufferedArrays[i].size*/ ;
-+ if (interest < minInterest) {
-+ iMinUsed = i;
-+ minInterest = interest;
-+ }
-+ }
-+ }
-+ static unsigned int *discardedCrcs = NULL;
-+ static int nDiscardedCrcs = 0;
-+
-+ if (i == N_BUFFERED_ARRAYS) {
-+ int j;
-+
-+ for (j = 0; j < nDiscardedCrcs; j++) {
-+ if (discardedCrcs[j] == crc) {
-+ fprintf(stderr,
-+ "%x was discarded before and is asked now...\n",
-+ crc);
-+ discardedCrcs[j] =
-+ recordBufferedArrays[iMinUsed].crc;
-+ break;
-+ }
-+ }
-+ if (j == nDiscardedCrcs) {
-+ discardedCrcs =
-+ realloc(discardedCrcs,
-+ sizeof(int) * (nDiscardedCrcs + 1));
-+ discardedCrcs[nDiscardedCrcs++] =
-+ recordBufferedArrays[iMinUsed].crc;
-+ }
-+ fprintf(stderr, "discarding %x\n",
-+ recordBufferedArrays[iMinUsed].crc);
-+
-+ memorize_array = iMinUsed;
-+ recordBufferedArrays[iMinUsed].n_used = 1;
-+ recordBufferedArrays[iMinUsed].crc = crc;
-+ recordBufferedArrays[iMinUsed].size = bytes_size;
-+ recordBufferedArrays[iMinUsed].last_use = instr_count;
-+ }
-+
-+ if (reuse_array != -1) {
-+ WRITE_SHORT(reuse_array_func);
-+ WRITE_SHORT(reuse_array);
-+ } else if (memorize_array != -1) {
-+ WRITE_SHORT(memorize_array_func);
-+ WRITE_SHORT(memorize_array);
-+ }
-+ }
-+
-+ switch (func_number) {
-+ case glXChooseVisual_func:
-+ case glXQueryVersion_func:
-+ case glXQueryExtension_func:
-+ case glXGetClientString_func:
-+ case glXQueryExtensionsString_func:
-+ case glXQueryServerString_func:
-+ case glXGetProcAddress_fake_func:
-+ case glXGetProcAddress_global_fake_func:
-+ case glXGetConfig_func:
-+ case glXGetConfig_extended_func:
-+ case glGetIntegerv_func:
-+ case glGetFloatv_func:
-+ case glGetBooleanv_func:
-+ case glGetDoublev_func:
-+ case glIsEnabled_func:
-+ case _glGetError_fake_func:
-+ case glGetString_func:
-+ {
-+ do_default = 0;
-+ break;
-+ }
-+
-+ case glLoadMatrixd_func:
-+ {
-+ int j;
-+
-+ WRITE_SHORT(glLoadMatrixf_func);
-+ double *ptr = (double *) args[0];
-+
-+ for (j = 0; j < 16; j++) {
-+ WRITE_FLOAT(ptr[j]);
-+ }
-+ do_default = 0;
-+ break;
-+ }
-+
-+ case glMultMatrixd_func:
-+ {
-+ int j;
-+
-+ WRITE_SHORT(glMultMatrixf_func);
-+ double *ptr = (double *) args[0];
-+
-+ for (j = 0; j < 16; j++) {
-+ WRITE_FLOAT(ptr[j]);
-+ }
-+ do_default = 0;
-+ break;
-+ }
-+
-+ case glTranslated_func:
-+ {
-+ WRITE_SHORT(glTranslatef_func);
-+ WRITE_FLOAT(*(double *) args[0]);
-+ WRITE_FLOAT(*(double *) args[1]);
-+ WRITE_FLOAT(*(double *) args[2]);
-+ do_default = 0;
-+ break;
-+ }
-+
-+ case glScalef_func:
-+ {
-+ if (*(float *) &args[0] == 1 && *(float *) &args[1] == 1
-+ && *(float *) &args[2] == 1)
-+ do_default = 0;
-+ break;
-+ }
-+
-+ case glScaled_func:
-+ {
-+ if (!
-+ (*(double *) args[0] == 1 && *(double *) args[1] == 1
-+ && *(double *) args[2] == 1)) {
-+ WRITE_SHORT(glScalef_func);
-+ WRITE_FLOAT(*(double *) args[0]);
-+ WRITE_FLOAT(*(double *) args[1]);
-+ WRITE_FLOAT(*(double *) args[2]);
-+ }
-+ do_default = 0;
-+ break;
-+ }
-+
-+ case glRotated_func:
-+ {
-+ WRITE_SHORT(glRotatef_func);
-+ WRITE_FLOAT(*(double *) args[0]);
-+ WRITE_FLOAT(*(double *) args[1]);
-+ WRITE_FLOAT(*(double *) args[2]);
-+ WRITE_FLOAT(*(double *) args[3]);
-+ do_default = 0;
-+ break;
-+ }
-+#define IS_SHORT(x) ((x) >= -32768 && (x) < 32768)
-+
-+ case glRasterPos2i_func:
-+ {
-+ if (IS_SHORT(args[0]) && IS_SHORT(args[1])) {
-+ WRITE_SHORT(glRasterPos2s_func);
-+ WRITE_SHORT(args[0]);
-+ WRITE_SHORT(args[1]);
-+ do_default = 0;
-+ }
-+ break;
-+ }
-+
-+ case glVertex2i_func:
-+ {
-+ if (IS_SHORT(args[0]) && IS_SHORT(args[1])) {
-+ WRITE_SHORT(glVertex2s_func);
-+ WRITE_SHORT(args[0]);
-+ WRITE_SHORT(args[1]);
-+ do_default = 0;
-+ }
-+ break;
-+ }
-+
-+ case glTexCoord2i_func:
-+ {
-+ if (IS_SHORT(args[0]) && IS_SHORT(args[1])) {
-+ WRITE_SHORT(glTexCoord2s_func);
-+ WRITE_SHORT(args[0]);
-+ WRITE_SHORT(args[1]);
-+ do_default = 0;
-+ }
-+ break;
-+ }
-+
-+ case glTexCoord2fv_func:
-+ {
-+ float *ptr = (float *) args[0];
-+ float u = ptr[0];
-+ float v = ptr[1];
-+
-+ if (fabs(u - (int) u) < 1e-7 && fabs(v - (int) v) < 1e-7) {
-+ int ui = (int) u;
-+ int vi = (int) v;
-+
-+ if (IS_SHORT(ui) && IS_SHORT(vi)) {
-+ WRITE_SHORT(glTexCoord2s_func);
-+ WRITE_SHORT(ui);
-+ WRITE_SHORT(vi);
-+ do_default = 0;
-+ }
-+ }
-+ break;
-+ }
-+
-+ case glTexCoord2f_func:
-+ {
-+ float u = *(float *) &args[0];
-+ float v = *(float *) &args[1];
-+
-+ if (fabs(u - (int) u) < 1e-7 && fabs(v - (int) v) < 1e-7) {
-+ int ui = (int) u;
-+ int vi = (int) v;
-+
-+ if (IS_SHORT(ui) && IS_SHORT(vi)) {
-+ WRITE_SHORT(glTexCoord2s_func);
-+ WRITE_SHORT(ui);
-+ WRITE_SHORT(vi);
-+ do_default = 0;
-+ }
-+ }
-+ break;
-+ }
-+
-+ case glColor3f_func:
-+ {
-+ WRITE_SHORT(glColor3ub_func);
-+ WRITE_UNSIGNED_CHAR(255 * *(float *) &args[0]);
-+ WRITE_UNSIGNED_CHAR(255 * *(float *) &args[1]);
-+ WRITE_UNSIGNED_CHAR(255 * *(float *) &args[2]);
-+ do_default = 0;
-+ break;
-+ }
-+
-+ case glColor4f_func:
-+ {
-+ if (*(float *) &args[3] == 1) {
-+ WRITE_SHORT(glColor3ub_func);
-+ WRITE_UNSIGNED_CHAR(255 * *(float *) &args[0]);
-+ WRITE_UNSIGNED_CHAR(255 * *(float *) &args[1]);
-+ WRITE_UNSIGNED_CHAR(255 * *(float *) &args[2]);
-+ } else {
-+ WRITE_SHORT(glColor4ub_func);
-+ WRITE_UNSIGNED_CHAR(255 * *(float *) &args[0]);
-+ WRITE_UNSIGNED_CHAR(255 * *(float *) &args[1]);
-+ WRITE_UNSIGNED_CHAR(255 * *(float *) &args[2]);
-+ WRITE_UNSIGNED_CHAR(255 * *(float *) &args[3]);
-+ }
-+ do_default = 0;
-+ break;
-+ }
-+
-+ case glColor4fv_func:
-+ {
-+ float *ptr = (float *) args[0];
-+
-+ if (ptr[3] == 1) {
-+ WRITE_SHORT(glColor3ub_func);
-+ WRITE_UNSIGNED_CHAR(255 * ptr[0]);
-+ WRITE_UNSIGNED_CHAR(255 * ptr[1]);
-+ WRITE_UNSIGNED_CHAR(255 * ptr[2]);
-+ } else {
-+ WRITE_SHORT(glColor4ub_func);
-+ WRITE_UNSIGNED_CHAR(255 * ptr[0]);
-+ WRITE_UNSIGNED_CHAR(255 * ptr[1]);
-+ WRITE_UNSIGNED_CHAR(255 * ptr[2]);
-+ WRITE_UNSIGNED_CHAR(255 * ptr[3]);
-+ }
-+ do_default = 0;
-+ break;
-+ }
-+
-+ case glColor3d_func:
-+ {
-+ WRITE_SHORT(glColor3ub_func);
-+ WRITE_UNSIGNED_CHAR(255 * *(double *) args[0]);
-+ WRITE_UNSIGNED_CHAR(255 * *(double *) args[1]);
-+ WRITE_UNSIGNED_CHAR(255 * *(double *) args[2]);
-+ do_default = 0;
-+ break;
-+ }
-+
-+ case glVertex3f_func:
-+ {
-+ if (*(float *) &args[2] == 0) {
-+ WRITE_SHORT(glVertex2f_func);
-+ WRITE_FLOAT(*(float *) &args[0]);
-+ WRITE_FLOAT(*(float *) &args[1]);
-+ do_default = 0;
-+ }
-+ break;
-+ }
-+
-+ case glVertex3d_func:
-+ {
-+ WRITE_SHORT(glVertex3f_func);
-+ WRITE_FLOAT(*(double *) args[0]);
-+ WRITE_FLOAT(*(double *) args[1]);
-+ WRITE_FLOAT(*(double *) args[2]);
-+ do_default = 0;
-+ break;
-+ }
-+
-+ case glNormal3fv_func:
-+ {
-+ float *ptr = (float *) args[0];
-+ float u = ptr[0];
-+ float v = ptr[1];
-+ float w = ptr[2];
-+
-+ if (fabs(u - (int) u) < 1e-7 && fabs(v - (int) v) < 1e-7
-+ && fabs(w - (int) w) < 1e-7) {
-+ int ui = (int) u;
-+ int vi = (int) v;
-+ int wi = (int) w;
-+
-+ if (IS_SHORT(ui) && IS_SHORT(vi) && IS_SHORT(wi)) {
-+ WRITE_SHORT(glNormal3sv_func);
-+ WRITE_SHORT(ui);
-+ WRITE_SHORT(vi);
-+ WRITE_SHORT(wi);
-+ do_default = 0;
-+ }
-+ }
-+ break;
-+ }
-+
-+ case glNormal3d_func:
-+ {
-+ WRITE_SHORT(glNormal3f_func);
-+ WRITE_FLOAT(*(double *) args[0]);
-+ WRITE_FLOAT(*(double *) args[1]);
-+ WRITE_FLOAT(*(double *) args[2]);
-+ do_default = 0;
-+ break;
-+ }
-+
-+ case glDrawElements_func:
-+ {
-+ int mode = args[0];
-+ int count = args[1];
-+ int type = args[2];
-+
-+ if (type == GL_UNSIGNED_INT) {
-+ int j;
-+ unsigned int *ptr = (unsigned int *) args[3];
-+
-+ for (j = 0; j < count; j++) {
-+ if ((ptr[j] >> 16) != 0)
-+ break;
-+ }
-+ if (j == count) {
-+ WRITE_SHORT(func_number);
-+ WRITE_INT(mode);
-+ WRITE_INT(count);
-+ WRITE_INT(GL_UNSIGNED_SHORT);
-+ if (reuse_array != -1) {
-+ WRITE_INT(0);
-+ } else {
-+ WRITE_INT(count * sizeof(short));
-+ for (j = 0; j < count; j++) {
-+ WRITE_SHORT(ptr[j]);
-+ }
-+ }
-+ do_default = 0;
-+ } else
-+ do_default = 1;
-+ } else if (reuse_array != -1) {
-+ WRITE_SHORT(func_number);
-+ WRITE_INT(mode);
-+ WRITE_INT(count);
-+ WRITE_INT(type);
-+ WRITE_INT(0);
-+ do_default = 0;
-+ } else
-+ do_default = 1;
-+ break;
-+ }
-+
-+ case glBufferDataARB_func:
-+ {
-+ if (reuse_array != -1) {
-+ WRITE_SHORT(glBufferDataARB_func);
-+ WRITE_INT(args[0]);
-+ WRITE_INT(args[1]);
-+ WRITE_INT(0);
-+ WRITE_INT(args[3]);
-+ do_default = 0;
-+ }
-+ break;
-+ }
-+
-+ case glVertexPointer_fake_func:
-+ case glTexCoordPointer_fake_func:
-+ case glTexCoordPointer01_fake_func:
-+ {
-+ int offset = 0, index = 0, size, type, stride, bytes_size;
-+ void *ptr;
-+ int countarg = 0;
-+
-+ if (func_number == glVertexPointer_fake_func ||
-+ func_number == glTexCoordPointer_fake_func)
-+ offset = args[countarg++];
-+ if (func_number == glTexCoordPointer_fake_func)
-+ index = args[countarg++];
-+ size = args[countarg++];
-+ type = args[countarg++];
-+ stride = args[countarg++];
-+ bytes_size = args[countarg++];
-+ ptr = (void *) args[countarg++];
-+ if (type == GL_DOUBLE) {
-+ int count;
-+ int j, k;
-+
-+ if (stride == 0)
-+ stride = size * sizeof(double);
-+ assert((bytes_size % stride) == 0);
-+ assert((offset % stride) == 0);
-+ offset = (offset / stride) * size * sizeof(float);
-+ count = bytes_size / stride;
-+ WRITE_SHORT(func_number);
-+ if (func_number == glVertexPointer_fake_func ||
-+ func_number == glTexCoordPointer_fake_func)
-+ WRITE_INT(offset);
-+ if (func_number == glTexCoordPointer_fake_func)
-+ WRITE_INT(index);
-+ WRITE_INT(size);
-+ WRITE_INT(GL_FLOAT);
-+ WRITE_INT(0);
-+ WRITE_INT(count * size * sizeof(float));
-+ if (reuse_array != -1) {
-+ WRITE_INT(0);
-+ } else {
-+ WRITE_INT(count * size * sizeof(float));
-+ for (j = 0; j < count; j++) {
-+ for (k = 0; k < size; k++) {
-+ WRITE_FLOAT(*(double *)
-+ (ptr + j * stride +
-+ k * sizeof(double)));
-+ }
-+ }
-+ }
-+ do_default = 0;
-+ } else if (reuse_array != -1) {
-+ WRITE_SHORT(func_number);
-+ if (func_number == glVertexPointer_fake_func ||
-+ func_number == glTexCoordPointer_fake_func)
-+ WRITE_INT(offset);
-+ if (func_number == glTexCoordPointer_fake_func)
-+ WRITE_INT(index);
-+ WRITE_INT(size);
-+ WRITE_INT(type);
-+ WRITE_INT(stride);
-+ WRITE_INT(bytes_size);
-+ WRITE_INT(0);
-+ do_default = 0;
-+ } else
-+ do_default = 1;
-+ break;
-+ }
-+
-+ default:
-+ break;
-+ }
-+
-+ if (do_default) {
-+ fwrite(&func_number, sizeof(short), 1, compressed_file);
-+ for (i = 0; i < nb_args; i++) {
-+ switch (args_type[i]) {
-+ case TYPE_UNSIGNED_CHAR:
-+ case TYPE_CHAR:
-+ {
-+ char c = args[i];
-+
-+ fwrite(&c, sizeof(c), 1, compressed_file);
-+ break;
-+ }
-+
-+ case TYPE_UNSIGNED_SHORT:
-+ case TYPE_SHORT:
-+ {
-+ short s = args[i];
-+
-+ fwrite(&s, sizeof(s), 1, compressed_file);
-+ break;
-+ }
-+
-+ case TYPE_UNSIGNED_INT:
-+ case TYPE_INT:
-+ case TYPE_FLOAT:{
-+ int n = args[i];
-+ fwrite(&n, sizeof(int), 1, compressed_file);
-+ break;
-+ }
-+
-+ case TYPE_NULL_TERMINATED_STRING:
-+ CASE_IN_UNKNOWN_SIZE_POINTERS:
-+ fwrite(&args_size[i], sizeof(int), 1,
-+ compressed_file);
-+ if (args_size[i]) {
-+ fwrite((void *) args[i], args_size[i], 1,
-+ compressed_file);
-+ }
-+ break;
-+
-+ CASE_OUT_UNKNOWN_SIZE_POINTERS:
-+ {
-+ fwrite(&args_size[i], sizeof(int), 1,
-+ compressed_file);
-+ break;
-+ }
-+
-+ CASE_OUT_KNOWN_SIZE_POINTERS:
-+ CASE_OUT_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
-+ {
-+ break;
-+ }
-+
-+ case TYPE_DOUBLE:
-+ CASE_IN_KNOWN_SIZE_POINTERS:
-+ CASE_IN_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
-+ fwrite((void *) args[i], args_size[i], 1,
-+ compressed_file);
-+ break;
-+
-+ case TYPE_IN_IGNORED_POINTER:
-+ break;
-+
-+ default:
-+ fprintf(stderr, "shouldn't happen : call %s arg %d\n",
-+ tab_opengl_calls_name[func_number], i);
-+ do_disconnect_current();
-+ return 0;
-+ }
-+ }
-+ }
-+ }
-+
-+ int new_offset = ftell(f);
-+
-+ if (show_offset ||
-+ (show_diff_offset &&
-+ new_offset - last_cmd_offset >= show_diff_offset)) {
-+ fprintf(stderr, "offset = %d, diff=%d\n", new_offset,
-+ new_offset - last_cmd_offset);
-+ }
-+ last_cmd_offset = new_offset;
-+
-+ if (func_number == glXCreateContext_func &&
-+ args[1] == visualid_fbconfig_read) {
-+ args[1] = visualid_fbconfig_real;
-+ }
-+ if (debug) {
-+ if (func_number == glBindProgramARB_func) {
-+ fprintf(stderr, "glBindProgramARB_func(y, x) : x = %d\n",
-+ (int) args[1]);
-+ } else if (func_number == glXGetProcAddress_fake_func) {
-+ fprintf(stderr, "glXGetProcAddress_fake(%s)\n",
-+ (char *) args[0]);
-+ }
-+ }
-+
-+ if (debug && func_number == glEnable_func) {
-+ fprintf(stderr, "enable(0x%x)\n", (int) args[0]);
-+ } else if (debug && func_number == glDisable_func) {
-+ fprintf(stderr, "disable(0x%x)\n", (int) args[0]);
-+ }
-+
-+ if (resize) {
-+ if (func_number == _moveResizeWindow_func) {
-+ int *params = (int *) args[1];
-+
-+ orig_window_width = params[2];
-+ window_height = params[3] =
-+ params[3] * window_width / params[2];
-+ params[2] = window_width;
-+ // buffer = malloc(4 * window_width * window_height);
-+ } else if (func_number == glViewport_func ||
-+ func_number == glScissor_func) {
-+ args[0] = args[0] * window_width / orig_window_width;
-+ args[1] = args[1] * window_width / orig_window_width;
-+ args[2] = args[2] * window_width / orig_window_width;
-+ args[3] = args[3] * window_width / orig_window_width;
-+ }
-+ } else if (func_number == _moveResizeWindow_func) {
-+ int *params = (int *) args[1];
-+
-+ window_width = params[2];
-+ window_height = params[3];
-+ // buffer = malloc(4 * window_width * window_height);
-+ }
-+
-+ int ret =
-+ (noplay) ? 0 : do_function_call(func_number, args, ret_string);
-+
-+ if (func_number == glXSwapBuffers_func) {
-+ /* glReadPixels(0, 0, window_width, window_height, GL_RGBA,
-+ * GL_UNSIGNED_BYTE, buffer); fwrite(buffer, 4 * window_width *
-+ * window_height, 1, fout); */
-+
-+ int diff_time;
-+
-+ count_current++;
-+ gettimeofday(&current_time, NULL);
-+ diff_time =
-+ (current_time.tv_sec - last_time.tv_sec) * 1000 +
-+ (current_time.tv_usec - last_time.tv_usec) / 1000;
-+ if (diff_time > refresh_rate) {
-+ printf("%d frames in %.1f seconds = %.3f FPS\n",
-+ count_current - count_last_time, diff_time / 1000.,
-+ (count_current - count_last_time) * 1000. / diff_time);
-+ if (show_hard_disk_bandwith) {
-+ int current_offset = ftell(f);
-+
-+ printf("bandwidth : %.1f MB/s\n",
-+ (current_offset - last_offset) * 1e-6);
-+ last_offset = current_offset;
-+ }
-+ last_time.tv_sec = current_time.tv_sec;
-+ last_time.tv_usec = current_time.tv_usec;
-+ count_last_time = count_current;
-+ }
-+ usleep(slowdown * 50000);
-+ }
-+ if (debug && func_number == glGenProgramsARB_func && args[0] == 1) {
-+ fprintf(stderr, "glGenProgramsARB_func(1, &x) : x = %d\n",
-+ *(int *) args[1]);
-+ }
-+
-+ if (func_number == glXGetVisualFromFBConfig_func) {
-+ fread(&visualid_fbconfig_read, sizeof(int), 1, f);
-+ visualid_fbconfig_real = ret;
-+ }
-+
-+ for (i = 0; i < nb_args; i++) {
-+ switch (args_type[i]) {
-+ case TYPE_UNSIGNED_INT:
-+ case TYPE_INT:
-+ case TYPE_UNSIGNED_CHAR:
-+ case TYPE_CHAR:
-+ case TYPE_UNSIGNED_SHORT:
-+ case TYPE_SHORT:
-+ case TYPE_FLOAT:
-+ break;
-+
-+ case TYPE_NULL_TERMINATED_STRING:
-+ CASE_POINTERS:
-+ case TYPE_DOUBLE:
-+ if (args[i])
-+ free((void *) args[i]);
-+ break;
-+
-+ case TYPE_IN_IGNORED_POINTER:
-+ args[i] = 0;
-+ break;
-+
-+ default:
-+ fprintf(stderr, "shouldn't happen : call %s arg %d\n",
-+ tab_opengl_calls_name[func_number], i);
-+ do_disconnect_current();
-+ return 0;
-+ }
-+ }
-+ }
-+ return 0;
-+}
-Index: qemu-0.12.4/target-i386/opengl_server.c
-===================================================================
---- /dev/null
-+++ qemu-0.12.4/target-i386/opengl_server.c
-@@ -0,0 +1,826 @@
-+/*
-+ * TCP/IP OpenGL server
-+ *
-+ * Copyright (c) 2007 Even Rouault
-+ *
-+ * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+ * THE SOFTWARE.
-+ */
-+
-+/* gcc -Wall -O2 -g opengl_server.c opengl_exec.c -o opengl_server -I../i386-softmmu -I. -I.. -lGL */
-+
-+#include <stdio.h>
-+#include <errno.h>
-+#include <stdlib.h>
-+#include <unistd.h>
-+#include <string.h>
-+#include <assert.h>
-+#include <sys/types.h>
-+#include <sys/socket.h>
-+#include <netinet/in.h>
-+#include <netinet/tcp.h>
-+#include <netdb.h>
-+#include <arpa/inet.h>
-+#include <sys/time.h>
-+#include <signal.h>
-+
-+#include <X11/Xlib.h>
-+#include <X11/Xutil.h>
-+
-+#define PORT 5555
-+
-+#define ENABLE_GL_LOG
-+
-+#include "opengl_func.h"
-+#include "opengl_utils.h"
-+
-+static int refresh_rate = 1000;
-+static int must_save = 0;
-+static int timestamp = 1; /* only valid if must_save == 1. include timestamps in the save file to enable real-time playback */
-+
-+extern int display_function_call;
-+extern void init_process_tab(void);
-+extern int do_function_call(Display *, int, int, arg_t *, char *);
-+extern void opengl_exec_set_local_connection(void);
-+extern void opengl_exec_set_parent_window(Display *_dpy, Window _parent_window);
-+
-+#ifdef ENABLE_GL_LOG
-+static FILE* f = NULL;
-+
-+static char* filename = "/tmp/debug_gl.bin";
-+
-+#define write_gl_debug_init() do { if (f == NULL) f = fopen(filename, "wb"); } while(0)
-+
-+static void inline write_gl_debug_cmd_char(char my_int)
-+{
-+ write_gl_debug_init();
-+ fwrite(&my_int, sizeof(my_int), 1, f);
-+}
-+
-+static void inline write_gl_debug_cmd_short(short my_int)
-+{
-+ write_gl_debug_init();
-+ fwrite(&my_int, sizeof(my_int), 1, f);
-+}
-+
-+static void inline write_gl_debug_cmd_int(int my_int)
-+{
-+ write_gl_debug_init();
-+ fwrite(&my_int, sizeof(my_int), 1, f);
-+}
-+
-+static void inline write_gl_debug_cmd_longlong(long long my_longlong)
-+{
-+ write_gl_debug_init();
-+ fwrite(&my_longlong, sizeof(my_longlong), 1, f);
-+}
-+
-+static void inline write_gl_debug_cmd_buffer_with_size(int size, void* buffer)
-+{
-+ write_gl_debug_init();
-+ fwrite(&size, sizeof(int), 1, f);
-+ if (size)
-+ fwrite(buffer, size, 1, f);
-+}
-+
-+static void inline write_gl_debug_cmd_buffer_without_size(int size, void* buffer)
-+{
-+ write_gl_debug_init();
-+ if (size)
-+ fwrite(buffer, size, 1, f);
-+}
-+
-+static void inline write_gl_debug_end()
-+{
-+ write_gl_debug_init();
-+ fclose(f);
-+ f = NULL;
-+}
-+
-+#endif
-+
-+static void write_sock_data(int sock, void* data, int len)
-+{
-+ if (len && data)
-+ {
-+ int offset = 0;
-+ while(offset < len)
-+ {
-+ int nwritten = write(sock, data + offset, len - offset);
-+ if (nwritten == -1)
-+ {
-+ if (errno == EINTR)
-+ continue;
-+ perror("write");
-+ assert(nwritten != -1);
-+ }
-+ offset += nwritten;
-+ }
-+ }
-+}
-+
-+static void inline write_sock_int(int sock, int my_int)
-+{
-+ write_sock_data(sock, &my_int, sizeof(int));
-+}
-+
-+static int total_read = 0;
-+static void read_sock_data(int sock, void* data, int len)
-+{
-+ if (len)
-+ {
-+ int offset = 0;
-+ while(offset < len)
-+ {
-+ int nread = read(sock, data + offset, len - offset);
-+ if (nread == -1)
-+ {
-+ if (errno == EINTR)
-+ continue;
-+ perror("read");
-+ assert(nread != -1);
-+ }
-+ if (nread == 0)
-+ {
-+ fprintf(stderr, "nread = 0\n");
-+ }
-+ assert(nread > 0);
-+ offset += nread;
-+ total_read += nread;
-+ }
-+ }
-+}
-+
-+static int inline read_sock_int(int sock)
-+{
-+ int ret;
-+ read_sock_data(sock, &ret, sizeof(int));
-+ return ret;
-+}
-+
-+static short inline read_sock_short(int sock)
-+{
-+ short ret;
-+ read_sock_data(sock, &ret, sizeof(short));
-+ return ret;
-+}
-+
-+
-+static Display* dpy = NULL;
-+static int parent_xid = -1;
-+
-+
-+static struct timeval last_time, current_time, time_stamp_start;
-+static int count_last_time = 0, count_current = 0;
-+
-+static struct timeval last_read_time, current_read_time;
-+
-+int has_x_error = 0;
-+
-+int
-+read_from_client (int sock)
-+{
-+ arg_t args[50];
-+ int args_size[50];
-+ char ret_string[32768];
-+ char command_buffer[65536*16];
-+
-+ if (dpy == NULL)
-+ {
-+ init_process_tab();
-+ dpy = XOpenDisplay(NULL);
-+ if (parent_xid != -1)
-+ {
-+ opengl_exec_set_parent_window(dpy, parent_xid);
-+ }
-+ }
-+
-+ int i;
-+ int func_number = read_sock_short(sock);
-+
-+ Signature* signature = (Signature*)tab_opengl_calls[func_number];
-+ int ret_type = signature->ret_type;
-+ int nb_args = signature->nb_args;
-+ int* args_type = signature->args_type;
-+ int pid = 0;
-+
-+ if (func_number == _serialized_calls_func)
-+ {
-+ int command_buffer_size = read_sock_int(sock);
-+ int commmand_buffer_offset = 0;
-+ read_sock_data(sock, command_buffer, command_buffer_size);
-+ /* TODO: must convert if client is different word size */
-+
-+#ifdef ENABLE_GL_LOG
-+ if (must_save) write_gl_debug_cmd_short(_serialized_calls_func);
-+#endif
-+
-+ while(commmand_buffer_offset < command_buffer_size)
-+ {
-+ func_number = *(short*)(command_buffer + commmand_buffer_offset);
-+ if( ! (func_number >= 0 && func_number < GL_N_CALLS) )
-+ {
-+ fprintf(stderr, "func_number >= 0 && func_number < GL_N_CALLS failed at "
-+ "commmand_buffer_offset=%d (command_buffer_size=%d)\n",
-+ commmand_buffer_offset, command_buffer_size);
-+ exit(-1);
-+ }
-+
-+#ifdef ENABLE_GL_LOG
-+ if (must_save) write_gl_debug_cmd_short(func_number);
-+#endif
-+ commmand_buffer_offset += sizeof(short);
-+
-+
-+ signature = (Signature*)tab_opengl_calls[func_number];
-+ ret_type = signature->ret_type;
-+ assert(ret_type == TYPE_NONE);
-+ nb_args = signature->nb_args;
-+ args_type = signature->args_type;
-+
-+ for(i=0;i<nb_args;i++)
-+ {
-+ switch(args_type[i])
-+ {
-+ case TYPE_UNSIGNED_CHAR:
-+ case TYPE_CHAR:
-+ {
-+ args[i] = *(int*)(command_buffer + commmand_buffer_offset);
-+#ifdef ENABLE_GL_LOG
-+ if (must_save) write_gl_debug_cmd_char(args[i]);
-+#endif
-+ commmand_buffer_offset += sizeof(int);
-+ break;
-+ }
-+
-+ case TYPE_UNSIGNED_SHORT:
-+ case TYPE_SHORT:
-+ {
-+ args[i] = *(int*)(command_buffer + commmand_buffer_offset);
-+#ifdef ENABLE_GL_LOG
-+ if (must_save) write_gl_debug_cmd_short(args[i]);
-+#endif
-+ commmand_buffer_offset += sizeof(int);
-+ break;
-+ }
-+
-+ case TYPE_UNSIGNED_INT:
-+ case TYPE_INT:
-+ case TYPE_FLOAT:
-+ {
-+ args[i] = *(int*)(command_buffer + commmand_buffer_offset);
-+#ifdef ENABLE_GL_LOG
-+ if (must_save) write_gl_debug_cmd_int(args[i]);
-+#endif
-+ commmand_buffer_offset += sizeof(int);
-+ break;
-+ }
-+
-+ case TYPE_NULL_TERMINATED_STRING:
-+ CASE_IN_UNKNOWN_SIZE_POINTERS:
-+ {
-+ args_size[i] = *(int*)(command_buffer + commmand_buffer_offset);
-+ commmand_buffer_offset += sizeof(int);
-+
-+ if (args_size[i] == 0)
-+ {
-+ args[i] = 0;
-+ }
-+ else
-+ {
-+ args[i] = (long)(command_buffer + commmand_buffer_offset);
-+ }
-+
-+ if (args[i] == 0)
-+ {
-+ if (!IS_NULL_POINTER_OK_FOR_FUNC(func_number))
-+ {
-+ fprintf(stderr, "call %s arg %d pid=%d\n", tab_opengl_calls_name[func_number], i, pid);
-+ return 0;
-+ }
-+ }
-+#ifdef ENABLE_GL_LOG
-+ if (must_save) write_gl_debug_cmd_buffer_with_size(args_size[i], (void*)args[i]);
-+#endif
-+ commmand_buffer_offset += args_size[i];
-+
-+ break;
-+ }
-+
-+ CASE_IN_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
-+ {
-+ args_size[i] = compute_arg_length(stderr, func_number, i, args);
-+ args[i] = (args_size[i]) ? (long)(command_buffer + commmand_buffer_offset) : 0;
-+#ifdef ENABLE_GL_LOG
-+ if (must_save) write_gl_debug_cmd_buffer_without_size(args_size[i], (void*)args[i]);
-+#endif
-+ commmand_buffer_offset += args_size[i];
-+ break;
-+ }
-+
-+ CASE_OUT_POINTERS:
-+ {
-+ fprintf(stderr, "shouldn't happen TYPE_OUT_xxxx : call %s arg %d pid=%d\n", tab_opengl_calls_name[func_number], i, pid);
-+ return 0;
-+ break;
-+ }
-+
-+ case TYPE_DOUBLE:
-+ CASE_IN_KNOWN_SIZE_POINTERS:
-+ args[i] = (long)(command_buffer + commmand_buffer_offset);
-+ args_size[i] = tab_args_type_length[args_type[i]];
-+#ifdef ENABLE_GL_LOG
-+ if (must_save) write_gl_debug_cmd_buffer_without_size(tab_args_type_length[args_type[i]], (void*)args[i]);
-+#endif
-+ commmand_buffer_offset += tab_args_type_length[args_type[i]];
-+ break;
-+
-+ case TYPE_IN_IGNORED_POINTER:
-+ args[i] = 0;
-+ break;
-+
-+ default:
-+ fprintf(stderr, "shouldn't happen : call %s arg %d pid=%d\n", tab_opengl_calls_name[func_number], i, pid);
-+ return 0;
-+ break;
-+ }
-+ }
-+
-+ if (display_function_call) display_gl_call(stderr, func_number, args, args_size);
-+
-+ do_function_call(dpy, func_number, 1, args, ret_string);
-+ }
-+ }
-+ else
-+ {
-+#ifdef ENABLE_GL_LOG
-+ if (must_save && func_number != _synchronize_func) write_gl_debug_cmd_short(func_number);
-+#endif
-+
-+ for(i=0;i<nb_args;i++)
-+ {
-+ switch(args_type[i])
-+ {
-+ case TYPE_UNSIGNED_CHAR:
-+ case TYPE_CHAR:
-+ args[i] = read_sock_int(sock);
-+#ifdef ENABLE_GL_LOG
-+ if (must_save) write_gl_debug_cmd_char(args[i]);
-+#endif
-+ break;
-+
-+ case TYPE_UNSIGNED_SHORT:
-+ case TYPE_SHORT:
-+ args[i] = read_sock_int(sock);
-+#ifdef ENABLE_GL_LOG
-+ if (must_save) write_gl_debug_cmd_short(args[i]);
-+#endif
-+ break;
-+
-+ case TYPE_UNSIGNED_INT:
-+ case TYPE_INT:
-+ case TYPE_FLOAT:
-+ args[i] = read_sock_int(sock);
-+#ifdef ENABLE_GL_LOG
-+ if (must_save) write_gl_debug_cmd_int(args[i]);
-+#endif
-+ break;
-+
-+ case TYPE_NULL_TERMINATED_STRING:
-+ CASE_IN_UNKNOWN_SIZE_POINTERS:
-+ {
-+ args_size[i] = read_sock_int(sock);
-+ if (args_size[i])
-+ {
-+ args[i] = (long)malloc(args_size[i]);
-+ read_sock_data(sock, (void*)args[i], args_size[i]);
-+ }
-+ else
-+ {
-+ args[i] = 0;
-+ if (!IS_NULL_POINTER_OK_FOR_FUNC(func_number))
-+ {
-+ fprintf(stderr, "call %s arg %d\n", tab_opengl_calls_name[func_number], i);
-+ return 0;
-+ }
-+ }
-+#ifdef ENABLE_GL_LOG
-+ if (must_save) write_gl_debug_cmd_buffer_with_size(args_size[i], (void*)args[i]);
-+#endif
-+ break;
-+ }
-+
-+ CASE_IN_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
-+ {
-+ args_size[i] = compute_arg_length(stderr, func_number, i, args);
-+ args[i] = (args_size[i]) ? (long)malloc(args_size[i]) : 0;
-+ read_sock_data(sock, (void*)args[i], args_size[i]);
-+#ifdef ENABLE_GL_LOG
-+ if (must_save) write_gl_debug_cmd_buffer_without_size(args_size[i], (void*)args[i]);
-+#endif
-+ break;
-+ }
-+
-+ CASE_OUT_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
-+ {
-+ args_size[i] = compute_arg_length(stderr, func_number, i, args);
-+ args[i] = (long)malloc(args_size[i]);
-+ break;
-+ }
-+
-+ CASE_OUT_UNKNOWN_SIZE_POINTERS:
-+ {
-+ args_size[i] = read_sock_int(sock);
-+ if (func_number == glGetProgramLocalParameterdvARB_func)
-+ {
-+ fprintf(stderr, "size = %d\n", args_size[i]);
-+ }
-+ if (args_size[i])
-+ {
-+ args[i] = (long)malloc(args_size[i]);
-+ }
-+ else
-+ {
-+ if (!IS_NULL_POINTER_OK_FOR_FUNC(func_number))
-+ {
-+ fprintf(stderr, "call %s arg %d pid=%d\n", tab_opengl_calls_name[func_number], i, pid);
-+ return 0;
-+ };
-+ args[i] = 0;
-+ }
-+ //fprintf(stderr, "%p %d\n", (void*)args[i], args_size[i]);
-+#ifdef ENABLE_GL_LOG
-+ if (must_save) write_gl_debug_cmd_int(args_size[i]);
-+#endif
-+ break;
-+ }
-+
-+ CASE_OUT_KNOWN_SIZE_POINTERS:
-+ {
-+ args_size[i] = tab_args_type_length[args_type[i]];
-+ assert(args_size[i]);
-+ args[i] = (long)malloc(args_size[i]);
-+ //fprintf(stderr, "%p %d\n", (void*)args[i], args_size[i]);
-+ break;
-+ }
-+
-+ case TYPE_DOUBLE:
-+ CASE_IN_KNOWN_SIZE_POINTERS:
-+ args_size[i] = tab_args_type_length[args_type[i]];
-+ args[i] = (long)malloc(args_size[i]);
-+ read_sock_data(sock, (void*)args[i], args_size[i]);
-+#ifdef ENABLE_GL_LOG
-+ if (must_save) write_gl_debug_cmd_buffer_without_size(tab_args_type_length[args_type[i]], (void*)args[i]);
-+#endif
-+ break;
-+
-+ case TYPE_IN_IGNORED_POINTER:
-+ args[i] = 0;
-+ break;
-+
-+ default:
-+ fprintf(stderr, "shouldn't happen : call %s arg %d\n", tab_opengl_calls_name[func_number], i);
-+ return 0;
-+ break;
-+ }
-+ }
-+
-+ if (display_function_call) display_gl_call(stderr, func_number, args, args_size);
-+
-+ if (getenv("ALWAYS_FLUSH")) fflush(f);
-+
-+ int ret = do_function_call(dpy, func_number, 1, args, ret_string);
-+#ifdef ENABLE_GL_LOG
-+ if (must_save && func_number == glXGetVisualFromFBConfig_func)
-+ {
-+ write_gl_debug_cmd_int(ret);
-+ }
-+#endif
-+
-+ for(i=0;i<nb_args;i++)
-+ {
-+ switch(args_type[i])
-+ {
-+ case TYPE_UNSIGNED_INT:
-+ case TYPE_INT:
-+ case TYPE_UNSIGNED_CHAR:
-+ case TYPE_CHAR:
-+ case TYPE_UNSIGNED_SHORT:
-+ case TYPE_SHORT:
-+ case TYPE_FLOAT:
-+ break;
-+
-+ case TYPE_NULL_TERMINATED_STRING:
-+ case TYPE_DOUBLE:
-+ CASE_IN_POINTERS:
-+ if (args[i]) free((void*)args[i]);
-+ break;
-+
-+ CASE_OUT_POINTERS:
-+ //fprintf(stderr, "%p %d\n", (void*)args[i], args_size[i]);
-+ write_sock_data(sock, (void*)args[i], args_size[i]);
-+ if (display_function_call)
-+ {
-+ if (args_type[i] == TYPE_OUT_1INT)
-+ {
-+ fprintf(stderr, "out[%d] : %d\n", i, *(int*)args[i]);
-+ }
-+ else if (args_type[i] == TYPE_OUT_1FLOAT)
-+ {
-+ fprintf(stderr, "out[%d] : %f\n", i, *(float*)args[i]);
-+ }
-+ }
-+ if (args[i]) free((void*)args[i]);
-+ break;
-+
-+ case TYPE_IN_IGNORED_POINTER:
-+ args[i] = 0;
-+ break;
-+
-+ default:
-+ fprintf(stderr, "shouldn't happen : call %s arg %d\n", tab_opengl_calls_name[func_number], i);
-+ return 0;
-+ break;
-+ }
-+ }
-+
-+ if (signature->ret_type == TYPE_CONST_CHAR)
-+ {
-+ write_sock_int(sock, strlen(ret_string) + 1);
-+ write_sock_data(sock, ret_string, strlen(ret_string) + 1);
-+ }
-+ else if (signature->ret_type != TYPE_NONE)
-+ {
-+ write_sock_int(sock, ret);
-+ }
-+
-+#ifdef ENABLE_GL_LOG
-+ if (must_save && func_number == _exit_process_func)
-+ {
-+ write_gl_debug_end();
-+ }
-+#endif
-+ if (func_number == _exit_process_func)
-+ {
-+ return -1;
-+ }
-+ else if (func_number == glXSwapBuffers_func)
-+ {
-+ int diff_time;
-+ count_current++;
-+ gettimeofday(&current_time, NULL);
-+#ifdef ENABLE_GL_LOG
-+ if (must_save && timestamp)
-+ {
-+ long long ts = (current_time.tv_sec - time_stamp_start.tv_sec) * (long long)1000000 + current_time.tv_usec - time_stamp_start.tv_usec;
-+ /* -1 is special code that indicates time synchro */
-+ write_gl_debug_cmd_short(timesynchro_func);
-+ write_gl_debug_cmd_longlong(ts);
-+ }
-+#endif
-+ diff_time = (current_time.tv_sec - last_time.tv_sec) * 1000 + (current_time.tv_usec - last_time.tv_usec) / 1000;
-+ if (diff_time > refresh_rate)
-+ {
-+#ifdef ENABLE_GL_LOG
-+ fflush(f);
-+#endif
-+ printf("%d frames in %.1f seconds = %.3f FPS\n",
-+ count_current - count_last_time,
-+ diff_time / 1000.,
-+ (count_current - count_last_time) * 1000. / diff_time);
-+ last_time.tv_sec = current_time.tv_sec;
-+ last_time.tv_usec = current_time.tv_usec;
-+ count_last_time = count_current;
-+ }
-+ }
-+ }
-+ return 0;
-+}
-+
-+int
-+make_socket (uint16_t port)
-+{
-+ int sock;
-+ struct sockaddr_in name;
-+
-+ /* Create the socket. */
-+ sock = socket (PF_INET, SOCK_STREAM, 0);
-+ if (sock < 0)
-+ {
-+ perror ("socket");
-+ exit (EXIT_FAILURE);
-+ }
-+
-+ /* Give the socket a name. */
-+ name.sin_family = AF_INET;
-+ name.sin_port = htons (port);
-+ name.sin_addr.s_addr = htonl (INADDR_ANY);
-+ if (bind (sock, (struct sockaddr *) &name, sizeof (name)) < 0)
-+ {
-+ perror ("bind");
-+ exit (EXIT_FAILURE);
-+ }
-+
-+ return sock;
-+}
-+
-+static int x_error_handler(Display *display,
-+ XErrorEvent *error)
-+{
-+ char buf[64];
-+ XGetErrorText(display, error->error_code, buf, 63);
-+ fprintf (stderr, "The program received an X Window System error.\n"
-+ "This probably reflects a bug in the program.\n"
-+ "The error was '%s'.\n"
-+ " (Details: serial %ld error_code %d request_code %d minor_code %d)\n",
-+ buf,
-+ error->serial,
-+ error->error_code,
-+ error->request_code,
-+ error->minor_code);
-+ has_x_error = 1;
-+ return 0;
-+}
-+
-+void usage()
-+{
-+ printf("Usage : opengl_server [OPTION]\n\n");
-+ printf("The following options are available :\n");
-+ printf("--port=XXXX : set XXX as the port number for the TCP/IP server (default : 5555)\n");
-+ printf("--debug : output debugging trace on stderr\n");
-+ printf("--save : dump the serialialized OpenGL flow in a file (default : /tmp/debug_gl.bin)\n");
-+ printf("--filename=X : the file where to write the serailized OpenGL flow\n");
-+ printf("--different-windows : even if the client is on 127.0.0.1, display OpenGL on a new X window\n");
-+ printf("--parent-xid=XXX : use XXX as the XID of the parent X window where to display the OpenGL flow\n");
-+ printf(" This is useful if you want to run accelerated OpenGL inside a non-patched QEMU\n");
-+ printf(" or from another emulator, through TCP/IP\n");
-+ printf("--h or --help : display this help\n");
-+}
-+
-+int
-+main (int argc, char* argv[])
-+{
-+ int sock;
-+ fd_set active_fd_set, read_fd_set;
-+ int i;
-+ struct sockaddr_in clientname;
-+ socklen_t size;
-+ int port = PORT;
-+ int different_windows = 0;
-+
-+ for(i=1;i<argc;i++)
-+ {
-+ if (argv[i][0] == '-' && argv[i][1] == '-')
-+ argv[i] = argv[i]+1;
-+
-+ if (strcmp(argv[i], "-debug") == 0)
-+ {
-+ display_function_call = 1;
-+ }
-+ else if (strcmp(argv[i], "-save") == 0)
-+ {
-+ must_save = 1;
-+ }
-+ else if (strncmp(argv[i], "-port=",6) == 0)
-+ {
-+ port = atoi(argv[i] + 6);
-+ }
-+ else if (strncmp(argv[i], "-filename=",strlen("-filename=")) == 0)
-+ {
-+ filename = argv[i] + strlen("-filename=");
-+ }
-+ else if (strncmp(argv[i], "-parent-xid=",strlen("-parent-xid=")) == 0)
-+ {
-+ char* c = argv[i] + strlen("-parent-xid=");
-+ parent_xid = strtol(c, NULL, 0);
-+ different_windows = 1;
-+ }
-+ else if (strcmp(argv[i], "-different-windows") == 0)
-+ {
-+ different_windows = 1;
-+ }
-+ else if (strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "-help") == 0)
-+ {
-+ usage();
-+ return 0;
-+ }
-+ else
-+ {
-+ fprintf(stderr, "unknown parameter : %s\n", argv[i]);
-+ usage();
-+ return -1;
-+ }
-+ }
-+
-+ /* Create the socket and set it up to accept connections. */
-+ sock = make_socket (port);
-+
-+ int flag = 1;
-+ if (setsockopt(sock, IPPROTO_IP, SO_REUSEADDR,(char *)&flag, sizeof(int)) != 0)
-+ {
-+ perror("setsockopt SO_REUSEADDR");
-+ }
-+ if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY,(char *)&flag, sizeof(int)) != 0)
-+ {
-+ perror("setsockopt TCP_NODELAY");
-+ }
-+
-+ if (listen (sock, 1) < 0)
-+ {
-+ perror ("listen");
-+ exit (EXIT_FAILURE);
-+ }
-+
-+ struct sigaction action;
-+ action.sa_handler = SIG_IGN;
-+ action.sa_flags = SA_NOCLDWAIT;
-+ sigaction(SIGCHLD,&action,NULL);
-+
-+ FD_ZERO (&active_fd_set);
-+ FD_SET (sock, &active_fd_set);
-+
-+ while(1)
-+ {
-+ int new, pid;
-+
-+ read_fd_set = active_fd_set;
-+ if (select (FD_SETSIZE, &read_fd_set, NULL, NULL, NULL) < 0)
-+ {
-+ perror ("select");
-+ exit (EXIT_FAILURE);
-+ }
-+
-+ size = sizeof (clientname);
-+ new = accept (sock, (struct sockaddr *) &clientname, &size);
-+ if (new < 0)
-+ {
-+ perror ("accept");
-+ exit (EXIT_FAILURE);
-+ }
-+ pid = fork();
-+ if (pid == -1)
-+ {
-+ perror ("fork");
-+ exit(EXIT_FAILURE);
-+ }
-+ if (pid == 0)
-+ {
-+ close(sock);
-+
-+ fprintf (stderr, "Server: connect from host %s, port %hd.\n",
-+ inet_ntoa (clientname.sin_addr),
-+ ntohs (clientname.sin_port));
-+
-+ gettimeofday(&last_time, NULL);
-+ gettimeofday(&last_read_time, NULL);
-+
-+ if (strcmp(inet_ntoa(clientname.sin_addr), "127.0.0.1") == 0 &&
-+ different_windows == 0)
-+ {
-+ opengl_exec_set_local_connection();
-+ }
-+
-+ if (timestamp)
-+ {
-+ gettimeofday(&time_stamp_start, NULL);
-+ }
-+
-+ XSetErrorHandler(x_error_handler);
-+
-+ while(1)
-+ {
-+ if (read_from_client (new) < 0)
-+ {
-+ do_function_call(dpy, _exit_process_func, 1, NULL, NULL);
-+
-+ fprintf (stderr, "Server: disconnect from host %s, port %hd.\n",
-+ inet_ntoa (clientname.sin_addr),
-+ ntohs (clientname.sin_port));
-+
-+ return 0;
-+ }
-+ }
-+ }
-+ else
-+ {
-+ close(new);
-+ }
-+ }
-+
-+ return 0;
-+}
-Index: qemu-0.12.4/target-i386/opengl_utils.h
-===================================================================
---- /dev/null
-+++ qemu-0.12.4/target-i386/opengl_utils.h
-@@ -0,0 +1,453 @@
-+/*
-+ * Functions used by host & client sides
-+ *
-+ * Copyright (c) 2007 Even Rouault
-+ *
-+ * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+ * THE SOFTWARE.
-+ */
-+
-+
-+#ifndef _OPENGL_UTILS
-+#define _OPENGL_UTILS
-+
-+typedef struct {
-+ unsigned int *values;
-+ int nbValues;
-+} RangeAllocator;
-+
-+/*
-+static void print_range(RangeAllocator* range)
-+{
-+ int i;
-+ printf("%s", "table : ");
-+ for(i=0;i<range->nbValues;i++)
-+ {
-+ printf("%d ", range->values[i]);
-+ }
-+ printf("\n");
-+}
-+*/
-+
-+static inline void alloc_value(RangeAllocator *range, unsigned int value)
-+{
-+ if (value == 0)
-+ return;
-+ if (range->nbValues >= 1) {
-+ int lower = 0;
-+ int upper = range->nbValues - 1;
-+
-+ while (1) {
-+ int mid = (lower + upper) / 2;
-+
-+ if (range->values[mid] > value)
-+ upper = mid;
-+ else if (range->values[mid] < value)
-+ lower = mid;
-+ else
-+ break;
-+ if (upper - lower <= 1) {
-+ if (value < range->values[lower]) {
-+ range->values =
-+ realloc(range->values,
-+ (range->nbValues + 1) * sizeof(int));
-+ memmove(&range->values[lower + 1], &range->values[lower],
-+ (range->nbValues - lower) * sizeof(int));
-+ range->values[lower] = value;
-+ range->nbValues++;
-+ } else if (value == range->values[lower]) {
-+ } else if (value < range->values[upper]) {
-+ range->values =
-+ realloc(range->values,
-+ (range->nbValues + 1) * sizeof(int));
-+ memmove(&range->values[upper + 1], &range->values[upper],
-+ (range->nbValues - upper) * sizeof(int));
-+ range->values[upper] = value;
-+ range->nbValues++;
-+ } else if (value == range->values[upper]) {
-+ } else {
-+ upper++;
-+
-+ range->values =
-+ realloc(range->values,
-+ (range->nbValues + 1) * sizeof(int));
-+ memmove(&range->values[upper + 1], &range->values[upper],
-+ (range->nbValues - upper) * sizeof(int));
-+ range->values[upper] = value;
-+ range->nbValues++;
-+ }
-+ break;
-+ }
-+ }
-+ } else {
-+ range->values = malloc(sizeof(int));
-+ range->values[0] = value;
-+ range->nbValues = 1;
-+ }
-+}
-+
-+/* return first value */
-+static inline unsigned int alloc_range(RangeAllocator *range, int n,
-+ unsigned int *values)
-+{
-+ int i, j;
-+
-+ if (range->nbValues == 0) {
-+ range->nbValues = n;
-+ range->values = malloc(n * sizeof(int));
-+ for (i = 0; i < n; i++) {
-+ range->values[i] = i + 1;
-+ if (values)
-+ values[i] = range->values[i];
-+ }
-+ return 1;
-+ } else {
-+ int lastValue = 1;
-+
-+ for (i = 0; i < range->nbValues; i++) {
-+ if ((int) range->values[i] - (int) lastValue - 1 >= n) {
-+ range->values =
-+ realloc(range->values,
-+ (range->nbValues + n) * sizeof(int));
-+ memmove(&range->values[i + n], &range->values[i],
-+ (range->nbValues - i) * sizeof(int));
-+ for (j = 0; j < n; j++) {
-+ range->values[i + j] = lastValue + 1 + j;
-+ if (values)
-+ values[j] = range->values[i + j];
-+ }
-+ range->nbValues += n;
-+ break;
-+ } else
-+ lastValue = range->values[i];
-+ }
-+ if (i == range->nbValues) {
-+ range->values =
-+ realloc(range->values, (range->nbValues + n) * sizeof(int));
-+ for (j = 0; j < n; j++) {
-+ range->values[i + j] = lastValue + 1 + j;
-+ if (values)
-+ values[j] = range->values[i + j];
-+ }
-+ range->nbValues += n;
-+ }
-+ return lastValue + 1;
-+ }
-+}
-+
-+static inline void delete_value(RangeAllocator *range, unsigned int value)
-+{
-+ if (value == 0)
-+ return;
-+ if (range->nbValues >= 1) {
-+ int lower = 0;
-+ int upper = range->nbValues - 1;
-+
-+ while (1) {
-+ int mid = (lower + upper) / 2;
-+
-+ if (range->values[mid] > value)
-+ upper = mid;
-+ else if (range->values[mid] < value)
-+ lower = mid;
-+ else {
-+ lower = upper = mid;
-+ }
-+ if (upper - lower <= 1) {
-+ if (value == range->values[lower]) {
-+ memmove(&range->values[lower], &range->values[lower + 1],
-+ (range->nbValues - lower - 1) * sizeof(int));
-+ range->nbValues--;
-+ } else if (value == range->values[upper]) {
-+ memmove(&range->values[upper], &range->values[upper + 1],
-+ (range->nbValues - upper - 1) * sizeof(int));
-+ range->nbValues--;
-+ }
-+ break;
-+ }
-+ }
-+ }
-+}
-+
-+static inline void delete_range(RangeAllocator *range, int n,
-+ const unsigned int *values)
-+{
-+ int i;
-+
-+ for (i = 0; i < n; i++) {
-+ delete_value(range, values[i]);
-+ }
-+}
-+
-+static inline void delete_consecutive_values(RangeAllocator *range,
-+ unsigned int first, int n)
-+{
-+ int i;
-+
-+ for (i = 0; i < n; i++) {
-+ delete_value(range, first + i);
-+ }
-+}
-+
-+
-+/*****************************************************************/
-+/* */
-+/* CRC LOOKUP TABLE */
-+/* ================ */
-+/* The following CRC lookup table was generated automagically */
-+/* by the Rocksoft^tm Model CRC Algorithm Table Generation */
-+/* Program V1.0 using the following model parameters: */
-+/* */
-+/* Width : 4 bytes. */
-+/* Poly : 0x04C11DB7L */
-+/* Reverse : TRUE. */
-+/* */
-+/* For more information on the Rocksoft^tm Model CRC Algorithm, */
-+/* see the document titled "A Painless Guide to CRC Error */
-+/* Detection Algorithms" by Ross Williams */
-+/* (ross@guest.adelaide.edu.au.). This document is likely to be */
-+/* in the FTP archive "ftp.adelaide.edu.au/pub/rocksoft". */
-+/* */
-+/*****************************************************************/
-+
-+static const unsigned int crctable[256] = {
-+ 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
-+ 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
-+ 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
-+ 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
-+ 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
-+ 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
-+ 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
-+ 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
-+ 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
-+ 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
-+ 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,
-+ 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
-+ 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,
-+ 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
-+ 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
-+ 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
-+ 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,
-+ 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
-+ 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,
-+ 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
-+ 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
-+ 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
-+ 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,
-+ 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
-+ 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
-+ 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
-+ 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
-+ 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
-+ 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,
-+ 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
-+ 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,
-+ 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
-+ 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
-+ 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
-+ 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
-+ 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
-+ 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,
-+ 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
-+ 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
-+ 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
-+ 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,
-+ 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
-+ 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,
-+ 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
-+ 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
-+ 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
-+ 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,
-+ 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
-+ 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
-+ 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
-+ 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
-+ 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
-+ 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,
-+ 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
-+ 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
-+ 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
-+ 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
-+ 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
-+ 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,
-+ 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
-+ 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,
-+ 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
-+ 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
-+ 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
-+};
-+
-+static unsigned int calc_checksum(const void *_ptr, int length,
-+ unsigned int seed)
-+{
-+ int i;
-+ unsigned int crc = seed;
-+ unsigned char *ptr = (unsigned char *) _ptr;
-+
-+ if (ptr == NULL)
-+ return -1;
-+ for (i = 0; i < length; i++) {
-+ crc = crctable[(crc ^ *ptr++) & 0xFF] ^ (crc >> 8);
-+ }
-+ return crc;
-+}
-+
-+
-+static inline void display_gl_call(FILE *f,
-+ int func_number, arg_t *args, int *args_size)
-+{
-+ int i;
-+
-+ if (func_number < 0) {
-+ fprintf(f, "unknown call : %d\n", func_number);
-+ return;
-+ }
-+ Signature *signature = (Signature *) tab_opengl_calls[func_number];
-+ int nb_args = signature->nb_args;
-+ int *args_type = signature->args_type;
-+
-+ fprintf(f, "%s(", tab_opengl_calls_name[func_number]);
-+
-+ for (i = 0; i < nb_args; i++) {
-+ switch (args_type[i]) {
-+ case TYPE_UNSIGNED_CHAR:
-+ case TYPE_CHAR:
-+ {
-+ fprintf(f, "%d", (char) args[i]);
-+ break;
-+ }
-+
-+ case TYPE_UNSIGNED_SHORT:
-+ case TYPE_SHORT:
-+ {
-+ fprintf(f, "%d", (short) args[i]);
-+ break;
-+ }
-+
-+ case TYPE_UNSIGNED_INT:
-+ case TYPE_INT:
-+ {
-+ fprintf(f, "%d", (int) args[i]);
-+ break;
-+ }
-+
-+ case TYPE_FLOAT:
-+ fprintf(f, "%f", *(float *) &args[i]);
-+ break;
-+
-+ case TYPE_DOUBLE:
-+ CASE_IN_KNOWN_SIZE_POINTERS:
-+ case TYPE_NULL_TERMINATED_STRING:
-+ CASE_IN_UNKNOWN_SIZE_POINTERS:
-+ CASE_IN_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
-+ if (args_type[i] == TYPE_NULL_TERMINATED_STRING) {
-+ fprintf(f, "\"%s\"", (char *) args[i]);
-+ } else if (args_type[i] == TYPE_DOUBLE)
-+ fprintf(f, "%f", *(double *) args[i]);
-+ else if (IS_ARRAY_CHAR(args_type[i]) &&
-+ args_size[i] <= 4 * sizeof(char)) {
-+ int j;
-+ int n = args_size[i] / sizeof(char);
-+
-+ fprintf(f, "(");
-+ for (j = 0; j < n; j++) {
-+ fprintf(f, "%d", ((unsigned char *) args[i])[j]);
-+ if (j != n - 1)
-+ fprintf(f, ", ");
-+ }
-+ fprintf(f, ")");
-+ } else if (IS_ARRAY_SHORT(args_type[i]) &&
-+ args_size[i] <= 4 * sizeof(short)) {
-+ int j;
-+ int n = args_size[i] / sizeof(short);
-+
-+ fprintf(f, "(");
-+ for (j = 0; j < n; j++) {
-+ fprintf(f, "%d", ((short *) args[i])[j]);
-+ if (j != n - 1)
-+ fprintf(f, ", ");
-+ }
-+ fprintf(f, ")");
-+ } else if (IS_ARRAY_INT(args_type[i]) &&
-+ args_size[i] <= 4 * sizeof(int)) {
-+ int j;
-+ int n = args_size[i] / sizeof(int);
-+
-+ fprintf(f, "(");
-+ for (j = 0; j < n; j++) {
-+ fprintf(f, "%d", ((int *) args[i])[j]);
-+ if (j != n - 1)
-+ fprintf(f, ", ");
-+ }
-+ fprintf(f, ")");
-+ } else if (IS_ARRAY_FLOAT(args_type[i]) &&
-+ args_size[i] <= 4 * sizeof(float)) {
-+ int j;
-+ int n = args_size[i] / sizeof(float);
-+
-+ fprintf(f, "(");
-+ for (j = 0; j < n; j++) {
-+ fprintf(f, "%f", ((float *) args[i])[j]);
-+ if (j != n - 1)
-+ fprintf(f, ", ");
-+ }
-+ fprintf(f, ")");
-+ } else if (IS_ARRAY_DOUBLE(args_type[i]) &&
-+ args_size[i] <= 4 * sizeof(double)) {
-+ int j;
-+ int n = args_size[i] / sizeof(double);
-+
-+ fprintf(f, "(");
-+ for (j = 0; j < n; j++) {
-+ fprintf(f, "%f", ((double *) args[i])[j]);
-+ if (j != n - 1)
-+ fprintf(f, ", ");
-+ }
-+ fprintf(f, ")");
-+ } else {
-+ fprintf(f, "%d bytes", args_size[i]);
-+ fprintf(f, "(crc = 0x%x)",
-+ calc_checksum((void *) args[i], args_size[i],
-+ 0xFFFFFFFF));
-+ }
-+ break;
-+
-+ CASE_OUT_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
-+ CASE_OUT_UNKNOWN_SIZE_POINTERS:
-+ CASE_OUT_KNOWN_SIZE_POINTERS:
-+ {
-+ fprintf(f, "%d bytes (OUT)", args_size[i]);
-+ break;
-+ }
-+
-+ case TYPE_IN_IGNORED_POINTER:
-+ break;
-+
-+ default:
-+ fprintf(f, "shouldn't happen : call %s arg %d\n",
-+ tab_opengl_calls_name[func_number], i);
-+ return;
-+ break;
-+ }
-+ if (i < nb_args - 1)
-+ fprintf(f, ", ");
-+ }
-+ fprintf(f, ")\n");
-+}
-+
-+#endif
-Index: qemu-0.12.4/target-i386/parse_gl_h.c
-===================================================================
---- /dev/null
-+++ qemu-0.12.4/target-i386/parse_gl_h.c
-@@ -0,0 +1,1496 @@
-+/*
-+ * Parse gl.h et glx.h to auto-generate source code
-+ *
-+ * Copyright (c) 2006,2007 Even Rouault
-+ *
-+ * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+ * THE SOFTWARE.
-+ */
-+
-+/* gcc -g parse_gl_h.c -o parse_gl_h && ./parse_gl_h */
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <assert.h>
-+
-+int isExtByName(const char* name)
-+{
-+ return (strstr(name, "ARB") != NULL) ||
-+ (strstr(name, "IBM") != NULL) ||
-+ (strstr(name, "EXT") != NULL) ||
-+ (strstr(name, "ATI") != NULL) ||
-+ (strstr(name, "NV") != NULL) ||
-+ (strstr(name, "MESA") != NULL) ||
-+ (strstr(name, "APPLE") != NULL) ||
-+ (strstr(name, "SUN") != NULL) ||
-+ (strstr(name, "SGI") != NULL);
-+}
-+
-+char* get_arg_type(char* s)
-+{
-+ while(*s == ' ' || *s == '\t') s++;
-+ char* n = s;
-+ char* c = strstr(n, "const");
-+ if (c)
-+ n += 6;
-+
-+ char* t = strstr(n, " ");
-+ if (t)
-+ {
-+ if (t[1] == '*')
-+ t += 2;
-+ t[0] = 0;
-+ char* ori = t;
-+ t = strstr(t+1, "[");
-+ if (t)
-+ {
-+ memmove(ori, t, strlen(t));
-+ strstr(ori, "]")[1] = 0;
-+ }
-+ }
-+ return strdup(s);
-+}
-+
-+typedef struct
-+{
-+ char* type;
-+ char* name;
-+ int nargs;
-+ char** args;
-+ int ok;
-+ int just_for_server_side;
-+ int has_out_parameters;
-+ int isExt;
-+} FuncDesc;
-+
-+int isExt(FuncDesc* func)
-+{
-+ return func->isExt;
-+}
-+
-+char* get_type_string(char* type)
-+{
-+ if (strstr(type, "[16]"))
-+ {
-+ if (strstr(type, "float"))
-+ return ("TYPE_16FLOAT");
-+ else if (strstr(type, "double"))
-+ return ("TYPE_16DOUBLE");
-+ else
-+ {
-+ printf("inconnu %s\n", type);
-+ exit(-1);
-+ }
-+ }
-+ else if (strstr(type, "[128]") && strstr(type, "GLubyte"))
-+ return strstr(type, "const") ? "TYPE_128UCHAR" : "TYPE_OUT_128UCHAR";
-+ else if (strstr(type, "const GLvoid *"))
-+ return "TYPE_ARRAY_VOID";
-+ else if (strstr(type, "const GLchar *") ||
-+ strstr(type, "const GLcharARB *"))
-+ return "TYPE_NULL_TERMINATED_STRING";
-+ else if (strstr(type, "const GLbyte *"))
-+ return "TYPE_ARRAY_SIGNED_CHAR";
-+ else if (strstr(type, "const GLubyte *"))
-+ return "TYPE_ARRAY_UNSIGNED_CHAR";
-+ else if (strstr(type, "const GLshort *"))
-+ return "TYPE_ARRAY_SHORT";
-+ else if (strstr(type, "const GLushort *") ||
-+ strstr(type, "const GLhalfNV *"))
-+ return "TYPE_ARRAY_UNSIGNED_SHORT";
-+ else if (strstr(type, "const GLint *"))
-+ return "TYPE_ARRAY_INT";
-+ else if (strstr(type, "const GLuint *") ||
-+ strstr(type, "const GLenum *"))
-+ return "TYPE_ARRAY_UNSIGNED_INT";
-+ else if (strstr(type, "const GLfloat *") ||
-+ strstr(type, "const GLclampf *"))
-+ return "TYPE_ARRAY_FLOAT";
-+ else if (strstr(type, "const GLdouble *"))
-+ return "TYPE_ARRAY_DOUBLE";
-+ else if (strstr(type, "GLvoid *"))
-+ return "TYPE_OUT_ARRAY_VOID";
-+ else if (strstr(type, "GLboolean *") ||
-+ strstr(type, "GLubyte *"))
-+ return "TYPE_OUT_ARRAY_UNSIGNED_CHAR";
-+ else if (strstr(type, "GLcharARB *") ||
-+ strstr(type, "GLchar *"))
-+ return "TYPE_OUT_ARRAY_CHAR";
-+ else if (strstr(type, "GLshort *"))
-+ return "TYPE_OUT_ARRAY_SHORT";
-+ else if (strstr(type, "GLushort *"))
-+ return "TYPE_OUT_ARRAY_UNSIGNED_SHORT";
-+ else if (strstr(type, "GLint *")||
-+ strstr(type, "GLsizei *"))
-+ return "TYPE_OUT_ARRAY_INT";
-+ else if (strstr(type, "GLuint *") ||
-+ strstr(type, "GLenum *") ||
-+ strstr(type, "GLhandleARB *"))
-+ return "TYPE_OUT_ARRAY_UNSIGNED_INT";
-+ else if (strstr(type, "GLfloat *"))
-+ return "TYPE_OUT_ARRAY_FLOAT";
-+ else if (strstr(type, "GLdouble *"))
-+ return "TYPE_OUT_ARRAY_DOUBLE";
-+ else if (strcmp(type, "void") == 0)
-+ return("TYPE_NONE");
-+ else if (strcmp(type, "GLbyte") == 0)
-+ return("TYPE_CHAR");
-+ else if (strcmp(type, "GLubyte") == 0 ||
-+ strcmp(type, "GLboolean") == 0)
-+ return("TYPE_UNSIGNED_CHAR");
-+ else if (strcmp(type, "GLshort") == 0)
-+ return("TYPE_SHORT");
-+ else if (strcmp(type, "GLushort") == 0 ||
-+ strcmp(type, "GLhalfNV") == 0)
-+ return("TYPE_UNSIGNED_SHORT");
-+ else if (strcmp(type, "GLint") == 0 ||
-+ strcmp(type, "GLsizei") == 0 ||
-+ strcmp(type, "GLintptr") == 0 ||
-+ strcmp(type, "GLsizeiptr") == 0 ||
-+ strcmp(type, "GLintptrARB") == 0 ||
-+ strcmp(type, "GLsizeiptrARB") == 0)
-+ return("TYPE_INT");
-+ else if (strcmp(type, "GLenum") == 0 ||
-+ strcmp(type, "GLuint") == 0 ||
-+ strcmp(type, "GLhandleARB") == 0 ||
-+ strcmp(type, "GLbitfield") == 0)
-+ return("TYPE_UNSIGNED_INT");
-+ else if (strcmp(type, "GLfloat") == 0 ||
-+ strcmp(type, "GLclampf") == 0)
-+ return("TYPE_FLOAT");
-+ else if (strcmp(type, "GLdouble") == 0 ||
-+ strcmp(type, "GLclampd") == 0)
-+ return("TYPE_DOUBLE");
-+ else
-+ {
-+ printf("inconnu %s\n", type);
-+ exit(-1);
-+ }
-+}
-+
-+typedef struct
-+{
-+ char* letter;
-+ char* signature_type_name;
-+ char* gl_c_type_name;
-+ char* c_type_name;
-+} ForIsKnownArgVector;
-+
-+#define N_ELEMENTS(x) (sizeof(x)/sizeof(x[0]))
-+#define N_FIELDS_IN_ARG_VECTOR 4
-+
-+
-+typedef struct
-+{
-+ char* func_name;
-+ char* signature_type_name;
-+} KnownLastArgFunc;
-+
-+static KnownLastArgFunc knownLastArgFuncs[] =
-+{
-+{"glFogCoordfv", "TYPE_1FLOAT"},
-+{"glFogCoorddv", "TYPE_1DOUBLE"},
-+{"glFogCoordfvEXT", "TYPE_1FLOAT"},
-+{"glFogCoorddvEXT", "TYPE_1DOUBLE"},
-+{"glFogCoordhvNV", "TYPE_1USHORT"},
-+
-+{"glGetFenceivNV", "TYPE_OUT_1INT"},
-+
-+{"glGetTexLevelParameteriv", "TYPE_OUT_1INT" },
-+{"glGetTexLevelParameterfv", "TYPE_OUT_1FLOAT" },
-+
-+{"glGetRenderbufferParameterivEXT", "TYPE_OUT_1INT"},
-+{"glGetFramebufferAttachmentParameterivEXT", "TYPE_OUT_1INT"},
-+{"glGetFinalCombinerInputParameterivNV", "TYPE_OUT_1INT"},
-+{"glGetCombinerOutputParameterivNV", "TYPE_OUT_1INT"},
-+{"glGetCombinerInputParameterivNV", "TYPE_OUT_1INT"},
-+{"glGetOcclusionQueryivNV", "TYPE_OUT_1INT"},
-+{"glGetOcclusionQueryuivNV", "TYPE_OUT_1UINT"},
-+{"glGetObjectParameterivARB", "TYPE_OUT_1INT"},
-+{"glGetQueryivARB", "TYPE_OUT_1INT"},
-+{"glGetQueryiv", "TYPE_OUT_1INT"},
-+{"glGetQueryObjectivARB", "TYPE_OUT_1INT"},
-+{"glGetQueryObjectiv", "TYPE_OUT_1INT"},
-+{"glGetQueryObjectuivARB", "TYPE_OUT_1UINT"},
-+{"glGetQueryObjectuiv", "TYPE_OUT_1UINT"},
-+{"glGetProgramivARB", "TYPE_OUT_1INT"},
-+{"glGetProgramiv", "TYPE_OUT_1INT"},
-+{"glGetProgramivNV", "TYPE_OUT_1INT"},
-+{"glGetShaderiv", "TYPE_OUT_1INT"},
-+
-+{"glCombinerParameterfvNV", "TYPE_1FLOAT"},
-+{"glCombinerParameterivNV", "TYPE_1INT"},
-+
-+{"glGetFinalCombinerInputParameterfvNV", "TYPE_OUT_1FLOAT"},
-+{"glGetCombinerOutputParameterfvNV", "TYPE_OUT_1FLOAT"},
-+{"glGetCombinerInputParameterfvNV", "TYPE_OUT_1FLOAT"},
-+{"glGetObjectParameterfvARB", "TYPE_OUT_1FLOAT"},
-+
-+{"glCombinerStageParameterfvNV", "TYPE_4FLOAT"},
-+{"glGetCombinerStageParameterfvNV", "TYPE_OUT_4FLOAT"},
-+
-+{"glTexBumpParameterivATI", "TYPE_1INT"},
-+{"glTexBumpParameterfvATI", "TYPE_1FLOAT"},
-+{"glGetTexBumpParameterivATI", "TYPE_OUT_1INT"},
-+{"glGetTexBumpParameterfvATI", "TYPE_OUT_1FLOAT"},
-+
-+{"glGetProgramLocalParameterfvARB", "TYPE_OUT_4FLOAT"},
-+{"glGetProgramLocalParameterdvARB", "TYPE_OUT_4DOUBLE"},
-+{"glGetProgramEnvParameterfvARB", "TYPE_OUT_4FLOAT"},
-+{"glGetProgramEnvParameterdvARB", "TYPE_OUT_4DOUBLE"},
-+{"glGetProgramLocalParameterIivNV", "TYPE_OUT_1INT"},
-+{"glGetProgramLocalParameterIuivNV", "TYPE_OUT_1UINT"},
-+{"glGetProgramEnvParameterIivNV", "TYPE_OUT_1INT"},
-+{"glGetProgramEnvParameterIuivNV", "TYPE_OUT_1UINT"},
-+
-+{"glGetProgramParameterfvNV", "TYPE_OUT_4FLOAT"},
-+{"glGetProgramParameterdvNV", "TYPE_OUT_4DOUBLE"},
-+{"glGetProgramNamedParameterfvNV", "TYPE_OUT_4FLOAT"},
-+{"glGetProgramNamedParameterdvNV", "TYPE_OUT_4DOUBLE"},
-+
-+{"glCullParameterfvEXT", "TYPE_4FLOAT"},
-+{"glCullParameterdvEXT", "TYPE_4DOUBLE"},
-+
-+{"glGetTrackMatrixivNV", "TYPE_OUT_1INT"},
-+{"glExecuteProgramNV", "TYPE_4FLOAT"},
-+
-+{"glEdgeFlagv", "TYPE_1UCHAR"},
-+
-+{"glClipPlane", "TYPE_4DOUBLE"},
-+{"glGetClipPlane", "TYPE_OUT_4DOUBLE"},
-+
-+{"glSetFragmentShaderConstantATI", "TYPE_4FLOAT"},
-+
-+{"glGetObjectBufferfvATI", "TYPE_OUT_1FLOAT"},
-+{"glGetObjectBufferivATI", "TYPE_OUT_1INT"},
-+{"glGetArrayObjectfvATI", "TYPE_OUT_1FLOAT"},
-+{"glGetArrayObjectivATI", "TYPE_OUT_1INT"},
-+{"glGetVariantArrayObjectfvATI", "TYPE_OUT_1FLOAT"},
-+{"glGetVariantArrayObjectivATI", "TYPE_OUT_1INT"},
-+{"glGetVertexAttribArrayObjectfvATI", "TYPE_OUT_1FLOAT"},
-+{"glGetVertexAttribArrayObjectivATI", "TYPE_OUT_1INT"},
-+
-+{"glPixelTransformParameterivEXT", "TYPE_1INT"},
-+{"glPixelTransformParameterfvEXT", "TYPE_1FLOAT"},
-+{"glGetPixelTransformParameterivEXT", "TYPE_OUT_1INT"},
-+{"glGetPixelTransformParameterfvEXT", "TYPE_OUT_1FLOAT"},
-+
-+{"glColorTableParameterfv", "TYPE_4FLOAT"},
-+{"glColorTableParameteriv", "TYPE_4INT"},
-+{"glGetColorTableParameterfv", "TYPE_OUT_4FLOAT"},
-+{"glGetColorTableParameteriv", "TYPE_OUT_4INT"},
-+{"glColorTableParameterfvEXT", "TYPE_4FLOAT"},
-+{"glColorTableParameterivEXT", "TYPE_4INT"},
-+{"glGetColorTableParameterfvEXT", "TYPE_OUT_4FLOAT"},
-+{"glGetColorTableParameterivEXT", "TYPE_OUT_4INT"},
-+
-+{"glGetMinmaxParameterfv", "TYPE_OUT_1FLOAT"},
-+{"glGetMinmaxParameteriv", "TYPE_OUT_1INT"},
-+{"glGetHistogramParameterfv", "TYPE_OUT_1FLOAT"},
-+{"glGetHistogramParameteriv", "TYPE_OUT_1INT"},
-+{"glGetMinmaxParameterfvEXT", "TYPE_OUT_1FLOAT"},
-+{"glGetMinmaxParameterivEXT", "TYPE_OUT_1INT"},
-+{"glGetHistogramParameterfvEXT", "TYPE_OUT_1FLOAT"},
-+{"glGetHistogramParameterivEXT", "TYPE_OUT_1INT"},
-+
-+/* Not sure at all for the 2 followingo ones ! */
-+{"glGetBooleanIndexedvEXT", "TYPE_OUT_4UCHAR"},
-+{"glGetIntegerIndexedvEXT", "TYPE_OUT_4INT"},
-+
-+{"glReferencePlaneSGIX", "TYPE_4DOUBLE"},
-+
-+{"glGetTransformFeedbackVaryingNV", "TYPE_OUT_1INT"},
-+
-+};
-+
-+int is_known_arg_vector(FuncDesc* desc, char** p_signature_type_name, char** p_c_type_name)
-+{
-+ static ForIsKnownArgVector my_tab[] =
-+ {
-+ { "b", "CHAR", "GLbyte", "signed char" },
-+ { "Boolean", "CHAR", "GLboolean", "unsigned char" },
-+ { "s", "SHORT", "GLshort", "short" },
-+ { "i", "INT", "GLint", "int" },
-+ { "Integer", "INT", "GLint", "int" },
-+ { "ub", "CHAR", "GLubyte", "unsigned char" },
-+ { "h", "SHORT", "GLhalf", "unsigned short" },
-+ { "us", "SHORT", "GLushort", "unsigned short" },
-+ { "ui", "INT", "GLuint", "unsigned int" },
-+ { "Nb", "CHAR", "GLbyte", "signed char" },
-+ { "Ns", "SHORT", "GLshort", "short" },
-+ { "Ni", "INT", "GLint", "int" },
-+ { "Nub", "CHAR", "GLubyte", "unsigned char" },
-+ { "Nus", "SHORT", "GLushort", "unsigned short" },
-+ { "Nui", "INT", "GLuint", "unsigned int" },
-+
-+ { "f", "FLOAT", "GLfloat", "float" },
-+ { "Float", "FLOAT", "GLfloat", "float" },
-+ { "d", "DOUBLE", "GLdouble", "double" },
-+ };
-+
-+ if (desc->nargs == 0)
-+ return 0;
-+
-+ int i , j;
-+
-+ if (strstr(desc->name, "glVertexAttribs") ||
-+ strstr(desc->name, "glProgramParameters") ||
-+ strstr(desc->name, "glProgramEnvParameters") ||
-+ strstr(desc->name, "glProgramLocalParameters") ||
-+ (strstr(desc->name, "glUniform") && (strstr(desc->name, "iv") || strstr(desc->name, "fv"))))
-+ return 0;
-+
-+ static char signatures[N_ELEMENTS(my_tab)][N_FIELDS_IN_ARG_VECTOR][20] = {0};
-+ char signature[10];
-+
-+ for(i=0;i<N_ELEMENTS(knownLastArgFuncs);i++)
-+ {
-+ if (strcmp(desc->name, knownLastArgFuncs[i].func_name) == 0)
-+ {
-+ if (p_signature_type_name)
-+ {
-+ *p_signature_type_name = knownLastArgFuncs[i].signature_type_name;
-+ }
-+ if (p_c_type_name)
-+ {
-+ if (strstr(knownLastArgFuncs[i].signature_type_name, "FLOAT"))
-+ *p_c_type_name = "float";
-+ else if (strstr(knownLastArgFuncs[i].signature_type_name, "DOUBLE"))
-+ *p_c_type_name = "double";
-+ else if (strstr(knownLastArgFuncs[i].signature_type_name, "UINT"))
-+ *p_c_type_name = "unsigned int";
-+ else if (strstr(knownLastArgFuncs[i].signature_type_name, "INT"))
-+ *p_c_type_name = "int";
-+ else if (strstr(knownLastArgFuncs[i].signature_type_name, "USHORT"))
-+ *p_c_type_name = "unsigned short";
-+ else if (strstr(knownLastArgFuncs[i].signature_type_name, "SHORT"))
-+ *p_c_type_name = "short";
-+ else if (strstr(knownLastArgFuncs[i].signature_type_name, "UCHAR"))
-+ *p_c_type_name = "unsigned char";
-+ else if (strstr(knownLastArgFuncs[i].signature_type_name, "CHAR"))
-+ *p_c_type_name = "char";
-+ else
-+ assert(0);
-+ }
-+ return 1;
-+ }
-+ }
-+
-+ for(i=0;i<N_ELEMENTS(my_tab);i++)
-+ {
-+ for(j=1;j<=N_FIELDS_IN_ARG_VECTOR;j++)
-+ {
-+ if (strstr(desc->name, "glIndex") && strstr(desc->name, "v"))
-+ sprintf(signature, "%sv", my_tab[i].letter);
-+ else
-+ sprintf(signature, "%d%sv", j, my_tab[i].letter);
-+ if (strstr(desc->name, signature) &&
-+ strstr(desc->args[desc->nargs - 1], my_tab[i].gl_c_type_name) &&
-+ strstr(desc->args[desc->nargs - 1], "*"))
-+ {
-+ if (p_signature_type_name)
-+ {
-+ if (signatures[i][j-1][0] == 0)
-+ sprintf(signatures[i][j-1], "TYPE_%d%s", j, my_tab[i].signature_type_name);
-+ *p_signature_type_name = signatures[i][j-1];
-+ }
-+ if (p_c_type_name) *p_c_type_name = my_tab[i].c_type_name;
-+ return 1;
-+ }
-+ }
-+ }
-+ return 0;
-+}
-+
-+static void print_server_side_argument(FILE* server_stub, int j, char* glType)
-+{
-+ const char* symbolic_type = get_type_string(glType);
-+ if (strcmp(symbolic_type, "TYPE_CHAR") == 0)
-+ fprintf(server_stub, "ARG_TO_CHAR(args[%d])", j);
-+ else if (strcmp(symbolic_type, "TYPE_UNSIGNED_CHAR") == 0)
-+ fprintf(server_stub, "ARG_TO_UNSIGNED_CHAR(args[%d])", j);
-+ else if (strcmp(symbolic_type, "TYPE_SHORT") == 0)
-+ fprintf(server_stub, "ARG_TO_SHORT(args[%d])", j);
-+ else if (strcmp(symbolic_type, "TYPE_UNSIGNED_SHORT") == 0)
-+ fprintf(server_stub, "ARG_TO_UNSIGNED_SHORT(args[%d])", j);
-+ else if (strcmp(symbolic_type, "TYPE_INT") == 0)
-+ fprintf(server_stub, "ARG_TO_INT(args[%d])", j);
-+ else if (strcmp(symbolic_type, "TYPE_UNSIGNED_INT") == 0)
-+ fprintf(server_stub, "ARG_TO_UNSIGNED_INT(args[%d])", j);
-+ else if (strcmp(symbolic_type, "TYPE_FLOAT") == 0)
-+ fprintf(server_stub, "ARG_TO_FLOAT(args[%d])", j);
-+ else if (strcmp(symbolic_type, "TYPE_16FLOAT") == 0)
-+ fprintf(server_stub, "(const float*)(args[%d])", j);
-+ else if (strcmp(symbolic_type, "TYPE_DOUBLE") == 0)
-+ fprintf(server_stub, "ARG_TO_DOUBLE(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_16DOUBLE") == 0)
-+ fprintf(server_stub, "(const double*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_OUT_128UCHAR") == 0)
-+ fprintf(server_stub, "(unsigned char*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_128UCHAR") == 0)
-+ fprintf(server_stub, "(const unsigned char*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_NULL_TERMINATED_STRING") == 0)
-+ fprintf(server_stub, "(const char*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_ARRAY_SHORT") == 0)
-+ fprintf(server_stub, "(const short*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_ARRAY_UNSIGNED_SHORT") == 0)
-+ fprintf(server_stub, "(const unsigned short*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_ARRAY_INT") == 0)
-+ fprintf(server_stub, "(const int*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_ARRAY_UNSIGNED_INT") == 0)
-+ fprintf(server_stub, "(const unsigned int*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_ARRAY_FLOAT") == 0)
-+ fprintf(server_stub, "(const float*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_ARRAY_DOUBLE") == 0)
-+ fprintf(server_stub, "(const double*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_ARRAY_CHAR") == 0)
-+ fprintf(server_stub, "(const char*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_ARRAY_SIGNED_CHAR") == 0)
-+ fprintf(server_stub, "(const signed char*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_ARRAY_VOID") == 0)
-+ fprintf(server_stub, "(const void*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_ARRAY_UNSIGNED_CHAR") == 0)
-+ fprintf(server_stub, "(const unsigned char*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_OUT_ARRAY_SHORT") == 0)
-+ fprintf(server_stub, "(short*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_OUT_ARRAY_UNSIGNED_SHORT") == 0)
-+ fprintf(server_stub, "(unsigned short*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_OUT_ARRAY_INT") == 0)
-+ fprintf(server_stub, "(int*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_OUT_ARRAY_UNSIGNED_INT") == 0)
-+ fprintf(server_stub, "(unsigned int*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_OUT_ARRAY_FLOAT") == 0)
-+ fprintf(server_stub, "(float*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_OUT_ARRAY_DOUBLE") == 0)
-+ fprintf(server_stub, "(double*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_OUT_ARRAY_VOID") == 0)
-+ fprintf(server_stub, "(void*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_OUT_ARRAY_CHAR") == 0)
-+ fprintf(server_stub, "(char*)(args[%d])", j);
-+ else if ( strcmp(symbolic_type, "TYPE_OUT_ARRAY_UNSIGNED_CHAR") == 0)
-+ fprintf(server_stub, "(unsigned char*)(args[%d])", j);
-+
-+ else
-+ {
-+ fprintf(stderr, "Unknown : %s\n", symbolic_type);
-+ assert(0);
-+ }
-+}
-+
-+static const char* func_dealt_by_hand[500] = { NULL };
-+
-+
-+static const char* ignore_func[] =
-+{
-+ "glGetPointerv",
-+ "glRectdv",
-+ "glRectfv",
-+ "glRectiv",
-+ "glRectsv",
-+ "glMultiDrawArrays",
-+ "glMultiDrawArraysEXT",
-+ "glMultiDrawElements",
-+ "glMultiDrawElementsEXT",
-+ "glUnmapBuffer",
-+ "glUnmapBufferARB",
-+ "glLoadTransposeMatrixf",
-+ "glLoadTransposeMatrixd",
-+ "glMultTransposeMatrixf",
-+ "glMultTransposeMatrixd",
-+ "glLoadTransposeMatrixfARB",
-+ "glLoadTransposeMatrixdARB",
-+ "glMultTransposeMatrixfARB",
-+ "glMultTransposeMatrixdARB",
-+
-+ "glPixelDataRangeNV",
-+ "glFlushPixelDataRangeNV",
-+ "glVertexArrayRangeNV",
-+ "glFlushVertexArrayRangeNV",
-+ "glVertexWeightfEXT",
-+
-+ "glGetBufferPointerv",
-+ "glGetBufferPointervARB",
-+ "glGetVertexAttribPointerv",
-+ "glGetVertexAttribPointervARB",
-+ "glVertexAttribPointer",
-+ "glVertexAttribPointerARB",
-+ "glGetVariantPointervEXT",
-+ NULL,
-+};
-+
-+void get_func_dealt_by_hand()
-+{
-+ FILE* f = fopen("../target-i386/gl_func_perso.h", "r");
-+ char buffer[256];
-+ int i = 0;
-+ char* c;
-+ while(fgets(buffer, 256, f))
-+ {
-+ if (strstr(buffer, "MAGIC_MACRO("))
-+ {
-+ func_dealt_by_hand[i] = strdup(strstr(buffer, "MAGIC_MACRO(") + strlen("MAGIC_MACRO("));
-+ * strstr(func_dealt_by_hand[i], ")") = 0;
-+ c = strstr(func_dealt_by_hand[i], "_");
-+ if (c && c != func_dealt_by_hand[i]) *c = 0;
-+ i ++;
-+ }
-+ }
-+ fclose(f);
-+
-+ int j = 0;
-+ while(ignore_func[j])
-+ {
-+ func_dealt_by_hand[i] = ignore_func[j];
-+ i++;
-+ j++;
-+ }
-+}
-+
-+static const char* just_for_server_side_list[] =
-+{
-+ "glEnableClientState",
-+ "glDisableClientState",
-+ "glPushClientAttrib",
-+ "glPopClientAttrib",
-+ "glPixelStorei",
-+ "glPixelStoref",
-+ "glClientActiveTexture",
-+ "glClientActiveTextureARB",
-+ "glEnableVertexAttribArray",
-+ "glEnableVertexAttribArrayARB",
-+ "glDisableVertexAttribArray",
-+ "glDisableVertexAttribArrayARB",
-+ "glDrawElementArrayATI",
-+ "glDrawRangeElementArrayATI",
-+ "glGenSymbolsEXT",
-+ "glFreeObjectBufferATI",
-+ "glUnmapObjectBufferATI",
-+ "glLockArraysEXT",
-+ "glUnlockArraysEXT",
-+ "glDepthFunc",
-+ "glFogf",
-+ "glFogi",
-+ "glClipPlane",
-+ "glGetClipPlane",
-+
-+/* begin of openquartz optimization */
-+#if 1
-+ "glMatrixMode",
-+ "glOrtho",
-+ "glFrustum",
-+ "glPushMatrix",
-+ "glPopMatrix",
-+ "glLoadIdentity",
-+ "glLoadMatrixd",
-+ "glLoadMatrixf",
-+ "glMultMatrixd",
-+ "glMultMatrixf",
-+ "glRotated",
-+ "glRotatef",
-+ "glScaled",
-+ "glScalef",
-+ "glTranslated",
-+ "glTranslatef",
-+#endif
-+/* end of openquartz optimization */
-+
-+ "glGetError",
-+ "glActiveTextureARB",
-+
-+ "glViewport",
-+ "glScissor",
-+
-+ "glBindBufferARB",
-+ "glDeleteBuffersARB",
-+ "glGenBuffersARB",
-+ "glBufferDataARB",
-+ "glBufferSubDataARB",
-+ "glGetBufferSubDataARB",
-+ "glGetBufferParameterivARB",
-+ "glBindBuffer",
-+ "glDeleteBuffers",
-+ "glGenBuffers",
-+ "glBufferData",
-+ "glBufferSubData",
-+ "glGetBufferSubData",
-+ "glGetBufferParameteriv",
-+
-+ "glPushAttrib",
-+ "glPopAttrib",
-+ "glEnable",
-+ "glDisable",
-+ "glIsEnabled",
-+ "glBindTexture",
-+ "glBindTextureEXT",
-+ "glFogfv",
-+ "glFogiv",
-+ "glBitmap",
-+ "glGetTexImage",
-+ "glReadPixels",
-+ "glDrawPixels",
-+ "glSelectBuffer",
-+ "glFeedbackBuffer",
-+
-+ "glTexImage1D",
-+ "glTexImage2D",
-+ "glTexImage3D",
-+ "glTexSubImage1D",
-+ "glTexSubImage2D",
-+ "glTexSubImage3D",
-+
-+ "glTexImage3DEXT",
-+ "glTexSubImage1DEXT",
-+ "glTexSubImage2DEXT",
-+ "glTexSubImage3DEXT",
-+
-+ "glGetCompressedTexImage",
-+ "glCompressedTexImage1D",
-+ "glCompressedTexImage2D",
-+ "glCompressedTexImage3D",
-+ "glCompressedTexSubImage1D",
-+ "glCompressedTexSubImage2D",
-+ "glCompressedTexSubImage3D",
-+
-+ "glGetCompressedTexImageARB",
-+ "glCompressedTexImage1DARB",
-+ "glCompressedTexImage2DARB",
-+ "glCompressedTexImage3DARB",
-+ "glCompressedTexSubImage1DARB",
-+ "glCompressedTexSubImage2DARB",
-+ "glCompressedTexSubImage3DARB",
-+
-+ "glCallLists",
-+ "glNewList",
-+ "glDeleteLists",
-+ "glGenLists",
-+
-+ "glGenTextures",
-+ "glDeleteTextures",
-+ "glDeleteTexturesEXT",
-+ "glMap1f",
-+ "glMap1d",
-+ "glMap2f",
-+ "glMap2d",
-+ "glGetMapdv",
-+ "glGetMapfv",
-+ "glGetMapiv",
-+ "glGetBooleanv",
-+ "glGetIntegerv",
-+ "glGetFloatv",
-+ "glGetDoublev",
-+
-+ "glGetPixelMapfv",
-+ "glGetPixelMapuiv",
-+ "glGetPixelMapusv",
-+ "glGetProgramStringARB",
-+ "glGetProgramStringNV",
-+ "glArrayElement",
-+ "glDrawArrays",
-+ "glDrawElements",
-+ "glDrawRangeElements",
-+ "glDrawRangeElementsEXT",
-+ "glGetProgramInfoLog",
-+ "glGetTexLevelParameteriv",
-+ "glGetInfoLogARB",
-+ "glGetShaderInfoLog",
-+ "glGetAttachedObjectsARB",
-+ "glGetAttachedShaders",
-+ "glGetActiveUniformARB",
-+ "glGetActiveUniform",
-+ "glGetUniformLocationARB",
-+ "glGetUniformLocation",
-+ "glGetUniformfvARB",
-+ "glGetUniformfv",
-+ "glGetUniformivARB",
-+ "glGetUniformiv",
-+ "glGetUniformuivEXT",
-+ "glGetShaderSourceARB",
-+ "glGetShaderSource",
-+ "glGetActiveAttribARB",
-+ "glGetActiveAttrib",
-+ "glGetAttribLocationARB",
-+ "glGetAttribLocation",
-+
-+ "glNewObjectBufferATI",
-+ "glUpdateObjectBufferATI",
-+
-+ "glSetLocalConstantEXT",
-+ "glSetInvariantEXT",
-+ "glVariantbvEXT",
-+ "glVariantsvEXT",
-+ "glVariantivEXT",
-+ "glVariantfvEXT",
-+ "glVariantdvEXT",
-+ "glVariantubvEXT",
-+ "glVariantusvEXT",
-+ "glVariantuivEXT",
-+ "glGetVariantBooleanvEXT",
-+ "glGetVariantIntegervEXT",
-+ "glGetVariantFloatvEXT",
-+ "glGetInvariantBooleanvEXT",
-+ "glGetInvariantIntegervEXT",
-+ "glGetInvariantFloatvEXT",
-+ "glGetLocalConstantBooleanvEXT",
-+ "glGetLocalConstantIntegervEXT",
-+ "glGetLocalConstantFloatvEXT",
-+
-+ "glMatrixIndexubvARB",
-+ "glMatrixIndexusvARB",
-+ "glMatrixIndexuivARB",
-+
-+ "glColorTable",
-+ "glColorSubTable",
-+ "glGetColorTable",
-+ "glConvolutionFilter1D",
-+ "glConvolutionFilter2D",
-+ "glGetConvolutionFilter",
-+ "glSeparableFilter2D",
-+ "glGetSeparableFilter",
-+ "glGetHistogram",
-+ "glGetMinmax",
-+ "glColorTableEXT",
-+ "glColorSubTableEXT",
-+ "glGetColorTableEXT",
-+ "glConvolutionFilter1DEXT",
-+ "glConvolutionFilter2DEXT",
-+ "glGetConvolutionFilterEXT",
-+ "glSeparableFilter2DEXT",
-+ "glGetSeparableFilterEXT",
-+ "glGetHistogramEXT",
-+ "glGetMinmaxEXT",
-+
-+ "glGetTexParameterfv",
-+
-+ "glGetVertexAttribivARB",
-+ "glGetVertexAttribfvARB",
-+ "glGetVertexAttribdvARB",
-+ "glGetVertexAttribiv",
-+ "glGetVertexAttribfv",
-+ "glGetVertexAttribdv",
-+
-+ "glGetDetailTexFuncSGIS",
-+ "glGetSharpenTexFuncSGIS",
-+
-+ "fake_gluBuild2DMipmaps",
-+
-+ "glRenderMode",
-+
-+ "glEnableVariantClientStateEXT",
-+ "glDisableVariantClientStateEXT",
-+
-+ "glGetActiveVaryingNV",
-+
-+ NULL,
-+};
-+
-+static int just_for_server_side_func(char* funcname)
-+{
-+ int i;
-+ for(i=0;just_for_server_side_list[i];i++)
-+ {
-+ if (strcmp(just_for_server_side_list[i], funcname) == 0)
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+int parse(FILE* f, FuncDesc* funcDesc, int funcDescCount, int ignoreEXT)
-+{
-+ char buffer[256];
-+ while(fgets(buffer, 256, f))
-+ {
-+
-+ if (strncmp(buffer, "GLAPI", 5) == 0 && strstr(buffer, "APIENTRY") && strstr(buffer, "("))
-+ {
-+ int i = 0;
-+ int skip = 0;
-+ if (func_dealt_by_hand[0] == 0)
-+ {
-+ get_func_dealt_by_hand();
-+ }
-+ while (func_dealt_by_hand[i])
-+ {
-+ if (strstr(buffer, func_dealt_by_hand[i]))
-+ {
-+ skip = 1;
-+ break;
-+ }
-+ i++;
-+ }
-+ if (skip)
-+ continue;
-+
-+ char** args = malloc(15 * sizeof(char*));
-+ int narg = 0;
-+ char* type = buffer + 6;
-+ char* n = strstr(type, "GLAPIENTRY") ? strstr(type, "GLAPIENTRY") : strstr(type, "APIENTRY");
-+ int skip_length = strstr(type, "GLAPIENTRY") ? 11 : 9;
-+ n[-1] = 0;
-+ type = strdup(type);
-+ n += skip_length;
-+ char* fonc = n;
-+ n = strstr(n, "(");
-+ if (n[-1] == ' ') n[-1] = 0;
-+ n[0] = 0;
-+ fonc = strdup(fonc);
-+ /*if (strstr(fonc, "glLockArraysEXT") || strstr(fonc, "glUnlockArraysEXT"))
-+ {
-+ }
-+ else*/
-+
-+
-+ if (ignoreEXT == 1 && isExtByName(fonc))
-+ {
-+ free(type);
-+ free(fonc);
-+ continue;
-+ }
-+ n++;
-+ while(1)
-+ {
-+ char* virg = strstr(n, ",");
-+ if (virg)
-+ {
-+ args[narg] = n;
-+ virg[0] = 0;
-+ args[narg] = get_arg_type(args[narg]);
-+ narg++;
-+ n = virg+1;
-+ }
-+ else
-+ break;
-+ }
-+ while (strstr(n, ")") == 0)
-+ {
-+ fgets(buffer, 256, f);
-+ n = buffer;
-+ while(1)
-+ {
-+ char* virg = strstr(n, ",");
-+ if (virg)
-+ {
-+ args[narg] = n;
-+ virg[0] = 0;
-+ args[narg] = get_arg_type(args[narg]);
-+ narg++;
-+ n = virg+1;
-+ }
-+ else
-+ break;
-+ }
-+ }
-+ char* par = strstr(n, ")");
-+ args[narg] = n;
-+ par[0] = 0;
-+ args[narg] = get_arg_type(args[narg]);
-+ narg++;
-+
-+
-+ /*printf("%s %s (", type, fonc);
-+ for(i=0;i<narg;i++)
-+ {
-+ printf("%s,", args[i]);
-+ }
-+ printf(")\n");*/
-+
-+ for(i=0;i<funcDescCount;i++)
-+ {
-+ if (strcmp(funcDesc[i].name, fonc) == 0)
-+ {
-+ if (ignoreEXT == 0)
-+ funcDesc[i].isExt = 1;
-+ break;
-+ }
-+ }
-+ if (i == funcDescCount)
-+ {
-+ funcDesc[funcDescCount].type = type;
-+ funcDesc[funcDescCount].name = fonc;
-+ funcDesc[funcDescCount].nargs = narg;
-+ funcDesc[funcDescCount].args = args;
-+ funcDesc[funcDescCount].isExt = ignoreEXT == 0;
-+ funcDescCount++;
-+ }
-+ else
-+ {
-+ free(fonc);
-+ free(args);
-+ free(type);
-+ }
-+ /*
-+ for(i=0;i<narg;i++)
-+ {
-+ free(args[i]);
-+ }
-+ free(fonc);
-+ free(type);*/
-+ }
-+ }
-+ return funcDescCount;
-+}
-+
-+typedef struct
-+{
-+ char* str;
-+ int i;
-+} StringIntStruct;
-+
-+StringIntStruct argDependingOnPreviousArgTab[] =
-+{
-+ { "glLoadProgramNV", 3},
-+ { "ProgramNamedParameter", 2},
-+ { "glDeleteBuffers", 1},
-+ { "glDrawBuffers", 1},
-+ { "glGenPrograms", 1},
-+ { "glDeletePrograms", 1},
-+ { "glGenQueries", 1},
-+ { "glDeleteQueries", 1},
-+ { "glGenFencesNV", 1},
-+ { "glDeleteFencesNV", 1},
-+ { "glGenOcclusionQueriesNV", 1},
-+ { "glDeleteOcclusionQueriesNV", 1},
-+ { "glRequestResidentProgramsNV", 1},
-+ { "glDeleteTextures", 1},
-+ { "glGenFramebuffersEXT", 1},
-+ { "glDeleteFramebuffersEXT", 1},
-+ { "glGenRenderbuffersEXT", 1},
-+ { "glDeleteRenderbuffersEXT", 1},
-+ { "glUniform1fv", 2},
-+ { "glUniform2fv", 2},
-+ { "glUniform3fv", 2},
-+ { "glUniform4fv", 2},
-+ { "glUniform1iv", 2},
-+ { "glUniform2iv", 2},
-+ { "glUniform3iv", 2},
-+ { "glUniform4iv", 2},
-+ { "glUniform1uivEXT", 2},
-+ { "glUniform2uivEXT", 2},
-+ { "glUniform3uivEXT", 2},
-+ { "glUniform4uivEXT", 2},
-+ { "glProgramParameters4fvNV", 3},
-+ { "glProgramParameters4dvNV", 3},
-+ { "glProgramLocalParameters4fvEXT", 3},
-+ { "glProgramLocalParametersI4ivNV", 3},
-+ { "glProgramLocalParametersI4uivNV", 3},
-+ { "glProgramEnvParameters4fvEXT", 3},
-+ { "glProgramEnvParametersI4ivNV", 3},
-+ { "glProgramEnvParametersI4uivNV", 3},
-+ { "glAreProgramsResidentNV", 1} ,
-+ { "glAreProgramsResidentNV", 2} ,
-+ { "glAreTexturesResident", 1} ,
-+ { "glAreTexturesResident", 2} ,
-+ { "glPrioritizeTextures", 1} ,
-+ { "glPrioritizeTextures", 2} ,
-+ { "glProgramStringARB", 3} ,
-+
-+ { "glVertexAttribs", 2},
-+
-+ { "glUniformMatrix", 3 },
-+
-+ { "glGetVertexAttribfv", 2},
-+ { "glGetVertexAttribiv", 2},
-+ { "glGetVertexAttribdv", 2},
-+ { "glGetVertexAttribIivEXT", 2},
-+ { "glGetVertexAttribIuivEXT", 2},
-+
-+ { "glPointParameterfv", 1},
-+ { "glPointParameteriv", 1},
-+
-+ { "glWeightbvARB", 1},
-+ { "glWeightsvARB", 1},
-+ { "glWeightivARB", 1},
-+ { "glWeightfvARB", 1},
-+ { "glWeightdvARB", 1},
-+ { "glWeightubvARB", 1},
-+ { "glWeightusvARB", 1},
-+ { "glWeightuivARB", 1},
-+
-+ { "glTexEnvfv", 2},
-+ { "glTexEnviv", 2},
-+ { "glGetTexEnvfv", 2},
-+ { "glGetTexEnviv", 2},
-+ { "glTexGendv", 2},
-+ { "glTexGenfv", 2},
-+ { "glTexGeniv", 2},
-+ { "glGetTexGendv", 2},
-+ { "glGetTexGenfv", 2},
-+ { "glGetTexGeniv", 2},
-+
-+ { "glLightfv", 2},
-+ { "glLightiv", 2},
-+ { "glGetLightfv", 2},
-+ { "glGetLightiv", 2},
-+ { "glFragmentLightfvSGIX", 2},
-+ { "glFragmentLightivSGIX", 2},
-+ { "glGetFragmentLightfvSGIX", 2},
-+ { "glGetFragmentLightivSGIX", 2},
-+
-+
-+ { "glLightModelfv", 1},
-+ { "glLightModeliv", 1},
-+ { "glFragmentLightModelfvSGIX", 1},
-+ { "glFragmentLightModelivSGIX", 1},
-+
-+ { "glMaterialfv", 2},
-+ { "glMaterialiv", 2},
-+ { "glGetMaterialfv", 2},
-+ { "glGetMaterialiv", 2},
-+ { "glFragmentMaterialfvSGIX", 2},
-+ { "glFragmentMaterialivSGIX", 2},
-+ { "glGetFragmentMaterialfvSGIX", 2},
-+ { "glGetFragmentMaterialivSGIX", 2},
-+
-+ { "glFogiv", 1},
-+ { "glFogfv", 1},
-+
-+ { "glTexParameterfv", 2},
-+ { "glTexParameteriv", 2},
-+ { "glGetTexParameterfv", 2},
-+ { "glGetTexParameteriv", 2},
-+
-+ { "glTexParameterIivEXT", 2},
-+ { "glTexParameterIuivEXT", 2},
-+ { "glGetTexParameterIivEXT", 2},
-+ { "glGetTexParameterIuivEXT", 2},
-+
-+ { "glPixelMapfv", 2},
-+ { "glPixelMapuiv", 2},
-+ { "glPixelMapusv", 2},
-+
-+ { "glDetailTexFuncSGIS", 2 },
-+ { "glSharpenTexFuncSGIS", 2 },
-+
-+ { "glSpriteParameterfvSGIX", 1 },
-+ { "glSpriteParameterivSGIX", 1 },
-+
-+ { "ConvolutionParameter", 2},
-+
-+ { "glProgramBufferParametersfvNV", 4},
-+ { "glProgramBufferParametersIivNV", 4},
-+ { "glProgramBufferParametersIuivNV", 4},
-+
-+ { "glTransformFeedbackAttribsNV", 1},
-+ { "glTransformFeedbackVaryingsNV", 2},
-+};
-+
-+int is_arg_of_length_depending_on_previous_args(FuncDesc* funcDesc, int j)
-+{
-+ int i;
-+ if (strstr(funcDesc->args[j], "*") == NULL)
-+ return 0;
-+ for(i=0;i< N_ELEMENTS(argDependingOnPreviousArgTab); i++)
-+ {
-+ if (strstr(funcDesc->name, argDependingOnPreviousArgTab[i].str) && j == argDependingOnPreviousArgTab[i].i)
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+static void fprintf_prototype_args(FILE* f, FuncDesc* funcDesc)
-+{
-+ int j;
-+ for(j=0;j<funcDesc->nargs;j++)
-+ {
-+ if (j != 0) fprintf(f,", ");
-+ if (strstr(funcDesc->args[j], "[16]"))
-+ {
-+ if (strstr(funcDesc->args[j], "float"))
-+ {
-+ fprintf(f, "const GLfloat arg_%d[16]", j);
-+ }
-+ else if (strstr(funcDesc->args[j], "double"))
-+ {
-+ fprintf(f, "const GLdouble arg_%d[16]", j);
-+ }
-+ else
-+ {
-+ exit(-1);
-+ }
-+ }
-+ else if (strstr(funcDesc->args[j], "[128]") && strstr(funcDesc->args[j], "GLubyte"))
-+ fprintf(f, (strstr(funcDesc->args[j], "const")) ? "const GLubyte* arg_%d" : "GLubyte* arg_%d", j);
-+ else
-+ fprintf(f, "%s arg_%d", funcDesc->args[j], j);
-+ }
-+}
-+
-+int main(int argc, char* argv[])
-+{
-+ FuncDesc funcDesc[3000];
-+ int funcDescCount = 0;
-+ FILE* f;
-+
-+ f = fopen("../target-i386/mesa_gl.h", "r");
-+ assert(f);
-+ /*if (!f)
-+ f = fopen("/usr/include/GL/gl.h", "r");*/
-+ funcDescCount = parse(f, funcDesc, 0, 1);
-+ fclose(f);
-+
-+ f = fopen("../target-i386/mesa_glext.h", "r");
-+ assert(f);
-+ /*if (!f)
-+ f = fopen("/usr/include/GL/glext.h", "r");*/
-+ funcDescCount = parse(f, funcDesc, funcDescCount, 0);
-+ fclose(f);
-+
-+ FILE* header = fopen("gl_func.h", "w");
-+ FILE* client_stub = fopen("client_stub.c", "w");
-+ FILE* server_stub = fopen("server_stub.c", "w");
-+
-+ fprintf(header, "/* This is a generated file. DO NOT EDIT ! */\n\n");
-+ fprintf(header, "#define COMPOSE(x,y) x##y\n");
-+ fprintf(header, "#define MAGIC_MACRO(x) COMPOSE(x,_func)\n");
-+ fprintf(header, "enum {\n"
-+ "#include \"gl_func_perso.h\"\n");
-+
-+ fprintf(client_stub, "/* This is a generated file. DO NOT EDIT ! */\n\n");
-+
-+ fprintf(server_stub, "/* This is a generated file. DO NOT EDIT ! */\n\n");
-+
-+ int i;
-+ for(i=0;i<funcDescCount;i++)
-+ {
-+ funcDesc[i].ok = 0;
-+ char* name = funcDesc[i].name;
-+ char* type = funcDesc[i].type;
-+ if ((strcmp(type, "void") == 0 || strcmp(type, "GLboolean") == 0 ||
-+ strcmp(type, "GLuint") == 0 || strcmp(type, "GLint") == 0 ||
-+ strcmp(type, "GLenum") == 0) || strcmp(type, "GLhandleARB") == 0 ||
-+ strcmp(type, "GLhalf") == 0 || strcmp(type, "GLhalfNV") == 0)
-+ {
-+ int pointer_of_unknown_size = 0;
-+ int j;
-+
-+ if (funcDesc[i].nargs == 1 && strcmp(funcDesc[i].args[0], "void") == 0)
-+ {
-+ funcDesc[i].nargs = 0;
-+ }
-+ for(j=0;j<funcDesc[i].nargs-1;j++)
-+ {
-+ if (!is_arg_of_length_depending_on_previous_args(&funcDesc[i], j) &&
-+ strstr(funcDesc[i].args[j], "const GLchar") == NULL &&
-+ strstr(funcDesc[i].args[j], "[16]") == NULL)
-+ {
-+ pointer_of_unknown_size |= strstr(funcDesc[i].args[j], "*") != NULL;
-+ pointer_of_unknown_size |= strstr(funcDesc[i].args[j], "[") != NULL;
-+ }
-+ }
-+
-+ if (pointer_of_unknown_size == 0)
-+ {
-+ char* signature_type_name;
-+ if (is_known_arg_vector(&funcDesc[i], &signature_type_name, NULL))
-+ {
-+ if (strstr(signature_type_name, "TYPE_OUT"))
-+ funcDesc[i].has_out_parameters = 1;
-+ }
-+ else
-+ {
-+ if (funcDesc[i].nargs-1 >= 0)
-+ {
-+ j = funcDesc[i].nargs-1;
-+ if (!is_arg_of_length_depending_on_previous_args(&funcDesc[i], j) &&
-+ strstr(funcDesc[i].args[j], "const GLchar") == NULL &&
-+ strstr(funcDesc[i].args[j], "[16]") == NULL)
-+ {
-+ pointer_of_unknown_size |= strstr(funcDesc[i].args[j], "*") != NULL;
-+ pointer_of_unknown_size |= strstr(funcDesc[i].args[j], "[") != NULL;
-+ }
-+ }
-+ }
-+ }
-+ if (pointer_of_unknown_size && funcDesc[i].nargs == 1)
-+ {
-+ if (strstr(funcDesc[i].name, "Matrixf") || strstr(funcDesc[i].name, "Matrixd"))
-+ {
-+ free(funcDesc[i].args[0]);
-+ if (strstr(funcDesc[i].name, "Matrixf"))
-+ funcDesc[i].args[0] = strdup("GLfloat m[16]");
-+ else
-+ funcDesc[i].args[0] = strdup("GLdouble m[16]");
-+ pointer_of_unknown_size = 0;
-+ }
-+ else if (strcmp(funcDesc[i].name, "glPolygonStipple") == 0)
-+ {
-+ free(funcDesc[i].args[0]);
-+ funcDesc[i].args[0] = strdup("const GLubyte mask[128]");
-+ pointer_of_unknown_size = 0;
-+ }
-+ else if (strcmp(funcDesc[i].name, "glGetPolygonStipple") == 0)
-+ {
-+ free(funcDesc[i].args[0]);
-+ funcDesc[i].args[0] = strdup("GLubyte mask[128]");
-+ funcDesc[i].has_out_parameters = 1;
-+ pointer_of_unknown_size = 0;
-+ }
-+ }
-+ if (just_for_server_side_func(name) || pointer_of_unknown_size == 0)
-+ {
-+ fprintf(header, " %s_func,\n", funcDesc[i].name);
-+ funcDesc[i].ok = 1;
-+ if (just_for_server_side_func(name))
-+ funcDesc[i].just_for_server_side = 1;
-+ for(j=0;j<funcDesc[i].nargs;j++)
-+ {
-+ if (strstr(get_type_string(funcDesc[i].args[j]), "OUT"))
-+ funcDesc[i].has_out_parameters = 1;
-+ }
-+ }
-+ else
-+ {
-+ fprintf(stderr, "not handled either manually or automatically : %s\n", funcDesc[i].name);
-+ }
-+ }
-+ }
-+
-+ fprintf(header, " GL_N_CALLS\n};\n");
-+
-+
-+ fprintf(server_stub, "void execute_func(int func_number, arg_t *args, int *pret_int, char *pret_char)\n");
-+ fprintf(server_stub, "{\n");
-+ fprintf(server_stub, " switch(func_number)\n");
-+ fprintf(server_stub, " {\n");
-+
-+
-+ for(i=0;i<funcDescCount;i++)
-+ {
-+ if (funcDesc[i].ok)
-+ {
-+ fprintf(header, "static const int %s_signature[] = { %s, %d, ",
-+ funcDesc[i].name,
-+ get_type_string(funcDesc[i].type),
-+ funcDesc[i].has_out_parameters);
-+ fprintf(header, "%d", funcDesc[i].nargs);
-+ int j;
-+ char* signature_type_name;
-+ int n_args_to_check = is_known_arg_vector(&funcDesc[i], &signature_type_name, NULL) ? funcDesc[i].nargs - 1 : funcDesc[i].nargs;
-+
-+ for(j=0;j<n_args_to_check;j++)
-+ {
-+ if (is_arg_of_length_depending_on_previous_args(&funcDesc[i], j))
-+ {
-+ fprintf(header, ", %s_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS", get_type_string(funcDesc[i].args[j]));
-+ }
-+ else
-+ fprintf(header, ", %s", get_type_string(funcDesc[i].args[j]));
-+ }
-+
-+ if (is_known_arg_vector(&funcDesc[i], &signature_type_name, NULL))
-+ {
-+ fprintf(header, ", %s", signature_type_name);
-+ }
-+ fprintf(header, "};\n");
-+
-+
-+ if (funcDesc[i].just_for_server_side == 0)
-+ {
-+ if (isExt(&funcDesc[i]))
-+ fprintf(client_stub, "GLAPI %s APIENTRY EXT_FUNC(%s) (", funcDesc[i].type, funcDesc[i].name);
-+ else
-+ fprintf(client_stub, "GLAPI %s APIENTRY %s(", funcDesc[i].type, funcDesc[i].name);
-+ fprintf_prototype_args(client_stub, &funcDesc[i]);
-+ fprintf(client_stub, ")\n");
-+ fprintf(client_stub, "{\n");
-+ if (strcmp(funcDesc[i].type, "void") != 0)
-+ {
-+ fprintf(client_stub, " %s ret;\n", funcDesc[i].type);
-+ if (isExt(&funcDesc[i]))
-+ fprintf(client_stub, " CHECK_PROC_WITH_RET(%s);\n", funcDesc[i].name);
-+ }
-+ else
-+ {
-+ if (isExt(&funcDesc[i]))
-+ fprintf(client_stub, " CHECK_PROC(%s);\n", funcDesc[i].name);
-+ }
-+
-+ /*
-+ fprintf(client_stub, " do_opengl_call(%s_func, %s",
-+ funcDesc[i].name, (strcmp(funcDesc[i].type, "void") == 0) ? "NULL" : "&ret");
-+ for(j=0;j<funcDesc[i].nargs;j++)
-+ {
-+ fprintf(client_stub, ", arg_%d", j);
-+ }
-+ fprintf(client_stub, ");\n");
-+ */
-+
-+ if (funcDesc[i].nargs)
-+ {
-+ fprintf(client_stub, " long args[] = { ");
-+ for(j=0;j<funcDesc[i].nargs;j++)
-+ {
-+ if (j > 0) fprintf(client_stub, ", ");
-+ if (strstr(funcDesc[i].args[j], "*"))
-+ {
-+ fprintf(client_stub, "POINTER_TO_ARG(arg_%d)", j);
-+ }
-+ else
-+ {
-+ const char* symbolic_type = get_type_string(funcDesc[i].args[j]);
-+ if (strcmp(symbolic_type, "TYPE_CHAR") == 0)
-+ fprintf(client_stub, "CHAR_TO_ARG");
-+ else if (strcmp(symbolic_type, "TYPE_UNSIGNED_CHAR") == 0)
-+ fprintf(client_stub, "UNSIGNED_CHAR_TO_ARG");
-+ else if (strcmp(symbolic_type, "TYPE_SHORT") == 0)
-+ fprintf(client_stub, "SHORT_TO_ARG");
-+ else if (strcmp(symbolic_type, "TYPE_UNSIGNED_SHORT") == 0)
-+ fprintf(client_stub, "UNSIGNED_SHORT_TO_ARG");
-+ else if (strcmp(symbolic_type, "TYPE_INT") == 0)
-+ fprintf(client_stub, "INT_TO_ARG");
-+ else if (strcmp(symbolic_type, "TYPE_UNSIGNED_INT") == 0)
-+ fprintf(client_stub, "UNSIGNED_INT_TO_ARG");
-+ else if (strcmp(symbolic_type, "TYPE_FLOAT") == 0)
-+ fprintf(client_stub, "FLOAT_TO_ARG");
-+ else if (strcmp(symbolic_type, "TYPE_16FLOAT") == 0)
-+ fprintf(client_stub, "POINTER_TO_ARG");
-+ else if (strcmp(symbolic_type, "TYPE_DOUBLE") == 0)
-+ fprintf(client_stub, "DOUBLE_TO_ARG");
-+ else if ( strcmp(symbolic_type, "TYPE_16DOUBLE") == 0)
-+ fprintf(client_stub, "POINTER_TO_ARG");
-+ else if ( strcmp(symbolic_type, "TYPE_128UCHAR") == 0 || strcmp(symbolic_type, "TYPE_OUT_128UCHAR") == 0)
-+ fprintf(client_stub, "POINTER_TO_ARG");
-+ else
-+ {
-+ fprintf(stderr, "Unknown : %s\n", symbolic_type);
-+ assert(0);
-+ }
-+ fprintf(client_stub, "(arg_%d)", j);
-+ }
-+ }
-+ fprintf(client_stub, "};\n");
-+ }
-+
-+ fprintf(client_stub, " do_opengl_call(%s_func, %s, %s, NULL);\n",
-+ funcDesc[i].name, (strcmp(funcDesc[i].type, "void") == 0) ? "NULL" : "&ret",
-+ (funcDesc[i].nargs) ? "args" : "NULL");
-+
-+ if (strcmp(funcDesc[i].type, "void") != 0)
-+ {
-+ fprintf(client_stub, " return ret;\n");
-+ }
-+ fprintf(client_stub, "}\n\n");
-+ }
-+
-+ fprintf(server_stub, " case %s_func:\n", funcDesc[i].name);
-+ fprintf(server_stub, " {\n");
-+
-+ if (isExt(&funcDesc[i]))
-+ {
-+ fprintf(server_stub, " GET_EXT_PTR(%s, %s, (", funcDesc[i].type, funcDesc[i].name);
-+ fprintf_prototype_args(server_stub, &funcDesc[i]);
-+ fprintf(server_stub, "));\n");
-+ }
-+
-+ fprintf(server_stub, " ");
-+
-+ if (strcmp(funcDesc[i].type, "void") == 0)
-+ ;
-+ else if (strcmp(get_type_string(funcDesc[i].type), "TYPE_INT") == 0 ||
-+ strcmp(get_type_string(funcDesc[i].type), "TYPE_UNSIGNED_INT") == 0)
-+ fprintf(server_stub, "*pret_int = ");
-+ else if (strcmp(get_type_string(funcDesc[i].type), "TYPE_CHAR") == 0 ||
-+ strcmp(get_type_string(funcDesc[i].type), "TYPE_UNSIGNED_CHAR") == 0)
-+ fprintf(server_stub, "*pret_char = ");
-+ else
-+ {
-+ fprintf(stderr, "unknown ret type = %s\n", get_type_string(funcDesc[i].type));
-+ exit(-1);
-+ }
-+ /*if (strstr(funcDesc[i].name, "EXT"))
-+ {
-+ char* dup = strdup(funcDesc[i].name);
-+ *strstr(dup, "EXT") = 0;
-+ fprintf(server_stub, "%s(", dup);
-+ free(dup);
-+ }
-+ else*/
-+ {
-+ if (isExt(&funcDesc[i]))
-+ fprintf(server_stub, "ptr_func_%s(", funcDesc[i].name);
-+ else
-+ fprintf(server_stub, "%s(", funcDesc[i].name);
-+ }
-+ char* c_type_name;
-+ if (is_known_arg_vector(&funcDesc[i], NULL, &c_type_name))
-+ {
-+ for(j=0;j<funcDesc[i].nargs - 1;j++)
-+ {
-+ if (j != 0) fprintf(server_stub,", ");
-+ print_server_side_argument(server_stub, j, funcDesc[i].args[j]);
-+ }
-+ if (j != 0) fprintf(server_stub,", ");
-+ if (strstr(funcDesc[i].args[funcDesc[i].nargs - 1], "const"))
-+ fprintf(server_stub, "(const %s*)args[%d]", c_type_name, j);
-+ else
-+ fprintf(server_stub, "(%s*)args[%d]", c_type_name, j);
-+ }
-+ else
-+ {
-+ for(j=0;j<funcDesc[i].nargs;j++)
-+ {
-+ if (j != 0) fprintf(server_stub,", ");
-+ print_server_side_argument(server_stub, j, funcDesc[i].args[j]);
-+ }
-+ }
-+ fprintf(server_stub, ");\n");
-+
-+ fprintf(server_stub, " break;\n");
-+ fprintf(server_stub, " }\n");
-+ }
-+ }
-+
-+ fprintf(server_stub, " default:\n");
-+ fprintf(server_stub, " fprintf(stderr, \"unknown=%%d\", func_number);\n");
-+ fprintf(server_stub, " break;\n");
-+ fprintf(server_stub, " }\n");
-+ fprintf(server_stub, "}\n");
-+
-+ fprintf(header, "#undef MAGIC_MACRO\n");
-+ fprintf(header, "#define MAGIC_MACRO(x) COMPOSE(x,_signature)\n");
-+ fprintf(header, "static const int* tab_opengl_calls[GL_N_CALLS] =\n");
-+ fprintf(header, "{\n");
-+ fprintf(header, "#include \"gl_func_perso.h\"\n");
-+ for(i=0;i<funcDescCount;i++)
-+ {
-+ if (funcDesc[i].ok)
-+ {
-+ fprintf(header, " %s_signature,\n", funcDesc[i].name);
-+ }
-+ }
-+ fprintf(header, "};\n\n");
-+
-+ fprintf(header, "#undef MAGIC_MACRO\n");
-+ fprintf(header, "#define MAGIC_MACRO(x) #x\n");
-+ fprintf(header, "static const char* tab_opengl_calls_name[GL_N_CALLS] =\n");
-+ fprintf(header, "{\n");
-+ fprintf(header, "#include \"gl_func_perso.h\"\n");
-+ for(i=0;i<funcDescCount;i++)
-+ {
-+ if (funcDesc[i].ok)
-+ {
-+ fprintf(header, " \"%s\",\n", funcDesc[i].name);
-+ }
-+ }
-+ fprintf(header, "};\n\n");
-+
-+ fclose(header);
-+ fclose(server_stub);
-+ fclose(client_stub);
-+
-+ return 0;
-+}
-Index: qemu-0.12.4/target-i386/parse_mesa_get_c.c
-===================================================================
---- /dev/null
-+++ qemu-0.12.4/target-i386/parse_mesa_get_c.c
-@@ -0,0 +1,225 @@
-+/*
-+ * Parse the "get.c" from mesa source tree to generate "glgetv_cst.h"
-+ *
-+ * Copyright (c) 2007 Even Rouault
-+ *
-+ * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+ * THE SOFTWARE.
-+ */
-+
-+// gcc -Wall parse_mesa_get_c.c -o parse_mesa_get_c -I. && ./parse_mesa_get_c
-+
-+#include <stdlib.h>
-+#include <stdio.h>
-+#include <string.h>
-+#include <assert.h>
-+
-+#include "mesa_gl.h"
-+#include "mesa_glext.h"
-+
-+/* #include "mesa_enums.c" */
-+
-+int gl_lookup_enum_by_name(const char* name)
-+{
-+ FILE* f;
-+ char buffer[256];
-+ char template1[256];
-+ char template2[256];
-+ int i;
-+ sprintf(template1, "#define %s\t", name);
-+ sprintf(template2, "#define %s ", name);
-+ for(i=0;i<2;i++)
-+ {
-+ if (i == 0)
-+ f = fopen("mesa_gl.h", "r");
-+ else
-+ f = fopen("mesa_glext.h", "r");
-+ while(fgets(buffer, 256, f))
-+ {
-+ if (strstr(buffer, template1) || strstr(buffer, template2))
-+ {
-+ char* c = strstr(buffer, "0x");
-+ assert(c);
-+ int ret;
-+ ret = strtol(c, NULL, 16);
-+ return ret;
-+ }
-+ }
-+ fclose(f);
-+ }
-+
-+ return -1;
-+}
-+
-+typedef struct
-+{
-+ int value;
-+ char* name;
-+ int nb_elts;
-+} Token;
-+
-+int compare_func(Token* a, Token* b)
-+{
-+ return a->value - b->value;
-+}
-+
-+typedef struct
-+{
-+ int i;
-+ char* str;
-+} Cpl;
-+#define CPL(x) {x, #x}
-+
-+Cpl constantsOneVal[] =
-+{
-+ CPL(GL_MAX_GENERAL_COMBINERS_NV),
-+ CPL(GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT),
-+ CPL(GL_MAX_VERTEX_SHADER_VARIANTS_EXT),
-+ CPL(GL_MAX_VERTEX_SHADER_INVARIANTS_EXT),
-+ CPL(GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT),
-+ CPL(GL_MAX_VERTEX_SHADER_LOCALS_EXT),
-+ CPL(GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT),
-+ CPL(GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT),
-+ CPL(GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT),
-+ CPL(GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT),
-+ CPL(GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT),
-+};
-+#define NB_CONSTANTS_ONE_VAL 11
-+
-+int main(int argc, char* argv[])
-+{
-+ FILE* f = fopen("mesa_get.c", "r");
-+ char buffer[256];
-+ int state = 0;
-+ char name[256];
-+ int count = 0;
-+ char template[256];
-+ Token tokens[1000];
-+ int ntoken = 0;
-+ int i;
-+ FILE* outf = fopen("glgetv_cst.h", "w");
-+
-+ fprintf(outf, "/* This is a generated file. Do not edit !*/\n");
-+ fprintf(outf, "typedef struct {\n");
-+ fprintf(outf, " GLuint count;\n");
-+ fprintf(outf, " GLenum token;\n");
-+ fprintf(outf, " const char *name;\n");
-+ fprintf(outf, "} GlGetConstant ;\n");
-+ fprintf(outf, "static const GlGetConstant gl_get_constants[] = {\n");
-+
-+ while(fgets(buffer, 256, f))
-+ {
-+ if (strstr(buffer, "_mesa_GetBooleanv"))
-+ {
-+ state = 1;
-+ }
-+ else if (state == 1)
-+ {
-+ if (strstr(buffer, "_mesa_GetFloatv"))
-+ {
-+ break;
-+ }
-+ else if (strstr(buffer, "case GL_"))
-+ {
-+ strcpy(name, strstr(buffer, "case GL_") + 5);
-+ *strstr(name, ":") = 0;
-+ count = 0;
-+ strcpy(template, "params[0]");
-+ }
-+ else if (strstr(buffer, template))
-+ {
-+ count ++;
-+ sprintf(template, "params[%d]", count);
-+ }
-+ else if (strstr(buffer, "break"))
-+ {
-+ if (count > 0)
-+ {
-+ int gl_lookup = gl_lookup_enum_by_name(name);
-+ /*
-+ int mesa_lookup = _mesa_lookup_enum_by_name(name);
-+ if (mesa_lookup != -1)
-+ {
-+ if(mesa_lookup != gl_lookup)
-+ {
-+ fprintf(stderr, "wrong : %s %d %d !\n", name, mesa_lookup, gl_lookup);
-+ exit(-1);
-+ }
-+ }*/
-+ if (gl_lookup == -1)
-+ {
-+ fprintf(stderr, "not found in includes : %s\n", name);
-+ //fprintf(outf, "/* { %d, unknown value, \"%s\" },*/\n", count, name);
-+ }
-+ else
-+ {
-+ //fprintf(outf, " { %d, 0x%04x, \"%s\" },\n", count, gl_lookup, name);
-+ tokens[ntoken].value = gl_lookup;
-+ tokens[ntoken].nb_elts = count;
-+ tokens[ntoken].name = strdup(name);
-+ ntoken++;
-+ }
-+ /*fprintf(outf, "#ifdef %s\n", name);
-+ fprintf(outf, " { %d, MAKE_TOKEN_NAME(%s) },\n", count, name);
-+ fprintf(outf, "#endif\n");*/
-+ }
-+ else
-+ fprintf(stderr, "not recognized : %s\n", name);
-+ }
-+ }
-+ }
-+
-+ for(i=0;i<NB_CONSTANTS_ONE_VAL;i++)
-+ {
-+ tokens[ntoken].value = constantsOneVal[i].i;
-+ tokens[ntoken].nb_elts = 1;
-+ tokens[ntoken].name = strdup(constantsOneVal[i].str);
-+ ntoken++;
-+ }
-+
-+ tokens[ntoken].value = GL_SPRITE_MODE_SGIX;
-+ tokens[ntoken].nb_elts = 1;
-+ tokens[ntoken].name = strdup("GL_SPRITE_MODE_SGIX");
-+ ntoken++;
-+
-+ tokens[ntoken].value = GL_SPRITE_AXIS_SGIX ;
-+ tokens[ntoken].nb_elts = 3;
-+ tokens[ntoken].name = strdup("GL_SPRITE_AXIS_SGIX ");
-+ ntoken++;
-+
-+ tokens[ntoken].value = GL_SPRITE_TRANSLATION_SGIX;
-+ tokens[ntoken].nb_elts = 3;
-+ tokens[ntoken].name = strdup("GL_SPRITE_TRANSLATION_SGIX");
-+ ntoken++;
-+
-+ tokens[ntoken].value = GL_REFERENCE_PLANE_EQUATION_SGIX;
-+ tokens[ntoken].nb_elts = 4;
-+ tokens[ntoken].name = strdup("GL_REFERENCE_PLANE_EQUATION_SGIX");
-+ ntoken++;
-+
-+
-+ qsort(tokens, ntoken, sizeof(Token), compare_func);
-+ for(i=0;i<ntoken;i++)
-+ {
-+ fprintf(outf, " { %d, 0x%04x, \"%s\" },\n", tokens[i].nb_elts, tokens[i].value, tokens[i].name);
-+ }
-+ fprintf(outf, "};\n");
-+ fclose(f);
-+ fclose(outf);
-+ return 0;
-+}
-Index: qemu-0.12.4/target-i386/translate.c
-===================================================================
---- qemu-0.12.4.orig/target-i386/translate.c
-+++ qemu-0.12.4/target-i386/translate.c
-@@ -743,6 +743,8 @@ static void gen_check_io(DisasContext *s
- int state_saved;
- target_ulong next_eip;
-
-+ return;
-+
- state_saved = 0;
- if (s->pe && (s->cpl > s->iopl || s->vm86)) {
- if (s->cc_op != CC_OP_DYNAMIC)
-@@ -2676,11 +2678,18 @@ static void gen_exception(DisasContext *
- s->is_jmp = 3;
- }
-
-+int enable_gl = 0;
-+
- /* an interrupt is different from an exception because of the
- privilege checks */
- static void gen_interrupt(DisasContext *s, int intno,
- target_ulong cur_eip, target_ulong next_eip)
- {
-+ if (enable_gl && intno == 0x99) {
-+ gen_helper_opengl();
-+ return;
-+ }
-+
- if (s->cc_op != CC_OP_DYNAMIC)
- gen_op_set_cc_op(s->cc_op);
- gen_jmp_im(cur_eip);
-Index: qemu-0.12.4/vl.c
-===================================================================
---- qemu-0.12.4.orig/vl.c
-+++ qemu-0.12.4/vl.c
-@@ -238,6 +238,7 @@ int semihosting_enabled = 0;
- #ifdef TARGET_ARM
- int old_param = 0;
- #endif
-+int force_pointer = 0;
- const char *qemu_name;
- int alt_grab = 0;
- int ctrl_grab = 0;
-@@ -246,6 +247,7 @@ unsigned int nb_prom_envs = 0;
- const char *prom_envs[MAX_PROM_ENVS];
- #endif
- int boot_menu;
-+extern int enable_gl;
-
- int nb_numa_nodes;
- uint64_t node_mem[MAX_NODES];
-@@ -4432,6 +4434,8 @@ static void select_vgahw (const char *p)
- } else if (strstart(p, "xenfb", &opts)) {
- vga_interface_type = VGA_XENFB;
- } else if (!strstart(p, "none", &opts)) {
-+ }
-+ else {
- invalid_vga:
- fprintf(stderr, "Unknown vga type: %s\n", p);
- exit(1);
-@@ -5563,6 +5567,9 @@ int main(int argc, char **argv, char **e
- old_param = 1;
- break;
- #endif
-+ case QEMU_OPTION_force_pointer:
-+ force_pointer = 1;
-+ break;
- case QEMU_OPTION_clock:
- configure_alarms(optarg);
- break;
-@@ -5577,6 +5584,12 @@ int main(int argc, char **argv, char **e
- }
- configure_rtc(opts);
- break;
-+#ifdef TARGET_OPENGL_OK
-+ case QEMU_OPTION_enable_gl:
-+ fprintf(stderr, "Enabling opengl\n");
-+ enable_gl = 1;
-+ break;
-+#endif
- case QEMU_OPTION_tb_size:
- tb_size = strtol(optarg, NULL, 0);
- if (tb_size < 0)
-@@ -5933,6 +5946,14 @@ int main(int argc, char **argv, char **e
- }
- }
- }
-+#ifdef TARGET_OPENGL_OK
-+ if (enable_gl) {
-+ /* Use second serial port */
-+ int opengl_serial = 1;
-+
-+ add_device_config(DEV_SERIAL, "opengl");
-+ }
-+#endif
-
- if (foreach_device_config(DEV_SERIAL, serial_parse) < 0)
- exit(1);
-Index: qemu-0.12.4/qemu-options.hx
-===================================================================
---- qemu-0.12.4.orig/qemu-options.hx
-+++ qemu-0.12.4/qemu-options.hx
-@@ -1789,6 +1789,18 @@ many timer interrupts were not processed
- re-inject them.
- ETEXI
-
-+DEF("enable-gl", 0, QEMU_OPTION_enable_gl, \
-+ "-enable-gl\n")
-+STEXI
-+@item -enable-gl
-+ETEXI
-+
-+DEF("force-pointer", 0, QEMU_OPTION_force_pointer, \
-+ "-force-pointer\n")
-+STEXI
-+@item -force-pointer
-+ETEXI
-+
- DEF("icount", HAS_ARG, QEMU_OPTION_icount, \
- "-icount [N|auto]\n" \
- " enable virtual instruction counter with 2^N clock ticks per\n" \
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/qemu-ppc-hack.patch b/meta/recipes-devtools/qemu/qemu-0.12.4/qemu-ppc-hack.patch
deleted file mode 100644
index 3ed227ec35..0000000000
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/qemu-ppc-hack.patch
+++ /dev/null
@@ -1,136 +0,0 @@
-Quick fixes to get the ppc system model to boot a 603e based
-kernel.
-
-diff --git a/hw/m48t59.c b/hw/m48t59.c
-index ce38f8b..d99054f 100644
---- a/hw/m48t59.c
-+++ b/hw/m48t59.c
-@@ -50,6 +50,7 @@
- */
-
- struct m48t59_t {
-+ SysBusDevice busdev;
- /* Model parameters */
- uint32_t type; // 2 = m48t02, 8 = m48t08, 59 = m48t59
- /* Hardware parameters */
-@@ -74,11 +75,6 @@ typedef struct M48t59ISAState {
- m48t59_t state;
- } M48t59ISAState;
-
--typedef struct M48t59SysBusState {
-- SysBusDevice busdev;
-- m48t59_t state;
--} M48t59SysBusState;
--
- /* Fake timer functions */
-
- /* Alarm management */
-@@ -629,8 +625,7 @@ static void m48t59_reset_isa(DeviceState *d)
-
- static void m48t59_reset_sysbus(DeviceState *d)
- {
-- M48t59SysBusState *sys = container_of(d, M48t59SysBusState, busdev.qdev);
-- m48t59_t *NVRAM = &sys->state;
-+ m48t59_t *NVRAM = container_of(d, m48t59_t, busdev.qdev);
-
- m48t59_reset_common(NVRAM);
- }
-@@ -642,7 +637,7 @@ m48t59_t *m48t59_init (qemu_irq IRQ, target_phys_addr_t mem_base,
- {
- DeviceState *dev;
- SysBusDevice *s;
-- M48t59SysBusState *d;
-+ m48t59_t *d;
-
- dev = qdev_create(NULL, "m48t59");
- qdev_prop_set_uint32(dev, "type", type);
-@@ -659,9 +654,9 @@ m48t59_t *m48t59_init (qemu_irq IRQ, target_phys_addr_t mem_base,
- sysbus_mmio_map(s, 0, mem_base);
- }
-
-- d = FROM_SYSBUS(M48t59SysBusState, s);
-+ d = FROM_SYSBUS(m48t59_t, s);
-
-- return &d->state;
-+ return d;
- }
-
- m48t59_t *m48t59_init_isa(uint32_t io_base, uint16_t size, int type)
-@@ -711,8 +706,7 @@ static int m48t59_init_isa1(ISADevice *dev)
-
- static int m48t59_init1(SysBusDevice *dev)
- {
-- M48t59SysBusState *d = FROM_SYSBUS(M48t59SysBusState, dev);
-- m48t59_t *s = &d->state;
-+ m48t59_t *s = FROM_SYSBUS(m48t59_t, dev);
- int mem_index;
-
- sysbus_init_irq(dev, &s->IRQ);
-@@ -741,12 +735,12 @@ static ISADeviceInfo m48t59_isa_info = {
- static SysBusDeviceInfo m48t59_info = {
- .init = m48t59_init1,
- .qdev.name = "m48t59",
-- .qdev.size = sizeof(M48t59SysBusState),
-+ .qdev.size = sizeof(m48t59_t),
- .qdev.reset = m48t59_reset_sysbus,
- .qdev.props = (Property[]) {
-- DEFINE_PROP_UINT32("size", M48t59SysBusState, state.size, -1),
-- DEFINE_PROP_UINT32("type", M48t59SysBusState, state.type, -1),
-- DEFINE_PROP_HEX32( "io_base", M48t59SysBusState, state.io_base, 0),
-+ DEFINE_PROP_UINT32("size", m48t59_t, size, -1),
-+ DEFINE_PROP_UINT32("type", m48t59_t, type, -1),
-+ DEFINE_PROP_HEX32( "io_base", m48t59_t, io_base, 0),
- DEFINE_PROP_END_OF_LIST(),
- }
- };
-diff --git a/hw/ppc_prep.c b/hw/ppc_prep.c
-index eb758f2..08db51b 100644
---- a/hw/ppc_prep.c
-+++ b/hw/ppc_prep.c
-@@ -73,7 +73,7 @@ qemu_log_mask(CPU_LOG_IOPORT, fmt, ## __VA_ARGS__)
- /* Constants for devices init */
- static const int ide_iobase[2] = { 0x1f0, 0x170 };
- static const int ide_iobase2[2] = { 0x3f6, 0x376 };
--static const int ide_irq[2] = { 13, 13 };
-+static const int ide_irq[2] = { 13, 14 };
-
- #define NE2000_NB_MAX 6
-
-@@ -620,9 +620,6 @@ static void ppc_prep_init (ram_addr_t ram_size,
- if (filename) {
- qemu_free(filename);
- }
-- if (env->nip < 0xFFF80000 && bios_size < 0x00100000) {
-- hw_error("PowerPC 601 / 620 / 970 need a 1MB BIOS\n");
-- }
-
- if (linux_boot) {
- kernel_base = KERNEL_LOAD_ADDR;
-diff --git a/target-ppc/op_helper.c b/target-ppc/op_helper.c
-index e3bd29c..1cb2e07 100644
---- a/target-ppc/op_helper.c
-+++ b/target-ppc/op_helper.c
-@@ -1646,20 +1646,20 @@ static inline void do_rfi(target_ulong nip, target_ulong msr,
- void helper_rfi (void)
- {
- do_rfi(env->spr[SPR_SRR0], env->spr[SPR_SRR1],
-- ~((target_ulong)0x0), 1);
-+ ~((target_ulong)0xFFFF0000), 1);
- }
-
- #if defined(TARGET_PPC64)
- void helper_rfid (void)
- {
- do_rfi(env->spr[SPR_SRR0], env->spr[SPR_SRR1],
-- ~((target_ulong)0x0), 0);
-+ ~((target_ulong)0xFFFF0000), 0);
- }
-
- void helper_hrfid (void)
- {
- do_rfi(env->spr[SPR_HSRR0], env->spr[SPR_HSRR1],
-- ~((target_ulong)0x0), 0);
-+ ~((target_ulong)0xFFFF0000), 0);
- }
- #endif
- #endif
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/qemu-vmware-vga-depth.patch b/meta/recipes-devtools/qemu/qemu-0.12.4/qemu-vmware-vga-depth.patch
deleted file mode 100644
index 43071868f3..0000000000
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/qemu-vmware-vga-depth.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-# fix VMware VGA driver depth calculation error, which may cause segmentation fault
-#
-# ktian1, 06/29/2010
-diff --git a/console.h b/console.h
-index dfc8ae4..05fbf17 100644
---- a/console.h
-+++ b/console.h
-@@ -122,6 +122,12 @@ struct DisplayAllocator {
- void (*free_displaysurface)(DisplaySurface *surface);
- };
-
-+struct DisplayPostCallback {
-+ void (*postcall) (void *);
-+ void *parm;
-+ struct DisplayPostCallback *next;
-+};
-+
- struct DisplayState {
- struct DisplaySurface *surface;
- void *opaque;
-@@ -129,6 +135,7 @@ struct DisplayState {
-
- struct DisplayAllocator* allocator;
- struct DisplayChangeListener* listeners;
-+ struct DisplayPostCallback* postcalls;
-
- void (*mouse_set)(int x, int y, int on);
- void (*cursor_define)(int width, int height, int bpp, int hot_x, int hot_y,
-@@ -185,6 +192,12 @@ static inline void register_displaychangelistener(DisplayState *ds, DisplayChang
- ds->listeners = dcl;
- }
-
-+static inline void register_displaypostcallback(DisplayState *ds, DisplayPostCallback *dpc)
-+{
-+ dpc->next = ds->postcalls;
-+ ds->postcalls = dpc;
-+}
-+
- static inline void dpy_update(DisplayState *s, int x, int y, int w, int h)
- {
- struct DisplayChangeListener *dcl = s->listeners;
-diff --git a/hw/vmware_vga.c b/hw/vmware_vga.c
-index 01bb85b..d73cca6 100644
---- a/hw/vmware_vga.c
-+++ b/hw/vmware_vga.c
-@@ -927,8 +927,9 @@ static void vmsvga_update_display(void *opaque)
- }
- }
-
--static void vmsvga_reset(struct vmsvga_state_s *s)
-+static void vmsvga_reset(void *parm)
- {
-+ struct vmsvga_state_s *s = (struct vmsvga_state_s *)parm;
- s->index = 0;
- s->enable = 0;
- s->config = 0;
-@@ -1133,6 +1134,8 @@ static const VMStateDescription vmstate_vmware_vga = {
-
- static void vmsvga_init(struct vmsvga_state_s *s, int vga_ram_size)
- {
-+ DisplayPostCallback *dpc;
-+
- s->scratch_size = SVGA_SCRATCH_SIZE;
- s->scratch = qemu_malloc(s->scratch_size * 4);
-
-@@ -1160,7 +1163,10 @@ static void vmsvga_init(struct vmsvga_state_s *s, int vga_ram_size)
-
- rom_add_vga(VGABIOS_FILENAME);
-
-- vmsvga_reset(s);
-+ dpc = qemu_mallocz(sizeof(DisplayPostCallback));
-+ dpc->postcall = vmsvga_reset;
-+ dpc->parm = s;
-+ register_displaypostcallback(s->vga.ds, dpc);
- }
-
- static void pci_vmsvga_map_ioport(PCIDevice *pci_dev, int region_num,
-diff --git a/qemu-common.h b/qemu-common.h
-index a23afbc..19f107a 100644
---- a/qemu-common.h
-+++ b/qemu-common.h
-@@ -198,6 +198,7 @@ typedef struct DisplayState DisplayState;
- typedef struct DisplayChangeListener DisplayChangeListener;
- typedef struct DisplaySurface DisplaySurface;
- typedef struct DisplayAllocator DisplayAllocator;
-+typedef struct DisplayPostCallback DisplayPostCallback;
- typedef struct PixelFormat PixelFormat;
- typedef struct TextConsole TextConsole;
- typedef TextConsole QEMUConsole;
-diff --git a/vl.c b/vl.c
-index 39182ea..9a3e9fd 100644
---- a/vl.c
-+++ b/vl.c
-@@ -4863,6 +4863,7 @@ int main(int argc, char **argv, char **envp)
- char boot_devices[33] = "cad"; /* default to HD->floppy->CD-ROM */
- DisplayState *ds;
- DisplayChangeListener *dcl;
-+ DisplayPostCallback *dpc;
- int cyls, heads, secs, translation;
- QemuOpts *hda_opts = NULL, *opts;
- int optind;
-@@ -6053,6 +6053,13 @@ int main(int argc, char **argv, char **envp)
- }
- dpy_resize(ds);
-
-+ dpc = ds->postcalls;
-+ while (dpc != NULL) {
-+ if (dpc->postcall != NULL)
-+ dpc->postcall(dpc->parm);
-+ dpc = dpc->next;
-+ }
-+
- dcl = ds->listeners;
- while (dcl != NULL) {
- if (dcl->dpy_refresh != NULL) {
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/vmware-vga-fifo-rewind.patch b/meta/recipes-devtools/qemu/qemu-0.12.4/vmware-vga-fifo-rewind.patch
deleted file mode 100644
index ef92f54c8b..0000000000
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/vmware-vga-fifo-rewind.patch
+++ /dev/null
@@ -1,198 +0,0 @@
-commit 4dedc07ffbbc66002e0fd2b97d5516fe6aca5eea
-Author: Andrzej Zaborowski <balrog@zabor.org>
-Date: Fri Sep 10 02:23:31 2010 +0200
-
- vmware_vga: Add checks to deal with non-atomic fifo writes.
-
- Janne Huttunen noticed that the FIFO end pointer is updated by the
- guest after writing each word to the FIFO, at least the X.org driver
- which is open does this. This means that there's no way for the
- host to know if the guest is in the middle a write operation. Qemu
- thus needs to read the beginning of the command up to when it's able
- to tell how many words are expected for the given command. It will
- abort reading and rewind the FIFO if there aren't enough words yet,
- this should be relatively rare but it is suspected to have been the
- cause of the occasional FIFO overrun that killed the display.
-
-Index: qemu-0.12.4/hw/vmware_vga.c
-===================================================================
---- qemu-0.12.4.orig/hw/vmware_vga.c 2010-09-30 23:04:34.000000000 +0800
-+++ qemu-0.12.4/hw/vmware_vga.c 2010-10-01 01:17:02.000000000 +0800
-@@ -491,27 +491,37 @@
-
- static uint32_t last_cmd;
-
--static inline int vmsvga_fifo_empty(struct vmsvga_state_s *s)
-+static inline int vmsvga_fifo_length(struct vmsvga_state_s *s)
- {
-+ int num;
- if (!s->config || !s->enable)
-- return 1;
-- return (s->cmd->next_cmd == s->cmd->stop);
-+ return 0;
-+ num = CMD(next_cmd) - CMD(stop);
-+ if (num < 0)
-+ num += CMD(max) - CMD(min);
-+ return num >> 2;
- }
-
- static inline uint32_t vmsvga_fifo_read_raw(struct vmsvga_state_s *s)
- {
-- int offset = CMD(stop);
-+ uint32_t cmd = s->fifo[CMD(stop) >> 2];
-
-+ /* If parameter is not available in FIFO, return 0 rather than random
-+ * value. Also update the stop as missing parameter will be inserted
-+ * soonly, else it will be treated as new command next time.
-+ * With rewinding in vmsvga_fifo_run, this unlikely happen.
-+ */
- if (unlikely(s->cmd->next_cmd == s->cmd->stop)) {
- fprintf(stderr, "%s: FIFO empty during CMD %i\n",
- __FUNCTION__, last_cmd);
-- return 0x00000000;
-+ cmd = 0;
- }
-
-- s->cmd->stop = cpu_to_le32(offset + 4);
-- if (offset + 4 >= CMD(max))
-+ s->cmd->stop = cpu_to_le32(CMD(stop) + 4);
-+ if (CMD(stop) >= CMD(max))
- s->cmd->stop = s->cmd->min;
-- return s->fifo[offset >> 2];
-+
-+ return cmd;
- }
-
- static inline uint32_t vmsvga_fifo_read(struct vmsvga_state_s *s)
-@@ -522,13 +532,23 @@
- static void vmsvga_fifo_run(struct vmsvga_state_s *s)
- {
- uint32_t colour;
-- int args = 0;
-+ int args, len;
- int x, y, dx, dy, width, height;
- struct vmsvga_cursor_definition_s cursor;
-- while (!vmsvga_fifo_empty(s))
-+ uint32_t cmd_start;
-+
-+ len = vmsvga_fifo_length(s);
-+ while (len > 0) {
-+ /* May need to go back to the start of the command if incomplete */
-+ cmd_start = s->cmd->stop;
-+
- switch (last_cmd = vmsvga_fifo_read(s)) {
- case SVGA_CMD_UPDATE:
- case SVGA_CMD_UPDATE_VERBOSE:
-+ len -= 5;
-+ if (len <0)
-+ goto rewind;
-+
- x = vmsvga_fifo_read(s);
- y = vmsvga_fifo_read(s);
- width = vmsvga_fifo_read(s);
-@@ -537,6 +557,10 @@
- break;
-
- case SVGA_CMD_RECT_FILL:
-+ len -= 6;
-+ if (len < 0)
-+ goto rewind;
-+
- colour = vmsvga_fifo_read(s);
- x = vmsvga_fifo_read(s);
- y = vmsvga_fifo_read(s);
-@@ -546,10 +570,15 @@
- vmsvga_fill_rect(s, colour, x, y, width, height);
- break;
- #else
-+ args = 0;
- goto badcmd;
- #endif
-
- case SVGA_CMD_RECT_COPY:
-+ len -= 7;
-+ if (len < 0)
-+ goto rewind;
-+
- x = vmsvga_fifo_read(s);
- y = vmsvga_fifo_read(s);
- dx = vmsvga_fifo_read(s);
-@@ -560,10 +589,15 @@
- vmsvga_copy_rect(s, x, y, dx, dy, width, height);
- break;
- #else
-+ args = 0;
- goto badcmd;
- #endif
-
- case SVGA_CMD_DEFINE_CURSOR:
-+ len -= 8;
-+ if (len < 0)
-+ goto rewind;
-+
- cursor.id = vmsvga_fifo_read(s);
- cursor.hot_x = vmsvga_fifo_read(s);
- cursor.hot_y = vmsvga_fifo_read(s);
-@@ -572,11 +606,14 @@
- vmsvga_fifo_read(s);
- cursor.bpp = vmsvga_fifo_read(s);
-
-+ args = SVGA_BITMAP_SIZE(x, y) + SVGA_PIXMAP_SIZE(x, y, cursor.bpp);
- if (SVGA_BITMAP_SIZE(x, y) > sizeof cursor.mask ||
-- SVGA_PIXMAP_SIZE(x, y, cursor.bpp) > sizeof cursor.image) {
-- args = SVGA_BITMAP_SIZE(x, y) + SVGA_PIXMAP_SIZE(x, y, cursor.bpp);
-+ SVGA_PIXMAP_SIZE(x, y, cursor.bpp) > sizeof cursor.image)
- goto badcmd;
-- }
-+
-+ len -= args;
-+ if (len < 0)
-+ goto rewind;
-
- for (args = 0; args < SVGA_BITMAP_SIZE(x, y); args ++)
- cursor.mask[args] = vmsvga_fifo_read_raw(s);
-@@ -595,6 +632,10 @@
- * for so we can avoid FIFO desync if driver uses them illegally.
- */
- case SVGA_CMD_DEFINE_ALPHA_CURSOR:
-+ len -= 6;
-+ if (len < 0)
-+ goto rewind;
-+
- vmsvga_fifo_read(s);
- vmsvga_fifo_read(s);
- vmsvga_fifo_read(s);
-@@ -609,6 +650,10 @@
- args = 7;
- goto badcmd;
- case SVGA_CMD_DRAW_GLYPH_CLIPPED:
-+ len -= 4;
-+ if (len < 0)
-+ goto rewind;
-+
- vmsvga_fifo_read(s);
- vmsvga_fifo_read(s);
- args = 7 + (vmsvga_fifo_read(s) >> 2);
-@@ -629,14 +674,22 @@
- break; /* Nop */
-
- default:
-+ args = 0;
- badcmd:
-+ len -= args;
-+ if (len < 0)
-+ goto rewind;
- while (args --)
- vmsvga_fifo_read(s);
- printf("%s: Unknown command 0x%02x in SVGA command FIFO\n",
- __FUNCTION__, last_cmd);
- break;
-+ rewind:
-+ s->cmd->stop = cmd_start;
-+ break;
- }
-
-+ }
- s->syncing = 0;
- }
-
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/workaround_bad_futex_headers.patch b/meta/recipes-devtools/qemu/qemu-0.12.4/workaround_bad_futex_headers.patch
deleted file mode 100644
index 7727a39f37..0000000000
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/workaround_bad_futex_headers.patch
+++ /dev/null
@@ -1,24 +0,0 @@
----
- linux-user/syscall.c | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-Index: qemu/linux-user/syscall.c
-===================================================================
---- qemu.orig/linux-user/syscall.c 2010-05-11 16:52:16.929785275 -0400
-+++ qemu/linux-user/syscall.c 2010-05-11 16:52:25.174783517 -0400
-@@ -94,6 +94,15 @@
- #define CLONE_NPTL_FLAGS2 0
- #endif
-
-+#define FUTEX_WAIT 0
-+#define FUTEX_WAKE 1
-+#define FUTEX_FD 2
-+#define FUTEX_REQUEUE 3
-+#define FUTEX_CMP_REQUEUE 4
-+#define FUTEX_WAKE_OP 5
-+#define FUTEX_LOCK_PI 6
-+#define FUTEX_UNLOCK_PI 7
-+
- //#define DEBUG
-
- //#include <linux/msdos_fs.h>
diff --git a/meta/recipes-devtools/qemu/qemu-0.13.0/enable-i386-linux-user.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/enable-i386-linux-user.patch
new file mode 100644
index 0000000000..95420ef99e
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/enable-i386-linux-user.patch
@@ -0,0 +1,53 @@
+Enable i386-linux-user
+
+Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
+
+Index: qemu-0.13.0/Makefile.target
+===================================================================
+--- qemu-0.13.0.orig/Makefile.target 2011-01-17 16:50:39.000000000 +0800
++++ qemu-0.13.0/Makefile.target 2011-01-17 16:50:41.000000000 +0800
+@@ -54,8 +54,13 @@
+ libobj-y += cpuid.o
+ endif
+ libobj-$(CONFIG_NEED_MMU) += mmu.o
++ifndef CONFIG_LINUX_USER
+ libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o
+ libobj-$(TARGET_X86_64) += helper_opengl.o opengl_exec.o
++else
++libobj-$(TARGET_I386) += dummygl.o
++libobj-$(TARGET_X86_64) += dummygl.o
++endif #CONFIG_LINUX_USER
+ libobj-$(TARGET_ARM) += dummygl.o
+ libobj-$(TARGET_MIPS) += dummygl.o
+ libobj-$(TARGET_PPC) += dummygl.o
+Index: qemu-0.13.0/target-i386/dummygl.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-i386/dummygl.c 2011-01-17 16:50:41.000000000 +0800
+@@ -0,0 +1,26 @@
++#include <string.h>
++#include <stdlib.h>
++#include <assert.h>
++#include <stdint.h>
++#include <X11/Xlib.h>
++#include <X11/Xutil.h>
++
++void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window)
++{
++
++}
++
++void opengl_process_enable(void)
++{
++
++}
++
++
++void mem_opengl(uint64_t ptr)
++{
++
++}
++
++void helper_opengl(void)
++{
++}
diff --git a/meta/recipes-devtools/qemu/qemu-0.13.0/fix-configure-checks.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/fix-configure-checks.patch
new file mode 100644
index 0000000000..46ddc6e206
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/fix-configure-checks.patch
@@ -0,0 +1,20 @@
+In native builds, qemu can fail to find zlib development files in the native
+sysroot and the build machine might not have zlib-dev packages installed.
+
+Add CFLAGS to qemu's CFLAGS which in the native case means BUILD_CFLAGS are
+added and files in the sysroot can be found.
+
+Patch from Paul Eggleton, Comments by RP 28/11/10
+
+Index: qemu-0.13.0/configure
+===================================================================
+--- qemu-0.13.0.orig/configure 2010-10-16 04:56:09.000000000 +0800
++++ qemu-0.13.0/configure 2011-01-15 18:19:41.000000000 +0800
+@@ -134,6 +134,7 @@
+ QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
+ QEMU_CFLAGS="-D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
+ QEMU_CFLAGS="-I. -I\$(SRC_PATH) $QEMU_CFLAGS"
++QEMU_CFLAGS="$QEMU_CFLAGS $CFLAGS"
+ LDFLAGS="-g $LDFLAGS"
+
+ gcc_flags="-Wold-style-declaration -Wold-style-definition -fstack-protector-all"
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/fix-dirent.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/fix-dirent.patch
index 8bbfa0e88e..8bbfa0e88e 100644
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/fix-dirent.patch
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/fix-dirent.patch
diff --git a/meta/recipes-devtools/qemu/qemu-0.13.0/fix-nogl.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/fix-nogl.patch
new file mode 100644
index 0000000000..fa518abbf7
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/fix-nogl.patch
@@ -0,0 +1,96 @@
+Index: qemu-0.13.0/Makefile.target
+===================================================================
+--- qemu-0.13.0.orig/Makefile.target 2011-01-17 16:53:08.000000000 +0800
++++ qemu-0.13.0/Makefile.target 2011-01-17 16:53:11.000000000 +0800
+@@ -55,6 +55,10 @@
+ endif
+ libobj-$(CONFIG_NEED_MMU) += mmu.o
+ libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o
++libobj-$(TARGET_X86_64) += helper_opengl.o opengl_exec.o
++libobj-$(TARGET_ARM) += dummygl.o
++libobj-$(TARGET_MIPS) += dummygl.o
++libobj-$(TARGET_PPC) += dummygl.o
+ libobj-$(TARGET_ARM) += neon_helper.o iwmmxt_helper.o
+
+ libobj-y += disas.o
+Index: qemu-0.13.0/target-arm/dummygl.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-arm/dummygl.c 2011-01-17 16:53:11.000000000 +0800
+@@ -0,0 +1,22 @@
++#include <string.h>
++#include <stdlib.h>
++#include <assert.h>
++#include <stdint.h>
++#include <X11/Xlib.h>
++#include <X11/Xutil.h>
++
++void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window)
++{
++
++}
++
++void opengl_process_enable(void)
++{
++
++}
++
++
++void mem_opengl(uint64_t ptr)
++{
++
++}
+Index: qemu-0.13.0/target-mips/dummygl.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-mips/dummygl.c 2011-01-17 16:53:11.000000000 +0800
+@@ -0,0 +1,22 @@
++#include <string.h>
++#include <stdlib.h>
++#include <assert.h>
++#include <stdint.h>
++#include <X11/Xlib.h>
++#include <X11/Xutil.h>
++
++void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window)
++{
++
++}
++
++void opengl_process_enable(void)
++{
++
++}
++
++
++void mem_opengl(uint64_t ptr)
++{
++
++}
+Index: qemu-0.13.0/target-ppc/dummygl.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-ppc/dummygl.c 2011-01-17 16:53:11.000000000 +0800
+@@ -0,0 +1,22 @@
++#include <string.h>
++#include <stdlib.h>
++#include <assert.h>
++#include <stdint.h>
++#include <X11/Xlib.h>
++#include <X11/Xutil.h>
++
++void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window)
++{
++
++}
++
++void opengl_process_enable(void)
++{
++
++}
++
++
++void mem_opengl(uint64_t ptr)
++{
++
++}
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/glflags.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/glflags.patch
index 0a27c2dee1..0a27c2dee1 100644
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/glflags.patch
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/glflags.patch
diff --git a/meta/recipes-devtools/qemu/qemu-0.13.0/init-info.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/init-info.patch
new file mode 100644
index 0000000000..77022ae541
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/init-info.patch
@@ -0,0 +1,16 @@
+# This is a workaround to the crashes seen on Ubuntu. Setting info to zero
+# makes info.info.x11.display zero and avoids the calls to
+# opengl_exec_set_parent_window, one of which is crashing.
+
+Index: qemu-0.13.0/ui/sdl.c
+===================================================================
+--- qemu-0.13.0.orig/ui/sdl.c 2011-01-15 17:40:59.000000000 +0800
++++ qemu-0.13.0/ui/sdl.c 2011-01-15 17:41:04.000000000 +0800
+@@ -857,6 +857,7 @@
+ vi = SDL_GetVideoInfo();
+ host_format = *(vi->vfmt);
+
++ bzero(&info, sizeof(info));
+ SDL_GetWMInfo(&info);
+ if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display)
+ opengl_exec_set_parent_window(info.info.x11.display,
diff --git a/meta/recipes-devtools/qemu/qemu-0.13.0/linker-flags.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/linker-flags.patch
new file mode 100644
index 0000000000..54c480f94b
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/linker-flags.patch
@@ -0,0 +1,22 @@
+Fedora 13 switched the default behaviour of the linker to no longer
+indirectly link to required libraries (i.e. dependencies of a library
+already linked to). Therefore we need to explicitly pass the depended on
+libraries into the linker for building to work on Fedora 13.
+
+More information is available on the Fedora Wiki:
+https://fedoraproject.org/wiki/UnderstandingDSOLinkChange
+
+JL - 15/06/10
+Index: qemu-0.13.0/Makefile.target
+===================================================================
+--- qemu-0.13.0.orig/Makefile.target 2011-01-15 17:30:45.000000000 +0800
++++ qemu-0.13.0/Makefile.target 2011-01-15 17:33:22.000000000 +0800
+@@ -193,7 +193,7 @@
+ obj-y += rwhandler.o
+ obj-$(CONFIG_KVM) += kvm.o kvm-all.o
+ obj-$(CONFIG_NO_KVM) += kvm-stub.o
+-LIBS+=-lz
++LIBS+=-lz -lX11 -ldl
+
+ QEMU_CFLAGS += $(VNC_TLS_CFLAGS)
+ QEMU_CFLAGS += $(VNC_SASL_CFLAGS)
diff --git a/meta/recipes-devtools/qemu/qemu-0.13.0/no-strip.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/no-strip.patch
new file mode 100644
index 0000000000..62cdec6109
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/no-strip.patch
@@ -0,0 +1,26 @@
+Index: qemu-0.13.0/Makefile
+===================================================================
+--- qemu-0.13.0.orig/Makefile 2011-01-17 16:41:59.000000000 +0800
++++ qemu-0.13.0/Makefile 2011-01-17 16:44:57.000000000 +0800
+@@ -185,7 +185,7 @@
+ install: all $(if $(BUILD_DOCS),install-doc) install-sysconfig
+ $(INSTALL_DIR) "$(DESTDIR)$(bindir)"
+ ifneq ($(TOOLS),)
+- $(INSTALL_PROG) $(STRIP_OPT) $(TOOLS) "$(DESTDIR)$(bindir)"
++ $(INSTALL_PROG) $(TOOLS) "$(DESTDIR)$(bindir)"
+ endif
+ ifneq ($(BLOBS),)
+ $(INSTALL_DIR) "$(DESTDIR)$(datadir)"
+Index: qemu-0.13.0/Makefile.target
+===================================================================
+--- qemu-0.13.0.orig/Makefile.target 2011-01-17 16:42:36.000000000 +0800
++++ qemu-0.13.0/Makefile.target 2011-01-17 16:44:57.000000000 +0800
+@@ -351,7 +351,7 @@
+
+ install: all
+ ifneq ($(PROGS),)
+- $(INSTALL) -m 755 $(STRIP_OPT) $(PROGS) "$(DESTDIR)$(bindir)"
++ $(INSTALL) -m 755 $(PROGS) "$(DESTDIR)$(bindir)"
+ endif
+
+ # Include automatically generated dependency files
diff --git a/meta/recipes-devtools/qemu/qemu-0.13.0/parallel_make.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/parallel_make.patch
new file mode 100644
index 0000000000..278b1a759d
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/parallel_make.patch
@@ -0,0 +1,34 @@
+Make -j(>=6) always fail as some job depends on config-host.h. Added following
+patch in upstream to resolve it.
+
+Could remove it in next upgrade if necessary.
+
+Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
+
+commit f0acb38015409024683911380daa94cc974e4e0e
+Author: Paul Brook <paul@codesourcery.com>
+Date: Fri Nov 26 18:46:03 2010 +0000
+
+ Add missing dependency.
+
+ Teach Makefile that cmd.o depends on a generated header (specifically
+ config-host.h).
+
+ Signed-off-by: Paul Brook <paul@codesourcery.com>
+ (cherry picked from commit 6e14404aab26f74a448747d1e793ac16bde8a92b)
+
+ Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
+
+Index: qemu-0.13.0/Makefile
+===================================================================
+--- qemu-0.13.0.orig/Makefile 2011-01-18 09:45:45.000000000 +0800
++++ qemu-0.13.0/Makefile 2011-01-18 09:45:45.000000000 +0800
+@@ -107,7 +107,7 @@
+ ######################################################################
+
+ qemu-img.o: qemu-img-cmds.h
+-qemu-img.o qemu-tool.o qemu-nbd.o qemu-io.o: $(GENERATED_HEADERS)
++qemu-img.o qemu-tool.o qemu-nbd.o qemu-io.o cmd.o: $(GENERATED_HEADERS)
+
+ qemu-img$(EXESUF): qemu-img.o qemu-tool.o qemu-error.o $(block-obj-y) $(qobject-obj-y)
+
diff --git a/meta/recipes-devtools/qemu/qemu-0.13.0/port92_fix.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/port92_fix.patch
new file mode 100644
index 0000000000..e101c687c0
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/port92_fix.patch
@@ -0,0 +1,196 @@
+With qemu 0.13.0, poky failed to start on ppc arch because both ppc_prep_init
+and i8042_initfn try to register to port 0x92 then cause conflict. Introduce
+this patch from upstream to fix it.
+
+Could remove it in future if necessary.
+
+Signed-off-by: Zhai, Edwin <edwin.zhai@intel.com>
+
+commit 4b78a802ffaabb325a0f7b773031da92d173bde1
+Author: Blue Swirl <blauwirbel@gmail.com>
+Date: Thu Jan 6 18:24:35 2011 +0000
+
+ pc: move port 92 stuff back to pc.c from pckbd.c
+
+ 956a3e6bb7386de48b642d4fee11f7f86a2fcf9a introduced a bug concerning
+ reset bit for port 92.
+
+ Since the keyboard output port and port 92 are not compatible anyway,
+ let's separate them.
+
+ Reported-by: Peter Lieven <pl@dlh.net>
+ Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
+ --
+ v2: added reset handler and VMState
+
+Index: qemu-0.13.0/hw/pc.c
+===================================================================
+--- qemu-0.13.0.orig/hw/pc.c 2010-10-16 04:56:09.000000000 +0800
++++ qemu-0.13.0/hw/pc.c 2011-01-20 20:37:37.000000000 +0800
+@@ -409,11 +409,91 @@
+ qemu_register_reset(pc_cmos_init_late, &arg);
+ }
+
++/* port 92 stuff: could be split off */
++typedef struct Port92State {
++ ISADevice dev;
++ uint8_t outport;
++ qemu_irq *a20_out;
++} Port92State;
++
++static void port92_write(void *opaque, uint32_t addr, uint32_t val)
++{
++ Port92State *s = opaque;
++
++ DPRINTF("port92: write 0x%02x\n", val);
++ s->outport = val;
++ qemu_set_irq(*s->a20_out, (val >> 1) & 1);
++ if (val & 1) {
++ qemu_system_reset_request();
++ }
++}
++
++static uint32_t port92_read(void *opaque, uint32_t addr)
++{
++ Port92State *s = opaque;
++ uint32_t ret;
++
++ ret = s->outport;
++ DPRINTF("port92: read 0x%02x\n", ret);
++ return ret;
++}
++
++static void port92_init(ISADevice *dev, qemu_irq *a20_out)
++{
++ Port92State *s = DO_UPCAST(Port92State, dev, dev);
++
++ s->a20_out = a20_out;
++}
++
++static const VMStateDescription vmstate_port92_isa = {
++ .name = "port92",
++ .version_id = 1,
++ .minimum_version_id = 1,
++ .minimum_version_id_old = 1,
++ .fields = (VMStateField []) {
++ VMSTATE_UINT8(outport, Port92State),
++ VMSTATE_END_OF_LIST()
++ }
++};
++
++static void port92_reset(DeviceState *d)
++{
++ Port92State *s = container_of(d, Port92State, dev.qdev);
++
++ s->outport &= ~1;
++}
++
++static int port92_initfn(ISADevice *dev)
++{
++ Port92State *s = DO_UPCAST(Port92State, dev, dev);
++
++ register_ioport_read(0x92, 1, 1, port92_read, s);
++ register_ioport_write(0x92, 1, 1, port92_write, s);
++ s->outport = 0;
++ return 0;
++}
++
++static ISADeviceInfo port92_info = {
++ .qdev.name = "port92",
++ .qdev.size = sizeof(Port92State),
++ .qdev.vmsd = &vmstate_port92_isa,
++ .qdev.no_user = 1,
++ .qdev.reset = port92_reset,
++ .init = port92_initfn,
++};
++
++static void port92_register(void)
++{
++ isa_qdev_register(&port92_info);
++}
++device_init(port92_register)
++
+ static void handle_a20_line_change(void *opaque, int irq, int level)
+ {
+ CPUState *cpu = opaque;
+
+ /* XXX: send to all CPUs ? */
++ /* XXX: add logic to handle multiple A20 line sources */
+ cpu_x86_set_a20(cpu, level);
+ }
+
+@@ -1017,7 +1097,7 @@
+ PITState *pit;
+ qemu_irq rtc_irq = NULL;
+ qemu_irq *a20_line;
+- ISADevice *i8042;
++ ISADevice *i8042, *port92;
+ qemu_irq *cpu_exit_irq;
+
+ register_ioport_write(0x80, 1, 1, ioport80_write, NULL);
+@@ -1051,10 +1131,12 @@
+ }
+ }
+
+- a20_line = qemu_allocate_irqs(handle_a20_line_change, first_cpu, 1);
++ a20_line = qemu_allocate_irqs(handle_a20_line_change, first_cpu, 2);
+ i8042 = isa_create_simple("i8042");
+- i8042_setup_a20_line(i8042, a20_line);
++ i8042_setup_a20_line(i8042, &a20_line[0]);
+ vmmouse_init(i8042);
++ port92 = isa_create_simple("port92");
++ port92_init(port92, &a20_line[1]);
+
+ cpu_exit_irq = qemu_allocate_irqs(cpu_request_exit, NULL, 1);
+ DMA_init(0, cpu_exit_irq);
+Index: qemu-0.13.0/hw/pckbd.c
+===================================================================
+--- qemu-0.13.0.orig/hw/pckbd.c 2010-10-16 04:56:09.000000000 +0800
++++ qemu-0.13.0/hw/pckbd.c 2011-01-20 20:33:44.000000000 +0800
+@@ -209,10 +209,8 @@
+ ps2_queue(s->kbd, b);
+ }
+
+-static void ioport92_write(void *opaque, uint32_t addr, uint32_t val)
++static void outport_write(KBDState *s, uint32_t val)
+ {
+- KBDState *s = opaque;
+-
+ DPRINTF("kbd: write outport=0x%02x\n", val);
+ s->outport = val;
+ if (s->a20_out) {
+@@ -223,16 +221,6 @@
+ }
+ }
+
+-static uint32_t ioport92_read(void *opaque, uint32_t addr)
+-{
+- KBDState *s = opaque;
+- uint32_t ret;
+-
+- ret = s->outport;
+- DPRINTF("kbd: read outport=0x%02x\n", ret);
+- return ret;
+-}
+-
+ static void kbd_write_command(void *opaque, uint32_t addr, uint32_t val)
+ {
+ KBDState *s = opaque;
+@@ -340,7 +328,7 @@
+ kbd_queue(s, val, 1);
+ break;
+ case KBD_CCMD_WRITE_OUTPORT:
+- ioport92_write(s, 0, val);
++ outport_write(s, val);
+ break;
+ case KBD_CCMD_WRITE_MOUSE:
+ ps2_write_mouse(s->mouse, val);
+@@ -469,8 +457,6 @@
+ register_ioport_write(0x60, 1, 1, kbd_write_data, s);
+ register_ioport_read(0x64, 1, 1, kbd_read_status, s);
+ register_ioport_write(0x64, 1, 1, kbd_write_command, s);
+- register_ioport_read(0x92, 1, 1, ioport92_read, s);
+- register_ioport_write(0x92, 1, 1, ioport92_write, s);
+
+ s->kbd = ps2_kbd_init(kbd_update_kbd_irq, s);
+ s->mouse = ps2_mouse_init(kbd_update_aux_irq, s);
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/powerpc_rom.bin b/meta/recipes-devtools/qemu/qemu-0.13.0/powerpc_rom.bin
index c4044296c5..c4044296c5 100644
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/powerpc_rom.bin
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/powerpc_rom.bin
Binary files differ
diff --git a/meta/recipes-devtools/qemu/qemu-0.13.0/qemu-git-qemugl-host.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/qemu-git-qemugl-host.patch
new file mode 100644
index 0000000000..085477c575
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/qemu-git-qemugl-host.patch
@@ -0,0 +1,34364 @@
+Index: qemu-0.13.0/Makefile.target
+===================================================================
+--- qemu-0.13.0.orig/Makefile.target 2011-01-17 16:41:59.000000000 +0800
++++ qemu-0.13.0/Makefile.target 2011-01-17 16:42:36.000000000 +0800
+@@ -54,6 +54,7 @@
+ libobj-y += cpuid.o
+ endif
+ libobj-$(CONFIG_NEED_MMU) += mmu.o
++libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o
+ libobj-$(TARGET_ARM) += neon_helper.o iwmmxt_helper.o
+
+ libobj-y += disas.o
+@@ -76,6 +77,21 @@
+ # cpu_signal_handler() in cpu-exec.c.
+ signal.o: QEMU_CFLAGS += $(HELPER_CFLAGS)
+
++parse_gl_h: parse_gl_h.c
++ $(HOST_CC) -g -o $@ $<
++server_stub.c: parse_gl_h
++ ./parse_gl_h
++gl_func.h: parse_gl_h
++ ./parse_gl_h
++GL_CFLAGS := -Wall -g -O2 -fno-strict-aliasing
++opengl_func.h: gl_func.h
++helper_opengl.o: helper_opengl.c opengl_func.h server_stub.c
++ $(CC) $(GL_CFLAGS) $(DEFINES) -c -o $@ $< -I.. -I. -I../fpu -I../target-i386 -DNEED_CPU_H
++gl_beginend.h: ../target-i386/beginend_funcs.sh
++ $< > $@
++opengl_exec.o : opengl_exec.c server_stub.c gl_func.h opengl_func.h gl_beginend.h
++ $(CC) $(GL_CFLAGS) $(DEFINES) -c -o $@ $< -I. -I../target-i386
++
+ #########################################################
+ # Linux user emulator target
+
+@@ -202,6 +218,10 @@
+ obj-i386-y += debugcon.o multiboot.o
+ obj-i386-y += pc_piix.o
+
++ifeq ($(TARGET_BASE_ARCH), i386)
++QEMU_CFLAGS += -DTARGET_OPENGL_OK
++endif
++
+ # shared objects
+ obj-ppc-y = ppc.o
+ obj-ppc-y += vga.o
+@@ -301,6 +321,8 @@
+
+ monitor.o: qemu-monitor.h
+
++LIBS += -lGL -lGLU
++
+ $(obj-y) $(obj-$(TARGET_BASE_ARCH)-y): $(GENERATED_HEADERS)
+
+ obj-y += $(addprefix ../, $(common-obj-y))
+Index: qemu-0.13.0/hw/pixel_ops.h
+===================================================================
+--- qemu-0.13.0.orig/hw/pixel_ops.h 2011-01-17 16:41:59.000000000 +0800
++++ qemu-0.13.0/hw/pixel_ops.h 2011-01-17 16:42:36.000000000 +0800
+@@ -4,6 +4,12 @@
+ return ((r >> 5) << 5) | ((g >> 5) << 2) | (b >> 6);
+ }
+
++static inline unsigned int rgb_to_pixel8bgr(unsigned int r, unsigned int g,
++ unsigned int b)
++{
++ return ((b >> 5) << 5) | ((g >> 5) << 2) | (r >> 6);
++}
++
+ static inline unsigned int rgb_to_pixel15(unsigned int r, unsigned int g,
+ unsigned int b)
+ {
+Index: qemu-0.13.0/hw/vmware_vga.c
+===================================================================
+--- qemu-0.13.0.orig/hw/vmware_vga.c 2011-01-17 16:41:59.000000000 +0800
++++ qemu-0.13.0/hw/vmware_vga.c 2011-01-17 16:42:36.000000000 +0800
+@@ -519,6 +519,8 @@
+
+ #define CMD(f) le32_to_cpu(s->cmd->f)
+
++static uint32_t last_cmd;
++
+ static inline int vmsvga_fifo_empty(struct vmsvga_state_s *s)
+ {
+ if (!s->config || !s->enable)
+@@ -528,11 +530,18 @@
+
+ static inline uint32_t vmsvga_fifo_read_raw(struct vmsvga_state_s *s)
+ {
+- uint32_t cmd = s->fifo[CMD(stop) >> 2];
+- s->cmd->stop = cpu_to_le32(CMD(stop) + 4);
+- if (CMD(stop) >= CMD(max))
++ int offset = CMD(stop);
++
++ if (unlikely(s->cmd->next_cmd == s->cmd->stop)) {
++ fprintf(stderr, "%s: FIFO empty during CMD %i\n",
++ __FUNCTION__, last_cmd);
++ return 0x00000000;
++ }
++
++ s->cmd->stop = cpu_to_le32(offset + 4);
++ if (offset + 4 >= CMD(max))
+ s->cmd->stop = s->cmd->min;
+- return cmd;
++ return s->fifo[offset >> 2];
+ }
+
+ static inline uint32_t vmsvga_fifo_read(struct vmsvga_state_s *s)
+@@ -542,12 +551,12 @@
+
+ static void vmsvga_fifo_run(struct vmsvga_state_s *s)
+ {
+- uint32_t cmd, colour;
++ uint32_t colour;
+ int args = 0;
+ int x, y, dx, dy, width, height;
+ struct vmsvga_cursor_definition_s cursor;
+ while (!vmsvga_fifo_empty(s))
+- switch (cmd = vmsvga_fifo_read(s)) {
++ switch (last_cmd = vmsvga_fifo_read(s)) {
+ case SVGA_CMD_UPDATE:
+ case SVGA_CMD_UPDATE_VERBOSE:
+ x = vmsvga_fifo_read(s);
+@@ -654,7 +663,7 @@
+ while (args --)
+ vmsvga_fifo_read(s);
+ printf("%s: Unknown command 0x%02x in SVGA command FIFO\n",
+- __FUNCTION__, cmd);
++ __FUNCTION__, last_cmd);
+ break;
+ }
+
+@@ -1173,6 +1182,12 @@
+
+ vga_init_vbe(&s->vga);
+
++#ifdef EMBED_STDVGA
++ s->vga.map_addr = VBE_DISPI_LFB_PHYSICAL_ADDRESS;
++ s->vga.map_end = VBE_DISPI_LFB_PHYSICAL_ADDRESS + vga_ram_size;
++ vga_dirty_log_start(s);
++#endif
++
+ rom_add_vga(VGABIOS_FILENAME);
+
+ vmsvga_reset(s);
+Index: qemu-0.13.0/qemu-char.c
+===================================================================
+--- qemu-0.13.0.orig/qemu-char.c 2011-01-17 16:41:59.000000000 +0800
++++ qemu-0.13.0/qemu-char.c 2011-01-17 16:42:36.000000000 +0800
+@@ -2278,6 +2278,69 @@
+ return NULL;
+ }
+
++#define TARGET_OPENGL_OK
++#if defined(TARGET_OPENGL_OK)
++static uint8_t buffer[32];
++static int buffer_len;
++static int hexdigit[128] = {
++ ['0'] = 0x0,
++ ['1'] = 0x1,
++ ['2'] = 0x2,
++ ['3'] = 0x3,
++ ['4'] = 0x4,
++ ['5'] = 0x5,
++ ['6'] = 0x6,
++ ['7'] = 0x7,
++ ['8'] = 0x8,
++ ['9'] = 0x9,
++ ['a'] = 0xa,
++ ['b'] = 0xb,
++ ['c'] = 0xc,
++ ['d'] = 0xd,
++ ['e'] = 0xe,
++ ['f'] = 0xf,
++};
++
++static int opengl_chr_write(CharDriverState *chr, const uint8_t *buf, int len)
++{
++ uint64_t ptr = 0;
++ int i;
++
++ if (memchr(buf, 'x', len))
++ opengl_process_enable();
++ return len;
++ memcpy(buffer + buffer_len, buf, len);
++ buffer_len += len;
++
++ if (buffer_len >= 16) {
++ for (i = 0; i < 16; i ++)
++ ptr = (ptr << 4) + hexdigit[buffer[i]];
++
++ buffer_len -= 16;
++ if (buffer_len)
++ memcpy(buffer, buffer + 16, buffer_len);
++
++ mem_opengl(ptr);
++ }
++
++ return len;
++}
++
++CharDriverState *qemu_chr_open_opengl(void)
++{
++ CharDriverState *chr = qemu_mallocz(sizeof(CharDriverState));
++
++ chr->opaque = chr;
++ chr->chr_write = opengl_chr_write;
++
++ qemu_chr_generic_open(chr);
++
++ return chr;
++}
++#else
++#define qemu_chr_open_opengl() 0
++#endif
++
+ QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename)
+ {
+ char host[65], port[33], width[8], height[8];
+@@ -2396,6 +2459,10 @@
+ qemu_opt_set(opts, "path", filename);
+ return opts;
+ }
++ if (!strcmp(filename, "opengl")){
++ qemu_opt_set(opts, "backend", "opengl");
++ return opts;
++ }
+
+ fail:
+ qemu_opts_del(opts);
+@@ -2411,6 +2478,7 @@
+ { .name = "udp", .open = qemu_chr_open_udp },
+ { .name = "msmouse", .open = qemu_chr_open_msmouse },
+ { .name = "vc", .open = text_console_init },
++ { .name = "opengl", .open = qemu_chr_open_opengl },
+ #ifdef _WIN32
+ { .name = "file", .open = qemu_chr_open_win_file_out },
+ { .name = "pipe", .open = qemu_chr_open_win_pipe },
+Index: qemu-0.13.0/slirp/udp.c
+===================================================================
+--- qemu-0.13.0.orig/slirp/udp.c 2011-01-17 16:41:59.000000000 +0800
++++ qemu-0.13.0/slirp/udp.c 2011-01-17 16:42:36.000000000 +0800
+@@ -40,6 +40,7 @@
+
+ #include <slirp.h>
+ #include "ip_icmp.h"
++#include "bswap.h"
+
+ static uint8_t udp_tos(struct socket *so);
+
+@@ -125,6 +126,11 @@
+ goto bad;
+ }
+
++ if (ntohs(uh->uh_dport) == 9999 && m->m_len - iphlen == 16) {
++ mem_opengl(le64_to_cpup((uint64_t *) (m->m_data + iphlen + 8)));
++ goto bad;
++ }
++
+ if (slirp->restricted) {
+ goto bad;
+ }
+Index: qemu-0.13.0/sysemu.h
+===================================================================
+--- qemu-0.13.0.orig/sysemu.h 2011-01-17 16:41:59.000000000 +0800
++++ qemu-0.13.0/sysemu.h 2011-01-17 16:42:36.000000000 +0800
+@@ -133,6 +133,7 @@
+ extern int old_param;
+ extern int boot_menu;
+ extern QEMUClock *rtc_clock;
++extern int force_pointer;
+
+ #define MAX_NODES 64
+ extern int nb_numa_nodes;
+Index: qemu-0.13.0/target-i386/beginend_funcs.sh
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-i386/beginend_funcs.sh 2011-01-17 16:42:36.000000000 +0800
+@@ -0,0 +1,23 @@
++#! /bin/sh
++# Copyright 2008 (C) Intel Corporation
++#
++# echo names of functions that are legal between a glBegin and glEnd pair.
++echo -e MAGIC_MACRO\(glVertex{2,3,4}{s,i,f,d}{,v}\)\\n
++echo -e MAGIC_MACRO\(glTexCoord{1,2,3,4}{s,i,f,d}{,v}\)\\n
++echo -e MAGIC_MACRO\(glMultiTexCoord{1,2,3,4}{s,i,f,d}{,v}\)\\n
++echo -e MAGIC_MACRO\(glNormal3{b,s,i,f,d}{,v}\)\\n
++echo -e MAGIC_MACRO\(glFogCoord{f,d}{,v}\)\\n
++echo -e MAGIC_MACRO\(glColor{3,4}{b,s,i,f,d,ub,us,ui}{,v}\)\\n
++echo -e MAGIC_MACRO\(glSecondaryColor3{b,s,i,f,d,ub,us,ui}{,v}\)\\n
++echo -e MAGIC_MACRO\(glIndex{s,i,f,d,ub}{,v}\)\\n
++echo -e MAGIC_MACRO\(glVertexAttrib{1,2,3,4}{s,f,d}{,v}\)\\n
++echo -e MAGIC_MACRO\(glVertexAttrib4{b,i,ub,us,ui}v\)\\n
++echo -e MAGIC_MACRO\(glVertexAttrib4Nub\)\\n
++echo -e MAGIC_MACRO\(glVertexAttrib4N{b,s,i,ub,us,ui}v\)\\n
++echo -e MAGIC_MACRO\(glArrayElement\)\\n
++echo -e MAGIC_MACRO\(glEvalCoord{1,2}{f,d}{,v}\)\\n
++echo -e MAGIC_MACRO\(glEvalPoint{1,2}\)\\n
++echo -e MAGIC_MACRO\(glMaterial{i,f}{,v}\)\\n
++echo -e MAGIC_MACRO\(glCallList\)\\n
++echo -e MAGIC_MACRO\(glCallLists\)\\n
++echo -e MAGIC_MACRO\(glEdgeFlag{,v}\)\\n
+Index: qemu-0.13.0/target-i386/ghash.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-i386/ghash.c 2011-01-17 16:42:36.000000000 +0800
+@@ -0,0 +1,347 @@
++/* This is a modified and simplified version of original ghash.c */
++
++/* GLIB - Library of useful routines for C programming
++ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library 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
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ * Boston, MA 02111-1307, USA.
++ */
++
++/*
++ * Modified by the GLib Team and others 1997-2000. See the AUTHORS
++ * file for a list of people on the GLib Team. See the ChangeLog
++ * files for a list of changes. These files are distributed with
++ * GLib at ftp://ftp.gtk.org/pub/gtk/.
++ */
++
++
++#include <stdlib.h>
++
++#include "ghash.h"
++
++#define HASH_TABLE_MIN_SIZE 11
++#define HASH_TABLE_MAX_SIZE 13845163
++
++#define CLAMP(x, low, high) (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x)))
++
++
++typedef struct _SimpleHashNode SimpleHashNode;
++
++struct _SimpleHashNode
++{
++ int key;
++ void* value;
++ SimpleHashNode *next;
++};
++
++struct _SimpleHashTable
++{
++ int size;
++ int nnodes;
++ SimpleHashNode **nodes;
++ SimpleDestroyNotify value_destroy_func;
++};
++
++static const unsigned int simple_primes[] =
++{
++ 11,
++ 19,
++ 37,
++ 73,
++ 109,
++ 163,
++ 251,
++ 367,
++ 557,
++ 823,
++ 1237,
++ 1861,
++ 2777,
++ 4177,
++ 6247,
++ 9371,
++ 14057,
++ 21089,
++ 31627,
++ 47431,
++ 71143,
++ 106721,
++ 160073,
++ 240101,
++ 360163,
++ 540217,
++ 810343,
++ 1215497,
++ 1823231,
++ 2734867,
++ 4102283,
++ 6153409,
++ 9230113,
++ 13845163,
++};
++
++static const unsigned int simple_nprimes = sizeof (simple_primes) / sizeof (simple_primes[0]);
++
++unsigned int simple_spaced_primes_closest (unsigned int num)
++{
++ int i;
++
++ for (i = 0; i < simple_nprimes; i++)
++ if (simple_primes[i] > num)
++ return simple_primes[i];
++
++ return simple_primes[simple_nprimes - 1];
++}
++
++#define HASH_TABLE_RESIZE(hash_table) \
++ do { \
++ if ((hash_table->size >= 3 * hash_table->nnodes && \
++ hash_table->size > HASH_TABLE_MIN_SIZE) || \
++ (3 * hash_table->size <= hash_table->nnodes && \
++ hash_table->size < HASH_TABLE_MAX_SIZE)) \
++ simple_hash_table_resize (hash_table); \
++ } while(0)
++
++static void simple_hash_table_resize (SimpleHashTable *hash_table);
++static SimpleHashNode** simple_hash_table_lookup_node (SimpleHashTable *hash_table,
++ int key);
++static SimpleHashNode* simple_hash_node_new (int key,
++ void* value);
++static void simple_hash_nodes_destroy (SimpleHashNode *hash_node,
++ SimpleDestroyNotify value_destroy_func);
++
++
++#define alloc0(type, n) (type*)calloc(n, sizeof(type))
++
++SimpleHashTable*
++simple_hash_table_new (SimpleDestroyNotify value_destroy_func)
++{
++ SimpleHashTable *hash_table;
++
++ hash_table = alloc0(SimpleHashTable, 1);
++ hash_table->size = HASH_TABLE_MIN_SIZE;
++ hash_table->nnodes = 0;
++ hash_table->value_destroy_func = value_destroy_func;
++ hash_table->nodes = alloc0 (SimpleHashNode*, hash_table->size);
++
++ return hash_table;
++}
++
++SimpleHashTable* simple_hash_table_clone(SimpleHashTable *hash_table,
++ SimpleCloneValue clone_value_func)
++{
++ SimpleHashTable *hash_table_new;
++ SimpleHashNode *new_node;
++ SimpleHashNode *node;
++ int i;
++
++ hash_table_new = alloc0 (SimpleHashTable, 1);
++ hash_table_new->size = hash_table->size;
++ hash_table_new->nnodes = hash_table->nnodes;
++ hash_table_new->value_destroy_func = hash_table->value_destroy_func;
++ hash_table_new->nodes = alloc0 (SimpleHashNode*, hash_table_new->size);
++ for (i = 0; i < hash_table->size; i++)
++ {
++ node = hash_table->nodes[i];
++ while(node)
++ {
++ SimpleHashNode *next = hash_table_new->nodes[i];
++ new_node = simple_hash_node_new(node->key,
++ (clone_value_func)? clone_value_func(node->value) : node->value);
++ new_node->next = next;
++ hash_table_new->nodes[i] = new_node;
++ node = node->next;
++ }
++ }
++ return hash_table_new;
++}
++
++void
++simple_hash_table_destroy (SimpleHashTable *hash_table)
++{
++ int i;
++
++ for (i = 0; i < hash_table->size; i++)
++ {
++ simple_hash_nodes_destroy (hash_table->nodes[i],
++ hash_table->value_destroy_func);
++ hash_table->nodes[i] = NULL;
++ }
++ free (hash_table->nodes);
++ free (hash_table);
++}
++
++static inline SimpleHashNode**
++simple_hash_table_lookup_node (SimpleHashTable *hash_table,
++ int key)
++{
++ SimpleHashNode **node;
++
++ node = &hash_table->nodes[(unsigned int)key % hash_table->size];
++ while (*node && (*node)->key != key)
++ node = &(*node)->next;
++
++ return node;
++}
++
++void*
++simple_hash_table_lookup (SimpleHashTable *hash_table, int key)
++{
++ SimpleHashNode *node;
++
++ node = *simple_hash_table_lookup_node (hash_table, key);
++
++ return node ? node->value : NULL;
++}
++
++void**
++simple_hash_table_lookup_pointer (SimpleHashTable *hash_table, int key)
++{
++ SimpleHashNode *node;
++
++ node = *simple_hash_table_lookup_node (hash_table, key);
++
++ return node ? &node->value : NULL;
++}
++
++
++void
++simple_hash_table_insert (SimpleHashTable *hash_table,
++ int key,
++ void* value)
++{
++ SimpleHashNode **node;
++
++ node = simple_hash_table_lookup_node (hash_table, key);
++
++ if (*node)
++ {
++ /* do not reset node->key in this place, keeping
++ * the old key is the intended behaviour.
++ * simple_hash_table_replace() can be used instead.
++ */
++ if (hash_table->value_destroy_func)
++ hash_table->value_destroy_func ((*node)->value);
++
++ (*node)->value = value;
++ }
++ else
++ {
++ *node = simple_hash_node_new (key, value);
++ hash_table->nnodes++;
++ HASH_TABLE_RESIZE (hash_table);
++ }
++}
++int
++simple_hash_table_remove (SimpleHashTable *hash_table,
++ int key)
++{
++ SimpleHashNode **node, *dest;
++
++ node = simple_hash_table_lookup_node (hash_table, key);
++ if (*node)
++ {
++ dest = *node;
++ (*node) = dest->next;
++ if (hash_table->value_destroy_func)
++ hash_table->value_destroy_func (dest->value);
++ free (dest);
++ hash_table->nnodes--;
++
++ HASH_TABLE_RESIZE (hash_table);
++
++ return 1;
++ }
++
++ return 0;
++}
++
++
++void
++simple_hash_table_foreach (SimpleHashTable *hash_table,
++ SimpleHFunc func,
++ void* user_data)
++{
++ SimpleHashNode *node;
++ int i;
++
++ for (i = 0; i < hash_table->size; i++)
++ for (node = hash_table->nodes[i]; node; node = node->next)
++ (* func) (node->key, node->value, user_data);
++}
++
++unsigned int
++simple_hash_table_size (SimpleHashTable *hash_table)
++{
++ return hash_table->nnodes;
++}
++
++static void
++simple_hash_table_resize (SimpleHashTable *hash_table)
++{
++ SimpleHashNode **new_nodes;
++ SimpleHashNode *node;
++ SimpleHashNode *next;
++ unsigned int hash_val;
++ int new_size;
++ int i;
++
++ new_size = simple_spaced_primes_closest (hash_table->nnodes);
++ new_size = CLAMP (new_size, HASH_TABLE_MIN_SIZE, HASH_TABLE_MAX_SIZE);
++
++ new_nodes = alloc0 (SimpleHashNode*, new_size);
++
++ for (i = 0; i < hash_table->size; i++)
++ for (node = hash_table->nodes[i]; node; node = next)
++ {
++ next = node->next;
++
++ hash_val = (unsigned int)(node->key) % new_size;
++
++ node->next = new_nodes[hash_val];
++ new_nodes[hash_val] = node;
++ }
++
++ free (hash_table->nodes);
++ hash_table->nodes = new_nodes;
++ hash_table->size = new_size;
++}
++
++static SimpleHashNode*
++simple_hash_node_new (int key,
++ void* value)
++{
++ SimpleHashNode *hash_node = alloc0 (SimpleHashNode, 1);
++
++ hash_node->key = key;
++ hash_node->value = value;
++ hash_node->next = NULL;
++
++ return hash_node;
++}
++
++static void
++simple_hash_nodes_destroy (SimpleHashNode *hash_node,
++ SimpleDestroyNotify value_destroy_func)
++{
++ while (hash_node)
++ {
++ SimpleHashNode *next = hash_node->next;
++ if (value_destroy_func)
++ value_destroy_func (hash_node->value);
++ free (hash_node);
++ hash_node = next;
++ }
++}
+Index: qemu-0.13.0/target-i386/ghash.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-i386/ghash.h 2011-01-17 16:42:36.000000000 +0800
+@@ -0,0 +1,59 @@
++/* This is a modified and simplified version of original ghash.h */
++
++
++/* GLIB - Library of useful routines for C programming
++ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library 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
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ * Boston, MA 02111-1307, USA.
++ */
++
++/*
++ * Modified by the GLib Team and others 1997-2000. See the AUTHORS
++ * file for a list of people on the GLib Team. See the ChangeLog
++ * files for a list of changes. These files are distributed with
++ * GLib at ftp://ftp.gtk.org/pub/gtk/.
++ */
++
++#ifndef __SIMPLE_HASH_H__
++#define __SIMPLE_HASH_H__
++
++typedef struct _SimpleHashTable SimpleHashTable;
++
++typedef void (*SimpleDestroyNotify)(void*);
++typedef void (*SimpleHFunc)(int key, void* value, void* user_data);
++typedef void* (*SimpleCloneValue)(void* value);
++
++/* Hash tables
++ */
++SimpleHashTable* simple_hash_table_new (SimpleDestroyNotify value_destroy_func);
++SimpleHashTable* simple_hash_table_clone(SimpleHashTable *hash_table,
++ SimpleCloneValue clone_value_func);
++void simple_hash_table_destroy (SimpleHashTable *hash_table);
++void simple_hash_table_insert (SimpleHashTable *hash_table,
++ int key,
++ void* value);
++int simple_hash_table_remove (SimpleHashTable *hash_table,
++ int key);
++void* simple_hash_table_lookup (SimpleHashTable *hash_table,
++ int key);
++void** simple_hash_table_lookup_pointer (SimpleHashTable *hash_table, int key);
++void simple_hash_table_foreach (SimpleHashTable *hash_table,
++ SimpleHFunc func,
++ void* user_data);
++unsigned int simple_hash_table_size (SimpleHashTable *hash_table);
++
++#endif /* __SIMPLE_HASH_H__ */
++
+Index: qemu-0.13.0/target-i386/gl_func_perso.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-i386/gl_func_perso.h 2011-01-17 16:42:36.000000000 +0800
+@@ -0,0 +1,135 @@
++/*
++ * Hand-implemented GL/GLX API
++ *
++ * Copyright (c) 2006,2007 Even Rouault
++ *
++ * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
++
++MAGIC_MACRO(_init32),
++MAGIC_MACRO(_init64),
++MAGIC_MACRO(_synchronize),
++MAGIC_MACRO(_serialized_calls),
++MAGIC_MACRO(_exit_process),
++MAGIC_MACRO(_moveResizeWindow),
++MAGIC_MACRO(_changeWindowState),
++MAGIC_MACRO(_send_cursor),
++
++/* When you add a glX call here, you HAVE TO update IS_GLX_CALL */
++MAGIC_MACRO(glXChooseVisual),
++MAGIC_MACRO(glXQueryExtensionsString),
++MAGIC_MACRO(glXQueryServerString),
++MAGIC_MACRO(glXCreateContext),
++MAGIC_MACRO(glXCopyContext),
++MAGIC_MACRO(glXDestroyContext),
++MAGIC_MACRO(glXGetClientString),
++MAGIC_MACRO(glXQueryVersion),
++MAGIC_MACRO(glXMakeCurrent),
++MAGIC_MACRO(glXGetConfig),
++MAGIC_MACRO(glXGetConfig_extended),
++MAGIC_MACRO(glXWaitGL),
++MAGIC_MACRO(glXWaitX),
++MAGIC_MACRO(glXGetFBConfigAttrib_extended),
++MAGIC_MACRO(glXChooseFBConfig),
++MAGIC_MACRO(glXChooseFBConfigSGIX),
++MAGIC_MACRO(glXGetFBConfigs),
++MAGIC_MACRO(glXCreatePbuffer),
++MAGIC_MACRO(glXCreateGLXPbufferSGIX),
++MAGIC_MACRO(glXDestroyPbuffer),
++MAGIC_MACRO(glXDestroyGLXPbufferSGIX),
++MAGIC_MACRO(glXCreateNewContext),
++MAGIC_MACRO(glXCreateContextWithConfigSGIX),
++MAGIC_MACRO(glXGetVisualFromFBConfig),
++MAGIC_MACRO(glXGetFBConfigAttrib),
++MAGIC_MACRO(glXGetFBConfigAttribSGIX),
++MAGIC_MACRO(glXQueryContext),
++MAGIC_MACRO(glXQueryDrawable),
++MAGIC_MACRO(glXQueryGLXPbufferSGIX),
++MAGIC_MACRO(glXUseXFont),
++MAGIC_MACRO(glXIsDirect),
++MAGIC_MACRO(glXGetProcAddress_fake),
++MAGIC_MACRO(glXGetProcAddress_global_fake),
++MAGIC_MACRO(glXSwapBuffers),
++MAGIC_MACRO(glXQueryExtension),
++MAGIC_MACRO(glXGetScreenDriver),
++MAGIC_MACRO(glXGetDriverConfig),
++MAGIC_MACRO(glXSwapIntervalSGI),
++MAGIC_MACRO(glXBindTexImageATI),
++MAGIC_MACRO(glXReleaseTexImageATI),
++MAGIC_MACRO(glXBindTexImageARB),
++MAGIC_MACRO(glXReleaseTexImageARB),
++
++MAGIC_MACRO(glGetString),
++
++MAGIC_MACRO(glShaderSourceARB_fake),
++MAGIC_MACRO(glShaderSource_fake),
++MAGIC_MACRO(glVertexPointer_fake),
++MAGIC_MACRO(glNormalPointer_fake),
++MAGIC_MACRO(glColorPointer_fake),
++MAGIC_MACRO(glSecondaryColorPointer_fake),
++MAGIC_MACRO(glIndexPointer_fake),
++MAGIC_MACRO(glTexCoordPointer_fake),
++MAGIC_MACRO(glEdgeFlagPointer_fake),
++MAGIC_MACRO(glVertexAttribPointerARB_fake),
++MAGIC_MACRO(glVertexAttribPointerNV_fake),
++MAGIC_MACRO(glWeightPointerARB_fake),
++MAGIC_MACRO(glMatrixIndexPointerARB_fake),
++MAGIC_MACRO(glFogCoordPointer_fake),
++MAGIC_MACRO(glVariantPointerEXT_fake),
++MAGIC_MACRO(glInterleavedArrays_fake),
++MAGIC_MACRO(glElementPointerATI_fake),
++MAGIC_MACRO(glTuxRacerDrawElements_fake),
++MAGIC_MACRO(glVertexAndNormalPointer_fake),
++MAGIC_MACRO(glTexCoordPointer01_fake),
++MAGIC_MACRO(glTexCoordPointer012_fake),
++MAGIC_MACRO(glVertexNormalPointerInterlaced_fake),
++MAGIC_MACRO(glVertexNormalColorPointerInterlaced_fake),
++MAGIC_MACRO(glVertexColorTexCoord0PointerInterlaced_fake),
++MAGIC_MACRO(glVertexNormalTexCoord0PointerInterlaced_fake),
++MAGIC_MACRO(glVertexNormalTexCoord01PointerInterlaced_fake),
++MAGIC_MACRO(glVertexNormalTexCoord012PointerInterlaced_fake),
++MAGIC_MACRO(glVertexNormalColorTexCoord0PointerInterlaced_fake),
++MAGIC_MACRO(glVertexNormalColorTexCoord01PointerInterlaced_fake),
++MAGIC_MACRO(glVertexNormalColorTexCoord012PointerInterlaced_fake),
++MAGIC_MACRO(glGenTextures_fake),
++MAGIC_MACRO(glGenBuffersARB_fake),
++MAGIC_MACRO(glGenLists_fake),
++MAGIC_MACRO(_glDrawElements_buffer),
++MAGIC_MACRO(_glDrawRangeElements_buffer),
++MAGIC_MACRO(_glMultiDrawElements_buffer),
++MAGIC_MACRO(_glVertexPointer_buffer),
++MAGIC_MACRO(_glNormalPointer_buffer),
++MAGIC_MACRO(_glColorPointer_buffer),
++MAGIC_MACRO(_glSecondaryColorPointer_buffer),
++MAGIC_MACRO(_glIndexPointer_buffer),
++MAGIC_MACRO(_glTexCoordPointer_buffer),
++MAGIC_MACRO(_glEdgeFlagPointer_buffer),
++MAGIC_MACRO(_glVertexAttribPointerARB_buffer),
++MAGIC_MACRO(_glWeightPointerARB_buffer),
++MAGIC_MACRO(_glMatrixIndexPointerARB_buffer),
++MAGIC_MACRO(_glFogCoordPointer_buffer),
++MAGIC_MACRO(_glVariantPointerEXT_buffer),
++MAGIC_MACRO(_glGetError_fake),
++MAGIC_MACRO(_glReadPixels_pbo),
++MAGIC_MACRO(_glDrawPixels_pbo),
++MAGIC_MACRO(_glMapBufferARB_fake),
++MAGIC_MACRO(_glSelectBuffer_fake),
++MAGIC_MACRO(_glGetSelectBuffer_fake),
++MAGIC_MACRO(_glFeedbackBuffer_fake),
++MAGIC_MACRO(_glGetFeedbackBuffer_fake),
+Index: qemu-0.13.0/target-i386/helper.c
+===================================================================
+--- qemu-0.13.0.orig/target-i386/helper.c 2011-01-17 16:41:59.000000000 +0800
++++ qemu-0.13.0/target-i386/helper.c 2011-01-17 16:42:36.000000000 +0800
+@@ -914,7 +914,7 @@
+ }
+
+ page_offset = (addr & TARGET_PAGE_MASK) & (page_size - 1);
+- paddr = (pte & TARGET_PAGE_MASK) + page_offset;
++ paddr = (pte & PHYS_ADDR_MASK) + page_offset;
+ return paddr;
+ }
+
+Index: qemu-0.13.0/target-i386/helper.h
+===================================================================
+--- qemu-0.13.0.orig/target-i386/helper.h 2011-01-17 16:41:59.000000000 +0800
++++ qemu-0.13.0/target-i386/helper.h 2011-01-17 16:42:36.000000000 +0800
+@@ -217,4 +217,6 @@
+ DEF_HELPER_2(rcrq, tl, tl, tl)
+ #endif
+
++DEF_HELPER_0(opengl, void)
++
+ #include "def-helper.h"
+Index: qemu-0.13.0/target-i386/helper_opengl.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-i386/helper_opengl.c 2011-01-17 16:44:27.000000000 +0800
+@@ -0,0 +1,1207 @@
++/*
++ * Host-side implementation of GL/GLX API
++ *
++ * Copyright (c) 2006,2007 Even Rouault
++ *
++ * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
++#define _XOPEN_SOURCE 600
++#include <string.h>
++#include <stdlib.h>
++#include <assert.h>
++
++#include <X11/Xlib.h>
++#include <X11/Xutil.h>
++
++#include "exec.h"
++
++#if defined(CONFIG_USER_ONLY)
++void helper_opengl(void)
++{
++ /* TODO */
++}
++#else
++
++#include "opengl_func.h"
++
++#define ENABLE_GL_LOG
++
++extern FILE *stderr;
++
++extern void init_process_tab(void);
++extern int do_function_call(int func_number, arg_t *args, char *ret_string);
++
++extern void sdl_set_opengl_window(int x, int y, int width, int height);
++
++static int last_process_id = 0;
++static int must_save = 0;
++
++static int allow_kernel = 0;
++
++static inline void *get_phys_mem_addr(const CPUState *env, target_ulong addr)
++{
++ int is_user, index;
++
++ index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1);
++ is_user = ((env->hflags & HF_CPL_MASK) == 3);
++ /* A sanity check for the int0x99 case */
++ if (unlikely(is_user == 0 && !allow_kernel)) {
++ fprintf(stderr, "not in userland !!!\n");
++ return NULL;
++ }
++ if (__builtin_expect
++ (env->tlb_table[is_user][index].addr_code !=
++ (addr & TARGET_PAGE_MASK), 0)) {
++ target_ulong ret = cpu_get_phys_page_debug((CPUState *) env, addr);
++
++ if (ret == -1) {
++ fprintf(stderr,
++ "cpu_get_phys_page_debug(env, " TARGET_FMT_lx ") == "
++ TARGET_FMT_lx "\n", addr, ret);
++ fprintf(stderr,
++ "not in phys mem " TARGET_FMT_lx "(" TARGET_FMT_lx " "
++ TARGET_FMT_lx ")\n", addr,
++ env->tlb_table[is_user][index].addr_code,
++ addr & TARGET_PAGE_MASK);
++ fprintf(stderr, "cpu_x86_handle_mmu_fault = %d\n",
++ cpu_x86_handle_mmu_fault((CPUState *) env, addr, 0, 1, 1));
++ return NULL;
++ } else {
++ if (ret + TARGET_PAGE_SIZE <= ram_bytes_total()) {
++ return qemu_get_ram_ptr(ret +
++ (((target_ulong) addr) & (TARGET_PAGE_SIZE - 1)));
++ } else {
++ fprintf(stderr,
++ "cpu_get_phys_page_debug(env, " TARGET_FMT_lx ") == "
++ TARGET_FMT_lx "\n", addr, ret);
++ fprintf(stderr,
++ "ret=" TARGET_FMT_lx " last_ram_offset= " TARGET_FMT_lx
++ "\n", ret, (target_ulong) ram_bytes_total());
++ return NULL;
++ }
++ }
++ } else
++ return (void *) (addr + env->tlb_table[is_user][index].addend);
++}
++
++#ifndef MIN
++#define MIN(a, b) (((a) < (b)) ? (a) : (b))
++#endif
++
++enum {
++ NOT_MAPPED,
++ MAPPED_CONTIGUOUS,
++ MAPPED_NOT_CONTIGUOUS
++};
++
++#define TARGET_ADDR_LOW_ALIGN(x) ((target_ulong)(x) & ~(TARGET_PAGE_SIZE - 1))
++
++/* Return NOT_MAPPED if a page is not mapped into target physical memory */
++/* MAPPED_CONTIGUOUS if all pages are mapped into target physical memory and contiguous */
++/* MAPPED_NOT_CONTIGUOUS if all pages are mapped into target physical memory but not contiguous */
++static int get_target_mem_state(const CPUState *env,
++ target_ulong target_addr, int len)
++{
++ target_ulong aligned_target_addr = TARGET_ADDR_LOW_ALIGN(target_addr);
++ int to_end_page =
++ (long) aligned_target_addr + TARGET_PAGE_SIZE - (long) target_addr;
++ int ret = MAPPED_CONTIGUOUS;
++
++ if (aligned_target_addr != target_addr) {
++ void *phys_addr = get_phys_mem_addr(env, aligned_target_addr);
++ void *last_phys_addr = phys_addr;
++
++ if (phys_addr == 0) {
++ return NOT_MAPPED;
++ }
++ if (len > to_end_page) {
++ len -= to_end_page;
++ aligned_target_addr += TARGET_PAGE_SIZE;
++ int i;
++
++ for (i = 0; i < len; i += TARGET_PAGE_SIZE) {
++ void *phys_addr =
++ get_phys_mem_addr(env, aligned_target_addr + i);
++ if (phys_addr == 0) {
++ return NOT_MAPPED;
++ }
++ if (phys_addr != last_phys_addr + TARGET_PAGE_SIZE)
++ ret = MAPPED_NOT_CONTIGUOUS;
++ last_phys_addr = phys_addr;
++ }
++ }
++ } else {
++ void *last_phys_addr = NULL;
++ int i;
++
++ for (i = 0; i < len; i += TARGET_PAGE_SIZE) {
++ void *phys_addr = get_phys_mem_addr(env, target_addr + i);
++
++ if (phys_addr == 0) {
++ return NOT_MAPPED;
++ }
++ if (i != 0 && phys_addr != last_phys_addr + TARGET_PAGE_SIZE)
++ ret = MAPPED_NOT_CONTIGUOUS;
++ last_phys_addr = phys_addr;
++ }
++ }
++ return ret;
++}
++
++/* copy len bytes from host memory at addr host_addr to target memory at logical addr target_addr */
++/* Returns 1 if successfull, 0 if some target pages are not mapped into target physical memory */
++static int memcpy_host_to_target(const CPUState *env,
++ target_ulong target_addr,
++ const void *host_addr, int len)
++{
++ int i;
++ target_ulong aligned_target_addr = TARGET_ADDR_LOW_ALIGN(target_addr);
++ int to_end_page =
++ (long) aligned_target_addr + TARGET_PAGE_SIZE - (long) target_addr;
++ int ret = get_target_mem_state(env, target_addr, len);
++
++ if (ret == NOT_MAPPED) {
++ return 0;
++ }
++
++ if (ret == MAPPED_CONTIGUOUS) {
++ void *phys_addr = get_phys_mem_addr(env, target_addr);
++
++ memcpy(phys_addr, host_addr, len);
++ } else {
++ if (aligned_target_addr != target_addr) {
++ void *phys_addr = get_phys_mem_addr(env, target_addr);
++
++ memcpy(phys_addr, host_addr, MIN(len, to_end_page));
++ if (len <= to_end_page) {
++ return 1;
++ }
++ len -= to_end_page;
++ host_addr += to_end_page;
++ target_addr = aligned_target_addr + TARGET_PAGE_SIZE;
++ }
++ for (i = 0; i < len; i += TARGET_PAGE_SIZE) {
++ void *phys_addr = get_phys_mem_addr(env, target_addr + i);
++
++ memcpy(phys_addr, host_addr + i,
++ (i + TARGET_PAGE_SIZE <=
++ len) ? TARGET_PAGE_SIZE : len & (TARGET_PAGE_SIZE - 1));
++ }
++ }
++
++ return 1;
++}
++
++static int memcpy_target_to_host(const CPUState *env, void *host_addr,
++ target_ulong target_addr, int len)
++{
++ int i;
++ target_ulong aligned_target_addr = TARGET_ADDR_LOW_ALIGN(target_addr);
++ int to_end_page =
++ (long) aligned_target_addr + TARGET_PAGE_SIZE - (long) target_addr;
++ int ret = get_target_mem_state(env, target_addr, len);
++
++ if (ret == NOT_MAPPED) {
++ return 0;
++ }
++
++ if (ret == MAPPED_CONTIGUOUS) {
++ void *phys_addr = get_phys_mem_addr(env, target_addr);
++
++ memcpy(host_addr, phys_addr, len);
++ } else {
++ if (aligned_target_addr != target_addr) {
++ void *phys_addr = get_phys_mem_addr(env, target_addr);
++
++ memcpy(host_addr, phys_addr, MIN(len, to_end_page));
++ if (len <= to_end_page)
++ return 1;
++
++ len -= to_end_page;
++ host_addr += to_end_page;
++ target_addr = aligned_target_addr + TARGET_PAGE_SIZE;
++ }
++ for (i = 0; i < len; i += TARGET_PAGE_SIZE) {
++ void *phys_addr = get_phys_mem_addr(env, target_addr + i);
++
++ memcpy(host_addr + i, phys_addr,
++ (i + TARGET_PAGE_SIZE <=
++ len) ? TARGET_PAGE_SIZE : len & (TARGET_PAGE_SIZE - 1));
++ }
++ }
++
++ return 1;
++}
++
++static int memcpy_target_to_host_1_1(const CPUState *env, void *host_addr,
++ target_ulong target_addr, int nb_args)
++{
++ return memcpy_target_to_host(env, host_addr, target_addr, nb_args * 8);
++}
++
++static int wordsize = 0;
++static int (*argcpy_target_to_host) (const CPUState *env, void *host_addr,
++ target_ulong target_addr, int nb_args) =
++ memcpy_target_to_host_1_1;
++
++void do_disconnect_current(void);
++void do_context_switch(Display *dpy, pid_t pid, int call);
++
++static void disconnect_current(void)
++{
++ last_process_id = 0;
++
++ return do_disconnect_current();
++}
++
++static int memcpy_target32_to_host(const CPUState *env, void *host_addr,
++ target_ulong target_addr, int nb_args)
++{
++ int ret;
++ uint32_t args_temp[nb_args], *src = args_temp;
++ arg_t *dest = host_addr;
++
++ ret = memcpy_target_to_host(env, args_temp, target_addr, nb_args * 4);
++ if (!ret)
++ return ret;
++
++ while (nb_args) {
++ /* TODO: endianness */
++ *dest = 0;
++ *(uint32_t *) (dest++) = *src++;
++ nb_args--;
++ }
++
++ return ret;
++}
++
++static int memcpy_target64_to_host(const CPUState *env, void *host_addr,
++ target_ulong target_addr, int nb_args)
++{
++ int ret;
++ uint64_t args_temp[nb_args], *src = args_temp;
++ arg_t *dest = host_addr;
++
++ ret = memcpy_target_to_host(env, args_temp, target_addr, nb_args * 8);
++ if (!ret)
++ return ret;
++
++ while (nb_args) {
++ /* TODO: endianness */
++ *dest = 0;
++ *(uint64_t *) (dest++) = *src++;
++ nb_args--;
++ }
++
++ return ret;
++}
++
++static int host_offset = 0;
++static void reset_host_offset()
++{
++ host_offset = 0;
++}
++
++/* Return a host pointer with the content of [target_addr, target_addr + len bytes[ */
++/* Do not free or modify */
++static const void *get_host_read_pointer(const CPUState *env,
++ const target_ulong target_addr, int len)
++{
++ int ret = get_target_mem_state(env, target_addr, len);
++
++ if (ret == NOT_MAPPED) {
++ return NULL;
++ } else if (ret == MAPPED_CONTIGUOUS) {
++ return get_phys_mem_addr(env, target_addr);
++ } else {
++ static int host_mem_size = 0;
++ static void *host_mem = NULL;
++ static void *ret;
++
++ if (host_mem_size < host_offset + len) {
++ host_mem_size = 2 * host_mem_size + host_offset + len;
++ host_mem = realloc(host_mem, host_mem_size);
++ }
++ ret = host_mem + host_offset;
++ assert(memcpy_target_to_host(env, ret, target_addr, len));
++ host_offset += len;
++ return ret;
++ }
++}
++
++int doing_opengl = 0;
++static int last_func_number = -1;
++static size_t(*my_strlen) (const char *) = NULL;
++
++#ifdef ENABLE_GL_LOG
++static FILE *f = NULL;
++static int logger_pid = 0;
++
++#define write_gl_debug_init() do { if (f == NULL) f = fopen("/tmp/debug_gl.bin", "wb"); } while(0)
++
++void write_gl_debug_cmd_int(int my_int)
++{
++ write_gl_debug_init();
++ fwrite(&my_int, sizeof(int), 1, f);
++ fflush(f);
++}
++
++void write_gl_debug_cmd_short(short my_int)
++{
++ write_gl_debug_init();
++ fwrite(&my_int, sizeof(short), 1, f);
++ fflush(f);
++}
++
++static void inline write_gl_debug_cmd_buffer_with_size(int size, void *buffer)
++{
++ write_gl_debug_init();
++ fwrite(&size, sizeof(int), 1, f);
++ if (size)
++ fwrite(buffer, size, 1, f);
++}
++
++static void inline write_gl_debug_cmd_buffer_without_size(
++ int size, void *buffer)
++{
++ write_gl_debug_init();
++ if (size)
++ fwrite(buffer, size, 1, f);
++}
++
++void write_gl_debug_end(void)
++{
++ write_gl_debug_init();
++ fclose(f);
++ f = NULL;
++ logger_pid = 0;
++ must_save = 0;
++}
++
++static inline int is_logging(int pid)
++{
++ return must_save && pid == logger_pid;
++}
++#endif
++
++#include <dlfcn.h>
++#include <signal.h>
++
++static void (*anticrash_handler) (void *) = NULL;
++static void (*show_stack_from_signal_handler) (int, int, int) = NULL;
++
++void my_anticrash_sigsegv_handler(int signum, siginfo_t *info, void *ptr)
++{
++ static int counter = 0;
++
++ counter++;
++
++ printf("oops\n");
++
++ /* if (show_stack_from_signal_handler && counter == 1) { struct ucontext*
++ * ctxt = (struct ucontext*)ptr; show_stack_from_signal_handler(10,
++ * ctxt->uc_mcontext.gregs[REG_EBP], ctxt->uc_mcontext.gregs[REG_ESP]); } */
++ anticrash_handler(ptr);
++
++ counter--;
++}
++
++static int decode_call_int(CPUState *env, int func_number, int pid,
++ target_ulong target_ret_string,
++ target_ulong in_args, target_ulong in_args_size)
++{
++ Signature *signature = (Signature *) tab_opengl_calls[func_number];
++ int ret_type = signature->ret_type;
++ /* int has_out_parameters = signature->has_out_parameters; */
++ int nb_args = signature->nb_args;
++ int *args_type = signature->args_type;
++ int i;
++ int ret;
++ int *args_size = NULL;
++ target_ulong saved_out_ptr[50];
++ static char *ret_string = NULL;
++ static arg_t args[50];
++ static Display *dpy = NULL;
++
++ if (dpy == NULL) {
++ void *handle = dlopen("libanticrash.so", RTLD_LAZY);
++
++ if (handle) {
++ anticrash_handler = dlsym(handle, "anticrash_handler");
++ if (anticrash_handler) {
++ fprintf(stderr, "anticrash handler enabled\n");
++ struct sigaction sigsegv_action;
++ struct sigaction old_sigsegv_action;
++
++ sigsegv_action.sa_sigaction = my_anticrash_sigsegv_handler;
++ sigemptyset(&(sigsegv_action.sa_mask));
++ sigsegv_action.sa_flags = SA_SIGINFO | SA_NODEFER;
++ sigaction(SIGSEGV, &sigsegv_action, &old_sigsegv_action);
++ }
++ }
++ handle = dlopen("libgetstack.so", RTLD_LAZY);
++ if (handle) {
++ show_stack_from_signal_handler =
++ dlsym(handle, "show_stack_from_signal_handler");
++ }
++
++ dpy = XOpenDisplay(NULL);
++ init_process_tab();
++ ret_string = malloc(32768);
++ my_strlen = strlen;
++ }
++
++ if (unlikely(last_func_number == _exit_process_func &&
++ func_number == _exit_process_func)) {
++ last_func_number = -1;
++ return 0;
++ }
++
++ if (last_process_id != pid) {
++ do_context_switch(dpy, pid, func_number);
++ last_process_id = pid;
++ }
++
++ if (unlikely(func_number == _exit_process_func))
++ last_process_id = 0;
++
++ if (!wordsize) {
++ if (func_number == _init32_func || func_number == _init64_func) {
++ if (func_number == _init32_func) {
++ wordsize = 32;
++ argcpy_target_to_host = memcpy_target32_to_host;
++ } else {
++ wordsize = 64;
++ argcpy_target_to_host = memcpy_target64_to_host;
++ }
++ } else
++ fprintf(stderr, "commands submitted before initialisation done\n");
++ }
++
++ reset_host_offset();
++
++ if (nb_args) {
++
++ if (argcpy_target_to_host(env, args, in_args, nb_args) == 0) {
++ fprintf(stderr, "call %s pid=%d\n",
++ tab_opengl_calls_name[func_number], pid);
++ fprintf(stderr, "cannot get call parameters\n");
++ disconnect_current();
++ return 0;
++ }
++
++ args_size =
++ (int *) get_host_read_pointer(env, in_args_size,
++ sizeof(int) * nb_args);
++ if (args_size == NULL) {
++ fprintf(stderr, "call %s pid=%d\n",
++ tab_opengl_calls_name[func_number], pid);
++ fprintf(stderr, "cannot get call parameters size\n");
++ disconnect_current();
++ return 0;
++ }
++ }
++
++ if (func_number == _serialized_calls_func) {
++ int command_buffer_size = args_size[0];
++ const void *command_buffer =
++ get_host_read_pointer(env, args[0], command_buffer_size);
++ int commmand_buffer_offset = 0;
++
++ args_size = NULL;
++#ifdef ENABLE_GL_LOG
++ if (is_logging(pid))
++ write_gl_debug_cmd_short(_serialized_calls_func);
++#endif
++
++ while (commmand_buffer_offset < command_buffer_size) {
++ func_number =
++ *(short *) (command_buffer + commmand_buffer_offset);
++ if (!(func_number >= 0 && func_number < GL_N_CALLS)) {
++ fprintf(stderr,
++ "func_number >= 0 && func_number < GL_N_CALLS failed at "
++ "commmand_buffer_offset=%d (command_buffer_size=%d)\n",
++ commmand_buffer_offset, command_buffer_size);
++ return 0;
++ }
++ commmand_buffer_offset += sizeof(short);
++#ifdef ENABLE_GL_LOG
++ if (is_logging(pid))
++ write_gl_debug_cmd_short(func_number);
++#endif
++
++ signature = (Signature *) tab_opengl_calls[func_number];
++ ret_type = signature->ret_type;
++ assert(ret_type == TYPE_NONE);
++ nb_args = signature->nb_args;
++ args_type = signature->args_type;
++
++ for (i = 0; i < nb_args; i++) {
++ switch (args_type[i]) {
++ case TYPE_UNSIGNED_INT:
++ case TYPE_INT:
++ case TYPE_UNSIGNED_CHAR:
++ case TYPE_CHAR:
++ case TYPE_UNSIGNED_SHORT:
++ case TYPE_SHORT:
++ case TYPE_FLOAT:
++ {
++ args[i] =
++ *(int *) (command_buffer +
++ commmand_buffer_offset);
++#ifdef ENABLE_GL_LOG
++ if (is_logging(pid))
++ write_gl_debug_cmd_int(args[i]);
++#endif
++ commmand_buffer_offset += sizeof(int);
++ break;
++ }
++
++ case TYPE_NULL_TERMINATED_STRING:
++ CASE_IN_UNKNOWN_SIZE_POINTERS:
++ {
++ int arg_size =
++ *(int *) (command_buffer +
++ commmand_buffer_offset);
++ commmand_buffer_offset += sizeof(int);
++
++ if (arg_size == 0) {
++ args[i] = 0;
++ } else {
++ args[i] =
++ (long) (command_buffer +
++ commmand_buffer_offset);
++ }
++
++ if (args[i] == 0) {
++ if (!IS_NULL_POINTER_OK_FOR_FUNC(func_number)) {
++ fprintf(stderr, "call %s arg %d pid=%d\n",
++ tab_opengl_calls_name[func_number], i,
++ pid);
++ disconnect_current();
++ return 0;
++ }
++ } else {
++ if (arg_size == 0) {
++ fprintf(stderr, "call %s arg %d pid=%d\n",
++ tab_opengl_calls_name[func_number], i,
++ pid);
++ fprintf(stderr, "args_size[i] == 0 !!\n");
++ disconnect_current();
++ return 0;
++ }
++ }
++#ifdef ENABLE_GL_LOG
++ if (is_logging(pid))
++ write_gl_debug_cmd_buffer_with_size(arg_size,
++ (void *)
++ args[i]);
++#endif
++ commmand_buffer_offset += arg_size;
++
++ break;
++ }
++
++ CASE_IN_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
++ {
++ int arg_size =
++ compute_arg_length(stderr, func_number, i, args);
++ args[i] =
++ (arg_size) ? (long) (command_buffer +
++ commmand_buffer_offset) : 0;
++#ifdef ENABLE_GL_LOG
++ if (is_logging(pid))
++ write_gl_debug_cmd_buffer_without_size(arg_size,
++ (void *)
++ args[i]);
++#endif
++ commmand_buffer_offset += arg_size;
++ break;
++ }
++
++ CASE_OUT_POINTERS:
++ {
++ fprintf(stderr,
++ "shouldn't happen TYPE_OUT_xxxx : call %s arg %d pid=%d\n",
++ tab_opengl_calls_name[func_number], i, pid);
++ disconnect_current();
++ return 0;
++ }
++
++ case TYPE_DOUBLE:
++ CASE_IN_KNOWN_SIZE_POINTERS:
++ args[i] =
++ (long) (command_buffer + commmand_buffer_offset);
++#ifdef ENABLE_GL_LOG
++ if (is_logging(pid))
++ write_gl_debug_cmd_buffer_without_size(
++ tab_args_type_length[args_type[i]],
++ (void *) args[i]);
++#endif
++ commmand_buffer_offset +=
++ tab_args_type_length[args_type[i]];
++ break;
++
++ case TYPE_IN_IGNORED_POINTER:
++ args[i] = 0;
++ break;
++
++ default:
++ fprintf(stderr,
++ "shouldn't happen : call %s arg %d pid=%d\n",
++ tab_opengl_calls_name[func_number], i, pid);
++ disconnect_current();
++ return 0;
++ }
++ }
++ do_function_call(func_number, args, ret_string);
++ }
++
++ ret = 0;
++ } else {
++#ifdef ENABLE_GL_LOG
++ if (is_logging(pid))
++ write_gl_debug_cmd_short(func_number);
++#endif
++
++ for (i = 0; i < nb_args; i++) {
++ switch (args_type[i]) {
++ case TYPE_UNSIGNED_INT:
++ case TYPE_INT:
++ case TYPE_UNSIGNED_CHAR:
++ case TYPE_CHAR:
++ case TYPE_UNSIGNED_SHORT:
++ case TYPE_SHORT:
++ case TYPE_FLOAT:
++#ifdef ENABLE_GL_LOG
++ if (is_logging(pid))
++ write_gl_debug_cmd_int(args[i]);
++#endif
++ break;
++
++ case TYPE_NULL_TERMINATED_STRING:
++ CASE_IN_UNKNOWN_SIZE_POINTERS:
++ if (args[i] == 0 && args_size[i] == 0) {
++ if (!IS_NULL_POINTER_OK_FOR_FUNC(func_number)) {
++ fprintf(stderr, "call %s arg %d pid=%d\n",
++ tab_opengl_calls_name[func_number], i, pid);
++ disconnect_current();
++ return 0;
++ }
++ } else if (args[i] == 0 && args_size[i] != 0) {
++ fprintf(stderr, "call %s arg %d pid=%d\n",
++ tab_opengl_calls_name[func_number], i, pid);
++ fprintf(stderr, "args[i] == 0 && args_size[i] != 0 !!\n");
++ disconnect_current();
++ return 0;
++ } else if (args[i] != 0 && args_size[i] == 0) {
++ fprintf(stderr, "call %s arg %d pid=%d\n",
++ tab_opengl_calls_name[func_number], i, pid);
++ fprintf(stderr, "args[i] != 0 && args_size[i] == 0 !!\n");
++ disconnect_current();
++ return 0;
++ }
++ if (args[i]) {
++ args[i] =
++ (arg_t) get_host_read_pointer(env, args[i],
++ args_size[i]);
++ if (args[i] == 0) {
++ fprintf(stderr, "call %s arg %d pid=%d\n",
++ tab_opengl_calls_name[func_number], i, pid);
++ fprintf(stderr, "can not get %d bytes\n",
++ args_size[i]);
++ disconnect_current();
++ return 0;
++ }
++ }
++#ifdef ENABLE_GL_LOG
++ if (is_logging(pid))
++ write_gl_debug_cmd_buffer_with_size(args_size[i],
++ (void *) args[i]);
++#endif
++ break;
++
++ CASE_IN_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
++ {
++ args_size[i] =
++ compute_arg_length(stderr, func_number, i, args);
++ args[i] = (args_size[i]) ? (arg_t)
++ get_host_read_pointer(env,
++ args[i], args_size [i]) : 0;
++ if (args[i] == 0 && args_size[i] != 0) {
++ fprintf(stderr, "call %s arg %d pid=%d\n",
++ tab_opengl_calls_name[func_number], i, pid);
++ fprintf(stderr, "can not get %d bytes\n",
++ args_size[i]);
++ disconnect_current();
++ return 0;
++ }
++#ifdef ENABLE_GL_LOG
++ if (is_logging(pid))
++ write_gl_debug_cmd_buffer_without_size(args_size[i],
++ (void *) args[i]);
++#endif
++ break;
++ }
++
++ CASE_OUT_POINTERS:
++ {
++ int mem_state;
++
++#ifdef ENABLE_GL_LOG
++ if (is_logging(pid))
++ switch (args_type[i]) {
++ CASE_OUT_UNKNOWN_SIZE_POINTERS:
++ write_gl_debug_cmd_int(args_size[i]);
++ break;
++
++ default:
++ break;
++ }
++#endif
++
++ if (func_number == glXQueryExtension_func && args[i] == 0) {
++ saved_out_ptr[i] = 0;
++ continue;
++ }
++ if (args[i] == 0 && args_size[i] == 0) {
++ if (!IS_NULL_POINTER_OK_FOR_FUNC(func_number)) {
++ fprintf(stderr, "call %s arg %d pid=%d\n",
++ tab_opengl_calls_name[func_number], i,
++ pid);
++ disconnect_current();
++ return 0;
++ }
++ fprintf(stderr, "call %s arg %d pid=%d\n",
++ tab_opengl_calls_name[func_number], i, pid);
++ disconnect_current();
++ return 0;
++ } else if (args[i] == 0 && args_size[i] != 0) {
++ fprintf(stderr, "call %s arg %d pid=%d\n",
++ tab_opengl_calls_name[func_number], i, pid);
++ fprintf(stderr,
++ "args[i] == 0 && args_size[i] != 0 !!\n");
++ disconnect_current();
++ return 0;
++ } else if (args[i] != 0 && args_size[i] == 0) {
++ fprintf(stderr, "call %s arg %d pid=%d\n",
++ tab_opengl_calls_name[func_number], i, pid);
++ fprintf(stderr,
++ "args[i] != 0 && args_size[i] == 0 !!\n");
++ disconnect_current();
++ return 0;
++ }
++ if (args[i]) {
++ mem_state =
++ get_target_mem_state(env, args[i], args_size[i]);
++ if (mem_state == NOT_MAPPED) {
++ fprintf(stderr,
++ "call %s arg %d pid=%d addr="
++ TARGET_FMT_lx " size=%d NOT_MAPPED\n",
++ tab_opengl_calls_name[func_number], i,
++ pid, args[i], args_size[i]);
++ disconnect_current();
++ return 0;
++ } else if (mem_state == MAPPED_CONTIGUOUS) {
++ saved_out_ptr[i] = 0;
++ args[i] = (arg_t) get_phys_mem_addr(env, args[i]);
++ } else {
++ saved_out_ptr[i] = args[i];
++ args[i] = (arg_t) malloc(args_size[i]);
++ }
++ } else {
++ saved_out_ptr[i] = 0;
++ }
++ break;
++ }
++
++ case TYPE_DOUBLE:
++ CASE_IN_KNOWN_SIZE_POINTERS:
++ if (args[i] == 0) {
++ fprintf(stderr, "call %s arg %d pid=%d\n",
++ tab_opengl_calls_name[func_number], i, pid);
++ fprintf(stderr, "can not get %d bytes\n",
++ tab_args_type_length[args_type[i]]);
++ disconnect_current();
++ return 0;
++ }
++ args[i] = (arg_t) get_host_read_pointer(env,
++ args[i], tab_args_type_length[args_type[i]]);
++ if (args[i] == 0) {
++ fprintf(stderr, "call %s arg %d pid=%d\n",
++ tab_opengl_calls_name[func_number], i, pid);
++ fprintf(stderr, "can not get %d bytes\n",
++ tab_args_type_length[args_type[i]]);
++ disconnect_current();
++ return 0;
++ }
++#ifdef ENABLE_GL_LOG
++ if (is_logging(pid))
++ write_gl_debug_cmd_buffer_without_size
++ (tab_args_type_length[args_type[i]],
++ (void *) args[i]);
++#endif
++ break;
++
++ case TYPE_IN_IGNORED_POINTER:
++ args[i] = 0;
++ break;
++
++ default:
++ fprintf(stderr, "shouldn't happen : call %s arg %d pid=%d\n",
++ tab_opengl_calls_name[func_number], i, pid);
++ disconnect_current();
++ return 0;
++ }
++ }
++
++ if (ret_type == TYPE_CONST_CHAR) {
++ ret_string[0] = 0;
++ }
++
++ if (func_number == _init32_func || func_number == _init64_func) {
++ if (func_number == _init32_func) {
++ if (wordsize != 32) {
++ fprintf(stderr,
++ "clients with different ABIs not supported\n");
++ exit(-1);
++ }
++ } else {
++ if (wordsize != 64) {
++ fprintf(stderr,
++ "clients with different ABIs not supported\n");
++ exit(-1);
++ }
++ }
++
++ if (must_save && args[0])
++ fprintf(stderr, "error: pid %i is already recording\n",
++ logger_pid);
++ else if (args[0]) {
++ logger_pid = pid;
++ must_save = 1;
++ }
++#ifdef USE_KQEMU
++ if (env->kqemu_enabled)
++ *(int *) args[1] = 2;
++ else
++#endif
++ *(int *) args[1] = 1;
++ ret = 0;
++ } else {
++ ret = do_function_call(func_number, args, ret_string);
++ }
++#ifdef ENABLE_GL_LOG
++ if (is_logging(pid) && func_number == glXGetVisualFromFBConfig_func)
++ write_gl_debug_cmd_int(ret);
++#endif
++ for (i = 0; i < nb_args; i++) {
++ switch (args_type[i]) {
++ CASE_OUT_POINTERS:
++ {
++ if (saved_out_ptr[i]) {
++ if (memcpy_host_to_target(env, saved_out_ptr[i],
++ (void *) args[i],
++ args_size[i]) == 0) {
++ fprintf(stderr, "could not copy out parameters "
++ "back to user space\n");
++ disconnect_current();
++ return 0;
++ }
++ free((void *) args[i]);
++ }
++ break;
++ }
++
++ default:
++ break;
++ }
++ }
++
++ if (ret_type == TYPE_CONST_CHAR)
++ if (target_ret_string) {
++ /* the my_strlen stuff is a hack to workaround a GCC bug if
++ * using directly strlen... */
++ if (memcpy_host_to_target(env, target_ret_string, ret_string,
++ my_strlen(ret_string) + 1) == 0) {
++ fprintf(stderr, "cannot copy out parameters "
++ "back to user space\n");
++ disconnect_current();
++ return 0;
++ }
++ }
++ }
++
++#ifdef ENABLE_GL_LOG
++ if (is_logging(pid) && func_number == _exit_process_func) {
++ write_gl_debug_end();
++ }
++#endif
++
++ return ret;
++}
++
++static int decode_call(CPUState *env, int func_number, int pid,
++ target_ulong target_ret_string, target_ulong in_args,
++ target_ulong in_args_size)
++{
++ if (!(func_number >= 0 && func_number < GL_N_CALLS)) {
++ fprintf(stderr,
++ "func_number >= 0 && func_number < GL_N_CALLS failed\n");
++ return 0;
++ }
++
++ return decode_call_int(env, func_number, pid,
++ target_ret_string, in_args, in_args_size);
++}
++
++#define env first_cpu
++
++void helper_opengl(void)
++{
++ doing_opengl = 1;
++ env->regs[R_EAX] =
++ decode_call(env, env->regs[R_EAX], env->regs[R_EBX], env->regs[R_ECX],
++ env->regs[R_EDX], env->regs[R_ESI]);
++ doing_opengl = 0;
++}
++
++void mem_opengl(uint64_t ptr)
++{
++ uint64_t *params = get_phys_mem_addr(env, ptr);
++ int ret;
++
++ /* Execute */
++ doing_opengl = 1;
++ ret = decode_call(env, le64_to_cpu(params[0]),
++ le64_to_cpu(params[1]), le64_to_cpu(params[2]),
++ le64_to_cpu(params[3]), le64_to_cpu(params[4]));
++ doing_opengl = 0;
++
++ params[0] = cpu_to_le64(ret);
++ params[5] = 0;
++}
++
++#define THREADINFO_TASK_OFFSET 0x0 //// 0x0
++#define THREADSTRUCT_IOPL_OFFSET 0x78 //// 0x80
++#define TASKSTRUCT_NEXT_OFFSET 0x1a0 //// 0x1e8
++#define TASKSTRUCT_PREV_OFFSET 0x1a4 //// 0x1ec
++#define TASKSTRUCT_RCRED_OFFSET 0x29c //// 0x2b4
++#define TASKSTRUCT_CRED_OFFSET 0x2a0 //// 0x2b8
++#define TASKSTRUCT_COMM_OFFSET 0x2c0 //// 0x2fc
++#define TASKSTRUCT_THREAD_OFFSET 0x2e4 //// 0x318
++#define TASKSTRUCT_IO_CTX_OFFSET 0x40c //// 0x428
++#define CRED_CAPINH_OFFSET 0x28
++#define CRED_CAPPER_OFFSET 0x30
++#define CRED_CAPEFF_OFFSET 0x38
++#define CRED_CAPBST_OFFSET 0x40
++/* How to obtain the numbers:
++ * $ gbd vmlinux
++ * ...
++ * (gdb) print &((struct task_struct *) 0)->real_cred
++ * $22 = (const struct cred **) 0x29c
++ * (gdb) print &((struct task_struct *) 0)->cred
++ * $23 = (const struct cred **) 0x2a0
++ * (gbd) ...
++ * ...
++ * (gdb) ^D
++ * $ vim target-i386/helper_opengl.c
++ * ...
++ * :wq
++ * $ make
++ * ...
++ *
++ * Testing:
++ * $ x86_64-softmmu/qemu-system-x86_64 -s -hda ...
++ * ^Z
++ * [1]+ Stopped x86_64-softmmu/qemu-system-x86_64 -s -hda ...
++ * $ bg
++ * [1]+ x86_64-softmmu/qemu-system-x86_64 -s -hda ...
++ * $ gdb
++ * ...
++ * (gdb) target remote localhost:1234
++ * ...
++ * (gdb) print ((char *) *(unsigned int *) ((unsigned int) $rsp & ~8191)) +
++ * 0x2c0
++ * $9 = 0xc094062c "swapper"
++ * (gdb) print (char *) (*(unsigned int *) (((char *) *(unsigned int *)
++ * ((unsigned int) $rsp & ~8191)) + 0x1a0) - 0x1a0) + 0x2c0
++ * $10 = 0xdf87cee0 "init"
++ * ...
++ */
++
++#define CAP_SYS_RAWIO 17
++
++#define THREAD_SIZE (TARGET_PAGE_SIZE << 1)
++static ram_addr_t x86_current_thread(void)
++{
++ return env->regs[R_ESP] & ~(THREAD_SIZE - 1);
++}
++
++static ram_addr_t x86_current_task(void)
++{
++ return *(uint32_t *) get_phys_mem_addr(env,
++ x86_current_thread() + THREADINFO_TASK_OFFSET);
++}
++
++static ram_addr_t x86_current_io_ctx(void)
++{
++ return *(uint32_t *) get_phys_mem_addr(env,
++ x86_current_task() + TASKSTRUCT_IO_CTX_OFFSET);
++}
++
++static ram_addr_t x86_task_name(ram_addr_t proc)
++{
++ return x86_current_task() + TASKSTRUCT_COMM_OFFSET;
++}
++
++static ram_addr_t x86_task_next(ram_addr_t proc)
++{
++ return *(uint32_t *) get_phys_mem_addr(env,
++ x86_current_task() + TASKSTRUCT_NEXT_OFFSET) -
++ TASKSTRUCT_NEXT_OFFSET;
++}
++
++static void x86_cap_set(ram_addr_t caps, int cap)
++{
++ int offset = cap >> 5;
++ int mask = 1 << (cap & 31);
++
++ *(uint32_t *) get_phys_mem_addr(env, caps + offset) |= mask;
++}
++
++static void x86_cred_cap_set(ram_addr_t creds, int cap)
++{
++ x86_cap_set(creds + CRED_CAPINH_OFFSET, cap);
++ x86_cap_set(creds + CRED_CAPPER_OFFSET, cap);
++ x86_cap_set(creds + CRED_CAPEFF_OFFSET, cap);
++ x86_cap_set(creds + CRED_CAPBST_OFFSET, cap);
++}
++
++static void x86_task_cap_set(ram_addr_t proc, int cap)
++{
++ x86_cred_cap_set(*(uint32_t *) get_phys_mem_addr(env,
++ proc + TASKSTRUCT_RCRED_OFFSET), cap);
++ x86_cred_cap_set(*(uint32_t *) get_phys_mem_addr(env,
++ proc + TASKSTRUCT_CRED_OFFSET), cap);
++}
++
++#include "kvm.h"
++
++/* The putting and getting of the register set seems to incure a too
++ * high overhead. It's at least 4 ioctl's each. */
++#if 0
++static void opengl_ioport_write(void *data, uint32_t addr, uint32_t val)
++{
++ /* Ignore the first outb after iopl which is emulated by the kernel. */
++ if (val == (uint8_t) -1)
++ return;
++
++ if (kvm_enabled())
++ kvm_arch_get_registers(env);
++ doing_opengl = 1;
++ env->regs[R_EAX] =
++ decode_call(env, env->regs[R_EAX], env->regs[R_EBX], env->regs[R_ECX],
++ env->regs[R_ESI], env->regs[R_EDI]);
++ doing_opengl = 0;
++ if (kvm_enabled())
++ kvm_arch_put_registers(env);
++}
++#else
++static void get_regs(void)
++{
++ /* We only really need the eflags and cr[0..4] */
++ if (kvm_enabled())
++ kvm_get_sregs(env);
++}
++
++static void opengl_ioport_write(void *data, uint32_t addr, uint32_t val)
++{
++ uint64_t *params;
++ int ret;
++
++ /* Only need to fetch the registers after a guest's context switch...
++ * the problem is, to find out about context switches we already need
++ * to fetch rsp
++ * TODO: pass the pid in val. the params pointer doesn't need to be
++ * passed on all calls because it can be a global and be constant.
++ */
++ get_regs();
++
++ params = get_phys_mem_addr(env, (target_ulong) val);
++
++ /* Execute */
++ doing_opengl = 1;
++ ret = decode_call(env, le64_to_cpu(params[0]),
++ le64_to_cpu(params[1]), le64_to_cpu(params[2]),
++ le64_to_cpu(params[3]), le64_to_cpu(params[4]));
++ doing_opengl = 0;
++
++ params[0] = cpu_to_le64(ret);
++ params[5] = 0;
++}
++#endif
++
++static void opengl_ioport_write_first(void *data, uint32_t addr, uint32_t val)
++{
++ if (val != (uint32_t) -1)
++ return;
++
++ /* Ignore the first outb after iopl which is emulated by the kernel. */
++
++ register_ioport_write(9996, 4, 4, opengl_ioport_write, (void *) 1);
++}
++
++void io_register(void)
++{
++ register_ioport_write(9996, 4, 4, opengl_ioport_write_first, (void *) 1);
++}
++
++void opengl_process_enable(void)
++{
++ ram_addr_t task;
++ char *name;
++ int newlevel = 3;
++ uint32_t iopl = newlevel << 12;
++ void *ioplptr;
++
++ if (kvm_enabled())
++ kvm_arch_get_registers(env);
++ allow_kernel = 1;
++
++ task = x86_current_task();
++ x86_task_cap_set(task, CAP_SYS_RAWIO);
++ name = get_phys_mem_addr(env, x86_task_name(task));
++
++ ioplptr = get_phys_mem_addr(env, task +
++ TASKSTRUCT_THREAD_OFFSET + THREADSTRUCT_IOPL_OFFSET);
++ ((uint32_t *) ioplptr)[0] = cpu_to_le32(iopl);
++
++ env->eflags &= ~0x3000;
++ env->eflags |= newlevel << 12;
++
++ allow_kernel = 0;
++ if (kvm_enabled())
++ kvm_arch_put_registers(env, KVM_PUT_RUNTIME_STATE);
++
++ printf("Granted OpenGL access to process '%s'\n", name);
++
++ io_register();
++}
++#endif
+Index: qemu-0.13.0/target-i386/kvm.c
+===================================================================
+--- qemu-0.13.0.orig/target-i386/kvm.c 2011-01-17 16:41:59.000000000 +0800
++++ qemu-0.13.0/target-i386/kvm.c 2011-01-17 16:42:36.000000000 +0800
+@@ -746,7 +746,7 @@
+ #endif
+ }
+
+-static int kvm_get_sregs(CPUState *env)
++int kvm_get_sregs(CPUState *env)
+ {
+ struct kvm_sregs sregs;
+ uint32_t hflags;
+Index: qemu-0.13.0/target-i386/mesa_enums.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-i386/mesa_enums.c 2011-01-17 16:42:36.000000000 +0800
+@@ -0,0 +1,4890 @@
++/* DO NOT EDIT - This file generated automatically by gl_enums.py (from Mesa) script */
++
++/*
++ * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
++ * All Rights Reserved.
++ *
++ * 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, sub license,
++ * 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 (including the next
++ * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
++ * BRIAN PAUL,
++ * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
++ * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
++ * SOFTWARE.
++ */
++
++#include "glheader.h"
++#include "enums.h"
++#include "imports.h"
++
++typedef struct {
++ size_t offset;
++ int n;
++} enum_elt;
++
++LONGSTRING static const char enum_string_table[] =
++ "GL_2D\0"
++ "GL_2_BYTES\0"
++ "GL_3D\0"
++ "GL_3D_COLOR\0"
++ "GL_3D_COLOR_TEXTURE\0"
++ "GL_3_BYTES\0"
++ "GL_4D_COLOR_TEXTURE\0"
++ "GL_4_BYTES\0"
++ "GL_ACCUM\0"
++ "GL_ACCUM_ALPHA_BITS\0"
++ "GL_ACCUM_BLUE_BITS\0"
++ "GL_ACCUM_BUFFER_BIT\0"
++ "GL_ACCUM_CLEAR_VALUE\0"
++ "GL_ACCUM_GREEN_BITS\0"
++ "GL_ACCUM_RED_BITS\0"
++ "GL_ACTIVE_ATTRIBUTES\0"
++ "GL_ACTIVE_ATTRIBUTE_MAX_LENGTH\0"
++ "GL_ACTIVE_STENCIL_FACE_EXT\0"
++ "GL_ACTIVE_TEXTURE\0"
++ "GL_ACTIVE_TEXTURE_ARB\0"
++ "GL_ACTIVE_UNIFORMS\0"
++ "GL_ACTIVE_UNIFORM_MAX_LENGTH\0"
++ "GL_ACTIVE_VERTEX_UNITS_ARB\0"
++ "GL_ADD\0"
++ "GL_ADD_SIGNED\0"
++ "GL_ADD_SIGNED_ARB\0"
++ "GL_ADD_SIGNED_EXT\0"
++ "GL_ALIASED_LINE_WIDTH_RANGE\0"
++ "GL_ALIASED_POINT_SIZE_RANGE\0"
++ "GL_ALL_ATTRIB_BITS\0"
++ "GL_ALL_CLIENT_ATTRIB_BITS\0"
++ "GL_ALPHA\0"
++ "GL_ALPHA12\0"
++ "GL_ALPHA12_EXT\0"
++ "GL_ALPHA16\0"
++ "GL_ALPHA16_EXT\0"
++ "GL_ALPHA4\0"
++ "GL_ALPHA4_EXT\0"
++ "GL_ALPHA8\0"
++ "GL_ALPHA8_EXT\0"
++ "GL_ALPHA_BIAS\0"
++ "GL_ALPHA_BITS\0"
++ "GL_ALPHA_SCALE\0"
++ "GL_ALPHA_TEST\0"
++ "GL_ALPHA_TEST_FUNC\0"
++ "GL_ALPHA_TEST_REF\0"
++ "GL_ALWAYS\0"
++ "GL_AMBIENT\0"
++ "GL_AMBIENT_AND_DIFFUSE\0"
++ "GL_AND\0"
++ "GL_AND_INVERTED\0"
++ "GL_AND_REVERSE\0"
++ "GL_ARRAY_BUFFER\0"
++ "GL_ARRAY_BUFFER_ARB\0"
++ "GL_ARRAY_BUFFER_BINDING\0"
++ "GL_ARRAY_BUFFER_BINDING_ARB\0"
++ "GL_ATTACHED_SHADERS\0"
++ "GL_ATTRIB_ARRAY_POINTER_NV\0"
++ "GL_ATTRIB_ARRAY_SIZE_NV\0"
++ "GL_ATTRIB_ARRAY_STRIDE_NV\0"
++ "GL_ATTRIB_ARRAY_TYPE_NV\0"
++ "GL_ATTRIB_STACK_DEPTH\0"
++ "GL_AUTO_NORMAL\0"
++ "GL_AUX0\0"
++ "GL_AUX1\0"
++ "GL_AUX2\0"
++ "GL_AUX3\0"
++ "GL_AUX_BUFFERS\0"
++ "GL_BACK\0"
++ "GL_BACK_LEFT\0"
++ "GL_BACK_RIGHT\0"
++ "GL_BGR\0"
++ "GL_BGRA\0"
++ "GL_BITMAP\0"
++ "GL_BITMAP_TOKEN\0"
++ "GL_BLEND\0"
++ "GL_BLEND_COLOR\0"
++ "GL_BLEND_COLOR_EXT\0"
++ "GL_BLEND_DST\0"
++ "GL_BLEND_DST_ALPHA\0"
++ "GL_BLEND_DST_RGB\0"
++ "GL_BLEND_EQUATION\0"
++ "GL_BLEND_EQUATION_ALPHA\0"
++ "GL_BLEND_EQUATION_ALPHA_EXT\0"
++ "GL_BLEND_EQUATION_EXT\0"
++ "GL_BLEND_EQUATION_RGB_EXT\0"
++ "GL_BLEND_SRC\0"
++ "GL_BLEND_SRC_ALPHA\0"
++ "GL_BLEND_SRC_RGB\0"
++ "GL_BLUE\0"
++ "GL_BLUE_BIAS\0"
++ "GL_BLUE_BITS\0"
++ "GL_BLUE_SCALE\0"
++ "GL_BOOL\0"
++ "GL_BOOL_ARB\0"
++ "GL_BOOL_VEC2\0"
++ "GL_BOOL_VEC2_ARB\0"
++ "GL_BOOL_VEC3\0"
++ "GL_BOOL_VEC3_ARB\0"
++ "GL_BOOL_VEC4\0"
++ "GL_BOOL_VEC4_ARB\0"
++ "GL_BUFFER_ACCESS\0"
++ "GL_BUFFER_ACCESS_ARB\0"
++ "GL_BUFFER_MAPPED\0"
++ "GL_BUFFER_MAPPED_ARB\0"
++ "GL_BUFFER_MAP_POINTER\0"
++ "GL_BUFFER_MAP_POINTER_ARB\0"
++ "GL_BUFFER_SIZE\0"
++ "GL_BUFFER_SIZE_ARB\0"
++ "GL_BUFFER_USAGE\0"
++ "GL_BUFFER_USAGE_ARB\0"
++ "GL_BYTE\0"
++ "GL_C3F_V3F\0"
++ "GL_C4F_N3F_V3F\0"
++ "GL_C4UB_V2F\0"
++ "GL_C4UB_V3F\0"
++ "GL_CCW\0"
++ "GL_CLAMP\0"
++ "GL_CLAMP_TO_BORDER\0"
++ "GL_CLAMP_TO_BORDER_ARB\0"
++ "GL_CLAMP_TO_BORDER_SGIS\0"
++ "GL_CLAMP_TO_EDGE\0"
++ "GL_CLAMP_TO_EDGE_SGIS\0"
++ "GL_CLEAR\0"
++ "GL_CLIENT_ACTIVE_TEXTURE\0"
++ "GL_CLIENT_ACTIVE_TEXTURE_ARB\0"
++ "GL_CLIENT_ALL_ATTRIB_BITS\0"
++ "GL_CLIENT_ATTRIB_STACK_DEPTH\0"
++ "GL_CLIENT_PIXEL_STORE_BIT\0"
++ "GL_CLIENT_VERTEX_ARRAY_BIT\0"
++ "GL_CLIP_PLANE0\0"
++ "GL_CLIP_PLANE1\0"
++ "GL_CLIP_PLANE2\0"
++ "GL_CLIP_PLANE3\0"
++ "GL_CLIP_PLANE4\0"
++ "GL_CLIP_PLANE5\0"
++ "GL_CLIP_VOLUME_CLIPPING_HINT_EXT\0"
++ "GL_COEFF\0"
++ "GL_COLOR\0"
++ "GL_COLOR_ARRAY\0"
++ "GL_COLOR_ARRAY_BUFFER_BINDING\0"
++ "GL_COLOR_ARRAY_BUFFER_BINDING_ARB\0"
++ "GL_COLOR_ARRAY_POINTER\0"
++ "GL_COLOR_ARRAY_SIZE\0"
++ "GL_COLOR_ARRAY_STRIDE\0"
++ "GL_COLOR_ARRAY_TYPE\0"
++ "GL_COLOR_ATTACHMENT0_EXT\0"
++ "GL_COLOR_ATTACHMENT10_EXT\0"
++ "GL_COLOR_ATTACHMENT11_EXT\0"
++ "GL_COLOR_ATTACHMENT12_EXT\0"
++ "GL_COLOR_ATTACHMENT13_EXT\0"
++ "GL_COLOR_ATTACHMENT14_EXT\0"
++ "GL_COLOR_ATTACHMENT15_EXT\0"
++ "GL_COLOR_ATTACHMENT1_EXT\0"
++ "GL_COLOR_ATTACHMENT2_EXT\0"
++ "GL_COLOR_ATTACHMENT3_EXT\0"
++ "GL_COLOR_ATTACHMENT4_EXT\0"
++ "GL_COLOR_ATTACHMENT5_EXT\0"
++ "GL_COLOR_ATTACHMENT6_EXT\0"
++ "GL_COLOR_ATTACHMENT7_EXT\0"
++ "GL_COLOR_ATTACHMENT8_EXT\0"
++ "GL_COLOR_ATTACHMENT9_EXT\0"
++ "GL_COLOR_BUFFER_BIT\0"
++ "GL_COLOR_CLEAR_VALUE\0"
++ "GL_COLOR_INDEX\0"
++ "GL_COLOR_INDEXES\0"
++ "GL_COLOR_LOGIC_OP\0"
++ "GL_COLOR_MATERIAL\0"
++ "GL_COLOR_MATERIAL_FACE\0"
++ "GL_COLOR_MATERIAL_PARAMETER\0"
++ "GL_COLOR_MATRIX\0"
++ "GL_COLOR_MATRIX_SGI\0"
++ "GL_COLOR_MATRIX_STACK_DEPTH\0"
++ "GL_COLOR_MATRIX_STACK_DEPTH_SGI\0"
++ "GL_COLOR_SUM\0"
++ "GL_COLOR_SUM_ARB\0"
++ "GL_COLOR_TABLE\0"
++ "GL_COLOR_TABLE_ALPHA_SIZE\0"
++ "GL_COLOR_TABLE_ALPHA_SIZE_EXT\0"
++ "GL_COLOR_TABLE_ALPHA_SIZE_SGI\0"
++ "GL_COLOR_TABLE_BIAS\0"
++ "GL_COLOR_TABLE_BIAS_SGI\0"
++ "GL_COLOR_TABLE_BLUE_SIZE\0"
++ "GL_COLOR_TABLE_BLUE_SIZE_EXT\0"
++ "GL_COLOR_TABLE_BLUE_SIZE_SGI\0"
++ "GL_COLOR_TABLE_FORMAT\0"
++ "GL_COLOR_TABLE_FORMAT_EXT\0"
++ "GL_COLOR_TABLE_FORMAT_SGI\0"
++ "GL_COLOR_TABLE_GREEN_SIZE\0"
++ "GL_COLOR_TABLE_GREEN_SIZE_EXT\0"
++ "GL_COLOR_TABLE_GREEN_SIZE_SGI\0"
++ "GL_COLOR_TABLE_INTENSITY_SIZE\0"
++ "GL_COLOR_TABLE_INTENSITY_SIZE_EXT\0"
++ "GL_COLOR_TABLE_INTENSITY_SIZE_SGI\0"
++ "GL_COLOR_TABLE_LUMINANCE_SIZE\0"
++ "GL_COLOR_TABLE_LUMINANCE_SIZE_EXT\0"
++ "GL_COLOR_TABLE_LUMINANCE_SIZE_SGI\0"
++ "GL_COLOR_TABLE_RED_SIZE\0"
++ "GL_COLOR_TABLE_RED_SIZE_EXT\0"
++ "GL_COLOR_TABLE_RED_SIZE_SGI\0"
++ "GL_COLOR_TABLE_SCALE\0"
++ "GL_COLOR_TABLE_SCALE_SGI\0"
++ "GL_COLOR_TABLE_WIDTH\0"
++ "GL_COLOR_TABLE_WIDTH_EXT\0"
++ "GL_COLOR_TABLE_WIDTH_SGI\0"
++ "GL_COLOR_WRITEMASK\0"
++ "GL_COMBINE\0"
++ "GL_COMBINE4\0"
++ "GL_COMBINE_ALPHA\0"
++ "GL_COMBINE_ALPHA_ARB\0"
++ "GL_COMBINE_ALPHA_EXT\0"
++ "GL_COMBINE_ARB\0"
++ "GL_COMBINE_EXT\0"
++ "GL_COMBINE_RGB\0"
++ "GL_COMBINE_RGB_ARB\0"
++ "GL_COMBINE_RGB_EXT\0"
++ "GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT\0"
++ "GL_COMPARE_R_TO_TEXTURE\0"
++ "GL_COMPARE_R_TO_TEXTURE_ARB\0"
++ "GL_COMPILE\0"
++ "GL_COMPILE_AND_EXECUTE\0"
++ "GL_COMPILE_STATUS\0"
++ "GL_COMPRESSED_ALPHA\0"
++ "GL_COMPRESSED_ALPHA_ARB\0"
++ "GL_COMPRESSED_INTENSITY\0"
++ "GL_COMPRESSED_INTENSITY_ARB\0"
++ "GL_COMPRESSED_LUMINANCE\0"
++ "GL_COMPRESSED_LUMINANCE_ALPHA\0"
++ "GL_COMPRESSED_LUMINANCE_ALPHA_ARB\0"
++ "GL_COMPRESSED_LUMINANCE_ARB\0"
++ "GL_COMPRESSED_RGB\0"
++ "GL_COMPRESSED_RGBA\0"
++ "GL_COMPRESSED_RGBA_ARB\0"
++ "GL_COMPRESSED_RGBA_FXT1_3DFX\0"
++ "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT\0"
++ "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT\0"
++ "GL_COMPRESSED_RGBA_S3TC_DXT5_EXT\0"
++ "GL_COMPRESSED_RGB_ARB\0"
++ "GL_COMPRESSED_RGB_FXT1_3DFX\0"
++ "GL_COMPRESSED_RGB_S3TC_DXT1_EXT\0"
++ "GL_COMPRESSED_TEXTURE_FORMATS\0"
++ "GL_CONSTANT\0"
++ "GL_CONSTANT_ALPHA\0"
++ "GL_CONSTANT_ALPHA_EXT\0"
++ "GL_CONSTANT_ARB\0"
++ "GL_CONSTANT_ATTENUATION\0"
++ "GL_CONSTANT_BORDER_HP\0"
++ "GL_CONSTANT_COLOR\0"
++ "GL_CONSTANT_COLOR_EXT\0"
++ "GL_CONSTANT_EXT\0"
++ "GL_CONVOLUTION_1D\0"
++ "GL_CONVOLUTION_2D\0"
++ "GL_CONVOLUTION_BORDER_COLOR\0"
++ "GL_CONVOLUTION_BORDER_COLOR_HP\0"
++ "GL_CONVOLUTION_BORDER_MODE\0"
++ "GL_CONVOLUTION_BORDER_MODE_EXT\0"
++ "GL_CONVOLUTION_FILTER_BIAS\0"
++ "GL_CONVOLUTION_FILTER_BIAS_EXT\0"
++ "GL_CONVOLUTION_FILTER_SCALE\0"
++ "GL_CONVOLUTION_FILTER_SCALE_EXT\0"
++ "GL_CONVOLUTION_FORMAT\0"
++ "GL_CONVOLUTION_FORMAT_EXT\0"
++ "GL_CONVOLUTION_HEIGHT\0"
++ "GL_CONVOLUTION_HEIGHT_EXT\0"
++ "GL_CONVOLUTION_WIDTH\0"
++ "GL_CONVOLUTION_WIDTH_EXT\0"
++ "GL_COORD_REPLACE\0"
++ "GL_COORD_REPLACE_ARB\0"
++ "GL_COORD_REPLACE_NV\0"
++ "GL_COPY\0"
++ "GL_COPY_INVERTED\0"
++ "GL_COPY_PIXEL_TOKEN\0"
++ "GL_CULL_FACE\0"
++ "GL_CULL_FACE_MODE\0"
++ "GL_CULL_VERTEX_EXT\0"
++ "GL_CULL_VERTEX_EYE_POSITION_EXT\0"
++ "GL_CULL_VERTEX_OBJECT_POSITION_EXT\0"
++ "GL_CURRENT_ATTRIB_NV\0"
++ "GL_CURRENT_BIT\0"
++ "GL_CURRENT_COLOR\0"
++ "GL_CURRENT_FOG_COORD\0"
++ "GL_CURRENT_FOG_COORDINATE\0"
++ "GL_CURRENT_INDEX\0"
++ "GL_CURRENT_MATRIX_ARB\0"
++ "GL_CURRENT_MATRIX_INDEX_ARB\0"
++ "GL_CURRENT_MATRIX_NV\0"
++ "GL_CURRENT_MATRIX_STACK_DEPTH_ARB\0"
++ "GL_CURRENT_MATRIX_STACK_DEPTH_NV\0"
++ "GL_CURRENT_NORMAL\0"
++ "GL_CURRENT_PALETTE_MATRIX_ARB\0"
++ "GL_CURRENT_PROGRAM\0"
++ "GL_CURRENT_QUERY\0"
++ "GL_CURRENT_QUERY_ARB\0"
++ "GL_CURRENT_RASTER_COLOR\0"
++ "GL_CURRENT_RASTER_DISTANCE\0"
++ "GL_CURRENT_RASTER_INDEX\0"
++ "GL_CURRENT_RASTER_POSITION\0"
++ "GL_CURRENT_RASTER_POSITION_VALID\0"
++ "GL_CURRENT_RASTER_TEXTURE_COORDS\0"
++ "GL_CURRENT_SECONDARY_COLOR\0"
++ "GL_CURRENT_TEXTURE_COORDS\0"
++ "GL_CURRENT_VERTEX_ATTRIB\0"
++ "GL_CURRENT_VERTEX_ATTRIB_ARB\0"
++ "GL_CURRENT_WEIGHT_ARB\0"
++ "GL_CW\0"
++ "GL_DEBUG_ASSERT_MESA\0"
++ "GL_DEBUG_OBJECT_MESA\0"
++ "GL_DEBUG_PRINT_MESA\0"
++ "GL_DECAL\0"
++ "GL_DECR\0"
++ "GL_DECR_WRAP\0"
++ "GL_DECR_WRAP_EXT\0"
++ "GL_DELETE_STATUS\0"
++ "GL_DEPTH\0"
++ "GL_DEPTH_ATTACHMENT_EXT\0"
++ "GL_DEPTH_BIAS\0"
++ "GL_DEPTH_BITS\0"
++ "GL_DEPTH_BOUNDS_EXT\0"
++ "GL_DEPTH_BOUNDS_TEST_EXT\0"
++ "GL_DEPTH_BUFFER_BIT\0"
++ "GL_DEPTH_CLAMP_NV\0"
++ "GL_DEPTH_CLEAR_VALUE\0"
++ "GL_DEPTH_COMPONENT\0"
++ "GL_DEPTH_COMPONENT16\0"
++ "GL_DEPTH_COMPONENT16_ARB\0"
++ "GL_DEPTH_COMPONENT16_SGIX\0"
++ "GL_DEPTH_COMPONENT24\0"
++ "GL_DEPTH_COMPONENT24_ARB\0"
++ "GL_DEPTH_COMPONENT24_SGIX\0"
++ "GL_DEPTH_COMPONENT32\0"
++ "GL_DEPTH_COMPONENT32_ARB\0"
++ "GL_DEPTH_COMPONENT32_SGIX\0"
++ "GL_DEPTH_FUNC\0"
++ "GL_DEPTH_RANGE\0"
++ "GL_DEPTH_SCALE\0"
++ "GL_DEPTH_STENCIL_NV\0"
++ "GL_DEPTH_STENCIL_TO_BGRA_NV\0"
++ "GL_DEPTH_STENCIL_TO_RGBA_NV\0"
++ "GL_DEPTH_TEST\0"
++ "GL_DEPTH_TEXTURE_MODE\0"
++ "GL_DEPTH_TEXTURE_MODE_ARB\0"
++ "GL_DEPTH_WRITEMASK\0"
++ "GL_DIFFUSE\0"
++ "GL_DITHER\0"
++ "GL_DOMAIN\0"
++ "GL_DONT_CARE\0"
++ "GL_DOT3_RGB\0"
++ "GL_DOT3_RGBA\0"
++ "GL_DOT3_RGBA_ARB\0"
++ "GL_DOT3_RGBA_EXT\0"
++ "GL_DOT3_RGB_ARB\0"
++ "GL_DOT3_RGB_EXT\0"
++ "GL_DOUBLE\0"
++ "GL_DOUBLEBUFFER\0"
++ "GL_DRAW_BUFFER\0"
++ "GL_DRAW_BUFFER0\0"
++ "GL_DRAW_BUFFER0_ARB\0"
++ "GL_DRAW_BUFFER0_ATI\0"
++ "GL_DRAW_BUFFER1\0"
++ "GL_DRAW_BUFFER10\0"
++ "GL_DRAW_BUFFER10_ARB\0"
++ "GL_DRAW_BUFFER10_ATI\0"
++ "GL_DRAW_BUFFER11\0"
++ "GL_DRAW_BUFFER11_ARB\0"
++ "GL_DRAW_BUFFER11_ATI\0"
++ "GL_DRAW_BUFFER12\0"
++ "GL_DRAW_BUFFER12_ARB\0"
++ "GL_DRAW_BUFFER12_ATI\0"
++ "GL_DRAW_BUFFER13\0"
++ "GL_DRAW_BUFFER13_ARB\0"
++ "GL_DRAW_BUFFER13_ATI\0"
++ "GL_DRAW_BUFFER14\0"
++ "GL_DRAW_BUFFER14_ARB\0"
++ "GL_DRAW_BUFFER14_ATI\0"
++ "GL_DRAW_BUFFER15\0"
++ "GL_DRAW_BUFFER15_ARB\0"
++ "GL_DRAW_BUFFER15_ATI\0"
++ "GL_DRAW_BUFFER1_ARB\0"
++ "GL_DRAW_BUFFER1_ATI\0"
++ "GL_DRAW_BUFFER2\0"
++ "GL_DRAW_BUFFER2_ARB\0"
++ "GL_DRAW_BUFFER2_ATI\0"
++ "GL_DRAW_BUFFER3\0"
++ "GL_DRAW_BUFFER3_ARB\0"
++ "GL_DRAW_BUFFER3_ATI\0"
++ "GL_DRAW_BUFFER4\0"
++ "GL_DRAW_BUFFER4_ARB\0"
++ "GL_DRAW_BUFFER4_ATI\0"
++ "GL_DRAW_BUFFER5\0"
++ "GL_DRAW_BUFFER5_ARB\0"
++ "GL_DRAW_BUFFER5_ATI\0"
++ "GL_DRAW_BUFFER6\0"
++ "GL_DRAW_BUFFER6_ARB\0"
++ "GL_DRAW_BUFFER6_ATI\0"
++ "GL_DRAW_BUFFER7\0"
++ "GL_DRAW_BUFFER7_ARB\0"
++ "GL_DRAW_BUFFER7_ATI\0"
++ "GL_DRAW_BUFFER8\0"
++ "GL_DRAW_BUFFER8_ARB\0"
++ "GL_DRAW_BUFFER8_ATI\0"
++ "GL_DRAW_BUFFER9\0"
++ "GL_DRAW_BUFFER9_ARB\0"
++ "GL_DRAW_BUFFER9_ATI\0"
++ "GL_DRAW_FRAMEBUFFER_BINDING_EXT\0"
++ "GL_DRAW_FRAMEBUFFER_EXT\0"
++ "GL_DRAW_PIXEL_TOKEN\0"
++ "GL_DST_ALPHA\0"
++ "GL_DST_COLOR\0"
++ "GL_DYNAMIC_COPY\0"
++ "GL_DYNAMIC_COPY_ARB\0"
++ "GL_DYNAMIC_DRAW\0"
++ "GL_DYNAMIC_DRAW_ARB\0"
++ "GL_DYNAMIC_READ\0"
++ "GL_DYNAMIC_READ_ARB\0"
++ "GL_EDGE_FLAG\0"
++ "GL_EDGE_FLAG_ARRAY\0"
++ "GL_EDGE_FLAG_ARRAY_BUFFER_BINDING\0"
++ "GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB\0"
++ "GL_EDGE_FLAG_ARRAY_POINTER\0"
++ "GL_EDGE_FLAG_ARRAY_STRIDE\0"
++ "GL_ELEMENT_ARRAY_BUFFER\0"
++ "GL_ELEMENT_ARRAY_BUFFER_ARB\0"
++ "GL_ELEMENT_ARRAY_BUFFER_BINDING\0"
++ "GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB\0"
++ "GL_EMISSION\0"
++ "GL_ENABLE_BIT\0"
++ "GL_EQUAL\0"
++ "GL_EQUIV\0"
++ "GL_EVAL_BIT\0"
++ "GL_EXP\0"
++ "GL_EXP2\0"
++ "GL_EXTENSIONS\0"
++ "GL_EYE_LINEAR\0"
++ "GL_EYE_PLANE\0"
++ "GL_EYE_PLANE_ABSOLUTE_NV\0"
++ "GL_EYE_RADIAL_NV\0"
++ "GL_FALSE\0"
++ "GL_FASTEST\0"
++ "GL_FEEDBACK\0"
++ "GL_FEEDBACK_BUFFER_POINTER\0"
++ "GL_FEEDBACK_BUFFER_SIZE\0"
++ "GL_FEEDBACK_BUFFER_TYPE\0"
++ "GL_FILL\0"
++ "GL_FLAT\0"
++ "GL_FLOAT\0"
++ "GL_FLOAT_MAT2\0"
++ "GL_FLOAT_MAT2_ARB\0"
++ "GL_FLOAT_MAT3\0"
++ "GL_FLOAT_MAT3_ARB\0"
++ "GL_FLOAT_MAT4\0"
++ "GL_FLOAT_MAT4_ARB\0"
++ "GL_FLOAT_VEC2\0"
++ "GL_FLOAT_VEC2_ARB\0"
++ "GL_FLOAT_VEC3\0"
++ "GL_FLOAT_VEC3_ARB\0"
++ "GL_FLOAT_VEC4\0"
++ "GL_FLOAT_VEC4_ARB\0"
++ "GL_FOG\0"
++ "GL_FOG_BIT\0"
++ "GL_FOG_COLOR\0"
++ "GL_FOG_COORD\0"
++ "GL_FOG_COORDINATE\0"
++ "GL_FOG_COORDINATE_ARRAY\0"
++ "GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING\0"
++ "GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB\0"
++ "GL_FOG_COORDINATE_ARRAY_POINTER\0"
++ "GL_FOG_COORDINATE_ARRAY_STRIDE\0"
++ "GL_FOG_COORDINATE_ARRAY_TYPE\0"
++ "GL_FOG_COORDINATE_SOURCE\0"
++ "GL_FOG_COORD_ARRAY\0"
++ "GL_FOG_COORD_ARRAY_BUFFER_BINDING\0"
++ "GL_FOG_COORD_ARRAY_POINTER\0"
++ "GL_FOG_COORD_ARRAY_STRIDE\0"
++ "GL_FOG_COORD_ARRAY_TYPE\0"
++ "GL_FOG_COORD_SRC\0"
++ "GL_FOG_DENSITY\0"
++ "GL_FOG_DISTANCE_MODE_NV\0"
++ "GL_FOG_END\0"
++ "GL_FOG_HINT\0"
++ "GL_FOG_INDEX\0"
++ "GL_FOG_MODE\0"
++ "GL_FOG_OFFSET_SGIX\0"
++ "GL_FOG_OFFSET_VALUE_SGIX\0"
++ "GL_FOG_START\0"
++ "GL_FRAGMENT_DEPTH\0"
++ "GL_FRAGMENT_PROGRAM_ARB\0"
++ "GL_FRAGMENT_SHADER\0"
++ "GL_FRAGMENT_SHADER_ARB\0"
++ "GL_FRAGMENT_SHADER_DERIVATIVE_HINT\0"
++ "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT\0"
++ "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT\0"
++ "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT\0"
++ "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT\0"
++ "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT\0"
++ "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT\0"
++ "GL_FRAMEBUFFER_BINDING_EXT\0"
++ "GL_FRAMEBUFFER_COMPLETE_EXT\0"
++ "GL_FRAMEBUFFER_EXT\0"
++ "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT\0"
++ "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT\0"
++ "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT\0"
++ "GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT\0"
++ "GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT\0"
++ "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT\0"
++ "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT\0"
++ "GL_FRAMEBUFFER_STATUS_ERROR_EXT\0"
++ "GL_FRAMEBUFFER_UNSUPPORTED_EXT\0"
++ "GL_FRONT\0"
++ "GL_FRONT_AND_BACK\0"
++ "GL_FRONT_FACE\0"
++ "GL_FRONT_LEFT\0"
++ "GL_FRONT_RIGHT\0"
++ "GL_FUNC_ADD\0"
++ "GL_FUNC_ADD_EXT\0"
++ "GL_FUNC_REVERSE_SUBTRACT\0"
++ "GL_FUNC_REVERSE_SUBTRACT_EXT\0"
++ "GL_FUNC_SUBTRACT\0"
++ "GL_FUNC_SUBTRACT_EXT\0"
++ "GL_GENERATE_MIPMAP\0"
++ "GL_GENERATE_MIPMAP_HINT\0"
++ "GL_GENERATE_MIPMAP_HINT_SGIS\0"
++ "GL_GENERATE_MIPMAP_SGIS\0"
++ "GL_GEQUAL\0"
++ "GL_GL_BLEND_EQUATION_RGB\0"
++ "GL_GL_COMPRESSED_SLUMINANCE\0"
++ "GL_GL_COMPRESSED_SLUMINANCE_ALPHA\0"
++ "GL_GL_COMPRESSED_SRGB\0"
++ "GL_GL_COMPRESSED_SRGB_ALPHA\0"
++ "GL_GL_CURRENT_RASTER_SECONDARY_COLOR\0"
++ "GL_GL_FLOAT_MAT2x3\0"
++ "GL_GL_FLOAT_MAT2x4\0"
++ "GL_GL_FLOAT_MAT3x2\0"
++ "GL_GL_FLOAT_MAT3x4\0"
++ "GL_GL_FLOAT_MAT4x2\0"
++ "GL_GL_FLOAT_MAT4x3\0"
++ "GL_GL_PIXEL_PACK_BUFFER\0"
++ "GL_GL_PIXEL_PACK_BUFFER_BINDING\0"
++ "GL_GL_PIXEL_UNPACK_BUFFER\0"
++ "GL_GL_PIXEL_UNPACK_BUFFER_BINDING\0"
++ "GL_GL_SLUMINANCE\0"
++ "GL_GL_SLUMINANCE8\0"
++ "GL_GL_SLUMINANCE8_ALPHA8\0"
++ "GL_GL_SLUMINANCE_ALPHA\0"
++ "GL_GL_SRGB\0"
++ "GL_GL_SRGB8\0"
++ "GL_GL_SRGB8_ALPHA8\0"
++ "GL_GL_SRGB_ALPHA\0"
++ "GL_GREATER\0"
++ "GL_GREEN\0"
++ "GL_GREEN_BIAS\0"
++ "GL_GREEN_BITS\0"
++ "GL_GREEN_SCALE\0"
++ "GL_HINT_BIT\0"
++ "GL_HISTOGRAM\0"
++ "GL_HISTOGRAM_ALPHA_SIZE\0"
++ "GL_HISTOGRAM_ALPHA_SIZE_EXT\0"
++ "GL_HISTOGRAM_BLUE_SIZE\0"
++ "GL_HISTOGRAM_BLUE_SIZE_EXT\0"
++ "GL_HISTOGRAM_EXT\0"
++ "GL_HISTOGRAM_FORMAT\0"
++ "GL_HISTOGRAM_FORMAT_EXT\0"
++ "GL_HISTOGRAM_GREEN_SIZE\0"
++ "GL_HISTOGRAM_GREEN_SIZE_EXT\0"
++ "GL_HISTOGRAM_LUMINANCE_SIZE\0"
++ "GL_HISTOGRAM_LUMINANCE_SIZE_EXT\0"
++ "GL_HISTOGRAM_RED_SIZE\0"
++ "GL_HISTOGRAM_RED_SIZE_EXT\0"
++ "GL_HISTOGRAM_SINK\0"
++ "GL_HISTOGRAM_SINK_EXT\0"
++ "GL_HISTOGRAM_WIDTH\0"
++ "GL_HISTOGRAM_WIDTH_EXT\0"
++ "GL_IDENTITY_NV\0"
++ "GL_IGNORE_BORDER_HP\0"
++ "GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES\0"
++ "GL_IMPLEMENTATION_COLOR_READ_TYPE_OES\0"
++ "GL_INCR\0"
++ "GL_INCR_WRAP\0"
++ "GL_INCR_WRAP_EXT\0"
++ "GL_INDEX_ARRAY\0"
++ "GL_INDEX_ARRAY_BUFFER_BINDING\0"
++ "GL_INDEX_ARRAY_BUFFER_BINDING_ARB\0"
++ "GL_INDEX_ARRAY_POINTER\0"
++ "GL_INDEX_ARRAY_STRIDE\0"
++ "GL_INDEX_ARRAY_TYPE\0"
++ "GL_INDEX_BITS\0"
++ "GL_INDEX_CLEAR_VALUE\0"
++ "GL_INDEX_LOGIC_OP\0"
++ "GL_INDEX_MODE\0"
++ "GL_INDEX_OFFSET\0"
++ "GL_INDEX_SHIFT\0"
++ "GL_INDEX_WRITEMASK\0"
++ "GL_INFO_LOG_LENGTH\0"
++ "GL_INT\0"
++ "GL_INTENSITY\0"
++ "GL_INTENSITY12\0"
++ "GL_INTENSITY12_EXT\0"
++ "GL_INTENSITY16\0"
++ "GL_INTENSITY16_EXT\0"
++ "GL_INTENSITY4\0"
++ "GL_INTENSITY4_EXT\0"
++ "GL_INTENSITY8\0"
++ "GL_INTENSITY8_EXT\0"
++ "GL_INTENSITY_EXT\0"
++ "GL_INTERPOLATE\0"
++ "GL_INTERPOLATE_ARB\0"
++ "GL_INTERPOLATE_EXT\0"
++ "GL_INT_VEC2\0"
++ "GL_INT_VEC2_ARB\0"
++ "GL_INT_VEC3\0"
++ "GL_INT_VEC3_ARB\0"
++ "GL_INT_VEC4\0"
++ "GL_INT_VEC4_ARB\0"
++ "GL_INVALID_ENUM\0"
++ "GL_INVALID_FRAMEBUFFER_OPERATION_EXT\0"
++ "GL_INVALID_OPERATION\0"
++ "GL_INVALID_VALUE\0"
++ "GL_INVERSE_NV\0"
++ "GL_INVERSE_TRANSPOSE_NV\0"
++ "GL_INVERT\0"
++ "GL_KEEP\0"
++ "GL_LEFT\0"
++ "GL_LEQUAL\0"
++ "GL_LESS\0"
++ "GL_LIGHT0\0"
++ "GL_LIGHT1\0"
++ "GL_LIGHT2\0"
++ "GL_LIGHT3\0"
++ "GL_LIGHT4\0"
++ "GL_LIGHT5\0"
++ "GL_LIGHT6\0"
++ "GL_LIGHT7\0"
++ "GL_LIGHTING\0"
++ "GL_LIGHTING_BIT\0"
++ "GL_LIGHT_MODEL_AMBIENT\0"
++ "GL_LIGHT_MODEL_COLOR_CONTROL\0"
++ "GL_LIGHT_MODEL_COLOR_CONTROL_EXT\0"
++ "GL_LIGHT_MODEL_LOCAL_VIEWER\0"
++ "GL_LIGHT_MODEL_TWO_SIDE\0"
++ "GL_LINE\0"
++ "GL_LINEAR\0"
++ "GL_LINEAR_ATTENUATION\0"
++ "GL_LINEAR_CLIPMAP_LINEAR_SGIX\0"
++ "GL_LINEAR_CLIPMAP_NEAREST_SGIX\0"
++ "GL_LINEAR_MIPMAP_LINEAR\0"
++ "GL_LINEAR_MIPMAP_NEAREST\0"
++ "GL_LINES\0"
++ "GL_LINE_BIT\0"
++ "GL_LINE_LOOP\0"
++ "GL_LINE_RESET_TOKEN\0"
++ "GL_LINE_SMOOTH\0"
++ "GL_LINE_SMOOTH_HINT\0"
++ "GL_LINE_STIPPLE\0"
++ "GL_LINE_STIPPLE_PATTERN\0"
++ "GL_LINE_STIPPLE_REPEAT\0"
++ "GL_LINE_STRIP\0"
++ "GL_LINE_TOKEN\0"
++ "GL_LINE_WIDTH\0"
++ "GL_LINE_WIDTH_GRANULARITY\0"
++ "GL_LINE_WIDTH_RANGE\0"
++ "GL_LINK_STATUS\0"
++ "GL_LIST_BASE\0"
++ "GL_LIST_BIT\0"
++ "GL_LIST_INDEX\0"
++ "GL_LIST_MODE\0"
++ "GL_LOAD\0"
++ "GL_LOGIC_OP\0"
++ "GL_LOGIC_OP_MODE\0"
++ "GL_LOWER_LEFT\0"
++ "GL_LUMINANCE\0"
++ "GL_LUMINANCE12\0"
++ "GL_LUMINANCE12_ALPHA12\0"
++ "GL_LUMINANCE12_ALPHA12_EXT\0"
++ "GL_LUMINANCE12_ALPHA4\0"
++ "GL_LUMINANCE12_ALPHA4_EXT\0"
++ "GL_LUMINANCE12_EXT\0"
++ "GL_LUMINANCE16\0"
++ "GL_LUMINANCE16_ALPHA16\0"
++ "GL_LUMINANCE16_ALPHA16_EXT\0"
++ "GL_LUMINANCE16_EXT\0"
++ "GL_LUMINANCE4\0"
++ "GL_LUMINANCE4_ALPHA4\0"
++ "GL_LUMINANCE4_ALPHA4_EXT\0"
++ "GL_LUMINANCE4_EXT\0"
++ "GL_LUMINANCE6_ALPHA2\0"
++ "GL_LUMINANCE6_ALPHA2_EXT\0"
++ "GL_LUMINANCE8\0"
++ "GL_LUMINANCE8_ALPHA8\0"
++ "GL_LUMINANCE8_ALPHA8_EXT\0"
++ "GL_LUMINANCE8_EXT\0"
++ "GL_LUMINANCE_ALPHA\0"
++ "GL_MAP1_COLOR_4\0"
++ "GL_MAP1_GRID_DOMAIN\0"
++ "GL_MAP1_GRID_SEGMENTS\0"
++ "GL_MAP1_INDEX\0"
++ "GL_MAP1_NORMAL\0"
++ "GL_MAP1_TEXTURE_COORD_1\0"
++ "GL_MAP1_TEXTURE_COORD_2\0"
++ "GL_MAP1_TEXTURE_COORD_3\0"
++ "GL_MAP1_TEXTURE_COORD_4\0"
++ "GL_MAP1_VERTEX_3\0"
++ "GL_MAP1_VERTEX_4\0"
++ "GL_MAP1_VERTEX_ATTRIB0_4_NV\0"
++ "GL_MAP1_VERTEX_ATTRIB10_4_NV\0"
++ "GL_MAP1_VERTEX_ATTRIB11_4_NV\0"
++ "GL_MAP1_VERTEX_ATTRIB12_4_NV\0"
++ "GL_MAP1_VERTEX_ATTRIB13_4_NV\0"
++ "GL_MAP1_VERTEX_ATTRIB14_4_NV\0"
++ "GL_MAP1_VERTEX_ATTRIB15_4_NV\0"
++ "GL_MAP1_VERTEX_ATTRIB1_4_NV\0"
++ "GL_MAP1_VERTEX_ATTRIB2_4_NV\0"
++ "GL_MAP1_VERTEX_ATTRIB3_4_NV\0"
++ "GL_MAP1_VERTEX_ATTRIB4_4_NV\0"
++ "GL_MAP1_VERTEX_ATTRIB5_4_NV\0"
++ "GL_MAP1_VERTEX_ATTRIB6_4_NV\0"
++ "GL_MAP1_VERTEX_ATTRIB7_4_NV\0"
++ "GL_MAP1_VERTEX_ATTRIB8_4_NV\0"
++ "GL_MAP1_VERTEX_ATTRIB9_4_NV\0"
++ "GL_MAP2_COLOR_4\0"
++ "GL_MAP2_GRID_DOMAIN\0"
++ "GL_MAP2_GRID_SEGMENTS\0"
++ "GL_MAP2_INDEX\0"
++ "GL_MAP2_NORMAL\0"
++ "GL_MAP2_TEXTURE_COORD_1\0"
++ "GL_MAP2_TEXTURE_COORD_2\0"
++ "GL_MAP2_TEXTURE_COORD_3\0"
++ "GL_MAP2_TEXTURE_COORD_4\0"
++ "GL_MAP2_VERTEX_3\0"
++ "GL_MAP2_VERTEX_4\0"
++ "GL_MAP2_VERTEX_ATTRIB0_4_NV\0"
++ "GL_MAP2_VERTEX_ATTRIB10_4_NV\0"
++ "GL_MAP2_VERTEX_ATTRIB11_4_NV\0"
++ "GL_MAP2_VERTEX_ATTRIB12_4_NV\0"
++ "GL_MAP2_VERTEX_ATTRIB13_4_NV\0"
++ "GL_MAP2_VERTEX_ATTRIB14_4_NV\0"
++ "GL_MAP2_VERTEX_ATTRIB15_4_NV\0"
++ "GL_MAP2_VERTEX_ATTRIB1_4_NV\0"
++ "GL_MAP2_VERTEX_ATTRIB2_4_NV\0"
++ "GL_MAP2_VERTEX_ATTRIB3_4_NV\0"
++ "GL_MAP2_VERTEX_ATTRIB4_4_NV\0"
++ "GL_MAP2_VERTEX_ATTRIB5_4_NV\0"
++ "GL_MAP2_VERTEX_ATTRIB6_4_NV\0"
++ "GL_MAP2_VERTEX_ATTRIB7_4_NV\0"
++ "GL_MAP2_VERTEX_ATTRIB8_4_NV\0"
++ "GL_MAP2_VERTEX_ATTRIB9_4_NV\0"
++ "GL_MAP_COLOR\0"
++ "GL_MAP_STENCIL\0"
++ "GL_MATRIX0_ARB\0"
++ "GL_MATRIX0_NV\0"
++ "GL_MATRIX10_ARB\0"
++ "GL_MATRIX11_ARB\0"
++ "GL_MATRIX12_ARB\0"
++ "GL_MATRIX13_ARB\0"
++ "GL_MATRIX14_ARB\0"
++ "GL_MATRIX15_ARB\0"
++ "GL_MATRIX16_ARB\0"
++ "GL_MATRIX17_ARB\0"
++ "GL_MATRIX18_ARB\0"
++ "GL_MATRIX19_ARB\0"
++ "GL_MATRIX1_ARB\0"
++ "GL_MATRIX1_NV\0"
++ "GL_MATRIX20_ARB\0"
++ "GL_MATRIX21_ARB\0"
++ "GL_MATRIX22_ARB\0"
++ "GL_MATRIX23_ARB\0"
++ "GL_MATRIX24_ARB\0"
++ "GL_MATRIX25_ARB\0"
++ "GL_MATRIX26_ARB\0"
++ "GL_MATRIX27_ARB\0"
++ "GL_MATRIX28_ARB\0"
++ "GL_MATRIX29_ARB\0"
++ "GL_MATRIX2_ARB\0"
++ "GL_MATRIX2_NV\0"
++ "GL_MATRIX30_ARB\0"
++ "GL_MATRIX31_ARB\0"
++ "GL_MATRIX3_ARB\0"
++ "GL_MATRIX3_NV\0"
++ "GL_MATRIX4_ARB\0"
++ "GL_MATRIX4_NV\0"
++ "GL_MATRIX5_ARB\0"
++ "GL_MATRIX5_NV\0"
++ "GL_MATRIX6_ARB\0"
++ "GL_MATRIX6_NV\0"
++ "GL_MATRIX7_ARB\0"
++ "GL_MATRIX7_NV\0"
++ "GL_MATRIX8_ARB\0"
++ "GL_MATRIX9_ARB\0"
++ "GL_MATRIX_INDEX_ARRAY_ARB\0"
++ "GL_MATRIX_INDEX_ARRAY_POINTER_ARB\0"
++ "GL_MATRIX_INDEX_ARRAY_SIZE_ARB\0"
++ "GL_MATRIX_INDEX_ARRAY_STRIDE_ARB\0"
++ "GL_MATRIX_INDEX_ARRAY_TYPE_ARB\0"
++ "GL_MATRIX_MODE\0"
++ "GL_MATRIX_PALETTE_ARB\0"
++ "GL_MAX\0"
++ "GL_MAX_3D_TEXTURE_SIZE\0"
++ "GL_MAX_ARRAY_TEXTURE_LAYERS_EXT\0"
++ "GL_MAX_ATTRIB_STACK_DEPTH\0"
++ "GL_MAX_CLIENT_ATTRIB_STACK_DEPTH\0"
++ "GL_MAX_CLIPMAP_DEPTH_SGIX\0"
++ "GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX\0"
++ "GL_MAX_CLIP_PLANES\0"
++ "GL_MAX_COLOR_ATTACHMENTS_EXT\0"
++ "GL_MAX_COLOR_MATRIX_STACK_DEPTH\0"
++ "GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI\0"
++ "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS\0"
++ "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB\0"
++ "GL_MAX_CONVOLUTION_HEIGHT\0"
++ "GL_MAX_CONVOLUTION_HEIGHT_EXT\0"
++ "GL_MAX_CONVOLUTION_WIDTH\0"
++ "GL_MAX_CONVOLUTION_WIDTH_EXT\0"
++ "GL_MAX_CUBE_MAP_TEXTURE_SIZE\0"
++ "GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB\0"
++ "GL_MAX_DRAW_BUFFERS\0"
++ "GL_MAX_DRAW_BUFFERS_ARB\0"
++ "GL_MAX_DRAW_BUFFERS_ATI\0"
++ "GL_MAX_ELEMENTS_INDICES\0"
++ "GL_MAX_ELEMENTS_VERTICES\0"
++ "GL_MAX_EVAL_ORDER\0"
++ "GL_MAX_EXT\0"
++ "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS\0"
++ "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB\0"
++ "GL_MAX_LIGHTS\0"
++ "GL_MAX_LIST_NESTING\0"
++ "GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB\0"
++ "GL_MAX_MODELVIEW_STACK_DEPTH\0"
++ "GL_MAX_NAME_STACK_DEPTH\0"
++ "GL_MAX_PALETTE_MATRICES_ARB\0"
++ "GL_MAX_PIXEL_MAP_TABLE\0"
++ "GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB\0"
++ "GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB\0"
++ "GL_MAX_PROGRAM_ATTRIBS_ARB\0"
++ "GL_MAX_PROGRAM_CALL_DEPTH_NV\0"
++ "GL_MAX_PROGRAM_ENV_PARAMETERS_ARB\0"
++ "GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV\0"
++ "GL_MAX_PROGRAM_IF_DEPTH_NV\0"
++ "GL_MAX_PROGRAM_INSTRUCTIONS_ARB\0"
++ "GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB\0"
++ "GL_MAX_PROGRAM_LOOP_COUNT_NV\0"
++ "GL_MAX_PROGRAM_LOOP_DEPTH_NV\0"
++ "GL_MAX_PROGRAM_MATRICES_ARB\0"
++ "GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB\0"
++ "GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB\0"
++ "GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB\0"
++ "GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB\0"
++ "GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB\0"
++ "GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB\0"
++ "GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB\0"
++ "GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB\0"
++ "GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB\0"
++ "GL_MAX_PROGRAM_PARAMETERS_ARB\0"
++ "GL_MAX_PROGRAM_TEMPORARIES_ARB\0"
++ "GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB\0"
++ "GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB\0"
++ "GL_MAX_PROJECTION_STACK_DEPTH\0"
++ "GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB\0"
++ "GL_MAX_RECTANGLE_TEXTURE_SIZE_NV\0"
++ "GL_MAX_RENDERBUFFER_SIZE_EXT\0"
++ "GL_MAX_SHININESS_NV\0"
++ "GL_MAX_SPOT_EXPONENT_NV\0"
++ "GL_MAX_TEXTURE_COORDS\0"
++ "GL_MAX_TEXTURE_COORDS_ARB\0"
++ "GL_MAX_TEXTURE_IMAGE_UNITS\0"
++ "GL_MAX_TEXTURE_IMAGE_UNITS_ARB\0"
++ "GL_MAX_TEXTURE_LOD_BIAS\0"
++ "GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT\0"
++ "GL_MAX_TEXTURE_SIZE\0"
++ "GL_MAX_TEXTURE_STACK_DEPTH\0"
++ "GL_MAX_TEXTURE_UNITS\0"
++ "GL_MAX_TEXTURE_UNITS_ARB\0"
++ "GL_MAX_TRACK_MATRICES_NV\0"
++ "GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV\0"
++ "GL_MAX_VARYING_FLOATS\0"
++ "GL_MAX_VARYING_FLOATS_ARB\0"
++ "GL_MAX_VERTEX_ATTRIBS\0"
++ "GL_MAX_VERTEX_ATTRIBS_ARB\0"
++ "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS\0"
++ "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB\0"
++ "GL_MAX_VERTEX_UNIFORM_COMPONENTS\0"
++ "GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB\0"
++ "GL_MAX_VERTEX_UNITS_ARB\0"
++ "GL_MAX_VIEWPORT_DIMS\0"
++ "GL_MIN\0"
++ "GL_MINMAX\0"
++ "GL_MINMAX_EXT\0"
++ "GL_MINMAX_FORMAT\0"
++ "GL_MINMAX_FORMAT_EXT\0"
++ "GL_MINMAX_SINK\0"
++ "GL_MINMAX_SINK_EXT\0"
++ "GL_MIN_EXT\0"
++ "GL_MIRRORED_REPEAT\0"
++ "GL_MIRRORED_REPEAT_ARB\0"
++ "GL_MIRRORED_REPEAT_IBM\0"
++ "GL_MIRROR_CLAMP_ATI\0"
++ "GL_MIRROR_CLAMP_EXT\0"
++ "GL_MIRROR_CLAMP_TO_BORDER_EXT\0"
++ "GL_MIRROR_CLAMP_TO_EDGE_ATI\0"
++ "GL_MIRROR_CLAMP_TO_EDGE_EXT\0"
++ "GL_MODELVIEW\0"
++ "GL_MODELVIEW0_ARB\0"
++ "GL_MODELVIEW10_ARB\0"
++ "GL_MODELVIEW11_ARB\0"
++ "GL_MODELVIEW12_ARB\0"
++ "GL_MODELVIEW13_ARB\0"
++ "GL_MODELVIEW14_ARB\0"
++ "GL_MODELVIEW15_ARB\0"
++ "GL_MODELVIEW16_ARB\0"
++ "GL_MODELVIEW17_ARB\0"
++ "GL_MODELVIEW18_ARB\0"
++ "GL_MODELVIEW19_ARB\0"
++ "GL_MODELVIEW1_ARB\0"
++ "GL_MODELVIEW20_ARB\0"
++ "GL_MODELVIEW21_ARB\0"
++ "GL_MODELVIEW22_ARB\0"
++ "GL_MODELVIEW23_ARB\0"
++ "GL_MODELVIEW24_ARB\0"
++ "GL_MODELVIEW25_ARB\0"
++ "GL_MODELVIEW26_ARB\0"
++ "GL_MODELVIEW27_ARB\0"
++ "GL_MODELVIEW28_ARB\0"
++ "GL_MODELVIEW29_ARB\0"
++ "GL_MODELVIEW2_ARB\0"
++ "GL_MODELVIEW30_ARB\0"
++ "GL_MODELVIEW31_ARB\0"
++ "GL_MODELVIEW3_ARB\0"
++ "GL_MODELVIEW4_ARB\0"
++ "GL_MODELVIEW5_ARB\0"
++ "GL_MODELVIEW6_ARB\0"
++ "GL_MODELVIEW7_ARB\0"
++ "GL_MODELVIEW8_ARB\0"
++ "GL_MODELVIEW9_ARB\0"
++ "GL_MODELVIEW_MATRIX\0"
++ "GL_MODELVIEW_PROJECTION_NV\0"
++ "GL_MODELVIEW_STACK_DEPTH\0"
++ "GL_MODULATE\0"
++ "GL_MODULATE_ADD_ATI\0"
++ "GL_MODULATE_SIGNED_ADD_ATI\0"
++ "GL_MODULATE_SUBTRACT_ATI\0"
++ "GL_MULT\0"
++ "GL_MULTISAMPLE\0"
++ "GL_MULTISAMPLE_3DFX\0"
++ "GL_MULTISAMPLE_ARB\0"
++ "GL_MULTISAMPLE_BIT\0"
++ "GL_MULTISAMPLE_BIT_3DFX\0"
++ "GL_MULTISAMPLE_BIT_ARB\0"
++ "GL_MULTISAMPLE_FILTER_HINT_NV\0"
++ "GL_N3F_V3F\0"
++ "GL_NAME_STACK_DEPTH\0"
++ "GL_NAND\0"
++ "GL_NEAREST\0"
++ "GL_NEAREST_CLIPMAP_LINEAR_SGIX\0"
++ "GL_NEAREST_CLIPMAP_NEAREST_SGIX\0"
++ "GL_NEAREST_MIPMAP_LINEAR\0"
++ "GL_NEAREST_MIPMAP_NEAREST\0"
++ "GL_NEVER\0"
++ "GL_NICEST\0"
++ "GL_NONE\0"
++ "GL_NOOP\0"
++ "GL_NOR\0"
++ "GL_NORMALIZE\0"
++ "GL_NORMAL_ARRAY\0"
++ "GL_NORMAL_ARRAY_BUFFER_BINDING\0"
++ "GL_NORMAL_ARRAY_BUFFER_BINDING_ARB\0"
++ "GL_NORMAL_ARRAY_POINTER\0"
++ "GL_NORMAL_ARRAY_STRIDE\0"
++ "GL_NORMAL_ARRAY_TYPE\0"
++ "GL_NORMAL_MAP\0"
++ "GL_NORMAL_MAP_ARB\0"
++ "GL_NORMAL_MAP_NV\0"
++ "GL_NOTEQUAL\0"
++ "GL_NO_ERROR\0"
++ "GL_NUM_COMPRESSED_TEXTURE_FORMATS\0"
++ "GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB\0"
++ "GL_OBJECT_ACTIVE_ATTRIBUTES_ARB\0"
++ "GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB\0"
++ "GL_OBJECT_ACTIVE_UNIFORMS_ARB\0"
++ "GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB\0"
++ "GL_OBJECT_ATTACHED_OBJECTS_ARB\0"
++ "GL_OBJECT_COMPILE_STATUS_ARB\0"
++ "GL_OBJECT_DELETE_STATUS_ARB\0"
++ "GL_OBJECT_INFO_LOG_LENGTH_ARB\0"
++ "GL_OBJECT_LINEAR\0"
++ "GL_OBJECT_LINK_STATUS_ARB\0"
++ "GL_OBJECT_PLANE\0"
++ "GL_OBJECT_SHADER_SOURCE_LENGTH_ARB\0"
++ "GL_OBJECT_SUBTYPE_ARB\0"
++ "GL_OBJECT_TYPE_ARB\0"
++ "GL_OBJECT_VALIDATE_STATUS_ARB\0"
++ "GL_OCCLUSION_TEST_HP\0"
++ "GL_OCCLUSION_TEST_RESULT_HP\0"
++ "GL_ONE\0"
++ "GL_ONE_MINUS_CONSTANT_ALPHA\0"
++ "GL_ONE_MINUS_CONSTANT_ALPHA_EXT\0"
++ "GL_ONE_MINUS_CONSTANT_COLOR\0"
++ "GL_ONE_MINUS_CONSTANT_COLOR_EXT\0"
++ "GL_ONE_MINUS_DST_ALPHA\0"
++ "GL_ONE_MINUS_DST_COLOR\0"
++ "GL_ONE_MINUS_SRC_ALPHA\0"
++ "GL_ONE_MINUS_SRC_COLOR\0"
++ "GL_OPERAND0_ALPHA\0"
++ "GL_OPERAND0_ALPHA_ARB\0"
++ "GL_OPERAND0_ALPHA_EXT\0"
++ "GL_OPERAND0_RGB\0"
++ "GL_OPERAND0_RGB_ARB\0"
++ "GL_OPERAND0_RGB_EXT\0"
++ "GL_OPERAND1_ALPHA\0"
++ "GL_OPERAND1_ALPHA_ARB\0"
++ "GL_OPERAND1_ALPHA_EXT\0"
++ "GL_OPERAND1_RGB\0"
++ "GL_OPERAND1_RGB_ARB\0"
++ "GL_OPERAND1_RGB_EXT\0"
++ "GL_OPERAND2_ALPHA\0"
++ "GL_OPERAND2_ALPHA_ARB\0"
++ "GL_OPERAND2_ALPHA_EXT\0"
++ "GL_OPERAND2_RGB\0"
++ "GL_OPERAND2_RGB_ARB\0"
++ "GL_OPERAND2_RGB_EXT\0"
++ "GL_OPERAND3_ALPHA_NV\0"
++ "GL_OPERAND3_RGB_NV\0"
++ "GL_OR\0"
++ "GL_ORDER\0"
++ "GL_OR_INVERTED\0"
++ "GL_OR_REVERSE\0"
++ "GL_OUT_OF_MEMORY\0"
++ "GL_PACK_ALIGNMENT\0"
++ "GL_PACK_IMAGE_HEIGHT\0"
++ "GL_PACK_INVERT_MESA\0"
++ "GL_PACK_LSB_FIRST\0"
++ "GL_PACK_ROW_LENGTH\0"
++ "GL_PACK_SKIP_IMAGES\0"
++ "GL_PACK_SKIP_PIXELS\0"
++ "GL_PACK_SKIP_ROWS\0"
++ "GL_PACK_SWAP_BYTES\0"
++ "GL_PALETTE4_R5_G6_B5_OES\0"
++ "GL_PALETTE4_RGB5_A1_OES\0"
++ "GL_PALETTE4_RGB8_OES\0"
++ "GL_PALETTE4_RGBA4_OES\0"
++ "GL_PALETTE4_RGBA8_OES\0"
++ "GL_PALETTE8_R5_G6_B5_OES\0"
++ "GL_PALETTE8_RGB5_A1_OES\0"
++ "GL_PALETTE8_RGB8_OES\0"
++ "GL_PALETTE8_RGBA4_OES\0"
++ "GL_PALETTE8_RGBA8_OES\0"
++ "GL_PASS_THROUGH_TOKEN\0"
++ "GL_PERSPECTIVE_CORRECTION_HINT\0"
++ "GL_PIXEL_MAP_A_TO_A\0"
++ "GL_PIXEL_MAP_A_TO_A_SIZE\0"
++ "GL_PIXEL_MAP_B_TO_B\0"
++ "GL_PIXEL_MAP_B_TO_B_SIZE\0"
++ "GL_PIXEL_MAP_G_TO_G\0"
++ "GL_PIXEL_MAP_G_TO_G_SIZE\0"
++ "GL_PIXEL_MAP_I_TO_A\0"
++ "GL_PIXEL_MAP_I_TO_A_SIZE\0"
++ "GL_PIXEL_MAP_I_TO_B\0"
++ "GL_PIXEL_MAP_I_TO_B_SIZE\0"
++ "GL_PIXEL_MAP_I_TO_G\0"
++ "GL_PIXEL_MAP_I_TO_G_SIZE\0"
++ "GL_PIXEL_MAP_I_TO_I\0"
++ "GL_PIXEL_MAP_I_TO_I_SIZE\0"
++ "GL_PIXEL_MAP_I_TO_R\0"
++ "GL_PIXEL_MAP_I_TO_R_SIZE\0"
++ "GL_PIXEL_MAP_R_TO_R\0"
++ "GL_PIXEL_MAP_R_TO_R_SIZE\0"
++ "GL_PIXEL_MAP_S_TO_S\0"
++ "GL_PIXEL_MAP_S_TO_S_SIZE\0"
++ "GL_PIXEL_MODE_BIT\0"
++ "GL_PIXEL_PACK_BUFFER_BINDING_EXT\0"
++ "GL_PIXEL_PACK_BUFFER_EXT\0"
++ "GL_PIXEL_UNPACK_BUFFER_BINDING_EXT\0"
++ "GL_PIXEL_UNPACK_BUFFER_EXT\0"
++ "GL_POINT\0"
++ "GL_POINTS\0"
++ "GL_POINT_BIT\0"
++ "GL_POINT_DISTANCE_ATTENUATION\0"
++ "GL_POINT_DISTANCE_ATTENUATION_ARB\0"
++ "GL_POINT_DISTANCE_ATTENUATION_EXT\0"
++ "GL_POINT_DISTANCE_ATTENUATION_SGIS\0"
++ "GL_POINT_FADE_THRESHOLD_SIZE\0"
++ "GL_POINT_FADE_THRESHOLD_SIZE_ARB\0"
++ "GL_POINT_FADE_THRESHOLD_SIZE_EXT\0"
++ "GL_POINT_FADE_THRESHOLD_SIZE_SGIS\0"
++ "GL_POINT_SIZE\0"
++ "GL_POINT_SIZE_GRANULARITY\0"
++ "GL_POINT_SIZE_MAX\0"
++ "GL_POINT_SIZE_MAX_ARB\0"
++ "GL_POINT_SIZE_MAX_EXT\0"
++ "GL_POINT_SIZE_MAX_SGIS\0"
++ "GL_POINT_SIZE_MIN\0"
++ "GL_POINT_SIZE_MIN_ARB\0"
++ "GL_POINT_SIZE_MIN_EXT\0"
++ "GL_POINT_SIZE_MIN_SGIS\0"
++ "GL_POINT_SIZE_RANGE\0"
++ "GL_POINT_SMOOTH\0"
++ "GL_POINT_SMOOTH_HINT\0"
++ "GL_POINT_SPRITE\0"
++ "GL_POINT_SPRITE_ARB\0"
++ "GL_POINT_SPRITE_COORD_ORIGIN\0"
++ "GL_POINT_SPRITE_NV\0"
++ "GL_POINT_SPRITE_R_MODE_NV\0"
++ "GL_POINT_TOKEN\0"
++ "GL_POLYGON\0"
++ "GL_POLYGON_BIT\0"
++ "GL_POLYGON_MODE\0"
++ "GL_POLYGON_OFFSET_BIAS\0"
++ "GL_POLYGON_OFFSET_FACTOR\0"
++ "GL_POLYGON_OFFSET_FILL\0"
++ "GL_POLYGON_OFFSET_LINE\0"
++ "GL_POLYGON_OFFSET_POINT\0"
++ "GL_POLYGON_OFFSET_UNITS\0"
++ "GL_POLYGON_SMOOTH\0"
++ "GL_POLYGON_SMOOTH_HINT\0"
++ "GL_POLYGON_STIPPLE\0"
++ "GL_POLYGON_STIPPLE_BIT\0"
++ "GL_POLYGON_TOKEN\0"
++ "GL_POSITION\0"
++ "GL_POST_COLOR_MATRIX_ALPHA_BIAS\0"
++ "GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI\0"
++ "GL_POST_COLOR_MATRIX_ALPHA_SCALE\0"
++ "GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI\0"
++ "GL_POST_COLOR_MATRIX_BLUE_BIAS\0"
++ "GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI\0"
++ "GL_POST_COLOR_MATRIX_BLUE_SCALE\0"
++ "GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI\0"
++ "GL_POST_COLOR_MATRIX_COLOR_TABLE\0"
++ "GL_POST_COLOR_MATRIX_GREEN_BIAS\0"
++ "GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI\0"
++ "GL_POST_COLOR_MATRIX_GREEN_SCALE\0"
++ "GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI\0"
++ "GL_POST_COLOR_MATRIX_RED_BIAS\0"
++ "GL_POST_COLOR_MATRIX_RED_BIAS_SGI\0"
++ "GL_POST_COLOR_MATRIX_RED_SCALE\0"
++ "GL_POST_COLOR_MATRIX_RED_SCALE_SGI\0"
++ "GL_POST_CONVOLUTION_ALPHA_BIAS\0"
++ "GL_POST_CONVOLUTION_ALPHA_BIAS_EXT\0"
++ "GL_POST_CONVOLUTION_ALPHA_SCALE\0"
++ "GL_POST_CONVOLUTION_ALPHA_SCALE_EXT\0"
++ "GL_POST_CONVOLUTION_BLUE_BIAS\0"
++ "GL_POST_CONVOLUTION_BLUE_BIAS_EXT\0"
++ "GL_POST_CONVOLUTION_BLUE_SCALE\0"
++ "GL_POST_CONVOLUTION_BLUE_SCALE_EXT\0"
++ "GL_POST_CONVOLUTION_COLOR_TABLE\0"
++ "GL_POST_CONVOLUTION_GREEN_BIAS\0"
++ "GL_POST_CONVOLUTION_GREEN_BIAS_EXT\0"
++ "GL_POST_CONVOLUTION_GREEN_SCALE\0"
++ "GL_POST_CONVOLUTION_GREEN_SCALE_EXT\0"
++ "GL_POST_CONVOLUTION_RED_BIAS\0"
++ "GL_POST_CONVOLUTION_RED_BIAS_EXT\0"
++ "GL_POST_CONVOLUTION_RED_SCALE\0"
++ "GL_POST_CONVOLUTION_RED_SCALE_EXT\0"
++ "GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX\0"
++ "GL_POST_TEXTURE_FILTER_BIAS_SGIX\0"
++ "GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX\0"
++ "GL_POST_TEXTURE_FILTER_SCALE_SGIX\0"
++ "GL_PREVIOUS\0"
++ "GL_PREVIOUS_ARB\0"
++ "GL_PREVIOUS_EXT\0"
++ "GL_PRIMARY_COLOR\0"
++ "GL_PRIMARY_COLOR_ARB\0"
++ "GL_PRIMARY_COLOR_EXT\0"
++ "GL_PROGRAM_ADDRESS_REGISTERS_ARB\0"
++ "GL_PROGRAM_ALU_INSTRUCTIONS_ARB\0"
++ "GL_PROGRAM_ATTRIBS_ARB\0"
++ "GL_PROGRAM_BINDING_ARB\0"
++ "GL_PROGRAM_ERROR_POSITION_ARB\0"
++ "GL_PROGRAM_ERROR_POSITION_NV\0"
++ "GL_PROGRAM_ERROR_STRING_ARB\0"
++ "GL_PROGRAM_FORMAT_ARB\0"
++ "GL_PROGRAM_FORMAT_ASCII_ARB\0"
++ "GL_PROGRAM_INSTRUCTIONS_ARB\0"
++ "GL_PROGRAM_LENGTH_ARB\0"
++ "GL_PROGRAM_LENGTH_NV\0"
++ "GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB\0"
++ "GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB\0"
++ "GL_PROGRAM_NATIVE_ATTRIBS_ARB\0"
++ "GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB\0"
++ "GL_PROGRAM_NATIVE_PARAMETERS_ARB\0"
++ "GL_PROGRAM_NATIVE_TEMPORARIES_ARB\0"
++ "GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB\0"
++ "GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB\0"
++ "GL_PROGRAM_OBJECT_ARB\0"
++ "GL_PROGRAM_PARAMETERS_ARB\0"
++ "GL_PROGRAM_PARAMETER_NV\0"
++ "GL_PROGRAM_RESIDENT_NV\0"
++ "GL_PROGRAM_STRING_ARB\0"
++ "GL_PROGRAM_STRING_NV\0"
++ "GL_PROGRAM_TARGET_NV\0"
++ "GL_PROGRAM_TEMPORARIES_ARB\0"
++ "GL_PROGRAM_TEX_INDIRECTIONS_ARB\0"
++ "GL_PROGRAM_TEX_INSTRUCTIONS_ARB\0"
++ "GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB\0"
++ "GL_PROJECTION\0"
++ "GL_PROJECTION_MATRIX\0"
++ "GL_PROJECTION_STACK_DEPTH\0"
++ "GL_PROXY_COLOR_TABLE\0"
++ "GL_PROXY_HISTOGRAM\0"
++ "GL_PROXY_HISTOGRAM_EXT\0"
++ "GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE\0"
++ "GL_PROXY_POST_CONVOLUTION_COLOR_TABLE\0"
++ "GL_PROXY_TEXTURE_1D\0"
++ "GL_PROXY_TEXTURE_1D_ARRAY_EXT\0"
++ "GL_PROXY_TEXTURE_1D_EXT\0"
++ "GL_PROXY_TEXTURE_2D\0"
++ "GL_PROXY_TEXTURE_2D_ARRAY_EXT\0"
++ "GL_PROXY_TEXTURE_2D_EXT\0"
++ "GL_PROXY_TEXTURE_3D\0"
++ "GL_PROXY_TEXTURE_COLOR_TABLE_SGI\0"
++ "GL_PROXY_TEXTURE_CUBE_MAP\0"
++ "GL_PROXY_TEXTURE_CUBE_MAP_ARB\0"
++ "GL_PROXY_TEXTURE_RECTANGLE_ARB\0"
++ "GL_PROXY_TEXTURE_RECTANGLE_NV\0"
++ "GL_Q\0"
++ "GL_QUADRATIC_ATTENUATION\0"
++ "GL_QUADS\0"
++ "GL_QUAD_MESH_SUN\0"
++ "GL_QUAD_STRIP\0"
++ "GL_QUERY_COUNTER_BITS\0"
++ "GL_QUERY_COUNTER_BITS_ARB\0"
++ "GL_QUERY_RESULT\0"
++ "GL_QUERY_RESULT_ARB\0"
++ "GL_QUERY_RESULT_AVAILABLE\0"
++ "GL_QUERY_RESULT_AVAILABLE_ARB\0"
++ "GL_R\0"
++ "GL_R3_G3_B2\0"
++ "GL_RASTER_POSITION_UNCLIPPED_IBM\0"
++ "GL_READ_BUFFER\0"
++ "GL_READ_FRAMEBUFFER_BINDING_EXT\0"
++ "GL_READ_FRAMEBUFFER_EXT\0"
++ "GL_READ_ONLY\0"
++ "GL_READ_ONLY_ARB\0"
++ "GL_READ_WRITE\0"
++ "GL_READ_WRITE_ARB\0"
++ "GL_RED\0"
++ "GL_REDUCE\0"
++ "GL_REDUCE_EXT\0"
++ "GL_RED_BIAS\0"
++ "GL_RED_BITS\0"
++ "GL_RED_SCALE\0"
++ "GL_REFLECTION_MAP\0"
++ "GL_REFLECTION_MAP_ARB\0"
++ "GL_REFLECTION_MAP_NV\0"
++ "GL_RENDER\0"
++ "GL_RENDERBUFFER_BINDING_EXT\0"
++ "GL_RENDERBUFFER_EXT\0"
++ "GL_RENDERBUFFER_HEIGHT_EXT\0"
++ "GL_RENDERBUFFER_INTERNAL_FORMAT_EXT\0"
++ "GL_RENDERBUFFER_WIDTH_EXT\0"
++ "GL_RENDERER\0"
++ "GL_RENDER_MODE\0"
++ "GL_REPEAT\0"
++ "GL_REPLACE\0"
++ "GL_REPLACE_EXT\0"
++ "GL_REPLICATE_BORDER_HP\0"
++ "GL_RESCALE_NORMAL\0"
++ "GL_RESCALE_NORMAL_EXT\0"
++ "GL_RETURN\0"
++ "GL_RGB\0"
++ "GL_RGB10\0"
++ "GL_RGB10_A2\0"
++ "GL_RGB10_A2_EXT\0"
++ "GL_RGB10_EXT\0"
++ "GL_RGB12\0"
++ "GL_RGB12_EXT\0"
++ "GL_RGB16\0"
++ "GL_RGB16_EXT\0"
++ "GL_RGB2_EXT\0"
++ "GL_RGB4\0"
++ "GL_RGB4_EXT\0"
++ "GL_RGB4_S3TC\0"
++ "GL_RGB5\0"
++ "GL_RGB5_A1\0"
++ "GL_RGB5_A1_EXT\0"
++ "GL_RGB5_EXT\0"
++ "GL_RGB8\0"
++ "GL_RGB8_EXT\0"
++ "GL_RGBA\0"
++ "GL_RGBA12\0"
++ "GL_RGBA12_EXT\0"
++ "GL_RGBA16\0"
++ "GL_RGBA16_EXT\0"
++ "GL_RGBA2\0"
++ "GL_RGBA2_EXT\0"
++ "GL_RGBA4\0"
++ "GL_RGBA4_DXT5_S3TC\0"
++ "GL_RGBA4_EXT\0"
++ "GL_RGBA4_S3TC\0"
++ "GL_RGBA8\0"
++ "GL_RGBA8_EXT\0"
++ "GL_RGBA_DXT5_S3TC\0"
++ "GL_RGBA_MODE\0"
++ "GL_RGBA_S3TC\0"
++ "GL_RGB_S3TC\0"
++ "GL_RGB_SCALE\0"
++ "GL_RGB_SCALE_ARB\0"
++ "GL_RGB_SCALE_EXT\0"
++ "GL_RIGHT\0"
++ "GL_S\0"
++ "GL_SAMPLER_1D\0"
++ "GL_SAMPLER_1D_SHADOW\0"
++ "GL_SAMPLER_2D\0"
++ "GL_SAMPLER_2D_SHADOW\0"
++ "GL_SAMPLER_3D\0"
++ "GL_SAMPLER_CUBE\0"
++ "GL_SAMPLES\0"
++ "GL_SAMPLES_3DFX\0"
++ "GL_SAMPLES_ARB\0"
++ "GL_SAMPLES_PASSED\0"
++ "GL_SAMPLES_PASSED_ARB\0"
++ "GL_SAMPLE_ALPHA_TO_COVERAGE\0"
++ "GL_SAMPLE_ALPHA_TO_COVERAGE_ARB\0"
++ "GL_SAMPLE_ALPHA_TO_ONE\0"
++ "GL_SAMPLE_ALPHA_TO_ONE_ARB\0"
++ "GL_SAMPLE_BUFFERS\0"
++ "GL_SAMPLE_BUFFERS_3DFX\0"
++ "GL_SAMPLE_BUFFERS_ARB\0"
++ "GL_SAMPLE_COVERAGE\0"
++ "GL_SAMPLE_COVERAGE_ARB\0"
++ "GL_SAMPLE_COVERAGE_INVERT\0"
++ "GL_SAMPLE_COVERAGE_INVERT_ARB\0"
++ "GL_SAMPLE_COVERAGE_VALUE\0"
++ "GL_SAMPLE_COVERAGE_VALUE_ARB\0"
++ "GL_SCISSOR_BIT\0"
++ "GL_SCISSOR_BOX\0"
++ "GL_SCISSOR_TEST\0"
++ "GL_SECONDARY_COLOR_ARRAY\0"
++ "GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING\0"
++ "GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB\0"
++ "GL_SECONDARY_COLOR_ARRAY_POINTER\0"
++ "GL_SECONDARY_COLOR_ARRAY_SIZE\0"
++ "GL_SECONDARY_COLOR_ARRAY_STRIDE\0"
++ "GL_SECONDARY_COLOR_ARRAY_TYPE\0"
++ "GL_SELECT\0"
++ "GL_SELECTION_BUFFER_POINTER\0"
++ "GL_SELECTION_BUFFER_SIZE\0"
++ "GL_SEPARABLE_2D\0"
++ "GL_SEPARATE_SPECULAR_COLOR\0"
++ "GL_SEPARATE_SPECULAR_COLOR_EXT\0"
++ "GL_SET\0"
++ "GL_SHADER_OBJECT_ARB\0"
++ "GL_SHADER_SOURCE_LENGTH\0"
++ "GL_SHADER_TYPE\0"
++ "GL_SHADE_MODEL\0"
++ "GL_SHADING_LANGUAGE_VERSION\0"
++ "GL_SHADOW_AMBIENT_SGIX\0"
++ "GL_SHARED_TEXTURE_PALETTE_EXT\0"
++ "GL_SHININESS\0"
++ "GL_SHORT\0"
++ "GL_SINGLE_COLOR\0"
++ "GL_SINGLE_COLOR_EXT\0"
++ "GL_SLICE_ACCUM_SUN\0"
++ "GL_SMOOTH\0"
++ "GL_SMOOTH_LINE_WIDTH_GRANULARITY\0"
++ "GL_SMOOTH_LINE_WIDTH_RANGE\0"
++ "GL_SMOOTH_POINT_SIZE_GRANULARITY\0"
++ "GL_SMOOTH_POINT_SIZE_RANGE\0"
++ "GL_SOURCE0_ALPHA\0"
++ "GL_SOURCE0_ALPHA_ARB\0"
++ "GL_SOURCE0_ALPHA_EXT\0"
++ "GL_SOURCE0_RGB\0"
++ "GL_SOURCE0_RGB_ARB\0"
++ "GL_SOURCE0_RGB_EXT\0"
++ "GL_SOURCE1_ALPHA\0"
++ "GL_SOURCE1_ALPHA_ARB\0"
++ "GL_SOURCE1_ALPHA_EXT\0"
++ "GL_SOURCE1_RGB\0"
++ "GL_SOURCE1_RGB_ARB\0"
++ "GL_SOURCE1_RGB_EXT\0"
++ "GL_SOURCE2_ALPHA\0"
++ "GL_SOURCE2_ALPHA_ARB\0"
++ "GL_SOURCE2_ALPHA_EXT\0"
++ "GL_SOURCE2_RGB\0"
++ "GL_SOURCE2_RGB_ARB\0"
++ "GL_SOURCE2_RGB_EXT\0"
++ "GL_SOURCE3_ALPHA_NV\0"
++ "GL_SOURCE3_RGB_NV\0"
++ "GL_SPECULAR\0"
++ "GL_SPHERE_MAP\0"
++ "GL_SPOT_CUTOFF\0"
++ "GL_SPOT_DIRECTION\0"
++ "GL_SPOT_EXPONENT\0"
++ "GL_SRC0_ALPHA\0"
++ "GL_SRC0_RGB\0"
++ "GL_SRC1_ALPHA\0"
++ "GL_SRC1_RGB\0"
++ "GL_SRC2_ALPHA\0"
++ "GL_SRC2_RGB\0"
++ "GL_SRC_ALPHA\0"
++ "GL_SRC_ALPHA_SATURATE\0"
++ "GL_SRC_COLOR\0"
++ "GL_STACK_OVERFLOW\0"
++ "GL_STACK_UNDERFLOW\0"
++ "GL_STATIC_COPY\0"
++ "GL_STATIC_COPY_ARB\0"
++ "GL_STATIC_DRAW\0"
++ "GL_STATIC_DRAW_ARB\0"
++ "GL_STATIC_READ\0"
++ "GL_STATIC_READ_ARB\0"
++ "GL_STENCIL\0"
++ "GL_STENCIL_ATTACHMENT_EXT\0"
++ "GL_STENCIL_BACK_FAIL\0"
++ "GL_STENCIL_BACK_FUNC\0"
++ "GL_STENCIL_BACK_PASS_DEPTH_FAIL\0"
++ "GL_STENCIL_BACK_PASS_DEPTH_PASS\0"
++ "GL_STENCIL_BACK_REF\0"
++ "GL_STENCIL_BACK_VALUE_MASK\0"
++ "GL_STENCIL_BACK_WRITEMASK\0"
++ "GL_STENCIL_BITS\0"
++ "GL_STENCIL_BUFFER_BIT\0"
++ "GL_STENCIL_CLEAR_VALUE\0"
++ "GL_STENCIL_FAIL\0"
++ "GL_STENCIL_FUNC\0"
++ "GL_STENCIL_INDEX\0"
++ "GL_STENCIL_INDEX16_EXT\0"
++ "GL_STENCIL_INDEX1_EXT\0"
++ "GL_STENCIL_INDEX4_EXT\0"
++ "GL_STENCIL_INDEX8_EXT\0"
++ "GL_STENCIL_INDEX_EXT\0"
++ "GL_STENCIL_PASS_DEPTH_FAIL\0"
++ "GL_STENCIL_PASS_DEPTH_PASS\0"
++ "GL_STENCIL_REF\0"
++ "GL_STENCIL_TEST\0"
++ "GL_STENCIL_TEST_TWO_SIDE_EXT\0"
++ "GL_STENCIL_VALUE_MASK\0"
++ "GL_STENCIL_WRITEMASK\0"
++ "GL_STEREO\0"
++ "GL_STREAM_COPY\0"
++ "GL_STREAM_COPY_ARB\0"
++ "GL_STREAM_DRAW\0"
++ "GL_STREAM_DRAW_ARB\0"
++ "GL_STREAM_READ\0"
++ "GL_STREAM_READ_ARB\0"
++ "GL_SUBPIXEL_BITS\0"
++ "GL_SUBTRACT\0"
++ "GL_SUBTRACT_ARB\0"
++ "GL_T\0"
++ "GL_T2F_C3F_V3F\0"
++ "GL_T2F_C4F_N3F_V3F\0"
++ "GL_T2F_C4UB_V3F\0"
++ "GL_T2F_N3F_V3F\0"
++ "GL_T2F_V3F\0"
++ "GL_T4F_C4F_N3F_V4F\0"
++ "GL_T4F_V4F\0"
++ "GL_TABLE_TOO_LARGE_EXT\0"
++ "GL_TEXTURE\0"
++ "GL_TEXTURE0\0"
++ "GL_TEXTURE0_ARB\0"
++ "GL_TEXTURE1\0"
++ "GL_TEXTURE10\0"
++ "GL_TEXTURE10_ARB\0"
++ "GL_TEXTURE11\0"
++ "GL_TEXTURE11_ARB\0"
++ "GL_TEXTURE12\0"
++ "GL_TEXTURE12_ARB\0"
++ "GL_TEXTURE13\0"
++ "GL_TEXTURE13_ARB\0"
++ "GL_TEXTURE14\0"
++ "GL_TEXTURE14_ARB\0"
++ "GL_TEXTURE15\0"
++ "GL_TEXTURE15_ARB\0"
++ "GL_TEXTURE16\0"
++ "GL_TEXTURE16_ARB\0"
++ "GL_TEXTURE17\0"
++ "GL_TEXTURE17_ARB\0"
++ "GL_TEXTURE18\0"
++ "GL_TEXTURE18_ARB\0"
++ "GL_TEXTURE19\0"
++ "GL_TEXTURE19_ARB\0"
++ "GL_TEXTURE1_ARB\0"
++ "GL_TEXTURE2\0"
++ "GL_TEXTURE20\0"
++ "GL_TEXTURE20_ARB\0"
++ "GL_TEXTURE21\0"
++ "GL_TEXTURE21_ARB\0"
++ "GL_TEXTURE22\0"
++ "GL_TEXTURE22_ARB\0"
++ "GL_TEXTURE23\0"
++ "GL_TEXTURE23_ARB\0"
++ "GL_TEXTURE24\0"
++ "GL_TEXTURE24_ARB\0"
++ "GL_TEXTURE25\0"
++ "GL_TEXTURE25_ARB\0"
++ "GL_TEXTURE26\0"
++ "GL_TEXTURE26_ARB\0"
++ "GL_TEXTURE27\0"
++ "GL_TEXTURE27_ARB\0"
++ "GL_TEXTURE28\0"
++ "GL_TEXTURE28_ARB\0"
++ "GL_TEXTURE29\0"
++ "GL_TEXTURE29_ARB\0"
++ "GL_TEXTURE2_ARB\0"
++ "GL_TEXTURE3\0"
++ "GL_TEXTURE30\0"
++ "GL_TEXTURE30_ARB\0"
++ "GL_TEXTURE31\0"
++ "GL_TEXTURE31_ARB\0"
++ "GL_TEXTURE3_ARB\0"
++ "GL_TEXTURE4\0"
++ "GL_TEXTURE4_ARB\0"
++ "GL_TEXTURE5\0"
++ "GL_TEXTURE5_ARB\0"
++ "GL_TEXTURE6\0"
++ "GL_TEXTURE6_ARB\0"
++ "GL_TEXTURE7\0"
++ "GL_TEXTURE7_ARB\0"
++ "GL_TEXTURE8\0"
++ "GL_TEXTURE8_ARB\0"
++ "GL_TEXTURE9\0"
++ "GL_TEXTURE9_ARB\0"
++ "GL_TEXTURE_1D\0"
++ "GL_TEXTURE_1D_ARRAY_EXT\0"
++ "GL_TEXTURE_2D\0"
++ "GL_TEXTURE_2D_ARRAY_EXT\0"
++ "GL_TEXTURE_3D\0"
++ "GL_TEXTURE_ALPHA_SIZE\0"
++ "GL_TEXTURE_ALPHA_SIZE_EXT\0"
++ "GL_TEXTURE_BASE_LEVEL\0"
++ "GL_TEXTURE_BINDING_1D\0"
++ "GL_TEXTURE_BINDING_1D_ARRAY_EXT\0"
++ "GL_TEXTURE_BINDING_2D\0"
++ "GL_TEXTURE_BINDING_2D_ARRAY_EXT\0"
++ "GL_TEXTURE_BINDING_3D\0"
++ "GL_TEXTURE_BINDING_CUBE_MAP\0"
++ "GL_TEXTURE_BINDING_CUBE_MAP_ARB\0"
++ "GL_TEXTURE_BINDING_RECTANGLE_ARB\0"
++ "GL_TEXTURE_BINDING_RECTANGLE_NV\0"
++ "GL_TEXTURE_BIT\0"
++ "GL_TEXTURE_BLUE_SIZE\0"
++ "GL_TEXTURE_BLUE_SIZE_EXT\0"
++ "GL_TEXTURE_BORDER\0"
++ "GL_TEXTURE_BORDER_COLOR\0"
++ "GL_TEXTURE_CLIPMAP_CENTER_SGIX\0"
++ "GL_TEXTURE_CLIPMAP_DEPTH_SGIX\0"
++ "GL_TEXTURE_CLIPMAP_FRAME_SGIX\0"
++ "GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX\0"
++ "GL_TEXTURE_CLIPMAP_OFFSET_SGIX\0"
++ "GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX\0"
++ "GL_TEXTURE_COLOR_TABLE_SGI\0"
++ "GL_TEXTURE_COLOR_WRITEMASK_SGIS\0"
++ "GL_TEXTURE_COMPARE_FAIL_VALUE_ARB\0"
++ "GL_TEXTURE_COMPARE_FUNC\0"
++ "GL_TEXTURE_COMPARE_FUNC_ARB\0"
++ "GL_TEXTURE_COMPARE_MODE\0"
++ "GL_TEXTURE_COMPARE_MODE_ARB\0"
++ "GL_TEXTURE_COMPARE_OPERATOR_SGIX\0"
++ "GL_TEXTURE_COMPARE_SGIX\0"
++ "GL_TEXTURE_COMPONENTS\0"
++ "GL_TEXTURE_COMPRESSED\0"
++ "GL_TEXTURE_COMPRESSED_ARB\0"
++ "GL_TEXTURE_COMPRESSED_FORMATS_ARB\0"
++ "GL_TEXTURE_COMPRESSED_IMAGE_SIZE\0"
++ "GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB\0"
++ "GL_TEXTURE_COMPRESSION_HINT\0"
++ "GL_TEXTURE_COMPRESSION_HINT_ARB\0"
++ "GL_TEXTURE_COORD_ARRAY\0"
++ "GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING\0"
++ "GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB\0"
++ "GL_TEXTURE_COORD_ARRAY_POINTER\0"
++ "GL_TEXTURE_COORD_ARRAY_SIZE\0"
++ "GL_TEXTURE_COORD_ARRAY_STRIDE\0"
++ "GL_TEXTURE_COORD_ARRAY_TYPE\0"
++ "GL_TEXTURE_CUBE_MAP\0"
++ "GL_TEXTURE_CUBE_MAP_ARB\0"
++ "GL_TEXTURE_CUBE_MAP_NEGATIVE_X\0"
++ "GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB\0"
++ "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y\0"
++ "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB\0"
++ "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z\0"
++ "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB\0"
++ "GL_TEXTURE_CUBE_MAP_POSITIVE_X\0"
++ "GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB\0"
++ "GL_TEXTURE_CUBE_MAP_POSITIVE_Y\0"
++ "GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB\0"
++ "GL_TEXTURE_CUBE_MAP_POSITIVE_Z\0"
++ "GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB\0"
++ "GL_TEXTURE_DEPTH\0"
++ "GL_TEXTURE_DEPTH_SIZE\0"
++ "GL_TEXTURE_DEPTH_SIZE_ARB\0"
++ "GL_TEXTURE_ENV\0"
++ "GL_TEXTURE_ENV_COLOR\0"
++ "GL_TEXTURE_ENV_MODE\0"
++ "GL_TEXTURE_FILTER_CONTROL\0"
++ "GL_TEXTURE_GEN_MODE\0"
++ "GL_TEXTURE_GEN_Q\0"
++ "GL_TEXTURE_GEN_R\0"
++ "GL_TEXTURE_GEN_S\0"
++ "GL_TEXTURE_GEN_T\0"
++ "GL_TEXTURE_GEQUAL_R_SGIX\0"
++ "GL_TEXTURE_GREEN_SIZE\0"
++ "GL_TEXTURE_GREEN_SIZE_EXT\0"
++ "GL_TEXTURE_HEIGHT\0"
++ "GL_TEXTURE_INDEX_SIZE_EXT\0"
++ "GL_TEXTURE_INTENSITY_SIZE\0"
++ "GL_TEXTURE_INTENSITY_SIZE_EXT\0"
++ "GL_TEXTURE_INTERNAL_FORMAT\0"
++ "GL_TEXTURE_LEQUAL_R_SGIX\0"
++ "GL_TEXTURE_LOD_BIAS\0"
++ "GL_TEXTURE_LOD_BIAS_EXT\0"
++ "GL_TEXTURE_LOD_BIAS_R_SGIX\0"
++ "GL_TEXTURE_LOD_BIAS_S_SGIX\0"
++ "GL_TEXTURE_LOD_BIAS_T_SGIX\0"
++ "GL_TEXTURE_LUMINANCE_SIZE\0"
++ "GL_TEXTURE_LUMINANCE_SIZE_EXT\0"
++ "GL_TEXTURE_MAG_FILTER\0"
++ "GL_TEXTURE_MATRIX\0"
++ "GL_TEXTURE_MAX_ANISOTROPY_EXT\0"
++ "GL_TEXTURE_MAX_CLAMP_R_SGIX\0"
++ "GL_TEXTURE_MAX_CLAMP_S_SGIX\0"
++ "GL_TEXTURE_MAX_CLAMP_T_SGIX\0"
++ "GL_TEXTURE_MAX_LEVEL\0"
++ "GL_TEXTURE_MAX_LOD\0"
++ "GL_TEXTURE_MIN_FILTER\0"
++ "GL_TEXTURE_MIN_LOD\0"
++ "GL_TEXTURE_PRIORITY\0"
++ "GL_TEXTURE_RECTANGLE_ARB\0"
++ "GL_TEXTURE_RECTANGLE_NV\0"
++ "GL_TEXTURE_RED_SIZE\0"
++ "GL_TEXTURE_RED_SIZE_EXT\0"
++ "GL_TEXTURE_RESIDENT\0"
++ "GL_TEXTURE_STACK_DEPTH\0"
++ "GL_TEXTURE_TOO_LARGE_EXT\0"
++ "GL_TEXTURE_UNSIGNED_REMAP_MODE_NV\0"
++ "GL_TEXTURE_WIDTH\0"
++ "GL_TEXTURE_WRAP_R\0"
++ "GL_TEXTURE_WRAP_S\0"
++ "GL_TEXTURE_WRAP_T\0"
++ "GL_TIME_ELAPSED_EXT\0"
++ "GL_TRACK_MATRIX_NV\0"
++ "GL_TRACK_MATRIX_TRANSFORM_NV\0"
++ "GL_TRANSFORM_BIT\0"
++ "GL_TRANSPOSE_COLOR_MATRIX\0"
++ "GL_TRANSPOSE_COLOR_MATRIX_ARB\0"
++ "GL_TRANSPOSE_CURRENT_MATRIX_ARB\0"
++ "GL_TRANSPOSE_MODELVIEW_MATRIX\0"
++ "GL_TRANSPOSE_MODELVIEW_MATRIX_ARB\0"
++ "GL_TRANSPOSE_NV\0"
++ "GL_TRANSPOSE_PROJECTION_MATRIX\0"
++ "GL_TRANSPOSE_PROJECTION_MATRIX_ARB\0"
++ "GL_TRANSPOSE_TEXTURE_MATRIX\0"
++ "GL_TRANSPOSE_TEXTURE_MATRIX_ARB\0"
++ "GL_TRIANGLES\0"
++ "GL_TRIANGLE_FAN\0"
++ "GL_TRIANGLE_MESH_SUN\0"
++ "GL_TRIANGLE_STRIP\0"
++ "GL_TRUE\0"
++ "GL_UNPACK_ALIGNMENT\0"
++ "GL_UNPACK_IMAGE_HEIGHT\0"
++ "GL_UNPACK_LSB_FIRST\0"
++ "GL_UNPACK_ROW_LENGTH\0"
++ "GL_UNPACK_SKIP_IMAGES\0"
++ "GL_UNPACK_SKIP_PIXELS\0"
++ "GL_UNPACK_SKIP_ROWS\0"
++ "GL_UNPACK_SWAP_BYTES\0"
++ "GL_UNSIGNED_BYTE\0"
++ "GL_UNSIGNED_BYTE_2_3_3_REV\0"
++ "GL_UNSIGNED_BYTE_3_3_2\0"
++ "GL_UNSIGNED_INT\0"
++ "GL_UNSIGNED_INT_10_10_10_2\0"
++ "GL_UNSIGNED_INT_24_8_NV\0"
++ "GL_UNSIGNED_INT_2_10_10_10_REV\0"
++ "GL_UNSIGNED_INT_8_8_8_8\0"
++ "GL_UNSIGNED_INT_8_8_8_8_REV\0"
++ "GL_UNSIGNED_SHORT\0"
++ "GL_UNSIGNED_SHORT_1_5_5_5_REV\0"
++ "GL_UNSIGNED_SHORT_4_4_4_4\0"
++ "GL_UNSIGNED_SHORT_4_4_4_4_REV\0"
++ "GL_UNSIGNED_SHORT_5_5_5_1\0"
++ "GL_UNSIGNED_SHORT_5_6_5\0"
++ "GL_UNSIGNED_SHORT_5_6_5_REV\0"
++ "GL_UNSIGNED_SHORT_8_8_APPLE\0"
++ "GL_UNSIGNED_SHORT_8_8_MESA\0"
++ "GL_UNSIGNED_SHORT_8_8_REV_APPLE\0"
++ "GL_UNSIGNED_SHORT_8_8_REV_MESA\0"
++ "GL_UPPER_LEFT\0"
++ "GL_V2F\0"
++ "GL_V3F\0"
++ "GL_VALIDATE_STATUS\0"
++ "GL_VENDOR\0"
++ "GL_VERSION\0"
++ "GL_VERTEX_ARRAY\0"
++ "GL_VERTEX_ARRAY_BINDING_APPLE\0"
++ "GL_VERTEX_ARRAY_BUFFER_BINDING\0"
++ "GL_VERTEX_ARRAY_BUFFER_BINDING_ARB\0"
++ "GL_VERTEX_ARRAY_POINTER\0"
++ "GL_VERTEX_ARRAY_SIZE\0"
++ "GL_VERTEX_ARRAY_STRIDE\0"
++ "GL_VERTEX_ARRAY_TYPE\0"
++ "GL_VERTEX_ATTRIB_ARRAY0_NV\0"
++ "GL_VERTEX_ATTRIB_ARRAY10_NV\0"
++ "GL_VERTEX_ATTRIB_ARRAY11_NV\0"
++ "GL_VERTEX_ATTRIB_ARRAY12_NV\0"
++ "GL_VERTEX_ATTRIB_ARRAY13_NV\0"
++ "GL_VERTEX_ATTRIB_ARRAY14_NV\0"
++ "GL_VERTEX_ATTRIB_ARRAY15_NV\0"
++ "GL_VERTEX_ATTRIB_ARRAY1_NV\0"
++ "GL_VERTEX_ATTRIB_ARRAY2_NV\0"
++ "GL_VERTEX_ATTRIB_ARRAY3_NV\0"
++ "GL_VERTEX_ATTRIB_ARRAY4_NV\0"
++ "GL_VERTEX_ATTRIB_ARRAY5_NV\0"
++ "GL_VERTEX_ATTRIB_ARRAY6_NV\0"
++ "GL_VERTEX_ATTRIB_ARRAY7_NV\0"
++ "GL_VERTEX_ATTRIB_ARRAY8_NV\0"
++ "GL_VERTEX_ATTRIB_ARRAY9_NV\0"
++ "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING\0"
++ "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB\0"
++ "GL_VERTEX_ATTRIB_ARRAY_ENABLED\0"
++ "GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB\0"
++ "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED\0"
++ "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB\0"
++ "GL_VERTEX_ATTRIB_ARRAY_POINTER\0"
++ "GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB\0"
++ "GL_VERTEX_ATTRIB_ARRAY_SIZE\0"
++ "GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB\0"
++ "GL_VERTEX_ATTRIB_ARRAY_STRIDE\0"
++ "GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB\0"
++ "GL_VERTEX_ATTRIB_ARRAY_TYPE\0"
++ "GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB\0"
++ "GL_VERTEX_BLEND_ARB\0"
++ "GL_VERTEX_PROGRAM_ARB\0"
++ "GL_VERTEX_PROGRAM_BINDING_NV\0"
++ "GL_VERTEX_PROGRAM_NV\0"
++ "GL_VERTEX_PROGRAM_POINT_SIZE\0"
++ "GL_VERTEX_PROGRAM_POINT_SIZE_ARB\0"
++ "GL_VERTEX_PROGRAM_POINT_SIZE_NV\0"
++ "GL_VERTEX_PROGRAM_TWO_SIDE\0"
++ "GL_VERTEX_PROGRAM_TWO_SIDE_ARB\0"
++ "GL_VERTEX_PROGRAM_TWO_SIDE_NV\0"
++ "GL_VERTEX_SHADER\0"
++ "GL_VERTEX_SHADER_ARB\0"
++ "GL_VERTEX_STATE_PROGRAM_NV\0"
++ "GL_VIEWPORT\0"
++ "GL_VIEWPORT_BIT\0"
++ "GL_WEIGHT_ARRAY_ARB\0"
++ "GL_WEIGHT_ARRAY_BUFFER_BINDING\0"
++ "GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB\0"
++ "GL_WEIGHT_ARRAY_POINTER_ARB\0"
++ "GL_WEIGHT_ARRAY_SIZE_ARB\0"
++ "GL_WEIGHT_ARRAY_STRIDE_ARB\0"
++ "GL_WEIGHT_ARRAY_TYPE_ARB\0"
++ "GL_WEIGHT_SUM_UNITY_ARB\0"
++ "GL_WRAP_BORDER_SUN\0"
++ "GL_WRITE_ONLY\0"
++ "GL_WRITE_ONLY_ARB\0"
++ "GL_XOR\0"
++ "GL_YCBCR_422_APPLE\0"
++ "GL_YCBCR_MESA\0"
++ "GL_ZERO\0"
++ "GL_ZOOM_X\0"
++ "GL_ZOOM_Y\0"
++ ;
++
++static const enum_elt all_enums[1746] =
++{
++ { 0, 0x00000600 }, /* GL_2D */
++ { 6, 0x00001407 }, /* GL_2_BYTES */
++ { 17, 0x00000601 }, /* GL_3D */
++ { 23, 0x00000602 }, /* GL_3D_COLOR */
++ { 35, 0x00000603 }, /* GL_3D_COLOR_TEXTURE */
++ { 55, 0x00001408 }, /* GL_3_BYTES */
++ { 66, 0x00000604 }, /* GL_4D_COLOR_TEXTURE */
++ { 86, 0x00001409 }, /* GL_4_BYTES */
++ { 97, 0x00000100 }, /* GL_ACCUM */
++ { 106, 0x00000D5B }, /* GL_ACCUM_ALPHA_BITS */
++ { 126, 0x00000D5A }, /* GL_ACCUM_BLUE_BITS */
++ { 145, 0x00000200 }, /* GL_ACCUM_BUFFER_BIT */
++ { 165, 0x00000B80 }, /* GL_ACCUM_CLEAR_VALUE */
++ { 186, 0x00000D59 }, /* GL_ACCUM_GREEN_BITS */
++ { 206, 0x00000D58 }, /* GL_ACCUM_RED_BITS */
++ { 224, 0x00008B89 }, /* GL_ACTIVE_ATTRIBUTES */
++ { 245, 0x00008B8A }, /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */
++ { 276, 0x00008911 }, /* GL_ACTIVE_STENCIL_FACE_EXT */
++ { 303, 0x000084E0 }, /* GL_ACTIVE_TEXTURE */
++ { 321, 0x000084E0 }, /* GL_ACTIVE_TEXTURE_ARB */
++ { 343, 0x00008B86 }, /* GL_ACTIVE_UNIFORMS */
++ { 362, 0x00008B87 }, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */
++ { 391, 0x000086A5 }, /* GL_ACTIVE_VERTEX_UNITS_ARB */
++ { 418, 0x00000104 }, /* GL_ADD */
++ { 425, 0x00008574 }, /* GL_ADD_SIGNED */
++ { 439, 0x00008574 }, /* GL_ADD_SIGNED_ARB */
++ { 457, 0x00008574 }, /* GL_ADD_SIGNED_EXT */
++ { 475, 0x0000846E }, /* GL_ALIASED_LINE_WIDTH_RANGE */
++ { 503, 0x0000846D }, /* GL_ALIASED_POINT_SIZE_RANGE */
++ { 531, 0x000FFFFF }, /* GL_ALL_ATTRIB_BITS */
++ { 550, 0xFFFFFFFF }, /* GL_ALL_CLIENT_ATTRIB_BITS */
++ { 576, 0x00001906 }, /* GL_ALPHA */
++ { 585, 0x0000803D }, /* GL_ALPHA12 */
++ { 596, 0x0000803D }, /* GL_ALPHA12_EXT */
++ { 611, 0x0000803E }, /* GL_ALPHA16 */
++ { 622, 0x0000803E }, /* GL_ALPHA16_EXT */
++ { 637, 0x0000803B }, /* GL_ALPHA4 */
++ { 647, 0x0000803B }, /* GL_ALPHA4_EXT */
++ { 661, 0x0000803C }, /* GL_ALPHA8 */
++ { 671, 0x0000803C }, /* GL_ALPHA8_EXT */
++ { 685, 0x00000D1D }, /* GL_ALPHA_BIAS */
++ { 699, 0x00000D55 }, /* GL_ALPHA_BITS */
++ { 713, 0x00000D1C }, /* GL_ALPHA_SCALE */
++ { 728, 0x00000BC0 }, /* GL_ALPHA_TEST */
++ { 742, 0x00000BC1 }, /* GL_ALPHA_TEST_FUNC */
++ { 761, 0x00000BC2 }, /* GL_ALPHA_TEST_REF */
++ { 779, 0x00000207 }, /* GL_ALWAYS */
++ { 789, 0x00001200 }, /* GL_AMBIENT */
++ { 800, 0x00001602 }, /* GL_AMBIENT_AND_DIFFUSE */
++ { 823, 0x00001501 }, /* GL_AND */
++ { 830, 0x00001504 }, /* GL_AND_INVERTED */
++ { 846, 0x00001502 }, /* GL_AND_REVERSE */
++ { 861, 0x00008892 }, /* GL_ARRAY_BUFFER */
++ { 877, 0x00008892 }, /* GL_ARRAY_BUFFER_ARB */
++ { 897, 0x00008894 }, /* GL_ARRAY_BUFFER_BINDING */
++ { 921, 0x00008894 }, /* GL_ARRAY_BUFFER_BINDING_ARB */
++ { 949, 0x00008B85 }, /* GL_ATTACHED_SHADERS */
++ { 969, 0x00008645 }, /* GL_ATTRIB_ARRAY_POINTER_NV */
++ { 996, 0x00008623 }, /* GL_ATTRIB_ARRAY_SIZE_NV */
++ { 1020, 0x00008624 }, /* GL_ATTRIB_ARRAY_STRIDE_NV */
++ { 1046, 0x00008625 }, /* GL_ATTRIB_ARRAY_TYPE_NV */
++ { 1070, 0x00000BB0 }, /* GL_ATTRIB_STACK_DEPTH */
++ { 1092, 0x00000D80 }, /* GL_AUTO_NORMAL */
++ { 1107, 0x00000409 }, /* GL_AUX0 */
++ { 1115, 0x0000040A }, /* GL_AUX1 */
++ { 1123, 0x0000040B }, /* GL_AUX2 */
++ { 1131, 0x0000040C }, /* GL_AUX3 */
++ { 1139, 0x00000C00 }, /* GL_AUX_BUFFERS */
++ { 1154, 0x00000405 }, /* GL_BACK */
++ { 1162, 0x00000402 }, /* GL_BACK_LEFT */
++ { 1175, 0x00000403 }, /* GL_BACK_RIGHT */
++ { 1189, 0x000080E0 }, /* GL_BGR */
++ { 1196, 0x000080E1 }, /* GL_BGRA */
++ { 1204, 0x00001A00 }, /* GL_BITMAP */
++ { 1214, 0x00000704 }, /* GL_BITMAP_TOKEN */
++ { 1230, 0x00000BE2 }, /* GL_BLEND */
++ { 1239, 0x00008005 }, /* GL_BLEND_COLOR */
++ { 1254, 0x00008005 }, /* GL_BLEND_COLOR_EXT */
++ { 1273, 0x00000BE0 }, /* GL_BLEND_DST */
++ { 1286, 0x000080CA }, /* GL_BLEND_DST_ALPHA */
++ { 1305, 0x000080C8 }, /* GL_BLEND_DST_RGB */
++ { 1322, 0x00008009 }, /* GL_BLEND_EQUATION */
++ { 1340, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA */
++ { 1364, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA_EXT */
++ { 1392, 0x00008009 }, /* GL_BLEND_EQUATION_EXT */
++ { 1414, 0x00008009 }, /* GL_BLEND_EQUATION_RGB_EXT */
++ { 1440, 0x00000BE1 }, /* GL_BLEND_SRC */
++ { 1453, 0x000080CB }, /* GL_BLEND_SRC_ALPHA */
++ { 1472, 0x000080C9 }, /* GL_BLEND_SRC_RGB */
++ { 1489, 0x00001905 }, /* GL_BLUE */
++ { 1497, 0x00000D1B }, /* GL_BLUE_BIAS */
++ { 1510, 0x00000D54 }, /* GL_BLUE_BITS */
++ { 1523, 0x00000D1A }, /* GL_BLUE_SCALE */
++ { 1537, 0x00008B56 }, /* GL_BOOL */
++ { 1545, 0x00008B56 }, /* GL_BOOL_ARB */
++ { 1557, 0x00008B57 }, /* GL_BOOL_VEC2 */
++ { 1570, 0x00008B57 }, /* GL_BOOL_VEC2_ARB */
++ { 1587, 0x00008B58 }, /* GL_BOOL_VEC3 */
++ { 1600, 0x00008B58 }, /* GL_BOOL_VEC3_ARB */
++ { 1617, 0x00008B59 }, /* GL_BOOL_VEC4 */
++ { 1630, 0x00008B59 }, /* GL_BOOL_VEC4_ARB */
++ { 1647, 0x000088BB }, /* GL_BUFFER_ACCESS */
++ { 1664, 0x000088BB }, /* GL_BUFFER_ACCESS_ARB */
++ { 1685, 0x000088BC }, /* GL_BUFFER_MAPPED */
++ { 1702, 0x000088BC }, /* GL_BUFFER_MAPPED_ARB */
++ { 1723, 0x000088BD }, /* GL_BUFFER_MAP_POINTER */
++ { 1745, 0x000088BD }, /* GL_BUFFER_MAP_POINTER_ARB */
++ { 1771, 0x00008764 }, /* GL_BUFFER_SIZE */
++ { 1786, 0x00008764 }, /* GL_BUFFER_SIZE_ARB */
++ { 1805, 0x00008765 }, /* GL_BUFFER_USAGE */
++ { 1821, 0x00008765 }, /* GL_BUFFER_USAGE_ARB */
++ { 1841, 0x00001400 }, /* GL_BYTE */
++ { 1849, 0x00002A24 }, /* GL_C3F_V3F */
++ { 1860, 0x00002A26 }, /* GL_C4F_N3F_V3F */
++ { 1875, 0x00002A22 }, /* GL_C4UB_V2F */
++ { 1887, 0x00002A23 }, /* GL_C4UB_V3F */
++ { 1899, 0x00000901 }, /* GL_CCW */
++ { 1906, 0x00002900 }, /* GL_CLAMP */
++ { 1915, 0x0000812D }, /* GL_CLAMP_TO_BORDER */
++ { 1934, 0x0000812D }, /* GL_CLAMP_TO_BORDER_ARB */
++ { 1957, 0x0000812D }, /* GL_CLAMP_TO_BORDER_SGIS */
++ { 1981, 0x0000812F }, /* GL_CLAMP_TO_EDGE */
++ { 1998, 0x0000812F }, /* GL_CLAMP_TO_EDGE_SGIS */
++ { 2020, 0x00001500 }, /* GL_CLEAR */
++ { 2029, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE */
++ { 2054, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE_ARB */
++ { 2083, 0xFFFFFFFF }, /* GL_CLIENT_ALL_ATTRIB_BITS */
++ { 2109, 0x00000BB1 }, /* GL_CLIENT_ATTRIB_STACK_DEPTH */
++ { 2138, 0x00000001 }, /* GL_CLIENT_PIXEL_STORE_BIT */
++ { 2164, 0x00000002 }, /* GL_CLIENT_VERTEX_ARRAY_BIT */
++ { 2191, 0x00003000 }, /* GL_CLIP_PLANE0 */
++ { 2206, 0x00003001 }, /* GL_CLIP_PLANE1 */
++ { 2221, 0x00003002 }, /* GL_CLIP_PLANE2 */
++ { 2236, 0x00003003 }, /* GL_CLIP_PLANE3 */
++ { 2251, 0x00003004 }, /* GL_CLIP_PLANE4 */
++ { 2266, 0x00003005 }, /* GL_CLIP_PLANE5 */
++ { 2281, 0x000080F0 }, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */
++ { 2314, 0x00000A00 }, /* GL_COEFF */
++ { 2323, 0x00001800 }, /* GL_COLOR */
++ { 2332, 0x00008076 }, /* GL_COLOR_ARRAY */
++ { 2347, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING */
++ { 2377, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING_ARB */
++ { 2411, 0x00008090 }, /* GL_COLOR_ARRAY_POINTER */
++ { 2434, 0x00008081 }, /* GL_COLOR_ARRAY_SIZE */
++ { 2454, 0x00008083 }, /* GL_COLOR_ARRAY_STRIDE */
++ { 2476, 0x00008082 }, /* GL_COLOR_ARRAY_TYPE */
++ { 2496, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_EXT */
++ { 2521, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10_EXT */
++ { 2547, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11_EXT */
++ { 2573, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12_EXT */
++ { 2599, 0x00008CED }, /* GL_COLOR_ATTACHMENT13_EXT */
++ { 2625, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14_EXT */
++ { 2651, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15_EXT */
++ { 2677, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1_EXT */
++ { 2702, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2_EXT */
++ { 2727, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3_EXT */
++ { 2752, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4_EXT */
++ { 2777, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5_EXT */
++ { 2802, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6_EXT */
++ { 2827, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7_EXT */
++ { 2852, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8_EXT */
++ { 2877, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9_EXT */
++ { 2902, 0x00004000 }, /* GL_COLOR_BUFFER_BIT */
++ { 2922, 0x00000C22 }, /* GL_COLOR_CLEAR_VALUE */
++ { 2943, 0x00001900 }, /* GL_COLOR_INDEX */
++ { 2958, 0x00001603 }, /* GL_COLOR_INDEXES */
++ { 2975, 0x00000BF2 }, /* GL_COLOR_LOGIC_OP */
++ { 2993, 0x00000B57 }, /* GL_COLOR_MATERIAL */
++ { 3011, 0x00000B55 }, /* GL_COLOR_MATERIAL_FACE */
++ { 3034, 0x00000B56 }, /* GL_COLOR_MATERIAL_PARAMETER */
++ { 3062, 0x000080B1 }, /* GL_COLOR_MATRIX */
++ { 3078, 0x000080B1 }, /* GL_COLOR_MATRIX_SGI */
++ { 3098, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH */
++ { 3126, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH_SGI */
++ { 3158, 0x00008458 }, /* GL_COLOR_SUM */
++ { 3171, 0x00008458 }, /* GL_COLOR_SUM_ARB */
++ { 3188, 0x000080D0 }, /* GL_COLOR_TABLE */
++ { 3203, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE */
++ { 3229, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_EXT */
++ { 3259, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_SGI */
++ { 3289, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS */
++ { 3309, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS_SGI */
++ { 3333, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE */
++ { 3358, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_EXT */
++ { 3387, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_SGI */
++ { 3416, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT */
++ { 3438, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_EXT */
++ { 3464, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_SGI */
++ { 3490, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE */
++ { 3516, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_EXT */
++ { 3546, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_SGI */
++ { 3576, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE */
++ { 3606, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_EXT */
++ { 3640, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_SGI */
++ { 3674, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE */
++ { 3704, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_EXT */
++ { 3738, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_SGI */
++ { 3772, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE */
++ { 3796, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_EXT */
++ { 3824, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_SGI */
++ { 3852, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE */
++ { 3873, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE_SGI */
++ { 3898, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH */
++ { 3919, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_EXT */
++ { 3944, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_SGI */
++ { 3969, 0x00000C23 }, /* GL_COLOR_WRITEMASK */
++ { 3988, 0x00008570 }, /* GL_COMBINE */
++ { 3999, 0x00008503 }, /* GL_COMBINE4 */
++ { 4011, 0x00008572 }, /* GL_COMBINE_ALPHA */
++ { 4028, 0x00008572 }, /* GL_COMBINE_ALPHA_ARB */
++ { 4049, 0x00008572 }, /* GL_COMBINE_ALPHA_EXT */
++ { 4070, 0x00008570 }, /* GL_COMBINE_ARB */
++ { 4085, 0x00008570 }, /* GL_COMBINE_EXT */
++ { 4100, 0x00008571 }, /* GL_COMBINE_RGB */
++ { 4115, 0x00008571 }, /* GL_COMBINE_RGB_ARB */
++ { 4134, 0x00008571 }, /* GL_COMBINE_RGB_EXT */
++ { 4153, 0x0000884E }, /* GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT */
++ { 4189, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE */
++ { 4213, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE_ARB */
++ { 4241, 0x00001300 }, /* GL_COMPILE */
++ { 4252, 0x00001301 }, /* GL_COMPILE_AND_EXECUTE */
++ { 4275, 0x00008B81 }, /* GL_COMPILE_STATUS */
++ { 4293, 0x000084E9 }, /* GL_COMPRESSED_ALPHA */
++ { 4313, 0x000084E9 }, /* GL_COMPRESSED_ALPHA_ARB */
++ { 4337, 0x000084EC }, /* GL_COMPRESSED_INTENSITY */
++ { 4361, 0x000084EC }, /* GL_COMPRESSED_INTENSITY_ARB */
++ { 4389, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE */
++ { 4413, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA */
++ { 4443, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA_ARB */
++ { 4477, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE_ARB */
++ { 4505, 0x000084ED }, /* GL_COMPRESSED_RGB */
++ { 4523, 0x000084EE }, /* GL_COMPRESSED_RGBA */
++ { 4542, 0x000084EE }, /* GL_COMPRESSED_RGBA_ARB */
++ { 4565, 0x000086B1 }, /* GL_COMPRESSED_RGBA_FXT1_3DFX */
++ { 4594, 0x000083F1 }, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */
++ { 4627, 0x000083F2 }, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */
++ { 4660, 0x000083F3 }, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */
++ { 4693, 0x000084ED }, /* GL_COMPRESSED_RGB_ARB */
++ { 4715, 0x000086B0 }, /* GL_COMPRESSED_RGB_FXT1_3DFX */
++ { 4743, 0x000083F0 }, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */
++ { 4775, 0x000086A3 }, /* GL_COMPRESSED_TEXTURE_FORMATS */
++ { 4805, 0x00008576 }, /* GL_CONSTANT */
++ { 4817, 0x00008003 }, /* GL_CONSTANT_ALPHA */
++ { 4835, 0x00008003 }, /* GL_CONSTANT_ALPHA_EXT */
++ { 4857, 0x00008576 }, /* GL_CONSTANT_ARB */
++ { 4873, 0x00001207 }, /* GL_CONSTANT_ATTENUATION */
++ { 4897, 0x00008151 }, /* GL_CONSTANT_BORDER_HP */
++ { 4919, 0x00008001 }, /* GL_CONSTANT_COLOR */
++ { 4937, 0x00008001 }, /* GL_CONSTANT_COLOR_EXT */
++ { 4959, 0x00008576 }, /* GL_CONSTANT_EXT */
++ { 4975, 0x00008010 }, /* GL_CONVOLUTION_1D */
++ { 4993, 0x00008011 }, /* GL_CONVOLUTION_2D */
++ { 5011, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR */
++ { 5039, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR_HP */
++ { 5070, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE */
++ { 5097, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE_EXT */
++ { 5128, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS */
++ { 5155, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS_EXT */
++ { 5186, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE */
++ { 5214, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE_EXT */
++ { 5246, 0x00008017 }, /* GL_CONVOLUTION_FORMAT */
++ { 5268, 0x00008017 }, /* GL_CONVOLUTION_FORMAT_EXT */
++ { 5294, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT */
++ { 5316, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT_EXT */
++ { 5342, 0x00008018 }, /* GL_CONVOLUTION_WIDTH */
++ { 5363, 0x00008018 }, /* GL_CONVOLUTION_WIDTH_EXT */
++ { 5388, 0x00008862 }, /* GL_COORD_REPLACE */
++ { 5405, 0x00008862 }, /* GL_COORD_REPLACE_ARB */
++ { 5426, 0x00008862 }, /* GL_COORD_REPLACE_NV */
++ { 5446, 0x00001503 }, /* GL_COPY */
++ { 5454, 0x0000150C }, /* GL_COPY_INVERTED */
++ { 5471, 0x00000706 }, /* GL_COPY_PIXEL_TOKEN */
++ { 5491, 0x00000B44 }, /* GL_CULL_FACE */
++ { 5504, 0x00000B45 }, /* GL_CULL_FACE_MODE */
++ { 5522, 0x000081AA }, /* GL_CULL_VERTEX_EXT */
++ { 5541, 0x000081AC }, /* GL_CULL_VERTEX_EYE_POSITION_EXT */
++ { 5573, 0x000081AB }, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */
++ { 5608, 0x00008626 }, /* GL_CURRENT_ATTRIB_NV */
++ { 5629, 0x00000001 }, /* GL_CURRENT_BIT */
++ { 5644, 0x00000B00 }, /* GL_CURRENT_COLOR */
++ { 5661, 0x00008453 }, /* GL_CURRENT_FOG_COORD */
++ { 5682, 0x00008453 }, /* GL_CURRENT_FOG_COORDINATE */
++ { 5708, 0x00000B01 }, /* GL_CURRENT_INDEX */
++ { 5725, 0x00008641 }, /* GL_CURRENT_MATRIX_ARB */
++ { 5747, 0x00008845 }, /* GL_CURRENT_MATRIX_INDEX_ARB */
++ { 5775, 0x00008641 }, /* GL_CURRENT_MATRIX_NV */
++ { 5796, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */
++ { 5830, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_NV */
++ { 5863, 0x00000B02 }, /* GL_CURRENT_NORMAL */
++ { 5881, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_ARB */
++ { 5911, 0x00008B8D }, /* GL_CURRENT_PROGRAM */
++ { 5930, 0x00008865 }, /* GL_CURRENT_QUERY */
++ { 5947, 0x00008865 }, /* GL_CURRENT_QUERY_ARB */
++ { 5968, 0x00000B04 }, /* GL_CURRENT_RASTER_COLOR */
++ { 5992, 0x00000B09 }, /* GL_CURRENT_RASTER_DISTANCE */
++ { 6019, 0x00000B05 }, /* GL_CURRENT_RASTER_INDEX */
++ { 6043, 0x00000B07 }, /* GL_CURRENT_RASTER_POSITION */
++ { 6070, 0x00000B08 }, /* GL_CURRENT_RASTER_POSITION_VALID */
++ { 6103, 0x00000B06 }, /* GL_CURRENT_RASTER_TEXTURE_COORDS */
++ { 6136, 0x00008459 }, /* GL_CURRENT_SECONDARY_COLOR */
++ { 6163, 0x00000B03 }, /* GL_CURRENT_TEXTURE_COORDS */
++ { 6189, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB */
++ { 6214, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB_ARB */
++ { 6243, 0x000086A8 }, /* GL_CURRENT_WEIGHT_ARB */
++ { 6265, 0x00000900 }, /* GL_CW */
++ { 6271, 0x0000875B }, /* GL_DEBUG_ASSERT_MESA */
++ { 6292, 0x00008759 }, /* GL_DEBUG_OBJECT_MESA */
++ { 6313, 0x0000875A }, /* GL_DEBUG_PRINT_MESA */
++ { 6333, 0x00002101 }, /* GL_DECAL */
++ { 6342, 0x00001E03 }, /* GL_DECR */
++ { 6350, 0x00008508 }, /* GL_DECR_WRAP */
++ { 6363, 0x00008508 }, /* GL_DECR_WRAP_EXT */
++ { 6380, 0x00008B80 }, /* GL_DELETE_STATUS */
++ { 6397, 0x00001801 }, /* GL_DEPTH */
++ { 6406, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_EXT */
++ { 6430, 0x00000D1F }, /* GL_DEPTH_BIAS */
++ { 6444, 0x00000D56 }, /* GL_DEPTH_BITS */
++ { 6458, 0x00008891 }, /* GL_DEPTH_BOUNDS_EXT */
++ { 6478, 0x00008890 }, /* GL_DEPTH_BOUNDS_TEST_EXT */
++ { 6503, 0x00000100 }, /* GL_DEPTH_BUFFER_BIT */
++ { 6523, 0x0000864F }, /* GL_DEPTH_CLAMP_NV */
++ { 6541, 0x00000B73 }, /* GL_DEPTH_CLEAR_VALUE */
++ { 6562, 0x00001902 }, /* GL_DEPTH_COMPONENT */
++ { 6581, 0x000081A5 }, /* GL_DEPTH_COMPONENT16 */
++ { 6602, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_ARB */
++ { 6627, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_SGIX */
++ { 6653, 0x000081A6 }, /* GL_DEPTH_COMPONENT24 */
++ { 6674, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_ARB */
++ { 6699, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_SGIX */
++ { 6725, 0x000081A7 }, /* GL_DEPTH_COMPONENT32 */
++ { 6746, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_ARB */
++ { 6771, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_SGIX */
++ { 6797, 0x00000B74 }, /* GL_DEPTH_FUNC */
++ { 6811, 0x00000B70 }, /* GL_DEPTH_RANGE */
++ { 6826, 0x00000D1E }, /* GL_DEPTH_SCALE */
++ { 6841, 0x000084F9 }, /* GL_DEPTH_STENCIL_NV */
++ { 6861, 0x0000886F }, /* GL_DEPTH_STENCIL_TO_BGRA_NV */
++ { 6889, 0x0000886E }, /* GL_DEPTH_STENCIL_TO_RGBA_NV */
++ { 6917, 0x00000B71 }, /* GL_DEPTH_TEST */
++ { 6931, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE */
++ { 6953, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE_ARB */
++ { 6979, 0x00000B72 }, /* GL_DEPTH_WRITEMASK */
++ { 6998, 0x00001201 }, /* GL_DIFFUSE */
++ { 7009, 0x00000BD0 }, /* GL_DITHER */
++ { 7019, 0x00000A02 }, /* GL_DOMAIN */
++ { 7029, 0x00001100 }, /* GL_DONT_CARE */
++ { 7042, 0x000086AE }, /* GL_DOT3_RGB */
++ { 7054, 0x000086AF }, /* GL_DOT3_RGBA */
++ { 7067, 0x000086AF }, /* GL_DOT3_RGBA_ARB */
++ { 7084, 0x00008741 }, /* GL_DOT3_RGBA_EXT */
++ { 7101, 0x000086AE }, /* GL_DOT3_RGB_ARB */
++ { 7117, 0x00008740 }, /* GL_DOT3_RGB_EXT */
++ { 7133, 0x0000140A }, /* GL_DOUBLE */
++ { 7143, 0x00000C32 }, /* GL_DOUBLEBUFFER */
++ { 7159, 0x00000C01 }, /* GL_DRAW_BUFFER */
++ { 7174, 0x00008825 }, /* GL_DRAW_BUFFER0 */
++ { 7190, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */
++ { 7210, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */
++ { 7230, 0x00008826 }, /* GL_DRAW_BUFFER1 */
++ { 7246, 0x0000882F }, /* GL_DRAW_BUFFER10 */
++ { 7263, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */
++ { 7284, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */
++ { 7305, 0x00008830 }, /* GL_DRAW_BUFFER11 */
++ { 7322, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */
++ { 7343, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */
++ { 7364, 0x00008831 }, /* GL_DRAW_BUFFER12 */
++ { 7381, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */
++ { 7402, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */
++ { 7423, 0x00008832 }, /* GL_DRAW_BUFFER13 */
++ { 7440, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */
++ { 7461, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */
++ { 7482, 0x00008833 }, /* GL_DRAW_BUFFER14 */
++ { 7499, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */
++ { 7520, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */
++ { 7541, 0x00008834 }, /* GL_DRAW_BUFFER15 */
++ { 7558, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */
++ { 7579, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */
++ { 7600, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */
++ { 7620, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */
++ { 7640, 0x00008827 }, /* GL_DRAW_BUFFER2 */
++ { 7656, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */
++ { 7676, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */
++ { 7696, 0x00008828 }, /* GL_DRAW_BUFFER3 */
++ { 7712, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */
++ { 7732, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */
++ { 7752, 0x00008829 }, /* GL_DRAW_BUFFER4 */
++ { 7768, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */
++ { 7788, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */
++ { 7808, 0x0000882A }, /* GL_DRAW_BUFFER5 */
++ { 7824, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */
++ { 7844, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */
++ { 7864, 0x0000882B }, /* GL_DRAW_BUFFER6 */
++ { 7880, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */
++ { 7900, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */
++ { 7920, 0x0000882C }, /* GL_DRAW_BUFFER7 */
++ { 7936, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */
++ { 7956, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */
++ { 7976, 0x0000882D }, /* GL_DRAW_BUFFER8 */
++ { 7992, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */
++ { 8012, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */
++ { 8032, 0x0000882E }, /* GL_DRAW_BUFFER9 */
++ { 8048, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */
++ { 8068, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */
++ { 8088, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */
++ { 8120, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */
++ { 8144, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */
++ { 8164, 0x00000304 }, /* GL_DST_ALPHA */
++ { 8177, 0x00000306 }, /* GL_DST_COLOR */
++ { 8190, 0x000088EA }, /* GL_DYNAMIC_COPY */
++ { 8206, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */
++ { 8226, 0x000088E8 }, /* GL_DYNAMIC_DRAW */
++ { 8242, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */
++ { 8262, 0x000088E9 }, /* GL_DYNAMIC_READ */
++ { 8278, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */
++ { 8298, 0x00000B43 }, /* GL_EDGE_FLAG */
++ { 8311, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */
++ { 8330, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
++ { 8364, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */
++ { 8402, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */
++ { 8429, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */
++ { 8455, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */
++ { 8479, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER_ARB */
++ { 8507, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
++ { 8539, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */
++ { 8575, 0x00001600 }, /* GL_EMISSION */
++ { 8587, 0x00002000 }, /* GL_ENABLE_BIT */
++ { 8601, 0x00000202 }, /* GL_EQUAL */
++ { 8610, 0x00001509 }, /* GL_EQUIV */
++ { 8619, 0x00010000 }, /* GL_EVAL_BIT */
++ { 8631, 0x00000800 }, /* GL_EXP */
++ { 8638, 0x00000801 }, /* GL_EXP2 */
++ { 8646, 0x00001F03 }, /* GL_EXTENSIONS */
++ { 8660, 0x00002400 }, /* GL_EYE_LINEAR */
++ { 8674, 0x00002502 }, /* GL_EYE_PLANE */
++ { 8687, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */
++ { 8712, 0x0000855B }, /* GL_EYE_RADIAL_NV */
++ { 8729, 0x00000000 }, /* GL_FALSE */
++ { 8738, 0x00001101 }, /* GL_FASTEST */
++ { 8749, 0x00001C01 }, /* GL_FEEDBACK */
++ { 8761, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */
++ { 8788, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */
++ { 8812, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */
++ { 8836, 0x00001B02 }, /* GL_FILL */
++ { 8844, 0x00001D00 }, /* GL_FLAT */
++ { 8852, 0x00001406 }, /* GL_FLOAT */
++ { 8861, 0x00008B5A }, /* GL_FLOAT_MAT2 */
++ { 8875, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */
++ { 8893, 0x00008B5B }, /* GL_FLOAT_MAT3 */
++ { 8907, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */
++ { 8925, 0x00008B5C }, /* GL_FLOAT_MAT4 */
++ { 8939, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */
++ { 8957, 0x00008B50 }, /* GL_FLOAT_VEC2 */
++ { 8971, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */
++ { 8989, 0x00008B51 }, /* GL_FLOAT_VEC3 */
++ { 9003, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */
++ { 9021, 0x00008B52 }, /* GL_FLOAT_VEC4 */
++ { 9035, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */
++ { 9053, 0x00000B60 }, /* GL_FOG */
++ { 9060, 0x00000080 }, /* GL_FOG_BIT */
++ { 9071, 0x00000B66 }, /* GL_FOG_COLOR */
++ { 9084, 0x00008451 }, /* GL_FOG_COORD */
++ { 9097, 0x00008451 }, /* GL_FOG_COORDINATE */
++ { 9115, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */
++ { 9139, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
++ { 9178, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */
++ { 9221, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */
++ { 9253, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */
++ { 9284, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */
++ { 9313, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */
++ { 9338, 0x00008457 }, /* GL_FOG_COORD_ARRAY */
++ { 9357, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */
++ { 9391, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */
++ { 9418, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */
++ { 9444, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */
++ { 9468, 0x00008450 }, /* GL_FOG_COORD_SRC */
++ { 9485, 0x00000B62 }, /* GL_FOG_DENSITY */
++ { 9500, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */
++ { 9524, 0x00000B64 }, /* GL_FOG_END */
++ { 9535, 0x00000C54 }, /* GL_FOG_HINT */
++ { 9547, 0x00000B61 }, /* GL_FOG_INDEX */
++ { 9560, 0x00000B65 }, /* GL_FOG_MODE */
++ { 9572, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */
++ { 9591, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */
++ { 9616, 0x00000B63 }, /* GL_FOG_START */
++ { 9629, 0x00008452 }, /* GL_FRAGMENT_DEPTH */
++ { 9647, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */
++ { 9671, 0x00008B30 }, /* GL_FRAGMENT_SHADER */
++ { 9690, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */
++ { 9713, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */
++ { 9748, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */
++ { 9790, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */
++ { 9832, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */
++ { 9881, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */
++ { 9933, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */
++ { 9977, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */
++ { 10021, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */
++ { 10048, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */
++ { 10076, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */
++ { 10095, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */
++ { 10136, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */
++ { 10177, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */
++ { 10219, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */
++ { 10270, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */
++ { 10308, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */
++ { 10357, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */
++ { 10399, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */
++ { 10431, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */
++ { 10462, 0x00000404 }, /* GL_FRONT */
++ { 10471, 0x00000408 }, /* GL_FRONT_AND_BACK */
++ { 10489, 0x00000B46 }, /* GL_FRONT_FACE */
++ { 10503, 0x00000400 }, /* GL_FRONT_LEFT */
++ { 10517, 0x00000401 }, /* GL_FRONT_RIGHT */
++ { 10532, 0x00008006 }, /* GL_FUNC_ADD */
++ { 10544, 0x00008006 }, /* GL_FUNC_ADD_EXT */
++ { 10560, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */
++ { 10585, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */
++ { 10614, 0x0000800A }, /* GL_FUNC_SUBTRACT */
++ { 10631, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */
++ { 10652, 0x00008191 }, /* GL_GENERATE_MIPMAP */
++ { 10671, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */
++ { 10695, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */
++ { 10724, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */
++ { 10748, 0x00000206 }, /* GL_GEQUAL */
++ { 10758, 0x00008009 }, /* GL_GL_BLEND_EQUATION_RGB */
++ { 10783, 0x00008C4A }, /* GL_GL_COMPRESSED_SLUMINANCE */
++ { 10811, 0x00008C4B }, /* GL_GL_COMPRESSED_SLUMINANCE_ALPHA */
++ { 10845, 0x00008C48 }, /* GL_GL_COMPRESSED_SRGB */
++ { 10867, 0x00008C49 }, /* GL_GL_COMPRESSED_SRGB_ALPHA */
++ { 10895, 0x0000845F }, /* GL_GL_CURRENT_RASTER_SECONDARY_COLOR */
++ { 10932, 0x00008B65 }, /* GL_GL_FLOAT_MAT2x3 */
++ { 10951, 0x00008B66 }, /* GL_GL_FLOAT_MAT2x4 */
++ { 10970, 0x00008B67 }, /* GL_GL_FLOAT_MAT3x2 */
++ { 10989, 0x00008B68 }, /* GL_GL_FLOAT_MAT3x4 */
++ { 11008, 0x00008B69 }, /* GL_GL_FLOAT_MAT4x2 */
++ { 11027, 0x00008B6A }, /* GL_GL_FLOAT_MAT4x3 */
++ { 11046, 0x000088EB }, /* GL_GL_PIXEL_PACK_BUFFER */
++ { 11070, 0x000088ED }, /* GL_GL_PIXEL_PACK_BUFFER_BINDING */
++ { 11102, 0x000088EC }, /* GL_GL_PIXEL_UNPACK_BUFFER */
++ { 11128, 0x000088EF }, /* GL_GL_PIXEL_UNPACK_BUFFER_BINDING */
++ { 11162, 0x00008C46 }, /* GL_GL_SLUMINANCE */
++ { 11179, 0x00008C47 }, /* GL_GL_SLUMINANCE8 */
++ { 11197, 0x00008C45 }, /* GL_GL_SLUMINANCE8_ALPHA8 */
++ { 11222, 0x00008C44 }, /* GL_GL_SLUMINANCE_ALPHA */
++ { 11245, 0x00008C40 }, /* GL_GL_SRGB */
++ { 11256, 0x00008C41 }, /* GL_GL_SRGB8 */
++ { 11268, 0x00008C43 }, /* GL_GL_SRGB8_ALPHA8 */
++ { 11287, 0x00008C42 }, /* GL_GL_SRGB_ALPHA */
++ { 11304, 0x00000204 }, /* GL_GREATER */
++ { 11315, 0x00001904 }, /* GL_GREEN */
++ { 11324, 0x00000D19 }, /* GL_GREEN_BIAS */
++ { 11338, 0x00000D53 }, /* GL_GREEN_BITS */
++ { 11352, 0x00000D18 }, /* GL_GREEN_SCALE */
++ { 11367, 0x00008000 }, /* GL_HINT_BIT */
++ { 11379, 0x00008024 }, /* GL_HISTOGRAM */
++ { 11392, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */
++ { 11416, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */
++ { 11444, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */
++ { 11467, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */
++ { 11494, 0x00008024 }, /* GL_HISTOGRAM_EXT */
++ { 11511, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */
++ { 11531, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */
++ { 11555, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */
++ { 11579, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */
++ { 11607, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */
++ { 11635, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */
++ { 11667, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */
++ { 11689, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */
++ { 11715, 0x0000802D }, /* GL_HISTOGRAM_SINK */
++ { 11733, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */
++ { 11755, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */
++ { 11774, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */
++ { 11797, 0x0000862A }, /* GL_IDENTITY_NV */
++ { 11812, 0x00008150 }, /* GL_IGNORE_BORDER_HP */
++ { 11832, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */
++ { 11872, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */
++ { 11910, 0x00001E02 }, /* GL_INCR */
++ { 11918, 0x00008507 }, /* GL_INCR_WRAP */
++ { 11931, 0x00008507 }, /* GL_INCR_WRAP_EXT */
++ { 11948, 0x00008077 }, /* GL_INDEX_ARRAY */
++ { 11963, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */
++ { 11993, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */
++ { 12027, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */
++ { 12050, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */
++ { 12072, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */
++ { 12092, 0x00000D51 }, /* GL_INDEX_BITS */
++ { 12106, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */
++ { 12127, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */
++ { 12145, 0x00000C30 }, /* GL_INDEX_MODE */
++ { 12159, 0x00000D13 }, /* GL_INDEX_OFFSET */
++ { 12175, 0x00000D12 }, /* GL_INDEX_SHIFT */
++ { 12190, 0x00000C21 }, /* GL_INDEX_WRITEMASK */
++ { 12209, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */
++ { 12228, 0x00001404 }, /* GL_INT */
++ { 12235, 0x00008049 }, /* GL_INTENSITY */
++ { 12248, 0x0000804C }, /* GL_INTENSITY12 */
++ { 12263, 0x0000804C }, /* GL_INTENSITY12_EXT */
++ { 12282, 0x0000804D }, /* GL_INTENSITY16 */
++ { 12297, 0x0000804D }, /* GL_INTENSITY16_EXT */
++ { 12316, 0x0000804A }, /* GL_INTENSITY4 */
++ { 12330, 0x0000804A }, /* GL_INTENSITY4_EXT */
++ { 12348, 0x0000804B }, /* GL_INTENSITY8 */
++ { 12362, 0x0000804B }, /* GL_INTENSITY8_EXT */
++ { 12380, 0x00008049 }, /* GL_INTENSITY_EXT */
++ { 12397, 0x00008575 }, /* GL_INTERPOLATE */
++ { 12412, 0x00008575 }, /* GL_INTERPOLATE_ARB */
++ { 12431, 0x00008575 }, /* GL_INTERPOLATE_EXT */
++ { 12450, 0x00008B53 }, /* GL_INT_VEC2 */
++ { 12462, 0x00008B53 }, /* GL_INT_VEC2_ARB */
++ { 12478, 0x00008B54 }, /* GL_INT_VEC3 */
++ { 12490, 0x00008B54 }, /* GL_INT_VEC3_ARB */
++ { 12506, 0x00008B55 }, /* GL_INT_VEC4 */
++ { 12518, 0x00008B55 }, /* GL_INT_VEC4_ARB */
++ { 12534, 0x00000500 }, /* GL_INVALID_ENUM */
++ { 12550, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */
++ { 12587, 0x00000502 }, /* GL_INVALID_OPERATION */
++ { 12608, 0x00000501 }, /* GL_INVALID_VALUE */
++ { 12625, 0x0000862B }, /* GL_INVERSE_NV */
++ { 12639, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */
++ { 12663, 0x0000150A }, /* GL_INVERT */
++ { 12673, 0x00001E00 }, /* GL_KEEP */
++ { 12681, 0x00000406 }, /* GL_LEFT */
++ { 12689, 0x00000203 }, /* GL_LEQUAL */
++ { 12699, 0x00000201 }, /* GL_LESS */
++ { 12707, 0x00004000 }, /* GL_LIGHT0 */
++ { 12717, 0x00004001 }, /* GL_LIGHT1 */
++ { 12727, 0x00004002 }, /* GL_LIGHT2 */
++ { 12737, 0x00004003 }, /* GL_LIGHT3 */
++ { 12747, 0x00004004 }, /* GL_LIGHT4 */
++ { 12757, 0x00004005 }, /* GL_LIGHT5 */
++ { 12767, 0x00004006 }, /* GL_LIGHT6 */
++ { 12777, 0x00004007 }, /* GL_LIGHT7 */
++ { 12787, 0x00000B50 }, /* GL_LIGHTING */
++ { 12799, 0x00000040 }, /* GL_LIGHTING_BIT */
++ { 12815, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */
++ { 12838, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */
++ { 12867, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */
++ { 12900, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
++ { 12928, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */
++ { 12952, 0x00001B01 }, /* GL_LINE */
++ { 12960, 0x00002601 }, /* GL_LINEAR */
++ { 12970, 0x00001208 }, /* GL_LINEAR_ATTENUATION */
++ { 12992, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
++ { 13022, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
++ { 13053, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */
++ { 13077, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */
++ { 13102, 0x00000001 }, /* GL_LINES */
++ { 13111, 0x00000004 }, /* GL_LINE_BIT */
++ { 13123, 0x00000002 }, /* GL_LINE_LOOP */
++ { 13136, 0x00000707 }, /* GL_LINE_RESET_TOKEN */
++ { 13156, 0x00000B20 }, /* GL_LINE_SMOOTH */
++ { 13171, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */
++ { 13191, 0x00000B24 }, /* GL_LINE_STIPPLE */
++ { 13207, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */
++ { 13231, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */
++ { 13254, 0x00000003 }, /* GL_LINE_STRIP */
++ { 13268, 0x00000702 }, /* GL_LINE_TOKEN */
++ { 13282, 0x00000B21 }, /* GL_LINE_WIDTH */
++ { 13296, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */
++ { 13322, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */
++ { 13342, 0x00008B82 }, /* GL_LINK_STATUS */
++ { 13357, 0x00000B32 }, /* GL_LIST_BASE */
++ { 13370, 0x00020000 }, /* GL_LIST_BIT */
++ { 13382, 0x00000B33 }, /* GL_LIST_INDEX */
++ { 13396, 0x00000B30 }, /* GL_LIST_MODE */
++ { 13409, 0x00000101 }, /* GL_LOAD */
++ { 13417, 0x00000BF1 }, /* GL_LOGIC_OP */
++ { 13429, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */
++ { 13446, 0x00008CA1 }, /* GL_LOWER_LEFT */
++ { 13460, 0x00001909 }, /* GL_LUMINANCE */
++ { 13473, 0x00008041 }, /* GL_LUMINANCE12 */
++ { 13488, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */
++ { 13511, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */
++ { 13538, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */
++ { 13560, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */
++ { 13586, 0x00008041 }, /* GL_LUMINANCE12_EXT */
++ { 13605, 0x00008042 }, /* GL_LUMINANCE16 */
++ { 13620, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */
++ { 13643, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */
++ { 13670, 0x00008042 }, /* GL_LUMINANCE16_EXT */
++ { 13689, 0x0000803F }, /* GL_LUMINANCE4 */
++ { 13703, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */
++ { 13724, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */
++ { 13749, 0x0000803F }, /* GL_LUMINANCE4_EXT */
++ { 13767, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */
++ { 13788, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */
++ { 13813, 0x00008040 }, /* GL_LUMINANCE8 */
++ { 13827, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */
++ { 13848, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */
++ { 13873, 0x00008040 }, /* GL_LUMINANCE8_EXT */
++ { 13891, 0x0000190A }, /* GL_LUMINANCE_ALPHA */
++ { 13910, 0x00000D90 }, /* GL_MAP1_COLOR_4 */
++ { 13926, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */
++ { 13946, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */
++ { 13968, 0x00000D91 }, /* GL_MAP1_INDEX */
++ { 13982, 0x00000D92 }, /* GL_MAP1_NORMAL */
++ { 13997, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */
++ { 14021, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */
++ { 14045, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */
++ { 14069, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */
++ { 14093, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */
++ { 14110, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */
++ { 14127, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
++ { 14155, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
++ { 14184, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
++ { 14213, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
++ { 14242, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
++ { 14271, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
++ { 14300, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
++ { 14329, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
++ { 14357, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
++ { 14385, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
++ { 14413, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
++ { 14441, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
++ { 14469, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
++ { 14497, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
++ { 14525, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
++ { 14553, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
++ { 14581, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */
++ { 14597, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */
++ { 14617, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */
++ { 14639, 0x00000DB1 }, /* GL_MAP2_INDEX */
++ { 14653, 0x00000DB2 }, /* GL_MAP2_NORMAL */
++ { 14668, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */
++ { 14692, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */
++ { 14716, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */
++ { 14740, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */
++ { 14764, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */
++ { 14781, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */
++ { 14798, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
++ { 14826, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
++ { 14855, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
++ { 14884, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
++ { 14913, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
++ { 14942, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
++ { 14971, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
++ { 15000, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
++ { 15028, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
++ { 15056, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
++ { 15084, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
++ { 15112, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
++ { 15140, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
++ { 15168, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */
++ { 15196, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
++ { 15224, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
++ { 15252, 0x00000D10 }, /* GL_MAP_COLOR */
++ { 15265, 0x00000D11 }, /* GL_MAP_STENCIL */
++ { 15280, 0x000088C0 }, /* GL_MATRIX0_ARB */
++ { 15295, 0x00008630 }, /* GL_MATRIX0_NV */
++ { 15309, 0x000088CA }, /* GL_MATRIX10_ARB */
++ { 15325, 0x000088CB }, /* GL_MATRIX11_ARB */
++ { 15341, 0x000088CC }, /* GL_MATRIX12_ARB */
++ { 15357, 0x000088CD }, /* GL_MATRIX13_ARB */
++ { 15373, 0x000088CE }, /* GL_MATRIX14_ARB */
++ { 15389, 0x000088CF }, /* GL_MATRIX15_ARB */
++ { 15405, 0x000088D0 }, /* GL_MATRIX16_ARB */
++ { 15421, 0x000088D1 }, /* GL_MATRIX17_ARB */
++ { 15437, 0x000088D2 }, /* GL_MATRIX18_ARB */
++ { 15453, 0x000088D3 }, /* GL_MATRIX19_ARB */
++ { 15469, 0x000088C1 }, /* GL_MATRIX1_ARB */
++ { 15484, 0x00008631 }, /* GL_MATRIX1_NV */
++ { 15498, 0x000088D4 }, /* GL_MATRIX20_ARB */
++ { 15514, 0x000088D5 }, /* GL_MATRIX21_ARB */
++ { 15530, 0x000088D6 }, /* GL_MATRIX22_ARB */
++ { 15546, 0x000088D7 }, /* GL_MATRIX23_ARB */
++ { 15562, 0x000088D8 }, /* GL_MATRIX24_ARB */
++ { 15578, 0x000088D9 }, /* GL_MATRIX25_ARB */
++ { 15594, 0x000088DA }, /* GL_MATRIX26_ARB */
++ { 15610, 0x000088DB }, /* GL_MATRIX27_ARB */
++ { 15626, 0x000088DC }, /* GL_MATRIX28_ARB */
++ { 15642, 0x000088DD }, /* GL_MATRIX29_ARB */
++ { 15658, 0x000088C2 }, /* GL_MATRIX2_ARB */
++ { 15673, 0x00008632 }, /* GL_MATRIX2_NV */
++ { 15687, 0x000088DE }, /* GL_MATRIX30_ARB */
++ { 15703, 0x000088DF }, /* GL_MATRIX31_ARB */
++ { 15719, 0x000088C3 }, /* GL_MATRIX3_ARB */
++ { 15734, 0x00008633 }, /* GL_MATRIX3_NV */
++ { 15748, 0x000088C4 }, /* GL_MATRIX4_ARB */
++ { 15763, 0x00008634 }, /* GL_MATRIX4_NV */
++ { 15777, 0x000088C5 }, /* GL_MATRIX5_ARB */
++ { 15792, 0x00008635 }, /* GL_MATRIX5_NV */
++ { 15806, 0x000088C6 }, /* GL_MATRIX6_ARB */
++ { 15821, 0x00008636 }, /* GL_MATRIX6_NV */
++ { 15835, 0x000088C7 }, /* GL_MATRIX7_ARB */
++ { 15850, 0x00008637 }, /* GL_MATRIX7_NV */
++ { 15864, 0x000088C8 }, /* GL_MATRIX8_ARB */
++ { 15879, 0x000088C9 }, /* GL_MATRIX9_ARB */
++ { 15894, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */
++ { 15920, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
++ { 15954, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
++ { 15985, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
++ { 16018, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
++ { 16049, 0x00000BA0 }, /* GL_MATRIX_MODE */
++ { 16064, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */
++ { 16086, 0x00008008 }, /* GL_MAX */
++ { 16093, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */
++ { 16116, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */
++ { 16148, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */
++ { 16174, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
++ { 16207, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
++ { 16233, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
++ { 16267, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */
++ { 16286, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */
++ { 16315, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
++ { 16347, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */
++ { 16383, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */
++ { 16419, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */
++ { 16459, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */
++ { 16485, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */
++ { 16515, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */
++ { 16540, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */
++ { 16569, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
++ { 16598, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */
++ { 16631, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */
++ { 16651, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */
++ { 16675, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */
++ { 16699, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */
++ { 16723, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */
++ { 16748, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */
++ { 16766, 0x00008008 }, /* GL_MAX_EXT */
++ { 16777, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
++ { 16812, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */
++ { 16851, 0x00000D31 }, /* GL_MAX_LIGHTS */
++ { 16865, 0x00000B31 }, /* GL_MAX_LIST_NESTING */
++ { 16885, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
++ { 16923, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */
++ { 16952, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */
++ { 16976, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */
++ { 17004, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */
++ { 17027, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
++ { 17064, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
++ { 17100, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
++ { 17127, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
++ { 17156, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
++ { 17190, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */
++ { 17226, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
++ { 17253, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
++ { 17285, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
++ { 17321, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
++ { 17350, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
++ { 17379, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */
++ { 17407, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
++ { 17445, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
++ { 17489, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
++ { 17532, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
++ { 17566, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
++ { 17605, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
++ { 17642, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
++ { 17680, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
++ { 17723, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
++ { 17766, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
++ { 17796, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
++ { 17827, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
++ { 17863, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
++ { 17899, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */
++ { 17929, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */
++ { 17963, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */
++ { 17996, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */
++ { 18025, 0x00008504 }, /* GL_MAX_SHININESS_NV */
++ { 18045, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */
++ { 18069, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */
++ { 18091, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */
++ { 18117, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */
++ { 18144, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */
++ { 18175, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */
++ { 18199, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
++ { 18233, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */
++ { 18253, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */
++ { 18280, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */
++ { 18301, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */
++ { 18326, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */
++ { 18351, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */
++ { 18386, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */
++ { 18408, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */
++ { 18434, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */
++ { 18456, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */
++ { 18482, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */
++ { 18516, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */
++ { 18554, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */
++ { 18587, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */
++ { 18624, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */
++ { 18648, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */
++ { 18669, 0x00008007 }, /* GL_MIN */
++ { 18676, 0x0000802E }, /* GL_MINMAX */
++ { 18686, 0x0000802E }, /* GL_MINMAX_EXT */
++ { 18700, 0x0000802F }, /* GL_MINMAX_FORMAT */
++ { 18717, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */
++ { 18738, 0x00008030 }, /* GL_MINMAX_SINK */
++ { 18753, 0x00008030 }, /* GL_MINMAX_SINK_EXT */
++ { 18772, 0x00008007 }, /* GL_MIN_EXT */
++ { 18783, 0x00008370 }, /* GL_MIRRORED_REPEAT */
++ { 18802, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */
++ { 18825, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */
++ { 18848, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */
++ { 18868, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */
++ { 18888, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
++ { 18918, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */
++ { 18946, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
++ { 18974, 0x00001700 }, /* GL_MODELVIEW */
++ { 18987, 0x00001700 }, /* GL_MODELVIEW0_ARB */
++ { 19005, 0x0000872A }, /* GL_MODELVIEW10_ARB */
++ { 19024, 0x0000872B }, /* GL_MODELVIEW11_ARB */
++ { 19043, 0x0000872C }, /* GL_MODELVIEW12_ARB */
++ { 19062, 0x0000872D }, /* GL_MODELVIEW13_ARB */
++ { 19081, 0x0000872E }, /* GL_MODELVIEW14_ARB */
++ { 19100, 0x0000872F }, /* GL_MODELVIEW15_ARB */
++ { 19119, 0x00008730 }, /* GL_MODELVIEW16_ARB */
++ { 19138, 0x00008731 }, /* GL_MODELVIEW17_ARB */
++ { 19157, 0x00008732 }, /* GL_MODELVIEW18_ARB */
++ { 19176, 0x00008733 }, /* GL_MODELVIEW19_ARB */
++ { 19195, 0x0000850A }, /* GL_MODELVIEW1_ARB */
++ { 19213, 0x00008734 }, /* GL_MODELVIEW20_ARB */
++ { 19232, 0x00008735 }, /* GL_MODELVIEW21_ARB */
++ { 19251, 0x00008736 }, /* GL_MODELVIEW22_ARB */
++ { 19270, 0x00008737 }, /* GL_MODELVIEW23_ARB */
++ { 19289, 0x00008738 }, /* GL_MODELVIEW24_ARB */
++ { 19308, 0x00008739 }, /* GL_MODELVIEW25_ARB */
++ { 19327, 0x0000873A }, /* GL_MODELVIEW26_ARB */
++ { 19346, 0x0000873B }, /* GL_MODELVIEW27_ARB */
++ { 19365, 0x0000873C }, /* GL_MODELVIEW28_ARB */
++ { 19384, 0x0000873D }, /* GL_MODELVIEW29_ARB */
++ { 19403, 0x00008722 }, /* GL_MODELVIEW2_ARB */
++ { 19421, 0x0000873E }, /* GL_MODELVIEW30_ARB */
++ { 19440, 0x0000873F }, /* GL_MODELVIEW31_ARB */
++ { 19459, 0x00008723 }, /* GL_MODELVIEW3_ARB */
++ { 19477, 0x00008724 }, /* GL_MODELVIEW4_ARB */
++ { 19495, 0x00008725 }, /* GL_MODELVIEW5_ARB */
++ { 19513, 0x00008726 }, /* GL_MODELVIEW6_ARB */
++ { 19531, 0x00008727 }, /* GL_MODELVIEW7_ARB */
++ { 19549, 0x00008728 }, /* GL_MODELVIEW8_ARB */
++ { 19567, 0x00008729 }, /* GL_MODELVIEW9_ARB */
++ { 19585, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */
++ { 19605, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */
++ { 19632, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */
++ { 19657, 0x00002100 }, /* GL_MODULATE */
++ { 19669, 0x00008744 }, /* GL_MODULATE_ADD_ATI */
++ { 19689, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */
++ { 19716, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */
++ { 19741, 0x00000103 }, /* GL_MULT */
++ { 19749, 0x0000809D }, /* GL_MULTISAMPLE */
++ { 19764, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */
++ { 19784, 0x0000809D }, /* GL_MULTISAMPLE_ARB */
++ { 19803, 0x20000000 }, /* GL_MULTISAMPLE_BIT */
++ { 19822, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */
++ { 19846, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */
++ { 19869, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */
++ { 19899, 0x00002A25 }, /* GL_N3F_V3F */
++ { 19910, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */
++ { 19930, 0x0000150E }, /* GL_NAND */
++ { 19938, 0x00002600 }, /* GL_NEAREST */
++ { 19949, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
++ { 19980, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
++ { 20012, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */
++ { 20037, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */
++ { 20063, 0x00000200 }, /* GL_NEVER */
++ { 20072, 0x00001102 }, /* GL_NICEST */
++ { 20082, 0x00000000 }, /* GL_NONE */
++ { 20090, 0x00001505 }, /* GL_NOOP */
++ { 20098, 0x00001508 }, /* GL_NOR */
++ { 20105, 0x00000BA1 }, /* GL_NORMALIZE */
++ { 20118, 0x00008075 }, /* GL_NORMAL_ARRAY */
++ { 20134, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
++ { 20165, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */
++ { 20200, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */
++ { 20224, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */
++ { 20247, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */
++ { 20268, 0x00008511 }, /* GL_NORMAL_MAP */
++ { 20282, 0x00008511 }, /* GL_NORMAL_MAP_ARB */
++ { 20300, 0x00008511 }, /* GL_NORMAL_MAP_NV */
++ { 20317, 0x00000205 }, /* GL_NOTEQUAL */
++ { 20329, 0x00000000 }, /* GL_NO_ERROR */
++ { 20341, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
++ { 20375, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */
++ { 20413, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */
++ { 20445, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */
++ { 20487, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */
++ { 20517, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */
++ { 20557, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */
++ { 20588, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */
++ { 20617, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */
++ { 20645, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */
++ { 20675, 0x00002401 }, /* GL_OBJECT_LINEAR */
++ { 20692, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */
++ { 20718, 0x00002501 }, /* GL_OBJECT_PLANE */
++ { 20734, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */
++ { 20769, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */
++ { 20791, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */
++ { 20810, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */
++ { 20840, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */
++ { 20861, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */
++ { 20889, 0x00000001 }, /* GL_ONE */
++ { 20896, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */
++ { 20924, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */
++ { 20956, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */
++ { 20984, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */
++ { 21016, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */
++ { 21039, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */
++ { 21062, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */
++ { 21085, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */
++ { 21108, 0x00008598 }, /* GL_OPERAND0_ALPHA */
++ { 21126, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */
++ { 21148, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */
++ { 21170, 0x00008590 }, /* GL_OPERAND0_RGB */
++ { 21186, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */
++ { 21206, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */
++ { 21226, 0x00008599 }, /* GL_OPERAND1_ALPHA */
++ { 21244, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */
++ { 21266, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */
++ { 21288, 0x00008591 }, /* GL_OPERAND1_RGB */
++ { 21304, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */
++ { 21324, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */
++ { 21344, 0x0000859A }, /* GL_OPERAND2_ALPHA */
++ { 21362, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */
++ { 21384, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */
++ { 21406, 0x00008592 }, /* GL_OPERAND2_RGB */
++ { 21422, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */
++ { 21442, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */
++ { 21462, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */
++ { 21483, 0x00008593 }, /* GL_OPERAND3_RGB_NV */
++ { 21502, 0x00001507 }, /* GL_OR */
++ { 21508, 0x00000A01 }, /* GL_ORDER */
++ { 21517, 0x0000150D }, /* GL_OR_INVERTED */
++ { 21532, 0x0000150B }, /* GL_OR_REVERSE */
++ { 21546, 0x00000505 }, /* GL_OUT_OF_MEMORY */
++ { 21563, 0x00000D05 }, /* GL_PACK_ALIGNMENT */
++ { 21581, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */
++ { 21602, 0x00008758 }, /* GL_PACK_INVERT_MESA */
++ { 21622, 0x00000D01 }, /* GL_PACK_LSB_FIRST */
++ { 21640, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */
++ { 21659, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */
++ { 21679, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */
++ { 21699, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */
++ { 21717, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */
++ { 21736, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */
++ { 21761, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */
++ { 21785, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */
++ { 21806, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */
++ { 21828, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */
++ { 21850, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */
++ { 21875, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */
++ { 21899, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */
++ { 21920, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */
++ { 21942, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */
++ { 21964, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */
++ { 21986, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */
++ { 22017, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */
++ { 22037, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */
++ { 22062, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */
++ { 22082, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */
++ { 22107, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */
++ { 22127, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */
++ { 22152, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */
++ { 22172, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */
++ { 22197, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */
++ { 22217, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */
++ { 22242, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */
++ { 22262, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */
++ { 22287, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */
++ { 22307, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */
++ { 22332, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */
++ { 22352, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */
++ { 22377, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */
++ { 22397, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */
++ { 22422, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */
++ { 22442, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */
++ { 22467, 0x00000020 }, /* GL_PIXEL_MODE_BIT */
++ { 22485, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */
++ { 22518, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */
++ { 22543, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */
++ { 22578, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */
++ { 22605, 0x00001B00 }, /* GL_POINT */
++ { 22614, 0x00000000 }, /* GL_POINTS */
++ { 22624, 0x00000002 }, /* GL_POINT_BIT */
++ { 22637, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */
++ { 22667, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */
++ { 22701, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */
++ { 22735, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */
++ { 22770, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */
++ { 22799, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */
++ { 22832, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */
++ { 22865, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */
++ { 22899, 0x00000B11 }, /* GL_POINT_SIZE */
++ { 22913, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */
++ { 22939, 0x00008127 }, /* GL_POINT_SIZE_MAX */
++ { 22957, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */
++ { 22979, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */
++ { 23001, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */
++ { 23024, 0x00008126 }, /* GL_POINT_SIZE_MIN */
++ { 23042, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */
++ { 23064, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */
++ { 23086, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */
++ { 23109, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */
++ { 23129, 0x00000B10 }, /* GL_POINT_SMOOTH */
++ { 23145, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */
++ { 23166, 0x00008861 }, /* GL_POINT_SPRITE */
++ { 23182, 0x00008861 }, /* GL_POINT_SPRITE_ARB */
++ { 23202, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */
++ { 23231, 0x00008861 }, /* GL_POINT_SPRITE_NV */
++ { 23250, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */
++ { 23276, 0x00000701 }, /* GL_POINT_TOKEN */
++ { 23291, 0x00000009 }, /* GL_POLYGON */
++ { 23302, 0x00000008 }, /* GL_POLYGON_BIT */
++ { 23317, 0x00000B40 }, /* GL_POLYGON_MODE */
++ { 23333, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */
++ { 23356, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */
++ { 23381, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */
++ { 23404, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */
++ { 23427, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */
++ { 23451, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */
++ { 23475, 0x00000B41 }, /* GL_POLYGON_SMOOTH */
++ { 23493, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */
++ { 23516, 0x00000B42 }, /* GL_POLYGON_STIPPLE */
++ { 23535, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */
++ { 23558, 0x00000703 }, /* GL_POLYGON_TOKEN */
++ { 23575, 0x00001203 }, /* GL_POSITION */
++ { 23587, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
++ { 23619, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */
++ { 23655, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
++ { 23688, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */
++ { 23725, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
++ { 23756, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */
++ { 23791, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
++ { 23823, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */
++ { 23859, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
++ { 23892, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
++ { 23924, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */
++ { 23960, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
++ { 23993, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */
++ { 24030, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */
++ { 24060, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */
++ { 24094, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */
++ { 24125, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */
++ { 24160, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
++ { 24191, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */
++ { 24226, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
++ { 24258, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */
++ { 24294, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */
++ { 24324, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */
++ { 24358, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */
++ { 24389, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */
++ { 24424, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */
++ { 24456, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */
++ { 24487, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */
++ { 24522, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */
++ { 24554, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */
++ { 24590, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */
++ { 24619, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */
++ { 24652, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */
++ { 24682, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */
++ { 24716, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
++ { 24755, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
++ { 24788, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
++ { 24828, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
++ { 24862, 0x00008578 }, /* GL_PREVIOUS */
++ { 24874, 0x00008578 }, /* GL_PREVIOUS_ARB */
++ { 24890, 0x00008578 }, /* GL_PREVIOUS_EXT */
++ { 24906, 0x00008577 }, /* GL_PRIMARY_COLOR */
++ { 24923, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */
++ { 24944, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */
++ { 24965, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
++ { 24998, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
++ { 25030, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */
++ { 25053, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */
++ { 25076, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */
++ { 25106, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */
++ { 25135, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */
++ { 25163, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */
++ { 25185, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */
++ { 25213, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */
++ { 25241, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */
++ { 25263, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */
++ { 25284, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
++ { 25324, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
++ { 25363, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
++ { 25393, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
++ { 25428, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
++ { 25461, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
++ { 25495, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
++ { 25534, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
++ { 25573, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */
++ { 25595, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */
++ { 25621, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */
++ { 25645, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */
++ { 25668, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */
++ { 25690, 0x00008628 }, /* GL_PROGRAM_STRING_NV */
++ { 25711, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */
++ { 25732, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */
++ { 25759, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
++ { 25791, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
++ { 25823, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
++ { 25858, 0x00001701 }, /* GL_PROJECTION */
++ { 25872, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */
++ { 25893, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */
++ { 25919, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */
++ { 25940, 0x00008025 }, /* GL_PROXY_HISTOGRAM */
++ { 25959, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */
++ { 25982, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
++ { 26021, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
++ { 26059, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */
++ { 26079, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */
++ { 26109, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */
++ { 26133, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */
++ { 26153, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */
++ { 26183, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */
++ { 26207, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */
++ { 26227, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
++ { 26260, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */
++ { 26286, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */
++ { 26316, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */
++ { 26347, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */
++ { 26377, 0x00002003 }, /* GL_Q */
++ { 26382, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */
++ { 26407, 0x00000007 }, /* GL_QUADS */
++ { 26416, 0x00008614 }, /* GL_QUAD_MESH_SUN */
++ { 26433, 0x00000008 }, /* GL_QUAD_STRIP */
++ { 26447, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */
++ { 26469, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */
++ { 26495, 0x00008866 }, /* GL_QUERY_RESULT */
++ { 26511, 0x00008866 }, /* GL_QUERY_RESULT_ARB */
++ { 26531, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */
++ { 26557, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */
++ { 26587, 0x00002002 }, /* GL_R */
++ { 26592, 0x00002A10 }, /* GL_R3_G3_B2 */
++ { 26604, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
++ { 26637, 0x00000C02 }, /* GL_READ_BUFFER */
++ { 26652, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */
++ { 26684, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */
++ { 26708, 0x000088B8 }, /* GL_READ_ONLY */
++ { 26721, 0x000088B8 }, /* GL_READ_ONLY_ARB */
++ { 26738, 0x000088BA }, /* GL_READ_WRITE */
++ { 26752, 0x000088BA }, /* GL_READ_WRITE_ARB */
++ { 26770, 0x00001903 }, /* GL_RED */
++ { 26777, 0x00008016 }, /* GL_REDUCE */
++ { 26787, 0x00008016 }, /* GL_REDUCE_EXT */
++ { 26801, 0x00000D15 }, /* GL_RED_BIAS */
++ { 26813, 0x00000D52 }, /* GL_RED_BITS */
++ { 26825, 0x00000D14 }, /* GL_RED_SCALE */
++ { 26838, 0x00008512 }, /* GL_REFLECTION_MAP */
++ { 26856, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */
++ { 26878, 0x00008512 }, /* GL_REFLECTION_MAP_NV */
++ { 26899, 0x00001C00 }, /* GL_RENDER */
++ { 26909, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */
++ { 26937, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */
++ { 26957, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */
++ { 26984, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */
++ { 27020, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */
++ { 27046, 0x00001F01 }, /* GL_RENDERER */
++ { 27058, 0x00000C40 }, /* GL_RENDER_MODE */
++ { 27073, 0x00002901 }, /* GL_REPEAT */
++ { 27083, 0x00001E01 }, /* GL_REPLACE */
++ { 27094, 0x00008062 }, /* GL_REPLACE_EXT */
++ { 27109, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */
++ { 27132, 0x0000803A }, /* GL_RESCALE_NORMAL */
++ { 27150, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */
++ { 27172, 0x00000102 }, /* GL_RETURN */
++ { 27182, 0x00001907 }, /* GL_RGB */
++ { 27189, 0x00008052 }, /* GL_RGB10 */
++ { 27198, 0x00008059 }, /* GL_RGB10_A2 */
++ { 27210, 0x00008059 }, /* GL_RGB10_A2_EXT */
++ { 27226, 0x00008052 }, /* GL_RGB10_EXT */
++ { 27239, 0x00008053 }, /* GL_RGB12 */
++ { 27248, 0x00008053 }, /* GL_RGB12_EXT */
++ { 27261, 0x00008054 }, /* GL_RGB16 */
++ { 27270, 0x00008054 }, /* GL_RGB16_EXT */
++ { 27283, 0x0000804E }, /* GL_RGB2_EXT */
++ { 27295, 0x0000804F }, /* GL_RGB4 */
++ { 27303, 0x0000804F }, /* GL_RGB4_EXT */
++ { 27315, 0x000083A1 }, /* GL_RGB4_S3TC */
++ { 27328, 0x00008050 }, /* GL_RGB5 */
++ { 27336, 0x00008057 }, /* GL_RGB5_A1 */
++ { 27347, 0x00008057 }, /* GL_RGB5_A1_EXT */
++ { 27362, 0x00008050 }, /* GL_RGB5_EXT */
++ { 27374, 0x00008051 }, /* GL_RGB8 */
++ { 27382, 0x00008051 }, /* GL_RGB8_EXT */
++ { 27394, 0x00001908 }, /* GL_RGBA */
++ { 27402, 0x0000805A }, /* GL_RGBA12 */
++ { 27412, 0x0000805A }, /* GL_RGBA12_EXT */
++ { 27426, 0x0000805B }, /* GL_RGBA16 */
++ { 27436, 0x0000805B }, /* GL_RGBA16_EXT */
++ { 27450, 0x00008055 }, /* GL_RGBA2 */
++ { 27459, 0x00008055 }, /* GL_RGBA2_EXT */
++ { 27472, 0x00008056 }, /* GL_RGBA4 */
++ { 27481, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */
++ { 27500, 0x00008056 }, /* GL_RGBA4_EXT */
++ { 27513, 0x000083A3 }, /* GL_RGBA4_S3TC */
++ { 27527, 0x00008058 }, /* GL_RGBA8 */
++ { 27536, 0x00008058 }, /* GL_RGBA8_EXT */
++ { 27549, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */
++ { 27567, 0x00000C31 }, /* GL_RGBA_MODE */
++ { 27580, 0x000083A2 }, /* GL_RGBA_S3TC */
++ { 27593, 0x000083A0 }, /* GL_RGB_S3TC */
++ { 27605, 0x00008573 }, /* GL_RGB_SCALE */
++ { 27618, 0x00008573 }, /* GL_RGB_SCALE_ARB */
++ { 27635, 0x00008573 }, /* GL_RGB_SCALE_EXT */
++ { 27652, 0x00000407 }, /* GL_RIGHT */
++ { 27661, 0x00002000 }, /* GL_S */
++ { 27666, 0x00008B5D }, /* GL_SAMPLER_1D */
++ { 27680, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */
++ { 27701, 0x00008B5E }, /* GL_SAMPLER_2D */
++ { 27715, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */
++ { 27736, 0x00008B5F }, /* GL_SAMPLER_3D */
++ { 27750, 0x00008B60 }, /* GL_SAMPLER_CUBE */
++ { 27766, 0x000080A9 }, /* GL_SAMPLES */
++ { 27777, 0x000086B4 }, /* GL_SAMPLES_3DFX */
++ { 27793, 0x000080A9 }, /* GL_SAMPLES_ARB */
++ { 27808, 0x00008914 }, /* GL_SAMPLES_PASSED */
++ { 27826, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */
++ { 27848, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
++ { 27876, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */
++ { 27908, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */
++ { 27931, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */
++ { 27958, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */
++ { 27976, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */
++ { 27999, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */
++ { 28021, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */
++ { 28040, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */
++ { 28063, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */
++ { 28089, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */
++ { 28119, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */
++ { 28144, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */
++ { 28173, 0x00080000 }, /* GL_SCISSOR_BIT */
++ { 28188, 0x00000C10 }, /* GL_SCISSOR_BOX */
++ { 28203, 0x00000C11 }, /* GL_SCISSOR_TEST */
++ { 28219, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */
++ { 28244, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
++ { 28284, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */
++ { 28328, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
++ { 28361, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
++ { 28391, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
++ { 28423, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
++ { 28453, 0x00001C02 }, /* GL_SELECT */
++ { 28463, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */
++ { 28491, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */
++ { 28516, 0x00008012 }, /* GL_SEPARABLE_2D */
++ { 28532, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */
++ { 28559, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */
++ { 28590, 0x0000150F }, /* GL_SET */
++ { 28597, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */
++ { 28618, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */
++ { 28642, 0x00008B4F }, /* GL_SHADER_TYPE */
++ { 28657, 0x00000B54 }, /* GL_SHADE_MODEL */
++ { 28672, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */
++ { 28700, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */
++ { 28723, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */
++ { 28753, 0x00001601 }, /* GL_SHININESS */
++ { 28766, 0x00001402 }, /* GL_SHORT */
++ { 28775, 0x000081F9 }, /* GL_SINGLE_COLOR */
++ { 28791, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */
++ { 28811, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */
++ { 28830, 0x00001D01 }, /* GL_SMOOTH */
++ { 28840, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */
++ { 28873, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */
++ { 28900, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */
++ { 28933, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */
++ { 28960, 0x00008588 }, /* GL_SOURCE0_ALPHA */
++ { 28977, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */
++ { 28998, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */
++ { 29019, 0x00008580 }, /* GL_SOURCE0_RGB */
++ { 29034, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */
++ { 29053, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */
++ { 29072, 0x00008589 }, /* GL_SOURCE1_ALPHA */
++ { 29089, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */
++ { 29110, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */
++ { 29131, 0x00008581 }, /* GL_SOURCE1_RGB */
++ { 29146, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */
++ { 29165, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */
++ { 29184, 0x0000858A }, /* GL_SOURCE2_ALPHA */
++ { 29201, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */
++ { 29222, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */
++ { 29243, 0x00008582 }, /* GL_SOURCE2_RGB */
++ { 29258, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */
++ { 29277, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */
++ { 29296, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */
++ { 29316, 0x00008583 }, /* GL_SOURCE3_RGB_NV */
++ { 29334, 0x00001202 }, /* GL_SPECULAR */
++ { 29346, 0x00002402 }, /* GL_SPHERE_MAP */
++ { 29360, 0x00001206 }, /* GL_SPOT_CUTOFF */
++ { 29375, 0x00001204 }, /* GL_SPOT_DIRECTION */
++ { 29393, 0x00001205 }, /* GL_SPOT_EXPONENT */
++ { 29410, 0x00008588 }, /* GL_SRC0_ALPHA */
++ { 29424, 0x00008580 }, /* GL_SRC0_RGB */
++ { 29436, 0x00008589 }, /* GL_SRC1_ALPHA */
++ { 29450, 0x00008581 }, /* GL_SRC1_RGB */
++ { 29462, 0x0000858A }, /* GL_SRC2_ALPHA */
++ { 29476, 0x00008582 }, /* GL_SRC2_RGB */
++ { 29488, 0x00000302 }, /* GL_SRC_ALPHA */
++ { 29501, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */
++ { 29523, 0x00000300 }, /* GL_SRC_COLOR */
++ { 29536, 0x00000503 }, /* GL_STACK_OVERFLOW */
++ { 29554, 0x00000504 }, /* GL_STACK_UNDERFLOW */
++ { 29573, 0x000088E6 }, /* GL_STATIC_COPY */
++ { 29588, 0x000088E6 }, /* GL_STATIC_COPY_ARB */
++ { 29607, 0x000088E4 }, /* GL_STATIC_DRAW */
++ { 29622, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */
++ { 29641, 0x000088E5 }, /* GL_STATIC_READ */
++ { 29656, 0x000088E5 }, /* GL_STATIC_READ_ARB */
++ { 29675, 0x00001802 }, /* GL_STENCIL */
++ { 29686, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */
++ { 29712, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */
++ { 29733, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */
++ { 29754, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
++ { 29786, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
++ { 29818, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */
++ { 29838, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */
++ { 29865, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */
++ { 29891, 0x00000D57 }, /* GL_STENCIL_BITS */
++ { 29907, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */
++ { 29929, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */
++ { 29952, 0x00000B94 }, /* GL_STENCIL_FAIL */
++ { 29968, 0x00000B92 }, /* GL_STENCIL_FUNC */
++ { 29984, 0x00001901 }, /* GL_STENCIL_INDEX */
++ { 30001, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */
++ { 30024, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */
++ { 30046, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */
++ { 30068, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */
++ { 30090, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */
++ { 30111, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */
++ { 30138, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */
++ { 30165, 0x00000B97 }, /* GL_STENCIL_REF */
++ { 30180, 0x00000B90 }, /* GL_STENCIL_TEST */
++ { 30196, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
++ { 30225, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */
++ { 30247, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */
++ { 30268, 0x00000C33 }, /* GL_STEREO */
++ { 30278, 0x000088E2 }, /* GL_STREAM_COPY */
++ { 30293, 0x000088E2 }, /* GL_STREAM_COPY_ARB */
++ { 30312, 0x000088E0 }, /* GL_STREAM_DRAW */
++ { 30327, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */
++ { 30346, 0x000088E1 }, /* GL_STREAM_READ */
++ { 30361, 0x000088E1 }, /* GL_STREAM_READ_ARB */
++ { 30380, 0x00000D50 }, /* GL_SUBPIXEL_BITS */
++ { 30397, 0x000084E7 }, /* GL_SUBTRACT */
++ { 30409, 0x000084E7 }, /* GL_SUBTRACT_ARB */
++ { 30425, 0x00002001 }, /* GL_T */
++ { 30430, 0x00002A2A }, /* GL_T2F_C3F_V3F */
++ { 30445, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */
++ { 30464, 0x00002A29 }, /* GL_T2F_C4UB_V3F */
++ { 30480, 0x00002A2B }, /* GL_T2F_N3F_V3F */
++ { 30495, 0x00002A27 }, /* GL_T2F_V3F */
++ { 30506, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */
++ { 30525, 0x00002A28 }, /* GL_T4F_V4F */
++ { 30536, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */
++ { 30559, 0x00001702 }, /* GL_TEXTURE */
++ { 30570, 0x000084C0 }, /* GL_TEXTURE0 */
++ { 30582, 0x000084C0 }, /* GL_TEXTURE0_ARB */
++ { 30598, 0x000084C1 }, /* GL_TEXTURE1 */
++ { 30610, 0x000084CA }, /* GL_TEXTURE10 */
++ { 30623, 0x000084CA }, /* GL_TEXTURE10_ARB */
++ { 30640, 0x000084CB }, /* GL_TEXTURE11 */
++ { 30653, 0x000084CB }, /* GL_TEXTURE11_ARB */
++ { 30670, 0x000084CC }, /* GL_TEXTURE12 */
++ { 30683, 0x000084CC }, /* GL_TEXTURE12_ARB */
++ { 30700, 0x000084CD }, /* GL_TEXTURE13 */
++ { 30713, 0x000084CD }, /* GL_TEXTURE13_ARB */
++ { 30730, 0x000084CE }, /* GL_TEXTURE14 */
++ { 30743, 0x000084CE }, /* GL_TEXTURE14_ARB */
++ { 30760, 0x000084CF }, /* GL_TEXTURE15 */
++ { 30773, 0x000084CF }, /* GL_TEXTURE15_ARB */
++ { 30790, 0x000084D0 }, /* GL_TEXTURE16 */
++ { 30803, 0x000084D0 }, /* GL_TEXTURE16_ARB */
++ { 30820, 0x000084D1 }, /* GL_TEXTURE17 */
++ { 30833, 0x000084D1 }, /* GL_TEXTURE17_ARB */
++ { 30850, 0x000084D2 }, /* GL_TEXTURE18 */
++ { 30863, 0x000084D2 }, /* GL_TEXTURE18_ARB */
++ { 30880, 0x000084D3 }, /* GL_TEXTURE19 */
++ { 30893, 0x000084D3 }, /* GL_TEXTURE19_ARB */
++ { 30910, 0x000084C1 }, /* GL_TEXTURE1_ARB */
++ { 30926, 0x000084C2 }, /* GL_TEXTURE2 */
++ { 30938, 0x000084D4 }, /* GL_TEXTURE20 */
++ { 30951, 0x000084D4 }, /* GL_TEXTURE20_ARB */
++ { 30968, 0x000084D5 }, /* GL_TEXTURE21 */
++ { 30981, 0x000084D5 }, /* GL_TEXTURE21_ARB */
++ { 30998, 0x000084D6 }, /* GL_TEXTURE22 */
++ { 31011, 0x000084D6 }, /* GL_TEXTURE22_ARB */
++ { 31028, 0x000084D7 }, /* GL_TEXTURE23 */
++ { 31041, 0x000084D7 }, /* GL_TEXTURE23_ARB */
++ { 31058, 0x000084D8 }, /* GL_TEXTURE24 */
++ { 31071, 0x000084D8 }, /* GL_TEXTURE24_ARB */
++ { 31088, 0x000084D9 }, /* GL_TEXTURE25 */
++ { 31101, 0x000084D9 }, /* GL_TEXTURE25_ARB */
++ { 31118, 0x000084DA }, /* GL_TEXTURE26 */
++ { 31131, 0x000084DA }, /* GL_TEXTURE26_ARB */
++ { 31148, 0x000084DB }, /* GL_TEXTURE27 */
++ { 31161, 0x000084DB }, /* GL_TEXTURE27_ARB */
++ { 31178, 0x000084DC }, /* GL_TEXTURE28 */
++ { 31191, 0x000084DC }, /* GL_TEXTURE28_ARB */
++ { 31208, 0x000084DD }, /* GL_TEXTURE29 */
++ { 31221, 0x000084DD }, /* GL_TEXTURE29_ARB */
++ { 31238, 0x000084C2 }, /* GL_TEXTURE2_ARB */
++ { 31254, 0x000084C3 }, /* GL_TEXTURE3 */
++ { 31266, 0x000084DE }, /* GL_TEXTURE30 */
++ { 31279, 0x000084DE }, /* GL_TEXTURE30_ARB */
++ { 31296, 0x000084DF }, /* GL_TEXTURE31 */
++ { 31309, 0x000084DF }, /* GL_TEXTURE31_ARB */
++ { 31326, 0x000084C3 }, /* GL_TEXTURE3_ARB */
++ { 31342, 0x000084C4 }, /* GL_TEXTURE4 */
++ { 31354, 0x000084C4 }, /* GL_TEXTURE4_ARB */
++ { 31370, 0x000084C5 }, /* GL_TEXTURE5 */
++ { 31382, 0x000084C5 }, /* GL_TEXTURE5_ARB */
++ { 31398, 0x000084C6 }, /* GL_TEXTURE6 */
++ { 31410, 0x000084C6 }, /* GL_TEXTURE6_ARB */
++ { 31426, 0x000084C7 }, /* GL_TEXTURE7 */
++ { 31438, 0x000084C7 }, /* GL_TEXTURE7_ARB */
++ { 31454, 0x000084C8 }, /* GL_TEXTURE8 */
++ { 31466, 0x000084C8 }, /* GL_TEXTURE8_ARB */
++ { 31482, 0x000084C9 }, /* GL_TEXTURE9 */
++ { 31494, 0x000084C9 }, /* GL_TEXTURE9_ARB */
++ { 31510, 0x00000DE0 }, /* GL_TEXTURE_1D */
++ { 31524, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */
++ { 31548, 0x00000DE1 }, /* GL_TEXTURE_2D */
++ { 31562, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */
++ { 31586, 0x0000806F }, /* GL_TEXTURE_3D */
++ { 31600, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */
++ { 31622, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */
++ { 31648, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */
++ { 31670, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */
++ { 31692, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */
++ { 31724, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */
++ { 31746, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */
++ { 31778, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */
++ { 31800, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */
++ { 31828, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */
++ { 31860, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */
++ { 31893, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */
++ { 31925, 0x00040000 }, /* GL_TEXTURE_BIT */
++ { 31940, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */
++ { 31961, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */
++ { 31986, 0x00001005 }, /* GL_TEXTURE_BORDER */
++ { 32004, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */
++ { 32028, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
++ { 32059, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
++ { 32089, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
++ { 32119, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
++ { 32154, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
++ { 32185, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
++ { 32223, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */
++ { 32250, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
++ { 32282, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
++ { 32316, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */
++ { 32340, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */
++ { 32368, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */
++ { 32392, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */
++ { 32420, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
++ { 32453, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */
++ { 32477, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */
++ { 32499, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */
++ { 32521, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */
++ { 32547, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */
++ { 32581, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
++ { 32614, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */
++ { 32651, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */
++ { 32679, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */
++ { 32711, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */
++ { 32734, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
++ { 32772, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */
++ { 32814, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */
++ { 32845, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */
++ { 32873, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
++ { 32903, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */
++ { 32931, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */
++ { 32951, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */
++ { 32975, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
++ { 33006, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */
++ { 33041, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
++ { 33072, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */
++ { 33107, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
++ { 33138, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */
++ { 33173, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
++ { 33204, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */
++ { 33239, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
++ { 33270, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */
++ { 33305, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
++ { 33336, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */
++ { 33371, 0x00008071 }, /* GL_TEXTURE_DEPTH */
++ { 33388, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */
++ { 33410, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */
++ { 33436, 0x00002300 }, /* GL_TEXTURE_ENV */
++ { 33451, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */
++ { 33472, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */
++ { 33492, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */
++ { 33518, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */
++ { 33538, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */
++ { 33555, 0x00000C62 }, /* GL_TEXTURE_GEN_R */
++ { 33572, 0x00000C60 }, /* GL_TEXTURE_GEN_S */
++ { 33589, 0x00000C61 }, /* GL_TEXTURE_GEN_T */
++ { 33606, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */
++ { 33631, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */
++ { 33653, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */
++ { 33679, 0x00001001 }, /* GL_TEXTURE_HEIGHT */
++ { 33697, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */
++ { 33723, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */
++ { 33749, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */
++ { 33779, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */
++ { 33806, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */
++ { 33831, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */
++ { 33851, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */
++ { 33875, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
++ { 33902, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
++ { 33929, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
++ { 33956, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */
++ { 33982, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */
++ { 34012, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */
++ { 34034, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */
++ { 34052, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
++ { 34082, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
++ { 34110, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
++ { 34138, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
++ { 34166, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */
++ { 34187, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */
++ { 34206, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */
++ { 34228, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */
++ { 34247, 0x00008066 }, /* GL_TEXTURE_PRIORITY */
++ { 34267, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */
++ { 34292, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */
++ { 34316, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */
++ { 34336, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */
++ { 34360, 0x00008067 }, /* GL_TEXTURE_RESIDENT */
++ { 34380, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */
++ { 34403, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */
++ { 34428, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
++ { 34462, 0x00001000 }, /* GL_TEXTURE_WIDTH */
++ { 34479, 0x00008072 }, /* GL_TEXTURE_WRAP_R */
++ { 34497, 0x00002802 }, /* GL_TEXTURE_WRAP_S */
++ { 34515, 0x00002803 }, /* GL_TEXTURE_WRAP_T */
++ { 34533, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */
++ { 34553, 0x00008648 }, /* GL_TRACK_MATRIX_NV */
++ { 34572, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */
++ { 34601, 0x00001000 }, /* GL_TRANSFORM_BIT */
++ { 34618, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */
++ { 34644, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */
++ { 34674, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
++ { 34706, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
++ { 34736, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */
++ { 34770, 0x0000862C }, /* GL_TRANSPOSE_NV */
++ { 34786, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */
++ { 34817, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */
++ { 34852, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */
++ { 34880, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */
++ { 34912, 0x00000004 }, /* GL_TRIANGLES */
++ { 34925, 0x00000006 }, /* GL_TRIANGLE_FAN */
++ { 34941, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */
++ { 34962, 0x00000005 }, /* GL_TRIANGLE_STRIP */
++ { 34980, 0x00000001 }, /* GL_TRUE */
++ { 34988, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */
++ { 35008, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */
++ { 35031, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */
++ { 35051, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */
++ { 35072, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */
++ { 35094, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */
++ { 35116, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */
++ { 35136, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */
++ { 35157, 0x00001401 }, /* GL_UNSIGNED_BYTE */
++ { 35174, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */
++ { 35201, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */
++ { 35224, 0x00001405 }, /* GL_UNSIGNED_INT */
++ { 35240, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */
++ { 35267, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */
++ { 35291, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */
++ { 35322, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */
++ { 35346, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */
++ { 35374, 0x00001403 }, /* GL_UNSIGNED_SHORT */
++ { 35392, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
++ { 35422, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */
++ { 35448, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
++ { 35478, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */
++ { 35504, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */
++ { 35528, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */
++ { 35556, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */
++ { 35584, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */
++ { 35611, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
++ { 35643, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */
++ { 35674, 0x00008CA2 }, /* GL_UPPER_LEFT */
++ { 35688, 0x00002A20 }, /* GL_V2F */
++ { 35695, 0x00002A21 }, /* GL_V3F */
++ { 35702, 0x00008B83 }, /* GL_VALIDATE_STATUS */
++ { 35721, 0x00001F00 }, /* GL_VENDOR */
++ { 35731, 0x00001F02 }, /* GL_VERSION */
++ { 35742, 0x00008074 }, /* GL_VERTEX_ARRAY */
++ { 35758, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */
++ { 35788, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
++ { 35819, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */
++ { 35854, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */
++ { 35878, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */
++ { 35899, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */
++ { 35922, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */
++ { 35943, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
++ { 35970, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
++ { 35998, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
++ { 36026, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
++ { 36054, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
++ { 36082, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
++ { 36110, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
++ { 36138, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
++ { 36165, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
++ { 36192, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
++ { 36219, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
++ { 36246, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
++ { 36273, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
++ { 36300, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
++ { 36327, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
++ { 36354, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
++ { 36381, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
++ { 36419, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */
++ { 36461, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
++ { 36492, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */
++ { 36527, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
++ { 36561, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */
++ { 36599, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
++ { 36630, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */
++ { 36665, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
++ { 36693, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */
++ { 36725, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
++ { 36755, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */
++ { 36789, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
++ { 36817, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */
++ { 36849, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */
++ { 36869, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */
++ { 36891, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */
++ { 36920, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */
++ { 36941, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */
++ { 36970, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */
++ { 37003, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */
++ { 37035, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */
++ { 37062, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */
++ { 37093, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */
++ { 37123, 0x00008B31 }, /* GL_VERTEX_SHADER */
++ { 37140, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */
++ { 37161, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */
++ { 37188, 0x00000BA2 }, /* GL_VIEWPORT */
++ { 37200, 0x00000800 }, /* GL_VIEWPORT_BIT */
++ { 37216, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */
++ { 37236, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
++ { 37267, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */
++ { 37302, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */
++ { 37330, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */
++ { 37355, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
++ { 37382, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */
++ { 37407, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */
++ { 37431, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */
++ { 37450, 0x000088B9 }, /* GL_WRITE_ONLY */
++ { 37464, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */
++ { 37482, 0x00001506 }, /* GL_XOR */
++ { 37489, 0x000085B9 }, /* GL_YCBCR_422_APPLE */
++ { 37508, 0x00008757 }, /* GL_YCBCR_MESA */
++ { 37522, 0x00000000 }, /* GL_ZERO */
++ { 37530, 0x00000D16 }, /* GL_ZOOM_X */
++ { 37540, 0x00000D17 }, /* GL_ZOOM_Y */
++};
++
++static const unsigned reduced_enums[1284] =
++{
++ 436, /* GL_FALSE */
++ 645, /* GL_LINES */
++ 647, /* GL_LINE_LOOP */
++ 654, /* GL_LINE_STRIP */
++ 1637, /* GL_TRIANGLES */
++ 1640, /* GL_TRIANGLE_STRIP */
++ 1638, /* GL_TRIANGLE_FAN */
++ 1211, /* GL_QUADS */
++ 1213, /* GL_QUAD_STRIP */
++ 1099, /* GL_POLYGON */
++ 1111, /* GL_POLYGON_STIPPLE_BIT */
++ 1064, /* GL_PIXEL_MODE_BIT */
++ 632, /* GL_LIGHTING_BIT */
++ 458, /* GL_FOG_BIT */
++ 8, /* GL_ACCUM */
++ 664, /* GL_LOAD */
++ 1253, /* GL_RETURN */
++ 937, /* GL_MULT */
++ 23, /* GL_ADD */
++ 953, /* GL_NEVER */
++ 622, /* GL_LESS */
++ 426, /* GL_EQUAL */
++ 621, /* GL_LEQUAL */
++ 547, /* GL_GREATER */
++ 968, /* GL_NOTEQUAL */
++ 522, /* GL_GEQUAL */
++ 46, /* GL_ALWAYS */
++ 1386, /* GL_SRC_COLOR */
++ 997, /* GL_ONE_MINUS_SRC_COLOR */
++ 1384, /* GL_SRC_ALPHA */
++ 996, /* GL_ONE_MINUS_SRC_ALPHA */
++ 406, /* GL_DST_ALPHA */
++ 994, /* GL_ONE_MINUS_DST_ALPHA */
++ 407, /* GL_DST_COLOR */
++ 995, /* GL_ONE_MINUS_DST_COLOR */
++ 1385, /* GL_SRC_ALPHA_SATURATE */
++ 510, /* GL_FRONT_LEFT */
++ 511, /* GL_FRONT_RIGHT */
++ 69, /* GL_BACK_LEFT */
++ 70, /* GL_BACK_RIGHT */
++ 507, /* GL_FRONT */
++ 68, /* GL_BACK */
++ 620, /* GL_LEFT */
++ 1293, /* GL_RIGHT */
++ 508, /* GL_FRONT_AND_BACK */
++ 63, /* GL_AUX0 */
++ 64, /* GL_AUX1 */
++ 65, /* GL_AUX2 */
++ 66, /* GL_AUX3 */
++ 612, /* GL_INVALID_ENUM */
++ 615, /* GL_INVALID_VALUE */
++ 614, /* GL_INVALID_OPERATION */
++ 1387, /* GL_STACK_OVERFLOW */
++ 1388, /* GL_STACK_UNDERFLOW */
++ 1022, /* GL_OUT_OF_MEMORY */
++ 613, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */
++ 0, /* GL_2D */
++ 2, /* GL_3D */
++ 3, /* GL_3D_COLOR */
++ 4, /* GL_3D_COLOR_TEXTURE */
++ 6, /* GL_4D_COLOR_TEXTURE */
++ 1042, /* GL_PASS_THROUGH_TOKEN */
++ 1098, /* GL_POINT_TOKEN */
++ 655, /* GL_LINE_TOKEN */
++ 1112, /* GL_POLYGON_TOKEN */
++ 74, /* GL_BITMAP_TOKEN */
++ 405, /* GL_DRAW_PIXEL_TOKEN */
++ 271, /* GL_COPY_PIXEL_TOKEN */
++ 648, /* GL_LINE_RESET_TOKEN */
++ 429, /* GL_EXP */
++ 430, /* GL_EXP2 */
++ 304, /* GL_CW */
++ 116, /* GL_CCW */
++ 137, /* GL_COEFF */
++ 1019, /* GL_ORDER */
++ 344, /* GL_DOMAIN */
++ 279, /* GL_CURRENT_COLOR */
++ 282, /* GL_CURRENT_INDEX */
++ 288, /* GL_CURRENT_NORMAL */
++ 300, /* GL_CURRENT_TEXTURE_COORDS */
++ 293, /* GL_CURRENT_RASTER_COLOR */
++ 295, /* GL_CURRENT_RASTER_INDEX */
++ 298, /* GL_CURRENT_RASTER_TEXTURE_COORDS */
++ 296, /* GL_CURRENT_RASTER_POSITION */
++ 297, /* GL_CURRENT_RASTER_POSITION_VALID */
++ 294, /* GL_CURRENT_RASTER_DISTANCE */
++ 1091, /* GL_POINT_SMOOTH */
++ 1080, /* GL_POINT_SIZE */
++ 1090, /* GL_POINT_SIZE_RANGE */
++ 1081, /* GL_POINT_SIZE_GRANULARITY */
++ 649, /* GL_LINE_SMOOTH */
++ 656, /* GL_LINE_WIDTH */
++ 658, /* GL_LINE_WIDTH_RANGE */
++ 657, /* GL_LINE_WIDTH_GRANULARITY */
++ 651, /* GL_LINE_STIPPLE */
++ 652, /* GL_LINE_STIPPLE_PATTERN */
++ 653, /* GL_LINE_STIPPLE_REPEAT */
++ 663, /* GL_LIST_MODE */
++ 822, /* GL_MAX_LIST_NESTING */
++ 660, /* GL_LIST_BASE */
++ 662, /* GL_LIST_INDEX */
++ 1101, /* GL_POLYGON_MODE */
++ 1108, /* GL_POLYGON_SMOOTH */
++ 1110, /* GL_POLYGON_STIPPLE */
++ 414, /* GL_EDGE_FLAG */
++ 272, /* GL_CULL_FACE */
++ 273, /* GL_CULL_FACE_MODE */
++ 509, /* GL_FRONT_FACE */
++ 631, /* GL_LIGHTING */
++ 636, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
++ 637, /* GL_LIGHT_MODEL_TWO_SIDE */
++ 633, /* GL_LIGHT_MODEL_AMBIENT */
++ 1339, /* GL_SHADE_MODEL */
++ 168, /* GL_COLOR_MATERIAL_FACE */
++ 169, /* GL_COLOR_MATERIAL_PARAMETER */
++ 167, /* GL_COLOR_MATERIAL */
++ 457, /* GL_FOG */
++ 479, /* GL_FOG_INDEX */
++ 475, /* GL_FOG_DENSITY */
++ 483, /* GL_FOG_START */
++ 477, /* GL_FOG_END */
++ 480, /* GL_FOG_MODE */
++ 459, /* GL_FOG_COLOR */
++ 333, /* GL_DEPTH_RANGE */
++ 338, /* GL_DEPTH_TEST */
++ 341, /* GL_DEPTH_WRITEMASK */
++ 321, /* GL_DEPTH_CLEAR_VALUE */
++ 332, /* GL_DEPTH_FUNC */
++ 12, /* GL_ACCUM_CLEAR_VALUE */
++ 1418, /* GL_STENCIL_TEST */
++ 1406, /* GL_STENCIL_CLEAR_VALUE */
++ 1408, /* GL_STENCIL_FUNC */
++ 1420, /* GL_STENCIL_VALUE_MASK */
++ 1407, /* GL_STENCIL_FAIL */
++ 1415, /* GL_STENCIL_PASS_DEPTH_FAIL */
++ 1416, /* GL_STENCIL_PASS_DEPTH_PASS */
++ 1417, /* GL_STENCIL_REF */
++ 1421, /* GL_STENCIL_WRITEMASK */
++ 791, /* GL_MATRIX_MODE */
++ 958, /* GL_NORMALIZE */
++ 1727, /* GL_VIEWPORT */
++ 932, /* GL_MODELVIEW_STACK_DEPTH */
++ 1191, /* GL_PROJECTION_STACK_DEPTH */
++ 1616, /* GL_TEXTURE_STACK_DEPTH */
++ 930, /* GL_MODELVIEW_MATRIX */
++ 1190, /* GL_PROJECTION_MATRIX */
++ 1601, /* GL_TEXTURE_MATRIX */
++ 61, /* GL_ATTRIB_STACK_DEPTH */
++ 127, /* GL_CLIENT_ATTRIB_STACK_DEPTH */
++ 43, /* GL_ALPHA_TEST */
++ 44, /* GL_ALPHA_TEST_FUNC */
++ 45, /* GL_ALPHA_TEST_REF */
++ 343, /* GL_DITHER */
++ 78, /* GL_BLEND_DST */
++ 86, /* GL_BLEND_SRC */
++ 75, /* GL_BLEND */
++ 666, /* GL_LOGIC_OP_MODE */
++ 586, /* GL_INDEX_LOGIC_OP */
++ 166, /* GL_COLOR_LOGIC_OP */
++ 67, /* GL_AUX_BUFFERS */
++ 354, /* GL_DRAW_BUFFER */
++ 1223, /* GL_READ_BUFFER */
++ 1320, /* GL_SCISSOR_BOX */
++ 1321, /* GL_SCISSOR_TEST */
++ 585, /* GL_INDEX_CLEAR_VALUE */
++ 590, /* GL_INDEX_WRITEMASK */
++ 163, /* GL_COLOR_CLEAR_VALUE */
++ 205, /* GL_COLOR_WRITEMASK */
++ 587, /* GL_INDEX_MODE */
++ 1287, /* GL_RGBA_MODE */
++ 353, /* GL_DOUBLEBUFFER */
++ 1422, /* GL_STEREO */
++ 1246, /* GL_RENDER_MODE */
++ 1043, /* GL_PERSPECTIVE_CORRECTION_HINT */
++ 1092, /* GL_POINT_SMOOTH_HINT */
++ 650, /* GL_LINE_SMOOTH_HINT */
++ 1109, /* GL_POLYGON_SMOOTH_HINT */
++ 478, /* GL_FOG_HINT */
++ 1582, /* GL_TEXTURE_GEN_S */
++ 1583, /* GL_TEXTURE_GEN_T */
++ 1581, /* GL_TEXTURE_GEN_R */
++ 1580, /* GL_TEXTURE_GEN_Q */
++ 1056, /* GL_PIXEL_MAP_I_TO_I */
++ 1062, /* GL_PIXEL_MAP_S_TO_S */
++ 1058, /* GL_PIXEL_MAP_I_TO_R */
++ 1054, /* GL_PIXEL_MAP_I_TO_G */
++ 1052, /* GL_PIXEL_MAP_I_TO_B */
++ 1050, /* GL_PIXEL_MAP_I_TO_A */
++ 1060, /* GL_PIXEL_MAP_R_TO_R */
++ 1048, /* GL_PIXEL_MAP_G_TO_G */
++ 1046, /* GL_PIXEL_MAP_B_TO_B */
++ 1044, /* GL_PIXEL_MAP_A_TO_A */
++ 1057, /* GL_PIXEL_MAP_I_TO_I_SIZE */
++ 1063, /* GL_PIXEL_MAP_S_TO_S_SIZE */
++ 1059, /* GL_PIXEL_MAP_I_TO_R_SIZE */
++ 1055, /* GL_PIXEL_MAP_I_TO_G_SIZE */
++ 1053, /* GL_PIXEL_MAP_I_TO_B_SIZE */
++ 1051, /* GL_PIXEL_MAP_I_TO_A_SIZE */
++ 1061, /* GL_PIXEL_MAP_R_TO_R_SIZE */
++ 1049, /* GL_PIXEL_MAP_G_TO_G_SIZE */
++ 1047, /* GL_PIXEL_MAP_B_TO_B_SIZE */
++ 1045, /* GL_PIXEL_MAP_A_TO_A_SIZE */
++ 1649, /* GL_UNPACK_SWAP_BYTES */
++ 1644, /* GL_UNPACK_LSB_FIRST */
++ 1645, /* GL_UNPACK_ROW_LENGTH */
++ 1648, /* GL_UNPACK_SKIP_ROWS */
++ 1647, /* GL_UNPACK_SKIP_PIXELS */
++ 1642, /* GL_UNPACK_ALIGNMENT */
++ 1031, /* GL_PACK_SWAP_BYTES */
++ 1026, /* GL_PACK_LSB_FIRST */
++ 1027, /* GL_PACK_ROW_LENGTH */
++ 1030, /* GL_PACK_SKIP_ROWS */
++ 1029, /* GL_PACK_SKIP_PIXELS */
++ 1023, /* GL_PACK_ALIGNMENT */
++ 744, /* GL_MAP_COLOR */
++ 745, /* GL_MAP_STENCIL */
++ 589, /* GL_INDEX_SHIFT */
++ 588, /* GL_INDEX_OFFSET */
++ 1235, /* GL_RED_SCALE */
++ 1233, /* GL_RED_BIAS */
++ 1744, /* GL_ZOOM_X */
++ 1745, /* GL_ZOOM_Y */
++ 551, /* GL_GREEN_SCALE */
++ 549, /* GL_GREEN_BIAS */
++ 92, /* GL_BLUE_SCALE */
++ 90, /* GL_BLUE_BIAS */
++ 42, /* GL_ALPHA_SCALE */
++ 40, /* GL_ALPHA_BIAS */
++ 334, /* GL_DEPTH_SCALE */
++ 315, /* GL_DEPTH_BIAS */
++ 817, /* GL_MAX_EVAL_ORDER */
++ 821, /* GL_MAX_LIGHTS */
++ 800, /* GL_MAX_CLIP_PLANES */
++ 865, /* GL_MAX_TEXTURE_SIZE */
++ 827, /* GL_MAX_PIXEL_MAP_TABLE */
++ 796, /* GL_MAX_ATTRIB_STACK_DEPTH */
++ 824, /* GL_MAX_MODELVIEW_STACK_DEPTH */
++ 825, /* GL_MAX_NAME_STACK_DEPTH */
++ 853, /* GL_MAX_PROJECTION_STACK_DEPTH */
++ 866, /* GL_MAX_TEXTURE_STACK_DEPTH */
++ 880, /* GL_MAX_VIEWPORT_DIMS */
++ 797, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
++ 1429, /* GL_SUBPIXEL_BITS */
++ 584, /* GL_INDEX_BITS */
++ 1234, /* GL_RED_BITS */
++ 550, /* GL_GREEN_BITS */
++ 91, /* GL_BLUE_BITS */
++ 41, /* GL_ALPHA_BITS */
++ 316, /* GL_DEPTH_BITS */
++ 1404, /* GL_STENCIL_BITS */
++ 14, /* GL_ACCUM_RED_BITS */
++ 13, /* GL_ACCUM_GREEN_BITS */
++ 10, /* GL_ACCUM_BLUE_BITS */
++ 9, /* GL_ACCUM_ALPHA_BITS */
++ 946, /* GL_NAME_STACK_DEPTH */
++ 62, /* GL_AUTO_NORMAL */
++ 690, /* GL_MAP1_COLOR_4 */
++ 693, /* GL_MAP1_INDEX */
++ 694, /* GL_MAP1_NORMAL */
++ 695, /* GL_MAP1_TEXTURE_COORD_1 */
++ 696, /* GL_MAP1_TEXTURE_COORD_2 */
++ 697, /* GL_MAP1_TEXTURE_COORD_3 */
++ 698, /* GL_MAP1_TEXTURE_COORD_4 */
++ 699, /* GL_MAP1_VERTEX_3 */
++ 700, /* GL_MAP1_VERTEX_4 */
++ 717, /* GL_MAP2_COLOR_4 */
++ 720, /* GL_MAP2_INDEX */
++ 721, /* GL_MAP2_NORMAL */
++ 722, /* GL_MAP2_TEXTURE_COORD_1 */
++ 723, /* GL_MAP2_TEXTURE_COORD_2 */
++ 724, /* GL_MAP2_TEXTURE_COORD_3 */
++ 725, /* GL_MAP2_TEXTURE_COORD_4 */
++ 726, /* GL_MAP2_VERTEX_3 */
++ 727, /* GL_MAP2_VERTEX_4 */
++ 691, /* GL_MAP1_GRID_DOMAIN */
++ 692, /* GL_MAP1_GRID_SEGMENTS */
++ 718, /* GL_MAP2_GRID_DOMAIN */
++ 719, /* GL_MAP2_GRID_SEGMENTS */
++ 1506, /* GL_TEXTURE_1D */
++ 1508, /* GL_TEXTURE_2D */
++ 439, /* GL_FEEDBACK_BUFFER_POINTER */
++ 440, /* GL_FEEDBACK_BUFFER_SIZE */
++ 441, /* GL_FEEDBACK_BUFFER_TYPE */
++ 1330, /* GL_SELECTION_BUFFER_POINTER */
++ 1331, /* GL_SELECTION_BUFFER_SIZE */
++ 1619, /* GL_TEXTURE_WIDTH */
++ 1587, /* GL_TEXTURE_HEIGHT */
++ 1543, /* GL_TEXTURE_COMPONENTS */
++ 1527, /* GL_TEXTURE_BORDER_COLOR */
++ 1526, /* GL_TEXTURE_BORDER */
++ 345, /* GL_DONT_CARE */
++ 437, /* GL_FASTEST */
++ 954, /* GL_NICEST */
++ 47, /* GL_AMBIENT */
++ 342, /* GL_DIFFUSE */
++ 1373, /* GL_SPECULAR */
++ 1113, /* GL_POSITION */
++ 1376, /* GL_SPOT_DIRECTION */
++ 1377, /* GL_SPOT_EXPONENT */
++ 1375, /* GL_SPOT_CUTOFF */
++ 245, /* GL_CONSTANT_ATTENUATION */
++ 640, /* GL_LINEAR_ATTENUATION */
++ 1210, /* GL_QUADRATIC_ATTENUATION */
++ 219, /* GL_COMPILE */
++ 220, /* GL_COMPILE_AND_EXECUTE */
++ 111, /* GL_BYTE */
++ 1650, /* GL_UNSIGNED_BYTE */
++ 1344, /* GL_SHORT */
++ 1659, /* GL_UNSIGNED_SHORT */
++ 592, /* GL_INT */
++ 1653, /* GL_UNSIGNED_INT */
++ 444, /* GL_FLOAT */
++ 1, /* GL_2_BYTES */
++ 5, /* GL_3_BYTES */
++ 7, /* GL_4_BYTES */
++ 352, /* GL_DOUBLE */
++ 123, /* GL_CLEAR */
++ 49, /* GL_AND */
++ 51, /* GL_AND_REVERSE */
++ 269, /* GL_COPY */
++ 50, /* GL_AND_INVERTED */
++ 956, /* GL_NOOP */
++ 1740, /* GL_XOR */
++ 1018, /* GL_OR */
++ 957, /* GL_NOR */
++ 427, /* GL_EQUIV */
++ 618, /* GL_INVERT */
++ 1021, /* GL_OR_REVERSE */
++ 270, /* GL_COPY_INVERTED */
++ 1020, /* GL_OR_INVERTED */
++ 947, /* GL_NAND */
++ 1335, /* GL_SET */
++ 424, /* GL_EMISSION */
++ 1343, /* GL_SHININESS */
++ 48, /* GL_AMBIENT_AND_DIFFUSE */
++ 165, /* GL_COLOR_INDEXES */
++ 897, /* GL_MODELVIEW */
++ 1189, /* GL_PROJECTION */
++ 1441, /* GL_TEXTURE */
++ 138, /* GL_COLOR */
++ 313, /* GL_DEPTH */
++ 1395, /* GL_STENCIL */
++ 164, /* GL_COLOR_INDEX */
++ 1409, /* GL_STENCIL_INDEX */
++ 322, /* GL_DEPTH_COMPONENT */
++ 1230, /* GL_RED */
++ 548, /* GL_GREEN */
++ 89, /* GL_BLUE */
++ 31, /* GL_ALPHA */
++ 1254, /* GL_RGB */
++ 1273, /* GL_RGBA */
++ 668, /* GL_LUMINANCE */
++ 689, /* GL_LUMINANCE_ALPHA */
++ 73, /* GL_BITMAP */
++ 1069, /* GL_POINT */
++ 638, /* GL_LINE */
++ 442, /* GL_FILL */
++ 1239, /* GL_RENDER */
++ 438, /* GL_FEEDBACK */
++ 1329, /* GL_SELECT */
++ 443, /* GL_FLAT */
++ 1348, /* GL_SMOOTH */
++ 619, /* GL_KEEP */
++ 1248, /* GL_REPLACE */
++ 575, /* GL_INCR */
++ 309, /* GL_DECR */
++ 1674, /* GL_VENDOR */
++ 1245, /* GL_RENDERER */
++ 1675, /* GL_VERSION */
++ 431, /* GL_EXTENSIONS */
++ 1294, /* GL_S */
++ 1432, /* GL_T */
++ 1220, /* GL_R */
++ 1209, /* GL_Q */
++ 933, /* GL_MODULATE */
++ 308, /* GL_DECAL */
++ 1577, /* GL_TEXTURE_ENV_MODE */
++ 1576, /* GL_TEXTURE_ENV_COLOR */
++ 1575, /* GL_TEXTURE_ENV */
++ 432, /* GL_EYE_LINEAR */
++ 980, /* GL_OBJECT_LINEAR */
++ 1374, /* GL_SPHERE_MAP */
++ 1579, /* GL_TEXTURE_GEN_MODE */
++ 982, /* GL_OBJECT_PLANE */
++ 433, /* GL_EYE_PLANE */
++ 948, /* GL_NEAREST */
++ 639, /* GL_LINEAR */
++ 952, /* GL_NEAREST_MIPMAP_NEAREST */
++ 644, /* GL_LINEAR_MIPMAP_NEAREST */
++ 951, /* GL_NEAREST_MIPMAP_LINEAR */
++ 643, /* GL_LINEAR_MIPMAP_LINEAR */
++ 1600, /* GL_TEXTURE_MAG_FILTER */
++ 1608, /* GL_TEXTURE_MIN_FILTER */
++ 1621, /* GL_TEXTURE_WRAP_S */
++ 1622, /* GL_TEXTURE_WRAP_T */
++ 117, /* GL_CLAMP */
++ 1247, /* GL_REPEAT */
++ 1107, /* GL_POLYGON_OFFSET_UNITS */
++ 1106, /* GL_POLYGON_OFFSET_POINT */
++ 1105, /* GL_POLYGON_OFFSET_LINE */
++ 1221, /* GL_R3_G3_B2 */
++ 1671, /* GL_V2F */
++ 1672, /* GL_V3F */
++ 114, /* GL_C4UB_V2F */
++ 115, /* GL_C4UB_V3F */
++ 112, /* GL_C3F_V3F */
++ 945, /* GL_N3F_V3F */
++ 113, /* GL_C4F_N3F_V3F */
++ 1437, /* GL_T2F_V3F */
++ 1439, /* GL_T4F_V4F */
++ 1435, /* GL_T2F_C4UB_V3F */
++ 1433, /* GL_T2F_C3F_V3F */
++ 1436, /* GL_T2F_N3F_V3F */
++ 1434, /* GL_T2F_C4F_N3F_V3F */
++ 1438, /* GL_T4F_C4F_N3F_V4F */
++ 130, /* GL_CLIP_PLANE0 */
++ 131, /* GL_CLIP_PLANE1 */
++ 132, /* GL_CLIP_PLANE2 */
++ 133, /* GL_CLIP_PLANE3 */
++ 134, /* GL_CLIP_PLANE4 */
++ 135, /* GL_CLIP_PLANE5 */
++ 623, /* GL_LIGHT0 */
++ 624, /* GL_LIGHT1 */
++ 625, /* GL_LIGHT2 */
++ 626, /* GL_LIGHT3 */
++ 627, /* GL_LIGHT4 */
++ 628, /* GL_LIGHT5 */
++ 629, /* GL_LIGHT6 */
++ 630, /* GL_LIGHT7 */
++ 552, /* GL_HINT_BIT */
++ 247, /* GL_CONSTANT_COLOR */
++ 992, /* GL_ONE_MINUS_CONSTANT_COLOR */
++ 242, /* GL_CONSTANT_ALPHA */
++ 990, /* GL_ONE_MINUS_CONSTANT_ALPHA */
++ 76, /* GL_BLEND_COLOR */
++ 512, /* GL_FUNC_ADD */
++ 881, /* GL_MIN */
++ 793, /* GL_MAX */
++ 81, /* GL_BLEND_EQUATION */
++ 516, /* GL_FUNC_SUBTRACT */
++ 514, /* GL_FUNC_REVERSE_SUBTRACT */
++ 250, /* GL_CONVOLUTION_1D */
++ 251, /* GL_CONVOLUTION_2D */
++ 1332, /* GL_SEPARABLE_2D */
++ 254, /* GL_CONVOLUTION_BORDER_MODE */
++ 258, /* GL_CONVOLUTION_FILTER_SCALE */
++ 256, /* GL_CONVOLUTION_FILTER_BIAS */
++ 1231, /* GL_REDUCE */
++ 260, /* GL_CONVOLUTION_FORMAT */
++ 264, /* GL_CONVOLUTION_WIDTH */
++ 262, /* GL_CONVOLUTION_HEIGHT */
++ 808, /* GL_MAX_CONVOLUTION_WIDTH */
++ 806, /* GL_MAX_CONVOLUTION_HEIGHT */
++ 1146, /* GL_POST_CONVOLUTION_RED_SCALE */
++ 1142, /* GL_POST_CONVOLUTION_GREEN_SCALE */
++ 1137, /* GL_POST_CONVOLUTION_BLUE_SCALE */
++ 1133, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
++ 1144, /* GL_POST_CONVOLUTION_RED_BIAS */
++ 1140, /* GL_POST_CONVOLUTION_GREEN_BIAS */
++ 1135, /* GL_POST_CONVOLUTION_BLUE_BIAS */
++ 1131, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
++ 553, /* GL_HISTOGRAM */
++ 1193, /* GL_PROXY_HISTOGRAM */
++ 569, /* GL_HISTOGRAM_WIDTH */
++ 559, /* GL_HISTOGRAM_FORMAT */
++ 565, /* GL_HISTOGRAM_RED_SIZE */
++ 561, /* GL_HISTOGRAM_GREEN_SIZE */
++ 556, /* GL_HISTOGRAM_BLUE_SIZE */
++ 554, /* GL_HISTOGRAM_ALPHA_SIZE */
++ 563, /* GL_HISTOGRAM_LUMINANCE_SIZE */
++ 567, /* GL_HISTOGRAM_SINK */
++ 882, /* GL_MINMAX */
++ 884, /* GL_MINMAX_FORMAT */
++ 886, /* GL_MINMAX_SINK */
++ 1440, /* GL_TABLE_TOO_LARGE_EXT */
++ 1652, /* GL_UNSIGNED_BYTE_3_3_2 */
++ 1661, /* GL_UNSIGNED_SHORT_4_4_4_4 */
++ 1663, /* GL_UNSIGNED_SHORT_5_5_5_1 */
++ 1657, /* GL_UNSIGNED_INT_8_8_8_8 */
++ 1654, /* GL_UNSIGNED_INT_10_10_10_2 */
++ 1104, /* GL_POLYGON_OFFSET_FILL */
++ 1103, /* GL_POLYGON_OFFSET_FACTOR */
++ 1102, /* GL_POLYGON_OFFSET_BIAS */
++ 1251, /* GL_RESCALE_NORMAL */
++ 36, /* GL_ALPHA4 */
++ 38, /* GL_ALPHA8 */
++ 32, /* GL_ALPHA12 */
++ 34, /* GL_ALPHA16 */
++ 679, /* GL_LUMINANCE4 */
++ 685, /* GL_LUMINANCE8 */
++ 669, /* GL_LUMINANCE12 */
++ 675, /* GL_LUMINANCE16 */
++ 680, /* GL_LUMINANCE4_ALPHA4 */
++ 683, /* GL_LUMINANCE6_ALPHA2 */
++ 686, /* GL_LUMINANCE8_ALPHA8 */
++ 672, /* GL_LUMINANCE12_ALPHA4 */
++ 670, /* GL_LUMINANCE12_ALPHA12 */
++ 676, /* GL_LUMINANCE16_ALPHA16 */
++ 593, /* GL_INTENSITY */
++ 598, /* GL_INTENSITY4 */
++ 600, /* GL_INTENSITY8 */
++ 594, /* GL_INTENSITY12 */
++ 596, /* GL_INTENSITY16 */
++ 1263, /* GL_RGB2_EXT */
++ 1264, /* GL_RGB4 */
++ 1267, /* GL_RGB5 */
++ 1271, /* GL_RGB8 */
++ 1255, /* GL_RGB10 */
++ 1259, /* GL_RGB12 */
++ 1261, /* GL_RGB16 */
++ 1278, /* GL_RGBA2 */
++ 1280, /* GL_RGBA4 */
++ 1268, /* GL_RGB5_A1 */
++ 1284, /* GL_RGBA8 */
++ 1256, /* GL_RGB10_A2 */
++ 1274, /* GL_RGBA12 */
++ 1276, /* GL_RGBA16 */
++ 1613, /* GL_TEXTURE_RED_SIZE */
++ 1585, /* GL_TEXTURE_GREEN_SIZE */
++ 1524, /* GL_TEXTURE_BLUE_SIZE */
++ 1511, /* GL_TEXTURE_ALPHA_SIZE */
++ 1598, /* GL_TEXTURE_LUMINANCE_SIZE */
++ 1589, /* GL_TEXTURE_INTENSITY_SIZE */
++ 1249, /* GL_REPLACE_EXT */
++ 1197, /* GL_PROXY_TEXTURE_1D */
++ 1200, /* GL_PROXY_TEXTURE_2D */
++ 1617, /* GL_TEXTURE_TOO_LARGE_EXT */
++ 1610, /* GL_TEXTURE_PRIORITY */
++ 1615, /* GL_TEXTURE_RESIDENT */
++ 1514, /* GL_TEXTURE_BINDING_1D */
++ 1516, /* GL_TEXTURE_BINDING_2D */
++ 1518, /* GL_TEXTURE_BINDING_3D */
++ 1028, /* GL_PACK_SKIP_IMAGES */
++ 1024, /* GL_PACK_IMAGE_HEIGHT */
++ 1646, /* GL_UNPACK_SKIP_IMAGES */
++ 1643, /* GL_UNPACK_IMAGE_HEIGHT */
++ 1510, /* GL_TEXTURE_3D */
++ 1203, /* GL_PROXY_TEXTURE_3D */
++ 1572, /* GL_TEXTURE_DEPTH */
++ 1620, /* GL_TEXTURE_WRAP_R */
++ 794, /* GL_MAX_3D_TEXTURE_SIZE */
++ 1676, /* GL_VERTEX_ARRAY */
++ 959, /* GL_NORMAL_ARRAY */
++ 139, /* GL_COLOR_ARRAY */
++ 578, /* GL_INDEX_ARRAY */
++ 1551, /* GL_TEXTURE_COORD_ARRAY */
++ 415, /* GL_EDGE_FLAG_ARRAY */
++ 1681, /* GL_VERTEX_ARRAY_SIZE */
++ 1683, /* GL_VERTEX_ARRAY_TYPE */
++ 1682, /* GL_VERTEX_ARRAY_STRIDE */
++ 964, /* GL_NORMAL_ARRAY_TYPE */
++ 963, /* GL_NORMAL_ARRAY_STRIDE */
++ 143, /* GL_COLOR_ARRAY_SIZE */
++ 145, /* GL_COLOR_ARRAY_TYPE */
++ 144, /* GL_COLOR_ARRAY_STRIDE */
++ 583, /* GL_INDEX_ARRAY_TYPE */
++ 582, /* GL_INDEX_ARRAY_STRIDE */
++ 1555, /* GL_TEXTURE_COORD_ARRAY_SIZE */
++ 1557, /* GL_TEXTURE_COORD_ARRAY_TYPE */
++ 1556, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
++ 419, /* GL_EDGE_FLAG_ARRAY_STRIDE */
++ 1680, /* GL_VERTEX_ARRAY_POINTER */
++ 962, /* GL_NORMAL_ARRAY_POINTER */
++ 142, /* GL_COLOR_ARRAY_POINTER */
++ 581, /* GL_INDEX_ARRAY_POINTER */
++ 1554, /* GL_TEXTURE_COORD_ARRAY_POINTER */
++ 418, /* GL_EDGE_FLAG_ARRAY_POINTER */
++ 938, /* GL_MULTISAMPLE */
++ 1306, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
++ 1308, /* GL_SAMPLE_ALPHA_TO_ONE */
++ 1313, /* GL_SAMPLE_COVERAGE */
++ 1310, /* GL_SAMPLE_BUFFERS */
++ 1301, /* GL_SAMPLES */
++ 1317, /* GL_SAMPLE_COVERAGE_VALUE */
++ 1315, /* GL_SAMPLE_COVERAGE_INVERT */
++ 170, /* GL_COLOR_MATRIX */
++ 172, /* GL_COLOR_MATRIX_STACK_DEPTH */
++ 802, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
++ 1129, /* GL_POST_COLOR_MATRIX_RED_SCALE */
++ 1125, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
++ 1120, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
++ 1116, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
++ 1127, /* GL_POST_COLOR_MATRIX_RED_BIAS */
++ 1123, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
++ 1118, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
++ 1114, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
++ 1534, /* GL_TEXTURE_COLOR_TABLE_SGI */
++ 1204, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
++ 1536, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
++ 80, /* GL_BLEND_DST_RGB */
++ 88, /* GL_BLEND_SRC_RGB */
++ 79, /* GL_BLEND_DST_ALPHA */
++ 87, /* GL_BLEND_SRC_ALPHA */
++ 176, /* GL_COLOR_TABLE */
++ 1139, /* GL_POST_CONVOLUTION_COLOR_TABLE */
++ 1122, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
++ 1192, /* GL_PROXY_COLOR_TABLE */
++ 1196, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
++ 1195, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
++ 200, /* GL_COLOR_TABLE_SCALE */
++ 180, /* GL_COLOR_TABLE_BIAS */
++ 185, /* GL_COLOR_TABLE_FORMAT */
++ 202, /* GL_COLOR_TABLE_WIDTH */
++ 197, /* GL_COLOR_TABLE_RED_SIZE */
++ 188, /* GL_COLOR_TABLE_GREEN_SIZE */
++ 182, /* GL_COLOR_TABLE_BLUE_SIZE */
++ 177, /* GL_COLOR_TABLE_ALPHA_SIZE */
++ 194, /* GL_COLOR_TABLE_LUMINANCE_SIZE */
++ 191, /* GL_COLOR_TABLE_INTENSITY_SIZE */
++ 71, /* GL_BGR */
++ 72, /* GL_BGRA */
++ 816, /* GL_MAX_ELEMENTS_VERTICES */
++ 815, /* GL_MAX_ELEMENTS_INDICES */
++ 1588, /* GL_TEXTURE_INDEX_SIZE_EXT */
++ 136, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */
++ 1086, /* GL_POINT_SIZE_MIN */
++ 1082, /* GL_POINT_SIZE_MAX */
++ 1076, /* GL_POINT_FADE_THRESHOLD_SIZE */
++ 1072, /* GL_POINT_DISTANCE_ATTENUATION */
++ 118, /* GL_CLAMP_TO_BORDER */
++ 121, /* GL_CLAMP_TO_EDGE */
++ 1609, /* GL_TEXTURE_MIN_LOD */
++ 1607, /* GL_TEXTURE_MAX_LOD */
++ 1513, /* GL_TEXTURE_BASE_LEVEL */
++ 1606, /* GL_TEXTURE_MAX_LEVEL */
++ 572, /* GL_IGNORE_BORDER_HP */
++ 246, /* GL_CONSTANT_BORDER_HP */
++ 1250, /* GL_REPLICATE_BORDER_HP */
++ 252, /* GL_CONVOLUTION_BORDER_COLOR */
++ 987, /* GL_OCCLUSION_TEST_HP */
++ 988, /* GL_OCCLUSION_TEST_RESULT_HP */
++ 641, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
++ 1528, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
++ 1530, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
++ 1532, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
++ 1533, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
++ 1531, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
++ 1529, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
++ 798, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
++ 799, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
++ 1149, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
++ 1151, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
++ 1148, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
++ 1150, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
++ 1596, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
++ 1597, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
++ 1595, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
++ 518, /* GL_GENERATE_MIPMAP */
++ 519, /* GL_GENERATE_MIPMAP_HINT */
++ 481, /* GL_FOG_OFFSET_SGIX */
++ 482, /* GL_FOG_OFFSET_VALUE_SGIX */
++ 1542, /* GL_TEXTURE_COMPARE_SGIX */
++ 1541, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
++ 1592, /* GL_TEXTURE_LEQUAL_R_SGIX */
++ 1584, /* GL_TEXTURE_GEQUAL_R_SGIX */
++ 323, /* GL_DEPTH_COMPONENT16 */
++ 326, /* GL_DEPTH_COMPONENT24 */
++ 329, /* GL_DEPTH_COMPONENT32 */
++ 274, /* GL_CULL_VERTEX_EXT */
++ 276, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */
++ 275, /* GL_CULL_VERTEX_EYE_POSITION_EXT */
++ 1737, /* GL_WRAP_BORDER_SUN */
++ 1535, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
++ 634, /* GL_LIGHT_MODEL_COLOR_CONTROL */
++ 1345, /* GL_SINGLE_COLOR */
++ 1333, /* GL_SEPARATE_SPECULAR_COLOR */
++ 1342, /* GL_SHARED_TEXTURE_PALETTE_EXT */
++ 1651, /* GL_UNSIGNED_BYTE_2_3_3_REV */
++ 1664, /* GL_UNSIGNED_SHORT_5_6_5 */
++ 1665, /* GL_UNSIGNED_SHORT_5_6_5_REV */
++ 1662, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
++ 1660, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
++ 1658, /* GL_UNSIGNED_INT_8_8_8_8_REV */
++ 1656, /* GL_UNSIGNED_INT_2_10_10_10_REV */
++ 1604, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
++ 1605, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
++ 1603, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
++ 889, /* GL_MIRRORED_REPEAT */
++ 1289, /* GL_RGB_S3TC */
++ 1266, /* GL_RGB4_S3TC */
++ 1288, /* GL_RGBA_S3TC */
++ 1283, /* GL_RGBA4_S3TC */
++ 1286, /* GL_RGBA_DXT5_S3TC */
++ 1281, /* GL_RGBA4_DXT5_S3TC */
++ 239, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */
++ 234, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */
++ 235, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */
++ 236, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */
++ 950, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
++ 949, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
++ 642, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
++ 468, /* GL_FOG_COORDINATE_SOURCE */
++ 460, /* GL_FOG_COORD */
++ 484, /* GL_FRAGMENT_DEPTH */
++ 280, /* GL_CURRENT_FOG_COORD */
++ 467, /* GL_FOG_COORDINATE_ARRAY_TYPE */
++ 466, /* GL_FOG_COORDINATE_ARRAY_STRIDE */
++ 465, /* GL_FOG_COORDINATE_ARRAY_POINTER */
++ 462, /* GL_FOG_COORDINATE_ARRAY */
++ 174, /* GL_COLOR_SUM */
++ 299, /* GL_CURRENT_SECONDARY_COLOR */
++ 1326, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
++ 1328, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
++ 1327, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
++ 1325, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
++ 1322, /* GL_SECONDARY_COLOR_ARRAY */
++ 528, /* GL_GL_CURRENT_RASTER_SECONDARY_COLOR */
++ 28, /* GL_ALIASED_POINT_SIZE_RANGE */
++ 27, /* GL_ALIASED_LINE_WIDTH_RANGE */
++ 1442, /* GL_TEXTURE0 */
++ 1444, /* GL_TEXTURE1 */
++ 1466, /* GL_TEXTURE2 */
++ 1488, /* GL_TEXTURE3 */
++ 1494, /* GL_TEXTURE4 */
++ 1496, /* GL_TEXTURE5 */
++ 1498, /* GL_TEXTURE6 */
++ 1500, /* GL_TEXTURE7 */
++ 1502, /* GL_TEXTURE8 */
++ 1504, /* GL_TEXTURE9 */
++ 1445, /* GL_TEXTURE10 */
++ 1447, /* GL_TEXTURE11 */
++ 1449, /* GL_TEXTURE12 */
++ 1451, /* GL_TEXTURE13 */
++ 1453, /* GL_TEXTURE14 */
++ 1455, /* GL_TEXTURE15 */
++ 1457, /* GL_TEXTURE16 */
++ 1459, /* GL_TEXTURE17 */
++ 1461, /* GL_TEXTURE18 */
++ 1463, /* GL_TEXTURE19 */
++ 1467, /* GL_TEXTURE20 */
++ 1469, /* GL_TEXTURE21 */
++ 1471, /* GL_TEXTURE22 */
++ 1473, /* GL_TEXTURE23 */
++ 1475, /* GL_TEXTURE24 */
++ 1477, /* GL_TEXTURE25 */
++ 1479, /* GL_TEXTURE26 */
++ 1481, /* GL_TEXTURE27 */
++ 1483, /* GL_TEXTURE28 */
++ 1485, /* GL_TEXTURE29 */
++ 1489, /* GL_TEXTURE30 */
++ 1491, /* GL_TEXTURE31 */
++ 18, /* GL_ACTIVE_TEXTURE */
++ 124, /* GL_CLIENT_ACTIVE_TEXTURE */
++ 867, /* GL_MAX_TEXTURE_UNITS */
++ 1630, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
++ 1633, /* GL_TRANSPOSE_PROJECTION_MATRIX */
++ 1635, /* GL_TRANSPOSE_TEXTURE_MATRIX */
++ 1627, /* GL_TRANSPOSE_COLOR_MATRIX */
++ 1430, /* GL_SUBTRACT */
++ 856, /* GL_MAX_RENDERBUFFER_SIZE_EXT */
++ 222, /* GL_COMPRESSED_ALPHA */
++ 226, /* GL_COMPRESSED_LUMINANCE */
++ 227, /* GL_COMPRESSED_LUMINANCE_ALPHA */
++ 224, /* GL_COMPRESSED_INTENSITY */
++ 230, /* GL_COMPRESSED_RGB */
++ 231, /* GL_COMPRESSED_RGBA */
++ 1549, /* GL_TEXTURE_COMPRESSION_HINT */
++ 1611, /* GL_TEXTURE_RECTANGLE_ARB */
++ 1521, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */
++ 1207, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */
++ 854, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */
++ 335, /* GL_DEPTH_STENCIL_NV */
++ 1655, /* GL_UNSIGNED_INT_24_8_NV */
++ 863, /* GL_MAX_TEXTURE_LOD_BIAS */
++ 1602, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
++ 864, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
++ 1578, /* GL_TEXTURE_FILTER_CONTROL */
++ 1593, /* GL_TEXTURE_LOD_BIAS */
++ 207, /* GL_COMBINE4 */
++ 857, /* GL_MAX_SHININESS_NV */
++ 858, /* GL_MAX_SPOT_EXPONENT_NV */
++ 576, /* GL_INCR_WRAP */
++ 310, /* GL_DECR_WRAP */
++ 909, /* GL_MODELVIEW1_ARB */
++ 965, /* GL_NORMAL_MAP */
++ 1236, /* GL_REFLECTION_MAP */
++ 1558, /* GL_TEXTURE_CUBE_MAP */
++ 1519, /* GL_TEXTURE_BINDING_CUBE_MAP */
++ 1566, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
++ 1560, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
++ 1568, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
++ 1562, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
++ 1570, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
++ 1564, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
++ 1205, /* GL_PROXY_TEXTURE_CUBE_MAP */
++ 810, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
++ 944, /* GL_MULTISAMPLE_FILTER_HINT_NV */
++ 476, /* GL_FOG_DISTANCE_MODE_NV */
++ 435, /* GL_EYE_RADIAL_NV */
++ 434, /* GL_EYE_PLANE_ABSOLUTE_NV */
++ 206, /* GL_COMBINE */
++ 213, /* GL_COMBINE_RGB */
++ 208, /* GL_COMBINE_ALPHA */
++ 1290, /* GL_RGB_SCALE */
++ 24, /* GL_ADD_SIGNED */
++ 603, /* GL_INTERPOLATE */
++ 241, /* GL_CONSTANT */
++ 1155, /* GL_PRIMARY_COLOR */
++ 1152, /* GL_PREVIOUS */
++ 1356, /* GL_SOURCE0_RGB */
++ 1362, /* GL_SOURCE1_RGB */
++ 1368, /* GL_SOURCE2_RGB */
++ 1372, /* GL_SOURCE3_RGB_NV */
++ 1353, /* GL_SOURCE0_ALPHA */
++ 1359, /* GL_SOURCE1_ALPHA */
++ 1365, /* GL_SOURCE2_ALPHA */
++ 1371, /* GL_SOURCE3_ALPHA_NV */
++ 1001, /* GL_OPERAND0_RGB */
++ 1007, /* GL_OPERAND1_RGB */
++ 1013, /* GL_OPERAND2_RGB */
++ 1017, /* GL_OPERAND3_RGB_NV */
++ 998, /* GL_OPERAND0_ALPHA */
++ 1004, /* GL_OPERAND1_ALPHA */
++ 1010, /* GL_OPERAND2_ALPHA */
++ 1016, /* GL_OPERAND3_ALPHA_NV */
++ 1677, /* GL_VERTEX_ARRAY_BINDING_APPLE */
++ 1741, /* GL_YCBCR_422_APPLE */
++ 1666, /* GL_UNSIGNED_SHORT_8_8_APPLE */
++ 1668, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
++ 1347, /* GL_SLICE_ACCUM_SUN */
++ 1212, /* GL_QUAD_MESH_SUN */
++ 1639, /* GL_TRIANGLE_MESH_SUN */
++ 1715, /* GL_VERTEX_PROGRAM_ARB */
++ 1726, /* GL_VERTEX_STATE_PROGRAM_NV */
++ 1702, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
++ 1708, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
++ 1710, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
++ 1712, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
++ 301, /* GL_CURRENT_VERTEX_ATTRIB */
++ 1168, /* GL_PROGRAM_LENGTH_ARB */
++ 1182, /* GL_PROGRAM_STRING_ARB */
++ 931, /* GL_MODELVIEW_PROJECTION_NV */
++ 571, /* GL_IDENTITY_NV */
++ 616, /* GL_INVERSE_NV */
++ 1632, /* GL_TRANSPOSE_NV */
++ 617, /* GL_INVERSE_TRANSPOSE_NV */
++ 840, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
++ 839, /* GL_MAX_PROGRAM_MATRICES_ARB */
++ 747, /* GL_MATRIX0_NV */
++ 759, /* GL_MATRIX1_NV */
++ 771, /* GL_MATRIX2_NV */
++ 775, /* GL_MATRIX3_NV */
++ 777, /* GL_MATRIX4_NV */
++ 779, /* GL_MATRIX5_NV */
++ 781, /* GL_MATRIX6_NV */
++ 783, /* GL_MATRIX7_NV */
++ 286, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */
++ 283, /* GL_CURRENT_MATRIX_ARB */
++ 1718, /* GL_VERTEX_PROGRAM_POINT_SIZE */
++ 1721, /* GL_VERTEX_PROGRAM_TWO_SIDE */
++ 1180, /* GL_PROGRAM_PARAMETER_NV */
++ 1706, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
++ 1184, /* GL_PROGRAM_TARGET_NV */
++ 1181, /* GL_PROGRAM_RESIDENT_NV */
++ 1624, /* GL_TRACK_MATRIX_NV */
++ 1625, /* GL_TRACK_MATRIX_TRANSFORM_NV */
++ 1716, /* GL_VERTEX_PROGRAM_BINDING_NV */
++ 1162, /* GL_PROGRAM_ERROR_POSITION_ARB */
++ 320, /* GL_DEPTH_CLAMP_NV */
++ 1684, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
++ 1691, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
++ 1692, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
++ 1693, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
++ 1694, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
++ 1695, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
++ 1696, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
++ 1697, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
++ 1698, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
++ 1699, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
++ 1685, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
++ 1686, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
++ 1687, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
++ 1688, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
++ 1689, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
++ 1690, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
++ 701, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
++ 708, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
++ 709, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
++ 710, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
++ 711, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
++ 712, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
++ 713, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
++ 714, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
++ 715, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
++ 716, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
++ 702, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
++ 703, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
++ 704, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
++ 705, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
++ 706, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
++ 707, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
++ 728, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
++ 735, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
++ 736, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
++ 737, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
++ 738, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
++ 739, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
++ 740, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
++ 1161, /* GL_PROGRAM_BINDING_ARB */
++ 742, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
++ 743, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
++ 729, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
++ 730, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
++ 731, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
++ 732, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
++ 733, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
++ 734, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
++ 1547, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
++ 1544, /* GL_TEXTURE_COMPRESSED */
++ 970, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
++ 240, /* GL_COMPRESSED_TEXTURE_FORMATS */
++ 879, /* GL_MAX_VERTEX_UNITS_ARB */
++ 22, /* GL_ACTIVE_VERTEX_UNITS_ARB */
++ 1736, /* GL_WEIGHT_SUM_UNITY_ARB */
++ 1714, /* GL_VERTEX_BLEND_ARB */
++ 303, /* GL_CURRENT_WEIGHT_ARB */
++ 1735, /* GL_WEIGHT_ARRAY_TYPE_ARB */
++ 1734, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
++ 1733, /* GL_WEIGHT_ARRAY_SIZE_ARB */
++ 1732, /* GL_WEIGHT_ARRAY_POINTER_ARB */
++ 1729, /* GL_WEIGHT_ARRAY_ARB */
++ 346, /* GL_DOT3_RGB */
++ 347, /* GL_DOT3_RGBA */
++ 238, /* GL_COMPRESSED_RGB_FXT1_3DFX */
++ 233, /* GL_COMPRESSED_RGBA_FXT1_3DFX */
++ 939, /* GL_MULTISAMPLE_3DFX */
++ 1311, /* GL_SAMPLE_BUFFERS_3DFX */
++ 1302, /* GL_SAMPLES_3DFX */
++ 920, /* GL_MODELVIEW2_ARB */
++ 923, /* GL_MODELVIEW3_ARB */
++ 924, /* GL_MODELVIEW4_ARB */
++ 925, /* GL_MODELVIEW5_ARB */
++ 926, /* GL_MODELVIEW6_ARB */
++ 927, /* GL_MODELVIEW7_ARB */
++ 928, /* GL_MODELVIEW8_ARB */
++ 929, /* GL_MODELVIEW9_ARB */
++ 899, /* GL_MODELVIEW10_ARB */
++ 900, /* GL_MODELVIEW11_ARB */
++ 901, /* GL_MODELVIEW12_ARB */
++ 902, /* GL_MODELVIEW13_ARB */
++ 903, /* GL_MODELVIEW14_ARB */
++ 904, /* GL_MODELVIEW15_ARB */
++ 905, /* GL_MODELVIEW16_ARB */
++ 906, /* GL_MODELVIEW17_ARB */
++ 907, /* GL_MODELVIEW18_ARB */
++ 908, /* GL_MODELVIEW19_ARB */
++ 910, /* GL_MODELVIEW20_ARB */
++ 911, /* GL_MODELVIEW21_ARB */
++ 912, /* GL_MODELVIEW22_ARB */
++ 913, /* GL_MODELVIEW23_ARB */
++ 914, /* GL_MODELVIEW24_ARB */
++ 915, /* GL_MODELVIEW25_ARB */
++ 916, /* GL_MODELVIEW26_ARB */
++ 917, /* GL_MODELVIEW27_ARB */
++ 918, /* GL_MODELVIEW28_ARB */
++ 919, /* GL_MODELVIEW29_ARB */
++ 921, /* GL_MODELVIEW30_ARB */
++ 922, /* GL_MODELVIEW31_ARB */
++ 351, /* GL_DOT3_RGB_EXT */
++ 349, /* GL_DOT3_RGBA_EXT */
++ 893, /* GL_MIRROR_CLAMP_EXT */
++ 896, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
++ 934, /* GL_MODULATE_ADD_ATI */
++ 935, /* GL_MODULATE_SIGNED_ADD_ATI */
++ 936, /* GL_MODULATE_SUBTRACT_ATI */
++ 1742, /* GL_YCBCR_MESA */
++ 1025, /* GL_PACK_INVERT_MESA */
++ 306, /* GL_DEBUG_OBJECT_MESA */
++ 307, /* GL_DEBUG_PRINT_MESA */
++ 305, /* GL_DEBUG_ASSERT_MESA */
++ 107, /* GL_BUFFER_SIZE */
++ 109, /* GL_BUFFER_USAGE */
++ 1398, /* GL_STENCIL_BACK_FUNC */
++ 1397, /* GL_STENCIL_BACK_FAIL */
++ 1399, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
++ 1400, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
++ 485, /* GL_FRAGMENT_PROGRAM_ARB */
++ 1159, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
++ 1187, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
++ 1186, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
++ 1171, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
++ 1177, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
++ 1176, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
++ 829, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
++ 852, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
++ 851, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
++ 842, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
++ 848, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
++ 847, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
++ 812, /* GL_MAX_DRAW_BUFFERS */
++ 355, /* GL_DRAW_BUFFER0 */
++ 358, /* GL_DRAW_BUFFER1 */
++ 379, /* GL_DRAW_BUFFER2 */
++ 382, /* GL_DRAW_BUFFER3 */
++ 385, /* GL_DRAW_BUFFER4 */
++ 388, /* GL_DRAW_BUFFER5 */
++ 391, /* GL_DRAW_BUFFER6 */
++ 394, /* GL_DRAW_BUFFER7 */
++ 397, /* GL_DRAW_BUFFER8 */
++ 400, /* GL_DRAW_BUFFER9 */
++ 359, /* GL_DRAW_BUFFER10 */
++ 362, /* GL_DRAW_BUFFER11 */
++ 365, /* GL_DRAW_BUFFER12 */
++ 368, /* GL_DRAW_BUFFER13 */
++ 371, /* GL_DRAW_BUFFER14 */
++ 374, /* GL_DRAW_BUFFER15 */
++ 82, /* GL_BLEND_EQUATION_ALPHA */
++ 792, /* GL_MATRIX_PALETTE_ARB */
++ 823, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
++ 826, /* GL_MAX_PALETTE_MATRICES_ARB */
++ 289, /* GL_CURRENT_PALETTE_MATRIX_ARB */
++ 786, /* GL_MATRIX_INDEX_ARRAY_ARB */
++ 284, /* GL_CURRENT_MATRIX_INDEX_ARB */
++ 788, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
++ 790, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
++ 789, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
++ 787, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
++ 1573, /* GL_TEXTURE_DEPTH_SIZE */
++ 339, /* GL_DEPTH_TEXTURE_MODE */
++ 1539, /* GL_TEXTURE_COMPARE_MODE */
++ 1537, /* GL_TEXTURE_COMPARE_FUNC */
++ 217, /* GL_COMPARE_R_TO_TEXTURE */
++ 1093, /* GL_POINT_SPRITE */
++ 266, /* GL_COORD_REPLACE */
++ 1097, /* GL_POINT_SPRITE_R_MODE_NV */
++ 1214, /* GL_QUERY_COUNTER_BITS */
++ 291, /* GL_CURRENT_QUERY */
++ 1216, /* GL_QUERY_RESULT */
++ 1218, /* GL_QUERY_RESULT_AVAILABLE */
++ 873, /* GL_MAX_VERTEX_ATTRIBS */
++ 1704, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
++ 337, /* GL_DEPTH_STENCIL_TO_RGBA_NV */
++ 336, /* GL_DEPTH_STENCIL_TO_BGRA_NV */
++ 859, /* GL_MAX_TEXTURE_COORDS */
++ 861, /* GL_MAX_TEXTURE_IMAGE_UNITS */
++ 1164, /* GL_PROGRAM_ERROR_STRING_ARB */
++ 1166, /* GL_PROGRAM_FORMAT_ASCII_ARB */
++ 1165, /* GL_PROGRAM_FORMAT_ARB */
++ 1618, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
++ 318, /* GL_DEPTH_BOUNDS_TEST_EXT */
++ 317, /* GL_DEPTH_BOUNDS_EXT */
++ 52, /* GL_ARRAY_BUFFER */
++ 420, /* GL_ELEMENT_ARRAY_BUFFER */
++ 54, /* GL_ARRAY_BUFFER_BINDING */
++ 422, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
++ 1678, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
++ 960, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
++ 140, /* GL_COLOR_ARRAY_BUFFER_BINDING */
++ 579, /* GL_INDEX_ARRAY_BUFFER_BINDING */
++ 1552, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
++ 416, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
++ 1323, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
++ 463, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
++ 1730, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
++ 1700, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
++ 1167, /* GL_PROGRAM_INSTRUCTIONS_ARB */
++ 835, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
++ 1173, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
++ 844, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
++ 1185, /* GL_PROGRAM_TEMPORARIES_ARB */
++ 850, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
++ 1175, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
++ 846, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
++ 1179, /* GL_PROGRAM_PARAMETERS_ARB */
++ 849, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
++ 1174, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
++ 845, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
++ 1160, /* GL_PROGRAM_ATTRIBS_ARB */
++ 830, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
++ 1172, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
++ 843, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
++ 1158, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
++ 828, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
++ 1170, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
++ 841, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
++ 836, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
++ 832, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
++ 1188, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
++ 1629, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
++ 1226, /* GL_READ_ONLY */
++ 1738, /* GL_WRITE_ONLY */
++ 1228, /* GL_READ_WRITE */
++ 101, /* GL_BUFFER_ACCESS */
++ 103, /* GL_BUFFER_MAPPED */
++ 105, /* GL_BUFFER_MAP_POINTER */
++ 1623, /* GL_TIME_ELAPSED_EXT */
++ 746, /* GL_MATRIX0_ARB */
++ 758, /* GL_MATRIX1_ARB */
++ 770, /* GL_MATRIX2_ARB */
++ 774, /* GL_MATRIX3_ARB */
++ 776, /* GL_MATRIX4_ARB */
++ 778, /* GL_MATRIX5_ARB */
++ 780, /* GL_MATRIX6_ARB */
++ 782, /* GL_MATRIX7_ARB */
++ 784, /* GL_MATRIX8_ARB */
++ 785, /* GL_MATRIX9_ARB */
++ 748, /* GL_MATRIX10_ARB */
++ 749, /* GL_MATRIX11_ARB */
++ 750, /* GL_MATRIX12_ARB */
++ 751, /* GL_MATRIX13_ARB */
++ 752, /* GL_MATRIX14_ARB */
++ 753, /* GL_MATRIX15_ARB */
++ 754, /* GL_MATRIX16_ARB */
++ 755, /* GL_MATRIX17_ARB */
++ 756, /* GL_MATRIX18_ARB */
++ 757, /* GL_MATRIX19_ARB */
++ 760, /* GL_MATRIX20_ARB */
++ 761, /* GL_MATRIX21_ARB */
++ 762, /* GL_MATRIX22_ARB */
++ 763, /* GL_MATRIX23_ARB */
++ 764, /* GL_MATRIX24_ARB */
++ 765, /* GL_MATRIX25_ARB */
++ 766, /* GL_MATRIX26_ARB */
++ 767, /* GL_MATRIX27_ARB */
++ 768, /* GL_MATRIX28_ARB */
++ 769, /* GL_MATRIX29_ARB */
++ 772, /* GL_MATRIX30_ARB */
++ 773, /* GL_MATRIX31_ARB */
++ 1425, /* GL_STREAM_DRAW */
++ 1427, /* GL_STREAM_READ */
++ 1423, /* GL_STREAM_COPY */
++ 1391, /* GL_STATIC_DRAW */
++ 1393, /* GL_STATIC_READ */
++ 1389, /* GL_STATIC_COPY */
++ 410, /* GL_DYNAMIC_DRAW */
++ 412, /* GL_DYNAMIC_READ */
++ 408, /* GL_DYNAMIC_COPY */
++ 535, /* GL_GL_PIXEL_PACK_BUFFER */
++ 537, /* GL_GL_PIXEL_UNPACK_BUFFER */
++ 536, /* GL_GL_PIXEL_PACK_BUFFER_BINDING */
++ 538, /* GL_GL_PIXEL_UNPACK_BUFFER_BINDING */
++ 833, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */
++ 831, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
++ 834, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
++ 838, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
++ 837, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
++ 795, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */
++ 1419, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
++ 17, /* GL_ACTIVE_STENCIL_FACE_EXT */
++ 894, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
++ 1304, /* GL_SAMPLES_PASSED */
++ 486, /* GL_FRAGMENT_SHADER */
++ 1724, /* GL_VERTEX_SHADER */
++ 1178, /* GL_PROGRAM_OBJECT_ARB */
++ 1336, /* GL_SHADER_OBJECT_ARB */
++ 819, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
++ 877, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */
++ 871, /* GL_MAX_VARYING_FLOATS */
++ 875, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */
++ 804, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */
++ 985, /* GL_OBJECT_TYPE_ARB */
++ 1338, /* GL_SHADER_TYPE */
++ 451, /* GL_FLOAT_VEC2 */
++ 453, /* GL_FLOAT_VEC3 */
++ 455, /* GL_FLOAT_VEC4 */
++ 606, /* GL_INT_VEC2 */
++ 608, /* GL_INT_VEC3 */
++ 610, /* GL_INT_VEC4 */
++ 93, /* GL_BOOL */
++ 95, /* GL_BOOL_VEC2 */
++ 97, /* GL_BOOL_VEC3 */
++ 99, /* GL_BOOL_VEC4 */
++ 445, /* GL_FLOAT_MAT2 */
++ 447, /* GL_FLOAT_MAT3 */
++ 449, /* GL_FLOAT_MAT4 */
++ 1295, /* GL_SAMPLER_1D */
++ 1297, /* GL_SAMPLER_2D */
++ 1299, /* GL_SAMPLER_3D */
++ 1300, /* GL_SAMPLER_CUBE */
++ 1296, /* GL_SAMPLER_1D_SHADOW */
++ 1298, /* GL_SAMPLER_2D_SHADOW */
++ 529, /* GL_GL_FLOAT_MAT2x3 */
++ 530, /* GL_GL_FLOAT_MAT2x4 */
++ 531, /* GL_GL_FLOAT_MAT3x2 */
++ 532, /* GL_GL_FLOAT_MAT3x4 */
++ 533, /* GL_GL_FLOAT_MAT4x2 */
++ 534, /* GL_GL_FLOAT_MAT4x3 */
++ 312, /* GL_DELETE_STATUS */
++ 221, /* GL_COMPILE_STATUS */
++ 659, /* GL_LINK_STATUS */
++ 1673, /* GL_VALIDATE_STATUS */
++ 591, /* GL_INFO_LOG_LENGTH */
++ 56, /* GL_ATTACHED_SHADERS */
++ 20, /* GL_ACTIVE_UNIFORMS */
++ 21, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */
++ 1337, /* GL_SHADER_SOURCE_LENGTH */
++ 15, /* GL_ACTIVE_ATTRIBUTES */
++ 16, /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */
++ 488, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */
++ 1340, /* GL_SHADING_LANGUAGE_VERSION */
++ 290, /* GL_CURRENT_PROGRAM */
++ 1034, /* GL_PALETTE4_RGB8_OES */
++ 1036, /* GL_PALETTE4_RGBA8_OES */
++ 1032, /* GL_PALETTE4_R5_G6_B5_OES */
++ 1035, /* GL_PALETTE4_RGBA4_OES */
++ 1033, /* GL_PALETTE4_RGB5_A1_OES */
++ 1039, /* GL_PALETTE8_RGB8_OES */
++ 1041, /* GL_PALETTE8_RGBA8_OES */
++ 1037, /* GL_PALETTE8_R5_G6_B5_OES */
++ 1040, /* GL_PALETTE8_RGBA4_OES */
++ 1038, /* GL_PALETTE8_RGB5_A1_OES */
++ 574, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */
++ 573, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */
++ 1507, /* GL_TEXTURE_1D_ARRAY_EXT */
++ 1198, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */
++ 1509, /* GL_TEXTURE_2D_ARRAY_EXT */
++ 1201, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */
++ 1515, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */
++ 1517, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */
++ 543, /* GL_GL_SRGB */
++ 544, /* GL_GL_SRGB8 */
++ 546, /* GL_GL_SRGB_ALPHA */
++ 545, /* GL_GL_SRGB8_ALPHA8 */
++ 542, /* GL_GL_SLUMINANCE_ALPHA */
++ 541, /* GL_GL_SLUMINANCE8_ALPHA8 */
++ 539, /* GL_GL_SLUMINANCE */
++ 540, /* GL_GL_SLUMINANCE8 */
++ 526, /* GL_GL_COMPRESSED_SRGB */
++ 527, /* GL_GL_COMPRESSED_SRGB_ALPHA */
++ 524, /* GL_GL_COMPRESSED_SLUMINANCE */
++ 525, /* GL_GL_COMPRESSED_SLUMINANCE_ALPHA */
++ 1095, /* GL_POINT_SPRITE_COORD_ORIGIN */
++ 667, /* GL_LOWER_LEFT */
++ 1670, /* GL_UPPER_LEFT */
++ 1401, /* GL_STENCIL_BACK_REF */
++ 1402, /* GL_STENCIL_BACK_VALUE_MASK */
++ 1403, /* GL_STENCIL_BACK_WRITEMASK */
++ 403, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */
++ 1240, /* GL_RENDERBUFFER_BINDING_EXT */
++ 1225, /* GL_READ_FRAMEBUFFER_EXT */
++ 404, /* GL_DRAW_FRAMEBUFFER_EXT */
++ 1224, /* GL_READ_FRAMEBUFFER_BINDING_EXT */
++ 490, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */
++ 489, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */
++ 494, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */
++ 492, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */
++ 491, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */
++ 496, /* GL_FRAMEBUFFER_COMPLETE_EXT */
++ 498, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */
++ 503, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */
++ 501, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */
++ 499, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */
++ 502, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */
++ 500, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */
++ 504, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */
++ 506, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */
++ 505, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */
++ 801, /* GL_MAX_COLOR_ATTACHMENTS_EXT */
++ 146, /* GL_COLOR_ATTACHMENT0_EXT */
++ 153, /* GL_COLOR_ATTACHMENT1_EXT */
++ 154, /* GL_COLOR_ATTACHMENT2_EXT */
++ 155, /* GL_COLOR_ATTACHMENT3_EXT */
++ 156, /* GL_COLOR_ATTACHMENT4_EXT */
++ 157, /* GL_COLOR_ATTACHMENT5_EXT */
++ 158, /* GL_COLOR_ATTACHMENT6_EXT */
++ 159, /* GL_COLOR_ATTACHMENT7_EXT */
++ 160, /* GL_COLOR_ATTACHMENT8_EXT */
++ 161, /* GL_COLOR_ATTACHMENT9_EXT */
++ 147, /* GL_COLOR_ATTACHMENT10_EXT */
++ 148, /* GL_COLOR_ATTACHMENT11_EXT */
++ 149, /* GL_COLOR_ATTACHMENT12_EXT */
++ 150, /* GL_COLOR_ATTACHMENT13_EXT */
++ 151, /* GL_COLOR_ATTACHMENT14_EXT */
++ 152, /* GL_COLOR_ATTACHMENT15_EXT */
++ 314, /* GL_DEPTH_ATTACHMENT_EXT */
++ 1396, /* GL_STENCIL_ATTACHMENT_EXT */
++ 497, /* GL_FRAMEBUFFER_EXT */
++ 1241, /* GL_RENDERBUFFER_EXT */
++ 1244, /* GL_RENDERBUFFER_WIDTH_EXT */
++ 1242, /* GL_RENDERBUFFER_HEIGHT_EXT */
++ 1243, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */
++ 1414, /* GL_STENCIL_INDEX_EXT */
++ 1411, /* GL_STENCIL_INDEX1_EXT */
++ 1412, /* GL_STENCIL_INDEX4_EXT */
++ 1413, /* GL_STENCIL_INDEX8_EXT */
++ 1410, /* GL_STENCIL_INDEX16_EXT */
++ 428, /* GL_EVAL_BIT */
++ 1222, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
++ 661, /* GL_LIST_BIT */
++ 1523, /* GL_TEXTURE_BIT */
++ 1319, /* GL_SCISSOR_BIT */
++ 29, /* GL_ALL_ATTRIB_BITS */
++ 941, /* GL_MULTISAMPLE_BIT */
++ 30, /* GL_ALL_CLIENT_ATTRIB_BITS */
++};
++
++#define Elements(x) sizeof(x)/sizeof(*x)
++
++typedef int (*cfunc)(const void *, const void *);
++
++/**
++ * Compare a key name to an element in the \c all_enums array.
++ *
++ * \c bsearch always passes the key as the first parameter and the pointer
++ * to the array element as the second parameter. We can elimiate some
++ * extra work by taking advantage of that fact.
++ *
++ * \param a Pointer to the desired enum name.
++ * \param b Pointer to an element of the \c all_enums array.
++ */
++static int compar_name( const char *a, const enum_elt *b )
++{
++ return _mesa_strcmp( a, & enum_string_table[ b->offset ] );
++}
++
++/**
++ * Compare a key enum value to an element in the \c all_enums array.
++ *
++ * \c bsearch always passes the key as the first parameter and the pointer
++ * to the array element as the second parameter. We can elimiate some
++ * extra work by taking advantage of that fact.
++ *
++ * \param a Pointer to the desired enum name.
++ * \param b Pointer to an index into the \c all_enums array.
++ */
++static int compar_nr( const int *a, const unsigned *b )
++{
++ return a[0] - all_enums[*b].n;
++}
++
++
++static char token_tmp[20];
++
++const char *_mesa_lookup_enum_by_nr( int nr )
++{
++ unsigned * i;
++
++ i = (unsigned *)bsearch( & nr, reduced_enums, Elements(reduced_enums),
++ sizeof(reduced_enums[0]), (cfunc) compar_nr );
++
++ if ( i != NULL ) {
++ return & enum_string_table[ all_enums[ *i ].offset ];
++ }
++ else {
++ /* this is not re-entrant safe, no big deal here */
++ _mesa_sprintf(token_tmp, "0x%x", nr);
++ return token_tmp;
++ }
++}
++
++int _mesa_lookup_enum_by_name( const char *symbol )
++{
++ enum_elt * f = NULL;
++
++ if ( symbol != NULL ) {
++ f = (enum_elt *)bsearch( symbol, all_enums, Elements(all_enums),
++ sizeof( enum_elt ), (cfunc) compar_name );
++ }
++
++ return (f != NULL) ? f->n : -1;
++}
++
++
+Index: qemu-0.13.0/target-i386/mesa_get.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-i386/mesa_get.c 2011-01-17 16:42:36.000000000 +0800
+@@ -0,0 +1,5563 @@
++
++/***
++ *** NOTE!!! DO NOT EDIT THIS FILE!!! IT IS GENERATED BY get_gen.py
++ ***/
++
++#include "glheader.h"
++#include "context.h"
++#include "enable.h"
++#include "extensions.h"
++#include "fbobject.h"
++#include "get.h"
++#include "macros.h"
++#include "mtypes.h"
++#include "state.h"
++#include "texcompress.h"
++
++
++#define FLOAT_TO_BOOLEAN(X) ( (X) ? GL_TRUE : GL_FALSE )
++
++#define INT_TO_BOOLEAN(I) ( (I) ? GL_TRUE : GL_FALSE )
++
++#define ENUM_TO_BOOLEAN(E) ( (E) ? GL_TRUE : GL_FALSE )
++#define ENUM_TO_INT(E) ( (GLint) (E) )
++#define ENUM_TO_FLOAT(E) ( (GLfloat) (E) )
++
++#define BOOLEAN_TO_INT(B) ( (GLint) (B) )
++#define BOOLEAN_TO_FLOAT(B) ( (B) ? 1.0F : 0.0F )
++
++
++/*
++ * Check if named extension is enabled, if not generate error and return.
++ */
++#define CHECK_EXT1(EXT1, FUNC) \
++ if (!ctx->Extensions.EXT1) { \
++ _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \
++ return; \
++ }
++
++/*
++ * Check if either of two extensions is enabled.
++ */
++#define CHECK_EXT2(EXT1, EXT2, FUNC) \
++ if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2) { \
++ _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \
++ return; \
++ }
++
++/*
++ * Check if either of three extensions is enabled.
++ */
++#define CHECK_EXT3(EXT1, EXT2, EXT3, FUNC) \
++ if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \
++ !ctx->Extensions.EXT3) { \
++ _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \
++ return; \
++ }
++
++/*
++ * Check if either of four extensions is enabled.
++ */
++#define CHECK_EXT4(EXT1, EXT2, EXT3, EXT4, FUNC) \
++ if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \
++ !ctx->Extensions.EXT3 && !ctx->Extensions.EXT4) { \
++ _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \
++ return; \
++ }
++
++
++void GLAPIENTRY
++_mesa_GetBooleanv( GLenum pname, GLboolean *params )
++{
++ GET_CURRENT_CONTEXT(ctx);
++ ASSERT_OUTSIDE_BEGIN_END(ctx);
++
++ if (!params)
++ return;
++
++ if (ctx->NewState)
++ _mesa_update_state(ctx);
++
++ if (ctx->Driver.GetBooleanv &&
++ ctx->Driver.GetBooleanv(ctx, pname, params))
++ return;
++
++ switch (pname) {
++ case GL_ACCUM_RED_BITS:
++ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumRedBits);
++ break;
++ case GL_ACCUM_GREEN_BITS:
++ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumGreenBits);
++ break;
++ case GL_ACCUM_BLUE_BITS:
++ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumBlueBits);
++ break;
++ case GL_ACCUM_ALPHA_BITS:
++ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumAlphaBits);
++ break;
++ case GL_ACCUM_CLEAR_VALUE:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[0]);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[1]);
++ params[2] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[2]);
++ params[3] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[3]);
++ break;
++ case GL_ALPHA_BIAS:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.AlphaBias);
++ break;
++ case GL_ALPHA_BITS:
++ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.alphaBits);
++ break;
++ case GL_ALPHA_SCALE:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.AlphaScale);
++ break;
++ case GL_ALPHA_TEST:
++ params[0] = ctx->Color.AlphaEnabled;
++ break;
++ case GL_ALPHA_TEST_FUNC:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Color.AlphaFunc);
++ break;
++ case GL_ALPHA_TEST_REF:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Color.AlphaRef);
++ break;
++ case GL_ATTRIB_STACK_DEPTH:
++ params[0] = INT_TO_BOOLEAN(ctx->AttribStackDepth);
++ break;
++ case GL_AUTO_NORMAL:
++ params[0] = ctx->Eval.AutoNormal;
++ break;
++ case GL_AUX_BUFFERS:
++ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.numAuxBuffers);
++ break;
++ case GL_BLEND:
++ params[0] = ctx->Color.BlendEnabled;
++ break;
++ case GL_BLEND_DST:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstRGB);
++ break;
++ case GL_BLEND_SRC:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcRGB);
++ break;
++ case GL_BLEND_SRC_RGB_EXT:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcRGB);
++ break;
++ case GL_BLEND_DST_RGB_EXT:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstRGB);
++ break;
++ case GL_BLEND_SRC_ALPHA_EXT:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcA);
++ break;
++ case GL_BLEND_DST_ALPHA_EXT:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstA);
++ break;
++ case GL_BLEND_EQUATION:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendEquationRGB );
++ break;
++ case GL_BLEND_EQUATION_ALPHA_EXT:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendEquationA );
++ break;
++ case GL_BLEND_COLOR_EXT:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[0]);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[1]);
++ params[2] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[2]);
++ params[3] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[3]);
++ break;
++ case GL_BLUE_BIAS:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.BlueBias);
++ break;
++ case GL_BLUE_BITS:
++ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.blueBits);
++ break;
++ case GL_BLUE_SCALE:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.BlueScale);
++ break;
++ case GL_CLIENT_ATTRIB_STACK_DEPTH:
++ params[0] = INT_TO_BOOLEAN(ctx->ClientAttribStackDepth);
++ break;
++ case GL_CLIP_PLANE0:
++ params[0] = (ctx->Transform.ClipPlanesEnabled >> 0) & 1;
++ break;
++ case GL_CLIP_PLANE1:
++ params[0] = (ctx->Transform.ClipPlanesEnabled >> 1) & 1;
++ break;
++ case GL_CLIP_PLANE2:
++ params[0] = (ctx->Transform.ClipPlanesEnabled >> 2) & 1;
++ break;
++ case GL_CLIP_PLANE3:
++ params[0] = (ctx->Transform.ClipPlanesEnabled >> 3) & 1;
++ break;
++ case GL_CLIP_PLANE4:
++ params[0] = (ctx->Transform.ClipPlanesEnabled >> 4) & 1;
++ break;
++ case GL_CLIP_PLANE5:
++ params[0] = (ctx->Transform.ClipPlanesEnabled >> 5) & 1;
++ break;
++ case GL_COLOR_CLEAR_VALUE:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[0]);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[1]);
++ params[2] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[2]);
++ params[3] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[3]);
++ break;
++ case GL_COLOR_MATERIAL:
++ params[0] = ctx->Light.ColorMaterialEnabled;
++ break;
++ case GL_COLOR_MATERIAL_FACE:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Light.ColorMaterialFace);
++ break;
++ case GL_COLOR_MATERIAL_PARAMETER:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Light.ColorMaterialMode);
++ break;
++ case GL_COLOR_WRITEMASK:
++ params[0] = INT_TO_BOOLEAN(ctx->Color.ColorMask[RCOMP] ? 1 : 0);
++ params[1] = INT_TO_BOOLEAN(ctx->Color.ColorMask[GCOMP] ? 1 : 0);
++ params[2] = INT_TO_BOOLEAN(ctx->Color.ColorMask[BCOMP] ? 1 : 0);
++ params[3] = INT_TO_BOOLEAN(ctx->Color.ColorMask[ACOMP] ? 1 : 0);
++ break;
++ case GL_CULL_FACE:
++ params[0] = ctx->Polygon.CullFlag;
++ break;
++ case GL_CULL_FACE_MODE:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.CullFaceMode);
++ break;
++ case GL_CURRENT_COLOR:
++ {
++ FLUSH_CURRENT(ctx, 0);
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
++ params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
++ params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
++ }
++ break;
++ case GL_CURRENT_INDEX:
++ {
++ FLUSH_CURRENT(ctx, 0);
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]);
++ }
++ break;
++ case GL_CURRENT_NORMAL:
++ {
++ FLUSH_CURRENT(ctx, 0);
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
++ params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
++ }
++ break;
++ case GL_CURRENT_RASTER_COLOR:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[0]);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[1]);
++ params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[2]);
++ params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[3]);
++ break;
++ case GL_CURRENT_RASTER_DISTANCE:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterDistance);
++ break;
++ case GL_CURRENT_RASTER_INDEX:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterIndex);
++ break;
++ case GL_CURRENT_RASTER_POSITION:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[0]);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[1]);
++ params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[2]);
++ params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[3]);
++ break;
++ case GL_CURRENT_RASTER_SECONDARY_COLOR:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[0]);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[1]);
++ params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[2]);
++ params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[3]);
++ break;
++ case GL_CURRENT_RASTER_TEXTURE_COORDS:
++ {
++ const GLuint texUnit = ctx->Texture.CurrentUnit;
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][0]);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][1]);
++ params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][2]);
++ params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][3]);
++ }
++ break;
++ case GL_CURRENT_RASTER_POSITION_VALID:
++ params[0] = ctx->Current.RasterPosValid;
++ break;
++ case GL_CURRENT_TEXTURE_COORDS:
++ {
++ const GLuint texUnit = ctx->Texture.CurrentUnit;
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]);
++ params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]);
++ params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]);
++ }
++ break;
++ case GL_DEPTH_BIAS:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.DepthBias);
++ break;
++ case GL_DEPTH_BITS:
++ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.depthBits);
++ break;
++ case GL_DEPTH_CLEAR_VALUE:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Depth.Clear);
++ break;
++ case GL_DEPTH_FUNC:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Depth.Func);
++ break;
++ case GL_DEPTH_RANGE:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Viewport.Near);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Viewport.Far);
++ break;
++ case GL_DEPTH_SCALE:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.DepthScale);
++ break;
++ case GL_DEPTH_TEST:
++ params[0] = ctx->Depth.Test;
++ break;
++ case GL_DEPTH_WRITEMASK:
++ params[0] = ctx->Depth.Mask;
++ break;
++ case GL_DITHER:
++ params[0] = ctx->Color.DitherFlag;
++ break;
++ case GL_DOUBLEBUFFER:
++ params[0] = ctx->DrawBuffer->Visual.doubleBufferMode;
++ break;
++ case GL_DRAW_BUFFER:
++ params[0] = ENUM_TO_BOOLEAN(ctx->DrawBuffer->ColorDrawBuffer[0]);
++ break;
++ case GL_EDGE_FLAG:
++ {
++ FLUSH_CURRENT(ctx, 0);
++ params[0] = ctx->Current.EdgeFlag;
++ }
++ break;
++ case GL_FEEDBACK_BUFFER_SIZE:
++ params[0] = INT_TO_BOOLEAN(ctx->Feedback.BufferSize);
++ break;
++ case GL_FEEDBACK_BUFFER_TYPE:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Feedback.Type);
++ break;
++ case GL_FOG:
++ params[0] = ctx->Fog.Enabled;
++ break;
++ case GL_FOG_COLOR:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[0]);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[1]);
++ params[2] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[2]);
++ params[3] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[3]);
++ break;
++ case GL_FOG_DENSITY:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Density);
++ break;
++ case GL_FOG_END:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.End);
++ break;
++ case GL_FOG_HINT:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Hint.Fog);
++ break;
++ case GL_FOG_INDEX:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Index);
++ break;
++ case GL_FOG_MODE:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Fog.Mode);
++ break;
++ case GL_FOG_START:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Start);
++ break;
++ case GL_FRONT_FACE:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.FrontFace);
++ break;
++ case GL_GREEN_BIAS:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.GreenBias);
++ break;
++ case GL_GREEN_BITS:
++ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.greenBits);
++ break;
++ case GL_GREEN_SCALE:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.GreenScale);
++ break;
++ case GL_INDEX_BITS:
++ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.indexBits);
++ break;
++ case GL_INDEX_CLEAR_VALUE:
++ params[0] = INT_TO_BOOLEAN(ctx->Color.ClearIndex);
++ break;
++ case GL_INDEX_MODE:
++ params[0] = !ctx->DrawBuffer->Visual.rgbMode;
++ break;
++ case GL_INDEX_OFFSET:
++ params[0] = INT_TO_BOOLEAN(ctx->Pixel.IndexOffset);
++ break;
++ case GL_INDEX_SHIFT:
++ params[0] = INT_TO_BOOLEAN(ctx->Pixel.IndexShift);
++ break;
++ case GL_INDEX_WRITEMASK:
++ params[0] = INT_TO_BOOLEAN(ctx->Color.IndexMask);
++ break;
++ case GL_LIGHT0:
++ params[0] = ctx->Light.Light[0].Enabled;
++ break;
++ case GL_LIGHT1:
++ params[0] = ctx->Light.Light[1].Enabled;
++ break;
++ case GL_LIGHT2:
++ params[0] = ctx->Light.Light[2].Enabled;
++ break;
++ case GL_LIGHT3:
++ params[0] = ctx->Light.Light[3].Enabled;
++ break;
++ case GL_LIGHT4:
++ params[0] = ctx->Light.Light[4].Enabled;
++ break;
++ case GL_LIGHT5:
++ params[0] = ctx->Light.Light[5].Enabled;
++ break;
++ case GL_LIGHT6:
++ params[0] = ctx->Light.Light[6].Enabled;
++ break;
++ case GL_LIGHT7:
++ params[0] = ctx->Light.Light[7].Enabled;
++ break;
++ case GL_LIGHTING:
++ params[0] = ctx->Light.Enabled;
++ break;
++ case GL_LIGHT_MODEL_AMBIENT:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[0]);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[1]);
++ params[2] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[2]);
++ params[3] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[3]);
++ break;
++ case GL_LIGHT_MODEL_COLOR_CONTROL:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Light.Model.ColorControl);
++ break;
++ case GL_LIGHT_MODEL_LOCAL_VIEWER:
++ params[0] = ctx->Light.Model.LocalViewer;
++ break;
++ case GL_LIGHT_MODEL_TWO_SIDE:
++ params[0] = ctx->Light.Model.TwoSide;
++ break;
++ case GL_LINE_SMOOTH:
++ params[0] = ctx->Line.SmoothFlag;
++ break;
++ case GL_LINE_SMOOTH_HINT:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Hint.LineSmooth);
++ break;
++ case GL_LINE_STIPPLE:
++ params[0] = ctx->Line.StippleFlag;
++ break;
++ case GL_LINE_STIPPLE_PATTERN:
++ params[0] = INT_TO_BOOLEAN(ctx->Line.StipplePattern);
++ break;
++ case GL_LINE_STIPPLE_REPEAT:
++ params[0] = INT_TO_BOOLEAN(ctx->Line.StippleFactor);
++ break;
++ case GL_LINE_WIDTH:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Line.Width);
++ break;
++ case GL_LINE_WIDTH_GRANULARITY:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Const.LineWidthGranularity);
++ break;
++ case GL_LINE_WIDTH_RANGE:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinLineWidthAA);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxLineWidthAA);
++ break;
++ case GL_ALIASED_LINE_WIDTH_RANGE:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinLineWidth);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxLineWidth);
++ break;
++ case GL_LIST_BASE:
++ params[0] = INT_TO_BOOLEAN(ctx->List.ListBase);
++ break;
++ case GL_LIST_INDEX:
++ params[0] = INT_TO_BOOLEAN(ctx->ListState.CurrentListNum);
++ break;
++ case GL_LIST_MODE:
++ {
++ GLenum mode;
++ if (!ctx->CompileFlag)
++ mode = 0;
++ else if (ctx->ExecuteFlag)
++ mode = GL_COMPILE_AND_EXECUTE;
++ else
++ mode = GL_COMPILE;
++ params[0] = ENUM_TO_BOOLEAN(mode);
++ }
++ break;
++ case GL_INDEX_LOGIC_OP:
++ params[0] = ctx->Color.IndexLogicOpEnabled;
++ break;
++ case GL_COLOR_LOGIC_OP:
++ params[0] = ctx->Color.ColorLogicOpEnabled;
++ break;
++ case GL_LOGIC_OP_MODE:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Color.LogicOp);
++ break;
++ case GL_MAP1_COLOR_4:
++ params[0] = ctx->Eval.Map1Color4;
++ break;
++ case GL_MAP1_GRID_DOMAIN:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid1u1);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid1u2);
++ break;
++ case GL_MAP1_GRID_SEGMENTS:
++ params[0] = INT_TO_BOOLEAN(ctx->Eval.MapGrid1un);
++ break;
++ case GL_MAP1_INDEX:
++ params[0] = ctx->Eval.Map1Index;
++ break;
++ case GL_MAP1_NORMAL:
++ params[0] = ctx->Eval.Map1Normal;
++ break;
++ case GL_MAP1_TEXTURE_COORD_1:
++ params[0] = ctx->Eval.Map1TextureCoord1;
++ break;
++ case GL_MAP1_TEXTURE_COORD_2:
++ params[0] = ctx->Eval.Map1TextureCoord2;
++ break;
++ case GL_MAP1_TEXTURE_COORD_3:
++ params[0] = ctx->Eval.Map1TextureCoord3;
++ break;
++ case GL_MAP1_TEXTURE_COORD_4:
++ params[0] = ctx->Eval.Map1TextureCoord4;
++ break;
++ case GL_MAP1_VERTEX_3:
++ params[0] = ctx->Eval.Map1Vertex3;
++ break;
++ case GL_MAP1_VERTEX_4:
++ params[0] = ctx->Eval.Map1Vertex4;
++ break;
++ case GL_MAP2_COLOR_4:
++ params[0] = ctx->Eval.Map2Color4;
++ break;
++ case GL_MAP2_GRID_DOMAIN:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2u1);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2u2);
++ params[2] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2v1);
++ params[3] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2v2);
++ break;
++ case GL_MAP2_GRID_SEGMENTS:
++ params[0] = INT_TO_BOOLEAN(ctx->Eval.MapGrid2un);
++ params[1] = INT_TO_BOOLEAN(ctx->Eval.MapGrid2vn);
++ break;
++ case GL_MAP2_INDEX:
++ params[0] = ctx->Eval.Map2Index;
++ break;
++ case GL_MAP2_NORMAL:
++ params[0] = ctx->Eval.Map2Normal;
++ break;
++ case GL_MAP2_TEXTURE_COORD_1:
++ params[0] = ctx->Eval.Map2TextureCoord1;
++ break;
++ case GL_MAP2_TEXTURE_COORD_2:
++ params[0] = ctx->Eval.Map2TextureCoord2;
++ break;
++ case GL_MAP2_TEXTURE_COORD_3:
++ params[0] = ctx->Eval.Map2TextureCoord3;
++ break;
++ case GL_MAP2_TEXTURE_COORD_4:
++ params[0] = ctx->Eval.Map2TextureCoord4;
++ break;
++ case GL_MAP2_VERTEX_3:
++ params[0] = ctx->Eval.Map2Vertex3;
++ break;
++ case GL_MAP2_VERTEX_4:
++ params[0] = ctx->Eval.Map2Vertex4;
++ break;
++ case GL_MAP_COLOR:
++ params[0] = ctx->Pixel.MapColorFlag;
++ break;
++ case GL_MAP_STENCIL:
++ params[0] = ctx->Pixel.MapStencilFlag;
++ break;
++ case GL_MATRIX_MODE:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Transform.MatrixMode);
++ break;
++ case GL_MAX_ATTRIB_STACK_DEPTH:
++ params[0] = INT_TO_BOOLEAN(MAX_ATTRIB_STACK_DEPTH);
++ break;
++ case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
++ params[0] = INT_TO_BOOLEAN(MAX_CLIENT_ATTRIB_STACK_DEPTH);
++ break;
++ case GL_MAX_CLIP_PLANES:
++ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxClipPlanes);
++ break;
++ case GL_MAX_ELEMENTS_VERTICES:
++ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxArrayLockSize);
++ break;
++ case GL_MAX_ELEMENTS_INDICES:
++ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxArrayLockSize);
++ break;
++ case GL_MAX_EVAL_ORDER:
++ params[0] = INT_TO_BOOLEAN(MAX_EVAL_ORDER);
++ break;
++ case GL_MAX_LIGHTS:
++ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxLights);
++ break;
++ case GL_MAX_LIST_NESTING:
++ params[0] = INT_TO_BOOLEAN(MAX_LIST_NESTING);
++ break;
++ case GL_MAX_MODELVIEW_STACK_DEPTH:
++ params[0] = INT_TO_BOOLEAN(MAX_MODELVIEW_STACK_DEPTH);
++ break;
++ case GL_MAX_NAME_STACK_DEPTH:
++ params[0] = INT_TO_BOOLEAN(MAX_NAME_STACK_DEPTH);
++ break;
++ case GL_MAX_PIXEL_MAP_TABLE:
++ params[0] = INT_TO_BOOLEAN(MAX_PIXEL_MAP_TABLE);
++ break;
++ case GL_MAX_PROJECTION_STACK_DEPTH:
++ params[0] = INT_TO_BOOLEAN(MAX_PROJECTION_STACK_DEPTH);
++ break;
++ case GL_MAX_TEXTURE_SIZE:
++ params[0] = INT_TO_BOOLEAN(1 << (ctx->Const.MaxTextureLevels - 1));
++ break;
++ case GL_MAX_3D_TEXTURE_SIZE:
++ params[0] = INT_TO_BOOLEAN(1 << (ctx->Const.Max3DTextureLevels - 1));
++ break;
++ case GL_MAX_TEXTURE_STACK_DEPTH:
++ params[0] = INT_TO_BOOLEAN(MAX_TEXTURE_STACK_DEPTH);
++ break;
++ case GL_MAX_VIEWPORT_DIMS:
++ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxViewportWidth);
++ params[1] = INT_TO_BOOLEAN(ctx->Const.MaxViewportHeight);
++ break;
++ case GL_MODELVIEW_MATRIX:
++ {
++ const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
++ params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
++ params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
++ params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
++ params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
++ params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
++ params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
++ params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
++ params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
++ params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
++ params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
++ params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
++ params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
++ params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
++ params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
++ params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
++ params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
++ }
++ break;
++ case GL_MODELVIEW_STACK_DEPTH:
++ params[0] = INT_TO_BOOLEAN(ctx->ModelviewMatrixStack.Depth + 1);
++ break;
++ case GL_NAME_STACK_DEPTH:
++ params[0] = INT_TO_BOOLEAN(ctx->Select.NameStackDepth);
++ break;
++ case GL_NORMALIZE:
++ params[0] = ctx->Transform.Normalize;
++ break;
++ case GL_PACK_ALIGNMENT:
++ params[0] = INT_TO_BOOLEAN(ctx->Pack.Alignment);
++ break;
++ case GL_PACK_LSB_FIRST:
++ params[0] = ctx->Pack.LsbFirst;
++ break;
++ case GL_PACK_ROW_LENGTH:
++ params[0] = INT_TO_BOOLEAN(ctx->Pack.RowLength);
++ break;
++ case GL_PACK_SKIP_PIXELS:
++ params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipPixels);
++ break;
++ case GL_PACK_SKIP_ROWS:
++ params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipRows);
++ break;
++ case GL_PACK_SWAP_BYTES:
++ params[0] = ctx->Pack.SwapBytes;
++ break;
++ case GL_PACK_SKIP_IMAGES_EXT:
++ params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipImages);
++ break;
++ case GL_PACK_IMAGE_HEIGHT_EXT:
++ params[0] = INT_TO_BOOLEAN(ctx->Pack.ImageHeight);
++ break;
++ case GL_PACK_INVERT_MESA:
++ params[0] = ctx->Pack.Invert;
++ break;
++ case GL_PERSPECTIVE_CORRECTION_HINT:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PerspectiveCorrection);
++ break;
++ case GL_PIXEL_MAP_A_TO_A_SIZE:
++ params[0] = INT_TO_BOOLEAN(ctx->Pixel.MapAtoAsize);
++ break;
++ case GL_PIXEL_MAP_B_TO_B_SIZE:
++ params[0] = INT_TO_BOOLEAN(ctx->Pixel.MapBtoBsize);
++ break;
++ case GL_PIXEL_MAP_G_TO_G_SIZE:
++ params[0] = INT_TO_BOOLEAN(ctx->Pixel.MapGtoGsize);
++ break;
++ case GL_PIXEL_MAP_I_TO_A_SIZE:
++ params[0] = INT_TO_BOOLEAN(ctx->Pixel.MapItoAsize);
++ break;
++ case GL_PIXEL_MAP_I_TO_B_SIZE:
++ params[0] = INT_TO_BOOLEAN(ctx->Pixel.MapItoBsize);
++ break;
++ case GL_PIXEL_MAP_I_TO_G_SIZE:
++ params[0] = INT_TO_BOOLEAN(ctx->Pixel.MapItoGsize);
++ break;
++ case GL_PIXEL_MAP_I_TO_I_SIZE:
++ params[0] = INT_TO_BOOLEAN(ctx->Pixel.MapItoIsize);
++ break;
++ case GL_PIXEL_MAP_I_TO_R_SIZE:
++ params[0] = INT_TO_BOOLEAN(ctx->Pixel.MapItoRsize);
++ break;
++ case GL_PIXEL_MAP_R_TO_R_SIZE:
++ params[0] = INT_TO_BOOLEAN(ctx->Pixel.MapRtoRsize);
++ break;
++ case GL_PIXEL_MAP_S_TO_S_SIZE:
++ params[0] = INT_TO_BOOLEAN(ctx->Pixel.MapStoSsize);
++ break;
++ case GL_POINT_SIZE:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Size);
++ break;
++ case GL_POINT_SIZE_GRANULARITY:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Const.PointSizeGranularity);
++ break;
++ case GL_POINT_SIZE_RANGE:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinPointSizeAA);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxPointSizeAA);
++ break;
++ case GL_ALIASED_POINT_SIZE_RANGE:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinPointSize);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxPointSize);
++ break;
++ case GL_POINT_SMOOTH:
++ params[0] = ctx->Point.SmoothFlag;
++ break;
++ case GL_POINT_SMOOTH_HINT:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PointSmooth);
++ break;
++ case GL_POINT_SIZE_MIN_EXT:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Point.MinSize);
++ break;
++ case GL_POINT_SIZE_MAX_EXT:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Point.MaxSize);
++ break;
++ case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Threshold);
++ break;
++ case GL_DISTANCE_ATTENUATION_EXT:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Params[0]);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Point.Params[1]);
++ params[2] = FLOAT_TO_BOOLEAN(ctx->Point.Params[2]);
++ break;
++ case GL_POLYGON_MODE:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.FrontMode);
++ params[1] = ENUM_TO_BOOLEAN(ctx->Polygon.BackMode);
++ break;
++ case GL_POLYGON_OFFSET_BIAS_EXT:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetUnits);
++ break;
++ case GL_POLYGON_OFFSET_FACTOR:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetFactor );
++ break;
++ case GL_POLYGON_OFFSET_UNITS:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetUnits );
++ break;
++ case GL_POLYGON_SMOOTH:
++ params[0] = ctx->Polygon.SmoothFlag;
++ break;
++ case GL_POLYGON_SMOOTH_HINT:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PolygonSmooth);
++ break;
++ case GL_POLYGON_STIPPLE:
++ params[0] = ctx->Polygon.StippleFlag;
++ break;
++ case GL_PROJECTION_MATRIX:
++ {
++ const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
++ params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
++ params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
++ params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
++ params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
++ params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
++ params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
++ params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
++ params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
++ params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
++ params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
++ params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
++ params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
++ params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
++ params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
++ params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
++ params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
++ }
++ break;
++ case GL_PROJECTION_STACK_DEPTH:
++ params[0] = INT_TO_BOOLEAN(ctx->ProjectionMatrixStack.Depth + 1);
++ break;
++ case GL_READ_BUFFER:
++ params[0] = ENUM_TO_BOOLEAN(ctx->ReadBuffer->ColorReadBuffer);
++ break;
++ case GL_RED_BIAS:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.RedBias);
++ break;
++ case GL_RED_BITS:
++ params[0] = INT_TO_BOOLEAN( ctx->DrawBuffer->Visual.redBits );
++ break;
++ case GL_RED_SCALE:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.RedScale);
++ break;
++ case GL_RENDER_MODE:
++ params[0] = ENUM_TO_BOOLEAN(ctx->RenderMode);
++ break;
++ case GL_RESCALE_NORMAL:
++ params[0] = ctx->Transform.RescaleNormals;
++ break;
++ case GL_RGBA_MODE:
++ params[0] = ctx->DrawBuffer->Visual.rgbMode;
++ break;
++ case GL_SCISSOR_BOX:
++ params[0] = INT_TO_BOOLEAN(ctx->Scissor.X);
++ params[1] = INT_TO_BOOLEAN(ctx->Scissor.Y);
++ params[2] = INT_TO_BOOLEAN(ctx->Scissor.Width);
++ params[3] = INT_TO_BOOLEAN(ctx->Scissor.Height);
++ break;
++ case GL_SCISSOR_TEST:
++ params[0] = ctx->Scissor.Enabled;
++ break;
++ case GL_SELECTION_BUFFER_SIZE:
++ params[0] = INT_TO_BOOLEAN(ctx->Select.BufferSize);
++ break;
++ case GL_SHADE_MODEL:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Light.ShadeModel);
++ break;
++ case GL_SHARED_TEXTURE_PALETTE_EXT:
++ params[0] = ctx->Texture.SharedPalette;
++ break;
++ case GL_STENCIL_BITS:
++ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.stencilBits);
++ break;
++ case GL_STENCIL_CLEAR_VALUE:
++ params[0] = INT_TO_BOOLEAN(ctx->Stencil.Clear);
++ break;
++ case GL_STENCIL_FAIL:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
++ break;
++ case GL_STENCIL_FUNC:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
++ break;
++ case GL_STENCIL_PASS_DEPTH_FAIL:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
++ break;
++ case GL_STENCIL_PASS_DEPTH_PASS:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
++ break;
++ case GL_STENCIL_REF:
++ params[0] = INT_TO_BOOLEAN(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]);
++ break;
++ case GL_STENCIL_TEST:
++ params[0] = ctx->Stencil.Enabled;
++ break;
++ case GL_STENCIL_VALUE_MASK:
++ params[0] = INT_TO_BOOLEAN(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]);
++ break;
++ case GL_STENCIL_WRITEMASK:
++ params[0] = INT_TO_BOOLEAN(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]);
++ break;
++ case GL_STEREO:
++ params[0] = ctx->DrawBuffer->Visual.stereoMode;
++ break;
++ case GL_SUBPIXEL_BITS:
++ params[0] = INT_TO_BOOLEAN(ctx->Const.SubPixelBits);
++ break;
++ case GL_TEXTURE_1D:
++ params[0] = _mesa_IsEnabled(GL_TEXTURE_1D);
++ break;
++ case GL_TEXTURE_2D:
++ params[0] = _mesa_IsEnabled(GL_TEXTURE_2D);
++ break;
++ case GL_TEXTURE_3D:
++ params[0] = _mesa_IsEnabled(GL_TEXTURE_3D);
++ break;
++ case GL_TEXTURE_BINDING_1D:
++ params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current1D->Name);
++ break;
++ case GL_TEXTURE_BINDING_2D:
++ params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current2D->Name);
++ break;
++ case GL_TEXTURE_BINDING_3D:
++ params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current3D->Name);
++ break;
++ case GL_TEXTURE_ENV_COLOR:
++ {
++ const GLfloat *color = ctx->Texture.Unit[ctx->Texture.CurrentUnit].EnvColor;
++ params[0] = FLOAT_TO_BOOLEAN(color[0]);
++ params[1] = FLOAT_TO_BOOLEAN(color[1]);
++ params[2] = FLOAT_TO_BOOLEAN(color[2]);
++ params[3] = FLOAT_TO_BOOLEAN(color[3]);
++ }
++ break;
++ case GL_TEXTURE_ENV_MODE:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].EnvMode);
++ break;
++ case GL_TEXTURE_GEN_S:
++ params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0);
++ break;
++ case GL_TEXTURE_GEN_T:
++ params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0);
++ break;
++ case GL_TEXTURE_GEN_R:
++ params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0);
++ break;
++ case GL_TEXTURE_GEN_Q:
++ params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0);
++ break;
++ case GL_TEXTURE_MATRIX:
++ {
++ const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
++ params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
++ params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
++ params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
++ params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
++ params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
++ params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
++ params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
++ params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
++ params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
++ params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
++ params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
++ params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
++ params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
++ params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
++ params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
++ params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
++ }
++ break;
++ case GL_TEXTURE_STACK_DEPTH:
++ params[0] = INT_TO_BOOLEAN(ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1);
++ break;
++ case GL_UNPACK_ALIGNMENT:
++ params[0] = INT_TO_BOOLEAN(ctx->Unpack.Alignment);
++ break;
++ case GL_UNPACK_LSB_FIRST:
++ params[0] = ctx->Unpack.LsbFirst;
++ break;
++ case GL_UNPACK_ROW_LENGTH:
++ params[0] = INT_TO_BOOLEAN(ctx->Unpack.RowLength);
++ break;
++ case GL_UNPACK_SKIP_PIXELS:
++ params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipPixels);
++ break;
++ case GL_UNPACK_SKIP_ROWS:
++ params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipRows);
++ break;
++ case GL_UNPACK_SWAP_BYTES:
++ params[0] = ctx->Unpack.SwapBytes;
++ break;
++ case GL_UNPACK_SKIP_IMAGES_EXT:
++ params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipImages);
++ break;
++ case GL_UNPACK_IMAGE_HEIGHT_EXT:
++ params[0] = INT_TO_BOOLEAN(ctx->Unpack.ImageHeight);
++ break;
++ case GL_UNPACK_CLIENT_STORAGE_APPLE:
++ params[0] = ctx->Unpack.ClientStorage;
++ break;
++ case GL_VIEWPORT:
++ params[0] = INT_TO_BOOLEAN(ctx->Viewport.X);
++ params[1] = INT_TO_BOOLEAN(ctx->Viewport.Y);
++ params[2] = INT_TO_BOOLEAN(ctx->Viewport.Width);
++ params[3] = INT_TO_BOOLEAN(ctx->Viewport.Height);
++ break;
++ case GL_ZOOM_X:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.ZoomX);
++ break;
++ case GL_ZOOM_Y:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.ZoomY);
++ break;
++ case GL_VERTEX_ARRAY:
++ params[0] = ctx->Array.ArrayObj->Vertex.Enabled;
++ break;
++ case GL_VERTEX_ARRAY_SIZE:
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Size);
++ break;
++ case GL_VERTEX_ARRAY_TYPE:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Type);
++ break;
++ case GL_VERTEX_ARRAY_STRIDE:
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Stride);
++ break;
++ case GL_VERTEX_ARRAY_COUNT_EXT:
++ params[0] = INT_TO_BOOLEAN(0);
++ break;
++ case GL_NORMAL_ARRAY:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Enabled);
++ break;
++ case GL_NORMAL_ARRAY_TYPE:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Type);
++ break;
++ case GL_NORMAL_ARRAY_STRIDE:
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Stride);
++ break;
++ case GL_NORMAL_ARRAY_COUNT_EXT:
++ params[0] = INT_TO_BOOLEAN(0);
++ break;
++ case GL_COLOR_ARRAY:
++ params[0] = ctx->Array.ArrayObj->Color.Enabled;
++ break;
++ case GL_COLOR_ARRAY_SIZE:
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Size);
++ break;
++ case GL_COLOR_ARRAY_TYPE:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Type);
++ break;
++ case GL_COLOR_ARRAY_STRIDE:
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Stride);
++ break;
++ case GL_COLOR_ARRAY_COUNT_EXT:
++ params[0] = INT_TO_BOOLEAN(0);
++ break;
++ case GL_INDEX_ARRAY:
++ params[0] = ctx->Array.ArrayObj->Index.Enabled;
++ break;
++ case GL_INDEX_ARRAY_TYPE:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Index.Type);
++ break;
++ case GL_INDEX_ARRAY_STRIDE:
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Index.Stride);
++ break;
++ case GL_INDEX_ARRAY_COUNT_EXT:
++ params[0] = INT_TO_BOOLEAN(0);
++ break;
++ case GL_TEXTURE_COORD_ARRAY:
++ params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled;
++ break;
++ case GL_TEXTURE_COORD_ARRAY_SIZE:
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size);
++ break;
++ case GL_TEXTURE_COORD_ARRAY_TYPE:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
++ break;
++ case GL_TEXTURE_COORD_ARRAY_STRIDE:
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride);
++ break;
++ case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
++ params[0] = INT_TO_BOOLEAN(0);
++ break;
++ case GL_EDGE_FLAG_ARRAY:
++ params[0] = ctx->Array.ArrayObj->EdgeFlag.Enabled;
++ break;
++ case GL_EDGE_FLAG_ARRAY_STRIDE:
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->EdgeFlag.Stride);
++ break;
++ case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
++ params[0] = INT_TO_BOOLEAN(0);
++ break;
++ case GL_MAX_TEXTURE_UNITS_ARB:
++ CHECK_EXT1(ARB_multitexture, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureUnits);
++ break;
++ case GL_ACTIVE_TEXTURE_ARB:
++ CHECK_EXT1(ARB_multitexture, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit);
++ break;
++ case GL_CLIENT_ACTIVE_TEXTURE_ARB:
++ CHECK_EXT1(ARB_multitexture, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture);
++ break;
++ case GL_TEXTURE_CUBE_MAP_ARB:
++ CHECK_EXT1(ARB_texture_cube_map, "GetBooleanv");
++ params[0] = _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB);
++ break;
++ case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
++ CHECK_EXT1(ARB_texture_cube_map, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentCubeMap->Name);
++ break;
++ case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
++ CHECK_EXT1(ARB_texture_cube_map, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN((1 << (ctx->Const.MaxCubeTextureLevels - 1)));
++ break;
++ case GL_TEXTURE_COMPRESSION_HINT_ARB:
++ CHECK_EXT1(ARB_texture_compression, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Hint.TextureCompression);
++ break;
++ case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
++ CHECK_EXT1(ARB_texture_compression, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
++ break;
++ case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
++ CHECK_EXT1(ARB_texture_compression, "GetBooleanv");
++ {
++ GLint formats[100];
++ GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
++ ASSERT(n <= 100);
++ for (i = 0; i < n; i++)
++ params[i] = ENUM_TO_INT(formats[i]);
++ }
++ break;
++ case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
++ CHECK_EXT1(EXT_compiled_vertex_array, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Array.LockFirst);
++ break;
++ case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
++ CHECK_EXT1(EXT_compiled_vertex_array, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Array.LockCount);
++ break;
++ case GL_TRANSPOSE_COLOR_MATRIX_ARB:
++ {
++ const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
++ params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
++ params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
++ params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
++ params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
++ params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
++ params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
++ params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
++ params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
++ params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
++ params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
++ params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
++ params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
++ params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
++ params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
++ params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
++ params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
++ }
++ break;
++ case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
++ {
++ const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
++ params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
++ params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
++ params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
++ params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
++ params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
++ params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
++ params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
++ params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
++ params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
++ params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
++ params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
++ params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
++ params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
++ params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
++ params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
++ params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
++ }
++ break;
++ case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
++ {
++ const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
++ params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
++ params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
++ params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
++ params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
++ params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
++ params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
++ params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
++ params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
++ params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
++ params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
++ params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
++ params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
++ params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
++ params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
++ params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
++ params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
++ }
++ break;
++ case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
++ {
++ const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
++ params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
++ params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
++ params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
++ params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
++ params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
++ params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
++ params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
++ params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
++ params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
++ params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
++ params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
++ params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
++ params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
++ params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
++ params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
++ params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
++ }
++ break;
++ case GL_COLOR_MATRIX_SGI:
++ {
++ const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
++ params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
++ params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
++ params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
++ params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
++ params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
++ params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
++ params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
++ params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
++ params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
++ params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
++ params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
++ params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
++ params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
++ params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
++ params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
++ params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
++ }
++ break;
++ case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
++ params[0] = INT_TO_BOOLEAN(ctx->ColorMatrixStack.Depth + 1);
++ break;
++ case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
++ params[0] = INT_TO_BOOLEAN(MAX_COLOR_STACK_DEPTH);
++ break;
++ case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[0]);
++ break;
++ case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[1]);
++ break;
++ case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[2]);
++ break;
++ case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[3]);
++ break;
++ case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[0]);
++ break;
++ case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[1]);
++ break;
++ case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[2]);
++ break;
++ case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[3]);
++ break;
++ case GL_CONVOLUTION_1D_EXT:
++ CHECK_EXT1(EXT_convolution, "GetBooleanv");
++ params[0] = ctx->Pixel.Convolution1DEnabled;
++ break;
++ case GL_CONVOLUTION_2D_EXT:
++ CHECK_EXT1(EXT_convolution, "GetBooleanv");
++ params[0] = ctx->Pixel.Convolution2DEnabled;
++ break;
++ case GL_SEPARABLE_2D_EXT:
++ CHECK_EXT1(EXT_convolution, "GetBooleanv");
++ params[0] = ctx->Pixel.Separable2DEnabled;
++ break;
++ case GL_POST_CONVOLUTION_RED_SCALE_EXT:
++ CHECK_EXT1(EXT_convolution, "GetBooleanv");
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[0]);
++ break;
++ case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
++ CHECK_EXT1(EXT_convolution, "GetBooleanv");
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[1]);
++ break;
++ case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
++ CHECK_EXT1(EXT_convolution, "GetBooleanv");
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[2]);
++ break;
++ case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
++ CHECK_EXT1(EXT_convolution, "GetBooleanv");
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[3]);
++ break;
++ case GL_POST_CONVOLUTION_RED_BIAS_EXT:
++ CHECK_EXT1(EXT_convolution, "GetBooleanv");
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[0]);
++ break;
++ case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
++ CHECK_EXT1(EXT_convolution, "GetBooleanv");
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[1]);
++ break;
++ case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
++ CHECK_EXT1(EXT_convolution, "GetBooleanv");
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[2]);
++ break;
++ case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
++ CHECK_EXT1(EXT_convolution, "GetBooleanv");
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[3]);
++ break;
++ case GL_HISTOGRAM:
++ CHECK_EXT1(EXT_histogram, "GetBooleanv");
++ params[0] = ctx->Pixel.HistogramEnabled;
++ break;
++ case GL_MINMAX:
++ CHECK_EXT1(EXT_histogram, "GetBooleanv");
++ params[0] = ctx->Pixel.MinMaxEnabled;
++ break;
++ case GL_COLOR_TABLE_SGI:
++ CHECK_EXT1(SGI_color_table, "GetBooleanv");
++ params[0] = ctx->Pixel.ColorTableEnabled;
++ break;
++ case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
++ CHECK_EXT1(SGI_color_table, "GetBooleanv");
++ params[0] = ctx->Pixel.PostConvolutionColorTableEnabled;
++ break;
++ case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
++ CHECK_EXT1(SGI_color_table, "GetBooleanv");
++ params[0] = ctx->Pixel.PostColorMatrixColorTableEnabled;
++ break;
++ case GL_TEXTURE_COLOR_TABLE_SGI:
++ CHECK_EXT1(SGI_texture_color_table, "GetBooleanv");
++ params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled;
++ break;
++ case GL_COLOR_SUM_EXT:
++ CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetBooleanv");
++ params[0] = ctx->Fog.ColorSumEnabled;
++ break;
++ case GL_CURRENT_SECONDARY_COLOR_EXT:
++ CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
++ {
++ FLUSH_CURRENT(ctx, 0);
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
++ params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
++ params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]);
++ }
++ break;
++ case GL_SECONDARY_COLOR_ARRAY_EXT:
++ CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
++ params[0] = ctx->Array.ArrayObj->SecondaryColor.Enabled;
++ break;
++ case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
++ CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
++ params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Type);
++ break;
++ case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
++ CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Stride);
++ break;
++ case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
++ CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Size);
++ break;
++ case GL_CURRENT_FOG_COORDINATE_EXT:
++ CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
++ {
++ FLUSH_CURRENT(ctx, 0);
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
++ }
++ break;
++ case GL_FOG_COORDINATE_ARRAY_EXT:
++ CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
++ params[0] = ctx->Array.ArrayObj->FogCoord.Enabled;
++ break;
++ case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
++ CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
++ params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.Type);
++ break;
++ case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
++ CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.Stride);
++ break;
++ case GL_FOG_COORDINATE_SOURCE_EXT:
++ CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
++ params[0] = ENUM_TO_BOOLEAN(ctx->Fog.FogCoordinateSource);
++ break;
++ case GL_MAX_TEXTURE_LOD_BIAS_EXT:
++ CHECK_EXT1(EXT_texture_lod_bias, "GetBooleanv");
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxTextureLodBias);
++ break;
++ case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
++ CHECK_EXT1(EXT_texture_filter_anisotropic, "GetBooleanv");
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxTextureMaxAnisotropy);
++ break;
++ case GL_MULTISAMPLE_ARB:
++ CHECK_EXT1(ARB_multisample, "GetBooleanv");
++ params[0] = ctx->Multisample.Enabled;
++ break;
++ case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
++ CHECK_EXT1(ARB_multisample, "GetBooleanv");
++ params[0] = ctx->Multisample.SampleAlphaToCoverage;
++ break;
++ case GL_SAMPLE_ALPHA_TO_ONE_ARB:
++ CHECK_EXT1(ARB_multisample, "GetBooleanv");
++ params[0] = ctx->Multisample.SampleAlphaToOne;
++ break;
++ case GL_SAMPLE_COVERAGE_ARB:
++ CHECK_EXT1(ARB_multisample, "GetBooleanv");
++ params[0] = ctx->Multisample.SampleCoverage;
++ break;
++ case GL_SAMPLE_COVERAGE_VALUE_ARB:
++ CHECK_EXT1(ARB_multisample, "GetBooleanv");
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Multisample.SampleCoverageValue);
++ break;
++ case GL_SAMPLE_COVERAGE_INVERT_ARB:
++ CHECK_EXT1(ARB_multisample, "GetBooleanv");
++ params[0] = ctx->Multisample.SampleCoverageInvert;
++ break;
++ case GL_SAMPLE_BUFFERS_ARB:
++ CHECK_EXT1(ARB_multisample, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.sampleBuffers);
++ break;
++ case GL_SAMPLES_ARB:
++ CHECK_EXT1(ARB_multisample, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.samples);
++ break;
++ case GL_RASTER_POSITION_UNCLIPPED_IBM:
++ CHECK_EXT1(IBM_rasterpos_clip, "GetBooleanv");
++ params[0] = ctx->Transform.RasterPositionUnclipped;
++ break;
++ case GL_POINT_SPRITE_NV:
++ CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetBooleanv");
++ params[0] = ctx->Point.PointSprite;
++ break;
++ case GL_POINT_SPRITE_R_MODE_NV:
++ CHECK_EXT1(NV_point_sprite, "GetBooleanv");
++ params[0] = ENUM_TO_BOOLEAN(ctx->Point.SpriteRMode);
++ break;
++ case GL_POINT_SPRITE_COORD_ORIGIN:
++ CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetBooleanv");
++ params[0] = ENUM_TO_BOOLEAN(ctx->Point.SpriteOrigin);
++ break;
++ case GL_GENERATE_MIPMAP_HINT_SGIS:
++ CHECK_EXT1(SGIS_generate_mipmap, "GetBooleanv");
++ params[0] = ENUM_TO_BOOLEAN(ctx->Hint.GenerateMipmap);
++ break;
++ case GL_VERTEX_PROGRAM_BINDING_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0));
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY0_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Array.ArrayObj->VertexAttrib[0].Enabled;
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY1_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Array.ArrayObj->VertexAttrib[1].Enabled;
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY2_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Array.ArrayObj->VertexAttrib[2].Enabled;
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY3_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Array.ArrayObj->VertexAttrib[3].Enabled;
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Array.ArrayObj->VertexAttrib[4].Enabled;
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY5_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Array.ArrayObj->VertexAttrib[5].Enabled;
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY6_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Array.ArrayObj->VertexAttrib[6].Enabled;
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY7_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Array.ArrayObj->VertexAttrib[7].Enabled;
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY8_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Array.ArrayObj->VertexAttrib[8].Enabled;
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY9_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Array.ArrayObj->VertexAttrib[9].Enabled;
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY10_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Array.ArrayObj->VertexAttrib[10].Enabled;
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY11_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Array.ArrayObj->VertexAttrib[11].Enabled;
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY12_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Array.ArrayObj->VertexAttrib[12].Enabled;
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY13_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Array.ArrayObj->VertexAttrib[13].Enabled;
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY14_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Array.ArrayObj->VertexAttrib[14].Enabled;
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY15_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Array.ArrayObj->VertexAttrib[15].Enabled;
++ break;
++ case GL_MAP1_VERTEX_ATTRIB0_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Eval.Map1Attrib[0];
++ break;
++ case GL_MAP1_VERTEX_ATTRIB1_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Eval.Map1Attrib[1];
++ break;
++ case GL_MAP1_VERTEX_ATTRIB2_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Eval.Map1Attrib[2];
++ break;
++ case GL_MAP1_VERTEX_ATTRIB3_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Eval.Map1Attrib[3];
++ break;
++ case GL_MAP1_VERTEX_ATTRIB4_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Eval.Map1Attrib[4];
++ break;
++ case GL_MAP1_VERTEX_ATTRIB5_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Eval.Map1Attrib[5];
++ break;
++ case GL_MAP1_VERTEX_ATTRIB6_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Eval.Map1Attrib[6];
++ break;
++ case GL_MAP1_VERTEX_ATTRIB7_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Eval.Map1Attrib[7];
++ break;
++ case GL_MAP1_VERTEX_ATTRIB8_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Eval.Map1Attrib[8];
++ break;
++ case GL_MAP1_VERTEX_ATTRIB9_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Eval.Map1Attrib[9];
++ break;
++ case GL_MAP1_VERTEX_ATTRIB10_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Eval.Map1Attrib[10];
++ break;
++ case GL_MAP1_VERTEX_ATTRIB11_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Eval.Map1Attrib[11];
++ break;
++ case GL_MAP1_VERTEX_ATTRIB12_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Eval.Map1Attrib[12];
++ break;
++ case GL_MAP1_VERTEX_ATTRIB13_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Eval.Map1Attrib[13];
++ break;
++ case GL_MAP1_VERTEX_ATTRIB14_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Eval.Map1Attrib[14];
++ break;
++ case GL_MAP1_VERTEX_ATTRIB15_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->Eval.Map1Attrib[15];
++ break;
++ case GL_FRAGMENT_PROGRAM_NV:
++ CHECK_EXT1(NV_fragment_program, "GetBooleanv");
++ params[0] = ctx->FragmentProgram.Enabled;
++ break;
++ case GL_FRAGMENT_PROGRAM_BINDING_NV:
++ CHECK_EXT1(NV_fragment_program, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0);
++ break;
++ case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
++ CHECK_EXT1(NV_fragment_program, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(MAX_NV_FRAGMENT_PROGRAM_PARAMS);
++ break;
++ case GL_TEXTURE_RECTANGLE_NV:
++ CHECK_EXT1(NV_texture_rectangle, "GetBooleanv");
++ params[0] = _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV);
++ break;
++ case GL_TEXTURE_BINDING_RECTANGLE_NV:
++ CHECK_EXT1(NV_texture_rectangle, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentRect->Name);
++ break;
++ case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
++ CHECK_EXT1(NV_texture_rectangle, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureRectSize);
++ break;
++ case GL_STENCIL_TEST_TWO_SIDE_EXT:
++ CHECK_EXT1(EXT_stencil_two_side, "GetBooleanv");
++ params[0] = ctx->Stencil.TestTwoSide;
++ break;
++ case GL_ACTIVE_STENCIL_FACE_EXT:
++ CHECK_EXT1(EXT_stencil_two_side, "GetBooleanv");
++ params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
++ break;
++ case GL_MAX_SHININESS_NV:
++ CHECK_EXT1(NV_light_max_exponent, "GetBooleanv");
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxShininess);
++ break;
++ case GL_MAX_SPOT_EXPONENT_NV:
++ CHECK_EXT1(NV_light_max_exponent, "GetBooleanv");
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxSpotExponent);
++ break;
++ case GL_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayBufferObj->Name);
++ break;
++ case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.BufferObj->Name);
++ break;
++ case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.BufferObj->Name);
++ break;
++ case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.BufferObj->Name);
++ break;
++ case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Index.BufferObj->Name);
++ break;
++ case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name);
++ break;
++ case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name);
++ break;
++ case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name);
++ break;
++ case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.BufferObj->Name);
++ break;
++ case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Array.ElementArrayBufferObj->Name);
++ break;
++ case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
++ CHECK_EXT1(EXT_pixel_buffer_object, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Pack.BufferObj->Name);
++ break;
++ case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
++ CHECK_EXT1(EXT_pixel_buffer_object, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Unpack.BufferObj->Name);
++ break;
++ case GL_VERTEX_PROGRAM_ARB:
++ CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->VertexProgram.Enabled;
++ break;
++ case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
++ CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->VertexProgram.PointSizeEnabled;
++ break;
++ case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
++ CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->VertexProgram.TwoSideEnabled;
++ break;
++ case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
++ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxProgramMatrixStackDepth);
++ break;
++ case GL_MAX_PROGRAM_MATRICES_ARB:
++ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxProgramMatrices);
++ break;
++ case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
++ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv");
++ params[0] = ctx->CurrentStack->Depth + 1;
++ break;
++ case GL_CURRENT_MATRIX_ARB:
++ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetBooleanv");
++ {
++ const GLfloat *matrix = ctx->CurrentStack->Top->m;
++ params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
++ params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
++ params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
++ params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
++ params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
++ params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
++ params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
++ params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
++ params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
++ params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
++ params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
++ params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
++ params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
++ params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
++ params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
++ params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
++ }
++ break;
++ case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
++ CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetBooleanv");
++ {
++ const GLfloat *matrix = ctx->CurrentStack->Top->m;
++ params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
++ params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
++ params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
++ params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
++ params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
++ params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
++ params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
++ params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
++ params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
++ params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
++ params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
++ params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
++ params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
++ params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
++ params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
++ params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
++ }
++ break;
++ case GL_MAX_VERTEX_ATTRIBS_ARB:
++ CHECK_EXT1(ARB_vertex_program, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Const.VertexProgram.MaxAttribs);
++ break;
++ case GL_PROGRAM_ERROR_POSITION_ARB:
++ CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Program.ErrorPos);
++ break;
++ case GL_FRAGMENT_PROGRAM_ARB:
++ CHECK_EXT1(ARB_fragment_program, "GetBooleanv");
++ params[0] = ctx->FragmentProgram.Enabled;
++ break;
++ case GL_MAX_TEXTURE_COORDS_ARB:
++ CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureCoordUnits);
++ break;
++ case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
++ CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureImageUnits);
++ break;
++ case GL_DEPTH_BOUNDS_TEST_EXT:
++ CHECK_EXT1(EXT_depth_bounds_test, "GetBooleanv");
++ params[0] = ctx->Depth.BoundsTest;
++ break;
++ case GL_DEPTH_BOUNDS_EXT:
++ CHECK_EXT1(EXT_depth_bounds_test, "GetBooleanv");
++ params[0] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMin);
++ params[1] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMax);
++ break;
++ case GL_FRAGMENT_PROGRAM_CALLBACK_MESA:
++ CHECK_EXT1(MESA_program_debug, "GetBooleanv");
++ params[0] = ctx->FragmentProgram.CallbackEnabled;
++ break;
++ case GL_VERTEX_PROGRAM_CALLBACK_MESA:
++ CHECK_EXT1(MESA_program_debug, "GetBooleanv");
++ params[0] = ctx->VertexProgram.CallbackEnabled;
++ break;
++ case GL_FRAGMENT_PROGRAM_POSITION_MESA:
++ CHECK_EXT1(MESA_program_debug, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->FragmentProgram.CurrentPosition);
++ break;
++ case GL_VERTEX_PROGRAM_POSITION_MESA:
++ CHECK_EXT1(MESA_program_debug, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->VertexProgram.CurrentPosition);
++ break;
++ case GL_MAX_DRAW_BUFFERS_ARB:
++ CHECK_EXT1(ARB_draw_buffers, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxDrawBuffers);
++ break;
++ case GL_DRAW_BUFFER0_ARB:
++ CHECK_EXT1(ARB_draw_buffers, "GetBooleanv");
++ params[0] = ENUM_TO_BOOLEAN(ctx->DrawBuffer->ColorDrawBuffer[0]);
++ break;
++ case GL_DRAW_BUFFER1_ARB:
++ CHECK_EXT1(ARB_draw_buffers, "GetBooleanv");
++ {
++ GLenum buffer;
++ if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
++ _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
++ return;
++ }
++ buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
++ params[0] = ENUM_TO_BOOLEAN(buffer);
++ }
++ break;
++ case GL_DRAW_BUFFER2_ARB:
++ CHECK_EXT1(ARB_draw_buffers, "GetBooleanv");
++ {
++ GLenum buffer;
++ if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
++ _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
++ return;
++ }
++ buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
++ params[0] = ENUM_TO_BOOLEAN(buffer);
++ }
++ break;
++ case GL_DRAW_BUFFER3_ARB:
++ CHECK_EXT1(ARB_draw_buffers, "GetBooleanv");
++ {
++ GLenum buffer;
++ if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
++ _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
++ return;
++ }
++ buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
++ params[0] = ENUM_TO_BOOLEAN(buffer);
++ }
++ break;
++ case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
++ CHECK_EXT1(OES_read_format, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Const.ColorReadType);
++ break;
++ case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
++ CHECK_EXT1(OES_read_format, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Const.ColorReadFormat);
++ break;
++ case GL_NUM_FRAGMENT_REGISTERS_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(6);
++ break;
++ case GL_NUM_FRAGMENT_CONSTANTS_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(8);
++ break;
++ case GL_NUM_PASSES_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(2);
++ break;
++ case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(8);
++ break;
++ case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(16);
++ break;
++ case GL_COLOR_ALPHA_PAIRING_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
++ params[0] = GL_TRUE;
++ break;
++ case GL_NUM_LOOPBACK_COMPONENTS_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(3);
++ break;
++ case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(3);
++ break;
++ case GL_STENCIL_BACK_FUNC:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.Function[1]);
++ break;
++ case GL_STENCIL_BACK_VALUE_MASK:
++ params[0] = INT_TO_BOOLEAN(ctx->Stencil.ValueMask[1]);
++ break;
++ case GL_STENCIL_BACK_REF:
++ params[0] = INT_TO_BOOLEAN(ctx->Stencil.Ref[1]);
++ break;
++ case GL_STENCIL_BACK_FAIL:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.FailFunc[1]);
++ break;
++ case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZFailFunc[1]);
++ break;
++ case GL_STENCIL_BACK_PASS_DEPTH_PASS:
++ params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZPassFunc[1]);
++ break;
++ case GL_FRAMEBUFFER_BINDING_EXT:
++ CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Name);
++ break;
++ case GL_RENDERBUFFER_BINDING_EXT:
++ CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0);
++ break;
++ case GL_MAX_COLOR_ATTACHMENTS_EXT:
++ CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxColorAttachments);
++ break;
++ case GL_MAX_RENDERBUFFER_SIZE_EXT:
++ CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(ctx->Const.MaxRenderbufferSize);
++ break;
++ case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
++ CHECK_EXT1(ARB_fragment_shader, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(MAX_FRAGMENT_UNIFORM_COMPONENTS);
++ break;
++ case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
++ CHECK_EXT1(ARB_fragment_shader, "GetBooleanv");
++ params[0] = ENUM_TO_BOOLEAN(ctx->Hint.FragmentShaderDerivative);
++ break;
++ case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
++ CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(MAX_VERTEX_UNIFORM_COMPONENTS);
++ break;
++ case GL_MAX_VARYING_FLOATS_ARB:
++ CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(MAX_VARYING_FLOATS);
++ break;
++ case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
++ CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(MAX_VERTEX_TEXTURE_IMAGE_UNITS);
++ break;
++ case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
++ CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
++ params[0] = INT_TO_BOOLEAN(MAX_COMBINED_TEXTURE_IMAGE_UNITS);
++ break;
++ default:
++ _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv(pname=0x%x)", pname);
++ }
++}
++
++void GLAPIENTRY
++_mesa_GetFloatv( GLenum pname, GLfloat *params )
++{
++ GET_CURRENT_CONTEXT(ctx);
++ ASSERT_OUTSIDE_BEGIN_END(ctx);
++
++ if (!params)
++ return;
++
++ if (ctx->NewState)
++ _mesa_update_state(ctx);
++
++ if (ctx->Driver.GetFloatv &&
++ ctx->Driver.GetFloatv(ctx, pname, params))
++ return;
++
++ switch (pname) {
++ case GL_ACCUM_RED_BITS:
++ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumRedBits);
++ break;
++ case GL_ACCUM_GREEN_BITS:
++ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumGreenBits);
++ break;
++ case GL_ACCUM_BLUE_BITS:
++ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumBlueBits);
++ break;
++ case GL_ACCUM_ALPHA_BITS:
++ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumAlphaBits);
++ break;
++ case GL_ACCUM_CLEAR_VALUE:
++ params[0] = ctx->Accum.ClearColor[0];
++ params[1] = ctx->Accum.ClearColor[1];
++ params[2] = ctx->Accum.ClearColor[2];
++ params[3] = ctx->Accum.ClearColor[3];
++ break;
++ case GL_ALPHA_BIAS:
++ params[0] = ctx->Pixel.AlphaBias;
++ break;
++ case GL_ALPHA_BITS:
++ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.alphaBits);
++ break;
++ case GL_ALPHA_SCALE:
++ params[0] = ctx->Pixel.AlphaScale;
++ break;
++ case GL_ALPHA_TEST:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Color.AlphaEnabled);
++ break;
++ case GL_ALPHA_TEST_FUNC:
++ params[0] = ENUM_TO_FLOAT(ctx->Color.AlphaFunc);
++ break;
++ case GL_ALPHA_TEST_REF:
++ params[0] = ctx->Color.AlphaRef;
++ break;
++ case GL_ATTRIB_STACK_DEPTH:
++ params[0] = (GLfloat)(ctx->AttribStackDepth);
++ break;
++ case GL_AUTO_NORMAL:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.AutoNormal);
++ break;
++ case GL_AUX_BUFFERS:
++ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.numAuxBuffers);
++ break;
++ case GL_BLEND:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Color.BlendEnabled);
++ break;
++ case GL_BLEND_DST:
++ params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB);
++ break;
++ case GL_BLEND_SRC:
++ params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB);
++ break;
++ case GL_BLEND_SRC_RGB_EXT:
++ params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB);
++ break;
++ case GL_BLEND_DST_RGB_EXT:
++ params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB);
++ break;
++ case GL_BLEND_SRC_ALPHA_EXT:
++ params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcA);
++ break;
++ case GL_BLEND_DST_ALPHA_EXT:
++ params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstA);
++ break;
++ case GL_BLEND_EQUATION:
++ params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationRGB );
++ break;
++ case GL_BLEND_EQUATION_ALPHA_EXT:
++ params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationA );
++ break;
++ case GL_BLEND_COLOR_EXT:
++ params[0] = ctx->Color.BlendColor[0];
++ params[1] = ctx->Color.BlendColor[1];
++ params[2] = ctx->Color.BlendColor[2];
++ params[3] = ctx->Color.BlendColor[3];
++ break;
++ case GL_BLUE_BIAS:
++ params[0] = ctx->Pixel.BlueBias;
++ break;
++ case GL_BLUE_BITS:
++ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.blueBits);
++ break;
++ case GL_BLUE_SCALE:
++ params[0] = ctx->Pixel.BlueScale;
++ break;
++ case GL_CLIENT_ATTRIB_STACK_DEPTH:
++ params[0] = (GLfloat)(ctx->ClientAttribStackDepth);
++ break;
++ case GL_CLIP_PLANE0:
++ params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
++ break;
++ case GL_CLIP_PLANE1:
++ params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
++ break;
++ case GL_CLIP_PLANE2:
++ params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
++ break;
++ case GL_CLIP_PLANE3:
++ params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
++ break;
++ case GL_CLIP_PLANE4:
++ params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
++ break;
++ case GL_CLIP_PLANE5:
++ params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
++ break;
++ case GL_COLOR_CLEAR_VALUE:
++ params[0] = ctx->Color.ClearColor[0];
++ params[1] = ctx->Color.ClearColor[1];
++ params[2] = ctx->Color.ClearColor[2];
++ params[3] = ctx->Color.ClearColor[3];
++ break;
++ case GL_COLOR_MATERIAL:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.ColorMaterialEnabled);
++ break;
++ case GL_COLOR_MATERIAL_FACE:
++ params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialFace);
++ break;
++ case GL_COLOR_MATERIAL_PARAMETER:
++ params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialMode);
++ break;
++ case GL_COLOR_WRITEMASK:
++ params[0] = (GLfloat)(ctx->Color.ColorMask[RCOMP] ? 1 : 0);
++ params[1] = (GLfloat)(ctx->Color.ColorMask[GCOMP] ? 1 : 0);
++ params[2] = (GLfloat)(ctx->Color.ColorMask[BCOMP] ? 1 : 0);
++ params[3] = (GLfloat)(ctx->Color.ColorMask[ACOMP] ? 1 : 0);
++ break;
++ case GL_CULL_FACE:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.CullFlag);
++ break;
++ case GL_CULL_FACE_MODE:
++ params[0] = ENUM_TO_FLOAT(ctx->Polygon.CullFaceMode);
++ break;
++ case GL_CURRENT_COLOR:
++ {
++ FLUSH_CURRENT(ctx, 0);
++ params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0];
++ params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1];
++ params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2];
++ params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3];
++ }
++ break;
++ case GL_CURRENT_INDEX:
++ {
++ FLUSH_CURRENT(ctx, 0);
++ params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0];
++ }
++ break;
++ case GL_CURRENT_NORMAL:
++ {
++ FLUSH_CURRENT(ctx, 0);
++ params[0] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0];
++ params[1] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1];
++ params[2] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2];
++ }
++ break;
++ case GL_CURRENT_RASTER_COLOR:
++ params[0] = ctx->Current.RasterColor[0];
++ params[1] = ctx->Current.RasterColor[1];
++ params[2] = ctx->Current.RasterColor[2];
++ params[3] = ctx->Current.RasterColor[3];
++ break;
++ case GL_CURRENT_RASTER_DISTANCE:
++ params[0] = ctx->Current.RasterDistance;
++ break;
++ case GL_CURRENT_RASTER_INDEX:
++ params[0] = ctx->Current.RasterIndex;
++ break;
++ case GL_CURRENT_RASTER_POSITION:
++ params[0] = ctx->Current.RasterPos[0];
++ params[1] = ctx->Current.RasterPos[1];
++ params[2] = ctx->Current.RasterPos[2];
++ params[3] = ctx->Current.RasterPos[3];
++ break;
++ case GL_CURRENT_RASTER_SECONDARY_COLOR:
++ params[0] = ctx->Current.RasterSecondaryColor[0];
++ params[1] = ctx->Current.RasterSecondaryColor[1];
++ params[2] = ctx->Current.RasterSecondaryColor[2];
++ params[3] = ctx->Current.RasterSecondaryColor[3];
++ break;
++ case GL_CURRENT_RASTER_TEXTURE_COORDS:
++ {
++ const GLuint texUnit = ctx->Texture.CurrentUnit;
++ params[0] = ctx->Current.RasterTexCoords[texUnit][0];
++ params[1] = ctx->Current.RasterTexCoords[texUnit][1];
++ params[2] = ctx->Current.RasterTexCoords[texUnit][2];
++ params[3] = ctx->Current.RasterTexCoords[texUnit][3];
++ }
++ break;
++ case GL_CURRENT_RASTER_POSITION_VALID:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Current.RasterPosValid);
++ break;
++ case GL_CURRENT_TEXTURE_COORDS:
++ {
++ const GLuint texUnit = ctx->Texture.CurrentUnit;
++ params[0] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0];
++ params[1] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1];
++ params[2] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2];
++ params[3] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3];
++ }
++ break;
++ case GL_DEPTH_BIAS:
++ params[0] = ctx->Pixel.DepthBias;
++ break;
++ case GL_DEPTH_BITS:
++ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.depthBits);
++ break;
++ case GL_DEPTH_CLEAR_VALUE:
++ params[0] = ctx->Depth.Clear;
++ break;
++ case GL_DEPTH_FUNC:
++ params[0] = ENUM_TO_FLOAT(ctx->Depth.Func);
++ break;
++ case GL_DEPTH_RANGE:
++ params[0] = ctx->Viewport.Near;
++ params[1] = ctx->Viewport.Far;
++ break;
++ case GL_DEPTH_SCALE:
++ params[0] = ctx->Pixel.DepthScale;
++ break;
++ case GL_DEPTH_TEST:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Test);
++ break;
++ case GL_DEPTH_WRITEMASK:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Mask);
++ break;
++ case GL_DITHER:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Color.DitherFlag);
++ break;
++ case GL_DOUBLEBUFFER:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.doubleBufferMode);
++ break;
++ case GL_DRAW_BUFFER:
++ params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]);
++ break;
++ case GL_EDGE_FLAG:
++ {
++ FLUSH_CURRENT(ctx, 0);
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Current.EdgeFlag);
++ }
++ break;
++ case GL_FEEDBACK_BUFFER_SIZE:
++ params[0] = (GLfloat)(ctx->Feedback.BufferSize);
++ break;
++ case GL_FEEDBACK_BUFFER_TYPE:
++ params[0] = ENUM_TO_FLOAT(ctx->Feedback.Type);
++ break;
++ case GL_FOG:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.Enabled);
++ break;
++ case GL_FOG_COLOR:
++ params[0] = ctx->Fog.Color[0];
++ params[1] = ctx->Fog.Color[1];
++ params[2] = ctx->Fog.Color[2];
++ params[3] = ctx->Fog.Color[3];
++ break;
++ case GL_FOG_DENSITY:
++ params[0] = ctx->Fog.Density;
++ break;
++ case GL_FOG_END:
++ params[0] = ctx->Fog.End;
++ break;
++ case GL_FOG_HINT:
++ params[0] = ENUM_TO_FLOAT(ctx->Hint.Fog);
++ break;
++ case GL_FOG_INDEX:
++ params[0] = ctx->Fog.Index;
++ break;
++ case GL_FOG_MODE:
++ params[0] = ENUM_TO_FLOAT(ctx->Fog.Mode);
++ break;
++ case GL_FOG_START:
++ params[0] = ctx->Fog.Start;
++ break;
++ case GL_FRONT_FACE:
++ params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontFace);
++ break;
++ case GL_GREEN_BIAS:
++ params[0] = ctx->Pixel.GreenBias;
++ break;
++ case GL_GREEN_BITS:
++ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.greenBits);
++ break;
++ case GL_GREEN_SCALE:
++ params[0] = ctx->Pixel.GreenScale;
++ break;
++ case GL_INDEX_BITS:
++ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.indexBits);
++ break;
++ case GL_INDEX_CLEAR_VALUE:
++ params[0] = (GLfloat)(ctx->Color.ClearIndex);
++ break;
++ case GL_INDEX_MODE:
++ params[0] = BOOLEAN_TO_FLOAT(!ctx->DrawBuffer->Visual.rgbMode);
++ break;
++ case GL_INDEX_OFFSET:
++ params[0] = (GLfloat)(ctx->Pixel.IndexOffset);
++ break;
++ case GL_INDEX_SHIFT:
++ params[0] = (GLfloat)(ctx->Pixel.IndexShift);
++ break;
++ case GL_INDEX_WRITEMASK:
++ params[0] = (GLfloat)(ctx->Color.IndexMask);
++ break;
++ case GL_LIGHT0:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[0].Enabled);
++ break;
++ case GL_LIGHT1:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[1].Enabled);
++ break;
++ case GL_LIGHT2:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[2].Enabled);
++ break;
++ case GL_LIGHT3:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[3].Enabled);
++ break;
++ case GL_LIGHT4:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[4].Enabled);
++ break;
++ case GL_LIGHT5:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[5].Enabled);
++ break;
++ case GL_LIGHT6:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[6].Enabled);
++ break;
++ case GL_LIGHT7:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[7].Enabled);
++ break;
++ case GL_LIGHTING:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Enabled);
++ break;
++ case GL_LIGHT_MODEL_AMBIENT:
++ params[0] = ctx->Light.Model.Ambient[0];
++ params[1] = ctx->Light.Model.Ambient[1];
++ params[2] = ctx->Light.Model.Ambient[2];
++ params[3] = ctx->Light.Model.Ambient[3];
++ break;
++ case GL_LIGHT_MODEL_COLOR_CONTROL:
++ params[0] = ENUM_TO_FLOAT(ctx->Light.Model.ColorControl);
++ break;
++ case GL_LIGHT_MODEL_LOCAL_VIEWER:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.LocalViewer);
++ break;
++ case GL_LIGHT_MODEL_TWO_SIDE:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.TwoSide);
++ break;
++ case GL_LINE_SMOOTH:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Line.SmoothFlag);
++ break;
++ case GL_LINE_SMOOTH_HINT:
++ params[0] = ENUM_TO_FLOAT(ctx->Hint.LineSmooth);
++ break;
++ case GL_LINE_STIPPLE:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Line.StippleFlag);
++ break;
++ case GL_LINE_STIPPLE_PATTERN:
++ params[0] = (GLfloat)(ctx->Line.StipplePattern);
++ break;
++ case GL_LINE_STIPPLE_REPEAT:
++ params[0] = (GLfloat)(ctx->Line.StippleFactor);
++ break;
++ case GL_LINE_WIDTH:
++ params[0] = ctx->Line.Width;
++ break;
++ case GL_LINE_WIDTH_GRANULARITY:
++ params[0] = ctx->Const.LineWidthGranularity;
++ break;
++ case GL_LINE_WIDTH_RANGE:
++ params[0] = ctx->Const.MinLineWidthAA;
++ params[1] = ctx->Const.MaxLineWidthAA;
++ break;
++ case GL_ALIASED_LINE_WIDTH_RANGE:
++ params[0] = ctx->Const.MinLineWidth;
++ params[1] = ctx->Const.MaxLineWidth;
++ break;
++ case GL_LIST_BASE:
++ params[0] = (GLfloat)(ctx->List.ListBase);
++ break;
++ case GL_LIST_INDEX:
++ params[0] = (GLfloat)(ctx->ListState.CurrentListNum);
++ break;
++ case GL_LIST_MODE:
++ {
++ GLenum mode;
++ if (!ctx->CompileFlag)
++ mode = 0;
++ else if (ctx->ExecuteFlag)
++ mode = GL_COMPILE_AND_EXECUTE;
++ else
++ mode = GL_COMPILE;
++ params[0] = ENUM_TO_FLOAT(mode);
++ }
++ break;
++ case GL_INDEX_LOGIC_OP:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Color.IndexLogicOpEnabled);
++ break;
++ case GL_COLOR_LOGIC_OP:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Color.ColorLogicOpEnabled);
++ break;
++ case GL_LOGIC_OP_MODE:
++ params[0] = ENUM_TO_FLOAT(ctx->Color.LogicOp);
++ break;
++ case GL_MAP1_COLOR_4:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Color4);
++ break;
++ case GL_MAP1_GRID_DOMAIN:
++ params[0] = ctx->Eval.MapGrid1u1;
++ params[1] = ctx->Eval.MapGrid1u2;
++ break;
++ case GL_MAP1_GRID_SEGMENTS:
++ params[0] = (GLfloat)(ctx->Eval.MapGrid1un);
++ break;
++ case GL_MAP1_INDEX:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Index);
++ break;
++ case GL_MAP1_NORMAL:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Normal);
++ break;
++ case GL_MAP1_TEXTURE_COORD_1:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord1);
++ break;
++ case GL_MAP1_TEXTURE_COORD_2:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord2);
++ break;
++ case GL_MAP1_TEXTURE_COORD_3:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord3);
++ break;
++ case GL_MAP1_TEXTURE_COORD_4:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord4);
++ break;
++ case GL_MAP1_VERTEX_3:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex3);
++ break;
++ case GL_MAP1_VERTEX_4:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex4);
++ break;
++ case GL_MAP2_COLOR_4:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Color4);
++ break;
++ case GL_MAP2_GRID_DOMAIN:
++ params[0] = ctx->Eval.MapGrid2u1;
++ params[1] = ctx->Eval.MapGrid2u2;
++ params[2] = ctx->Eval.MapGrid2v1;
++ params[3] = ctx->Eval.MapGrid2v2;
++ break;
++ case GL_MAP2_GRID_SEGMENTS:
++ params[0] = (GLfloat)(ctx->Eval.MapGrid2un);
++ params[1] = (GLfloat)(ctx->Eval.MapGrid2vn);
++ break;
++ case GL_MAP2_INDEX:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Index);
++ break;
++ case GL_MAP2_NORMAL:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Normal);
++ break;
++ case GL_MAP2_TEXTURE_COORD_1:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord1);
++ break;
++ case GL_MAP2_TEXTURE_COORD_2:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord2);
++ break;
++ case GL_MAP2_TEXTURE_COORD_3:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord3);
++ break;
++ case GL_MAP2_TEXTURE_COORD_4:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord4);
++ break;
++ case GL_MAP2_VERTEX_3:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex3);
++ break;
++ case GL_MAP2_VERTEX_4:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex4);
++ break;
++ case GL_MAP_COLOR:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapColorFlag);
++ break;
++ case GL_MAP_STENCIL:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapStencilFlag);
++ break;
++ case GL_MATRIX_MODE:
++ params[0] = ENUM_TO_FLOAT(ctx->Transform.MatrixMode);
++ break;
++ case GL_MAX_ATTRIB_STACK_DEPTH:
++ params[0] = (GLfloat)(MAX_ATTRIB_STACK_DEPTH);
++ break;
++ case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
++ params[0] = (GLfloat)(MAX_CLIENT_ATTRIB_STACK_DEPTH);
++ break;
++ case GL_MAX_CLIP_PLANES:
++ params[0] = (GLfloat)(ctx->Const.MaxClipPlanes);
++ break;
++ case GL_MAX_ELEMENTS_VERTICES:
++ params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize);
++ break;
++ case GL_MAX_ELEMENTS_INDICES:
++ params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize);
++ break;
++ case GL_MAX_EVAL_ORDER:
++ params[0] = (GLfloat)(MAX_EVAL_ORDER);
++ break;
++ case GL_MAX_LIGHTS:
++ params[0] = (GLfloat)(ctx->Const.MaxLights);
++ break;
++ case GL_MAX_LIST_NESTING:
++ params[0] = (GLfloat)(MAX_LIST_NESTING);
++ break;
++ case GL_MAX_MODELVIEW_STACK_DEPTH:
++ params[0] = (GLfloat)(MAX_MODELVIEW_STACK_DEPTH);
++ break;
++ case GL_MAX_NAME_STACK_DEPTH:
++ params[0] = (GLfloat)(MAX_NAME_STACK_DEPTH);
++ break;
++ case GL_MAX_PIXEL_MAP_TABLE:
++ params[0] = (GLfloat)(MAX_PIXEL_MAP_TABLE);
++ break;
++ case GL_MAX_PROJECTION_STACK_DEPTH:
++ params[0] = (GLfloat)(MAX_PROJECTION_STACK_DEPTH);
++ break;
++ case GL_MAX_TEXTURE_SIZE:
++ params[0] = (GLfloat)(1 << (ctx->Const.MaxTextureLevels - 1));
++ break;
++ case GL_MAX_3D_TEXTURE_SIZE:
++ params[0] = (GLfloat)(1 << (ctx->Const.Max3DTextureLevels - 1));
++ break;
++ case GL_MAX_TEXTURE_STACK_DEPTH:
++ params[0] = (GLfloat)(MAX_TEXTURE_STACK_DEPTH);
++ break;
++ case GL_MAX_VIEWPORT_DIMS:
++ params[0] = (GLfloat)(ctx->Const.MaxViewportWidth);
++ params[1] = (GLfloat)(ctx->Const.MaxViewportHeight);
++ break;
++ case GL_MODELVIEW_MATRIX:
++ {
++ const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
++ params[0] = matrix[0];
++ params[1] = matrix[1];
++ params[2] = matrix[2];
++ params[3] = matrix[3];
++ params[4] = matrix[4];
++ params[5] = matrix[5];
++ params[6] = matrix[6];
++ params[7] = matrix[7];
++ params[8] = matrix[8];
++ params[9] = matrix[9];
++ params[10] = matrix[10];
++ params[11] = matrix[11];
++ params[12] = matrix[12];
++ params[13] = matrix[13];
++ params[14] = matrix[14];
++ params[15] = matrix[15];
++ }
++ break;
++ case GL_MODELVIEW_STACK_DEPTH:
++ params[0] = (GLfloat)(ctx->ModelviewMatrixStack.Depth + 1);
++ break;
++ case GL_NAME_STACK_DEPTH:
++ params[0] = (GLfloat)(ctx->Select.NameStackDepth);
++ break;
++ case GL_NORMALIZE:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.Normalize);
++ break;
++ case GL_PACK_ALIGNMENT:
++ params[0] = (GLfloat)(ctx->Pack.Alignment);
++ break;
++ case GL_PACK_LSB_FIRST:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.LsbFirst);
++ break;
++ case GL_PACK_ROW_LENGTH:
++ params[0] = (GLfloat)(ctx->Pack.RowLength);
++ break;
++ case GL_PACK_SKIP_PIXELS:
++ params[0] = (GLfloat)(ctx->Pack.SkipPixels);
++ break;
++ case GL_PACK_SKIP_ROWS:
++ params[0] = (GLfloat)(ctx->Pack.SkipRows);
++ break;
++ case GL_PACK_SWAP_BYTES:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.SwapBytes);
++ break;
++ case GL_PACK_SKIP_IMAGES_EXT:
++ params[0] = (GLfloat)(ctx->Pack.SkipImages);
++ break;
++ case GL_PACK_IMAGE_HEIGHT_EXT:
++ params[0] = (GLfloat)(ctx->Pack.ImageHeight);
++ break;
++ case GL_PACK_INVERT_MESA:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.Invert);
++ break;
++ case GL_PERSPECTIVE_CORRECTION_HINT:
++ params[0] = ENUM_TO_FLOAT(ctx->Hint.PerspectiveCorrection);
++ break;
++ case GL_PIXEL_MAP_A_TO_A_SIZE:
++ params[0] = (GLfloat)(ctx->Pixel.MapAtoAsize);
++ break;
++ case GL_PIXEL_MAP_B_TO_B_SIZE:
++ params[0] = (GLfloat)(ctx->Pixel.MapBtoBsize);
++ break;
++ case GL_PIXEL_MAP_G_TO_G_SIZE:
++ params[0] = (GLfloat)(ctx->Pixel.MapGtoGsize);
++ break;
++ case GL_PIXEL_MAP_I_TO_A_SIZE:
++ params[0] = (GLfloat)(ctx->Pixel.MapItoAsize);
++ break;
++ case GL_PIXEL_MAP_I_TO_B_SIZE:
++ params[0] = (GLfloat)(ctx->Pixel.MapItoBsize);
++ break;
++ case GL_PIXEL_MAP_I_TO_G_SIZE:
++ params[0] = (GLfloat)(ctx->Pixel.MapItoGsize);
++ break;
++ case GL_PIXEL_MAP_I_TO_I_SIZE:
++ params[0] = (GLfloat)(ctx->Pixel.MapItoIsize);
++ break;
++ case GL_PIXEL_MAP_I_TO_R_SIZE:
++ params[0] = (GLfloat)(ctx->Pixel.MapItoRsize);
++ break;
++ case GL_PIXEL_MAP_R_TO_R_SIZE:
++ params[0] = (GLfloat)(ctx->Pixel.MapRtoRsize);
++ break;
++ case GL_PIXEL_MAP_S_TO_S_SIZE:
++ params[0] = (GLfloat)(ctx->Pixel.MapStoSsize);
++ break;
++ case GL_POINT_SIZE:
++ params[0] = ctx->Point.Size;
++ break;
++ case GL_POINT_SIZE_GRANULARITY:
++ params[0] = ctx->Const.PointSizeGranularity;
++ break;
++ case GL_POINT_SIZE_RANGE:
++ params[0] = ctx->Const.MinPointSizeAA;
++ params[1] = ctx->Const.MaxPointSizeAA;
++ break;
++ case GL_ALIASED_POINT_SIZE_RANGE:
++ params[0] = ctx->Const.MinPointSize;
++ params[1] = ctx->Const.MaxPointSize;
++ break;
++ case GL_POINT_SMOOTH:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Point.SmoothFlag);
++ break;
++ case GL_POINT_SMOOTH_HINT:
++ params[0] = ENUM_TO_FLOAT(ctx->Hint.PointSmooth);
++ break;
++ case GL_POINT_SIZE_MIN_EXT:
++ params[0] = ctx->Point.MinSize;
++ break;
++ case GL_POINT_SIZE_MAX_EXT:
++ params[0] = ctx->Point.MaxSize;
++ break;
++ case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
++ params[0] = ctx->Point.Threshold;
++ break;
++ case GL_DISTANCE_ATTENUATION_EXT:
++ params[0] = ctx->Point.Params[0];
++ params[1] = ctx->Point.Params[1];
++ params[2] = ctx->Point.Params[2];
++ break;
++ case GL_POLYGON_MODE:
++ params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontMode);
++ params[1] = ENUM_TO_FLOAT(ctx->Polygon.BackMode);
++ break;
++ case GL_POLYGON_OFFSET_BIAS_EXT:
++ params[0] = ctx->Polygon.OffsetUnits;
++ break;
++ case GL_POLYGON_OFFSET_FACTOR:
++ params[0] = ctx->Polygon.OffsetFactor ;
++ break;
++ case GL_POLYGON_OFFSET_UNITS:
++ params[0] = ctx->Polygon.OffsetUnits ;
++ break;
++ case GL_POLYGON_SMOOTH:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.SmoothFlag);
++ break;
++ case GL_POLYGON_SMOOTH_HINT:
++ params[0] = ENUM_TO_FLOAT(ctx->Hint.PolygonSmooth);
++ break;
++ case GL_POLYGON_STIPPLE:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.StippleFlag);
++ break;
++ case GL_PROJECTION_MATRIX:
++ {
++ const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
++ params[0] = matrix[0];
++ params[1] = matrix[1];
++ params[2] = matrix[2];
++ params[3] = matrix[3];
++ params[4] = matrix[4];
++ params[5] = matrix[5];
++ params[6] = matrix[6];
++ params[7] = matrix[7];
++ params[8] = matrix[8];
++ params[9] = matrix[9];
++ params[10] = matrix[10];
++ params[11] = matrix[11];
++ params[12] = matrix[12];
++ params[13] = matrix[13];
++ params[14] = matrix[14];
++ params[15] = matrix[15];
++ }
++ break;
++ case GL_PROJECTION_STACK_DEPTH:
++ params[0] = (GLfloat)(ctx->ProjectionMatrixStack.Depth + 1);
++ break;
++ case GL_READ_BUFFER:
++ params[0] = ENUM_TO_FLOAT(ctx->ReadBuffer->ColorReadBuffer);
++ break;
++ case GL_RED_BIAS:
++ params[0] = ctx->Pixel.RedBias;
++ break;
++ case GL_RED_BITS:
++ params[0] = (GLfloat)( ctx->DrawBuffer->Visual.redBits );
++ break;
++ case GL_RED_SCALE:
++ params[0] = ctx->Pixel.RedScale;
++ break;
++ case GL_RENDER_MODE:
++ params[0] = ENUM_TO_FLOAT(ctx->RenderMode);
++ break;
++ case GL_RESCALE_NORMAL:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RescaleNormals);
++ break;
++ case GL_RGBA_MODE:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.rgbMode);
++ break;
++ case GL_SCISSOR_BOX:
++ params[0] = (GLfloat)(ctx->Scissor.X);
++ params[1] = (GLfloat)(ctx->Scissor.Y);
++ params[2] = (GLfloat)(ctx->Scissor.Width);
++ params[3] = (GLfloat)(ctx->Scissor.Height);
++ break;
++ case GL_SCISSOR_TEST:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Scissor.Enabled);
++ break;
++ case GL_SELECTION_BUFFER_SIZE:
++ params[0] = (GLfloat)(ctx->Select.BufferSize);
++ break;
++ case GL_SHADE_MODEL:
++ params[0] = ENUM_TO_FLOAT(ctx->Light.ShadeModel);
++ break;
++ case GL_SHARED_TEXTURE_PALETTE_EXT:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.SharedPalette);
++ break;
++ case GL_STENCIL_BITS:
++ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.stencilBits);
++ break;
++ case GL_STENCIL_CLEAR_VALUE:
++ params[0] = (GLfloat)(ctx->Stencil.Clear);
++ break;
++ case GL_STENCIL_FAIL:
++ params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
++ break;
++ case GL_STENCIL_FUNC:
++ params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
++ break;
++ case GL_STENCIL_PASS_DEPTH_FAIL:
++ params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
++ break;
++ case GL_STENCIL_PASS_DEPTH_PASS:
++ params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
++ break;
++ case GL_STENCIL_REF:
++ params[0] = (GLfloat)(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]);
++ break;
++ case GL_STENCIL_TEST:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.Enabled);
++ break;
++ case GL_STENCIL_VALUE_MASK:
++ params[0] = (GLfloat)(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]);
++ break;
++ case GL_STENCIL_WRITEMASK:
++ params[0] = (GLfloat)(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]);
++ break;
++ case GL_STEREO:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.stereoMode);
++ break;
++ case GL_SUBPIXEL_BITS:
++ params[0] = (GLfloat)(ctx->Const.SubPixelBits);
++ break;
++ case GL_TEXTURE_1D:
++ params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D));
++ break;
++ case GL_TEXTURE_2D:
++ params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D));
++ break;
++ case GL_TEXTURE_3D:
++ params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_3D));
++ break;
++ case GL_TEXTURE_BINDING_1D:
++ params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current1D->Name);
++ break;
++ case GL_TEXTURE_BINDING_2D:
++ params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current2D->Name);
++ break;
++ case GL_TEXTURE_BINDING_3D:
++ params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current3D->Name);
++ break;
++ case GL_TEXTURE_ENV_COLOR:
++ {
++ const GLfloat *color = ctx->Texture.Unit[ctx->Texture.CurrentUnit].EnvColor;
++ params[0] = color[0];
++ params[1] = color[1];
++ params[2] = color[2];
++ params[3] = color[3];
++ }
++ break;
++ case GL_TEXTURE_ENV_MODE:
++ params[0] = ENUM_TO_FLOAT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].EnvMode);
++ break;
++ case GL_TEXTURE_GEN_S:
++ params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0));
++ break;
++ case GL_TEXTURE_GEN_T:
++ params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0));
++ break;
++ case GL_TEXTURE_GEN_R:
++ params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0));
++ break;
++ case GL_TEXTURE_GEN_Q:
++ params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0));
++ break;
++ case GL_TEXTURE_MATRIX:
++ {
++ const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
++ params[0] = matrix[0];
++ params[1] = matrix[1];
++ params[2] = matrix[2];
++ params[3] = matrix[3];
++ params[4] = matrix[4];
++ params[5] = matrix[5];
++ params[6] = matrix[6];
++ params[7] = matrix[7];
++ params[8] = matrix[8];
++ params[9] = matrix[9];
++ params[10] = matrix[10];
++ params[11] = matrix[11];
++ params[12] = matrix[12];
++ params[13] = matrix[13];
++ params[14] = matrix[14];
++ params[15] = matrix[15];
++ }
++ break;
++ case GL_TEXTURE_STACK_DEPTH:
++ params[0] = (GLfloat)(ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1);
++ break;
++ case GL_UNPACK_ALIGNMENT:
++ params[0] = (GLfloat)(ctx->Unpack.Alignment);
++ break;
++ case GL_UNPACK_LSB_FIRST:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.LsbFirst);
++ break;
++ case GL_UNPACK_ROW_LENGTH:
++ params[0] = (GLfloat)(ctx->Unpack.RowLength);
++ break;
++ case GL_UNPACK_SKIP_PIXELS:
++ params[0] = (GLfloat)(ctx->Unpack.SkipPixels);
++ break;
++ case GL_UNPACK_SKIP_ROWS:
++ params[0] = (GLfloat)(ctx->Unpack.SkipRows);
++ break;
++ case GL_UNPACK_SWAP_BYTES:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.SwapBytes);
++ break;
++ case GL_UNPACK_SKIP_IMAGES_EXT:
++ params[0] = (GLfloat)(ctx->Unpack.SkipImages);
++ break;
++ case GL_UNPACK_IMAGE_HEIGHT_EXT:
++ params[0] = (GLfloat)(ctx->Unpack.ImageHeight);
++ break;
++ case GL_UNPACK_CLIENT_STORAGE_APPLE:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.ClientStorage);
++ break;
++ case GL_VIEWPORT:
++ params[0] = (GLfloat)(ctx->Viewport.X);
++ params[1] = (GLfloat)(ctx->Viewport.Y);
++ params[2] = (GLfloat)(ctx->Viewport.Width);
++ params[3] = (GLfloat)(ctx->Viewport.Height);
++ break;
++ case GL_ZOOM_X:
++ params[0] = ctx->Pixel.ZoomX;
++ break;
++ case GL_ZOOM_Y:
++ params[0] = ctx->Pixel.ZoomY;
++ break;
++ case GL_VERTEX_ARRAY:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Enabled);
++ break;
++ case GL_VERTEX_ARRAY_SIZE:
++ params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Size);
++ break;
++ case GL_VERTEX_ARRAY_TYPE:
++ params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Type);
++ break;
++ case GL_VERTEX_ARRAY_STRIDE:
++ params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Stride);
++ break;
++ case GL_VERTEX_ARRAY_COUNT_EXT:
++ params[0] = (GLfloat)(0);
++ break;
++ case GL_NORMAL_ARRAY:
++ params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Enabled);
++ break;
++ case GL_NORMAL_ARRAY_TYPE:
++ params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Type);
++ break;
++ case GL_NORMAL_ARRAY_STRIDE:
++ params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.Stride);
++ break;
++ case GL_NORMAL_ARRAY_COUNT_EXT:
++ params[0] = (GLfloat)(0);
++ break;
++ case GL_COLOR_ARRAY:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Color.Enabled);
++ break;
++ case GL_COLOR_ARRAY_SIZE:
++ params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Size);
++ break;
++ case GL_COLOR_ARRAY_TYPE:
++ params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Color.Type);
++ break;
++ case GL_COLOR_ARRAY_STRIDE:
++ params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Stride);
++ break;
++ case GL_COLOR_ARRAY_COUNT_EXT:
++ params[0] = (GLfloat)(0);
++ break;
++ case GL_INDEX_ARRAY:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Index.Enabled);
++ break;
++ case GL_INDEX_ARRAY_TYPE:
++ params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Index.Type);
++ break;
++ case GL_INDEX_ARRAY_STRIDE:
++ params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.Stride);
++ break;
++ case GL_INDEX_ARRAY_COUNT_EXT:
++ params[0] = (GLfloat)(0);
++ break;
++ case GL_TEXTURE_COORD_ARRAY:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled);
++ break;
++ case GL_TEXTURE_COORD_ARRAY_SIZE:
++ params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size);
++ break;
++ case GL_TEXTURE_COORD_ARRAY_TYPE:
++ params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
++ break;
++ case GL_TEXTURE_COORD_ARRAY_STRIDE:
++ params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride);
++ break;
++ case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
++ params[0] = (GLfloat)(0);
++ break;
++ case GL_EDGE_FLAG_ARRAY:
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->EdgeFlag.Enabled);
++ break;
++ case GL_EDGE_FLAG_ARRAY_STRIDE:
++ params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.Stride);
++ break;
++ case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
++ params[0] = (GLfloat)(0);
++ break;
++ case GL_MAX_TEXTURE_UNITS_ARB:
++ CHECK_EXT1(ARB_multitexture, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Const.MaxTextureUnits);
++ break;
++ case GL_ACTIVE_TEXTURE_ARB:
++ CHECK_EXT1(ARB_multitexture, "GetFloatv");
++ params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit);
++ break;
++ case GL_CLIENT_ACTIVE_TEXTURE_ARB:
++ CHECK_EXT1(ARB_multitexture, "GetFloatv");
++ params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture);
++ break;
++ case GL_TEXTURE_CUBE_MAP_ARB:
++ CHECK_EXT1(ARB_texture_cube_map, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB));
++ break;
++ case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
++ CHECK_EXT1(ARB_texture_cube_map, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentCubeMap->Name);
++ break;
++ case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
++ CHECK_EXT1(ARB_texture_cube_map, "GetFloatv");
++ params[0] = (GLfloat)((1 << (ctx->Const.MaxCubeTextureLevels - 1)));
++ break;
++ case GL_TEXTURE_COMPRESSION_HINT_ARB:
++ CHECK_EXT1(ARB_texture_compression, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Hint.TextureCompression);
++ break;
++ case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
++ CHECK_EXT1(ARB_texture_compression, "GetFloatv");
++ params[0] = (GLfloat)(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
++ break;
++ case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
++ CHECK_EXT1(ARB_texture_compression, "GetFloatv");
++ {
++ GLint formats[100];
++ GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
++ ASSERT(n <= 100);
++ for (i = 0; i < n; i++)
++ params[i] = ENUM_TO_INT(formats[i]);
++ }
++ break;
++ case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
++ CHECK_EXT1(EXT_compiled_vertex_array, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Array.LockFirst);
++ break;
++ case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
++ CHECK_EXT1(EXT_compiled_vertex_array, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Array.LockCount);
++ break;
++ case GL_TRANSPOSE_COLOR_MATRIX_ARB:
++ {
++ const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
++ params[0] = matrix[0];
++ params[1] = matrix[4];
++ params[2] = matrix[8];
++ params[3] = matrix[12];
++ params[4] = matrix[1];
++ params[5] = matrix[5];
++ params[6] = matrix[9];
++ params[7] = matrix[13];
++ params[8] = matrix[2];
++ params[9] = matrix[6];
++ params[10] = matrix[10];
++ params[11] = matrix[14];
++ params[12] = matrix[3];
++ params[13] = matrix[7];
++ params[14] = matrix[11];
++ params[15] = matrix[15];
++ }
++ break;
++ case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
++ {
++ const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
++ params[0] = matrix[0];
++ params[1] = matrix[4];
++ params[2] = matrix[8];
++ params[3] = matrix[12];
++ params[4] = matrix[1];
++ params[5] = matrix[5];
++ params[6] = matrix[9];
++ params[7] = matrix[13];
++ params[8] = matrix[2];
++ params[9] = matrix[6];
++ params[10] = matrix[10];
++ params[11] = matrix[14];
++ params[12] = matrix[3];
++ params[13] = matrix[7];
++ params[14] = matrix[11];
++ params[15] = matrix[15];
++ }
++ break;
++ case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
++ {
++ const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
++ params[0] = matrix[0];
++ params[1] = matrix[4];
++ params[2] = matrix[8];
++ params[3] = matrix[12];
++ params[4] = matrix[1];
++ params[5] = matrix[5];
++ params[6] = matrix[9];
++ params[7] = matrix[13];
++ params[8] = matrix[2];
++ params[9] = matrix[6];
++ params[10] = matrix[10];
++ params[11] = matrix[14];
++ params[12] = matrix[3];
++ params[13] = matrix[7];
++ params[14] = matrix[11];
++ params[15] = matrix[15];
++ }
++ break;
++ case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
++ {
++ const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
++ params[0] = matrix[0];
++ params[1] = matrix[4];
++ params[2] = matrix[8];
++ params[3] = matrix[12];
++ params[4] = matrix[1];
++ params[5] = matrix[5];
++ params[6] = matrix[9];
++ params[7] = matrix[13];
++ params[8] = matrix[2];
++ params[9] = matrix[6];
++ params[10] = matrix[10];
++ params[11] = matrix[14];
++ params[12] = matrix[3];
++ params[13] = matrix[7];
++ params[14] = matrix[11];
++ params[15] = matrix[15];
++ }
++ break;
++ case GL_COLOR_MATRIX_SGI:
++ {
++ const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
++ params[0] = matrix[0];
++ params[1] = matrix[1];
++ params[2] = matrix[2];
++ params[3] = matrix[3];
++ params[4] = matrix[4];
++ params[5] = matrix[5];
++ params[6] = matrix[6];
++ params[7] = matrix[7];
++ params[8] = matrix[8];
++ params[9] = matrix[9];
++ params[10] = matrix[10];
++ params[11] = matrix[11];
++ params[12] = matrix[12];
++ params[13] = matrix[13];
++ params[14] = matrix[14];
++ params[15] = matrix[15];
++ }
++ break;
++ case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
++ params[0] = (GLfloat)(ctx->ColorMatrixStack.Depth + 1);
++ break;
++ case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
++ params[0] = (GLfloat)(MAX_COLOR_STACK_DEPTH);
++ break;
++ case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
++ params[0] = ctx->Pixel.PostColorMatrixScale[0];
++ break;
++ case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
++ params[0] = ctx->Pixel.PostColorMatrixScale[1];
++ break;
++ case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
++ params[0] = ctx->Pixel.PostColorMatrixScale[2];
++ break;
++ case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
++ params[0] = ctx->Pixel.PostColorMatrixScale[3];
++ break;
++ case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
++ params[0] = ctx->Pixel.PostColorMatrixBias[0];
++ break;
++ case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
++ params[0] = ctx->Pixel.PostColorMatrixBias[1];
++ break;
++ case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
++ params[0] = ctx->Pixel.PostColorMatrixBias[2];
++ break;
++ case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
++ params[0] = ctx->Pixel.PostColorMatrixBias[3];
++ break;
++ case GL_CONVOLUTION_1D_EXT:
++ CHECK_EXT1(EXT_convolution, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution1DEnabled);
++ break;
++ case GL_CONVOLUTION_2D_EXT:
++ CHECK_EXT1(EXT_convolution, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution2DEnabled);
++ break;
++ case GL_SEPARABLE_2D_EXT:
++ CHECK_EXT1(EXT_convolution, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Separable2DEnabled);
++ break;
++ case GL_POST_CONVOLUTION_RED_SCALE_EXT:
++ CHECK_EXT1(EXT_convolution, "GetFloatv");
++ params[0] = ctx->Pixel.PostConvolutionScale[0];
++ break;
++ case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
++ CHECK_EXT1(EXT_convolution, "GetFloatv");
++ params[0] = ctx->Pixel.PostConvolutionScale[1];
++ break;
++ case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
++ CHECK_EXT1(EXT_convolution, "GetFloatv");
++ params[0] = ctx->Pixel.PostConvolutionScale[2];
++ break;
++ case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
++ CHECK_EXT1(EXT_convolution, "GetFloatv");
++ params[0] = ctx->Pixel.PostConvolutionScale[3];
++ break;
++ case GL_POST_CONVOLUTION_RED_BIAS_EXT:
++ CHECK_EXT1(EXT_convolution, "GetFloatv");
++ params[0] = ctx->Pixel.PostConvolutionBias[0];
++ break;
++ case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
++ CHECK_EXT1(EXT_convolution, "GetFloatv");
++ params[0] = ctx->Pixel.PostConvolutionBias[1];
++ break;
++ case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
++ CHECK_EXT1(EXT_convolution, "GetFloatv");
++ params[0] = ctx->Pixel.PostConvolutionBias[2];
++ break;
++ case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
++ CHECK_EXT1(EXT_convolution, "GetFloatv");
++ params[0] = ctx->Pixel.PostConvolutionBias[3];
++ break;
++ case GL_HISTOGRAM:
++ CHECK_EXT1(EXT_histogram, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.HistogramEnabled);
++ break;
++ case GL_MINMAX:
++ CHECK_EXT1(EXT_histogram, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MinMaxEnabled);
++ break;
++ case GL_COLOR_TABLE_SGI:
++ CHECK_EXT1(SGI_color_table, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled);
++ break;
++ case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
++ CHECK_EXT1(SGI_color_table, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.PostConvolutionColorTableEnabled);
++ break;
++ case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
++ CHECK_EXT1(SGI_color_table, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.PostColorMatrixColorTableEnabled);
++ break;
++ case GL_TEXTURE_COLOR_TABLE_SGI:
++ CHECK_EXT1(SGI_texture_color_table, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
++ break;
++ case GL_COLOR_SUM_EXT:
++ CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.ColorSumEnabled);
++ break;
++ case GL_CURRENT_SECONDARY_COLOR_EXT:
++ CHECK_EXT1(EXT_secondary_color, "GetFloatv");
++ {
++ FLUSH_CURRENT(ctx, 0);
++ params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0];
++ params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1];
++ params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2];
++ params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3];
++ }
++ break;
++ case GL_SECONDARY_COLOR_ARRAY_EXT:
++ CHECK_EXT1(EXT_secondary_color, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Enabled);
++ break;
++ case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
++ CHECK_EXT1(EXT_secondary_color, "GetFloatv");
++ params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Type);
++ break;
++ case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
++ CHECK_EXT1(EXT_secondary_color, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Stride);
++ break;
++ case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
++ CHECK_EXT1(EXT_secondary_color, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Size);
++ break;
++ case GL_CURRENT_FOG_COORDINATE_EXT:
++ CHECK_EXT1(EXT_fog_coord, "GetFloatv");
++ {
++ FLUSH_CURRENT(ctx, 0);
++ params[0] = ctx->Current.Attrib[VERT_ATTRIB_FOG][0];
++ }
++ break;
++ case GL_FOG_COORDINATE_ARRAY_EXT:
++ CHECK_EXT1(EXT_fog_coord, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Enabled);
++ break;
++ case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
++ CHECK_EXT1(EXT_fog_coord, "GetFloatv");
++ params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Type);
++ break;
++ case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
++ CHECK_EXT1(EXT_fog_coord, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.Stride);
++ break;
++ case GL_FOG_COORDINATE_SOURCE_EXT:
++ CHECK_EXT1(EXT_fog_coord, "GetFloatv");
++ params[0] = ENUM_TO_FLOAT(ctx->Fog.FogCoordinateSource);
++ break;
++ case GL_MAX_TEXTURE_LOD_BIAS_EXT:
++ CHECK_EXT1(EXT_texture_lod_bias, "GetFloatv");
++ params[0] = ctx->Const.MaxTextureLodBias;
++ break;
++ case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
++ CHECK_EXT1(EXT_texture_filter_anisotropic, "GetFloatv");
++ params[0] = ctx->Const.MaxTextureMaxAnisotropy;
++ break;
++ case GL_MULTISAMPLE_ARB:
++ CHECK_EXT1(ARB_multisample, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.Enabled);
++ break;
++ case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
++ CHECK_EXT1(ARB_multisample, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToCoverage);
++ break;
++ case GL_SAMPLE_ALPHA_TO_ONE_ARB:
++ CHECK_EXT1(ARB_multisample, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToOne);
++ break;
++ case GL_SAMPLE_COVERAGE_ARB:
++ CHECK_EXT1(ARB_multisample, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverage);
++ break;
++ case GL_SAMPLE_COVERAGE_VALUE_ARB:
++ CHECK_EXT1(ARB_multisample, "GetFloatv");
++ params[0] = ctx->Multisample.SampleCoverageValue;
++ break;
++ case GL_SAMPLE_COVERAGE_INVERT_ARB:
++ CHECK_EXT1(ARB_multisample, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverageInvert);
++ break;
++ case GL_SAMPLE_BUFFERS_ARB:
++ CHECK_EXT1(ARB_multisample, "GetFloatv");
++ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.sampleBuffers);
++ break;
++ case GL_SAMPLES_ARB:
++ CHECK_EXT1(ARB_multisample, "GetFloatv");
++ params[0] = (GLfloat)(ctx->DrawBuffer->Visual.samples);
++ break;
++ case GL_RASTER_POSITION_UNCLIPPED_IBM:
++ CHECK_EXT1(IBM_rasterpos_clip, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RasterPositionUnclipped);
++ break;
++ case GL_POINT_SPRITE_NV:
++ CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Point.PointSprite);
++ break;
++ case GL_POINT_SPRITE_R_MODE_NV:
++ CHECK_EXT1(NV_point_sprite, "GetFloatv");
++ params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteRMode);
++ break;
++ case GL_POINT_SPRITE_COORD_ORIGIN:
++ CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetFloatv");
++ params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteOrigin);
++ break;
++ case GL_GENERATE_MIPMAP_HINT_SGIS:
++ CHECK_EXT1(SGIS_generate_mipmap, "GetFloatv");
++ params[0] = ENUM_TO_FLOAT(ctx->Hint.GenerateMipmap);
++ break;
++ case GL_VERTEX_PROGRAM_BINDING_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = (GLfloat)((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0));
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY0_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY1_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY2_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY3_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY5_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY6_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY7_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY8_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY9_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY10_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY11_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY12_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY13_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY14_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY15_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB0_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[0]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB1_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[1]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB2_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[2]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB3_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[3]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB4_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[4]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB5_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[5]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB6_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[6]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB7_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[7]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB8_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[8]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB9_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[9]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB10_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[10]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB11_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[11]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB12_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[12]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB13_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[13]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB14_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[14]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB15_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[15]);
++ break;
++ case GL_FRAGMENT_PROGRAM_NV:
++ CHECK_EXT1(NV_fragment_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled);
++ break;
++ case GL_FRAGMENT_PROGRAM_BINDING_NV:
++ CHECK_EXT1(NV_fragment_program, "GetFloatv");
++ params[0] = (GLfloat)(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0);
++ break;
++ case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
++ CHECK_EXT1(NV_fragment_program, "GetFloatv");
++ params[0] = (GLfloat)(MAX_NV_FRAGMENT_PROGRAM_PARAMS);
++ break;
++ case GL_TEXTURE_RECTANGLE_NV:
++ CHECK_EXT1(NV_texture_rectangle, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
++ break;
++ case GL_TEXTURE_BINDING_RECTANGLE_NV:
++ CHECK_EXT1(NV_texture_rectangle, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentRect->Name);
++ break;
++ case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
++ CHECK_EXT1(NV_texture_rectangle, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Const.MaxTextureRectSize);
++ break;
++ case GL_STENCIL_TEST_TWO_SIDE_EXT:
++ CHECK_EXT1(EXT_stencil_two_side, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.TestTwoSide);
++ break;
++ case GL_ACTIVE_STENCIL_FACE_EXT:
++ CHECK_EXT1(EXT_stencil_two_side, "GetFloatv");
++ params[0] = ENUM_TO_FLOAT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
++ break;
++ case GL_MAX_SHININESS_NV:
++ CHECK_EXT1(NV_light_max_exponent, "GetFloatv");
++ params[0] = ctx->Const.MaxShininess;
++ break;
++ case GL_MAX_SPOT_EXPONENT_NV:
++ CHECK_EXT1(NV_light_max_exponent, "GetFloatv");
++ params[0] = ctx->Const.MaxSpotExponent;
++ break;
++ case GL_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Array.ArrayBufferObj->Name);
++ break;
++ case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.BufferObj->Name);
++ break;
++ case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.BufferObj->Name);
++ break;
++ case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.BufferObj->Name);
++ break;
++ case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.BufferObj->Name);
++ break;
++ case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name);
++ break;
++ case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name);
++ break;
++ case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name);
++ break;
++ case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.BufferObj->Name);
++ break;
++ case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Array.ElementArrayBufferObj->Name);
++ break;
++ case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
++ CHECK_EXT1(EXT_pixel_buffer_object, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Pack.BufferObj->Name);
++ break;
++ case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
++ CHECK_EXT1(EXT_pixel_buffer_object, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Unpack.BufferObj->Name);
++ break;
++ case GL_VERTEX_PROGRAM_ARB:
++ CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.Enabled);
++ break;
++ case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
++ CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.PointSizeEnabled);
++ break;
++ case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
++ CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.TwoSideEnabled);
++ break;
++ case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
++ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Const.MaxProgramMatrixStackDepth);
++ break;
++ case GL_MAX_PROGRAM_MATRICES_ARB:
++ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Const.MaxProgramMatrices);
++ break;
++ case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
++ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->CurrentStack->Depth + 1);
++ break;
++ case GL_CURRENT_MATRIX_ARB:
++ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetFloatv");
++ {
++ const GLfloat *matrix = ctx->CurrentStack->Top->m;
++ params[0] = matrix[0];
++ params[1] = matrix[1];
++ params[2] = matrix[2];
++ params[3] = matrix[3];
++ params[4] = matrix[4];
++ params[5] = matrix[5];
++ params[6] = matrix[6];
++ params[7] = matrix[7];
++ params[8] = matrix[8];
++ params[9] = matrix[9];
++ params[10] = matrix[10];
++ params[11] = matrix[11];
++ params[12] = matrix[12];
++ params[13] = matrix[13];
++ params[14] = matrix[14];
++ params[15] = matrix[15];
++ }
++ break;
++ case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
++ CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetFloatv");
++ {
++ const GLfloat *matrix = ctx->CurrentStack->Top->m;
++ params[0] = matrix[0];
++ params[1] = matrix[4];
++ params[2] = matrix[8];
++ params[3] = matrix[12];
++ params[4] = matrix[1];
++ params[5] = matrix[5];
++ params[6] = matrix[9];
++ params[7] = matrix[13];
++ params[8] = matrix[2];
++ params[9] = matrix[6];
++ params[10] = matrix[10];
++ params[11] = matrix[14];
++ params[12] = matrix[3];
++ params[13] = matrix[7];
++ params[14] = matrix[11];
++ params[15] = matrix[15];
++ }
++ break;
++ case GL_MAX_VERTEX_ATTRIBS_ARB:
++ CHECK_EXT1(ARB_vertex_program, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Const.VertexProgram.MaxAttribs);
++ break;
++ case GL_PROGRAM_ERROR_POSITION_ARB:
++ CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Program.ErrorPos);
++ break;
++ case GL_FRAGMENT_PROGRAM_ARB:
++ CHECK_EXT1(ARB_fragment_program, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled);
++ break;
++ case GL_MAX_TEXTURE_COORDS_ARB:
++ CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Const.MaxTextureCoordUnits);
++ break;
++ case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
++ CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Const.MaxTextureImageUnits);
++ break;
++ case GL_DEPTH_BOUNDS_TEST_EXT:
++ CHECK_EXT1(EXT_depth_bounds_test, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.BoundsTest);
++ break;
++ case GL_DEPTH_BOUNDS_EXT:
++ CHECK_EXT1(EXT_depth_bounds_test, "GetFloatv");
++ params[0] = ctx->Depth.BoundsMin;
++ params[1] = ctx->Depth.BoundsMax;
++ break;
++ case GL_FRAGMENT_PROGRAM_CALLBACK_MESA:
++ CHECK_EXT1(MESA_program_debug, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.CallbackEnabled);
++ break;
++ case GL_VERTEX_PROGRAM_CALLBACK_MESA:
++ CHECK_EXT1(MESA_program_debug, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.CallbackEnabled);
++ break;
++ case GL_FRAGMENT_PROGRAM_POSITION_MESA:
++ CHECK_EXT1(MESA_program_debug, "GetFloatv");
++ params[0] = (GLfloat)(ctx->FragmentProgram.CurrentPosition);
++ break;
++ case GL_VERTEX_PROGRAM_POSITION_MESA:
++ CHECK_EXT1(MESA_program_debug, "GetFloatv");
++ params[0] = (GLfloat)(ctx->VertexProgram.CurrentPosition);
++ break;
++ case GL_MAX_DRAW_BUFFERS_ARB:
++ CHECK_EXT1(ARB_draw_buffers, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Const.MaxDrawBuffers);
++ break;
++ case GL_DRAW_BUFFER0_ARB:
++ CHECK_EXT1(ARB_draw_buffers, "GetFloatv");
++ params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]);
++ break;
++ case GL_DRAW_BUFFER1_ARB:
++ CHECK_EXT1(ARB_draw_buffers, "GetFloatv");
++ {
++ GLenum buffer;
++ if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
++ _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
++ return;
++ }
++ buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
++ params[0] = ENUM_TO_FLOAT(buffer);
++ }
++ break;
++ case GL_DRAW_BUFFER2_ARB:
++ CHECK_EXT1(ARB_draw_buffers, "GetFloatv");
++ {
++ GLenum buffer;
++ if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
++ _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
++ return;
++ }
++ buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
++ params[0] = ENUM_TO_FLOAT(buffer);
++ }
++ break;
++ case GL_DRAW_BUFFER3_ARB:
++ CHECK_EXT1(ARB_draw_buffers, "GetFloatv");
++ {
++ GLenum buffer;
++ if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
++ _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
++ return;
++ }
++ buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
++ params[0] = ENUM_TO_FLOAT(buffer);
++ }
++ break;
++ case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
++ CHECK_EXT1(OES_read_format, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Const.ColorReadType);
++ break;
++ case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
++ CHECK_EXT1(OES_read_format, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Const.ColorReadFormat);
++ break;
++ case GL_NUM_FRAGMENT_REGISTERS_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
++ params[0] = (GLfloat)(6);
++ break;
++ case GL_NUM_FRAGMENT_CONSTANTS_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
++ params[0] = (GLfloat)(8);
++ break;
++ case GL_NUM_PASSES_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
++ params[0] = (GLfloat)(2);
++ break;
++ case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
++ params[0] = (GLfloat)(8);
++ break;
++ case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
++ params[0] = (GLfloat)(16);
++ break;
++ case GL_COLOR_ALPHA_PAIRING_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
++ params[0] = BOOLEAN_TO_FLOAT(GL_TRUE);
++ break;
++ case GL_NUM_LOOPBACK_COMPONENTS_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
++ params[0] = (GLfloat)(3);
++ break;
++ case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
++ params[0] = (GLfloat)(3);
++ break;
++ case GL_STENCIL_BACK_FUNC:
++ params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[1]);
++ break;
++ case GL_STENCIL_BACK_VALUE_MASK:
++ params[0] = (GLfloat)(ctx->Stencil.ValueMask[1]);
++ break;
++ case GL_STENCIL_BACK_REF:
++ params[0] = (GLfloat)(ctx->Stencil.Ref[1]);
++ break;
++ case GL_STENCIL_BACK_FAIL:
++ params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[1]);
++ break;
++ case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
++ params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[1]);
++ break;
++ case GL_STENCIL_BACK_PASS_DEPTH_PASS:
++ params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[1]);
++ break;
++ case GL_FRAMEBUFFER_BINDING_EXT:
++ CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
++ params[0] = (GLfloat)(ctx->DrawBuffer->Name);
++ break;
++ case GL_RENDERBUFFER_BINDING_EXT:
++ CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
++ params[0] = (GLfloat)(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0);
++ break;
++ case GL_MAX_COLOR_ATTACHMENTS_EXT:
++ CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Const.MaxColorAttachments);
++ break;
++ case GL_MAX_RENDERBUFFER_SIZE_EXT:
++ CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
++ params[0] = (GLfloat)(ctx->Const.MaxRenderbufferSize);
++ break;
++ case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
++ CHECK_EXT1(ARB_fragment_shader, "GetFloatv");
++ params[0] = (GLfloat)(MAX_FRAGMENT_UNIFORM_COMPONENTS);
++ break;
++ case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
++ CHECK_EXT1(ARB_fragment_shader, "GetFloatv");
++ params[0] = ENUM_TO_FLOAT(ctx->Hint.FragmentShaderDerivative);
++ break;
++ case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
++ CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
++ params[0] = (GLfloat)(MAX_VERTEX_UNIFORM_COMPONENTS);
++ break;
++ case GL_MAX_VARYING_FLOATS_ARB:
++ CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
++ params[0] = (GLfloat)(MAX_VARYING_FLOATS);
++ break;
++ case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
++ CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
++ params[0] = (GLfloat)(MAX_VERTEX_TEXTURE_IMAGE_UNITS);
++ break;
++ case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
++ CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
++ params[0] = (GLfloat)(MAX_COMBINED_TEXTURE_IMAGE_UNITS);
++ break;
++ default:
++ _mesa_error(ctx, GL_INVALID_ENUM, "glGetFloatv(pname=0x%x)", pname);
++ }
++}
++
++void GLAPIENTRY
++_mesa_GetIntegerv( GLenum pname, GLint *params )
++{
++ GET_CURRENT_CONTEXT(ctx);
++ ASSERT_OUTSIDE_BEGIN_END(ctx);
++
++ if (!params)
++ return;
++
++ if (ctx->NewState)
++ _mesa_update_state(ctx);
++
++ if (ctx->Driver.GetIntegerv &&
++ ctx->Driver.GetIntegerv(ctx, pname, params))
++ return;
++
++ switch (pname) {
++ case GL_ACCUM_RED_BITS:
++ params[0] = ctx->DrawBuffer->Visual.accumRedBits;
++ break;
++ case GL_ACCUM_GREEN_BITS:
++ params[0] = ctx->DrawBuffer->Visual.accumGreenBits;
++ break;
++ case GL_ACCUM_BLUE_BITS:
++ params[0] = ctx->DrawBuffer->Visual.accumBlueBits;
++ break;
++ case GL_ACCUM_ALPHA_BITS:
++ params[0] = ctx->DrawBuffer->Visual.accumAlphaBits;
++ break;
++ case GL_ACCUM_CLEAR_VALUE:
++ params[0] = FLOAT_TO_INT(ctx->Accum.ClearColor[0]);
++ params[1] = FLOAT_TO_INT(ctx->Accum.ClearColor[1]);
++ params[2] = FLOAT_TO_INT(ctx->Accum.ClearColor[2]);
++ params[3] = FLOAT_TO_INT(ctx->Accum.ClearColor[3]);
++ break;
++ case GL_ALPHA_BIAS:
++ params[0] = IROUND(ctx->Pixel.AlphaBias);
++ break;
++ case GL_ALPHA_BITS:
++ params[0] = ctx->DrawBuffer->Visual.alphaBits;
++ break;
++ case GL_ALPHA_SCALE:
++ params[0] = IROUND(ctx->Pixel.AlphaScale);
++ break;
++ case GL_ALPHA_TEST:
++ params[0] = BOOLEAN_TO_INT(ctx->Color.AlphaEnabled);
++ break;
++ case GL_ALPHA_TEST_FUNC:
++ params[0] = ENUM_TO_INT(ctx->Color.AlphaFunc);
++ break;
++ case GL_ALPHA_TEST_REF:
++ params[0] = FLOAT_TO_INT(ctx->Color.AlphaRef);
++ break;
++ case GL_ATTRIB_STACK_DEPTH:
++ params[0] = ctx->AttribStackDepth;
++ break;
++ case GL_AUTO_NORMAL:
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.AutoNormal);
++ break;
++ case GL_AUX_BUFFERS:
++ params[0] = ctx->DrawBuffer->Visual.numAuxBuffers;
++ break;
++ case GL_BLEND:
++ params[0] = BOOLEAN_TO_INT(ctx->Color.BlendEnabled);
++ break;
++ case GL_BLEND_DST:
++ params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB);
++ break;
++ case GL_BLEND_SRC:
++ params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB);
++ break;
++ case GL_BLEND_SRC_RGB_EXT:
++ params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB);
++ break;
++ case GL_BLEND_DST_RGB_EXT:
++ params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB);
++ break;
++ case GL_BLEND_SRC_ALPHA_EXT:
++ params[0] = ENUM_TO_INT(ctx->Color.BlendSrcA);
++ break;
++ case GL_BLEND_DST_ALPHA_EXT:
++ params[0] = ENUM_TO_INT(ctx->Color.BlendDstA);
++ break;
++ case GL_BLEND_EQUATION:
++ params[0] = ENUM_TO_INT(ctx->Color.BlendEquationRGB );
++ break;
++ case GL_BLEND_EQUATION_ALPHA_EXT:
++ params[0] = ENUM_TO_INT(ctx->Color.BlendEquationA );
++ break;
++ case GL_BLEND_COLOR_EXT:
++ params[0] = FLOAT_TO_INT(ctx->Color.BlendColor[0]);
++ params[1] = FLOAT_TO_INT(ctx->Color.BlendColor[1]);
++ params[2] = FLOAT_TO_INT(ctx->Color.BlendColor[2]);
++ params[3] = FLOAT_TO_INT(ctx->Color.BlendColor[3]);
++ break;
++ case GL_BLUE_BIAS:
++ params[0] = IROUND(ctx->Pixel.BlueBias);
++ break;
++ case GL_BLUE_BITS:
++ params[0] = ctx->DrawBuffer->Visual.blueBits;
++ break;
++ case GL_BLUE_SCALE:
++ params[0] = IROUND(ctx->Pixel.BlueScale);
++ break;
++ case GL_CLIENT_ATTRIB_STACK_DEPTH:
++ params[0] = ctx->ClientAttribStackDepth;
++ break;
++ case GL_CLIP_PLANE0:
++ params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
++ break;
++ case GL_CLIP_PLANE1:
++ params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
++ break;
++ case GL_CLIP_PLANE2:
++ params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
++ break;
++ case GL_CLIP_PLANE3:
++ params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
++ break;
++ case GL_CLIP_PLANE4:
++ params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
++ break;
++ case GL_CLIP_PLANE5:
++ params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
++ break;
++ case GL_COLOR_CLEAR_VALUE:
++ params[0] = FLOAT_TO_INT(ctx->Color.ClearColor[0]);
++ params[1] = FLOAT_TO_INT(ctx->Color.ClearColor[1]);
++ params[2] = FLOAT_TO_INT(ctx->Color.ClearColor[2]);
++ params[3] = FLOAT_TO_INT(ctx->Color.ClearColor[3]);
++ break;
++ case GL_COLOR_MATERIAL:
++ params[0] = BOOLEAN_TO_INT(ctx->Light.ColorMaterialEnabled);
++ break;
++ case GL_COLOR_MATERIAL_FACE:
++ params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialFace);
++ break;
++ case GL_COLOR_MATERIAL_PARAMETER:
++ params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialMode);
++ break;
++ case GL_COLOR_WRITEMASK:
++ params[0] = ctx->Color.ColorMask[RCOMP] ? 1 : 0;
++ params[1] = ctx->Color.ColorMask[GCOMP] ? 1 : 0;
++ params[2] = ctx->Color.ColorMask[BCOMP] ? 1 : 0;
++ params[3] = ctx->Color.ColorMask[ACOMP] ? 1 : 0;
++ break;
++ case GL_CULL_FACE:
++ params[0] = BOOLEAN_TO_INT(ctx->Polygon.CullFlag);
++ break;
++ case GL_CULL_FACE_MODE:
++ params[0] = ENUM_TO_INT(ctx->Polygon.CullFaceMode);
++ break;
++ case GL_CURRENT_COLOR:
++ {
++ FLUSH_CURRENT(ctx, 0);
++ params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
++ params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
++ params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
++ params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
++ }
++ break;
++ case GL_CURRENT_INDEX:
++ {
++ FLUSH_CURRENT(ctx, 0);
++ params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]);
++ }
++ break;
++ case GL_CURRENT_NORMAL:
++ {
++ FLUSH_CURRENT(ctx, 0);
++ params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
++ params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
++ params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
++ }
++ break;
++ case GL_CURRENT_RASTER_COLOR:
++ params[0] = FLOAT_TO_INT(ctx->Current.RasterColor[0]);
++ params[1] = FLOAT_TO_INT(ctx->Current.RasterColor[1]);
++ params[2] = FLOAT_TO_INT(ctx->Current.RasterColor[2]);
++ params[3] = FLOAT_TO_INT(ctx->Current.RasterColor[3]);
++ break;
++ case GL_CURRENT_RASTER_DISTANCE:
++ params[0] = IROUND(ctx->Current.RasterDistance);
++ break;
++ case GL_CURRENT_RASTER_INDEX:
++ params[0] = IROUND(ctx->Current.RasterIndex);
++ break;
++ case GL_CURRENT_RASTER_POSITION:
++ params[0] = IROUND(ctx->Current.RasterPos[0]);
++ params[1] = IROUND(ctx->Current.RasterPos[1]);
++ params[2] = IROUND(ctx->Current.RasterPos[2]);
++ params[3] = IROUND(ctx->Current.RasterPos[3]);
++ break;
++ case GL_CURRENT_RASTER_SECONDARY_COLOR:
++ params[0] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[0]);
++ params[1] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[1]);
++ params[2] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[2]);
++ params[3] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[3]);
++ break;
++ case GL_CURRENT_RASTER_TEXTURE_COORDS:
++ {
++ const GLuint texUnit = ctx->Texture.CurrentUnit;
++ params[0] = IROUND(ctx->Current.RasterTexCoords[texUnit][0]);
++ params[1] = IROUND(ctx->Current.RasterTexCoords[texUnit][1]);
++ params[2] = IROUND(ctx->Current.RasterTexCoords[texUnit][2]);
++ params[3] = IROUND(ctx->Current.RasterTexCoords[texUnit][3]);
++ }
++ break;
++ case GL_CURRENT_RASTER_POSITION_VALID:
++ params[0] = BOOLEAN_TO_INT(ctx->Current.RasterPosValid);
++ break;
++ case GL_CURRENT_TEXTURE_COORDS:
++ {
++ const GLuint texUnit = ctx->Texture.CurrentUnit;
++ params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]);
++ params[1] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]);
++ params[2] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]);
++ params[3] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]);
++ }
++ break;
++ case GL_DEPTH_BIAS:
++ params[0] = IROUND(ctx->Pixel.DepthBias);
++ break;
++ case GL_DEPTH_BITS:
++ params[0] = ctx->DrawBuffer->Visual.depthBits;
++ break;
++ case GL_DEPTH_CLEAR_VALUE:
++ params[0] = IROUND(ctx->Depth.Clear);
++ break;
++ case GL_DEPTH_FUNC:
++ params[0] = ENUM_TO_INT(ctx->Depth.Func);
++ break;
++ case GL_DEPTH_RANGE:
++ params[0] = FLOAT_TO_INT(ctx->Viewport.Near);
++ params[1] = FLOAT_TO_INT(ctx->Viewport.Far);
++ break;
++ case GL_DEPTH_SCALE:
++ params[0] = IROUND(ctx->Pixel.DepthScale);
++ break;
++ case GL_DEPTH_TEST:
++ params[0] = BOOLEAN_TO_INT(ctx->Depth.Test);
++ break;
++ case GL_DEPTH_WRITEMASK:
++ params[0] = BOOLEAN_TO_INT(ctx->Depth.Mask);
++ break;
++ case GL_DITHER:
++ params[0] = BOOLEAN_TO_INT(ctx->Color.DitherFlag);
++ break;
++ case GL_DOUBLEBUFFER:
++ params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.doubleBufferMode);
++ break;
++ case GL_DRAW_BUFFER:
++ params[0] = ENUM_TO_INT(ctx->DrawBuffer->ColorDrawBuffer[0]);
++ break;
++ case GL_EDGE_FLAG:
++ {
++ FLUSH_CURRENT(ctx, 0);
++ params[0] = BOOLEAN_TO_INT(ctx->Current.EdgeFlag);
++ }
++ break;
++ case GL_FEEDBACK_BUFFER_SIZE:
++ params[0] = ctx->Feedback.BufferSize;
++ break;
++ case GL_FEEDBACK_BUFFER_TYPE:
++ params[0] = ENUM_TO_INT(ctx->Feedback.Type);
++ break;
++ case GL_FOG:
++ params[0] = BOOLEAN_TO_INT(ctx->Fog.Enabled);
++ break;
++ case GL_FOG_COLOR:
++ params[0] = FLOAT_TO_INT(ctx->Fog.Color[0]);
++ params[1] = FLOAT_TO_INT(ctx->Fog.Color[1]);
++ params[2] = FLOAT_TO_INT(ctx->Fog.Color[2]);
++ params[3] = FLOAT_TO_INT(ctx->Fog.Color[3]);
++ break;
++ case GL_FOG_DENSITY:
++ params[0] = IROUND(ctx->Fog.Density);
++ break;
++ case GL_FOG_END:
++ params[0] = IROUND(ctx->Fog.End);
++ break;
++ case GL_FOG_HINT:
++ params[0] = ENUM_TO_INT(ctx->Hint.Fog);
++ break;
++ case GL_FOG_INDEX:
++ params[0] = IROUND(ctx->Fog.Index);
++ break;
++ case GL_FOG_MODE:
++ params[0] = ENUM_TO_INT(ctx->Fog.Mode);
++ break;
++ case GL_FOG_START:
++ params[0] = IROUND(ctx->Fog.Start);
++ break;
++ case GL_FRONT_FACE:
++ params[0] = ENUM_TO_INT(ctx->Polygon.FrontFace);
++ break;
++ case GL_GREEN_BIAS:
++ params[0] = IROUND(ctx->Pixel.GreenBias);
++ break;
++ case GL_GREEN_BITS:
++ params[0] = ctx->DrawBuffer->Visual.greenBits;
++ break;
++ case GL_GREEN_SCALE:
++ params[0] = IROUND(ctx->Pixel.GreenScale);
++ break;
++ case GL_INDEX_BITS:
++ params[0] = ctx->DrawBuffer->Visual.indexBits;
++ break;
++ case GL_INDEX_CLEAR_VALUE:
++ params[0] = ctx->Color.ClearIndex;
++ break;
++ case GL_INDEX_MODE:
++ params[0] = BOOLEAN_TO_INT(!ctx->DrawBuffer->Visual.rgbMode);
++ break;
++ case GL_INDEX_OFFSET:
++ params[0] = ctx->Pixel.IndexOffset;
++ break;
++ case GL_INDEX_SHIFT:
++ params[0] = ctx->Pixel.IndexShift;
++ break;
++ case GL_INDEX_WRITEMASK:
++ params[0] = ctx->Color.IndexMask;
++ break;
++ case GL_LIGHT0:
++ params[0] = BOOLEAN_TO_INT(ctx->Light.Light[0].Enabled);
++ break;
++ case GL_LIGHT1:
++ params[0] = BOOLEAN_TO_INT(ctx->Light.Light[1].Enabled);
++ break;
++ case GL_LIGHT2:
++ params[0] = BOOLEAN_TO_INT(ctx->Light.Light[2].Enabled);
++ break;
++ case GL_LIGHT3:
++ params[0] = BOOLEAN_TO_INT(ctx->Light.Light[3].Enabled);
++ break;
++ case GL_LIGHT4:
++ params[0] = BOOLEAN_TO_INT(ctx->Light.Light[4].Enabled);
++ break;
++ case GL_LIGHT5:
++ params[0] = BOOLEAN_TO_INT(ctx->Light.Light[5].Enabled);
++ break;
++ case GL_LIGHT6:
++ params[0] = BOOLEAN_TO_INT(ctx->Light.Light[6].Enabled);
++ break;
++ case GL_LIGHT7:
++ params[0] = BOOLEAN_TO_INT(ctx->Light.Light[7].Enabled);
++ break;
++ case GL_LIGHTING:
++ params[0] = BOOLEAN_TO_INT(ctx->Light.Enabled);
++ break;
++ case GL_LIGHT_MODEL_AMBIENT:
++ params[0] = FLOAT_TO_INT(ctx->Light.Model.Ambient[0]);
++ params[1] = FLOAT_TO_INT(ctx->Light.Model.Ambient[1]);
++ params[2] = FLOAT_TO_INT(ctx->Light.Model.Ambient[2]);
++ params[3] = FLOAT_TO_INT(ctx->Light.Model.Ambient[3]);
++ break;
++ case GL_LIGHT_MODEL_COLOR_CONTROL:
++ params[0] = ENUM_TO_INT(ctx->Light.Model.ColorControl);
++ break;
++ case GL_LIGHT_MODEL_LOCAL_VIEWER:
++ params[0] = BOOLEAN_TO_INT(ctx->Light.Model.LocalViewer);
++ break;
++ case GL_LIGHT_MODEL_TWO_SIDE:
++ params[0] = BOOLEAN_TO_INT(ctx->Light.Model.TwoSide);
++ break;
++ case GL_LINE_SMOOTH:
++ params[0] = BOOLEAN_TO_INT(ctx->Line.SmoothFlag);
++ break;
++ case GL_LINE_SMOOTH_HINT:
++ params[0] = ENUM_TO_INT(ctx->Hint.LineSmooth);
++ break;
++ case GL_LINE_STIPPLE:
++ params[0] = BOOLEAN_TO_INT(ctx->Line.StippleFlag);
++ break;
++ case GL_LINE_STIPPLE_PATTERN:
++ params[0] = ctx->Line.StipplePattern;
++ break;
++ case GL_LINE_STIPPLE_REPEAT:
++ params[0] = ctx->Line.StippleFactor;
++ break;
++ case GL_LINE_WIDTH:
++ params[0] = IROUND(ctx->Line.Width);
++ break;
++ case GL_LINE_WIDTH_GRANULARITY:
++ params[0] = IROUND(ctx->Const.LineWidthGranularity);
++ break;
++ case GL_LINE_WIDTH_RANGE:
++ params[0] = IROUND(ctx->Const.MinLineWidthAA);
++ params[1] = IROUND(ctx->Const.MaxLineWidthAA);
++ break;
++ case GL_ALIASED_LINE_WIDTH_RANGE:
++ params[0] = IROUND(ctx->Const.MinLineWidth);
++ params[1] = IROUND(ctx->Const.MaxLineWidth);
++ break;
++ case GL_LIST_BASE:
++ params[0] = ctx->List.ListBase;
++ break;
++ case GL_LIST_INDEX:
++ params[0] = ctx->ListState.CurrentListNum;
++ break;
++ case GL_LIST_MODE:
++ {
++ GLenum mode;
++ if (!ctx->CompileFlag)
++ mode = 0;
++ else if (ctx->ExecuteFlag)
++ mode = GL_COMPILE_AND_EXECUTE;
++ else
++ mode = GL_COMPILE;
++ params[0] = ENUM_TO_INT(mode);
++ }
++ break;
++ case GL_INDEX_LOGIC_OP:
++ params[0] = BOOLEAN_TO_INT(ctx->Color.IndexLogicOpEnabled);
++ break;
++ case GL_COLOR_LOGIC_OP:
++ params[0] = BOOLEAN_TO_INT(ctx->Color.ColorLogicOpEnabled);
++ break;
++ case GL_LOGIC_OP_MODE:
++ params[0] = ENUM_TO_INT(ctx->Color.LogicOp);
++ break;
++ case GL_MAP1_COLOR_4:
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Color4);
++ break;
++ case GL_MAP1_GRID_DOMAIN:
++ params[0] = IROUND(ctx->Eval.MapGrid1u1);
++ params[1] = IROUND(ctx->Eval.MapGrid1u2);
++ break;
++ case GL_MAP1_GRID_SEGMENTS:
++ params[0] = ctx->Eval.MapGrid1un;
++ break;
++ case GL_MAP1_INDEX:
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Index);
++ break;
++ case GL_MAP1_NORMAL:
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Normal);
++ break;
++ case GL_MAP1_TEXTURE_COORD_1:
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord1);
++ break;
++ case GL_MAP1_TEXTURE_COORD_2:
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord2);
++ break;
++ case GL_MAP1_TEXTURE_COORD_3:
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord3);
++ break;
++ case GL_MAP1_TEXTURE_COORD_4:
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord4);
++ break;
++ case GL_MAP1_VERTEX_3:
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Vertex3);
++ break;
++ case GL_MAP1_VERTEX_4:
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Vertex4);
++ break;
++ case GL_MAP2_COLOR_4:
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Color4);
++ break;
++ case GL_MAP2_GRID_DOMAIN:
++ params[0] = IROUND(ctx->Eval.MapGrid2u1);
++ params[1] = IROUND(ctx->Eval.MapGrid2u2);
++ params[2] = IROUND(ctx->Eval.MapGrid2v1);
++ params[3] = IROUND(ctx->Eval.MapGrid2v2);
++ break;
++ case GL_MAP2_GRID_SEGMENTS:
++ params[0] = ctx->Eval.MapGrid2un;
++ params[1] = ctx->Eval.MapGrid2vn;
++ break;
++ case GL_MAP2_INDEX:
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Index);
++ break;
++ case GL_MAP2_NORMAL:
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Normal);
++ break;
++ case GL_MAP2_TEXTURE_COORD_1:
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord1);
++ break;
++ case GL_MAP2_TEXTURE_COORD_2:
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord2);
++ break;
++ case GL_MAP2_TEXTURE_COORD_3:
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord3);
++ break;
++ case GL_MAP2_TEXTURE_COORD_4:
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord4);
++ break;
++ case GL_MAP2_VERTEX_3:
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Vertex3);
++ break;
++ case GL_MAP2_VERTEX_4:
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Vertex4);
++ break;
++ case GL_MAP_COLOR:
++ params[0] = BOOLEAN_TO_INT(ctx->Pixel.MapColorFlag);
++ break;
++ case GL_MAP_STENCIL:
++ params[0] = BOOLEAN_TO_INT(ctx->Pixel.MapStencilFlag);
++ break;
++ case GL_MATRIX_MODE:
++ params[0] = ENUM_TO_INT(ctx->Transform.MatrixMode);
++ break;
++ case GL_MAX_ATTRIB_STACK_DEPTH:
++ params[0] = MAX_ATTRIB_STACK_DEPTH;
++ break;
++ case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
++ params[0] = MAX_CLIENT_ATTRIB_STACK_DEPTH;
++ break;
++ case GL_MAX_CLIP_PLANES:
++ params[0] = ctx->Const.MaxClipPlanes;
++ break;
++ case GL_MAX_ELEMENTS_VERTICES:
++ params[0] = ctx->Const.MaxArrayLockSize;
++ break;
++ case GL_MAX_ELEMENTS_INDICES:
++ params[0] = ctx->Const.MaxArrayLockSize;
++ break;
++ case GL_MAX_EVAL_ORDER:
++ params[0] = MAX_EVAL_ORDER;
++ break;
++ case GL_MAX_LIGHTS:
++ params[0] = ctx->Const.MaxLights;
++ break;
++ case GL_MAX_LIST_NESTING:
++ params[0] = MAX_LIST_NESTING;
++ break;
++ case GL_MAX_MODELVIEW_STACK_DEPTH:
++ params[0] = MAX_MODELVIEW_STACK_DEPTH;
++ break;
++ case GL_MAX_NAME_STACK_DEPTH:
++ params[0] = MAX_NAME_STACK_DEPTH;
++ break;
++ case GL_MAX_PIXEL_MAP_TABLE:
++ params[0] = MAX_PIXEL_MAP_TABLE;
++ break;
++ case GL_MAX_PROJECTION_STACK_DEPTH:
++ params[0] = MAX_PROJECTION_STACK_DEPTH;
++ break;
++ case GL_MAX_TEXTURE_SIZE:
++ params[0] = 1 << (ctx->Const.MaxTextureLevels - 1);
++ break;
++ case GL_MAX_3D_TEXTURE_SIZE:
++ params[0] = 1 << (ctx->Const.Max3DTextureLevels - 1);
++ break;
++ case GL_MAX_TEXTURE_STACK_DEPTH:
++ params[0] = MAX_TEXTURE_STACK_DEPTH;
++ break;
++ case GL_MAX_VIEWPORT_DIMS:
++ params[0] = ctx->Const.MaxViewportWidth;
++ params[1] = ctx->Const.MaxViewportHeight;
++ break;
++ case GL_MODELVIEW_MATRIX:
++ {
++ const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
++ params[0] = IROUND(matrix[0]);
++ params[1] = IROUND(matrix[1]);
++ params[2] = IROUND(matrix[2]);
++ params[3] = IROUND(matrix[3]);
++ params[4] = IROUND(matrix[4]);
++ params[5] = IROUND(matrix[5]);
++ params[6] = IROUND(matrix[6]);
++ params[7] = IROUND(matrix[7]);
++ params[8] = IROUND(matrix[8]);
++ params[9] = IROUND(matrix[9]);
++ params[10] = IROUND(matrix[10]);
++ params[11] = IROUND(matrix[11]);
++ params[12] = IROUND(matrix[12]);
++ params[13] = IROUND(matrix[13]);
++ params[14] = IROUND(matrix[14]);
++ params[15] = IROUND(matrix[15]);
++ }
++ break;
++ case GL_MODELVIEW_STACK_DEPTH:
++ params[0] = ctx->ModelviewMatrixStack.Depth + 1;
++ break;
++ case GL_NAME_STACK_DEPTH:
++ params[0] = ctx->Select.NameStackDepth;
++ break;
++ case GL_NORMALIZE:
++ params[0] = BOOLEAN_TO_INT(ctx->Transform.Normalize);
++ break;
++ case GL_PACK_ALIGNMENT:
++ params[0] = ctx->Pack.Alignment;
++ break;
++ case GL_PACK_LSB_FIRST:
++ params[0] = BOOLEAN_TO_INT(ctx->Pack.LsbFirst);
++ break;
++ case GL_PACK_ROW_LENGTH:
++ params[0] = ctx->Pack.RowLength;
++ break;
++ case GL_PACK_SKIP_PIXELS:
++ params[0] = ctx->Pack.SkipPixels;
++ break;
++ case GL_PACK_SKIP_ROWS:
++ params[0] = ctx->Pack.SkipRows;
++ break;
++ case GL_PACK_SWAP_BYTES:
++ params[0] = BOOLEAN_TO_INT(ctx->Pack.SwapBytes);
++ break;
++ case GL_PACK_SKIP_IMAGES_EXT:
++ params[0] = ctx->Pack.SkipImages;
++ break;
++ case GL_PACK_IMAGE_HEIGHT_EXT:
++ params[0] = ctx->Pack.ImageHeight;
++ break;
++ case GL_PACK_INVERT_MESA:
++ params[0] = BOOLEAN_TO_INT(ctx->Pack.Invert);
++ break;
++ case GL_PERSPECTIVE_CORRECTION_HINT:
++ params[0] = ENUM_TO_INT(ctx->Hint.PerspectiveCorrection);
++ break;
++ case GL_PIXEL_MAP_A_TO_A_SIZE:
++ params[0] = ctx->Pixel.MapAtoAsize;
++ break;
++ case GL_PIXEL_MAP_B_TO_B_SIZE:
++ params[0] = ctx->Pixel.MapBtoBsize;
++ break;
++ case GL_PIXEL_MAP_G_TO_G_SIZE:
++ params[0] = ctx->Pixel.MapGtoGsize;
++ break;
++ case GL_PIXEL_MAP_I_TO_A_SIZE:
++ params[0] = ctx->Pixel.MapItoAsize;
++ break;
++ case GL_PIXEL_MAP_I_TO_B_SIZE:
++ params[0] = ctx->Pixel.MapItoBsize;
++ break;
++ case GL_PIXEL_MAP_I_TO_G_SIZE:
++ params[0] = ctx->Pixel.MapItoGsize;
++ break;
++ case GL_PIXEL_MAP_I_TO_I_SIZE:
++ params[0] = ctx->Pixel.MapItoIsize;
++ break;
++ case GL_PIXEL_MAP_I_TO_R_SIZE:
++ params[0] = ctx->Pixel.MapItoRsize;
++ break;
++ case GL_PIXEL_MAP_R_TO_R_SIZE:
++ params[0] = ctx->Pixel.MapRtoRsize;
++ break;
++ case GL_PIXEL_MAP_S_TO_S_SIZE:
++ params[0] = ctx->Pixel.MapStoSsize;
++ break;
++ case GL_POINT_SIZE:
++ params[0] = IROUND(ctx->Point.Size);
++ break;
++ case GL_POINT_SIZE_GRANULARITY:
++ params[0] = IROUND(ctx->Const.PointSizeGranularity);
++ break;
++ case GL_POINT_SIZE_RANGE:
++ params[0] = IROUND(ctx->Const.MinPointSizeAA);
++ params[1] = IROUND(ctx->Const.MaxPointSizeAA);
++ break;
++ case GL_ALIASED_POINT_SIZE_RANGE:
++ params[0] = IROUND(ctx->Const.MinPointSize);
++ params[1] = IROUND(ctx->Const.MaxPointSize);
++ break;
++ case GL_POINT_SMOOTH:
++ params[0] = BOOLEAN_TO_INT(ctx->Point.SmoothFlag);
++ break;
++ case GL_POINT_SMOOTH_HINT:
++ params[0] = ENUM_TO_INT(ctx->Hint.PointSmooth);
++ break;
++ case GL_POINT_SIZE_MIN_EXT:
++ params[0] = IROUND(ctx->Point.MinSize);
++ break;
++ case GL_POINT_SIZE_MAX_EXT:
++ params[0] = IROUND(ctx->Point.MaxSize);
++ break;
++ case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
++ params[0] = IROUND(ctx->Point.Threshold);
++ break;
++ case GL_DISTANCE_ATTENUATION_EXT:
++ params[0] = IROUND(ctx->Point.Params[0]);
++ params[1] = IROUND(ctx->Point.Params[1]);
++ params[2] = IROUND(ctx->Point.Params[2]);
++ break;
++ case GL_POLYGON_MODE:
++ params[0] = ENUM_TO_INT(ctx->Polygon.FrontMode);
++ params[1] = ENUM_TO_INT(ctx->Polygon.BackMode);
++ break;
++ case GL_POLYGON_OFFSET_BIAS_EXT:
++ params[0] = IROUND(ctx->Polygon.OffsetUnits);
++ break;
++ case GL_POLYGON_OFFSET_FACTOR:
++ params[0] = IROUND(ctx->Polygon.OffsetFactor );
++ break;
++ case GL_POLYGON_OFFSET_UNITS:
++ params[0] = IROUND(ctx->Polygon.OffsetUnits );
++ break;
++ case GL_POLYGON_SMOOTH:
++ params[0] = BOOLEAN_TO_INT(ctx->Polygon.SmoothFlag);
++ break;
++ case GL_POLYGON_SMOOTH_HINT:
++ params[0] = ENUM_TO_INT(ctx->Hint.PolygonSmooth);
++ break;
++ case GL_POLYGON_STIPPLE:
++ params[0] = BOOLEAN_TO_INT(ctx->Polygon.StippleFlag);
++ break;
++ case GL_PROJECTION_MATRIX:
++ {
++ const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
++ params[0] = IROUND(matrix[0]);
++ params[1] = IROUND(matrix[1]);
++ params[2] = IROUND(matrix[2]);
++ params[3] = IROUND(matrix[3]);
++ params[4] = IROUND(matrix[4]);
++ params[5] = IROUND(matrix[5]);
++ params[6] = IROUND(matrix[6]);
++ params[7] = IROUND(matrix[7]);
++ params[8] = IROUND(matrix[8]);
++ params[9] = IROUND(matrix[9]);
++ params[10] = IROUND(matrix[10]);
++ params[11] = IROUND(matrix[11]);
++ params[12] = IROUND(matrix[12]);
++ params[13] = IROUND(matrix[13]);
++ params[14] = IROUND(matrix[14]);
++ params[15] = IROUND(matrix[15]);
++ }
++ break;
++ case GL_PROJECTION_STACK_DEPTH:
++ params[0] = ctx->ProjectionMatrixStack.Depth + 1;
++ break;
++ case GL_READ_BUFFER:
++ params[0] = ENUM_TO_INT(ctx->ReadBuffer->ColorReadBuffer);
++ break;
++ case GL_RED_BIAS:
++ params[0] = IROUND(ctx->Pixel.RedBias);
++ break;
++ case GL_RED_BITS:
++ params[0] = ctx->DrawBuffer->Visual.redBits ;
++ break;
++ case GL_RED_SCALE:
++ params[0] = IROUND(ctx->Pixel.RedScale);
++ break;
++ case GL_RENDER_MODE:
++ params[0] = ENUM_TO_INT(ctx->RenderMode);
++ break;
++ case GL_RESCALE_NORMAL:
++ params[0] = BOOLEAN_TO_INT(ctx->Transform.RescaleNormals);
++ break;
++ case GL_RGBA_MODE:
++ params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.rgbMode);
++ break;
++ case GL_SCISSOR_BOX:
++ params[0] = ctx->Scissor.X;
++ params[1] = ctx->Scissor.Y;
++ params[2] = ctx->Scissor.Width;
++ params[3] = ctx->Scissor.Height;
++ break;
++ case GL_SCISSOR_TEST:
++ params[0] = BOOLEAN_TO_INT(ctx->Scissor.Enabled);
++ break;
++ case GL_SELECTION_BUFFER_SIZE:
++ params[0] = ctx->Select.BufferSize;
++ break;
++ case GL_SHADE_MODEL:
++ params[0] = ENUM_TO_INT(ctx->Light.ShadeModel);
++ break;
++ case GL_SHARED_TEXTURE_PALETTE_EXT:
++ params[0] = BOOLEAN_TO_INT(ctx->Texture.SharedPalette);
++ break;
++ case GL_STENCIL_BITS:
++ params[0] = ctx->DrawBuffer->Visual.stencilBits;
++ break;
++ case GL_STENCIL_CLEAR_VALUE:
++ params[0] = ctx->Stencil.Clear;
++ break;
++ case GL_STENCIL_FAIL:
++ params[0] = ENUM_TO_INT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
++ break;
++ case GL_STENCIL_FUNC:
++ params[0] = ENUM_TO_INT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
++ break;
++ case GL_STENCIL_PASS_DEPTH_FAIL:
++ params[0] = ENUM_TO_INT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
++ break;
++ case GL_STENCIL_PASS_DEPTH_PASS:
++ params[0] = ENUM_TO_INT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
++ break;
++ case GL_STENCIL_REF:
++ params[0] = ctx->Stencil.Ref[ctx->Stencil.ActiveFace];
++ break;
++ case GL_STENCIL_TEST:
++ params[0] = BOOLEAN_TO_INT(ctx->Stencil.Enabled);
++ break;
++ case GL_STENCIL_VALUE_MASK:
++ params[0] = ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace];
++ break;
++ case GL_STENCIL_WRITEMASK:
++ params[0] = ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace];
++ break;
++ case GL_STEREO:
++ params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.stereoMode);
++ break;
++ case GL_SUBPIXEL_BITS:
++ params[0] = ctx->Const.SubPixelBits;
++ break;
++ case GL_TEXTURE_1D:
++ params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D));
++ break;
++ case GL_TEXTURE_2D:
++ params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D));
++ break;
++ case GL_TEXTURE_3D:
++ params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_3D));
++ break;
++ case GL_TEXTURE_BINDING_1D:
++ params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current1D->Name;
++ break;
++ case GL_TEXTURE_BINDING_2D:
++ params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current2D->Name;
++ break;
++ case GL_TEXTURE_BINDING_3D:
++ params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current3D->Name;
++ break;
++ case GL_TEXTURE_ENV_COLOR:
++ {
++ const GLfloat *color = ctx->Texture.Unit[ctx->Texture.CurrentUnit].EnvColor;
++ params[0] = FLOAT_TO_INT(color[0]);
++ params[1] = FLOAT_TO_INT(color[1]);
++ params[2] = FLOAT_TO_INT(color[2]);
++ params[3] = FLOAT_TO_INT(color[3]);
++ }
++ break;
++ case GL_TEXTURE_ENV_MODE:
++ params[0] = ENUM_TO_INT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].EnvMode);
++ break;
++ case GL_TEXTURE_GEN_S:
++ params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0));
++ break;
++ case GL_TEXTURE_GEN_T:
++ params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0));
++ break;
++ case GL_TEXTURE_GEN_R:
++ params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0));
++ break;
++ case GL_TEXTURE_GEN_Q:
++ params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0));
++ break;
++ case GL_TEXTURE_MATRIX:
++ {
++ const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
++ params[0] = IROUND(matrix[0]);
++ params[1] = IROUND(matrix[1]);
++ params[2] = IROUND(matrix[2]);
++ params[3] = IROUND(matrix[3]);
++ params[4] = IROUND(matrix[4]);
++ params[5] = IROUND(matrix[5]);
++ params[6] = IROUND(matrix[6]);
++ params[7] = IROUND(matrix[7]);
++ params[8] = IROUND(matrix[8]);
++ params[9] = IROUND(matrix[9]);
++ params[10] = IROUND(matrix[10]);
++ params[11] = IROUND(matrix[11]);
++ params[12] = IROUND(matrix[12]);
++ params[13] = IROUND(matrix[13]);
++ params[14] = IROUND(matrix[14]);
++ params[15] = IROUND(matrix[15]);
++ }
++ break;
++ case GL_TEXTURE_STACK_DEPTH:
++ params[0] = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1;
++ break;
++ case GL_UNPACK_ALIGNMENT:
++ params[0] = ctx->Unpack.Alignment;
++ break;
++ case GL_UNPACK_LSB_FIRST:
++ params[0] = BOOLEAN_TO_INT(ctx->Unpack.LsbFirst);
++ break;
++ case GL_UNPACK_ROW_LENGTH:
++ params[0] = ctx->Unpack.RowLength;
++ break;
++ case GL_UNPACK_SKIP_PIXELS:
++ params[0] = ctx->Unpack.SkipPixels;
++ break;
++ case GL_UNPACK_SKIP_ROWS:
++ params[0] = ctx->Unpack.SkipRows;
++ break;
++ case GL_UNPACK_SWAP_BYTES:
++ params[0] = BOOLEAN_TO_INT(ctx->Unpack.SwapBytes);
++ break;
++ case GL_UNPACK_SKIP_IMAGES_EXT:
++ params[0] = ctx->Unpack.SkipImages;
++ break;
++ case GL_UNPACK_IMAGE_HEIGHT_EXT:
++ params[0] = ctx->Unpack.ImageHeight;
++ break;
++ case GL_UNPACK_CLIENT_STORAGE_APPLE:
++ params[0] = BOOLEAN_TO_INT(ctx->Unpack.ClientStorage);
++ break;
++ case GL_VIEWPORT:
++ params[0] = ctx->Viewport.X;
++ params[1] = ctx->Viewport.Y;
++ params[2] = ctx->Viewport.Width;
++ params[3] = ctx->Viewport.Height;
++ break;
++ case GL_ZOOM_X:
++ params[0] = IROUND(ctx->Pixel.ZoomX);
++ break;
++ case GL_ZOOM_Y:
++ params[0] = IROUND(ctx->Pixel.ZoomY);
++ break;
++ case GL_VERTEX_ARRAY:
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Vertex.Enabled);
++ break;
++ case GL_VERTEX_ARRAY_SIZE:
++ params[0] = ctx->Array.ArrayObj->Vertex.Size;
++ break;
++ case GL_VERTEX_ARRAY_TYPE:
++ params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Vertex.Type);
++ break;
++ case GL_VERTEX_ARRAY_STRIDE:
++ params[0] = ctx->Array.ArrayObj->Vertex.Stride;
++ break;
++ case GL_VERTEX_ARRAY_COUNT_EXT:
++ params[0] = 0;
++ break;
++ case GL_NORMAL_ARRAY:
++ params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Normal.Enabled);
++ break;
++ case GL_NORMAL_ARRAY_TYPE:
++ params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Normal.Type);
++ break;
++ case GL_NORMAL_ARRAY_STRIDE:
++ params[0] = ctx->Array.ArrayObj->Normal.Stride;
++ break;
++ case GL_NORMAL_ARRAY_COUNT_EXT:
++ params[0] = 0;
++ break;
++ case GL_COLOR_ARRAY:
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Color.Enabled);
++ break;
++ case GL_COLOR_ARRAY_SIZE:
++ params[0] = ctx->Array.ArrayObj->Color.Size;
++ break;
++ case GL_COLOR_ARRAY_TYPE:
++ params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Color.Type);
++ break;
++ case GL_COLOR_ARRAY_STRIDE:
++ params[0] = ctx->Array.ArrayObj->Color.Stride;
++ break;
++ case GL_COLOR_ARRAY_COUNT_EXT:
++ params[0] = 0;
++ break;
++ case GL_INDEX_ARRAY:
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Index.Enabled);
++ break;
++ case GL_INDEX_ARRAY_TYPE:
++ params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Index.Type);
++ break;
++ case GL_INDEX_ARRAY_STRIDE:
++ params[0] = ctx->Array.ArrayObj->Index.Stride;
++ break;
++ case GL_INDEX_ARRAY_COUNT_EXT:
++ params[0] = 0;
++ break;
++ case GL_TEXTURE_COORD_ARRAY:
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled);
++ break;
++ case GL_TEXTURE_COORD_ARRAY_SIZE:
++ params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size;
++ break;
++ case GL_TEXTURE_COORD_ARRAY_TYPE:
++ params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
++ break;
++ case GL_TEXTURE_COORD_ARRAY_STRIDE:
++ params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride;
++ break;
++ case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
++ params[0] = 0;
++ break;
++ case GL_EDGE_FLAG_ARRAY:
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->EdgeFlag.Enabled);
++ break;
++ case GL_EDGE_FLAG_ARRAY_STRIDE:
++ params[0] = ctx->Array.ArrayObj->EdgeFlag.Stride;
++ break;
++ case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
++ params[0] = 0;
++ break;
++ case GL_MAX_TEXTURE_UNITS_ARB:
++ CHECK_EXT1(ARB_multitexture, "GetIntegerv");
++ params[0] = ctx->Const.MaxTextureUnits;
++ break;
++ case GL_ACTIVE_TEXTURE_ARB:
++ CHECK_EXT1(ARB_multitexture, "GetIntegerv");
++ params[0] = GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit;
++ break;
++ case GL_CLIENT_ACTIVE_TEXTURE_ARB:
++ CHECK_EXT1(ARB_multitexture, "GetIntegerv");
++ params[0] = GL_TEXTURE0_ARB + ctx->Array.ActiveTexture;
++ break;
++ case GL_TEXTURE_CUBE_MAP_ARB:
++ CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB));
++ break;
++ case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
++ CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv");
++ params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentCubeMap->Name;
++ break;
++ case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
++ CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv");
++ params[0] = (1 << (ctx->Const.MaxCubeTextureLevels - 1));
++ break;
++ case GL_TEXTURE_COMPRESSION_HINT_ARB:
++ CHECK_EXT1(ARB_texture_compression, "GetIntegerv");
++ params[0] = ctx->Hint.TextureCompression;
++ break;
++ case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
++ CHECK_EXT1(ARB_texture_compression, "GetIntegerv");
++ params[0] = _mesa_get_compressed_formats(ctx, NULL, GL_FALSE);
++ break;
++ case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
++ CHECK_EXT1(ARB_texture_compression, "GetIntegerv");
++ {
++ GLint formats[100];
++ GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
++ ASSERT(n <= 100);
++ for (i = 0; i < n; i++)
++ params[i] = ENUM_TO_INT(formats[i]);
++ }
++ break;
++ case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
++ CHECK_EXT1(EXT_compiled_vertex_array, "GetIntegerv");
++ params[0] = ctx->Array.LockFirst;
++ break;
++ case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
++ CHECK_EXT1(EXT_compiled_vertex_array, "GetIntegerv");
++ params[0] = ctx->Array.LockCount;
++ break;
++ case GL_TRANSPOSE_COLOR_MATRIX_ARB:
++ {
++ const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
++ params[0] = IROUND(matrix[0]);
++ params[1] = IROUND(matrix[4]);
++ params[2] = IROUND(matrix[8]);
++ params[3] = IROUND(matrix[12]);
++ params[4] = IROUND(matrix[1]);
++ params[5] = IROUND(matrix[5]);
++ params[6] = IROUND(matrix[9]);
++ params[7] = IROUND(matrix[13]);
++ params[8] = IROUND(matrix[2]);
++ params[9] = IROUND(matrix[6]);
++ params[10] = IROUND(matrix[10]);
++ params[11] = IROUND(matrix[14]);
++ params[12] = IROUND(matrix[3]);
++ params[13] = IROUND(matrix[7]);
++ params[14] = IROUND(matrix[11]);
++ params[15] = IROUND(matrix[15]);
++ }
++ break;
++ case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
++ {
++ const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
++ params[0] = IROUND(matrix[0]);
++ params[1] = IROUND(matrix[4]);
++ params[2] = IROUND(matrix[8]);
++ params[3] = IROUND(matrix[12]);
++ params[4] = IROUND(matrix[1]);
++ params[5] = IROUND(matrix[5]);
++ params[6] = IROUND(matrix[9]);
++ params[7] = IROUND(matrix[13]);
++ params[8] = IROUND(matrix[2]);
++ params[9] = IROUND(matrix[6]);
++ params[10] = IROUND(matrix[10]);
++ params[11] = IROUND(matrix[14]);
++ params[12] = IROUND(matrix[3]);
++ params[13] = IROUND(matrix[7]);
++ params[14] = IROUND(matrix[11]);
++ params[15] = IROUND(matrix[15]);
++ }
++ break;
++ case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
++ {
++ const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
++ params[0] = IROUND(matrix[0]);
++ params[1] = IROUND(matrix[4]);
++ params[2] = IROUND(matrix[8]);
++ params[3] = IROUND(matrix[12]);
++ params[4] = IROUND(matrix[1]);
++ params[5] = IROUND(matrix[5]);
++ params[6] = IROUND(matrix[9]);
++ params[7] = IROUND(matrix[13]);
++ params[8] = IROUND(matrix[2]);
++ params[9] = IROUND(matrix[6]);
++ params[10] = IROUND(matrix[10]);
++ params[11] = IROUND(matrix[14]);
++ params[12] = IROUND(matrix[3]);
++ params[13] = IROUND(matrix[7]);
++ params[14] = IROUND(matrix[11]);
++ params[15] = IROUND(matrix[15]);
++ }
++ break;
++ case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
++ {
++ const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
++ params[0] = IROUND(matrix[0]);
++ params[1] = IROUND(matrix[4]);
++ params[2] = IROUND(matrix[8]);
++ params[3] = IROUND(matrix[12]);
++ params[4] = IROUND(matrix[1]);
++ params[5] = IROUND(matrix[5]);
++ params[6] = IROUND(matrix[9]);
++ params[7] = IROUND(matrix[13]);
++ params[8] = IROUND(matrix[2]);
++ params[9] = IROUND(matrix[6]);
++ params[10] = IROUND(matrix[10]);
++ params[11] = IROUND(matrix[14]);
++ params[12] = IROUND(matrix[3]);
++ params[13] = IROUND(matrix[7]);
++ params[14] = IROUND(matrix[11]);
++ params[15] = IROUND(matrix[15]);
++ }
++ break;
++ case GL_COLOR_MATRIX_SGI:
++ {
++ const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
++ params[0] = IROUND(matrix[0]);
++ params[1] = IROUND(matrix[1]);
++ params[2] = IROUND(matrix[2]);
++ params[3] = IROUND(matrix[3]);
++ params[4] = IROUND(matrix[4]);
++ params[5] = IROUND(matrix[5]);
++ params[6] = IROUND(matrix[6]);
++ params[7] = IROUND(matrix[7]);
++ params[8] = IROUND(matrix[8]);
++ params[9] = IROUND(matrix[9]);
++ params[10] = IROUND(matrix[10]);
++ params[11] = IROUND(matrix[11]);
++ params[12] = IROUND(matrix[12]);
++ params[13] = IROUND(matrix[13]);
++ params[14] = IROUND(matrix[14]);
++ params[15] = IROUND(matrix[15]);
++ }
++ break;
++ case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
++ params[0] = ctx->ColorMatrixStack.Depth + 1;
++ break;
++ case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
++ params[0] = MAX_COLOR_STACK_DEPTH;
++ break;
++ case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
++ params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[0]);
++ break;
++ case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
++ params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[1]);
++ break;
++ case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
++ params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[2]);
++ break;
++ case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
++ params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[3]);
++ break;
++ case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
++ params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[0]);
++ break;
++ case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
++ params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[1]);
++ break;
++ case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
++ params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[2]);
++ break;
++ case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
++ params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[3]);
++ break;
++ case GL_CONVOLUTION_1D_EXT:
++ CHECK_EXT1(EXT_convolution, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution1DEnabled);
++ break;
++ case GL_CONVOLUTION_2D_EXT:
++ CHECK_EXT1(EXT_convolution, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution2DEnabled);
++ break;
++ case GL_SEPARABLE_2D_EXT:
++ CHECK_EXT1(EXT_convolution, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Pixel.Separable2DEnabled);
++ break;
++ case GL_POST_CONVOLUTION_RED_SCALE_EXT:
++ CHECK_EXT1(EXT_convolution, "GetIntegerv");
++ params[0] = IROUND(ctx->Pixel.PostConvolutionScale[0]);
++ break;
++ case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
++ CHECK_EXT1(EXT_convolution, "GetIntegerv");
++ params[0] = IROUND(ctx->Pixel.PostConvolutionScale[1]);
++ break;
++ case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
++ CHECK_EXT1(EXT_convolution, "GetIntegerv");
++ params[0] = IROUND(ctx->Pixel.PostConvolutionScale[2]);
++ break;
++ case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
++ CHECK_EXT1(EXT_convolution, "GetIntegerv");
++ params[0] = IROUND(ctx->Pixel.PostConvolutionScale[3]);
++ break;
++ case GL_POST_CONVOLUTION_RED_BIAS_EXT:
++ CHECK_EXT1(EXT_convolution, "GetIntegerv");
++ params[0] = IROUND(ctx->Pixel.PostConvolutionBias[0]);
++ break;
++ case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
++ CHECK_EXT1(EXT_convolution, "GetIntegerv");
++ params[0] = IROUND(ctx->Pixel.PostConvolutionBias[1]);
++ break;
++ case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
++ CHECK_EXT1(EXT_convolution, "GetIntegerv");
++ params[0] = IROUND(ctx->Pixel.PostConvolutionBias[2]);
++ break;
++ case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
++ CHECK_EXT1(EXT_convolution, "GetIntegerv");
++ params[0] = IROUND(ctx->Pixel.PostConvolutionBias[3]);
++ break;
++ case GL_HISTOGRAM:
++ CHECK_EXT1(EXT_histogram, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Pixel.HistogramEnabled);
++ break;
++ case GL_MINMAX:
++ CHECK_EXT1(EXT_histogram, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Pixel.MinMaxEnabled);
++ break;
++ case GL_COLOR_TABLE_SGI:
++ CHECK_EXT1(SGI_color_table, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled);
++ break;
++ case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
++ CHECK_EXT1(SGI_color_table, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Pixel.PostConvolutionColorTableEnabled);
++ break;
++ case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
++ CHECK_EXT1(SGI_color_table, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Pixel.PostColorMatrixColorTableEnabled);
++ break;
++ case GL_TEXTURE_COLOR_TABLE_SGI:
++ CHECK_EXT1(SGI_texture_color_table, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
++ break;
++ case GL_COLOR_SUM_EXT:
++ CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Fog.ColorSumEnabled);
++ break;
++ case GL_CURRENT_SECONDARY_COLOR_EXT:
++ CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
++ {
++ FLUSH_CURRENT(ctx, 0);
++ params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
++ params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
++ params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
++ params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]);
++ }
++ break;
++ case GL_SECONDARY_COLOR_ARRAY_EXT:
++ CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Enabled);
++ break;
++ case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
++ CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
++ params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Type);
++ break;
++ case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
++ CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
++ params[0] = ctx->Array.ArrayObj->SecondaryColor.Stride;
++ break;
++ case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
++ CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
++ params[0] = ctx->Array.ArrayObj->SecondaryColor.Size;
++ break;
++ case GL_CURRENT_FOG_COORDINATE_EXT:
++ CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
++ {
++ FLUSH_CURRENT(ctx, 0);
++ params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
++ }
++ break;
++ case GL_FOG_COORDINATE_ARRAY_EXT:
++ CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->FogCoord.Enabled);
++ break;
++ case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
++ CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
++ params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->FogCoord.Type);
++ break;
++ case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
++ CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
++ params[0] = ctx->Array.ArrayObj->FogCoord.Stride;
++ break;
++ case GL_FOG_COORDINATE_SOURCE_EXT:
++ CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
++ params[0] = ENUM_TO_INT(ctx->Fog.FogCoordinateSource);
++ break;
++ case GL_MAX_TEXTURE_LOD_BIAS_EXT:
++ CHECK_EXT1(EXT_texture_lod_bias, "GetIntegerv");
++ params[0] = IROUND(ctx->Const.MaxTextureLodBias);
++ break;
++ case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
++ CHECK_EXT1(EXT_texture_filter_anisotropic, "GetIntegerv");
++ params[0] = IROUND(ctx->Const.MaxTextureMaxAnisotropy);
++ break;
++ case GL_MULTISAMPLE_ARB:
++ CHECK_EXT1(ARB_multisample, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Multisample.Enabled);
++ break;
++ case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
++ CHECK_EXT1(ARB_multisample, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToCoverage);
++ break;
++ case GL_SAMPLE_ALPHA_TO_ONE_ARB:
++ CHECK_EXT1(ARB_multisample, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToOne);
++ break;
++ case GL_SAMPLE_COVERAGE_ARB:
++ CHECK_EXT1(ARB_multisample, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverage);
++ break;
++ case GL_SAMPLE_COVERAGE_VALUE_ARB:
++ CHECK_EXT1(ARB_multisample, "GetIntegerv");
++ params[0] = IROUND(ctx->Multisample.SampleCoverageValue);
++ break;
++ case GL_SAMPLE_COVERAGE_INVERT_ARB:
++ CHECK_EXT1(ARB_multisample, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverageInvert);
++ break;
++ case GL_SAMPLE_BUFFERS_ARB:
++ CHECK_EXT1(ARB_multisample, "GetIntegerv");
++ params[0] = ctx->DrawBuffer->Visual.sampleBuffers;
++ break;
++ case GL_SAMPLES_ARB:
++ CHECK_EXT1(ARB_multisample, "GetIntegerv");
++ params[0] = ctx->DrawBuffer->Visual.samples;
++ break;
++ case GL_RASTER_POSITION_UNCLIPPED_IBM:
++ CHECK_EXT1(IBM_rasterpos_clip, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Transform.RasterPositionUnclipped);
++ break;
++ case GL_POINT_SPRITE_NV:
++ CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Point.PointSprite);
++ break;
++ case GL_POINT_SPRITE_R_MODE_NV:
++ CHECK_EXT1(NV_point_sprite, "GetIntegerv");
++ params[0] = ENUM_TO_INT(ctx->Point.SpriteRMode);
++ break;
++ case GL_POINT_SPRITE_COORD_ORIGIN:
++ CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetIntegerv");
++ params[0] = ENUM_TO_INT(ctx->Point.SpriteOrigin);
++ break;
++ case GL_GENERATE_MIPMAP_HINT_SGIS:
++ CHECK_EXT1(SGIS_generate_mipmap, "GetIntegerv");
++ params[0] = ENUM_TO_INT(ctx->Hint.GenerateMipmap);
++ break;
++ case GL_VERTEX_PROGRAM_BINDING_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = (ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY0_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY1_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY2_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY3_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY5_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY6_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY7_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY8_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY9_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY10_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY11_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY12_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY13_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY14_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
++ break;
++ case GL_VERTEX_ATTRIB_ARRAY15_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB0_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[0]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB1_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[1]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB2_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[2]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB3_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[3]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB4_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[4]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB5_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[5]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB6_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[6]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB7_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[7]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB8_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[8]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB9_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[9]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB10_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[10]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB11_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[11]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB12_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[12]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB13_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[13]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB14_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[14]);
++ break;
++ case GL_MAP1_VERTEX_ATTRIB15_4_NV:
++ CHECK_EXT1(NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[15]);
++ break;
++ case GL_FRAGMENT_PROGRAM_NV:
++ CHECK_EXT1(NV_fragment_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled);
++ break;
++ case GL_FRAGMENT_PROGRAM_BINDING_NV:
++ CHECK_EXT1(NV_fragment_program, "GetIntegerv");
++ params[0] = ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0;
++ break;
++ case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
++ CHECK_EXT1(NV_fragment_program, "GetIntegerv");
++ params[0] = MAX_NV_FRAGMENT_PROGRAM_PARAMS;
++ break;
++ case GL_TEXTURE_RECTANGLE_NV:
++ CHECK_EXT1(NV_texture_rectangle, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
++ break;
++ case GL_TEXTURE_BINDING_RECTANGLE_NV:
++ CHECK_EXT1(NV_texture_rectangle, "GetIntegerv");
++ params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentRect->Name;
++ break;
++ case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
++ CHECK_EXT1(NV_texture_rectangle, "GetIntegerv");
++ params[0] = ctx->Const.MaxTextureRectSize;
++ break;
++ case GL_STENCIL_TEST_TWO_SIDE_EXT:
++ CHECK_EXT1(EXT_stencil_two_side, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Stencil.TestTwoSide);
++ break;
++ case GL_ACTIVE_STENCIL_FACE_EXT:
++ CHECK_EXT1(EXT_stencil_two_side, "GetIntegerv");
++ params[0] = ENUM_TO_INT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
++ break;
++ case GL_MAX_SHININESS_NV:
++ CHECK_EXT1(NV_light_max_exponent, "GetIntegerv");
++ params[0] = IROUND(ctx->Const.MaxShininess);
++ break;
++ case GL_MAX_SPOT_EXPONENT_NV:
++ CHECK_EXT1(NV_light_max_exponent, "GetIntegerv");
++ params[0] = IROUND(ctx->Const.MaxSpotExponent);
++ break;
++ case GL_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
++ params[0] = ctx->Array.ArrayBufferObj->Name;
++ break;
++ case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
++ params[0] = ctx->Array.ArrayObj->Vertex.BufferObj->Name;
++ break;
++ case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
++ params[0] = ctx->Array.ArrayObj->Normal.BufferObj->Name;
++ break;
++ case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
++ params[0] = ctx->Array.ArrayObj->Color.BufferObj->Name;
++ break;
++ case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
++ params[0] = ctx->Array.ArrayObj->Index.BufferObj->Name;
++ break;
++ case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
++ params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name;
++ break;
++ case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
++ params[0] = ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name;
++ break;
++ case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
++ params[0] = ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name;
++ break;
++ case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
++ params[0] = ctx->Array.ArrayObj->FogCoord.BufferObj->Name;
++ break;
++ case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
++ CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
++ params[0] = ctx->Array.ElementArrayBufferObj->Name;
++ break;
++ case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
++ CHECK_EXT1(EXT_pixel_buffer_object, "GetIntegerv");
++ params[0] = ctx->Pack.BufferObj->Name;
++ break;
++ case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
++ CHECK_EXT1(EXT_pixel_buffer_object, "GetIntegerv");
++ params[0] = ctx->Unpack.BufferObj->Name;
++ break;
++ case GL_VERTEX_PROGRAM_ARB:
++ CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.Enabled);
++ break;
++ case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
++ CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.PointSizeEnabled);
++ break;
++ case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
++ CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.TwoSideEnabled);
++ break;
++ case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
++ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv");
++ params[0] = ctx->Const.MaxProgramMatrixStackDepth;
++ break;
++ case GL_MAX_PROGRAM_MATRICES_ARB:
++ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv");
++ params[0] = ctx->Const.MaxProgramMatrices;
++ break;
++ case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
++ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->CurrentStack->Depth + 1);
++ break;
++ case GL_CURRENT_MATRIX_ARB:
++ CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetIntegerv");
++ {
++ const GLfloat *matrix = ctx->CurrentStack->Top->m;
++ params[0] = IROUND(matrix[0]);
++ params[1] = IROUND(matrix[1]);
++ params[2] = IROUND(matrix[2]);
++ params[3] = IROUND(matrix[3]);
++ params[4] = IROUND(matrix[4]);
++ params[5] = IROUND(matrix[5]);
++ params[6] = IROUND(matrix[6]);
++ params[7] = IROUND(matrix[7]);
++ params[8] = IROUND(matrix[8]);
++ params[9] = IROUND(matrix[9]);
++ params[10] = IROUND(matrix[10]);
++ params[11] = IROUND(matrix[11]);
++ params[12] = IROUND(matrix[12]);
++ params[13] = IROUND(matrix[13]);
++ params[14] = IROUND(matrix[14]);
++ params[15] = IROUND(matrix[15]);
++ }
++ break;
++ case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
++ CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetIntegerv");
++ {
++ const GLfloat *matrix = ctx->CurrentStack->Top->m;
++ params[0] = IROUND(matrix[0]);
++ params[1] = IROUND(matrix[4]);
++ params[2] = IROUND(matrix[8]);
++ params[3] = IROUND(matrix[12]);
++ params[4] = IROUND(matrix[1]);
++ params[5] = IROUND(matrix[5]);
++ params[6] = IROUND(matrix[9]);
++ params[7] = IROUND(matrix[13]);
++ params[8] = IROUND(matrix[2]);
++ params[9] = IROUND(matrix[6]);
++ params[10] = IROUND(matrix[10]);
++ params[11] = IROUND(matrix[14]);
++ params[12] = IROUND(matrix[3]);
++ params[13] = IROUND(matrix[7]);
++ params[14] = IROUND(matrix[11]);
++ params[15] = IROUND(matrix[15]);
++ }
++ break;
++ case GL_MAX_VERTEX_ATTRIBS_ARB:
++ CHECK_EXT1(ARB_vertex_program, "GetIntegerv");
++ params[0] = ctx->Const.VertexProgram.MaxAttribs;
++ break;
++ case GL_PROGRAM_ERROR_POSITION_ARB:
++ CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetIntegerv");
++ params[0] = ctx->Program.ErrorPos;
++ break;
++ case GL_FRAGMENT_PROGRAM_ARB:
++ CHECK_EXT1(ARB_fragment_program, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled);
++ break;
++ case GL_MAX_TEXTURE_COORDS_ARB:
++ CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetIntegerv");
++ params[0] = ctx->Const.MaxTextureCoordUnits;
++ break;
++ case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
++ CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetIntegerv");
++ params[0] = ctx->Const.MaxTextureImageUnits;
++ break;
++ case GL_DEPTH_BOUNDS_TEST_EXT:
++ CHECK_EXT1(EXT_depth_bounds_test, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->Depth.BoundsTest);
++ break;
++ case GL_DEPTH_BOUNDS_EXT:
++ CHECK_EXT1(EXT_depth_bounds_test, "GetIntegerv");
++ params[0] = IROUND(ctx->Depth.BoundsMin);
++ params[1] = IROUND(ctx->Depth.BoundsMax);
++ break;
++ case GL_FRAGMENT_PROGRAM_CALLBACK_MESA:
++ CHECK_EXT1(MESA_program_debug, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.CallbackEnabled);
++ break;
++ case GL_VERTEX_PROGRAM_CALLBACK_MESA:
++ CHECK_EXT1(MESA_program_debug, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.CallbackEnabled);
++ break;
++ case GL_FRAGMENT_PROGRAM_POSITION_MESA:
++ CHECK_EXT1(MESA_program_debug, "GetIntegerv");
++ params[0] = ctx->FragmentProgram.CurrentPosition;
++ break;
++ case GL_VERTEX_PROGRAM_POSITION_MESA:
++ CHECK_EXT1(MESA_program_debug, "GetIntegerv");
++ params[0] = ctx->VertexProgram.CurrentPosition;
++ break;
++ case GL_MAX_DRAW_BUFFERS_ARB:
++ CHECK_EXT1(ARB_draw_buffers, "GetIntegerv");
++ params[0] = ctx->Const.MaxDrawBuffers;
++ break;
++ case GL_DRAW_BUFFER0_ARB:
++ CHECK_EXT1(ARB_draw_buffers, "GetIntegerv");
++ params[0] = ENUM_TO_INT(ctx->DrawBuffer->ColorDrawBuffer[0]);
++ break;
++ case GL_DRAW_BUFFER1_ARB:
++ CHECK_EXT1(ARB_draw_buffers, "GetIntegerv");
++ {
++ GLenum buffer;
++ if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
++ _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
++ return;
++ }
++ buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
++ params[0] = ENUM_TO_INT(buffer);
++ }
++ break;
++ case GL_DRAW_BUFFER2_ARB:
++ CHECK_EXT1(ARB_draw_buffers, "GetIntegerv");
++ {
++ GLenum buffer;
++ if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
++ _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
++ return;
++ }
++ buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
++ params[0] = ENUM_TO_INT(buffer);
++ }
++ break;
++ case GL_DRAW_BUFFER3_ARB:
++ CHECK_EXT1(ARB_draw_buffers, "GetIntegerv");
++ {
++ GLenum buffer;
++ if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
++ _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
++ return;
++ }
++ buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
++ params[0] = ENUM_TO_INT(buffer);
++ }
++ break;
++ case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
++ CHECK_EXT1(OES_read_format, "GetIntegerv");
++ params[0] = ctx->Const.ColorReadType;
++ break;
++ case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
++ CHECK_EXT1(OES_read_format, "GetIntegerv");
++ params[0] = ctx->Const.ColorReadFormat;
++ break;
++ case GL_NUM_FRAGMENT_REGISTERS_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
++ params[0] = 6;
++ break;
++ case GL_NUM_FRAGMENT_CONSTANTS_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
++ params[0] = 8;
++ break;
++ case GL_NUM_PASSES_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
++ params[0] = 2;
++ break;
++ case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
++ params[0] = 8;
++ break;
++ case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
++ params[0] = 16;
++ break;
++ case GL_COLOR_ALPHA_PAIRING_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
++ params[0] = BOOLEAN_TO_INT(GL_TRUE);
++ break;
++ case GL_NUM_LOOPBACK_COMPONENTS_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
++ params[0] = 3;
++ break;
++ case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
++ CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
++ params[0] = 3;
++ break;
++ case GL_STENCIL_BACK_FUNC:
++ params[0] = ENUM_TO_INT(ctx->Stencil.Function[1]);
++ break;
++ case GL_STENCIL_BACK_VALUE_MASK:
++ params[0] = ctx->Stencil.ValueMask[1];
++ break;
++ case GL_STENCIL_BACK_REF:
++ params[0] = ctx->Stencil.Ref[1];
++ break;
++ case GL_STENCIL_BACK_FAIL:
++ params[0] = ENUM_TO_INT(ctx->Stencil.FailFunc[1]);
++ break;
++ case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
++ params[0] = ENUM_TO_INT(ctx->Stencil.ZFailFunc[1]);
++ break;
++ case GL_STENCIL_BACK_PASS_DEPTH_PASS:
++ params[0] = ENUM_TO_INT(ctx->Stencil.ZPassFunc[1]);
++ break;
++ case GL_FRAMEBUFFER_BINDING_EXT:
++ CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
++ params[0] = ctx->DrawBuffer->Name;
++ break;
++ case GL_RENDERBUFFER_BINDING_EXT:
++ CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
++ params[0] = ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0;
++ break;
++ case GL_MAX_COLOR_ATTACHMENTS_EXT:
++ CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
++ params[0] = ctx->Const.MaxColorAttachments;
++ break;
++ case GL_MAX_RENDERBUFFER_SIZE_EXT:
++ CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
++ params[0] = ctx->Const.MaxRenderbufferSize;
++ break;
++ case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
++ CHECK_EXT1(ARB_fragment_shader, "GetIntegerv");
++ params[0] = MAX_FRAGMENT_UNIFORM_COMPONENTS;
++ break;
++ case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
++ CHECK_EXT1(ARB_fragment_shader, "GetIntegerv");
++ params[0] = ENUM_TO_INT(ctx->Hint.FragmentShaderDerivative);
++ break;
++ case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
++ CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
++ params[0] = MAX_VERTEX_UNIFORM_COMPONENTS;
++ break;
++ case GL_MAX_VARYING_FLOATS_ARB:
++ CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
++ params[0] = MAX_VARYING_FLOATS;
++ break;
++ case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
++ CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
++ params[0] = MAX_VERTEX_TEXTURE_IMAGE_UNITS;
++ break;
++ case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
++ CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
++ params[0] = MAX_COMBINED_TEXTURE_IMAGE_UNITS;
++ break;
++ default:
++ _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv(pname=0x%x)", pname);
++ }
++}
++
++
++void GLAPIENTRY
++_mesa_GetDoublev( GLenum pname, GLdouble *params )
++{
++ const GLfloat magic = -1234.5F;
++ GLfloat values[16];
++ GLuint i;
++
++ if (!params)
++ return;
++
++ /* Init temp array to magic numbers so we can figure out how many values
++ * are returned by the GetFloatv() call.
++ */
++ for (i = 0; i < 16; i++)
++ values[i] = magic;
++
++ _mesa_GetFloatv(pname, values);
++
++ for (i = 0; i < 16 && values[i] != magic; i++)
++ params[i] = (GLdouble) values[i];
++}
++
+Index: qemu-0.13.0/target-i386/mesa_gl.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-i386/mesa_gl.h 2011-01-17 16:42:36.000000000 +0800
+@@ -0,0 +1,2251 @@
++/*
++ * Mesa 3-D graphics library
++ * Version: 6.5.1
++ *
++ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
++ *
++ * 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
++ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
++ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
++ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++ */
++
++
++#ifndef __gl_h_
++#define __gl_h_
++
++#if defined(USE_MGL_NAMESPACE)
++#include "gl_mangle.h"
++#endif
++
++
++/**********************************************************************
++ * Begin system-specific stuff. Do not do any of this when building
++ * for SciTech SNAP, as this is all done before this header file is
++ * included.
++ */
++#if !defined(__SCITECH_SNAP__)
++
++#if defined(__BEOS__)
++#include <stdlib.h> /* to get some BeOS-isms */
++#endif
++
++#if !defined(OPENSTEP) && (defined(NeXT) || defined(NeXT_PDO))
++#define OPENSTEP
++#endif
++
++#if defined(_WIN32) && !defined(__WIN32__) && !defined(__CYGWIN__)
++#define __WIN32__
++#endif
++
++#if !defined(OPENSTEP) && (defined(__WIN32__) && !defined(__CYGWIN__))
++# if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */
++# define GLAPI __declspec(dllexport)
++# elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
++# define GLAPI __declspec(dllimport)
++# else /* for use with static link lib build of Win32 edition only */
++# define GLAPI extern
++# endif /* _STATIC_MESA support */
++# define GLAPIENTRY __stdcall
++#elif defined(__CYGWIN__) && defined(USE_OPENGL32) /* use native windows opengl32 */
++# define GLAPI extern
++# define GLAPIENTRY __stdcall
++#elif defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 303
++# define GLAPI __attribute__((visibility("default")))
++# define GLAPIENTRY
++#endif /* WIN32 && !CYGWIN */
++
++#if (defined(__BEOS__) && defined(__POWERPC__)) || defined(__QUICKDRAW__)
++# define PRAGMA_EXPORT_SUPPORTED 1
++#endif
++
++/*
++ * WINDOWS: Include windows.h here to define APIENTRY.
++ * It is also useful when applications include this file by
++ * including only glut.h, since glut.h depends on windows.h.
++ * Applications needing to include windows.h with parms other
++ * than "WIN32_LEAN_AND_MEAN" may include windows.h before
++ * glut.h or gl.h.
++ */
++#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__)
++#define WIN32_LEAN_AND_MEAN 1
++#include <windows.h>
++#endif
++
++#if defined(_WIN32) && !defined(_WINGDI_) && !defined(_GNU_H_WINDOWS32_DEFINES) && !defined(OPENSTEP) && !defined(__CYGWIN__)
++#include <GL/mesa_wgl.h>
++#endif
++
++#if defined(macintosh) && PRAGMA_IMPORT_SUPPORTED
++#pragma import on
++#endif
++
++#ifndef GLAPI
++#define GLAPI extern
++#endif
++
++#ifndef GLAPIENTRY
++#define GLAPIENTRY
++#endif
++
++#ifndef APIENTRY
++#define APIENTRY GLAPIENTRY
++#endif
++
++/* "P" suffix to be used for a pointer to a function */
++#ifndef APIENTRYP
++#define APIENTRYP APIENTRY *
++#endif
++
++#ifndef GLAPIENTRYP
++#define GLAPIENTRYP GLAPIENTRY *
++#endif
++
++#ifdef CENTERLINE_CLPP
++#define signed
++#endif
++
++#if defined(PRAGMA_EXPORT_SUPPORTED)
++#pragma export on
++#endif
++
++#endif /* !__SCITECH_SNAP__ */
++/*
++ * End system-specific stuff.
++ **********************************************************************/
++
++
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++
++
++#define GL_VERSION_1_1 1
++#define GL_VERSION_1_2 1
++#define GL_VERSION_1_3 1
++#define GL_ARB_imaging 1
++
++
++/*
++ * Datatypes
++ */
++typedef unsigned int GLenum;
++typedef unsigned char GLboolean;
++typedef unsigned int GLbitfield;
++typedef void GLvoid;
++typedef signed char GLbyte; /* 1-byte signed */
++typedef short GLshort; /* 2-byte signed */
++typedef int GLint; /* 4-byte signed */
++typedef unsigned char GLubyte; /* 1-byte unsigned */
++typedef unsigned short GLushort; /* 2-byte unsigned */
++typedef unsigned int GLuint; /* 4-byte unsigned */
++typedef int GLsizei; /* 4-byte signed */
++typedef float GLfloat; /* single precision float */
++typedef float GLclampf; /* single precision float in [0,1] */
++typedef double GLdouble; /* double precision float */
++typedef double GLclampd; /* double precision float in [0,1] */
++
++
++
++/*
++ * Constants
++ */
++
++/* Boolean values */
++#define GL_FALSE 0x0
++#define GL_TRUE 0x1
++
++/* Data types */
++#define GL_BYTE 0x1400
++#define GL_UNSIGNED_BYTE 0x1401
++#define GL_SHORT 0x1402
++#define GL_UNSIGNED_SHORT 0x1403
++#define GL_INT 0x1404
++#define GL_UNSIGNED_INT 0x1405
++#define GL_FLOAT 0x1406
++#define GL_2_BYTES 0x1407
++#define GL_3_BYTES 0x1408
++#define GL_4_BYTES 0x1409
++#define GL_DOUBLE 0x140A
++
++/* Primitives */
++#define GL_POINTS 0x0000
++#define GL_LINES 0x0001
++#define GL_LINE_LOOP 0x0002
++#define GL_LINE_STRIP 0x0003
++#define GL_TRIANGLES 0x0004
++#define GL_TRIANGLE_STRIP 0x0005
++#define GL_TRIANGLE_FAN 0x0006
++#define GL_QUADS 0x0007
++#define GL_QUAD_STRIP 0x0008
++#define GL_POLYGON 0x0009
++
++/* Vertex Arrays */
++#define GL_VERTEX_ARRAY 0x8074
++#define GL_NORMAL_ARRAY 0x8075
++#define GL_COLOR_ARRAY 0x8076
++#define GL_INDEX_ARRAY 0x8077
++#define GL_TEXTURE_COORD_ARRAY 0x8078
++#define GL_EDGE_FLAG_ARRAY 0x8079
++#define GL_VERTEX_ARRAY_SIZE 0x807A
++#define GL_VERTEX_ARRAY_TYPE 0x807B
++#define GL_VERTEX_ARRAY_STRIDE 0x807C
++#define GL_NORMAL_ARRAY_TYPE 0x807E
++#define GL_NORMAL_ARRAY_STRIDE 0x807F
++#define GL_COLOR_ARRAY_SIZE 0x8081
++#define GL_COLOR_ARRAY_TYPE 0x8082
++#define GL_COLOR_ARRAY_STRIDE 0x8083
++#define GL_INDEX_ARRAY_TYPE 0x8085
++#define GL_INDEX_ARRAY_STRIDE 0x8086
++#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088
++#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089
++#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A
++#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C
++#define GL_VERTEX_ARRAY_POINTER 0x808E
++#define GL_NORMAL_ARRAY_POINTER 0x808F
++#define GL_COLOR_ARRAY_POINTER 0x8090
++#define GL_INDEX_ARRAY_POINTER 0x8091
++#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092
++#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093
++#define GL_V2F 0x2A20
++#define GL_V3F 0x2A21
++#define GL_C4UB_V2F 0x2A22
++#define GL_C4UB_V3F 0x2A23
++#define GL_C3F_V3F 0x2A24
++#define GL_N3F_V3F 0x2A25
++#define GL_C4F_N3F_V3F 0x2A26
++#define GL_T2F_V3F 0x2A27
++#define GL_T4F_V4F 0x2A28
++#define GL_T2F_C4UB_V3F 0x2A29
++#define GL_T2F_C3F_V3F 0x2A2A
++#define GL_T2F_N3F_V3F 0x2A2B
++#define GL_T2F_C4F_N3F_V3F 0x2A2C
++#define GL_T4F_C4F_N3F_V4F 0x2A2D
++
++/* Matrix Mode */
++#define GL_MATRIX_MODE 0x0BA0
++#define GL_MODELVIEW 0x1700
++#define GL_PROJECTION 0x1701
++#define GL_TEXTURE 0x1702
++
++/* Points */
++#define GL_POINT_SMOOTH 0x0B10
++#define GL_POINT_SIZE 0x0B11
++#define GL_POINT_SIZE_GRANULARITY 0x0B13
++#define GL_POINT_SIZE_RANGE 0x0B12
++
++/* Lines */
++#define GL_LINE_SMOOTH 0x0B20
++#define GL_LINE_STIPPLE 0x0B24
++#define GL_LINE_STIPPLE_PATTERN 0x0B25
++#define GL_LINE_STIPPLE_REPEAT 0x0B26
++#define GL_LINE_WIDTH 0x0B21
++#define GL_LINE_WIDTH_GRANULARITY 0x0B23
++#define GL_LINE_WIDTH_RANGE 0x0B22
++
++/* Polygons */
++#define GL_POINT 0x1B00
++#define GL_LINE 0x1B01
++#define GL_FILL 0x1B02
++#define GL_CW 0x0900
++#define GL_CCW 0x0901
++#define GL_FRONT 0x0404
++#define GL_BACK 0x0405
++#define GL_POLYGON_MODE 0x0B40
++#define GL_POLYGON_SMOOTH 0x0B41
++#define GL_POLYGON_STIPPLE 0x0B42
++#define GL_EDGE_FLAG 0x0B43
++#define GL_CULL_FACE 0x0B44
++#define GL_CULL_FACE_MODE 0x0B45
++#define GL_FRONT_FACE 0x0B46
++#define GL_POLYGON_OFFSET_FACTOR 0x8038
++#define GL_POLYGON_OFFSET_UNITS 0x2A00
++#define GL_POLYGON_OFFSET_POINT 0x2A01
++#define GL_POLYGON_OFFSET_LINE 0x2A02
++#define GL_POLYGON_OFFSET_FILL 0x8037
++
++/* Display Lists */
++#define GL_COMPILE 0x1300
++#define GL_COMPILE_AND_EXECUTE 0x1301
++#define GL_LIST_BASE 0x0B32
++#define GL_LIST_INDEX 0x0B33
++#define GL_LIST_MODE 0x0B30
++
++/* Depth buffer */
++#define GL_NEVER 0x0200
++#define GL_LESS 0x0201
++#define GL_EQUAL 0x0202
++#define GL_LEQUAL 0x0203
++#define GL_GREATER 0x0204
++#define GL_NOTEQUAL 0x0205
++#define GL_GEQUAL 0x0206
++#define GL_ALWAYS 0x0207
++#define GL_DEPTH_TEST 0x0B71
++#define GL_DEPTH_BITS 0x0D56
++#define GL_DEPTH_CLEAR_VALUE 0x0B73
++#define GL_DEPTH_FUNC 0x0B74
++#define GL_DEPTH_RANGE 0x0B70
++#define GL_DEPTH_WRITEMASK 0x0B72
++#define GL_DEPTH_COMPONENT 0x1902
++
++/* Lighting */
++#define GL_LIGHTING 0x0B50
++#define GL_LIGHT0 0x4000
++#define GL_LIGHT1 0x4001
++#define GL_LIGHT2 0x4002
++#define GL_LIGHT3 0x4003
++#define GL_LIGHT4 0x4004
++#define GL_LIGHT5 0x4005
++#define GL_LIGHT6 0x4006
++#define GL_LIGHT7 0x4007
++#define GL_SPOT_EXPONENT 0x1205
++#define GL_SPOT_CUTOFF 0x1206
++#define GL_CONSTANT_ATTENUATION 0x1207
++#define GL_LINEAR_ATTENUATION 0x1208
++#define GL_QUADRATIC_ATTENUATION 0x1209
++#define GL_AMBIENT 0x1200
++#define GL_DIFFUSE 0x1201
++#define GL_SPECULAR 0x1202
++#define GL_SHININESS 0x1601
++#define GL_EMISSION 0x1600
++#define GL_POSITION 0x1203
++#define GL_SPOT_DIRECTION 0x1204
++#define GL_AMBIENT_AND_DIFFUSE 0x1602
++#define GL_COLOR_INDEXES 0x1603
++#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52
++#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51
++#define GL_LIGHT_MODEL_AMBIENT 0x0B53
++#define GL_FRONT_AND_BACK 0x0408
++#define GL_SHADE_MODEL 0x0B54
++#define GL_FLAT 0x1D00
++#define GL_SMOOTH 0x1D01
++#define GL_COLOR_MATERIAL 0x0B57
++#define GL_COLOR_MATERIAL_FACE 0x0B55
++#define GL_COLOR_MATERIAL_PARAMETER 0x0B56
++#define GL_NORMALIZE 0x0BA1
++
++/* User clipping planes */
++#define GL_CLIP_PLANE0 0x3000
++#define GL_CLIP_PLANE1 0x3001
++#define GL_CLIP_PLANE2 0x3002
++#define GL_CLIP_PLANE3 0x3003
++#define GL_CLIP_PLANE4 0x3004
++#define GL_CLIP_PLANE5 0x3005
++
++/* Accumulation buffer */
++#define GL_ACCUM_RED_BITS 0x0D58
++#define GL_ACCUM_GREEN_BITS 0x0D59
++#define GL_ACCUM_BLUE_BITS 0x0D5A
++#define GL_ACCUM_ALPHA_BITS 0x0D5B
++#define GL_ACCUM_CLEAR_VALUE 0x0B80
++#define GL_ACCUM 0x0100
++#define GL_ADD 0x0104
++#define GL_LOAD 0x0101
++#define GL_MULT 0x0103
++#define GL_RETURN 0x0102
++
++/* Alpha testing */
++#define GL_ALPHA_TEST 0x0BC0
++#define GL_ALPHA_TEST_REF 0x0BC2
++#define GL_ALPHA_TEST_FUNC 0x0BC1
++
++/* Blending */
++#define GL_BLEND 0x0BE2
++#define GL_BLEND_SRC 0x0BE1
++#define GL_BLEND_DST 0x0BE0
++#define GL_ZERO 0x0
++#define GL_ONE 0x1
++#define GL_SRC_COLOR 0x0300
++#define GL_ONE_MINUS_SRC_COLOR 0x0301
++#define GL_SRC_ALPHA 0x0302
++#define GL_ONE_MINUS_SRC_ALPHA 0x0303
++#define GL_DST_ALPHA 0x0304
++#define GL_ONE_MINUS_DST_ALPHA 0x0305
++#define GL_DST_COLOR 0x0306
++#define GL_ONE_MINUS_DST_COLOR 0x0307
++#define GL_SRC_ALPHA_SATURATE 0x0308
++
++/* Render Mode */
++#define GL_FEEDBACK 0x1C01
++#define GL_RENDER 0x1C00
++#define GL_SELECT 0x1C02
++
++/* Feedback */
++#define GL_2D 0x0600
++#define GL_3D 0x0601
++#define GL_3D_COLOR 0x0602
++#define GL_3D_COLOR_TEXTURE 0x0603
++#define GL_4D_COLOR_TEXTURE 0x0604
++#define GL_POINT_TOKEN 0x0701
++#define GL_LINE_TOKEN 0x0702
++#define GL_LINE_RESET_TOKEN 0x0707
++#define GL_POLYGON_TOKEN 0x0703
++#define GL_BITMAP_TOKEN 0x0704
++#define GL_DRAW_PIXEL_TOKEN 0x0705
++#define GL_COPY_PIXEL_TOKEN 0x0706
++#define GL_PASS_THROUGH_TOKEN 0x0700
++#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0
++#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1
++#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2
++
++/* Selection */
++#define GL_SELECTION_BUFFER_POINTER 0x0DF3
++#define GL_SELECTION_BUFFER_SIZE 0x0DF4
++
++/* Fog */
++#define GL_FOG 0x0B60
++#define GL_FOG_MODE 0x0B65
++#define GL_FOG_DENSITY 0x0B62
++#define GL_FOG_COLOR 0x0B66
++#define GL_FOG_INDEX 0x0B61
++#define GL_FOG_START 0x0B63
++#define GL_FOG_END 0x0B64
++#define GL_LINEAR 0x2601
++#define GL_EXP 0x0800
++#define GL_EXP2 0x0801
++
++/* Logic Ops */
++#define GL_LOGIC_OP 0x0BF1
++#define GL_INDEX_LOGIC_OP 0x0BF1
++#define GL_COLOR_LOGIC_OP 0x0BF2
++#define GL_LOGIC_OP_MODE 0x0BF0
++#define GL_CLEAR 0x1500
++#define GL_SET 0x150F
++#define GL_COPY 0x1503
++#define GL_COPY_INVERTED 0x150C
++#define GL_NOOP 0x1505
++#define GL_INVERT 0x150A
++#define GL_AND 0x1501
++#define GL_NAND 0x150E
++#define GL_OR 0x1507
++#define GL_NOR 0x1508
++#define GL_XOR 0x1506
++#define GL_EQUIV 0x1509
++#define GL_AND_REVERSE 0x1502
++#define GL_AND_INVERTED 0x1504
++#define GL_OR_REVERSE 0x150B
++#define GL_OR_INVERTED 0x150D
++
++/* Stencil */
++#define GL_STENCIL_BITS 0x0D57
++#define GL_STENCIL_TEST 0x0B90
++#define GL_STENCIL_CLEAR_VALUE 0x0B91
++#define GL_STENCIL_FUNC 0x0B92
++#define GL_STENCIL_VALUE_MASK 0x0B93
++#define GL_STENCIL_FAIL 0x0B94
++#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
++#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96
++#define GL_STENCIL_REF 0x0B97
++#define GL_STENCIL_WRITEMASK 0x0B98
++#define GL_STENCIL_INDEX 0x1901
++#define GL_KEEP 0x1E00
++#define GL_REPLACE 0x1E01
++#define GL_INCR 0x1E02
++#define GL_DECR 0x1E03
++
++/* Buffers, Pixel Drawing/Reading */
++#define GL_NONE 0x0
++#define GL_LEFT 0x0406
++#define GL_RIGHT 0x0407
++/*GL_FRONT 0x0404 */
++/*GL_BACK 0x0405 */
++/*GL_FRONT_AND_BACK 0x0408 */
++#define GL_FRONT_LEFT 0x0400
++#define GL_FRONT_RIGHT 0x0401
++#define GL_BACK_LEFT 0x0402
++#define GL_BACK_RIGHT 0x0403
++#define GL_AUX0 0x0409
++#define GL_AUX1 0x040A
++#define GL_AUX2 0x040B
++#define GL_AUX3 0x040C
++#define GL_COLOR_INDEX 0x1900
++#define GL_RED 0x1903
++#define GL_GREEN 0x1904
++#define GL_BLUE 0x1905
++#define GL_ALPHA 0x1906
++#define GL_LUMINANCE 0x1909
++#define GL_LUMINANCE_ALPHA 0x190A
++#define GL_ALPHA_BITS 0x0D55
++#define GL_RED_BITS 0x0D52
++#define GL_GREEN_BITS 0x0D53
++#define GL_BLUE_BITS 0x0D54
++#define GL_INDEX_BITS 0x0D51
++#define GL_SUBPIXEL_BITS 0x0D50
++#define GL_AUX_BUFFERS 0x0C00
++#define GL_READ_BUFFER 0x0C02
++#define GL_DRAW_BUFFER 0x0C01
++#define GL_DOUBLEBUFFER 0x0C32
++#define GL_STEREO 0x0C33
++#define GL_BITMAP 0x1A00
++#define GL_COLOR 0x1800
++#define GL_DEPTH 0x1801
++#define GL_STENCIL 0x1802
++#define GL_DITHER 0x0BD0
++#define GL_RGB 0x1907
++#define GL_RGBA 0x1908
++
++/* Implementation limits */
++#define GL_MAX_LIST_NESTING 0x0B31
++#define GL_MAX_EVAL_ORDER 0x0D30
++#define GL_MAX_LIGHTS 0x0D31
++#define GL_MAX_CLIP_PLANES 0x0D32
++#define GL_MAX_TEXTURE_SIZE 0x0D33
++#define GL_MAX_PIXEL_MAP_TABLE 0x0D34
++#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35
++#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36
++#define GL_MAX_NAME_STACK_DEPTH 0x0D37
++#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38
++#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39
++#define GL_MAX_VIEWPORT_DIMS 0x0D3A
++#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B
++
++/* Gets */
++#define GL_ATTRIB_STACK_DEPTH 0x0BB0
++#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1
++#define GL_COLOR_CLEAR_VALUE 0x0C22
++#define GL_COLOR_WRITEMASK 0x0C23
++#define GL_CURRENT_INDEX 0x0B01
++#define GL_CURRENT_COLOR 0x0B00
++#define GL_CURRENT_NORMAL 0x0B02
++#define GL_CURRENT_RASTER_COLOR 0x0B04
++#define GL_CURRENT_RASTER_DISTANCE 0x0B09
++#define GL_CURRENT_RASTER_INDEX 0x0B05
++#define GL_CURRENT_RASTER_POSITION 0x0B07
++#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06
++#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08
++#define GL_CURRENT_TEXTURE_COORDS 0x0B03
++#define GL_INDEX_CLEAR_VALUE 0x0C20
++#define GL_INDEX_MODE 0x0C30
++#define GL_INDEX_WRITEMASK 0x0C21
++#define GL_MODELVIEW_MATRIX 0x0BA6
++#define GL_MODELVIEW_STACK_DEPTH 0x0BA3
++#define GL_NAME_STACK_DEPTH 0x0D70
++#define GL_PROJECTION_MATRIX 0x0BA7
++#define GL_PROJECTION_STACK_DEPTH 0x0BA4
++#define GL_RENDER_MODE 0x0C40
++#define GL_RGBA_MODE 0x0C31
++#define GL_TEXTURE_MATRIX 0x0BA8
++#define GL_TEXTURE_STACK_DEPTH 0x0BA5
++#define GL_VIEWPORT 0x0BA2
++
++/* Evaluators */
++#define GL_AUTO_NORMAL 0x0D80
++#define GL_MAP1_COLOR_4 0x0D90
++#define GL_MAP1_INDEX 0x0D91
++#define GL_MAP1_NORMAL 0x0D92
++#define GL_MAP1_TEXTURE_COORD_1 0x0D93
++#define GL_MAP1_TEXTURE_COORD_2 0x0D94
++#define GL_MAP1_TEXTURE_COORD_3 0x0D95
++#define GL_MAP1_TEXTURE_COORD_4 0x0D96
++#define GL_MAP1_VERTEX_3 0x0D97
++#define GL_MAP1_VERTEX_4 0x0D98
++#define GL_MAP2_COLOR_4 0x0DB0
++#define GL_MAP2_INDEX 0x0DB1
++#define GL_MAP2_NORMAL 0x0DB2
++#define GL_MAP2_TEXTURE_COORD_1 0x0DB3
++#define GL_MAP2_TEXTURE_COORD_2 0x0DB4
++#define GL_MAP2_TEXTURE_COORD_3 0x0DB5
++#define GL_MAP2_TEXTURE_COORD_4 0x0DB6
++#define GL_MAP2_VERTEX_3 0x0DB7
++#define GL_MAP2_VERTEX_4 0x0DB8
++#define GL_MAP1_GRID_DOMAIN 0x0DD0
++#define GL_MAP1_GRID_SEGMENTS 0x0DD1
++#define GL_MAP2_GRID_DOMAIN 0x0DD2
++#define GL_MAP2_GRID_SEGMENTS 0x0DD3
++#define GL_COEFF 0x0A00
++#define GL_ORDER 0x0A01
++#define GL_DOMAIN 0x0A02
++
++/* Hints */
++#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50
++#define GL_POINT_SMOOTH_HINT 0x0C51
++#define GL_LINE_SMOOTH_HINT 0x0C52
++#define GL_POLYGON_SMOOTH_HINT 0x0C53
++#define GL_FOG_HINT 0x0C54
++#define GL_DONT_CARE 0x1100
++#define GL_FASTEST 0x1101
++#define GL_NICEST 0x1102
++
++/* Scissor box */
++#define GL_SCISSOR_BOX 0x0C10
++#define GL_SCISSOR_TEST 0x0C11
++
++/* Pixel Mode / Transfer */
++#define GL_MAP_COLOR 0x0D10
++#define GL_MAP_STENCIL 0x0D11
++#define GL_INDEX_SHIFT 0x0D12
++#define GL_INDEX_OFFSET 0x0D13
++#define GL_RED_SCALE 0x0D14
++#define GL_RED_BIAS 0x0D15
++#define GL_GREEN_SCALE 0x0D18
++#define GL_GREEN_BIAS 0x0D19
++#define GL_BLUE_SCALE 0x0D1A
++#define GL_BLUE_BIAS 0x0D1B
++#define GL_ALPHA_SCALE 0x0D1C
++#define GL_ALPHA_BIAS 0x0D1D
++#define GL_DEPTH_SCALE 0x0D1E
++#define GL_DEPTH_BIAS 0x0D1F
++#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1
++#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0
++#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2
++#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3
++#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4
++#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5
++#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6
++#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7
++#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8
++#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9
++#define GL_PIXEL_MAP_S_TO_S 0x0C71
++#define GL_PIXEL_MAP_I_TO_I 0x0C70
++#define GL_PIXEL_MAP_I_TO_R 0x0C72
++#define GL_PIXEL_MAP_I_TO_G 0x0C73
++#define GL_PIXEL_MAP_I_TO_B 0x0C74
++#define GL_PIXEL_MAP_I_TO_A 0x0C75
++#define GL_PIXEL_MAP_R_TO_R 0x0C76
++#define GL_PIXEL_MAP_G_TO_G 0x0C77
++#define GL_PIXEL_MAP_B_TO_B 0x0C78
++#define GL_PIXEL_MAP_A_TO_A 0x0C79
++#define GL_PACK_ALIGNMENT 0x0D05
++#define GL_PACK_LSB_FIRST 0x0D01
++#define GL_PACK_ROW_LENGTH 0x0D02
++#define GL_PACK_SKIP_PIXELS 0x0D04
++#define GL_PACK_SKIP_ROWS 0x0D03
++#define GL_PACK_SWAP_BYTES 0x0D00
++#define GL_UNPACK_ALIGNMENT 0x0CF5
++#define GL_UNPACK_LSB_FIRST 0x0CF1
++#define GL_UNPACK_ROW_LENGTH 0x0CF2
++#define GL_UNPACK_SKIP_PIXELS 0x0CF4
++#define GL_UNPACK_SKIP_ROWS 0x0CF3
++#define GL_UNPACK_SWAP_BYTES 0x0CF0
++#define GL_ZOOM_X 0x0D16
++#define GL_ZOOM_Y 0x0D17
++
++/* Texture mapping */
++#define GL_TEXTURE_ENV 0x2300
++#define GL_TEXTURE_ENV_MODE 0x2200
++#define GL_TEXTURE_1D 0x0DE0
++#define GL_TEXTURE_2D 0x0DE1
++#define GL_TEXTURE_WRAP_S 0x2802
++#define GL_TEXTURE_WRAP_T 0x2803
++#define GL_TEXTURE_MAG_FILTER 0x2800
++#define GL_TEXTURE_MIN_FILTER 0x2801
++#define GL_TEXTURE_ENV_COLOR 0x2201
++#define GL_TEXTURE_GEN_S 0x0C60
++#define GL_TEXTURE_GEN_T 0x0C61
++#define GL_TEXTURE_GEN_MODE 0x2500
++#define GL_TEXTURE_BORDER_COLOR 0x1004
++#define GL_TEXTURE_WIDTH 0x1000
++#define GL_TEXTURE_HEIGHT 0x1001
++#define GL_TEXTURE_BORDER 0x1005
++#define GL_TEXTURE_COMPONENTS 0x1003
++#define GL_TEXTURE_RED_SIZE 0x805C
++#define GL_TEXTURE_GREEN_SIZE 0x805D
++#define GL_TEXTURE_BLUE_SIZE 0x805E
++#define GL_TEXTURE_ALPHA_SIZE 0x805F
++#define GL_TEXTURE_LUMINANCE_SIZE 0x8060
++#define GL_TEXTURE_INTENSITY_SIZE 0x8061
++#define GL_NEAREST_MIPMAP_NEAREST 0x2700
++#define GL_NEAREST_MIPMAP_LINEAR 0x2702
++#define GL_LINEAR_MIPMAP_NEAREST 0x2701
++#define GL_LINEAR_MIPMAP_LINEAR 0x2703
++#define GL_OBJECT_LINEAR 0x2401
++#define GL_OBJECT_PLANE 0x2501
++#define GL_EYE_LINEAR 0x2400
++#define GL_EYE_PLANE 0x2502
++#define GL_SPHERE_MAP 0x2402
++#define GL_DECAL 0x2101
++#define GL_MODULATE 0x2100
++#define GL_NEAREST 0x2600
++#define GL_REPEAT 0x2901
++#define GL_CLAMP 0x2900
++#define GL_S 0x2000
++#define GL_T 0x2001
++#define GL_R 0x2002
++#define GL_Q 0x2003
++#define GL_TEXTURE_GEN_R 0x0C62
++#define GL_TEXTURE_GEN_Q 0x0C63
++
++/* Utility */
++#define GL_VENDOR 0x1F00
++#define GL_RENDERER 0x1F01
++#define GL_VERSION 0x1F02
++#define GL_EXTENSIONS 0x1F03
++
++/* Errors */
++#define GL_NO_ERROR 0x0
++#define GL_INVALID_ENUM 0x0500
++#define GL_INVALID_VALUE 0x0501
++#define GL_INVALID_OPERATION 0x0502
++#define GL_STACK_OVERFLOW 0x0503
++#define GL_STACK_UNDERFLOW 0x0504
++#define GL_OUT_OF_MEMORY 0x0505
++
++/* glPush/PopAttrib bits */
++#define GL_CURRENT_BIT 0x00000001
++#define GL_POINT_BIT 0x00000002
++#define GL_LINE_BIT 0x00000004
++#define GL_POLYGON_BIT 0x00000008
++#define GL_POLYGON_STIPPLE_BIT 0x00000010
++#define GL_PIXEL_MODE_BIT 0x00000020
++#define GL_LIGHTING_BIT 0x00000040
++#define GL_FOG_BIT 0x00000080
++#define GL_DEPTH_BUFFER_BIT 0x00000100
++#define GL_ACCUM_BUFFER_BIT 0x00000200
++#define GL_STENCIL_BUFFER_BIT 0x00000400
++#define GL_VIEWPORT_BIT 0x00000800
++#define GL_TRANSFORM_BIT 0x00001000
++#define GL_ENABLE_BIT 0x00002000
++#define GL_COLOR_BUFFER_BIT 0x00004000
++#define GL_HINT_BIT 0x00008000
++#define GL_EVAL_BIT 0x00010000
++#define GL_LIST_BIT 0x00020000
++#define GL_TEXTURE_BIT 0x00040000
++#define GL_SCISSOR_BIT 0x00080000
++#define GL_ALL_ATTRIB_BITS 0x000FFFFF
++
++
++/* OpenGL 1.1 */
++#define GL_PROXY_TEXTURE_1D 0x8063
++#define GL_PROXY_TEXTURE_2D 0x8064
++#define GL_TEXTURE_PRIORITY 0x8066
++#define GL_TEXTURE_RESIDENT 0x8067
++#define GL_TEXTURE_BINDING_1D 0x8068
++#define GL_TEXTURE_BINDING_2D 0x8069
++#define GL_TEXTURE_INTERNAL_FORMAT 0x1003
++#define GL_ALPHA4 0x803B
++#define GL_ALPHA8 0x803C
++#define GL_ALPHA12 0x803D
++#define GL_ALPHA16 0x803E
++#define GL_LUMINANCE4 0x803F
++#define GL_LUMINANCE8 0x8040
++#define GL_LUMINANCE12 0x8041
++#define GL_LUMINANCE16 0x8042
++#define GL_LUMINANCE4_ALPHA4 0x8043
++#define GL_LUMINANCE6_ALPHA2 0x8044
++#define GL_LUMINANCE8_ALPHA8 0x8045
++#define GL_LUMINANCE12_ALPHA4 0x8046
++#define GL_LUMINANCE12_ALPHA12 0x8047
++#define GL_LUMINANCE16_ALPHA16 0x8048
++#define GL_INTENSITY 0x8049
++#define GL_INTENSITY4 0x804A
++#define GL_INTENSITY8 0x804B
++#define GL_INTENSITY12 0x804C
++#define GL_INTENSITY16 0x804D
++#define GL_R3_G3_B2 0x2A10
++#define GL_RGB4 0x804F
++#define GL_RGB5 0x8050
++#define GL_RGB8 0x8051
++#define GL_RGB10 0x8052
++#define GL_RGB12 0x8053
++#define GL_RGB16 0x8054
++#define GL_RGBA2 0x8055
++#define GL_RGBA4 0x8056
++#define GL_RGB5_A1 0x8057
++#define GL_RGBA8 0x8058
++#define GL_RGB10_A2 0x8059
++#define GL_RGBA12 0x805A
++#define GL_RGBA16 0x805B
++#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001
++#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002
++#define GL_ALL_CLIENT_ATTRIB_BITS 0xFFFFFFFF
++#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF
++
++
++
++/*
++ * Miscellaneous
++ */
++
++GLAPI void GLAPIENTRY glClearIndex( GLfloat c );
++
++GLAPI void GLAPIENTRY glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha );
++
++GLAPI void GLAPIENTRY glClear( GLbitfield mask );
++
++GLAPI void GLAPIENTRY glIndexMask( GLuint mask );
++
++GLAPI void GLAPIENTRY glColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha );
++
++GLAPI void GLAPIENTRY glAlphaFunc( GLenum func, GLclampf ref );
++
++GLAPI void GLAPIENTRY glBlendFunc( GLenum sfactor, GLenum dfactor );
++
++GLAPI void GLAPIENTRY glLogicOp( GLenum opcode );
++
++GLAPI void GLAPIENTRY glCullFace( GLenum mode );
++
++GLAPI void GLAPIENTRY glFrontFace( GLenum mode );
++
++GLAPI void GLAPIENTRY glPointSize( GLfloat size );
++
++GLAPI void GLAPIENTRY glLineWidth( GLfloat width );
++
++GLAPI void GLAPIENTRY glLineStipple( GLint factor, GLushort pattern );
++
++GLAPI void GLAPIENTRY glPolygonMode( GLenum face, GLenum mode );
++
++GLAPI void GLAPIENTRY glPolygonOffset( GLfloat factor, GLfloat units );
++
++GLAPI void GLAPIENTRY glPolygonStipple( const GLubyte *mask );
++
++GLAPI void GLAPIENTRY glGetPolygonStipple( GLubyte *mask );
++
++GLAPI void GLAPIENTRY glEdgeFlag( GLboolean flag );
++
++GLAPI void GLAPIENTRY glEdgeFlagv( const GLboolean *flag );
++
++GLAPI void GLAPIENTRY glScissor( GLint x, GLint y, GLsizei width, GLsizei height);
++
++GLAPI void GLAPIENTRY glClipPlane( GLenum plane, const GLdouble *equation );
++
++GLAPI void GLAPIENTRY glGetClipPlane( GLenum plane, GLdouble *equation );
++
++GLAPI void GLAPIENTRY glDrawBuffer( GLenum mode );
++
++GLAPI void GLAPIENTRY glReadBuffer( GLenum mode );
++
++GLAPI void GLAPIENTRY glEnable( GLenum cap );
++
++GLAPI void GLAPIENTRY glDisable( GLenum cap );
++
++GLAPI GLboolean GLAPIENTRY glIsEnabled( GLenum cap );
++
++
++GLAPI void GLAPIENTRY glEnableClientState( GLenum cap ); /* 1.1 */
++
++GLAPI void GLAPIENTRY glDisableClientState( GLenum cap ); /* 1.1 */
++
++
++GLAPI void GLAPIENTRY glGetBooleanv( GLenum pname, GLboolean *params );
++
++GLAPI void GLAPIENTRY glGetDoublev( GLenum pname, GLdouble *params );
++
++GLAPI void GLAPIENTRY glGetFloatv( GLenum pname, GLfloat *params );
++
++GLAPI void GLAPIENTRY glGetIntegerv( GLenum pname, GLint *params );
++
++
++GLAPI void GLAPIENTRY glPushAttrib( GLbitfield mask );
++
++GLAPI void GLAPIENTRY glPopAttrib( void );
++
++
++GLAPI void GLAPIENTRY glPushClientAttrib( GLbitfield mask ); /* 1.1 */
++
++GLAPI void GLAPIENTRY glPopClientAttrib( void ); /* 1.1 */
++
++
++GLAPI GLint GLAPIENTRY glRenderMode( GLenum mode );
++
++GLAPI GLenum GLAPIENTRY glGetError( void );
++
++GLAPI const GLubyte * GLAPIENTRY glGetString( GLenum name );
++
++GLAPI void GLAPIENTRY glFinish( void );
++
++GLAPI void GLAPIENTRY glFlush( void );
++
++GLAPI void GLAPIENTRY glHint( GLenum target, GLenum mode );
++
++
++/*
++ * Depth Buffer
++ */
++
++GLAPI void GLAPIENTRY glClearDepth( GLclampd depth );
++
++GLAPI void GLAPIENTRY glDepthFunc( GLenum func );
++
++GLAPI void GLAPIENTRY glDepthMask( GLboolean flag );
++
++GLAPI void GLAPIENTRY glDepthRange( GLclampd near_val, GLclampd far_val );
++
++
++/*
++ * Accumulation Buffer
++ */
++
++GLAPI void GLAPIENTRY glClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
++
++GLAPI void GLAPIENTRY glAccum( GLenum op, GLfloat value );
++
++
++/*
++ * Transformation
++ */
++
++GLAPI void GLAPIENTRY glMatrixMode( GLenum mode );
++
++GLAPI void GLAPIENTRY glOrtho( GLdouble left, GLdouble right,
++ GLdouble bottom, GLdouble top,
++ GLdouble near_val, GLdouble far_val );
++
++GLAPI void GLAPIENTRY glFrustum( GLdouble left, GLdouble right,
++ GLdouble bottom, GLdouble top,
++ GLdouble near_val, GLdouble far_val );
++
++GLAPI void GLAPIENTRY glViewport( GLint x, GLint y,
++ GLsizei width, GLsizei height );
++
++GLAPI void GLAPIENTRY glPushMatrix( void );
++
++GLAPI void GLAPIENTRY glPopMatrix( void );
++
++GLAPI void GLAPIENTRY glLoadIdentity( void );
++
++GLAPI void GLAPIENTRY glLoadMatrixd( const GLdouble *m );
++GLAPI void GLAPIENTRY glLoadMatrixf( const GLfloat *m );
++
++GLAPI void GLAPIENTRY glMultMatrixd( const GLdouble *m );
++GLAPI void GLAPIENTRY glMultMatrixf( const GLfloat *m );
++
++GLAPI void GLAPIENTRY glRotated( GLdouble angle,
++ GLdouble x, GLdouble y, GLdouble z );
++GLAPI void GLAPIENTRY glRotatef( GLfloat angle,
++ GLfloat x, GLfloat y, GLfloat z );
++
++GLAPI void GLAPIENTRY glScaled( GLdouble x, GLdouble y, GLdouble z );
++GLAPI void GLAPIENTRY glScalef( GLfloat x, GLfloat y, GLfloat z );
++
++GLAPI void GLAPIENTRY glTranslated( GLdouble x, GLdouble y, GLdouble z );
++GLAPI void GLAPIENTRY glTranslatef( GLfloat x, GLfloat y, GLfloat z );
++
++
++/*
++ * Display Lists
++ */
++
++GLAPI GLboolean GLAPIENTRY glIsList( GLuint list );
++
++GLAPI void GLAPIENTRY glDeleteLists( GLuint list, GLsizei range );
++
++GLAPI GLuint GLAPIENTRY glGenLists( GLsizei range );
++
++GLAPI void GLAPIENTRY glNewList( GLuint list, GLenum mode );
++
++GLAPI void GLAPIENTRY glEndList( void );
++
++GLAPI void GLAPIENTRY glCallList( GLuint list );
++
++GLAPI void GLAPIENTRY glCallLists( GLsizei n, GLenum type,
++ const GLvoid *lists );
++
++GLAPI void GLAPIENTRY glListBase( GLuint base );
++
++
++/*
++ * Drawing Functions
++ */
++
++GLAPI void GLAPIENTRY glBegin( GLenum mode );
++
++GLAPI void GLAPIENTRY glEnd( void );
++
++
++GLAPI void GLAPIENTRY glVertex2d( GLdouble x, GLdouble y );
++GLAPI void GLAPIENTRY glVertex2f( GLfloat x, GLfloat y );
++GLAPI void GLAPIENTRY glVertex2i( GLint x, GLint y );
++GLAPI void GLAPIENTRY glVertex2s( GLshort x, GLshort y );
++
++GLAPI void GLAPIENTRY glVertex3d( GLdouble x, GLdouble y, GLdouble z );
++GLAPI void GLAPIENTRY glVertex3f( GLfloat x, GLfloat y, GLfloat z );
++GLAPI void GLAPIENTRY glVertex3i( GLint x, GLint y, GLint z );
++GLAPI void GLAPIENTRY glVertex3s( GLshort x, GLshort y, GLshort z );
++
++GLAPI void GLAPIENTRY glVertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
++GLAPI void GLAPIENTRY glVertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
++GLAPI void GLAPIENTRY glVertex4i( GLint x, GLint y, GLint z, GLint w );
++GLAPI void GLAPIENTRY glVertex4s( GLshort x, GLshort y, GLshort z, GLshort w );
++
++GLAPI void GLAPIENTRY glVertex2dv( const GLdouble *v );
++GLAPI void GLAPIENTRY glVertex2fv( const GLfloat *v );
++GLAPI void GLAPIENTRY glVertex2iv( const GLint *v );
++GLAPI void GLAPIENTRY glVertex2sv( const GLshort *v );
++
++GLAPI void GLAPIENTRY glVertex3dv( const GLdouble *v );
++GLAPI void GLAPIENTRY glVertex3fv( const GLfloat *v );
++GLAPI void GLAPIENTRY glVertex3iv( const GLint *v );
++GLAPI void GLAPIENTRY glVertex3sv( const GLshort *v );
++
++GLAPI void GLAPIENTRY glVertex4dv( const GLdouble *v );
++GLAPI void GLAPIENTRY glVertex4fv( const GLfloat *v );
++GLAPI void GLAPIENTRY glVertex4iv( const GLint *v );
++GLAPI void GLAPIENTRY glVertex4sv( const GLshort *v );
++
++
++GLAPI void GLAPIENTRY glNormal3b( GLbyte nx, GLbyte ny, GLbyte nz );
++GLAPI void GLAPIENTRY glNormal3d( GLdouble nx, GLdouble ny, GLdouble nz );
++GLAPI void GLAPIENTRY glNormal3f( GLfloat nx, GLfloat ny, GLfloat nz );
++GLAPI void GLAPIENTRY glNormal3i( GLint nx, GLint ny, GLint nz );
++GLAPI void GLAPIENTRY glNormal3s( GLshort nx, GLshort ny, GLshort nz );
++
++GLAPI void GLAPIENTRY glNormal3bv( const GLbyte *v );
++GLAPI void GLAPIENTRY glNormal3dv( const GLdouble *v );
++GLAPI void GLAPIENTRY glNormal3fv( const GLfloat *v );
++GLAPI void GLAPIENTRY glNormal3iv( const GLint *v );
++GLAPI void GLAPIENTRY glNormal3sv( const GLshort *v );
++
++
++GLAPI void GLAPIENTRY glIndexd( GLdouble c );
++GLAPI void GLAPIENTRY glIndexf( GLfloat c );
++GLAPI void GLAPIENTRY glIndexi( GLint c );
++GLAPI void GLAPIENTRY glIndexs( GLshort c );
++GLAPI void GLAPIENTRY glIndexub( GLubyte c ); /* 1.1 */
++
++GLAPI void GLAPIENTRY glIndexdv( const GLdouble *c );
++GLAPI void GLAPIENTRY glIndexfv( const GLfloat *c );
++GLAPI void GLAPIENTRY glIndexiv( const GLint *c );
++GLAPI void GLAPIENTRY glIndexsv( const GLshort *c );
++GLAPI void GLAPIENTRY glIndexubv( const GLubyte *c ); /* 1.1 */
++
++GLAPI void GLAPIENTRY glColor3b( GLbyte red, GLbyte green, GLbyte blue );
++GLAPI void GLAPIENTRY glColor3d( GLdouble red, GLdouble green, GLdouble blue );
++GLAPI void GLAPIENTRY glColor3f( GLfloat red, GLfloat green, GLfloat blue );
++GLAPI void GLAPIENTRY glColor3i( GLint red, GLint green, GLint blue );
++GLAPI void GLAPIENTRY glColor3s( GLshort red, GLshort green, GLshort blue );
++GLAPI void GLAPIENTRY glColor3ub( GLubyte red, GLubyte green, GLubyte blue );
++GLAPI void GLAPIENTRY glColor3ui( GLuint red, GLuint green, GLuint blue );
++GLAPI void GLAPIENTRY glColor3us( GLushort red, GLushort green, GLushort blue );
++
++GLAPI void GLAPIENTRY glColor4b( GLbyte red, GLbyte green,
++ GLbyte blue, GLbyte alpha );
++GLAPI void GLAPIENTRY glColor4d( GLdouble red, GLdouble green,
++ GLdouble blue, GLdouble alpha );
++GLAPI void GLAPIENTRY glColor4f( GLfloat red, GLfloat green,
++ GLfloat blue, GLfloat alpha );
++GLAPI void GLAPIENTRY glColor4i( GLint red, GLint green,
++ GLint blue, GLint alpha );
++GLAPI void GLAPIENTRY glColor4s( GLshort red, GLshort green,
++ GLshort blue, GLshort alpha );
++GLAPI void GLAPIENTRY glColor4ub( GLubyte red, GLubyte green,
++ GLubyte blue, GLubyte alpha );
++GLAPI void GLAPIENTRY glColor4ui( GLuint red, GLuint green,
++ GLuint blue, GLuint alpha );
++GLAPI void GLAPIENTRY glColor4us( GLushort red, GLushort green,
++ GLushort blue, GLushort alpha );
++
++
++GLAPI void GLAPIENTRY glColor3bv( const GLbyte *v );
++GLAPI void GLAPIENTRY glColor3dv( const GLdouble *v );
++GLAPI void GLAPIENTRY glColor3fv( const GLfloat *v );
++GLAPI void GLAPIENTRY glColor3iv( const GLint *v );
++GLAPI void GLAPIENTRY glColor3sv( const GLshort *v );
++GLAPI void GLAPIENTRY glColor3ubv( const GLubyte *v );
++GLAPI void GLAPIENTRY glColor3uiv( const GLuint *v );
++GLAPI void GLAPIENTRY glColor3usv( const GLushort *v );
++
++GLAPI void GLAPIENTRY glColor4bv( const GLbyte *v );
++GLAPI void GLAPIENTRY glColor4dv( const GLdouble *v );
++GLAPI void GLAPIENTRY glColor4fv( const GLfloat *v );
++GLAPI void GLAPIENTRY glColor4iv( const GLint *v );
++GLAPI void GLAPIENTRY glColor4sv( const GLshort *v );
++GLAPI void GLAPIENTRY glColor4ubv( const GLubyte *v );
++GLAPI void GLAPIENTRY glColor4uiv( const GLuint *v );
++GLAPI void GLAPIENTRY glColor4usv( const GLushort *v );
++
++
++GLAPI void GLAPIENTRY glTexCoord1d( GLdouble s );
++GLAPI void GLAPIENTRY glTexCoord1f( GLfloat s );
++GLAPI void GLAPIENTRY glTexCoord1i( GLint s );
++GLAPI void GLAPIENTRY glTexCoord1s( GLshort s );
++
++GLAPI void GLAPIENTRY glTexCoord2d( GLdouble s, GLdouble t );
++GLAPI void GLAPIENTRY glTexCoord2f( GLfloat s, GLfloat t );
++GLAPI void GLAPIENTRY glTexCoord2i( GLint s, GLint t );
++GLAPI void GLAPIENTRY glTexCoord2s( GLshort s, GLshort t );
++
++GLAPI void GLAPIENTRY glTexCoord3d( GLdouble s, GLdouble t, GLdouble r );
++GLAPI void GLAPIENTRY glTexCoord3f( GLfloat s, GLfloat t, GLfloat r );
++GLAPI void GLAPIENTRY glTexCoord3i( GLint s, GLint t, GLint r );
++GLAPI void GLAPIENTRY glTexCoord3s( GLshort s, GLshort t, GLshort r );
++
++GLAPI void GLAPIENTRY glTexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q );
++GLAPI void GLAPIENTRY glTexCoord4f( GLfloat s, GLfloat t, GLfloat r, GLfloat q );
++GLAPI void GLAPIENTRY glTexCoord4i( GLint s, GLint t, GLint r, GLint q );
++GLAPI void GLAPIENTRY glTexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q );
++
++GLAPI void GLAPIENTRY glTexCoord1dv( const GLdouble *v );
++GLAPI void GLAPIENTRY glTexCoord1fv( const GLfloat *v );
++GLAPI void GLAPIENTRY glTexCoord1iv( const GLint *v );
++GLAPI void GLAPIENTRY glTexCoord1sv( const GLshort *v );
++
++GLAPI void GLAPIENTRY glTexCoord2dv( const GLdouble *v );
++GLAPI void GLAPIENTRY glTexCoord2fv( const GLfloat *v );
++GLAPI void GLAPIENTRY glTexCoord2iv( const GLint *v );
++GLAPI void GLAPIENTRY glTexCoord2sv( const GLshort *v );
++
++GLAPI void GLAPIENTRY glTexCoord3dv( const GLdouble *v );
++GLAPI void GLAPIENTRY glTexCoord3fv( const GLfloat *v );
++GLAPI void GLAPIENTRY glTexCoord3iv( const GLint *v );
++GLAPI void GLAPIENTRY glTexCoord3sv( const GLshort *v );
++
++GLAPI void GLAPIENTRY glTexCoord4dv( const GLdouble *v );
++GLAPI void GLAPIENTRY glTexCoord4fv( const GLfloat *v );
++GLAPI void GLAPIENTRY glTexCoord4iv( const GLint *v );
++GLAPI void GLAPIENTRY glTexCoord4sv( const GLshort *v );
++
++
++GLAPI void GLAPIENTRY glRasterPos2d( GLdouble x, GLdouble y );
++GLAPI void GLAPIENTRY glRasterPos2f( GLfloat x, GLfloat y );
++GLAPI void GLAPIENTRY glRasterPos2i( GLint x, GLint y );
++GLAPI void GLAPIENTRY glRasterPos2s( GLshort x, GLshort y );
++
++GLAPI void GLAPIENTRY glRasterPos3d( GLdouble x, GLdouble y, GLdouble z );
++GLAPI void GLAPIENTRY glRasterPos3f( GLfloat x, GLfloat y, GLfloat z );
++GLAPI void GLAPIENTRY glRasterPos3i( GLint x, GLint y, GLint z );
++GLAPI void GLAPIENTRY glRasterPos3s( GLshort x, GLshort y, GLshort z );
++
++GLAPI void GLAPIENTRY glRasterPos4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
++GLAPI void GLAPIENTRY glRasterPos4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
++GLAPI void GLAPIENTRY glRasterPos4i( GLint x, GLint y, GLint z, GLint w );
++GLAPI void GLAPIENTRY glRasterPos4s( GLshort x, GLshort y, GLshort z, GLshort w );
++
++GLAPI void GLAPIENTRY glRasterPos2dv( const GLdouble *v );
++GLAPI void GLAPIENTRY glRasterPos2fv( const GLfloat *v );
++GLAPI void GLAPIENTRY glRasterPos2iv( const GLint *v );
++GLAPI void GLAPIENTRY glRasterPos2sv( const GLshort *v );
++
++GLAPI void GLAPIENTRY glRasterPos3dv( const GLdouble *v );
++GLAPI void GLAPIENTRY glRasterPos3fv( const GLfloat *v );
++GLAPI void GLAPIENTRY glRasterPos3iv( const GLint *v );
++GLAPI void GLAPIENTRY glRasterPos3sv( const GLshort *v );
++
++GLAPI void GLAPIENTRY glRasterPos4dv( const GLdouble *v );
++GLAPI void GLAPIENTRY glRasterPos4fv( const GLfloat *v );
++GLAPI void GLAPIENTRY glRasterPos4iv( const GLint *v );
++GLAPI void GLAPIENTRY glRasterPos4sv( const GLshort *v );
++
++
++GLAPI void GLAPIENTRY glRectd( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 );
++GLAPI void GLAPIENTRY glRectf( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 );
++GLAPI void GLAPIENTRY glRecti( GLint x1, GLint y1, GLint x2, GLint y2 );
++GLAPI void GLAPIENTRY glRects( GLshort x1, GLshort y1, GLshort x2, GLshort y2 );
++
++
++GLAPI void GLAPIENTRY glRectdv( const GLdouble *v1, const GLdouble *v2 );
++GLAPI void GLAPIENTRY glRectfv( const GLfloat *v1, const GLfloat *v2 );
++GLAPI void GLAPIENTRY glRectiv( const GLint *v1, const GLint *v2 );
++GLAPI void GLAPIENTRY glRectsv( const GLshort *v1, const GLshort *v2 );
++
++
++/*
++ * Vertex Arrays (1.1)
++ */
++
++GLAPI void GLAPIENTRY glVertexPointer( GLint size, GLenum type,
++ GLsizei stride, const GLvoid *ptr );
++
++GLAPI void GLAPIENTRY glNormalPointer( GLenum type, GLsizei stride,
++ const GLvoid *ptr );
++
++GLAPI void GLAPIENTRY glColorPointer( GLint size, GLenum type,
++ GLsizei stride, const GLvoid *ptr );
++
++GLAPI void GLAPIENTRY glIndexPointer( GLenum type, GLsizei stride,
++ const GLvoid *ptr );
++
++GLAPI void GLAPIENTRY glTexCoordPointer( GLint size, GLenum type,
++ GLsizei stride, const GLvoid *ptr );
++
++GLAPI void GLAPIENTRY glEdgeFlagPointer( GLsizei stride, const GLvoid *ptr );
++
++GLAPI void GLAPIENTRY glGetPointerv( GLenum pname, GLvoid **params );
++
++GLAPI void GLAPIENTRY glArrayElement( GLint i );
++
++GLAPI void GLAPIENTRY glDrawArrays( GLenum mode, GLint first, GLsizei count );
++
++GLAPI void GLAPIENTRY glDrawElements( GLenum mode, GLsizei count,
++ GLenum type, const GLvoid *indices );
++
++GLAPI void GLAPIENTRY glInterleavedArrays( GLenum format, GLsizei stride,
++ const GLvoid *pointer );
++
++/*
++ * Lighting
++ */
++
++GLAPI void GLAPIENTRY glShadeModel( GLenum mode );
++
++GLAPI void GLAPIENTRY glLightf( GLenum light, GLenum pname, GLfloat param );
++GLAPI void GLAPIENTRY glLighti( GLenum light, GLenum pname, GLint param );
++GLAPI void GLAPIENTRY glLightfv( GLenum light, GLenum pname,
++ const GLfloat *params );
++GLAPI void GLAPIENTRY glLightiv( GLenum light, GLenum pname,
++ const GLint *params );
++
++GLAPI void GLAPIENTRY glGetLightfv( GLenum light, GLenum pname,
++ GLfloat *params );
++GLAPI void GLAPIENTRY glGetLightiv( GLenum light, GLenum pname,
++ GLint *params );
++
++GLAPI void GLAPIENTRY glLightModelf( GLenum pname, GLfloat param );
++GLAPI void GLAPIENTRY glLightModeli( GLenum pname, GLint param );
++GLAPI void GLAPIENTRY glLightModelfv( GLenum pname, const GLfloat *params );
++GLAPI void GLAPIENTRY glLightModeliv( GLenum pname, const GLint *params );
++
++GLAPI void GLAPIENTRY glMaterialf( GLenum face, GLenum pname, GLfloat param );
++GLAPI void GLAPIENTRY glMateriali( GLenum face, GLenum pname, GLint param );
++GLAPI void GLAPIENTRY glMaterialfv( GLenum face, GLenum pname, const GLfloat *params );
++GLAPI void GLAPIENTRY glMaterialiv( GLenum face, GLenum pname, const GLint *params );
++
++GLAPI void GLAPIENTRY glGetMaterialfv( GLenum face, GLenum pname, GLfloat *params );
++GLAPI void GLAPIENTRY glGetMaterialiv( GLenum face, GLenum pname, GLint *params );
++
++GLAPI void GLAPIENTRY glColorMaterial( GLenum face, GLenum mode );
++
++
++/*
++ * Raster functions
++ */
++
++GLAPI void GLAPIENTRY glPixelZoom( GLfloat xfactor, GLfloat yfactor );
++
++GLAPI void GLAPIENTRY glPixelStoref( GLenum pname, GLfloat param );
++GLAPI void GLAPIENTRY glPixelStorei( GLenum pname, GLint param );
++
++GLAPI void GLAPIENTRY glPixelTransferf( GLenum pname, GLfloat param );
++GLAPI void GLAPIENTRY glPixelTransferi( GLenum pname, GLint param );
++
++GLAPI void GLAPIENTRY glPixelMapfv( GLenum map, GLsizei mapsize,
++ const GLfloat *values );
++GLAPI void GLAPIENTRY glPixelMapuiv( GLenum map, GLsizei mapsize,
++ const GLuint *values );
++GLAPI void GLAPIENTRY glPixelMapusv( GLenum map, GLsizei mapsize,
++ const GLushort *values );
++
++GLAPI void GLAPIENTRY glGetPixelMapfv( GLenum map, GLfloat *values );
++GLAPI void GLAPIENTRY glGetPixelMapuiv( GLenum map, GLuint *values );
++GLAPI void GLAPIENTRY glGetPixelMapusv( GLenum map, GLushort *values );
++
++GLAPI void GLAPIENTRY glBitmap( GLsizei width, GLsizei height,
++ GLfloat xorig, GLfloat yorig,
++ GLfloat xmove, GLfloat ymove,
++ const GLubyte *bitmap );
++
++GLAPI void GLAPIENTRY glReadPixels( GLint x, GLint y,
++ GLsizei width, GLsizei height,
++ GLenum format, GLenum type,
++ GLvoid *pixels );
++
++GLAPI void GLAPIENTRY glDrawPixels( GLsizei width, GLsizei height,
++ GLenum format, GLenum type,
++ const GLvoid *pixels );
++
++GLAPI void GLAPIENTRY glCopyPixels( GLint x, GLint y,
++ GLsizei width, GLsizei height,
++ GLenum type );
++
++/*
++ * Stenciling
++ */
++
++GLAPI void GLAPIENTRY glStencilFunc( GLenum func, GLint ref, GLuint mask );
++
++GLAPI void GLAPIENTRY glStencilMask( GLuint mask );
++
++GLAPI void GLAPIENTRY glStencilOp( GLenum fail, GLenum zfail, GLenum zpass );
++
++GLAPI void GLAPIENTRY glClearStencil( GLint s );
++
++
++
++/*
++ * Texture mapping
++ */
++
++GLAPI void GLAPIENTRY glTexGend( GLenum coord, GLenum pname, GLdouble param );
++GLAPI void GLAPIENTRY glTexGenf( GLenum coord, GLenum pname, GLfloat param );
++GLAPI void GLAPIENTRY glTexGeni( GLenum coord, GLenum pname, GLint param );
++
++GLAPI void GLAPIENTRY glTexGendv( GLenum coord, GLenum pname, const GLdouble *params );
++GLAPI void GLAPIENTRY glTexGenfv( GLenum coord, GLenum pname, const GLfloat *params );
++GLAPI void GLAPIENTRY glTexGeniv( GLenum coord, GLenum pname, const GLint *params );
++
++GLAPI void GLAPIENTRY glGetTexGendv( GLenum coord, GLenum pname, GLdouble *params );
++GLAPI void GLAPIENTRY glGetTexGenfv( GLenum coord, GLenum pname, GLfloat *params );
++GLAPI void GLAPIENTRY glGetTexGeniv( GLenum coord, GLenum pname, GLint *params );
++
++
++GLAPI void GLAPIENTRY glTexEnvf( GLenum target, GLenum pname, GLfloat param );
++GLAPI void GLAPIENTRY glTexEnvi( GLenum target, GLenum pname, GLint param );
++
++GLAPI void GLAPIENTRY glTexEnvfv( GLenum target, GLenum pname, const GLfloat *params );
++GLAPI void GLAPIENTRY glTexEnviv( GLenum target, GLenum pname, const GLint *params );
++
++GLAPI void GLAPIENTRY glGetTexEnvfv( GLenum target, GLenum pname, GLfloat *params );
++GLAPI void GLAPIENTRY glGetTexEnviv( GLenum target, GLenum pname, GLint *params );
++
++
++GLAPI void GLAPIENTRY glTexParameterf( GLenum target, GLenum pname, GLfloat param );
++GLAPI void GLAPIENTRY glTexParameteri( GLenum target, GLenum pname, GLint param );
++
++GLAPI void GLAPIENTRY glTexParameterfv( GLenum target, GLenum pname,
++ const GLfloat *params );
++GLAPI void GLAPIENTRY glTexParameteriv( GLenum target, GLenum pname,
++ const GLint *params );
++
++GLAPI void GLAPIENTRY glGetTexParameterfv( GLenum target,
++ GLenum pname, GLfloat *params);
++GLAPI void GLAPIENTRY glGetTexParameteriv( GLenum target,
++ GLenum pname, GLint *params );
++
++GLAPI void GLAPIENTRY glGetTexLevelParameterfv( GLenum target, GLint level,
++ GLenum pname, GLfloat *params );
++GLAPI void GLAPIENTRY glGetTexLevelParameteriv( GLenum target, GLint level,
++ GLenum pname, GLint *params );
++
++
++GLAPI void GLAPIENTRY glTexImage1D( GLenum target, GLint level,
++ GLint internalFormat,
++ GLsizei width, GLint border,
++ GLenum format, GLenum type,
++ const GLvoid *pixels );
++
++GLAPI void GLAPIENTRY glTexImage2D( GLenum target, GLint level,
++ GLint internalFormat,
++ GLsizei width, GLsizei height,
++ GLint border, GLenum format, GLenum type,
++ const GLvoid *pixels );
++
++GLAPI void GLAPIENTRY glGetTexImage( GLenum target, GLint level,
++ GLenum format, GLenum type,
++ GLvoid *pixels );
++
++
++/* 1.1 functions */
++
++GLAPI void GLAPIENTRY glGenTextures( GLsizei n, GLuint *textures );
++
++GLAPI void GLAPIENTRY glDeleteTextures( GLsizei n, const GLuint *textures);
++
++GLAPI void GLAPIENTRY glBindTexture( GLenum target, GLuint texture );
++
++GLAPI void GLAPIENTRY glPrioritizeTextures( GLsizei n,
++ const GLuint *textures,
++ const GLclampf *priorities );
++
++GLAPI GLboolean GLAPIENTRY glAreTexturesResident( GLsizei n,
++ const GLuint *textures,
++ GLboolean *residences );
++
++GLAPI GLboolean GLAPIENTRY glIsTexture( GLuint texture );
++
++
++GLAPI void GLAPIENTRY glTexSubImage1D( GLenum target, GLint level,
++ GLint xoffset,
++ GLsizei width, GLenum format,
++ GLenum type, const GLvoid *pixels );
++
++
++GLAPI void GLAPIENTRY glTexSubImage2D( GLenum target, GLint level,
++ GLint xoffset, GLint yoffset,
++ GLsizei width, GLsizei height,
++ GLenum format, GLenum type,
++ const GLvoid *pixels );
++
++
++GLAPI void GLAPIENTRY glCopyTexImage1D( GLenum target, GLint level,
++ GLenum internalformat,
++ GLint x, GLint y,
++ GLsizei width, GLint border );
++
++
++GLAPI void GLAPIENTRY glCopyTexImage2D( GLenum target, GLint level,
++ GLenum internalformat,
++ GLint x, GLint y,
++ GLsizei width, GLsizei height,
++ GLint border );
++
++
++GLAPI void GLAPIENTRY glCopyTexSubImage1D( GLenum target, GLint level,
++ GLint xoffset, GLint x, GLint y,
++ GLsizei width );
++
++
++GLAPI void GLAPIENTRY glCopyTexSubImage2D( GLenum target, GLint level,
++ GLint xoffset, GLint yoffset,
++ GLint x, GLint y,
++ GLsizei width, GLsizei height );
++
++
++/*
++ * Evaluators
++ */
++
++GLAPI void GLAPIENTRY glMap1d( GLenum target, GLdouble u1, GLdouble u2,
++ GLint stride,
++ GLint order, const GLdouble *points );
++GLAPI void GLAPIENTRY glMap1f( GLenum target, GLfloat u1, GLfloat u2,
++ GLint stride,
++ GLint order, const GLfloat *points );
++
++GLAPI void GLAPIENTRY glMap2d( GLenum target,
++ GLdouble u1, GLdouble u2, GLint ustride, GLint uorder,
++ GLdouble v1, GLdouble v2, GLint vstride, GLint vorder,
++ const GLdouble *points );
++GLAPI void GLAPIENTRY glMap2f( GLenum target,
++ GLfloat u1, GLfloat u2, GLint ustride, GLint uorder,
++ GLfloat v1, GLfloat v2, GLint vstride, GLint vorder,
++ const GLfloat *points );
++
++GLAPI void GLAPIENTRY glGetMapdv( GLenum target, GLenum query, GLdouble *v );
++GLAPI void GLAPIENTRY glGetMapfv( GLenum target, GLenum query, GLfloat *v );
++GLAPI void GLAPIENTRY glGetMapiv( GLenum target, GLenum query, GLint *v );
++
++GLAPI void GLAPIENTRY glEvalCoord1d( GLdouble u );
++GLAPI void GLAPIENTRY glEvalCoord1f( GLfloat u );
++
++GLAPI void GLAPIENTRY glEvalCoord1dv( const GLdouble *u );
++GLAPI void GLAPIENTRY glEvalCoord1fv( const GLfloat *u );
++
++GLAPI void GLAPIENTRY glEvalCoord2d( GLdouble u, GLdouble v );
++GLAPI void GLAPIENTRY glEvalCoord2f( GLfloat u, GLfloat v );
++
++GLAPI void GLAPIENTRY glEvalCoord2dv( const GLdouble *u );
++GLAPI void GLAPIENTRY glEvalCoord2fv( const GLfloat *u );
++
++GLAPI void GLAPIENTRY glMapGrid1d( GLint un, GLdouble u1, GLdouble u2 );
++GLAPI void GLAPIENTRY glMapGrid1f( GLint un, GLfloat u1, GLfloat u2 );
++
++GLAPI void GLAPIENTRY glMapGrid2d( GLint un, GLdouble u1, GLdouble u2,
++ GLint vn, GLdouble v1, GLdouble v2 );
++GLAPI void GLAPIENTRY glMapGrid2f( GLint un, GLfloat u1, GLfloat u2,
++ GLint vn, GLfloat v1, GLfloat v2 );
++
++GLAPI void GLAPIENTRY glEvalPoint1( GLint i );
++
++GLAPI void GLAPIENTRY glEvalPoint2( GLint i, GLint j );
++
++GLAPI void GLAPIENTRY glEvalMesh1( GLenum mode, GLint i1, GLint i2 );
++
++GLAPI void GLAPIENTRY glEvalMesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 );
++
++
++/*
++ * Fog
++ */
++
++GLAPI void GLAPIENTRY glFogf( GLenum pname, GLfloat param );
++
++GLAPI void GLAPIENTRY glFogi( GLenum pname, GLint param );
++
++GLAPI void GLAPIENTRY glFogfv( GLenum pname, const GLfloat *params );
++
++GLAPI void GLAPIENTRY glFogiv( GLenum pname, const GLint *params );
++
++
++/*
++ * Selection and Feedback
++ */
++
++GLAPI void GLAPIENTRY glFeedbackBuffer( GLsizei size, GLenum type, GLfloat *buffer );
++
++GLAPI void GLAPIENTRY glPassThrough( GLfloat token );
++
++GLAPI void GLAPIENTRY glSelectBuffer( GLsizei size, GLuint *buffer );
++
++GLAPI void GLAPIENTRY glInitNames( void );
++
++GLAPI void GLAPIENTRY glLoadName( GLuint name );
++
++GLAPI void GLAPIENTRY glPushName( GLuint name );
++
++GLAPI void GLAPIENTRY glPopName( void );
++
++
++
++/*
++ * OpenGL 1.2
++ */
++
++#define GL_RESCALE_NORMAL 0x803A
++#define GL_CLAMP_TO_EDGE 0x812F
++#define GL_MAX_ELEMENTS_VERTICES 0x80E8
++#define GL_MAX_ELEMENTS_INDICES 0x80E9
++#define GL_BGR 0x80E0
++#define GL_BGRA 0x80E1
++#define GL_UNSIGNED_BYTE_3_3_2 0x8032
++#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362
++#define GL_UNSIGNED_SHORT_5_6_5 0x8363
++#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364
++#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
++#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365
++#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
++#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366
++#define GL_UNSIGNED_INT_8_8_8_8 0x8035
++#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367
++#define GL_UNSIGNED_INT_10_10_10_2 0x8036
++#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
++#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8
++#define GL_SINGLE_COLOR 0x81F9
++#define GL_SEPARATE_SPECULAR_COLOR 0x81FA
++#define GL_TEXTURE_MIN_LOD 0x813A
++#define GL_TEXTURE_MAX_LOD 0x813B
++#define GL_TEXTURE_BASE_LEVEL 0x813C
++#define GL_TEXTURE_MAX_LEVEL 0x813D
++#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12
++#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13
++#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22
++#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23
++#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
++#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
++#define GL_PACK_SKIP_IMAGES 0x806B
++#define GL_PACK_IMAGE_HEIGHT 0x806C
++#define GL_UNPACK_SKIP_IMAGES 0x806D
++#define GL_UNPACK_IMAGE_HEIGHT 0x806E
++#define GL_TEXTURE_3D 0x806F
++#define GL_PROXY_TEXTURE_3D 0x8070
++#define GL_TEXTURE_DEPTH 0x8071
++#define GL_TEXTURE_WRAP_R 0x8072
++#define GL_MAX_3D_TEXTURE_SIZE 0x8073
++#define GL_TEXTURE_BINDING_3D 0x806A
++
++GLAPI void GLAPIENTRY glDrawRangeElements( GLenum mode, GLuint start,
++ GLuint end, GLsizei count, GLenum type, const GLvoid *indices );
++
++GLAPI void GLAPIENTRY glTexImage3D( GLenum target, GLint level,
++ GLint internalFormat,
++ GLsizei width, GLsizei height,
++ GLsizei depth, GLint border,
++ GLenum format, GLenum type,
++ const GLvoid *pixels );
++
++GLAPI void GLAPIENTRY glTexSubImage3D( GLenum target, GLint level,
++ GLint xoffset, GLint yoffset,
++ GLint zoffset, GLsizei width,
++ GLsizei height, GLsizei depth,
++ GLenum format,
++ GLenum type, const GLvoid *pixels);
++
++GLAPI void GLAPIENTRY glCopyTexSubImage3D( GLenum target, GLint level,
++ GLint xoffset, GLint yoffset,
++ GLint zoffset, GLint x,
++ GLint y, GLsizei width,
++ GLsizei height );
++
++typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
++typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
++typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
++typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
++
++
++/*
++ * GL_ARB_imaging
++ */
++
++#define GL_CONSTANT_COLOR 0x8001
++#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
++#define GL_CONSTANT_ALPHA 0x8003
++#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
++#define GL_COLOR_TABLE 0x80D0
++#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1
++#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2
++#define GL_PROXY_COLOR_TABLE 0x80D3
++#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
++#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
++#define GL_COLOR_TABLE_SCALE 0x80D6
++#define GL_COLOR_TABLE_BIAS 0x80D7
++#define GL_COLOR_TABLE_FORMAT 0x80D8
++#define GL_COLOR_TABLE_WIDTH 0x80D9
++#define GL_COLOR_TABLE_RED_SIZE 0x80DA
++#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB
++#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC
++#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD
++#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE
++#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF
++#define GL_CONVOLUTION_1D 0x8010
++#define GL_CONVOLUTION_2D 0x8011
++#define GL_SEPARABLE_2D 0x8012
++#define GL_CONVOLUTION_BORDER_MODE 0x8013
++#define GL_CONVOLUTION_FILTER_SCALE 0x8014
++#define GL_CONVOLUTION_FILTER_BIAS 0x8015
++#define GL_REDUCE 0x8016
++#define GL_CONVOLUTION_FORMAT 0x8017
++#define GL_CONVOLUTION_WIDTH 0x8018
++#define GL_CONVOLUTION_HEIGHT 0x8019
++#define GL_MAX_CONVOLUTION_WIDTH 0x801A
++#define GL_MAX_CONVOLUTION_HEIGHT 0x801B
++#define GL_POST_CONVOLUTION_RED_SCALE 0x801C
++#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D
++#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E
++#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F
++#define GL_POST_CONVOLUTION_RED_BIAS 0x8020
++#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021
++#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022
++#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023
++#define GL_CONSTANT_BORDER 0x8151
++#define GL_REPLICATE_BORDER 0x8153
++#define GL_CONVOLUTION_BORDER_COLOR 0x8154
++#define GL_COLOR_MATRIX 0x80B1
++#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2
++#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3
++#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4
++#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5
++#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6
++#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7
++#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8
++#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9
++#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA
++#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB
++#define GL_HISTOGRAM 0x8024
++#define GL_PROXY_HISTOGRAM 0x8025
++#define GL_HISTOGRAM_WIDTH 0x8026
++#define GL_HISTOGRAM_FORMAT 0x8027
++#define GL_HISTOGRAM_RED_SIZE 0x8028
++#define GL_HISTOGRAM_GREEN_SIZE 0x8029
++#define GL_HISTOGRAM_BLUE_SIZE 0x802A
++#define GL_HISTOGRAM_ALPHA_SIZE 0x802B
++#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C
++#define GL_HISTOGRAM_SINK 0x802D
++#define GL_MINMAX 0x802E
++#define GL_MINMAX_FORMAT 0x802F
++#define GL_MINMAX_SINK 0x8030
++#define GL_TABLE_TOO_LARGE 0x8031
++#define GL_BLEND_EQUATION 0x8009
++#define GL_MIN 0x8007
++#define GL_MAX 0x8008
++#define GL_FUNC_ADD 0x8006
++#define GL_FUNC_SUBTRACT 0x800A
++#define GL_FUNC_REVERSE_SUBTRACT 0x800B
++#define GL_BLEND_COLOR 0x8005
++
++
++GLAPI void GLAPIENTRY glColorTable( GLenum target, GLenum internalformat,
++ GLsizei width, GLenum format,
++ GLenum type, const GLvoid *table );
++
++GLAPI void GLAPIENTRY glColorSubTable( GLenum target,
++ GLsizei start, GLsizei count,
++ GLenum format, GLenum type,
++ const GLvoid *data );
++
++GLAPI void GLAPIENTRY glColorTableParameteriv(GLenum target, GLenum pname,
++ const GLint *params);
++
++GLAPI void GLAPIENTRY glColorTableParameterfv(GLenum target, GLenum pname,
++ const GLfloat *params);
++
++GLAPI void GLAPIENTRY glCopyColorSubTable( GLenum target, GLsizei start,
++ GLint x, GLint y, GLsizei width );
++
++GLAPI void GLAPIENTRY glCopyColorTable( GLenum target, GLenum internalformat,
++ GLint x, GLint y, GLsizei width );
++
++GLAPI void GLAPIENTRY glGetColorTable( GLenum target, GLenum format,
++ GLenum type, GLvoid *table );
++
++GLAPI void GLAPIENTRY glGetColorTableParameterfv( GLenum target, GLenum pname,
++ GLfloat *params );
++
++GLAPI void GLAPIENTRY glGetColorTableParameteriv( GLenum target, GLenum pname,
++ GLint *params );
++
++GLAPI void GLAPIENTRY glBlendEquation( GLenum mode );
++
++GLAPI void GLAPIENTRY glBlendColor( GLclampf red, GLclampf green,
++ GLclampf blue, GLclampf alpha );
++
++GLAPI void GLAPIENTRY glHistogram( GLenum target, GLsizei width,
++ GLenum internalformat, GLboolean sink );
++
++GLAPI void GLAPIENTRY glResetHistogram( GLenum target );
++
++GLAPI void GLAPIENTRY glGetHistogram( GLenum target, GLboolean reset,
++ GLenum format, GLenum type,
++ GLvoid *values );
++
++GLAPI void GLAPIENTRY glGetHistogramParameterfv( GLenum target, GLenum pname,
++ GLfloat *params );
++
++GLAPI void GLAPIENTRY glGetHistogramParameteriv( GLenum target, GLenum pname,
++ GLint *params );
++
++GLAPI void GLAPIENTRY glMinmax( GLenum target, GLenum internalformat,
++ GLboolean sink );
++
++GLAPI void GLAPIENTRY glResetMinmax( GLenum target );
++
++GLAPI void GLAPIENTRY glGetMinmax( GLenum target, GLboolean reset,
++ GLenum format, GLenum types,
++ GLvoid *values );
++
++GLAPI void GLAPIENTRY glGetMinmaxParameterfv( GLenum target, GLenum pname,
++ GLfloat *params );
++
++GLAPI void GLAPIENTRY glGetMinmaxParameteriv( GLenum target, GLenum pname,
++ GLint *params );
++
++GLAPI void GLAPIENTRY glConvolutionFilter1D( GLenum target,
++ GLenum internalformat, GLsizei width, GLenum format, GLenum type,
++ const GLvoid *image );
++
++GLAPI void GLAPIENTRY glConvolutionFilter2D( GLenum target,
++ GLenum internalformat, GLsizei width, GLsizei height, GLenum format,
++ GLenum type, const GLvoid *image );
++
++GLAPI void GLAPIENTRY glConvolutionParameterf( GLenum target, GLenum pname,
++ GLfloat params );
++
++GLAPI void GLAPIENTRY glConvolutionParameterfv( GLenum target, GLenum pname,
++ const GLfloat *params );
++
++GLAPI void GLAPIENTRY glConvolutionParameteri( GLenum target, GLenum pname,
++ GLint params );
++
++GLAPI void GLAPIENTRY glConvolutionParameteriv( GLenum target, GLenum pname,
++ const GLint *params );
++
++GLAPI void GLAPIENTRY glCopyConvolutionFilter1D( GLenum target,
++ GLenum internalformat, GLint x, GLint y, GLsizei width );
++
++GLAPI void GLAPIENTRY glCopyConvolutionFilter2D( GLenum target,
++ GLenum internalformat, GLint x, GLint y, GLsizei width,
++ GLsizei height);
++
++GLAPI void GLAPIENTRY glGetConvolutionFilter( GLenum target, GLenum format,
++ GLenum type, GLvoid *image );
++
++GLAPI void GLAPIENTRY glGetConvolutionParameterfv( GLenum target, GLenum pname,
++ GLfloat *params );
++
++GLAPI void GLAPIENTRY glGetConvolutionParameteriv( GLenum target, GLenum pname,
++ GLint *params );
++
++GLAPI void GLAPIENTRY glSeparableFilter2D( GLenum target,
++ GLenum internalformat, GLsizei width, GLsizei height, GLenum format,
++ GLenum type, const GLvoid *row, const GLvoid *column );
++
++GLAPI void GLAPIENTRY glGetSeparableFilter( GLenum target, GLenum format,
++ GLenum type, GLvoid *row, GLvoid *column, GLvoid *span );
++
++typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
++typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
++typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
++typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
++typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
++typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
++typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table);
++typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
++typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
++typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
++typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
++typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params);
++typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
++typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params);
++typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
++typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
++typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
++typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image);
++typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
++typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
++typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
++typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
++typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
++typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink);
++typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target);
++typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target);
++
++
++
++/*
++ * OpenGL 1.3
++ */
++
++/* multitexture */
++#define GL_TEXTURE0 0x84C0
++#define GL_TEXTURE1 0x84C1
++#define GL_TEXTURE2 0x84C2
++#define GL_TEXTURE3 0x84C3
++#define GL_TEXTURE4 0x84C4
++#define GL_TEXTURE5 0x84C5
++#define GL_TEXTURE6 0x84C6
++#define GL_TEXTURE7 0x84C7
++#define GL_TEXTURE8 0x84C8
++#define GL_TEXTURE9 0x84C9
++#define GL_TEXTURE10 0x84CA
++#define GL_TEXTURE11 0x84CB
++#define GL_TEXTURE12 0x84CC
++#define GL_TEXTURE13 0x84CD
++#define GL_TEXTURE14 0x84CE
++#define GL_TEXTURE15 0x84CF
++#define GL_TEXTURE16 0x84D0
++#define GL_TEXTURE17 0x84D1
++#define GL_TEXTURE18 0x84D2
++#define GL_TEXTURE19 0x84D3
++#define GL_TEXTURE20 0x84D4
++#define GL_TEXTURE21 0x84D5
++#define GL_TEXTURE22 0x84D6
++#define GL_TEXTURE23 0x84D7
++#define GL_TEXTURE24 0x84D8
++#define GL_TEXTURE25 0x84D9
++#define GL_TEXTURE26 0x84DA
++#define GL_TEXTURE27 0x84DB
++#define GL_TEXTURE28 0x84DC
++#define GL_TEXTURE29 0x84DD
++#define GL_TEXTURE30 0x84DE
++#define GL_TEXTURE31 0x84DF
++#define GL_ACTIVE_TEXTURE 0x84E0
++#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1
++#define GL_MAX_TEXTURE_UNITS 0x84E2
++/* texture_cube_map */
++#define GL_NORMAL_MAP 0x8511
++#define GL_REFLECTION_MAP 0x8512
++#define GL_TEXTURE_CUBE_MAP 0x8513
++#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514
++#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
++#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
++#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
++#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
++#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
++#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
++#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B
++#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
++/* texture_compression */
++#define GL_COMPRESSED_ALPHA 0x84E9
++#define GL_COMPRESSED_LUMINANCE 0x84EA
++#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB
++#define GL_COMPRESSED_INTENSITY 0x84EC
++#define GL_COMPRESSED_RGB 0x84ED
++#define GL_COMPRESSED_RGBA 0x84EE
++#define GL_TEXTURE_COMPRESSION_HINT 0x84EF
++#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0
++#define GL_TEXTURE_COMPRESSED 0x86A1
++#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
++#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
++/* multisample */
++#define GL_MULTISAMPLE 0x809D
++#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
++#define GL_SAMPLE_ALPHA_TO_ONE 0x809F
++#define GL_SAMPLE_COVERAGE 0x80A0
++#define GL_SAMPLE_BUFFERS 0x80A8
++#define GL_SAMPLES 0x80A9
++#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
++#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
++#define GL_MULTISAMPLE_BIT 0x20000000
++/* transpose_matrix */
++#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3
++#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4
++#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5
++#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6
++/* texture_env_combine */
++#define GL_COMBINE 0x8570
++#define GL_COMBINE_RGB 0x8571
++#define GL_COMBINE_ALPHA 0x8572
++#define GL_SOURCE0_RGB 0x8580
++#define GL_SOURCE1_RGB 0x8581
++#define GL_SOURCE2_RGB 0x8582
++#define GL_SOURCE0_ALPHA 0x8588
++#define GL_SOURCE1_ALPHA 0x8589
++#define GL_SOURCE2_ALPHA 0x858A
++#define GL_OPERAND0_RGB 0x8590
++#define GL_OPERAND1_RGB 0x8591
++#define GL_OPERAND2_RGB 0x8592
++#define GL_OPERAND0_ALPHA 0x8598
++#define GL_OPERAND1_ALPHA 0x8599
++#define GL_OPERAND2_ALPHA 0x859A
++#define GL_RGB_SCALE 0x8573
++#define GL_ADD_SIGNED 0x8574
++#define GL_INTERPOLATE 0x8575
++#define GL_SUBTRACT 0x84E7
++#define GL_CONSTANT 0x8576
++#define GL_PRIMARY_COLOR 0x8577
++#define GL_PREVIOUS 0x8578
++/* texture_env_dot3 */
++#define GL_DOT3_RGB 0x86AE
++#define GL_DOT3_RGBA 0x86AF
++/* texture_border_clamp */
++#define GL_CLAMP_TO_BORDER 0x812D
++
++GLAPI void GLAPIENTRY glActiveTexture( GLenum texture );
++
++GLAPI void GLAPIENTRY glClientActiveTexture( GLenum texture );
++
++GLAPI void GLAPIENTRY glCompressedTexImage1D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data );
++
++GLAPI void GLAPIENTRY glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data );
++
++GLAPI void GLAPIENTRY glCompressedTexImage3D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data );
++
++GLAPI void GLAPIENTRY glCompressedTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data );
++
++GLAPI void GLAPIENTRY glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data );
++
++GLAPI void GLAPIENTRY glCompressedTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data );
++
++GLAPI void GLAPIENTRY glGetCompressedTexImage( GLenum target, GLint lod, GLvoid *img );
++
++GLAPI void GLAPIENTRY glMultiTexCoord1d( GLenum target, GLdouble s );
++
++GLAPI void GLAPIENTRY glMultiTexCoord1dv( GLenum target, const GLdouble *v );
++
++GLAPI void GLAPIENTRY glMultiTexCoord1f( GLenum target, GLfloat s );
++
++GLAPI void GLAPIENTRY glMultiTexCoord1fv( GLenum target, const GLfloat *v );
++
++GLAPI void GLAPIENTRY glMultiTexCoord1i( GLenum target, GLint s );
++
++GLAPI void GLAPIENTRY glMultiTexCoord1iv( GLenum target, const GLint *v );
++
++GLAPI void GLAPIENTRY glMultiTexCoord1s( GLenum target, GLshort s );
++
++GLAPI void GLAPIENTRY glMultiTexCoord1sv( GLenum target, const GLshort *v );
++
++GLAPI void GLAPIENTRY glMultiTexCoord2d( GLenum target, GLdouble s, GLdouble t );
++
++GLAPI void GLAPIENTRY glMultiTexCoord2dv( GLenum target, const GLdouble *v );
++
++GLAPI void GLAPIENTRY glMultiTexCoord2f( GLenum target, GLfloat s, GLfloat t );
++
++GLAPI void GLAPIENTRY glMultiTexCoord2fv( GLenum target, const GLfloat *v );
++
++GLAPI void GLAPIENTRY glMultiTexCoord2i( GLenum target, GLint s, GLint t );
++
++GLAPI void GLAPIENTRY glMultiTexCoord2iv( GLenum target, const GLint *v );
++
++GLAPI void GLAPIENTRY glMultiTexCoord2s( GLenum target, GLshort s, GLshort t );
++
++GLAPI void GLAPIENTRY glMultiTexCoord2sv( GLenum target, const GLshort *v );
++
++GLAPI void GLAPIENTRY glMultiTexCoord3d( GLenum target, GLdouble s, GLdouble t, GLdouble r );
++
++GLAPI void GLAPIENTRY glMultiTexCoord3dv( GLenum target, const GLdouble *v );
++
++GLAPI void GLAPIENTRY glMultiTexCoord3f( GLenum target, GLfloat s, GLfloat t, GLfloat r );
++
++GLAPI void GLAPIENTRY glMultiTexCoord3fv( GLenum target, const GLfloat *v );
++
++GLAPI void GLAPIENTRY glMultiTexCoord3i( GLenum target, GLint s, GLint t, GLint r );
++
++GLAPI void GLAPIENTRY glMultiTexCoord3iv( GLenum target, const GLint *v );
++
++GLAPI void GLAPIENTRY glMultiTexCoord3s( GLenum target, GLshort s, GLshort t, GLshort r );
++
++GLAPI void GLAPIENTRY glMultiTexCoord3sv( GLenum target, const GLshort *v );
++
++GLAPI void GLAPIENTRY glMultiTexCoord4d( GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q );
++
++GLAPI void GLAPIENTRY glMultiTexCoord4dv( GLenum target, const GLdouble *v );
++
++GLAPI void GLAPIENTRY glMultiTexCoord4f( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q );
++
++GLAPI void GLAPIENTRY glMultiTexCoord4fv( GLenum target, const GLfloat *v );
++
++GLAPI void GLAPIENTRY glMultiTexCoord4i( GLenum target, GLint s, GLint t, GLint r, GLint q );
++
++GLAPI void GLAPIENTRY glMultiTexCoord4iv( GLenum target, const GLint *v );
++
++GLAPI void GLAPIENTRY glMultiTexCoord4s( GLenum target, GLshort s, GLshort t, GLshort r, GLshort q );
++
++GLAPI void GLAPIENTRY glMultiTexCoord4sv( GLenum target, const GLshort *v );
++
++
++GLAPI void GLAPIENTRY glLoadTransposeMatrixd( const GLdouble m[16] );
++
++GLAPI void GLAPIENTRY glLoadTransposeMatrixf( const GLfloat m[16] );
++
++GLAPI void GLAPIENTRY glMultTransposeMatrixd( const GLdouble m[16] );
++
++GLAPI void GLAPIENTRY glMultTransposeMatrixf( const GLfloat m[16] );
++
++GLAPI void GLAPIENTRY glSampleCoverage( GLclampf value, GLboolean invert );
++
++typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
++typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v);
++typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m);
++typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m);
++typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m);
++typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m);
++typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
++typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
++typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
++typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
++typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
++typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
++typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
++typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *img);
++
++
++/*
++ * GL_ARB_multitexture (ARB extension 1 and OpenGL 1.2.1)
++ */
++#ifndef GL_ARB_multitexture
++#define GL_ARB_multitexture 1
++
++#define GL_TEXTURE0_ARB 0x84C0
++#define GL_TEXTURE1_ARB 0x84C1
++#define GL_TEXTURE2_ARB 0x84C2
++#define GL_TEXTURE3_ARB 0x84C3
++#define GL_TEXTURE4_ARB 0x84C4
++#define GL_TEXTURE5_ARB 0x84C5
++#define GL_TEXTURE6_ARB 0x84C6
++#define GL_TEXTURE7_ARB 0x84C7
++#define GL_TEXTURE8_ARB 0x84C8
++#define GL_TEXTURE9_ARB 0x84C9
++#define GL_TEXTURE10_ARB 0x84CA
++#define GL_TEXTURE11_ARB 0x84CB
++#define GL_TEXTURE12_ARB 0x84CC
++#define GL_TEXTURE13_ARB 0x84CD
++#define GL_TEXTURE14_ARB 0x84CE
++#define GL_TEXTURE15_ARB 0x84CF
++#define GL_TEXTURE16_ARB 0x84D0
++#define GL_TEXTURE17_ARB 0x84D1
++#define GL_TEXTURE18_ARB 0x84D2
++#define GL_TEXTURE19_ARB 0x84D3
++#define GL_TEXTURE20_ARB 0x84D4
++#define GL_TEXTURE21_ARB 0x84D5
++#define GL_TEXTURE22_ARB 0x84D6
++#define GL_TEXTURE23_ARB 0x84D7
++#define GL_TEXTURE24_ARB 0x84D8
++#define GL_TEXTURE25_ARB 0x84D9
++#define GL_TEXTURE26_ARB 0x84DA
++#define GL_TEXTURE27_ARB 0x84DB
++#define GL_TEXTURE28_ARB 0x84DC
++#define GL_TEXTURE29_ARB 0x84DD
++#define GL_TEXTURE30_ARB 0x84DE
++#define GL_TEXTURE31_ARB 0x84DF
++#define GL_ACTIVE_TEXTURE_ARB 0x84E0
++#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1
++#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2
++
++GLAPI void GLAPIENTRY glActiveTextureARB(GLenum texture);
++GLAPI void GLAPIENTRY glClientActiveTextureARB(GLenum texture);
++GLAPI void GLAPIENTRY glMultiTexCoord1dARB(GLenum target, GLdouble s);
++GLAPI void GLAPIENTRY glMultiTexCoord1dvARB(GLenum target, const GLdouble *v);
++GLAPI void GLAPIENTRY glMultiTexCoord1fARB(GLenum target, GLfloat s);
++GLAPI void GLAPIENTRY glMultiTexCoord1fvARB(GLenum target, const GLfloat *v);
++GLAPI void GLAPIENTRY glMultiTexCoord1iARB(GLenum target, GLint s);
++GLAPI void GLAPIENTRY glMultiTexCoord1ivARB(GLenum target, const GLint *v);
++GLAPI void GLAPIENTRY glMultiTexCoord1sARB(GLenum target, GLshort s);
++GLAPI void GLAPIENTRY glMultiTexCoord1svARB(GLenum target, const GLshort *v);
++GLAPI void GLAPIENTRY glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t);
++GLAPI void GLAPIENTRY glMultiTexCoord2dvARB(GLenum target, const GLdouble *v);
++GLAPI void GLAPIENTRY glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t);
++GLAPI void GLAPIENTRY glMultiTexCoord2fvARB(GLenum target, const GLfloat *v);
++GLAPI void GLAPIENTRY glMultiTexCoord2iARB(GLenum target, GLint s, GLint t);
++GLAPI void GLAPIENTRY glMultiTexCoord2ivARB(GLenum target, const GLint *v);
++GLAPI void GLAPIENTRY glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t);
++GLAPI void GLAPIENTRY glMultiTexCoord2svARB(GLenum target, const GLshort *v);
++GLAPI void GLAPIENTRY glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r);
++GLAPI void GLAPIENTRY glMultiTexCoord3dvARB(GLenum target, const GLdouble *v);
++GLAPI void GLAPIENTRY glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r);
++GLAPI void GLAPIENTRY glMultiTexCoord3fvARB(GLenum target, const GLfloat *v);
++GLAPI void GLAPIENTRY glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r);
++GLAPI void GLAPIENTRY glMultiTexCoord3ivARB(GLenum target, const GLint *v);
++GLAPI void GLAPIENTRY glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r);
++GLAPI void GLAPIENTRY glMultiTexCoord3svARB(GLenum target, const GLshort *v);
++GLAPI void GLAPIENTRY glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
++GLAPI void GLAPIENTRY glMultiTexCoord4dvARB(GLenum target, const GLdouble *v);
++GLAPI void GLAPIENTRY glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
++GLAPI void GLAPIENTRY glMultiTexCoord4fvARB(GLenum target, const GLfloat *v);
++GLAPI void GLAPIENTRY glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q);
++GLAPI void GLAPIENTRY glMultiTexCoord4ivARB(GLenum target, const GLint *v);
++GLAPI void GLAPIENTRY glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
++GLAPI void GLAPIENTRY glMultiTexCoord4svARB(GLenum target, const GLshort *v);
++
++typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
++typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
++
++#endif /* GL_ARB_multitexture */
++
++
++
++/*
++ * Define this token if you want "old-style" header file behaviour (extensions
++ * defined in gl.h). Otherwise, extensions will be included from glext.h.
++ */
++#if defined(GL_GLEXT_LEGACY)
++
++/* All extensions that used to be here are now found in glext.h */
++
++#else /* GL_GLEXT_LEGACY */
++
++#include <mesa_glext.h>
++
++#endif /* GL_GLEXT_LEGACY */
++
++
++
++#if GL_ARB_shader_objects
++
++#ifndef GL_MESA_shader_debug
++#define GL_MESA_shader_debug 1
++
++#define GL_DEBUG_OBJECT_MESA 0x8759
++#define GL_DEBUG_PRINT_MESA 0x875A
++#define GL_DEBUG_ASSERT_MESA 0x875B
++
++GLAPI GLhandleARB APIENTRY glCreateDebugObjectMESA (void);
++GLAPI void APIENTRY glClearDebugLogMESA (GLhandleARB obj, GLenum logType, GLenum shaderType);
++GLAPI void APIENTRY glGetDebugLogMESA (GLhandleARB obj, GLenum logType, GLenum shaderType, GLsizei maxLength,
++ GLsizei *length, GLcharARB *debugLog);
++GLAPI GLsizei APIENTRY glGetDebugLogLengthMESA (GLhandleARB obj, GLenum logType, GLenum shaderType);
++
++#endif /* GL_MESA_shader_debug */
++
++#endif /* GL_ARB_shader_objects */
++
++
++/*
++ * ???. GL_MESA_packed_depth_stencil
++ * XXX obsolete
++ */
++#ifndef GL_MESA_packed_depth_stencil
++#define GL_MESA_packed_depth_stencil 1
++
++#define GL_DEPTH_STENCIL_MESA 0x8750
++#define GL_UNSIGNED_INT_24_8_MESA 0x8751
++#define GL_UNSIGNED_INT_8_24_REV_MESA 0x8752
++#define GL_UNSIGNED_SHORT_15_1_MESA 0x8753
++#define GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754
++
++#endif /* GL_MESA_packed_depth_stencil */
++
++
++#ifndef GL_MESA_program_debug
++#define GL_MESA_program_debug 1
++
++#define GL_FRAGMENT_PROGRAM_POSITION_MESA 0x8bb0
++#define GL_FRAGMENT_PROGRAM_CALLBACK_MESA 0x8bb1
++#define GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA 0x8bb2
++#define GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA 0x8bb3
++#define GL_VERTEX_PROGRAM_POSITION_MESA 0x8bb4
++#define GL_VERTEX_PROGRAM_CALLBACK_MESA 0x8bb5
++#define GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA 0x8bb6
++#define GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA 0x8bb7
++
++typedef void (*GLprogramcallbackMESA)(GLenum target, GLvoid *data);
++
++GLAPI void GLAPIENTRY glProgramCallbackMESA(GLenum target, GLprogramcallbackMESA callback, GLvoid *data);
++
++GLAPI void GLAPIENTRY glGetProgramRegisterfvMESA(GLenum target, GLsizei len, const GLubyte *name, GLfloat *v);
++
++#endif /* GL_MESA_program_debug */
++
++
++#ifndef GL_ATI_blend_equation_separate
++#define GL_ATI_blend_equation_separate 1
++
++#define GL_ALPHA_BLEND_EQUATION_ATI 0x883D
++
++GLAPI void GLAPIENTRY glBlendEquationSeparateATI( GLenum modeRGB, GLenum modeA );
++typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEATIPROC) (GLenum modeRGB, GLenum modeA);
++
++#endif /* GL_ATI_blend_equation_separate */
++
++
++
++/**
++ ** NOTE!!!!! If you add new functions to this file, or update
++ ** glext.h be sure to regenerate the gl_mangle.h file. See comments
++ ** in that file for details.
++ **/
++
++
++
++/**********************************************************************
++ * Begin system-specific stuff
++ */
++#if defined(PRAGMA_EXPORT_SUPPORTED)
++#pragma export off
++#endif
++
++#if defined(macintosh) && PRAGMA_IMPORT_SUPPORTED
++#pragma import off
++#endif
++/*
++ * End system-specific stuff
++ **********************************************************************/
++
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif /* __gl_h_ */
+Index: qemu-0.13.0/target-i386/mesa_glext.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-i386/mesa_glext.h 2011-01-17 16:42:36.000000000 +0800
+@@ -0,0 +1,7279 @@
++#ifndef __glext_h_
++#define __glext_h_
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++/*
++** Copyright (c) 2007 The Khronos Group Inc.
++**
++** Permission is hereby granted, free of charge, to any person obtaining a
++** copy of this software and/or associated documentation files (the
++** "Materials"), to deal in the Materials without restriction, including
++** without limitation the rights to use, copy, modify, merge, publish,
++** distribute, sublicense, and/or sell copies of the Materials, and to
++** permit persons to whom the Materials are 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 Materials.
++**
++** THE MATERIALS ARE 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
++** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
++** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
++** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
++*/
++
++#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
++#define WIN32_LEAN_AND_MEAN 1
++#include <windows.h>
++#endif
++
++#ifndef APIENTRY
++#define APIENTRY
++#endif
++#ifndef APIENTRYP
++#define APIENTRYP APIENTRY *
++#endif
++#ifndef GLAPI
++#define GLAPI extern
++#endif
++
++/*************************************************************/
++
++/* Header file version number, required by OpenGL ABI for Linux */
++/* glext.h last updated 2007/02/12 */
++/* Current version at http://www.opengl.org/registry/ */
++#define GL_GLEXT_VERSION 39
++
++#ifndef GL_VERSION_1_2
++#define GL_UNSIGNED_BYTE_3_3_2 0x8032
++#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
++#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
++#define GL_UNSIGNED_INT_8_8_8_8 0x8035
++#define GL_UNSIGNED_INT_10_10_10_2 0x8036
++#define GL_RESCALE_NORMAL 0x803A
++#define GL_TEXTURE_BINDING_3D 0x806A
++#define GL_PACK_SKIP_IMAGES 0x806B
++#define GL_PACK_IMAGE_HEIGHT 0x806C
++#define GL_UNPACK_SKIP_IMAGES 0x806D
++#define GL_UNPACK_IMAGE_HEIGHT 0x806E
++#define GL_TEXTURE_3D 0x806F
++#define GL_PROXY_TEXTURE_3D 0x8070
++#define GL_TEXTURE_DEPTH 0x8071
++#define GL_TEXTURE_WRAP_R 0x8072
++#define GL_MAX_3D_TEXTURE_SIZE 0x8073
++#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362
++#define GL_UNSIGNED_SHORT_5_6_5 0x8363
++#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364
++#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365
++#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366
++#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367
++#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
++#define GL_BGR 0x80E0
++#define GL_BGRA 0x80E1
++#define GL_MAX_ELEMENTS_VERTICES 0x80E8
++#define GL_MAX_ELEMENTS_INDICES 0x80E9
++#define GL_CLAMP_TO_EDGE 0x812F
++#define GL_TEXTURE_MIN_LOD 0x813A
++#define GL_TEXTURE_MAX_LOD 0x813B
++#define GL_TEXTURE_BASE_LEVEL 0x813C
++#define GL_TEXTURE_MAX_LEVEL 0x813D
++#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8
++#define GL_SINGLE_COLOR 0x81F9
++#define GL_SEPARATE_SPECULAR_COLOR 0x81FA
++#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12
++#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13
++#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22
++#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23
++#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
++#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
++#endif
++
++#ifndef GL_ARB_imaging
++#define GL_CONSTANT_COLOR 0x8001
++#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
++#define GL_CONSTANT_ALPHA 0x8003
++#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
++#define GL_BLEND_COLOR 0x8005
++#define GL_FUNC_ADD 0x8006
++#define GL_MIN 0x8007
++#define GL_MAX 0x8008
++#define GL_BLEND_EQUATION 0x8009
++#define GL_FUNC_SUBTRACT 0x800A
++#define GL_FUNC_REVERSE_SUBTRACT 0x800B
++#define GL_CONVOLUTION_1D 0x8010
++#define GL_CONVOLUTION_2D 0x8011
++#define GL_SEPARABLE_2D 0x8012
++#define GL_CONVOLUTION_BORDER_MODE 0x8013
++#define GL_CONVOLUTION_FILTER_SCALE 0x8014
++#define GL_CONVOLUTION_FILTER_BIAS 0x8015
++#define GL_REDUCE 0x8016
++#define GL_CONVOLUTION_FORMAT 0x8017
++#define GL_CONVOLUTION_WIDTH 0x8018
++#define GL_CONVOLUTION_HEIGHT 0x8019
++#define GL_MAX_CONVOLUTION_WIDTH 0x801A
++#define GL_MAX_CONVOLUTION_HEIGHT 0x801B
++#define GL_POST_CONVOLUTION_RED_SCALE 0x801C
++#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D
++#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E
++#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F
++#define GL_POST_CONVOLUTION_RED_BIAS 0x8020
++#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021
++#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022
++#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023
++#define GL_HISTOGRAM 0x8024
++#define GL_PROXY_HISTOGRAM 0x8025
++#define GL_HISTOGRAM_WIDTH 0x8026
++#define GL_HISTOGRAM_FORMAT 0x8027
++#define GL_HISTOGRAM_RED_SIZE 0x8028
++#define GL_HISTOGRAM_GREEN_SIZE 0x8029
++#define GL_HISTOGRAM_BLUE_SIZE 0x802A
++#define GL_HISTOGRAM_ALPHA_SIZE 0x802B
++#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C
++#define GL_HISTOGRAM_SINK 0x802D
++#define GL_MINMAX 0x802E
++#define GL_MINMAX_FORMAT 0x802F
++#define GL_MINMAX_SINK 0x8030
++#define GL_TABLE_TOO_LARGE 0x8031
++#define GL_COLOR_MATRIX 0x80B1
++#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2
++#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3
++#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4
++#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5
++#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6
++#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7
++#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8
++#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9
++#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA
++#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB
++#define GL_COLOR_TABLE 0x80D0
++#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1
++#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2
++#define GL_PROXY_COLOR_TABLE 0x80D3
++#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
++#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
++#define GL_COLOR_TABLE_SCALE 0x80D6
++#define GL_COLOR_TABLE_BIAS 0x80D7
++#define GL_COLOR_TABLE_FORMAT 0x80D8
++#define GL_COLOR_TABLE_WIDTH 0x80D9
++#define GL_COLOR_TABLE_RED_SIZE 0x80DA
++#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB
++#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC
++#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD
++#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE
++#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF
++#define GL_CONSTANT_BORDER 0x8151
++#define GL_REPLICATE_BORDER 0x8153
++#define GL_CONVOLUTION_BORDER_COLOR 0x8154
++#endif
++
++#ifndef GL_VERSION_1_3
++#define GL_TEXTURE0 0x84C0
++#define GL_TEXTURE1 0x84C1
++#define GL_TEXTURE2 0x84C2
++#define GL_TEXTURE3 0x84C3
++#define GL_TEXTURE4 0x84C4
++#define GL_TEXTURE5 0x84C5
++#define GL_TEXTURE6 0x84C6
++#define GL_TEXTURE7 0x84C7
++#define GL_TEXTURE8 0x84C8
++#define GL_TEXTURE9 0x84C9
++#define GL_TEXTURE10 0x84CA
++#define GL_TEXTURE11 0x84CB
++#define GL_TEXTURE12 0x84CC
++#define GL_TEXTURE13 0x84CD
++#define GL_TEXTURE14 0x84CE
++#define GL_TEXTURE15 0x84CF
++#define GL_TEXTURE16 0x84D0
++#define GL_TEXTURE17 0x84D1
++#define GL_TEXTURE18 0x84D2
++#define GL_TEXTURE19 0x84D3
++#define GL_TEXTURE20 0x84D4
++#define GL_TEXTURE21 0x84D5
++#define GL_TEXTURE22 0x84D6
++#define GL_TEXTURE23 0x84D7
++#define GL_TEXTURE24 0x84D8
++#define GL_TEXTURE25 0x84D9
++#define GL_TEXTURE26 0x84DA
++#define GL_TEXTURE27 0x84DB
++#define GL_TEXTURE28 0x84DC
++#define GL_TEXTURE29 0x84DD
++#define GL_TEXTURE30 0x84DE
++#define GL_TEXTURE31 0x84DF
++#define GL_ACTIVE_TEXTURE 0x84E0
++#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1
++#define GL_MAX_TEXTURE_UNITS 0x84E2
++#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3
++#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4
++#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5
++#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6
++#define GL_MULTISAMPLE 0x809D
++#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
++#define GL_SAMPLE_ALPHA_TO_ONE 0x809F
++#define GL_SAMPLE_COVERAGE 0x80A0
++#define GL_SAMPLE_BUFFERS 0x80A8
++#define GL_SAMPLES 0x80A9
++#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
++#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
++#define GL_MULTISAMPLE_BIT 0x20000000
++#define GL_NORMAL_MAP 0x8511
++#define GL_REFLECTION_MAP 0x8512
++#define GL_TEXTURE_CUBE_MAP 0x8513
++#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514
++#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
++#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
++#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
++#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
++#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
++#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
++#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B
++#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
++#define GL_COMPRESSED_ALPHA 0x84E9
++#define GL_COMPRESSED_LUMINANCE 0x84EA
++#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB
++#define GL_COMPRESSED_INTENSITY 0x84EC
++#define GL_COMPRESSED_RGB 0x84ED
++#define GL_COMPRESSED_RGBA 0x84EE
++#define GL_TEXTURE_COMPRESSION_HINT 0x84EF
++#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0
++#define GL_TEXTURE_COMPRESSED 0x86A1
++#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
++#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
++#define GL_CLAMP_TO_BORDER 0x812D
++#define GL_COMBINE 0x8570
++#define GL_COMBINE_RGB 0x8571
++#define GL_COMBINE_ALPHA 0x8572
++#define GL_SOURCE0_RGB 0x8580
++#define GL_SOURCE1_RGB 0x8581
++#define GL_SOURCE2_RGB 0x8582
++#define GL_SOURCE0_ALPHA 0x8588
++#define GL_SOURCE1_ALPHA 0x8589
++#define GL_SOURCE2_ALPHA 0x858A
++#define GL_OPERAND0_RGB 0x8590
++#define GL_OPERAND1_RGB 0x8591
++#define GL_OPERAND2_RGB 0x8592
++#define GL_OPERAND0_ALPHA 0x8598
++#define GL_OPERAND1_ALPHA 0x8599
++#define GL_OPERAND2_ALPHA 0x859A
++#define GL_RGB_SCALE 0x8573
++#define GL_ADD_SIGNED 0x8574
++#define GL_INTERPOLATE 0x8575
++#define GL_SUBTRACT 0x84E7
++#define GL_CONSTANT 0x8576
++#define GL_PRIMARY_COLOR 0x8577
++#define GL_PREVIOUS 0x8578
++#define GL_DOT3_RGB 0x86AE
++#define GL_DOT3_RGBA 0x86AF
++#endif
++
++#ifndef GL_VERSION_1_4
++#define GL_BLEND_DST_RGB 0x80C8
++#define GL_BLEND_SRC_RGB 0x80C9
++#define GL_BLEND_DST_ALPHA 0x80CA
++#define GL_BLEND_SRC_ALPHA 0x80CB
++#define GL_POINT_SIZE_MIN 0x8126
++#define GL_POINT_SIZE_MAX 0x8127
++#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128
++#define GL_POINT_DISTANCE_ATTENUATION 0x8129
++#define GL_GENERATE_MIPMAP 0x8191
++#define GL_GENERATE_MIPMAP_HINT 0x8192
++#define GL_DEPTH_COMPONENT16 0x81A5
++#define GL_DEPTH_COMPONENT24 0x81A6
++#define GL_DEPTH_COMPONENT32 0x81A7
++#define GL_MIRRORED_REPEAT 0x8370
++#define GL_FOG_COORDINATE_SOURCE 0x8450
++#define GL_FOG_COORDINATE 0x8451
++#define GL_FRAGMENT_DEPTH 0x8452
++#define GL_CURRENT_FOG_COORDINATE 0x8453
++#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454
++#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455
++#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456
++#define GL_FOG_COORDINATE_ARRAY 0x8457
++#define GL_COLOR_SUM 0x8458
++#define GL_CURRENT_SECONDARY_COLOR 0x8459
++#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A
++#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B
++#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C
++#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D
++#define GL_SECONDARY_COLOR_ARRAY 0x845E
++#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD
++#define GL_TEXTURE_FILTER_CONTROL 0x8500
++#define GL_TEXTURE_LOD_BIAS 0x8501
++#define GL_INCR_WRAP 0x8507
++#define GL_DECR_WRAP 0x8508
++#define GL_TEXTURE_DEPTH_SIZE 0x884A
++#define GL_DEPTH_TEXTURE_MODE 0x884B
++#define GL_TEXTURE_COMPARE_MODE 0x884C
++#define GL_TEXTURE_COMPARE_FUNC 0x884D
++#define GL_COMPARE_R_TO_TEXTURE 0x884E
++#endif
++
++#ifndef GL_VERSION_1_5
++#define GL_BUFFER_SIZE 0x8764
++#define GL_BUFFER_USAGE 0x8765
++#define GL_QUERY_COUNTER_BITS 0x8864
++#define GL_CURRENT_QUERY 0x8865
++#define GL_QUERY_RESULT 0x8866
++#define GL_QUERY_RESULT_AVAILABLE 0x8867
++#define GL_ARRAY_BUFFER 0x8892
++#define GL_ELEMENT_ARRAY_BUFFER 0x8893
++#define GL_ARRAY_BUFFER_BINDING 0x8894
++#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895
++#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896
++#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897
++#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898
++#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899
++#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A
++#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B
++#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C
++#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D
++#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E
++#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
++#define GL_READ_ONLY 0x88B8
++#define GL_WRITE_ONLY 0x88B9
++#define GL_READ_WRITE 0x88BA
++#define GL_BUFFER_ACCESS 0x88BB
++#define GL_BUFFER_MAPPED 0x88BC
++#define GL_BUFFER_MAP_POINTER 0x88BD
++#define GL_STREAM_DRAW 0x88E0
++#define GL_STREAM_READ 0x88E1
++#define GL_STREAM_COPY 0x88E2
++#define GL_STATIC_DRAW 0x88E4
++#define GL_STATIC_READ 0x88E5
++#define GL_STATIC_COPY 0x88E6
++#define GL_DYNAMIC_DRAW 0x88E8
++#define GL_DYNAMIC_READ 0x88E9
++#define GL_DYNAMIC_COPY 0x88EA
++#define GL_SAMPLES_PASSED 0x8914
++#define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE
++#define GL_FOG_COORD GL_FOG_COORDINATE
++#define GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE
++#define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE
++#define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE
++#define GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER
++#define GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY
++#define GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING
++#define GL_SRC0_RGB GL_SOURCE0_RGB
++#define GL_SRC1_RGB GL_SOURCE1_RGB
++#define GL_SRC2_RGB GL_SOURCE2_RGB
++#define GL_SRC0_ALPHA GL_SOURCE0_ALPHA
++#define GL_SRC1_ALPHA GL_SOURCE1_ALPHA
++#define GL_SRC2_ALPHA GL_SOURCE2_ALPHA
++#endif
++
++#ifndef GL_VERSION_2_0
++#define GL_BLEND_EQUATION_RGB GL_BLEND_EQUATION
++#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622
++#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623
++#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624
++#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625
++#define GL_CURRENT_VERTEX_ATTRIB 0x8626
++#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642
++#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643
++#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645
++#define GL_STENCIL_BACK_FUNC 0x8800
++#define GL_STENCIL_BACK_FAIL 0x8801
++#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802
++#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803
++#define GL_MAX_DRAW_BUFFERS 0x8824
++#define GL_DRAW_BUFFER0 0x8825
++#define GL_DRAW_BUFFER1 0x8826
++#define GL_DRAW_BUFFER2 0x8827
++#define GL_DRAW_BUFFER3 0x8828
++#define GL_DRAW_BUFFER4 0x8829
++#define GL_DRAW_BUFFER5 0x882A
++#define GL_DRAW_BUFFER6 0x882B
++#define GL_DRAW_BUFFER7 0x882C
++#define GL_DRAW_BUFFER8 0x882D
++#define GL_DRAW_BUFFER9 0x882E
++#define GL_DRAW_BUFFER10 0x882F
++#define GL_DRAW_BUFFER11 0x8830
++#define GL_DRAW_BUFFER12 0x8831
++#define GL_DRAW_BUFFER13 0x8832
++#define GL_DRAW_BUFFER14 0x8833
++#define GL_DRAW_BUFFER15 0x8834
++#define GL_BLEND_EQUATION_ALPHA 0x883D
++#define GL_POINT_SPRITE 0x8861
++#define GL_COORD_REPLACE 0x8862
++#define GL_MAX_VERTEX_ATTRIBS 0x8869
++#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
++#define GL_MAX_TEXTURE_COORDS 0x8871
++#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872
++#define GL_FRAGMENT_SHADER 0x8B30
++#define GL_VERTEX_SHADER 0x8B31
++#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49
++#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A
++#define GL_MAX_VARYING_FLOATS 0x8B4B
++#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
++#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
++#define GL_SHADER_TYPE 0x8B4F
++#define GL_FLOAT_VEC2 0x8B50
++#define GL_FLOAT_VEC3 0x8B51
++#define GL_FLOAT_VEC4 0x8B52
++#define GL_INT_VEC2 0x8B53
++#define GL_INT_VEC3 0x8B54
++#define GL_INT_VEC4 0x8B55
++#define GL_BOOL 0x8B56
++#define GL_BOOL_VEC2 0x8B57
++#define GL_BOOL_VEC3 0x8B58
++#define GL_BOOL_VEC4 0x8B59
++#define GL_FLOAT_MAT2 0x8B5A
++#define GL_FLOAT_MAT3 0x8B5B
++#define GL_FLOAT_MAT4 0x8B5C
++#define GL_SAMPLER_1D 0x8B5D
++#define GL_SAMPLER_2D 0x8B5E
++#define GL_SAMPLER_3D 0x8B5F
++#define GL_SAMPLER_CUBE 0x8B60
++#define GL_SAMPLER_1D_SHADOW 0x8B61
++#define GL_SAMPLER_2D_SHADOW 0x8B62
++#define GL_DELETE_STATUS 0x8B80
++#define GL_COMPILE_STATUS 0x8B81
++#define GL_LINK_STATUS 0x8B82
++#define GL_VALIDATE_STATUS 0x8B83
++#define GL_INFO_LOG_LENGTH 0x8B84
++#define GL_ATTACHED_SHADERS 0x8B85
++#define GL_ACTIVE_UNIFORMS 0x8B86
++#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87
++#define GL_SHADER_SOURCE_LENGTH 0x8B88
++#define GL_ACTIVE_ATTRIBUTES 0x8B89
++#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A
++#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B
++#define GL_SHADING_LANGUAGE_VERSION 0x8B8C
++#define GL_CURRENT_PROGRAM 0x8B8D
++#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0
++#define GL_LOWER_LEFT 0x8CA1
++#define GL_UPPER_LEFT 0x8CA2
++#define GL_STENCIL_BACK_REF 0x8CA3
++#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4
++#define GL_STENCIL_BACK_WRITEMASK 0x8CA5
++#endif
++
++#ifndef GL_VERSION_2_1
++#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F
++#define GL_PIXEL_PACK_BUFFER 0x88EB
++#define GL_PIXEL_UNPACK_BUFFER 0x88EC
++#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED
++#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF
++#define GL_FLOAT_MAT2x3 0x8B65
++#define GL_FLOAT_MAT2x4 0x8B66
++#define GL_FLOAT_MAT3x2 0x8B67
++#define GL_FLOAT_MAT3x4 0x8B68
++#define GL_FLOAT_MAT4x2 0x8B69
++#define GL_FLOAT_MAT4x3 0x8B6A
++#define GL_SRGB 0x8C40
++#define GL_SRGB8 0x8C41
++#define GL_SRGB_ALPHA 0x8C42
++#define GL_SRGB8_ALPHA8 0x8C43
++#define GL_SLUMINANCE_ALPHA 0x8C44
++#define GL_SLUMINANCE8_ALPHA8 0x8C45
++#define GL_SLUMINANCE 0x8C46
++#define GL_SLUMINANCE8 0x8C47
++#define GL_COMPRESSED_SRGB 0x8C48
++#define GL_COMPRESSED_SRGB_ALPHA 0x8C49
++#define GL_COMPRESSED_SLUMINANCE 0x8C4A
++#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B
++#endif
++
++#ifndef GL_ARB_multitexture
++#define GL_TEXTURE0_ARB 0x84C0
++#define GL_TEXTURE1_ARB 0x84C1
++#define GL_TEXTURE2_ARB 0x84C2
++#define GL_TEXTURE3_ARB 0x84C3
++#define GL_TEXTURE4_ARB 0x84C4
++#define GL_TEXTURE5_ARB 0x84C5
++#define GL_TEXTURE6_ARB 0x84C6
++#define GL_TEXTURE7_ARB 0x84C7
++#define GL_TEXTURE8_ARB 0x84C8
++#define GL_TEXTURE9_ARB 0x84C9
++#define GL_TEXTURE10_ARB 0x84CA
++#define GL_TEXTURE11_ARB 0x84CB
++#define GL_TEXTURE12_ARB 0x84CC
++#define GL_TEXTURE13_ARB 0x84CD
++#define GL_TEXTURE14_ARB 0x84CE
++#define GL_TEXTURE15_ARB 0x84CF
++#define GL_TEXTURE16_ARB 0x84D0
++#define GL_TEXTURE17_ARB 0x84D1
++#define GL_TEXTURE18_ARB 0x84D2
++#define GL_TEXTURE19_ARB 0x84D3
++#define GL_TEXTURE20_ARB 0x84D4
++#define GL_TEXTURE21_ARB 0x84D5
++#define GL_TEXTURE22_ARB 0x84D6
++#define GL_TEXTURE23_ARB 0x84D7
++#define GL_TEXTURE24_ARB 0x84D8
++#define GL_TEXTURE25_ARB 0x84D9
++#define GL_TEXTURE26_ARB 0x84DA
++#define GL_TEXTURE27_ARB 0x84DB
++#define GL_TEXTURE28_ARB 0x84DC
++#define GL_TEXTURE29_ARB 0x84DD
++#define GL_TEXTURE30_ARB 0x84DE
++#define GL_TEXTURE31_ARB 0x84DF
++#define GL_ACTIVE_TEXTURE_ARB 0x84E0
++#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1
++#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2
++#endif
++
++#ifndef GL_ARB_transpose_matrix
++#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3
++#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4
++#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5
++#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6
++#endif
++
++#ifndef GL_ARB_multisample
++#define GL_MULTISAMPLE_ARB 0x809D
++#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E
++#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F
++#define GL_SAMPLE_COVERAGE_ARB 0x80A0
++#define GL_SAMPLE_BUFFERS_ARB 0x80A8
++#define GL_SAMPLES_ARB 0x80A9
++#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA
++#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB
++#define GL_MULTISAMPLE_BIT_ARB 0x20000000
++#endif
++
++#ifndef GL_ARB_texture_env_add
++#endif
++
++#ifndef GL_ARB_texture_cube_map
++#define GL_NORMAL_MAP_ARB 0x8511
++#define GL_REFLECTION_MAP_ARB 0x8512
++#define GL_TEXTURE_CUBE_MAP_ARB 0x8513
++#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514
++#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515
++#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516
++#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517
++#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518
++#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519
++#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A
++#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B
++#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C
++#endif
++
++#ifndef GL_ARB_texture_compression
++#define GL_COMPRESSED_ALPHA_ARB 0x84E9
++#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA
++#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB
++#define GL_COMPRESSED_INTENSITY_ARB 0x84EC
++#define GL_COMPRESSED_RGB_ARB 0x84ED
++#define GL_COMPRESSED_RGBA_ARB 0x84EE
++#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF
++#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0
++#define GL_TEXTURE_COMPRESSED_ARB 0x86A1
++#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2
++#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3
++#endif
++
++#ifndef GL_ARB_texture_border_clamp
++#define GL_CLAMP_TO_BORDER_ARB 0x812D
++#endif
++
++#ifndef GL_ARB_point_parameters
++#define GL_POINT_SIZE_MIN_ARB 0x8126
++#define GL_POINT_SIZE_MAX_ARB 0x8127
++#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128
++#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129
++#endif
++
++#ifndef GL_ARB_vertex_blend
++#define GL_MAX_VERTEX_UNITS_ARB 0x86A4
++#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5
++#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6
++#define GL_VERTEX_BLEND_ARB 0x86A7
++#define GL_CURRENT_WEIGHT_ARB 0x86A8
++#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9
++#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA
++#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB
++#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC
++#define GL_WEIGHT_ARRAY_ARB 0x86AD
++#define GL_MODELVIEW0_ARB 0x1700
++#define GL_MODELVIEW1_ARB 0x850A
++#define GL_MODELVIEW2_ARB 0x8722
++#define GL_MODELVIEW3_ARB 0x8723
++#define GL_MODELVIEW4_ARB 0x8724
++#define GL_MODELVIEW5_ARB 0x8725
++#define GL_MODELVIEW6_ARB 0x8726
++#define GL_MODELVIEW7_ARB 0x8727
++#define GL_MODELVIEW8_ARB 0x8728
++#define GL_MODELVIEW9_ARB 0x8729
++#define GL_MODELVIEW10_ARB 0x872A
++#define GL_MODELVIEW11_ARB 0x872B
++#define GL_MODELVIEW12_ARB 0x872C
++#define GL_MODELVIEW13_ARB 0x872D
++#define GL_MODELVIEW14_ARB 0x872E
++#define GL_MODELVIEW15_ARB 0x872F
++#define GL_MODELVIEW16_ARB 0x8730
++#define GL_MODELVIEW17_ARB 0x8731
++#define GL_MODELVIEW18_ARB 0x8732
++#define GL_MODELVIEW19_ARB 0x8733
++#define GL_MODELVIEW20_ARB 0x8734
++#define GL_MODELVIEW21_ARB 0x8735
++#define GL_MODELVIEW22_ARB 0x8736
++#define GL_MODELVIEW23_ARB 0x8737
++#define GL_MODELVIEW24_ARB 0x8738
++#define GL_MODELVIEW25_ARB 0x8739
++#define GL_MODELVIEW26_ARB 0x873A
++#define GL_MODELVIEW27_ARB 0x873B
++#define GL_MODELVIEW28_ARB 0x873C
++#define GL_MODELVIEW29_ARB 0x873D
++#define GL_MODELVIEW30_ARB 0x873E
++#define GL_MODELVIEW31_ARB 0x873F
++#endif
++
++#ifndef GL_ARB_matrix_palette
++#define GL_MATRIX_PALETTE_ARB 0x8840
++#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841
++#define GL_MAX_PALETTE_MATRICES_ARB 0x8842
++#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843
++#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844
++#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845
++#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846
++#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847
++#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848
++#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849
++#endif
++
++#ifndef GL_ARB_texture_env_combine
++#define GL_COMBINE_ARB 0x8570
++#define GL_COMBINE_RGB_ARB 0x8571
++#define GL_COMBINE_ALPHA_ARB 0x8572
++#define GL_SOURCE0_RGB_ARB 0x8580
++#define GL_SOURCE1_RGB_ARB 0x8581
++#define GL_SOURCE2_RGB_ARB 0x8582
++#define GL_SOURCE0_ALPHA_ARB 0x8588
++#define GL_SOURCE1_ALPHA_ARB 0x8589
++#define GL_SOURCE2_ALPHA_ARB 0x858A
++#define GL_OPERAND0_RGB_ARB 0x8590
++#define GL_OPERAND1_RGB_ARB 0x8591
++#define GL_OPERAND2_RGB_ARB 0x8592
++#define GL_OPERAND0_ALPHA_ARB 0x8598
++#define GL_OPERAND1_ALPHA_ARB 0x8599
++#define GL_OPERAND2_ALPHA_ARB 0x859A
++#define GL_RGB_SCALE_ARB 0x8573
++#define GL_ADD_SIGNED_ARB 0x8574
++#define GL_INTERPOLATE_ARB 0x8575
++#define GL_SUBTRACT_ARB 0x84E7
++#define GL_CONSTANT_ARB 0x8576
++#define GL_PRIMARY_COLOR_ARB 0x8577
++#define GL_PREVIOUS_ARB 0x8578
++#endif
++
++#ifndef GL_ARB_texture_env_crossbar
++#endif
++
++#ifndef GL_ARB_texture_env_dot3
++#define GL_DOT3_RGB_ARB 0x86AE
++#define GL_DOT3_RGBA_ARB 0x86AF
++#endif
++
++#ifndef GL_ARB_texture_mirrored_repeat
++#define GL_MIRRORED_REPEAT_ARB 0x8370
++#endif
++
++#ifndef GL_ARB_depth_texture
++#define GL_DEPTH_COMPONENT16_ARB 0x81A5
++#define GL_DEPTH_COMPONENT24_ARB 0x81A6
++#define GL_DEPTH_COMPONENT32_ARB 0x81A7
++#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A
++#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B
++#endif
++
++#ifndef GL_ARB_shadow
++#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C
++#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D
++#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E
++#endif
++
++#ifndef GL_ARB_shadow_ambient
++#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF
++#endif
++
++#ifndef GL_ARB_window_pos
++#endif
++
++#ifndef GL_ARB_vertex_program
++#define GL_COLOR_SUM_ARB 0x8458
++#define GL_VERTEX_PROGRAM_ARB 0x8620
++#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622
++#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623
++#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624
++#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625
++#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626
++#define GL_PROGRAM_LENGTH_ARB 0x8627
++#define GL_PROGRAM_STRING_ARB 0x8628
++#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E
++#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F
++#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640
++#define GL_CURRENT_MATRIX_ARB 0x8641
++#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642
++#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643
++#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645
++#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B
++#define GL_PROGRAM_BINDING_ARB 0x8677
++#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869
++#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A
++#define GL_PROGRAM_ERROR_STRING_ARB 0x8874
++#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875
++#define GL_PROGRAM_FORMAT_ARB 0x8876
++#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0
++#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1
++#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2
++#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3
++#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4
++#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5
++#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6
++#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7
++#define GL_PROGRAM_PARAMETERS_ARB 0x88A8
++#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9
++#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA
++#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB
++#define GL_PROGRAM_ATTRIBS_ARB 0x88AC
++#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD
++#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE
++#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF
++#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0
++#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1
++#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2
++#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3
++#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4
++#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5
++#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6
++#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7
++#define GL_MATRIX0_ARB 0x88C0
++#define GL_MATRIX1_ARB 0x88C1
++#define GL_MATRIX2_ARB 0x88C2
++#define GL_MATRIX3_ARB 0x88C3
++#define GL_MATRIX4_ARB 0x88C4
++#define GL_MATRIX5_ARB 0x88C5
++#define GL_MATRIX6_ARB 0x88C6
++#define GL_MATRIX7_ARB 0x88C7
++#define GL_MATRIX8_ARB 0x88C8
++#define GL_MATRIX9_ARB 0x88C9
++#define GL_MATRIX10_ARB 0x88CA
++#define GL_MATRIX11_ARB 0x88CB
++#define GL_MATRIX12_ARB 0x88CC
++#define GL_MATRIX13_ARB 0x88CD
++#define GL_MATRIX14_ARB 0x88CE
++#define GL_MATRIX15_ARB 0x88CF
++#define GL_MATRIX16_ARB 0x88D0
++#define GL_MATRIX17_ARB 0x88D1
++#define GL_MATRIX18_ARB 0x88D2
++#define GL_MATRIX19_ARB 0x88D3
++#define GL_MATRIX20_ARB 0x88D4
++#define GL_MATRIX21_ARB 0x88D5
++#define GL_MATRIX22_ARB 0x88D6
++#define GL_MATRIX23_ARB 0x88D7
++#define GL_MATRIX24_ARB 0x88D8
++#define GL_MATRIX25_ARB 0x88D9
++#define GL_MATRIX26_ARB 0x88DA
++#define GL_MATRIX27_ARB 0x88DB
++#define GL_MATRIX28_ARB 0x88DC
++#define GL_MATRIX29_ARB 0x88DD
++#define GL_MATRIX30_ARB 0x88DE
++#define GL_MATRIX31_ARB 0x88DF
++#endif
++
++#ifndef GL_ARB_fragment_program
++#define GL_FRAGMENT_PROGRAM_ARB 0x8804
++#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805
++#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806
++#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807
++#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808
++#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809
++#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A
++#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B
++#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C
++#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D
++#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E
++#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F
++#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810
++#define GL_MAX_TEXTURE_COORDS_ARB 0x8871
++#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872
++#endif
++
++#ifndef GL_ARB_vertex_buffer_object
++#define GL_BUFFER_SIZE_ARB 0x8764
++#define GL_BUFFER_USAGE_ARB 0x8765
++#define GL_ARRAY_BUFFER_ARB 0x8892
++#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893
++#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894
++#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895
++#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896
++#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897
++#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898
++#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899
++#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A
++#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B
++#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C
++#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D
++#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E
++#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F
++#define GL_READ_ONLY_ARB 0x88B8
++#define GL_WRITE_ONLY_ARB 0x88B9
++#define GL_READ_WRITE_ARB 0x88BA
++#define GL_BUFFER_ACCESS_ARB 0x88BB
++#define GL_BUFFER_MAPPED_ARB 0x88BC
++#define GL_BUFFER_MAP_POINTER_ARB 0x88BD
++#define GL_STREAM_DRAW_ARB 0x88E0
++#define GL_STREAM_READ_ARB 0x88E1
++#define GL_STREAM_COPY_ARB 0x88E2
++#define GL_STATIC_DRAW_ARB 0x88E4
++#define GL_STATIC_READ_ARB 0x88E5
++#define GL_STATIC_COPY_ARB 0x88E6
++#define GL_DYNAMIC_DRAW_ARB 0x88E8
++#define GL_DYNAMIC_READ_ARB 0x88E9
++#define GL_DYNAMIC_COPY_ARB 0x88EA
++#endif
++
++#ifndef GL_ARB_occlusion_query
++#define GL_QUERY_COUNTER_BITS_ARB 0x8864
++#define GL_CURRENT_QUERY_ARB 0x8865
++#define GL_QUERY_RESULT_ARB 0x8866
++#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867
++#define GL_SAMPLES_PASSED_ARB 0x8914
++#endif
++
++#ifndef GL_ARB_shader_objects
++#define GL_PROGRAM_OBJECT_ARB 0x8B40
++#define GL_SHADER_OBJECT_ARB 0x8B48
++#define GL_OBJECT_TYPE_ARB 0x8B4E
++#define GL_OBJECT_SUBTYPE_ARB 0x8B4F
++#define GL_FLOAT_VEC2_ARB 0x8B50
++#define GL_FLOAT_VEC3_ARB 0x8B51
++#define GL_FLOAT_VEC4_ARB 0x8B52
++#define GL_INT_VEC2_ARB 0x8B53
++#define GL_INT_VEC3_ARB 0x8B54
++#define GL_INT_VEC4_ARB 0x8B55
++#define GL_BOOL_ARB 0x8B56
++#define GL_BOOL_VEC2_ARB 0x8B57
++#define GL_BOOL_VEC3_ARB 0x8B58
++#define GL_BOOL_VEC4_ARB 0x8B59
++#define GL_FLOAT_MAT2_ARB 0x8B5A
++#define GL_FLOAT_MAT3_ARB 0x8B5B
++#define GL_FLOAT_MAT4_ARB 0x8B5C
++#define GL_SAMPLER_1D_ARB 0x8B5D
++#define GL_SAMPLER_2D_ARB 0x8B5E
++#define GL_SAMPLER_3D_ARB 0x8B5F
++#define GL_SAMPLER_CUBE_ARB 0x8B60
++#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61
++#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62
++#define GL_SAMPLER_2D_RECT_ARB 0x8B63
++#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64
++#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80
++#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81
++#define GL_OBJECT_LINK_STATUS_ARB 0x8B82
++#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83
++#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84
++#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85
++#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86
++#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87
++#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88
++#endif
++
++#ifndef GL_ARB_vertex_shader
++#define GL_VERTEX_SHADER_ARB 0x8B31
++#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A
++#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B
++#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C
++#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D
++#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89
++#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A
++#endif
++
++#ifndef GL_ARB_fragment_shader
++#define GL_FRAGMENT_SHADER_ARB 0x8B30
++#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49
++#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B
++#endif
++
++#ifndef GL_ARB_shading_language_100
++#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C
++#endif
++
++#ifndef GL_ARB_texture_non_power_of_two
++#endif
++
++#ifndef GL_ARB_point_sprite
++#define GL_POINT_SPRITE_ARB 0x8861
++#define GL_COORD_REPLACE_ARB 0x8862
++#endif
++
++#ifndef GL_ARB_fragment_program_shadow
++#endif
++
++#ifndef GL_ARB_draw_buffers
++#define GL_MAX_DRAW_BUFFERS_ARB 0x8824
++#define GL_DRAW_BUFFER0_ARB 0x8825
++#define GL_DRAW_BUFFER1_ARB 0x8826
++#define GL_DRAW_BUFFER2_ARB 0x8827
++#define GL_DRAW_BUFFER3_ARB 0x8828
++#define GL_DRAW_BUFFER4_ARB 0x8829
++#define GL_DRAW_BUFFER5_ARB 0x882A
++#define GL_DRAW_BUFFER6_ARB 0x882B
++#define GL_DRAW_BUFFER7_ARB 0x882C
++#define GL_DRAW_BUFFER8_ARB 0x882D
++#define GL_DRAW_BUFFER9_ARB 0x882E
++#define GL_DRAW_BUFFER10_ARB 0x882F
++#define GL_DRAW_BUFFER11_ARB 0x8830
++#define GL_DRAW_BUFFER12_ARB 0x8831
++#define GL_DRAW_BUFFER13_ARB 0x8832
++#define GL_DRAW_BUFFER14_ARB 0x8833
++#define GL_DRAW_BUFFER15_ARB 0x8834
++#endif
++
++#ifndef GL_ARB_texture_rectangle
++#define GL_TEXTURE_RECTANGLE_ARB 0x84F5
++#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6
++#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7
++#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8
++#endif
++
++#ifndef GL_ARB_color_buffer_float
++#define GL_RGBA_FLOAT_MODE_ARB 0x8820
++#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A
++#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B
++#define GL_CLAMP_READ_COLOR_ARB 0x891C
++#define GL_FIXED_ONLY_ARB 0x891D
++#endif
++
++#ifndef GL_ARB_half_float_pixel
++#define GL_HALF_FLOAT_ARB 0x140B
++#endif
++
++#ifndef GL_ARB_texture_float
++#define GL_TEXTURE_RED_TYPE_ARB 0x8C10
++#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11
++#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12
++#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13
++#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14
++#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15
++#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16
++#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17
++#define GL_RGBA32F_ARB 0x8814
++#define GL_RGB32F_ARB 0x8815
++#define GL_ALPHA32F_ARB 0x8816
++#define GL_INTENSITY32F_ARB 0x8817
++#define GL_LUMINANCE32F_ARB 0x8818
++#define GL_LUMINANCE_ALPHA32F_ARB 0x8819
++#define GL_RGBA16F_ARB 0x881A
++#define GL_RGB16F_ARB 0x881B
++#define GL_ALPHA16F_ARB 0x881C
++#define GL_INTENSITY16F_ARB 0x881D
++#define GL_LUMINANCE16F_ARB 0x881E
++#define GL_LUMINANCE_ALPHA16F_ARB 0x881F
++#endif
++
++#ifndef GL_ARB_pixel_buffer_object
++#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB
++#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC
++#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED
++#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF
++#endif
++
++#ifndef GL_EXT_abgr
++#define GL_ABGR_EXT 0x8000
++#endif
++
++#ifndef GL_EXT_blend_color
++#define GL_CONSTANT_COLOR_EXT 0x8001
++#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002
++#define GL_CONSTANT_ALPHA_EXT 0x8003
++#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004
++#define GL_BLEND_COLOR_EXT 0x8005
++#endif
++
++#ifndef GL_EXT_polygon_offset
++#define GL_POLYGON_OFFSET_EXT 0x8037
++#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038
++#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039
++#endif
++
++#ifndef GL_EXT_texture
++#define GL_ALPHA4_EXT 0x803B
++#define GL_ALPHA8_EXT 0x803C
++#define GL_ALPHA12_EXT 0x803D
++#define GL_ALPHA16_EXT 0x803E
++#define GL_LUMINANCE4_EXT 0x803F
++#define GL_LUMINANCE8_EXT 0x8040
++#define GL_LUMINANCE12_EXT 0x8041
++#define GL_LUMINANCE16_EXT 0x8042
++#define GL_LUMINANCE4_ALPHA4_EXT 0x8043
++#define GL_LUMINANCE6_ALPHA2_EXT 0x8044
++#define GL_LUMINANCE8_ALPHA8_EXT 0x8045
++#define GL_LUMINANCE12_ALPHA4_EXT 0x8046
++#define GL_LUMINANCE12_ALPHA12_EXT 0x8047
++#define GL_LUMINANCE16_ALPHA16_EXT 0x8048
++#define GL_INTENSITY_EXT 0x8049
++#define GL_INTENSITY4_EXT 0x804A
++#define GL_INTENSITY8_EXT 0x804B
++#define GL_INTENSITY12_EXT 0x804C
++#define GL_INTENSITY16_EXT 0x804D
++#define GL_RGB2_EXT 0x804E
++#define GL_RGB4_EXT 0x804F
++#define GL_RGB5_EXT 0x8050
++#define GL_RGB8_EXT 0x8051
++#define GL_RGB10_EXT 0x8052
++#define GL_RGB12_EXT 0x8053
++#define GL_RGB16_EXT 0x8054
++#define GL_RGBA2_EXT 0x8055
++#define GL_RGBA4_EXT 0x8056
++#define GL_RGB5_A1_EXT 0x8057
++#define GL_RGBA8_EXT 0x8058
++#define GL_RGB10_A2_EXT 0x8059
++#define GL_RGBA12_EXT 0x805A
++#define GL_RGBA16_EXT 0x805B
++#define GL_TEXTURE_RED_SIZE_EXT 0x805C
++#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D
++#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E
++#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F
++#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060
++#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061
++#define GL_REPLACE_EXT 0x8062
++#define GL_PROXY_TEXTURE_1D_EXT 0x8063
++#define GL_PROXY_TEXTURE_2D_EXT 0x8064
++#define GL_TEXTURE_TOO_LARGE_EXT 0x8065
++#endif
++
++#ifndef GL_EXT_texture3D
++#define GL_PACK_SKIP_IMAGES_EXT 0x806B
++#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C
++#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D
++#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E
++#define GL_TEXTURE_3D_EXT 0x806F
++#define GL_PROXY_TEXTURE_3D_EXT 0x8070
++#define GL_TEXTURE_DEPTH_EXT 0x8071
++#define GL_TEXTURE_WRAP_R_EXT 0x8072
++#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073
++#endif
++
++#ifndef GL_SGIS_texture_filter4
++#define GL_FILTER4_SGIS 0x8146
++#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147
++#endif
++
++#ifndef GL_EXT_subtexture
++#endif
++
++#ifndef GL_EXT_copy_texture
++#endif
++
++#ifndef GL_EXT_histogram
++#define GL_HISTOGRAM_EXT 0x8024
++#define GL_PROXY_HISTOGRAM_EXT 0x8025
++#define GL_HISTOGRAM_WIDTH_EXT 0x8026
++#define GL_HISTOGRAM_FORMAT_EXT 0x8027
++#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028
++#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029
++#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A
++#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B
++#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C
++#define GL_HISTOGRAM_SINK_EXT 0x802D
++#define GL_MINMAX_EXT 0x802E
++#define GL_MINMAX_FORMAT_EXT 0x802F
++#define GL_MINMAX_SINK_EXT 0x8030
++#define GL_TABLE_TOO_LARGE_EXT 0x8031
++#endif
++
++#ifndef GL_EXT_convolution
++#define GL_CONVOLUTION_1D_EXT 0x8010
++#define GL_CONVOLUTION_2D_EXT 0x8011
++#define GL_SEPARABLE_2D_EXT 0x8012
++#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013
++#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014
++#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015
++#define GL_REDUCE_EXT 0x8016
++#define GL_CONVOLUTION_FORMAT_EXT 0x8017
++#define GL_CONVOLUTION_WIDTH_EXT 0x8018
++#define GL_CONVOLUTION_HEIGHT_EXT 0x8019
++#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A
++#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B
++#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C
++#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D
++#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E
++#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F
++#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020
++#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021
++#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022
++#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023
++#endif
++
++#ifndef GL_SGI_color_matrix
++#define GL_COLOR_MATRIX_SGI 0x80B1
++#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2
++#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3
++#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4
++#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5
++#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6
++#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7
++#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8
++#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9
++#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA
++#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB
++#endif
++
++#ifndef GL_SGI_color_table
++#define GL_COLOR_TABLE_SGI 0x80D0
++#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1
++#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2
++#define GL_PROXY_COLOR_TABLE_SGI 0x80D3
++#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4
++#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5
++#define GL_COLOR_TABLE_SCALE_SGI 0x80D6
++#define GL_COLOR_TABLE_BIAS_SGI 0x80D7
++#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8
++#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9
++#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA
++#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB
++#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC
++#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD
++#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE
++#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF
++#endif
++
++#ifndef GL_SGIS_pixel_texture
++#define GL_PIXEL_TEXTURE_SGIS 0x8353
++#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354
++#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355
++#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356
++#endif
++
++#ifndef GL_SGIX_pixel_texture
++#define GL_PIXEL_TEX_GEN_SGIX 0x8139
++#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B
++#endif
++
++#ifndef GL_SGIS_texture4D
++#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130
++#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131
++#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132
++#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133
++#define GL_TEXTURE_4D_SGIS 0x8134
++#define GL_PROXY_TEXTURE_4D_SGIS 0x8135
++#define GL_TEXTURE_4DSIZE_SGIS 0x8136
++#define GL_TEXTURE_WRAP_Q_SGIS 0x8137
++#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138
++#define GL_TEXTURE_4D_BINDING_SGIS 0x814F
++#endif
++
++#ifndef GL_SGI_texture_color_table
++#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC
++#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD
++#endif
++
++#ifndef GL_EXT_cmyka
++#define GL_CMYK_EXT 0x800C
++#define GL_CMYKA_EXT 0x800D
++#define GL_PACK_CMYK_HINT_EXT 0x800E
++#define GL_UNPACK_CMYK_HINT_EXT 0x800F
++#endif
++
++#ifndef GL_EXT_texture_object
++#define GL_TEXTURE_PRIORITY_EXT 0x8066
++#define GL_TEXTURE_RESIDENT_EXT 0x8067
++#define GL_TEXTURE_1D_BINDING_EXT 0x8068
++#define GL_TEXTURE_2D_BINDING_EXT 0x8069
++#define GL_TEXTURE_3D_BINDING_EXT 0x806A
++#endif
++
++#ifndef GL_SGIS_detail_texture
++#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095
++#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096
++#define GL_LINEAR_DETAIL_SGIS 0x8097
++#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098
++#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099
++#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A
++#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B
++#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C
++#endif
++
++#ifndef GL_SGIS_sharpen_texture
++#define GL_LINEAR_SHARPEN_SGIS 0x80AD
++#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE
++#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF
++#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0
++#endif
++
++#ifndef GL_EXT_packed_pixels
++#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032
++#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033
++#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034
++#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035
++#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036
++#endif
++
++#ifndef GL_SGIS_texture_lod
++#define GL_TEXTURE_MIN_LOD_SGIS 0x813A
++#define GL_TEXTURE_MAX_LOD_SGIS 0x813B
++#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C
++#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D
++#endif
++
++#ifndef GL_SGIS_multisample
++#define GL_MULTISAMPLE_SGIS 0x809D
++#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E
++#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F
++#define GL_SAMPLE_MASK_SGIS 0x80A0
++#define GL_1PASS_SGIS 0x80A1
++#define GL_2PASS_0_SGIS 0x80A2
++#define GL_2PASS_1_SGIS 0x80A3
++#define GL_4PASS_0_SGIS 0x80A4
++#define GL_4PASS_1_SGIS 0x80A5
++#define GL_4PASS_2_SGIS 0x80A6
++#define GL_4PASS_3_SGIS 0x80A7
++#define GL_SAMPLE_BUFFERS_SGIS 0x80A8
++#define GL_SAMPLES_SGIS 0x80A9
++#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA
++#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB
++#define GL_SAMPLE_PATTERN_SGIS 0x80AC
++#endif
++
++#ifndef GL_EXT_rescale_normal
++#define GL_RESCALE_NORMAL_EXT 0x803A
++#endif
++
++#ifndef GL_EXT_vertex_array
++#define GL_VERTEX_ARRAY_EXT 0x8074
++#define GL_NORMAL_ARRAY_EXT 0x8075
++#define GL_COLOR_ARRAY_EXT 0x8076
++#define GL_INDEX_ARRAY_EXT 0x8077
++#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078
++#define GL_EDGE_FLAG_ARRAY_EXT 0x8079
++#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A
++#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B
++#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C
++#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D
++#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E
++#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F
++#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080
++#define GL_COLOR_ARRAY_SIZE_EXT 0x8081
++#define GL_COLOR_ARRAY_TYPE_EXT 0x8082
++#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083
++#define GL_COLOR_ARRAY_COUNT_EXT 0x8084
++#define GL_INDEX_ARRAY_TYPE_EXT 0x8085
++#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086
++#define GL_INDEX_ARRAY_COUNT_EXT 0x8087
++#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088
++#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089
++#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A
++#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B
++#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C
++#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D
++#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E
++#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F
++#define GL_COLOR_ARRAY_POINTER_EXT 0x8090
++#define GL_INDEX_ARRAY_POINTER_EXT 0x8091
++#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092
++#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093
++#endif
++
++#ifndef GL_EXT_misc_attribute
++#endif
++
++#ifndef GL_SGIS_generate_mipmap
++#define GL_GENERATE_MIPMAP_SGIS 0x8191
++#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192
++#endif
++
++#ifndef GL_SGIX_clipmap
++#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170
++#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171
++#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172
++#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173
++#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174
++#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175
++#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176
++#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177
++#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178
++#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D
++#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E
++#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F
++#endif
++
++#ifndef GL_SGIX_shadow
++#define GL_TEXTURE_COMPARE_SGIX 0x819A
++#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B
++#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C
++#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D
++#endif
++
++#ifndef GL_SGIS_texture_edge_clamp
++#define GL_CLAMP_TO_EDGE_SGIS 0x812F
++#endif
++
++#ifndef GL_SGIS_texture_border_clamp
++#define GL_CLAMP_TO_BORDER_SGIS 0x812D
++#endif
++
++#ifndef GL_EXT_blend_minmax
++#define GL_FUNC_ADD_EXT 0x8006
++#define GL_MIN_EXT 0x8007
++#define GL_MAX_EXT 0x8008
++#define GL_BLEND_EQUATION_EXT 0x8009
++#endif
++
++#ifndef GL_EXT_blend_subtract
++#define GL_FUNC_SUBTRACT_EXT 0x800A
++#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B
++#endif
++
++#ifndef GL_EXT_blend_logic_op
++#endif
++
++#ifndef GL_SGIX_interlace
++#define GL_INTERLACE_SGIX 0x8094
++#endif
++
++#ifndef GL_SGIX_pixel_tiles
++#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E
++#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F
++#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140
++#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141
++#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142
++#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143
++#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144
++#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145
++#endif
++
++#ifndef GL_SGIS_texture_select
++#define GL_DUAL_ALPHA4_SGIS 0x8110
++#define GL_DUAL_ALPHA8_SGIS 0x8111
++#define GL_DUAL_ALPHA12_SGIS 0x8112
++#define GL_DUAL_ALPHA16_SGIS 0x8113
++#define GL_DUAL_LUMINANCE4_SGIS 0x8114
++#define GL_DUAL_LUMINANCE8_SGIS 0x8115
++#define GL_DUAL_LUMINANCE12_SGIS 0x8116
++#define GL_DUAL_LUMINANCE16_SGIS 0x8117
++#define GL_DUAL_INTENSITY4_SGIS 0x8118
++#define GL_DUAL_INTENSITY8_SGIS 0x8119
++#define GL_DUAL_INTENSITY12_SGIS 0x811A
++#define GL_DUAL_INTENSITY16_SGIS 0x811B
++#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C
++#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D
++#define GL_QUAD_ALPHA4_SGIS 0x811E
++#define GL_QUAD_ALPHA8_SGIS 0x811F
++#define GL_QUAD_LUMINANCE4_SGIS 0x8120
++#define GL_QUAD_LUMINANCE8_SGIS 0x8121
++#define GL_QUAD_INTENSITY4_SGIS 0x8122
++#define GL_QUAD_INTENSITY8_SGIS 0x8123
++#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124
++#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125
++#endif
++
++#ifndef GL_SGIX_sprite
++#define GL_SPRITE_SGIX 0x8148
++#define GL_SPRITE_MODE_SGIX 0x8149
++#define GL_SPRITE_AXIS_SGIX 0x814A
++#define GL_SPRITE_TRANSLATION_SGIX 0x814B
++#define GL_SPRITE_AXIAL_SGIX 0x814C
++#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D
++#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E
++#endif
++
++#ifndef GL_SGIX_texture_multi_buffer
++#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E
++#endif
++
++#ifndef GL_EXT_point_parameters
++#define GL_POINT_SIZE_MIN_EXT 0x8126
++#define GL_POINT_SIZE_MAX_EXT 0x8127
++#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128
++#define GL_DISTANCE_ATTENUATION_EXT 0x8129
++#endif
++
++#ifndef GL_SGIS_point_parameters
++#define GL_POINT_SIZE_MIN_SGIS 0x8126
++#define GL_POINT_SIZE_MAX_SGIS 0x8127
++#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128
++#define GL_DISTANCE_ATTENUATION_SGIS 0x8129
++#endif
++
++#ifndef GL_SGIX_instruments
++#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180
++#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181
++#endif
++
++#ifndef GL_SGIX_texture_scale_bias
++#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179
++#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A
++#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B
++#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C
++#endif
++
++#ifndef GL_SGIX_framezoom
++#define GL_FRAMEZOOM_SGIX 0x818B
++#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C
++#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D
++#endif
++
++#ifndef GL_SGIX_tag_sample_buffer
++#endif
++
++#ifndef GL_FfdMaskSGIX
++#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001
++#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002
++#endif
++
++#ifndef GL_SGIX_polynomial_ffd
++#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194
++#define GL_TEXTURE_DEFORMATION_SGIX 0x8195
++#define GL_DEFORMATIONS_MASK_SGIX 0x8196
++#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197
++#endif
++
++#ifndef GL_SGIX_reference_plane
++#define GL_REFERENCE_PLANE_SGIX 0x817D
++#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E
++#endif
++
++#ifndef GL_SGIX_flush_raster
++#endif
++
++#ifndef GL_SGIX_depth_texture
++#define GL_DEPTH_COMPONENT16_SGIX 0x81A5
++#define GL_DEPTH_COMPONENT24_SGIX 0x81A6
++#define GL_DEPTH_COMPONENT32_SGIX 0x81A7
++#endif
++
++#ifndef GL_SGIS_fog_function
++#define GL_FOG_FUNC_SGIS 0x812A
++#define GL_FOG_FUNC_POINTS_SGIS 0x812B
++#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C
++#endif
++
++#ifndef GL_SGIX_fog_offset
++#define GL_FOG_OFFSET_SGIX 0x8198
++#define GL_FOG_OFFSET_VALUE_SGIX 0x8199
++#endif
++
++#ifndef GL_HP_image_transform
++#define GL_IMAGE_SCALE_X_HP 0x8155
++#define GL_IMAGE_SCALE_Y_HP 0x8156
++#define GL_IMAGE_TRANSLATE_X_HP 0x8157
++#define GL_IMAGE_TRANSLATE_Y_HP 0x8158
++#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159
++#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A
++#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B
++#define GL_IMAGE_MAG_FILTER_HP 0x815C
++#define GL_IMAGE_MIN_FILTER_HP 0x815D
++#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E
++#define GL_CUBIC_HP 0x815F
++#define GL_AVERAGE_HP 0x8160
++#define GL_IMAGE_TRANSFORM_2D_HP 0x8161
++#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162
++#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163
++#endif
++
++#ifndef GL_HP_convolution_border_modes
++#define GL_IGNORE_BORDER_HP 0x8150
++#define GL_CONSTANT_BORDER_HP 0x8151
++#define GL_REPLICATE_BORDER_HP 0x8153
++#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154
++#endif
++
++#ifndef GL_INGR_palette_buffer
++#endif
++
++#ifndef GL_SGIX_texture_add_env
++#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE
++#endif
++
++#ifndef GL_EXT_color_subtable
++#endif
++
++#ifndef GL_PGI_vertex_hints
++#define GL_VERTEX_DATA_HINT_PGI 0x1A22A
++#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B
++#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C
++#define GL_MAX_VERTEX_HINT_PGI 0x1A22D
++#define GL_COLOR3_BIT_PGI 0x00010000
++#define GL_COLOR4_BIT_PGI 0x00020000
++#define GL_EDGEFLAG_BIT_PGI 0x00040000
++#define GL_INDEX_BIT_PGI 0x00080000
++#define GL_MAT_AMBIENT_BIT_PGI 0x00100000
++#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000
++#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000
++#define GL_MAT_EMISSION_BIT_PGI 0x00800000
++#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000
++#define GL_MAT_SHININESS_BIT_PGI 0x02000000
++#define GL_MAT_SPECULAR_BIT_PGI 0x04000000
++#define GL_NORMAL_BIT_PGI 0x08000000
++#define GL_TEXCOORD1_BIT_PGI 0x10000000
++#define GL_TEXCOORD2_BIT_PGI 0x20000000
++#define GL_TEXCOORD3_BIT_PGI 0x40000000
++#define GL_TEXCOORD4_BIT_PGI 0x80000000
++#define GL_VERTEX23_BIT_PGI 0x00000004
++#define GL_VERTEX4_BIT_PGI 0x00000008
++#endif
++
++#ifndef GL_PGI_misc_hints
++#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8
++#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD
++#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE
++#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202
++#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203
++#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204
++#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C
++#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D
++#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E
++#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F
++#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210
++#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211
++#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216
++#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217
++#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218
++#define GL_FULL_STIPPLE_HINT_PGI 0x1A219
++#define GL_CLIP_NEAR_HINT_PGI 0x1A220
++#define GL_CLIP_FAR_HINT_PGI 0x1A221
++#define GL_WIDE_LINE_HINT_PGI 0x1A222
++#define GL_BACK_NORMALS_HINT_PGI 0x1A223
++#endif
++
++#ifndef GL_EXT_paletted_texture
++#define GL_COLOR_INDEX1_EXT 0x80E2
++#define GL_COLOR_INDEX2_EXT 0x80E3
++#define GL_COLOR_INDEX4_EXT 0x80E4
++#define GL_COLOR_INDEX8_EXT 0x80E5
++#define GL_COLOR_INDEX12_EXT 0x80E6
++#define GL_COLOR_INDEX16_EXT 0x80E7
++#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED
++#endif
++
++#ifndef GL_EXT_clip_volume_hint
++#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0
++#endif
++
++#ifndef GL_SGIX_list_priority
++#define GL_LIST_PRIORITY_SGIX 0x8182
++#endif
++
++#ifndef GL_SGIX_ir_instrument1
++#define GL_IR_INSTRUMENT1_SGIX 0x817F
++#endif
++
++#ifndef GL_SGIX_calligraphic_fragment
++#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183
++#endif
++
++#ifndef GL_SGIX_texture_lod_bias
++#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E
++#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F
++#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190
++#endif
++
++#ifndef GL_SGIX_shadow_ambient
++#define GL_SHADOW_AMBIENT_SGIX 0x80BF
++#endif
++
++#ifndef GL_EXT_index_texture
++#endif
++
++#ifndef GL_EXT_index_material
++#define GL_INDEX_MATERIAL_EXT 0x81B8
++#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9
++#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA
++#endif
++
++#ifndef GL_EXT_index_func
++#define GL_INDEX_TEST_EXT 0x81B5
++#define GL_INDEX_TEST_FUNC_EXT 0x81B6
++#define GL_INDEX_TEST_REF_EXT 0x81B7
++#endif
++
++#ifndef GL_EXT_index_array_formats
++#define GL_IUI_V2F_EXT 0x81AD
++#define GL_IUI_V3F_EXT 0x81AE
++#define GL_IUI_N3F_V2F_EXT 0x81AF
++#define GL_IUI_N3F_V3F_EXT 0x81B0
++#define GL_T2F_IUI_V2F_EXT 0x81B1
++#define GL_T2F_IUI_V3F_EXT 0x81B2
++#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3
++#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4
++#endif
++
++#ifndef GL_EXT_compiled_vertex_array
++#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8
++#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9
++#endif
++
++#ifndef GL_EXT_cull_vertex
++#define GL_CULL_VERTEX_EXT 0x81AA
++#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB
++#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC
++#endif
++
++#ifndef GL_SGIX_ycrcb
++#define GL_YCRCB_422_SGIX 0x81BB
++#define GL_YCRCB_444_SGIX 0x81BC
++#endif
++
++#ifndef GL_SGIX_fragment_lighting
++#define GL_FRAGMENT_LIGHTING_SGIX 0x8400
++#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401
++#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402
++#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403
++#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404
++#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405
++#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406
++#define GL_LIGHT_ENV_MODE_SGIX 0x8407
++#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408
++#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409
++#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A
++#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B
++#define GL_FRAGMENT_LIGHT0_SGIX 0x840C
++#define GL_FRAGMENT_LIGHT1_SGIX 0x840D
++#define GL_FRAGMENT_LIGHT2_SGIX 0x840E
++#define GL_FRAGMENT_LIGHT3_SGIX 0x840F
++#define GL_FRAGMENT_LIGHT4_SGIX 0x8410
++#define GL_FRAGMENT_LIGHT5_SGIX 0x8411
++#define GL_FRAGMENT_LIGHT6_SGIX 0x8412
++#define GL_FRAGMENT_LIGHT7_SGIX 0x8413
++#endif
++
++#ifndef GL_IBM_rasterpos_clip
++#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262
++#endif
++
++#ifndef GL_HP_texture_lighting
++#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167
++#define GL_TEXTURE_POST_SPECULAR_HP 0x8168
++#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169
++#endif
++
++#ifndef GL_EXT_draw_range_elements
++#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8
++#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9
++#endif
++
++#ifndef GL_WIN_phong_shading
++#define GL_PHONG_WIN 0x80EA
++#define GL_PHONG_HINT_WIN 0x80EB
++#endif
++
++#ifndef GL_WIN_specular_fog
++#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC
++#endif
++
++#ifndef GL_EXT_light_texture
++#define GL_FRAGMENT_MATERIAL_EXT 0x8349
++#define GL_FRAGMENT_NORMAL_EXT 0x834A
++#define GL_FRAGMENT_COLOR_EXT 0x834C
++#define GL_ATTENUATION_EXT 0x834D
++#define GL_SHADOW_ATTENUATION_EXT 0x834E
++#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F
++#define GL_TEXTURE_LIGHT_EXT 0x8350
++#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351
++#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352
++/* reuse GL_FRAGMENT_DEPTH_EXT */
++#endif
++
++#ifndef GL_SGIX_blend_alpha_minmax
++#define GL_ALPHA_MIN_SGIX 0x8320
++#define GL_ALPHA_MAX_SGIX 0x8321
++#endif
++
++#ifndef GL_SGIX_impact_pixel_texture
++#define GL_PIXEL_TEX_GEN_Q_CEILING_SGIX 0x8184
++#define GL_PIXEL_TEX_GEN_Q_ROUND_SGIX 0x8185
++#define GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX 0x8186
++#define GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX 0x8187
++#define GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX 0x8188
++#define GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX 0x8189
++#define GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX 0x818A
++#endif
++
++#ifndef GL_EXT_bgra
++#define GL_BGR_EXT 0x80E0
++#define GL_BGRA_EXT 0x80E1
++#endif
++
++#ifndef GL_SGIX_async
++#define GL_ASYNC_MARKER_SGIX 0x8329
++#endif
++
++#ifndef GL_SGIX_async_pixel
++#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C
++#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D
++#define GL_ASYNC_READ_PIXELS_SGIX 0x835E
++#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F
++#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360
++#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361
++#endif
++
++#ifndef GL_SGIX_async_histogram
++#define GL_ASYNC_HISTOGRAM_SGIX 0x832C
++#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D
++#endif
++
++#ifndef GL_INTEL_texture_scissor
++#endif
++
++#ifndef GL_INTEL_parallel_arrays
++#define GL_PARALLEL_ARRAYS_INTEL 0x83F4
++#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5
++#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6
++#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7
++#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8
++#endif
++
++#ifndef GL_HP_occlusion_test
++#define GL_OCCLUSION_TEST_HP 0x8165
++#define GL_OCCLUSION_TEST_RESULT_HP 0x8166
++#endif
++
++#ifndef GL_EXT_pixel_transform
++#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330
++#define GL_PIXEL_MAG_FILTER_EXT 0x8331
++#define GL_PIXEL_MIN_FILTER_EXT 0x8332
++#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333
++#define GL_CUBIC_EXT 0x8334
++#define GL_AVERAGE_EXT 0x8335
++#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336
++#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337
++#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338
++#endif
++
++#ifndef GL_EXT_pixel_transform_color_table
++#endif
++
++#ifndef GL_EXT_shared_texture_palette
++#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB
++#endif
++
++#ifndef GL_EXT_separate_specular_color
++#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8
++#define GL_SINGLE_COLOR_EXT 0x81F9
++#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA
++#endif
++
++#ifndef GL_EXT_secondary_color
++#define GL_COLOR_SUM_EXT 0x8458
++#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459
++#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A
++#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B
++#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C
++#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D
++#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E
++#endif
++
++#ifndef GL_EXT_texture_perturb_normal
++#define GL_PERTURB_EXT 0x85AE
++#define GL_TEXTURE_NORMAL_EXT 0x85AF
++#endif
++
++#ifndef GL_EXT_multi_draw_arrays
++#endif
++
++#ifndef GL_EXT_fog_coord
++#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450
++#define GL_FOG_COORDINATE_EXT 0x8451
++#define GL_FRAGMENT_DEPTH_EXT 0x8452
++#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453
++#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454
++#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455
++#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456
++#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457
++#endif
++
++#ifndef GL_REND_screen_coordinates
++#define GL_SCREEN_COORDINATES_REND 0x8490
++#define GL_INVERTED_SCREEN_W_REND 0x8491
++#endif
++
++#ifndef GL_EXT_coordinate_frame
++#define GL_TANGENT_ARRAY_EXT 0x8439
++#define GL_BINORMAL_ARRAY_EXT 0x843A
++#define GL_CURRENT_TANGENT_EXT 0x843B
++#define GL_CURRENT_BINORMAL_EXT 0x843C
++#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E
++#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F
++#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440
++#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441
++#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442
++#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443
++#define GL_MAP1_TANGENT_EXT 0x8444
++#define GL_MAP2_TANGENT_EXT 0x8445
++#define GL_MAP1_BINORMAL_EXT 0x8446
++#define GL_MAP2_BINORMAL_EXT 0x8447
++#endif
++
++#ifndef GL_EXT_texture_env_combine
++#define GL_COMBINE_EXT 0x8570
++#define GL_COMBINE_RGB_EXT 0x8571
++#define GL_COMBINE_ALPHA_EXT 0x8572
++#define GL_RGB_SCALE_EXT 0x8573
++#define GL_ADD_SIGNED_EXT 0x8574
++#define GL_INTERPOLATE_EXT 0x8575
++#define GL_CONSTANT_EXT 0x8576
++#define GL_PRIMARY_COLOR_EXT 0x8577
++#define GL_PREVIOUS_EXT 0x8578
++#define GL_SOURCE0_RGB_EXT 0x8580
++#define GL_SOURCE1_RGB_EXT 0x8581
++#define GL_SOURCE2_RGB_EXT 0x8582
++#define GL_SOURCE0_ALPHA_EXT 0x8588
++#define GL_SOURCE1_ALPHA_EXT 0x8589
++#define GL_SOURCE2_ALPHA_EXT 0x858A
++#define GL_OPERAND0_RGB_EXT 0x8590
++#define GL_OPERAND1_RGB_EXT 0x8591
++#define GL_OPERAND2_RGB_EXT 0x8592
++#define GL_OPERAND0_ALPHA_EXT 0x8598
++#define GL_OPERAND1_ALPHA_EXT 0x8599
++#define GL_OPERAND2_ALPHA_EXT 0x859A
++#endif
++
++#ifndef GL_APPLE_specular_vector
++#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0
++#endif
++
++#ifndef GL_APPLE_transform_hint
++#define GL_TRANSFORM_HINT_APPLE 0x85B1
++#endif
++
++#ifndef GL_SGIX_fog_scale
++#define GL_FOG_SCALE_SGIX 0x81FC
++#define GL_FOG_SCALE_VALUE_SGIX 0x81FD
++#endif
++
++#ifndef GL_SUNX_constant_data
++#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5
++#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6
++#endif
++
++#ifndef GL_SUN_global_alpha
++#define GL_GLOBAL_ALPHA_SUN 0x81D9
++#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA
++#endif
++
++#ifndef GL_SUN_triangle_list
++#define GL_RESTART_SUN 0x0001
++#define GL_REPLACE_MIDDLE_SUN 0x0002
++#define GL_REPLACE_OLDEST_SUN 0x0003
++#define GL_TRIANGLE_LIST_SUN 0x81D7
++#define GL_REPLACEMENT_CODE_SUN 0x81D8
++#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0
++#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1
++#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2
++#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3
++#define GL_R1UI_V3F_SUN 0x85C4
++#define GL_R1UI_C4UB_V3F_SUN 0x85C5
++#define GL_R1UI_C3F_V3F_SUN 0x85C6
++#define GL_R1UI_N3F_V3F_SUN 0x85C7
++#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8
++#define GL_R1UI_T2F_V3F_SUN 0x85C9
++#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA
++#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB
++#endif
++
++#ifndef GL_SUN_vertex
++#endif
++
++#ifndef GL_EXT_blend_func_separate
++#define GL_BLEND_DST_RGB_EXT 0x80C8
++#define GL_BLEND_SRC_RGB_EXT 0x80C9
++#define GL_BLEND_DST_ALPHA_EXT 0x80CA
++#define GL_BLEND_SRC_ALPHA_EXT 0x80CB
++#endif
++
++#ifndef GL_INGR_color_clamp
++#define GL_RED_MIN_CLAMP_INGR 0x8560
++#define GL_GREEN_MIN_CLAMP_INGR 0x8561
++#define GL_BLUE_MIN_CLAMP_INGR 0x8562
++#define GL_ALPHA_MIN_CLAMP_INGR 0x8563
++#define GL_RED_MAX_CLAMP_INGR 0x8564
++#define GL_GREEN_MAX_CLAMP_INGR 0x8565
++#define GL_BLUE_MAX_CLAMP_INGR 0x8566
++#define GL_ALPHA_MAX_CLAMP_INGR 0x8567
++#endif
++
++#ifndef GL_INGR_interlace_read
++#define GL_INTERLACE_READ_INGR 0x8568
++#endif
++
++#ifndef GL_EXT_stencil_wrap
++#define GL_INCR_WRAP_EXT 0x8507
++#define GL_DECR_WRAP_EXT 0x8508
++#endif
++
++#ifndef GL_EXT_422_pixels
++#define GL_422_EXT 0x80CC
++#define GL_422_REV_EXT 0x80CD
++#define GL_422_AVERAGE_EXT 0x80CE
++#define GL_422_REV_AVERAGE_EXT 0x80CF
++#endif
++
++#ifndef GL_NV_texgen_reflection
++#define GL_NORMAL_MAP_NV 0x8511
++#define GL_REFLECTION_MAP_NV 0x8512
++#endif
++
++#ifndef GL_EXT_texture_cube_map
++#define GL_NORMAL_MAP_EXT 0x8511
++#define GL_REFLECTION_MAP_EXT 0x8512
++#define GL_TEXTURE_CUBE_MAP_EXT 0x8513
++#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514
++#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515
++#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516
++#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517
++#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518
++#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519
++#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A
++#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B
++#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C
++#endif
++
++#ifndef GL_SUN_convolution_border_modes
++#define GL_WRAP_BORDER_SUN 0x81D4
++#endif
++
++#ifndef GL_EXT_texture_env_add
++#endif
++
++#ifndef GL_EXT_texture_lod_bias
++#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD
++#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500
++#define GL_TEXTURE_LOD_BIAS_EXT 0x8501
++#endif
++
++#ifndef GL_EXT_texture_filter_anisotropic
++#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
++#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
++#endif
++
++#ifndef GL_EXT_vertex_weighting
++#define GL_MODELVIEW0_STACK_DEPTH_EXT GL_MODELVIEW_STACK_DEPTH
++#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502
++#define GL_MODELVIEW0_MATRIX_EXT GL_MODELVIEW_MATRIX
++#define GL_MODELVIEW1_MATRIX_EXT 0x8506
++#define GL_VERTEX_WEIGHTING_EXT 0x8509
++#define GL_MODELVIEW0_EXT GL_MODELVIEW
++#define GL_MODELVIEW1_EXT 0x850A
++#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B
++#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C
++#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D
++#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E
++#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F
++#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510
++#endif
++
++#ifndef GL_NV_light_max_exponent
++#define GL_MAX_SHININESS_NV 0x8504
++#define GL_MAX_SPOT_EXPONENT_NV 0x8505
++#endif
++
++#ifndef GL_NV_vertex_array_range
++#define GL_VERTEX_ARRAY_RANGE_NV 0x851D
++#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E
++#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F
++#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520
++#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521
++#endif
++
++#ifndef GL_NV_register_combiners
++#define GL_REGISTER_COMBINERS_NV 0x8522
++#define GL_VARIABLE_A_NV 0x8523
++#define GL_VARIABLE_B_NV 0x8524
++#define GL_VARIABLE_C_NV 0x8525
++#define GL_VARIABLE_D_NV 0x8526
++#define GL_VARIABLE_E_NV 0x8527
++#define GL_VARIABLE_F_NV 0x8528
++#define GL_VARIABLE_G_NV 0x8529
++#define GL_CONSTANT_COLOR0_NV 0x852A
++#define GL_CONSTANT_COLOR1_NV 0x852B
++#define GL_PRIMARY_COLOR_NV 0x852C
++#define GL_SECONDARY_COLOR_NV 0x852D
++#define GL_SPARE0_NV 0x852E
++#define GL_SPARE1_NV 0x852F
++#define GL_DISCARD_NV 0x8530
++#define GL_E_TIMES_F_NV 0x8531
++#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532
++#define GL_UNSIGNED_IDENTITY_NV 0x8536
++#define GL_UNSIGNED_INVERT_NV 0x8537
++#define GL_EXPAND_NORMAL_NV 0x8538
++#define GL_EXPAND_NEGATE_NV 0x8539
++#define GL_HALF_BIAS_NORMAL_NV 0x853A
++#define GL_HALF_BIAS_NEGATE_NV 0x853B
++#define GL_SIGNED_IDENTITY_NV 0x853C
++#define GL_SIGNED_NEGATE_NV 0x853D
++#define GL_SCALE_BY_TWO_NV 0x853E
++#define GL_SCALE_BY_FOUR_NV 0x853F
++#define GL_SCALE_BY_ONE_HALF_NV 0x8540
++#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541
++#define GL_COMBINER_INPUT_NV 0x8542
++#define GL_COMBINER_MAPPING_NV 0x8543
++#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544
++#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545
++#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546
++#define GL_COMBINER_MUX_SUM_NV 0x8547
++#define GL_COMBINER_SCALE_NV 0x8548
++#define GL_COMBINER_BIAS_NV 0x8549
++#define GL_COMBINER_AB_OUTPUT_NV 0x854A
++#define GL_COMBINER_CD_OUTPUT_NV 0x854B
++#define GL_COMBINER_SUM_OUTPUT_NV 0x854C
++#define GL_MAX_GENERAL_COMBINERS_NV 0x854D
++#define GL_NUM_GENERAL_COMBINERS_NV 0x854E
++#define GL_COLOR_SUM_CLAMP_NV 0x854F
++#define GL_COMBINER0_NV 0x8550
++#define GL_COMBINER1_NV 0x8551
++#define GL_COMBINER2_NV 0x8552
++#define GL_COMBINER3_NV 0x8553
++#define GL_COMBINER4_NV 0x8554
++#define GL_COMBINER5_NV 0x8555
++#define GL_COMBINER6_NV 0x8556
++#define GL_COMBINER7_NV 0x8557
++/* reuse GL_TEXTURE0_ARB */
++/* reuse GL_TEXTURE1_ARB */
++/* reuse GL_ZERO */
++/* reuse GL_NONE */
++/* reuse GL_FOG */
++#endif
++
++#ifndef GL_NV_fog_distance
++#define GL_FOG_DISTANCE_MODE_NV 0x855A
++#define GL_EYE_RADIAL_NV 0x855B
++#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C
++/* reuse GL_EYE_PLANE */
++#endif
++
++#ifndef GL_NV_texgen_emboss
++#define GL_EMBOSS_LIGHT_NV 0x855D
++#define GL_EMBOSS_CONSTANT_NV 0x855E
++#define GL_EMBOSS_MAP_NV 0x855F
++#endif
++
++#ifndef GL_NV_blend_square
++#endif
++
++#ifndef GL_NV_texture_env_combine4
++#define GL_COMBINE4_NV 0x8503
++#define GL_SOURCE3_RGB_NV 0x8583
++#define GL_SOURCE3_ALPHA_NV 0x858B
++#define GL_OPERAND3_RGB_NV 0x8593
++#define GL_OPERAND3_ALPHA_NV 0x859B
++#endif
++
++#ifndef GL_MESA_resize_buffers
++#endif
++
++#ifndef GL_MESA_window_pos
++#endif
++
++#ifndef GL_EXT_texture_compression_s3tc
++#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
++#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
++#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
++#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
++#endif
++
++#ifndef GL_IBM_cull_vertex
++#define GL_CULL_VERTEX_IBM 103050
++#endif
++
++#ifndef GL_IBM_multimode_draw_arrays
++#endif
++
++#ifndef GL_IBM_vertex_array_lists
++#define GL_VERTEX_ARRAY_LIST_IBM 103070
++#define GL_NORMAL_ARRAY_LIST_IBM 103071
++#define GL_COLOR_ARRAY_LIST_IBM 103072
++#define GL_INDEX_ARRAY_LIST_IBM 103073
++#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074
++#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075
++#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076
++#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077
++#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080
++#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081
++#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082
++#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083
++#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084
++#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085
++#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086
++#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087
++#endif
++
++#ifndef GL_SGIX_subsample
++#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0
++#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1
++#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2
++#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3
++#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4
++#endif
++
++#ifndef GL_SGIX_ycrcb_subsample
++#endif
++
++#ifndef GL_SGIX_ycrcba
++#define GL_YCRCB_SGIX 0x8318
++#define GL_YCRCBA_SGIX 0x8319
++#endif
++
++#ifndef GL_SGI_depth_pass_instrument
++#define GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310
++#define GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311
++#define GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312
++#endif
++
++#ifndef GL_3DFX_texture_compression_FXT1
++#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0
++#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1
++#endif
++
++#ifndef GL_3DFX_multisample
++#define GL_MULTISAMPLE_3DFX 0x86B2
++#define GL_SAMPLE_BUFFERS_3DFX 0x86B3
++#define GL_SAMPLES_3DFX 0x86B4
++#define GL_MULTISAMPLE_BIT_3DFX 0x20000000
++#endif
++
++#ifndef GL_3DFX_tbuffer
++#endif
++
++#ifndef GL_EXT_multisample
++#define GL_MULTISAMPLE_EXT 0x809D
++#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E
++#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F
++#define GL_SAMPLE_MASK_EXT 0x80A0
++#define GL_1PASS_EXT 0x80A1
++#define GL_2PASS_0_EXT 0x80A2
++#define GL_2PASS_1_EXT 0x80A3
++#define GL_4PASS_0_EXT 0x80A4
++#define GL_4PASS_1_EXT 0x80A5
++#define GL_4PASS_2_EXT 0x80A6
++#define GL_4PASS_3_EXT 0x80A7
++#define GL_SAMPLE_BUFFERS_EXT 0x80A8
++#define GL_SAMPLES_EXT 0x80A9
++#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA
++#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB
++#define GL_SAMPLE_PATTERN_EXT 0x80AC
++#define GL_MULTISAMPLE_BIT_EXT 0x20000000
++#endif
++
++#ifndef GL_SGIX_vertex_preclip
++#define GL_VERTEX_PRECLIP_SGIX 0x83EE
++#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF
++#endif
++
++#ifndef GL_SGIX_convolution_accuracy
++#define GL_CONVOLUTION_HINT_SGIX 0x8316
++#endif
++
++#ifndef GL_SGIX_resample
++#define GL_PACK_RESAMPLE_SGIX 0x842C
++#define GL_UNPACK_RESAMPLE_SGIX 0x842D
++#define GL_RESAMPLE_REPLICATE_SGIX 0x842E
++#define GL_RESAMPLE_ZERO_FILL_SGIX 0x842F
++#define GL_RESAMPLE_DECIMATE_SGIX 0x8430
++#endif
++
++#ifndef GL_SGIS_point_line_texgen
++#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0
++#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1
++#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2
++#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3
++#define GL_EYE_POINT_SGIS 0x81F4
++#define GL_OBJECT_POINT_SGIS 0x81F5
++#define GL_EYE_LINE_SGIS 0x81F6
++#define GL_OBJECT_LINE_SGIS 0x81F7
++#endif
++
++#ifndef GL_SGIS_texture_color_mask
++#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF
++#endif
++
++#ifndef GL_EXT_texture_env_dot3
++#define GL_DOT3_RGB_EXT 0x8740
++#define GL_DOT3_RGBA_EXT 0x8741
++#endif
++
++#ifndef GL_ATI_texture_mirror_once
++#define GL_MIRROR_CLAMP_ATI 0x8742
++#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743
++#endif
++
++#ifndef GL_NV_fence
++#define GL_ALL_COMPLETED_NV 0x84F2
++#define GL_FENCE_STATUS_NV 0x84F3
++#define GL_FENCE_CONDITION_NV 0x84F4
++#endif
++
++#ifndef GL_IBM_texture_mirrored_repeat
++#define GL_MIRRORED_REPEAT_IBM 0x8370
++#endif
++
++#ifndef GL_NV_evaluators
++#define GL_EVAL_2D_NV 0x86C0
++#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1
++#define GL_MAP_TESSELLATION_NV 0x86C2
++#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3
++#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4
++#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5
++#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6
++#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7
++#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8
++#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9
++#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA
++#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB
++#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC
++#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD
++#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE
++#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF
++#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0
++#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1
++#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2
++#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3
++#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4
++#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5
++#define GL_MAX_MAP_TESSELLATION_NV 0x86D6
++#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7
++#endif
++
++#ifndef GL_NV_packed_depth_stencil
++#define GL_DEPTH_STENCIL_NV 0x84F9
++#define GL_UNSIGNED_INT_24_8_NV 0x84FA
++#endif
++
++#ifndef GL_NV_register_combiners2
++#define GL_PER_STAGE_CONSTANTS_NV 0x8535
++#endif
++
++#ifndef GL_NV_texture_compression_vtc
++#endif
++
++#ifndef GL_NV_texture_rectangle
++#define GL_TEXTURE_RECTANGLE_NV 0x84F5
++#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6
++#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7
++#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8
++#endif
++
++#ifndef GL_NV_texture_shader
++#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C
++#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D
++#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E
++#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9
++#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA
++#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB
++#define GL_DSDT_MAG_INTENSITY_NV 0x86DC
++#define GL_SHADER_CONSISTENT_NV 0x86DD
++#define GL_TEXTURE_SHADER_NV 0x86DE
++#define GL_SHADER_OPERATION_NV 0x86DF
++#define GL_CULL_MODES_NV 0x86E0
++#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1
++#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2
++#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3
++#define GL_OFFSET_TEXTURE_2D_MATRIX_NV GL_OFFSET_TEXTURE_MATRIX_NV
++#define GL_OFFSET_TEXTURE_2D_SCALE_NV GL_OFFSET_TEXTURE_SCALE_NV
++#define GL_OFFSET_TEXTURE_2D_BIAS_NV GL_OFFSET_TEXTURE_BIAS_NV
++#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4
++#define GL_CONST_EYE_NV 0x86E5
++#define GL_PASS_THROUGH_NV 0x86E6
++#define GL_CULL_FRAGMENT_NV 0x86E7
++#define GL_OFFSET_TEXTURE_2D_NV 0x86E8
++#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9
++#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA
++#define GL_DOT_PRODUCT_NV 0x86EC
++#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED
++#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE
++#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0
++#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1
++#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2
++#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3
++#define GL_HILO_NV 0x86F4
++#define GL_DSDT_NV 0x86F5
++#define GL_DSDT_MAG_NV 0x86F6
++#define GL_DSDT_MAG_VIB_NV 0x86F7
++#define GL_HILO16_NV 0x86F8
++#define GL_SIGNED_HILO_NV 0x86F9
++#define GL_SIGNED_HILO16_NV 0x86FA
++#define GL_SIGNED_RGBA_NV 0x86FB
++#define GL_SIGNED_RGBA8_NV 0x86FC
++#define GL_SIGNED_RGB_NV 0x86FE
++#define GL_SIGNED_RGB8_NV 0x86FF
++#define GL_SIGNED_LUMINANCE_NV 0x8701
++#define GL_SIGNED_LUMINANCE8_NV 0x8702
++#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703
++#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704
++#define GL_SIGNED_ALPHA_NV 0x8705
++#define GL_SIGNED_ALPHA8_NV 0x8706
++#define GL_SIGNED_INTENSITY_NV 0x8707
++#define GL_SIGNED_INTENSITY8_NV 0x8708
++#define GL_DSDT8_NV 0x8709
++#define GL_DSDT8_MAG8_NV 0x870A
++#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B
++#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C
++#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
++#define GL_HI_SCALE_NV 0x870E
++#define GL_LO_SCALE_NV 0x870F
++#define GL_DS_SCALE_NV 0x8710
++#define GL_DT_SCALE_NV 0x8711
++#define GL_MAGNITUDE_SCALE_NV 0x8712
++#define GL_VIBRANCE_SCALE_NV 0x8713
++#define GL_HI_BIAS_NV 0x8714
++#define GL_LO_BIAS_NV 0x8715
++#define GL_DS_BIAS_NV 0x8716
++#define GL_DT_BIAS_NV 0x8717
++#define GL_MAGNITUDE_BIAS_NV 0x8718
++#define GL_VIBRANCE_BIAS_NV 0x8719
++#define GL_TEXTURE_BORDER_VALUES_NV 0x871A
++#define GL_TEXTURE_HI_SIZE_NV 0x871B
++#define GL_TEXTURE_LO_SIZE_NV 0x871C
++#define GL_TEXTURE_DS_SIZE_NV 0x871D
++#define GL_TEXTURE_DT_SIZE_NV 0x871E
++#define GL_TEXTURE_MAG_SIZE_NV 0x871F
++#endif
++
++#ifndef GL_NV_texture_shader2
++#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF
++#endif
++
++#ifndef GL_NV_vertex_array_range2
++#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533
++#endif
++
++#ifndef GL_NV_vertex_program
++#define GL_VERTEX_PROGRAM_NV 0x8620
++#define GL_VERTEX_STATE_PROGRAM_NV 0x8621
++#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623
++#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624
++#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625
++#define GL_CURRENT_ATTRIB_NV 0x8626
++#define GL_PROGRAM_LENGTH_NV 0x8627
++#define GL_PROGRAM_STRING_NV 0x8628
++#define GL_MODELVIEW_PROJECTION_NV 0x8629
++#define GL_IDENTITY_NV 0x862A
++#define GL_INVERSE_NV 0x862B
++#define GL_TRANSPOSE_NV 0x862C
++#define GL_INVERSE_TRANSPOSE_NV 0x862D
++#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E
++#define GL_MAX_TRACK_MATRICES_NV 0x862F
++#define GL_MATRIX0_NV 0x8630
++#define GL_MATRIX1_NV 0x8631
++#define GL_MATRIX2_NV 0x8632
++#define GL_MATRIX3_NV 0x8633
++#define GL_MATRIX4_NV 0x8634
++#define GL_MATRIX5_NV 0x8635
++#define GL_MATRIX6_NV 0x8636
++#define GL_MATRIX7_NV 0x8637
++#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640
++#define GL_CURRENT_MATRIX_NV 0x8641
++#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642
++#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643
++#define GL_PROGRAM_PARAMETER_NV 0x8644
++#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645
++#define GL_PROGRAM_TARGET_NV 0x8646
++#define GL_PROGRAM_RESIDENT_NV 0x8647
++#define GL_TRACK_MATRIX_NV 0x8648
++#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649
++#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A
++#define GL_PROGRAM_ERROR_POSITION_NV 0x864B
++#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650
++#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651
++#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652
++#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653
++#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654
++#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655
++#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656
++#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657
++#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658
++#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659
++#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A
++#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B
++#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C
++#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D
++#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E
++#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F
++#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660
++#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661
++#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662
++#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663
++#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664
++#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665
++#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666
++#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667
++#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668
++#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669
++#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A
++#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B
++#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C
++#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D
++#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E
++#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F
++#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670
++#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671
++#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672
++#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673
++#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674
++#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675
++#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676
++#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677
++#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678
++#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679
++#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A
++#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B
++#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C
++#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D
++#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E
++#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F
++#endif
++
++#ifndef GL_SGIX_texture_coordinate_clamp
++#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369
++#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A
++#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B
++#endif
++
++#ifndef GL_SGIX_scalebias_hint
++#define GL_SCALEBIAS_HINT_SGIX 0x8322
++#endif
++
++#ifndef GL_OML_interlace
++#define GL_INTERLACE_OML 0x8980
++#define GL_INTERLACE_READ_OML 0x8981
++#endif
++
++#ifndef GL_OML_subsample
++#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982
++#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983
++#endif
++
++#ifndef GL_OML_resample
++#define GL_PACK_RESAMPLE_OML 0x8984
++#define GL_UNPACK_RESAMPLE_OML 0x8985
++#define GL_RESAMPLE_REPLICATE_OML 0x8986
++#define GL_RESAMPLE_ZERO_FILL_OML 0x8987
++#define GL_RESAMPLE_AVERAGE_OML 0x8988
++#define GL_RESAMPLE_DECIMATE_OML 0x8989
++#endif
++
++#ifndef GL_NV_copy_depth_to_color
++#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E
++#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F
++#endif
++
++#ifndef GL_ATI_envmap_bumpmap
++#define GL_BUMP_ROT_MATRIX_ATI 0x8775
++#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776
++#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777
++#define GL_BUMP_TEX_UNITS_ATI 0x8778
++#define GL_DUDV_ATI 0x8779
++#define GL_DU8DV8_ATI 0x877A
++#define GL_BUMP_ENVMAP_ATI 0x877B
++#define GL_BUMP_TARGET_ATI 0x877C
++#endif
++
++#ifndef GL_ATI_fragment_shader
++#define GL_FRAGMENT_SHADER_ATI 0x8920
++#define GL_REG_0_ATI 0x8921
++#define GL_REG_1_ATI 0x8922
++#define GL_REG_2_ATI 0x8923
++#define GL_REG_3_ATI 0x8924
++#define GL_REG_4_ATI 0x8925
++#define GL_REG_5_ATI 0x8926
++#define GL_REG_6_ATI 0x8927
++#define GL_REG_7_ATI 0x8928
++#define GL_REG_8_ATI 0x8929
++#define GL_REG_9_ATI 0x892A
++#define GL_REG_10_ATI 0x892B
++#define GL_REG_11_ATI 0x892C
++#define GL_REG_12_ATI 0x892D
++#define GL_REG_13_ATI 0x892E
++#define GL_REG_14_ATI 0x892F
++#define GL_REG_15_ATI 0x8930
++#define GL_REG_16_ATI 0x8931
++#define GL_REG_17_ATI 0x8932
++#define GL_REG_18_ATI 0x8933
++#define GL_REG_19_ATI 0x8934
++#define GL_REG_20_ATI 0x8935
++#define GL_REG_21_ATI 0x8936
++#define GL_REG_22_ATI 0x8937
++#define GL_REG_23_ATI 0x8938
++#define GL_REG_24_ATI 0x8939
++#define GL_REG_25_ATI 0x893A
++#define GL_REG_26_ATI 0x893B
++#define GL_REG_27_ATI 0x893C
++#define GL_REG_28_ATI 0x893D
++#define GL_REG_29_ATI 0x893E
++#define GL_REG_30_ATI 0x893F
++#define GL_REG_31_ATI 0x8940
++#define GL_CON_0_ATI 0x8941
++#define GL_CON_1_ATI 0x8942
++#define GL_CON_2_ATI 0x8943
++#define GL_CON_3_ATI 0x8944
++#define GL_CON_4_ATI 0x8945
++#define GL_CON_5_ATI 0x8946
++#define GL_CON_6_ATI 0x8947
++#define GL_CON_7_ATI 0x8948
++#define GL_CON_8_ATI 0x8949
++#define GL_CON_9_ATI 0x894A
++#define GL_CON_10_ATI 0x894B
++#define GL_CON_11_ATI 0x894C
++#define GL_CON_12_ATI 0x894D
++#define GL_CON_13_ATI 0x894E
++#define GL_CON_14_ATI 0x894F
++#define GL_CON_15_ATI 0x8950
++#define GL_CON_16_ATI 0x8951
++#define GL_CON_17_ATI 0x8952
++#define GL_CON_18_ATI 0x8953
++#define GL_CON_19_ATI 0x8954
++#define GL_CON_20_ATI 0x8955
++#define GL_CON_21_ATI 0x8956
++#define GL_CON_22_ATI 0x8957
++#define GL_CON_23_ATI 0x8958
++#define GL_CON_24_ATI 0x8959
++#define GL_CON_25_ATI 0x895A
++#define GL_CON_26_ATI 0x895B
++#define GL_CON_27_ATI 0x895C
++#define GL_CON_28_ATI 0x895D
++#define GL_CON_29_ATI 0x895E
++#define GL_CON_30_ATI 0x895F
++#define GL_CON_31_ATI 0x8960
++#define GL_MOV_ATI 0x8961
++#define GL_ADD_ATI 0x8963
++#define GL_MUL_ATI 0x8964
++#define GL_SUB_ATI 0x8965
++#define GL_DOT3_ATI 0x8966
++#define GL_DOT4_ATI 0x8967
++#define GL_MAD_ATI 0x8968
++#define GL_LERP_ATI 0x8969
++#define GL_CND_ATI 0x896A
++#define GL_CND0_ATI 0x896B
++#define GL_DOT2_ADD_ATI 0x896C
++#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D
++#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E
++#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F
++#define GL_NUM_PASSES_ATI 0x8970
++#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971
++#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972
++#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973
++#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974
++#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975
++#define GL_SWIZZLE_STR_ATI 0x8976
++#define GL_SWIZZLE_STQ_ATI 0x8977
++#define GL_SWIZZLE_STR_DR_ATI 0x8978
++#define GL_SWIZZLE_STQ_DQ_ATI 0x8979
++#define GL_SWIZZLE_STRQ_ATI 0x897A
++#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B
++#define GL_RED_BIT_ATI 0x00000001
++#define GL_GREEN_BIT_ATI 0x00000002
++#define GL_BLUE_BIT_ATI 0x00000004
++#define GL_2X_BIT_ATI 0x00000001
++#define GL_4X_BIT_ATI 0x00000002
++#define GL_8X_BIT_ATI 0x00000004
++#define GL_HALF_BIT_ATI 0x00000008
++#define GL_QUARTER_BIT_ATI 0x00000010
++#define GL_EIGHTH_BIT_ATI 0x00000020
++#define GL_SATURATE_BIT_ATI 0x00000040
++#define GL_COMP_BIT_ATI 0x00000002
++#define GL_NEGATE_BIT_ATI 0x00000004
++#define GL_BIAS_BIT_ATI 0x00000008
++#endif
++
++#ifndef GL_ATI_pn_triangles
++#define GL_PN_TRIANGLES_ATI 0x87F0
++#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1
++#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2
++#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3
++#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4
++#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5
++#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6
++#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7
++#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8
++#endif
++
++#ifndef GL_ATI_vertex_array_object
++#define GL_STATIC_ATI 0x8760
++#define GL_DYNAMIC_ATI 0x8761
++#define GL_PRESERVE_ATI 0x8762
++#define GL_DISCARD_ATI 0x8763
++#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764
++#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765
++#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766
++#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767
++#endif
++
++#ifndef GL_EXT_vertex_shader
++#define GL_VERTEX_SHADER_EXT 0x8780
++#define GL_VERTEX_SHADER_BINDING_EXT 0x8781
++#define GL_OP_INDEX_EXT 0x8782
++#define GL_OP_NEGATE_EXT 0x8783
++#define GL_OP_DOT3_EXT 0x8784
++#define GL_OP_DOT4_EXT 0x8785
++#define GL_OP_MUL_EXT 0x8786
++#define GL_OP_ADD_EXT 0x8787
++#define GL_OP_MADD_EXT 0x8788
++#define GL_OP_FRAC_EXT 0x8789
++#define GL_OP_MAX_EXT 0x878A
++#define GL_OP_MIN_EXT 0x878B
++#define GL_OP_SET_GE_EXT 0x878C
++#define GL_OP_SET_LT_EXT 0x878D
++#define GL_OP_CLAMP_EXT 0x878E
++#define GL_OP_FLOOR_EXT 0x878F
++#define GL_OP_ROUND_EXT 0x8790
++#define GL_OP_EXP_BASE_2_EXT 0x8791
++#define GL_OP_LOG_BASE_2_EXT 0x8792
++#define GL_OP_POWER_EXT 0x8793
++#define GL_OP_RECIP_EXT 0x8794
++#define GL_OP_RECIP_SQRT_EXT 0x8795
++#define GL_OP_SUB_EXT 0x8796
++#define GL_OP_CROSS_PRODUCT_EXT 0x8797
++#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798
++#define GL_OP_MOV_EXT 0x8799
++#define GL_OUTPUT_VERTEX_EXT 0x879A
++#define GL_OUTPUT_COLOR0_EXT 0x879B
++#define GL_OUTPUT_COLOR1_EXT 0x879C
++#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D
++#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E
++#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F
++#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0
++#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1
++#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2
++#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3
++#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4
++#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5
++#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6
++#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7
++#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8
++#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9
++#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA
++#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB
++#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC
++#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD
++#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE
++#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF
++#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0
++#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1
++#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2
++#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3
++#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4
++#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5
++#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6
++#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7
++#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8
++#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9
++#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA
++#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB
++#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC
++#define GL_OUTPUT_FOG_EXT 0x87BD
++#define GL_SCALAR_EXT 0x87BE
++#define GL_VECTOR_EXT 0x87BF
++#define GL_MATRIX_EXT 0x87C0
++#define GL_VARIANT_EXT 0x87C1
++#define GL_INVARIANT_EXT 0x87C2
++#define GL_LOCAL_CONSTANT_EXT 0x87C3
++#define GL_LOCAL_EXT 0x87C4
++#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5
++#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6
++#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7
++#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8
++#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9
++#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA
++#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB
++#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC
++#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD
++#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE
++#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF
++#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0
++#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1
++#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2
++#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3
++#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4
++#define GL_X_EXT 0x87D5
++#define GL_Y_EXT 0x87D6
++#define GL_Z_EXT 0x87D7
++#define GL_W_EXT 0x87D8
++#define GL_NEGATIVE_X_EXT 0x87D9
++#define GL_NEGATIVE_Y_EXT 0x87DA
++#define GL_NEGATIVE_Z_EXT 0x87DB
++#define GL_NEGATIVE_W_EXT 0x87DC
++#define GL_ZERO_EXT 0x87DD
++#define GL_ONE_EXT 0x87DE
++#define GL_NEGATIVE_ONE_EXT 0x87DF
++#define GL_NORMALIZED_RANGE_EXT 0x87E0
++#define GL_FULL_RANGE_EXT 0x87E1
++#define GL_CURRENT_VERTEX_EXT 0x87E2
++#define GL_MVP_MATRIX_EXT 0x87E3
++#define GL_VARIANT_VALUE_EXT 0x87E4
++#define GL_VARIANT_DATATYPE_EXT 0x87E5
++#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6
++#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7
++#define GL_VARIANT_ARRAY_EXT 0x87E8
++#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9
++#define GL_INVARIANT_VALUE_EXT 0x87EA
++#define GL_INVARIANT_DATATYPE_EXT 0x87EB
++#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC
++#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED
++#endif
++
++#ifndef GL_ATI_vertex_streams
++#define GL_MAX_VERTEX_STREAMS_ATI 0x876B
++#define GL_VERTEX_STREAM0_ATI 0x876C
++#define GL_VERTEX_STREAM1_ATI 0x876D
++#define GL_VERTEX_STREAM2_ATI 0x876E
++#define GL_VERTEX_STREAM3_ATI 0x876F
++#define GL_VERTEX_STREAM4_ATI 0x8770
++#define GL_VERTEX_STREAM5_ATI 0x8771
++#define GL_VERTEX_STREAM6_ATI 0x8772
++#define GL_VERTEX_STREAM7_ATI 0x8773
++#define GL_VERTEX_SOURCE_ATI 0x8774
++#endif
++
++#ifndef GL_ATI_element_array
++#define GL_ELEMENT_ARRAY_ATI 0x8768
++#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769
++#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A
++#endif
++
++#ifndef GL_SUN_mesh_array
++#define GL_QUAD_MESH_SUN 0x8614
++#define GL_TRIANGLE_MESH_SUN 0x8615
++#endif
++
++#ifndef GL_SUN_slice_accum
++#define GL_SLICE_ACCUM_SUN 0x85CC
++#endif
++
++#ifndef GL_NV_multisample_filter_hint
++#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534
++#endif
++
++#ifndef GL_NV_depth_clamp
++#define GL_DEPTH_CLAMP_NV 0x864F
++#endif
++
++#ifndef GL_NV_occlusion_query
++#define GL_PIXEL_COUNTER_BITS_NV 0x8864
++#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865
++#define GL_PIXEL_COUNT_NV 0x8866
++#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867
++#endif
++
++#ifndef GL_NV_point_sprite
++#define GL_POINT_SPRITE_NV 0x8861
++#define GL_COORD_REPLACE_NV 0x8862
++#define GL_POINT_SPRITE_R_MODE_NV 0x8863
++#endif
++
++#ifndef GL_NV_texture_shader3
++#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850
++#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851
++#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852
++#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853
++#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854
++#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855
++#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856
++#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857
++#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858
++#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859
++#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A
++#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B
++#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C
++#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D
++#define GL_HILO8_NV 0x885E
++#define GL_SIGNED_HILO8_NV 0x885F
++#define GL_FORCE_BLUE_TO_ONE_NV 0x8860
++#endif
++
++#ifndef GL_NV_vertex_program1_1
++#endif
++
++#ifndef GL_EXT_shadow_funcs
++#endif
++
++#ifndef GL_EXT_stencil_two_side
++#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910
++#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911
++#endif
++
++#ifndef GL_ATI_text_fragment_shader
++#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200
++#endif
++
++#ifndef GL_APPLE_client_storage
++#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2
++#endif
++
++#ifndef GL_APPLE_element_array
++#define GL_ELEMENT_ARRAY_APPLE 0x8768
++#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8769
++#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x876A
++#endif
++
++#ifndef GL_APPLE_fence
++#define GL_DRAW_PIXELS_APPLE 0x8A0A
++#define GL_FENCE_APPLE 0x8A0B
++#endif
++
++#ifndef GL_APPLE_vertex_array_object
++#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5
++#endif
++
++#ifndef GL_APPLE_vertex_array_range
++#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D
++#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E
++#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F
++#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521
++#define GL_STORAGE_CACHED_APPLE 0x85BE
++#define GL_STORAGE_SHARED_APPLE 0x85BF
++#endif
++
++#ifndef GL_APPLE_ycbcr_422
++#define GL_YCBCR_422_APPLE 0x85B9
++#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA
++#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB
++#endif
++
++#ifndef GL_S3_s3tc
++#define GL_RGB_S3TC 0x83A0
++#define GL_RGB4_S3TC 0x83A1
++#define GL_RGBA_S3TC 0x83A2
++#define GL_RGBA4_S3TC 0x83A3
++#endif
++
++#ifndef GL_ATI_draw_buffers
++#define GL_MAX_DRAW_BUFFERS_ATI 0x8824
++#define GL_DRAW_BUFFER0_ATI 0x8825
++#define GL_DRAW_BUFFER1_ATI 0x8826
++#define GL_DRAW_BUFFER2_ATI 0x8827
++#define GL_DRAW_BUFFER3_ATI 0x8828
++#define GL_DRAW_BUFFER4_ATI 0x8829
++#define GL_DRAW_BUFFER5_ATI 0x882A
++#define GL_DRAW_BUFFER6_ATI 0x882B
++#define GL_DRAW_BUFFER7_ATI 0x882C
++#define GL_DRAW_BUFFER8_ATI 0x882D
++#define GL_DRAW_BUFFER9_ATI 0x882E
++#define GL_DRAW_BUFFER10_ATI 0x882F
++#define GL_DRAW_BUFFER11_ATI 0x8830
++#define GL_DRAW_BUFFER12_ATI 0x8831
++#define GL_DRAW_BUFFER13_ATI 0x8832
++#define GL_DRAW_BUFFER14_ATI 0x8833
++#define GL_DRAW_BUFFER15_ATI 0x8834
++#endif
++
++#ifndef GL_ATI_pixel_format_float
++#define GL_TYPE_RGBA_FLOAT_ATI 0x8820
++#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835
++#endif
++
++#ifndef GL_ATI_texture_env_combine3
++#define GL_MODULATE_ADD_ATI 0x8744
++#define GL_MODULATE_SIGNED_ADD_ATI 0x8745
++#define GL_MODULATE_SUBTRACT_ATI 0x8746
++#endif
++
++#ifndef GL_ATI_texture_float
++#define GL_RGBA_FLOAT32_ATI 0x8814
++#define GL_RGB_FLOAT32_ATI 0x8815
++#define GL_ALPHA_FLOAT32_ATI 0x8816
++#define GL_INTENSITY_FLOAT32_ATI 0x8817
++#define GL_LUMINANCE_FLOAT32_ATI 0x8818
++#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819
++#define GL_RGBA_FLOAT16_ATI 0x881A
++#define GL_RGB_FLOAT16_ATI 0x881B
++#define GL_ALPHA_FLOAT16_ATI 0x881C
++#define GL_INTENSITY_FLOAT16_ATI 0x881D
++#define GL_LUMINANCE_FLOAT16_ATI 0x881E
++#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F
++#endif
++
++#ifndef GL_NV_float_buffer
++#define GL_FLOAT_R_NV 0x8880
++#define GL_FLOAT_RG_NV 0x8881
++#define GL_FLOAT_RGB_NV 0x8882
++#define GL_FLOAT_RGBA_NV 0x8883
++#define GL_FLOAT_R16_NV 0x8884
++#define GL_FLOAT_R32_NV 0x8885
++#define GL_FLOAT_RG16_NV 0x8886
++#define GL_FLOAT_RG32_NV 0x8887
++#define GL_FLOAT_RGB16_NV 0x8888
++#define GL_FLOAT_RGB32_NV 0x8889
++#define GL_FLOAT_RGBA16_NV 0x888A
++#define GL_FLOAT_RGBA32_NV 0x888B
++#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C
++#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D
++#define GL_FLOAT_RGBA_MODE_NV 0x888E
++#endif
++
++#ifndef GL_NV_fragment_program
++#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868
++#define GL_FRAGMENT_PROGRAM_NV 0x8870
++#define GL_MAX_TEXTURE_COORDS_NV 0x8871
++#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872
++#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873
++#define GL_PROGRAM_ERROR_STRING_NV 0x8874
++#endif
++
++#ifndef GL_NV_half_float
++#define GL_HALF_FLOAT_NV 0x140B
++#endif
++
++#ifndef GL_NV_pixel_data_range
++#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878
++#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879
++#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A
++#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B
++#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C
++#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D
++#endif
++
++#ifndef GL_NV_primitive_restart
++#define GL_PRIMITIVE_RESTART_NV 0x8558
++#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559
++#endif
++
++#ifndef GL_NV_texture_expand_normal
++#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F
++#endif
++
++#ifndef GL_NV_vertex_program2
++#endif
++
++#ifndef GL_ATI_map_object_buffer
++#endif
++
++#ifndef GL_ATI_separate_stencil
++#define GL_STENCIL_BACK_FUNC_ATI 0x8800
++#define GL_STENCIL_BACK_FAIL_ATI 0x8801
++#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802
++#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803
++#endif
++
++#ifndef GL_ATI_vertex_attrib_array_object
++#endif
++
++#ifndef GL_OES_read_format
++#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A
++#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B
++#endif
++
++#ifndef GL_EXT_depth_bounds_test
++#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890
++#define GL_DEPTH_BOUNDS_EXT 0x8891
++#endif
++
++#ifndef GL_EXT_texture_mirror_clamp
++#define GL_MIRROR_CLAMP_EXT 0x8742
++#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
++#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912
++#endif
++
++#ifndef GL_EXT_blend_equation_separate
++#define GL_BLEND_EQUATION_RGB_EXT GL_BLEND_EQUATION
++#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D
++#endif
++
++#ifndef GL_MESA_pack_invert
++#define GL_PACK_INVERT_MESA 0x8758
++#endif
++
++#ifndef GL_MESA_ycbcr_texture
++#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA
++#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB
++#define GL_YCBCR_MESA 0x8757
++#endif
++
++#ifndef GL_EXT_pixel_buffer_object
++#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB
++#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC
++#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED
++#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF
++#endif
++
++#ifndef GL_NV_fragment_program_option
++#endif
++
++#ifndef GL_NV_fragment_program2
++#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4
++#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5
++#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6
++#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7
++#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8
++#endif
++
++#ifndef GL_NV_vertex_program2_option
++/* reuse GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */
++/* reuse GL_MAX_PROGRAM_CALL_DEPTH_NV */
++#endif
++
++#ifndef GL_NV_vertex_program3
++/* reuse GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */
++#endif
++
++#ifndef GL_EXT_framebuffer_object
++#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506
++#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8
++#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6
++#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7
++#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0
++#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1
++#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2
++#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3
++#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4
++#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5
++#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6
++#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7
++#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9
++#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA
++#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB
++#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC
++#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD
++#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF
++#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0
++#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1
++#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2
++#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3
++#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4
++#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5
++#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6
++#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7
++#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8
++#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9
++#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA
++#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB
++#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC
++#define GL_COLOR_ATTACHMENT13_EXT 0x8CED
++#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE
++#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF
++#define GL_DEPTH_ATTACHMENT_EXT 0x8D00
++#define GL_STENCIL_ATTACHMENT_EXT 0x8D20
++#define GL_FRAMEBUFFER_EXT 0x8D40
++#define GL_RENDERBUFFER_EXT 0x8D41
++#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42
++#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43
++#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44
++#define GL_STENCIL_INDEX1_EXT 0x8D46
++#define GL_STENCIL_INDEX4_EXT 0x8D47
++#define GL_STENCIL_INDEX8_EXT 0x8D48
++#define GL_STENCIL_INDEX16_EXT 0x8D49
++#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50
++#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51
++#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52
++#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53
++#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54
++#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55
++#endif
++
++#ifndef GL_GREMEDY_string_marker
++#endif
++
++#ifndef GL_EXT_packed_depth_stencil
++#define GL_DEPTH_STENCIL_EXT 0x84F9
++#define GL_UNSIGNED_INT_24_8_EXT 0x84FA
++#define GL_DEPTH24_STENCIL8_EXT 0x88F0
++#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1
++#endif
++
++#ifndef GL_EXT_stencil_clear_tag
++#define GL_STENCIL_TAG_BITS_EXT 0x88F2
++#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3
++#endif
++
++#ifndef GL_EXT_texture_sRGB
++#define GL_SRGB_EXT 0x8C40
++#define GL_SRGB8_EXT 0x8C41
++#define GL_SRGB_ALPHA_EXT 0x8C42
++#define GL_SRGB8_ALPHA8_EXT 0x8C43
++#define GL_SLUMINANCE_ALPHA_EXT 0x8C44
++#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45
++#define GL_SLUMINANCE_EXT 0x8C46
++#define GL_SLUMINANCE8_EXT 0x8C47
++#define GL_COMPRESSED_SRGB_EXT 0x8C48
++#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49
++#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A
++#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B
++#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
++#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
++#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
++#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
++#endif
++
++#ifndef GL_EXT_framebuffer_blit
++#define GL_READ_FRAMEBUFFER_EXT 0x8CA8
++#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9
++#define GL_READ_FRAMEBUFFER_BINDING_EXT GL_FRAMEBUFFER_BINDING_EXT
++#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CAA
++#endif
++
++#ifndef GL_EXT_framebuffer_multisample
++#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
++#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
++#define GL_MAX_SAMPLES_EXT 0x8D57
++#endif
++
++#ifndef GL_MESAX_texture_stack
++#define GL_TEXTURE_1D_STACK_MESAX 0x8759
++#define GL_TEXTURE_2D_STACK_MESAX 0x875A
++#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B
++#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C
++#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D
++#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E
++#endif
++
++#ifndef GL_EXT_timer_query
++#define GL_TIME_ELAPSED_EXT 0x88BF
++#endif
++
++#ifndef GL_EXT_gpu_program_parameters
++#endif
++
++#ifndef GL_APPLE_flush_buffer_range
++#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12
++#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13
++#endif
++
++#ifndef GL_NV_gpu_program4
++#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904
++#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905
++#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906
++#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907
++#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908
++#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909
++#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5
++#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6
++#endif
++
++#ifndef GL_NV_geometry_program4
++#define GL_LINES_ADJACENCY_EXT 0x000A
++#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B
++#define GL_TRIANGLES_ADJACENCY_EXT 0x000C
++#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D
++#define GL_GEOMETRY_PROGRAM_NV 0x8C26
++#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27
++#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28
++#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA
++#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB
++#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC
++#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
++#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
++#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
++#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9
++#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4
++#define GL_PROGRAM_POINT_SIZE_EXT 0x8642
++#endif
++
++#ifndef GL_EXT_geometry_shader4
++#define GL_GEOMETRY_SHADER_EXT 0x8DD9
++/* reuse GL_GEOMETRY_VERTICES_OUT_EXT */
++/* reuse GL_GEOMETRY_INPUT_TYPE_EXT */
++/* reuse GL_GEOMETRY_OUTPUT_TYPE_EXT */
++/* reuse GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT */
++#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD
++#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE
++#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B
++#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
++#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
++#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
++/* reuse GL_LINES_ADJACENCY_EXT */
++/* reuse GL_LINE_STRIP_ADJACENCY_EXT */
++/* reuse GL_TRIANGLES_ADJACENCY_EXT */
++/* reuse GL_TRIANGLE_STRIP_ADJACENCY_EXT */
++/* reuse GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT */
++/* reuse GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT */
++/* reuse GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT */
++/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */
++/* reuse GL_PROGRAM_POINT_SIZE_EXT */
++#endif
++
++#ifndef GL_NV_vertex_program4
++#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD
++#endif
++
++#ifndef GL_EXT_gpu_shader4
++#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0
++#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1
++#define GL_SAMPLER_BUFFER_EXT 0x8DC2
++#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3
++#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4
++#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5
++#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6
++#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7
++#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8
++#define GL_INT_SAMPLER_1D_EXT 0x8DC9
++#define GL_INT_SAMPLER_2D_EXT 0x8DCA
++#define GL_INT_SAMPLER_3D_EXT 0x8DCB
++#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC
++#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD
++#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE
++#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF
++#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0
++#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1
++#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2
++#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3
++#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4
++#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5
++#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6
++#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7
++#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8
++#endif
++
++#ifndef GL_EXT_draw_instanced
++#endif
++
++#ifndef GL_EXT_packed_float
++#define GL_R11F_G11F_B10F_EXT 0x8C3A
++#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B
++#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C
++#endif
++
++#ifndef GL_EXT_texture_array
++#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18
++#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19
++#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A
++#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B
++#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C
++#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D
++#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF
++#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E
++/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */
++#endif
++
++#ifndef GL_EXT_texture_buffer_object
++#define GL_TEXTURE_BUFFER_EXT 0x8C2A
++#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B
++#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C
++#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D
++#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E
++#endif
++
++#ifndef GL_EXT_texture_compression_latc
++#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70
++#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71
++#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72
++#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73
++#endif
++
++#ifndef GL_EXT_texture_compression_rgtc
++#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB
++#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC
++#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD
++#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE
++#endif
++
++#ifndef GL_EXT_texture_shared_exponent
++#define GL_RGB9_E5_EXT 0x8C3D
++#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E
++#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F
++#endif
++
++#ifndef GL_NV_depth_buffer_float
++#define GL_DEPTH_COMPONENT32F_NV 0x8DAB
++#define GL_DEPTH32F_STENCIL8_NV 0x8DAC
++#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD
++#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF
++#endif
++
++#ifndef GL_NV_fragment_program4
++#endif
++
++#ifndef GL_NV_framebuffer_multisample_coverage
++#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB
++#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10
++#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11
++#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12
++#endif
++
++#ifndef GL_EXT_framebuffer_sRGB
++#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9
++#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA
++#endif
++
++#ifndef GL_NV_geometry_shader4
++#endif
++
++#ifndef GL_NV_parameter_buffer_object
++#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0
++#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1
++#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2
++#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3
++#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4
++#endif
++
++#ifndef GL_EXT_draw_buffers2
++#endif
++
++#ifndef GL_NV_transform_feedback
++#define GL_BACK_PRIMARY_COLOR_NV 0x8C77
++#define GL_BACK_SECONDARY_COLOR_NV 0x8C78
++#define GL_TEXTURE_COORD_NV 0x8C79
++#define GL_CLIP_DISTANCE_NV 0x8C7A
++#define GL_VERTEX_ID_NV 0x8C7B
++#define GL_PRIMITIVE_ID_NV 0x8C7C
++#define GL_GENERIC_ATTRIB_NV 0x8C7D
++#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E
++#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F
++#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80
++#define GL_ACTIVE_VARYINGS_NV 0x8C81
++#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82
++#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83
++#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84
++#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85
++#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86
++#define GL_PRIMITIVES_GENERATED_NV 0x8C87
++#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88
++#define GL_RASTERIZER_DISCARD_NV 0x8C89
++#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_ATTRIBS_NV 0x8C8A
++#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B
++#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C
++#define GL_SEPARATE_ATTRIBS_NV 0x8C8D
++#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E
++#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F
++#endif
++
++#ifndef GL_EXT_bindable_uniform
++#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2
++#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3
++#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4
++#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED
++#define GL_UNIFORM_BUFFER_EXT 0x8DEE
++#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF
++#endif
++
++#ifndef GL_EXT_texture_integer
++#define GL_RGBA32UI_EXT 0x8D70
++#define GL_RGB32UI_EXT 0x8D71
++#define GL_ALPHA32UI_EXT 0x8D72
++#define GL_INTENSITY32UI_EXT 0x8D73
++#define GL_LUMINANCE32UI_EXT 0x8D74
++#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75
++#define GL_RGBA16UI_EXT 0x8D76
++#define GL_RGB16UI_EXT 0x8D77
++#define GL_ALPHA16UI_EXT 0x8D78
++#define GL_INTENSITY16UI_EXT 0x8D79
++#define GL_LUMINANCE16UI_EXT 0x8D7A
++#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B
++#define GL_RGBA8UI_EXT 0x8D7C
++#define GL_RGB8UI_EXT 0x8D7D
++#define GL_ALPHA8UI_EXT 0x8D7E
++#define GL_INTENSITY8UI_EXT 0x8D7F
++#define GL_LUMINANCE8UI_EXT 0x8D80
++#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81
++#define GL_RGBA32I_EXT 0x8D82
++#define GL_RGB32I_EXT 0x8D83
++#define GL_ALPHA32I_EXT 0x8D84
++#define GL_INTENSITY32I_EXT 0x8D85
++#define GL_LUMINANCE32I_EXT 0x8D86
++#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87
++#define GL_RGBA16I_EXT 0x8D88
++#define GL_RGB16I_EXT 0x8D89
++#define GL_ALPHA16I_EXT 0x8D8A
++#define GL_INTENSITY16I_EXT 0x8D8B
++#define GL_LUMINANCE16I_EXT 0x8D8C
++#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D
++#define GL_RGBA8I_EXT 0x8D8E
++#define GL_RGB8I_EXT 0x8D8F
++#define GL_ALPHA8I_EXT 0x8D90
++#define GL_INTENSITY8I_EXT 0x8D91
++#define GL_LUMINANCE8I_EXT 0x8D92
++#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93
++#define GL_RED_INTEGER_EXT 0x8D94
++#define GL_GREEN_INTEGER_EXT 0x8D95
++#define GL_BLUE_INTEGER_EXT 0x8D96
++#define GL_ALPHA_INTEGER_EXT 0x8D97
++#define GL_RGB_INTEGER_EXT 0x8D98
++#define GL_RGBA_INTEGER_EXT 0x8D99
++#define GL_BGR_INTEGER_EXT 0x8D9A
++#define GL_BGRA_INTEGER_EXT 0x8D9B
++#define GL_LUMINANCE_INTEGER_EXT 0x8D9C
++#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D
++#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E
++#endif
++
++
++/*************************************************************/
++
++#include <stddef.h>
++#ifndef GL_VERSION_2_0
++/* GL type for program/shader text */
++typedef char GLchar; /* native character */
++#endif
++
++#ifndef GL_VERSION_1_5
++/* GL types for handling large vertex buffer objects */
++typedef ptrdiff_t GLintptr;
++typedef ptrdiff_t GLsizeiptr;
++#endif
++
++#ifndef GL_ARB_vertex_buffer_object
++/* GL types for handling large vertex buffer objects */
++typedef ptrdiff_t GLintptrARB;
++typedef ptrdiff_t GLsizeiptrARB;
++#endif
++
++#ifndef GL_ARB_shader_objects
++/* GL types for handling shader object handles and program/shader text */
++typedef char GLcharARB; /* native character */
++typedef unsigned int GLhandleARB; /* shader object handle */
++#endif
++
++/* GL types for "half" precision (s10e5) float data in host memory */
++#ifndef GL_ARB_half_float_pixel
++typedef unsigned short GLhalfARB;
++#endif
++
++#ifndef GL_NV_half_float
++typedef unsigned short GLhalfNV;
++#endif
++
++#ifndef GLEXT_64_TYPES_DEFINED
++/* This code block is duplicated in glext.h, so must be protected */
++#define GLEXT_64_TYPES_DEFINED
++/* Define int32_t, int64_t, and uint64_t types for UST/MSC */
++/* (as used in the GL_EXT_timer_query extension). */
++#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
++#include <inttypes.h>
++#elif defined(__sun__)
++#include <inttypes.h>
++#if defined(__STDC__)
++#if defined(__arch64__)
++typedef long int int64_t;
++typedef unsigned long int uint64_t;
++#else
++typedef long long int int64_t;
++typedef unsigned long long int uint64_t;
++#endif /* __arch64__ */
++#endif /* __STDC__ */
++#elif defined( __VMS )
++#include <inttypes.h>
++#elif defined(__SCO__) || defined(__USLC__)
++#include <stdint.h>
++#elif defined(__UNIXOS2__) || defined(__SOL64__)
++typedef long int int32_t;
++typedef long long int int64_t;
++typedef unsigned long long int uint64_t;
++#elif defined(_WIN32) && defined(__GNUC__)
++#include <stdint.h>
++#elif defined(_WIN32)
++typedef __int32 int32_t;
++typedef __int64 int64_t;
++typedef unsigned __int64 uint64_t;
++#else
++#include <inttypes.h> /* Fallback option */
++#endif
++#endif
++
++#ifndef GL_EXT_timer_query
++typedef int64_t GLint64EXT;
++typedef uint64_t GLuint64EXT;
++#endif
++
++#ifndef GL_VERSION_1_2
++#define GL_VERSION_1_2 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glBlendColor (GLclampf, GLclampf, GLclampf, GLclampf);
++GLAPI void APIENTRY glBlendEquation (GLenum);
++GLAPI void APIENTRY glDrawRangeElements (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);
++GLAPI void APIENTRY glColorTable (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
++GLAPI void APIENTRY glColorTableParameterfv (GLenum, GLenum, const GLfloat *);
++GLAPI void APIENTRY glColorTableParameteriv (GLenum, GLenum, const GLint *);
++GLAPI void APIENTRY glCopyColorTable (GLenum, GLenum, GLint, GLint, GLsizei);
++GLAPI void APIENTRY glGetColorTable (GLenum, GLenum, GLenum, GLvoid *);
++GLAPI void APIENTRY glGetColorTableParameterfv (GLenum, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetColorTableParameteriv (GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glColorSubTable (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
++GLAPI void APIENTRY glCopyColorSubTable (GLenum, GLsizei, GLint, GLint, GLsizei);
++GLAPI void APIENTRY glConvolutionFilter1D (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
++GLAPI void APIENTRY glConvolutionFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
++GLAPI void APIENTRY glConvolutionParameterf (GLenum, GLenum, GLfloat);
++GLAPI void APIENTRY glConvolutionParameterfv (GLenum, GLenum, const GLfloat *);
++GLAPI void APIENTRY glConvolutionParameteri (GLenum, GLenum, GLint);
++GLAPI void APIENTRY glConvolutionParameteriv (GLenum, GLenum, const GLint *);
++GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum, GLenum, GLint, GLint, GLsizei);
++GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei);
++GLAPI void APIENTRY glGetConvolutionFilter (GLenum, GLenum, GLenum, GLvoid *);
++GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glGetSeparableFilter (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *);
++GLAPI void APIENTRY glSeparableFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *);
++GLAPI void APIENTRY glGetHistogram (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
++GLAPI void APIENTRY glGetHistogramParameterfv (GLenum, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetHistogramParameteriv (GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glGetMinmax (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
++GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glHistogram (GLenum, GLsizei, GLenum, GLboolean);
++GLAPI void APIENTRY glMinmax (GLenum, GLenum, GLboolean);
++GLAPI void APIENTRY glResetHistogram (GLenum);
++GLAPI void APIENTRY glResetMinmax (GLenum);
++GLAPI void APIENTRY glTexImage3D (GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
++GLAPI void APIENTRY glTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
++GLAPI void APIENTRY glCopyTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
++typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
++typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
++typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
++typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
++typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
++typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
++typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table);
++typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
++typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
++typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
++typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
++typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params);
++typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
++typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params);
++typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
++typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
++typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
++typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image);
++typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
++typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
++typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
++typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
++typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
++typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink);
++typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target);
++typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target);
++typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
++typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
++typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
++#endif
++
++#ifndef GL_VERSION_1_3
++#define GL_VERSION_1_3 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glActiveTexture (GLenum);
++GLAPI void APIENTRY glClientActiveTexture (GLenum);
++GLAPI void APIENTRY glMultiTexCoord1d (GLenum, GLdouble);
++GLAPI void APIENTRY glMultiTexCoord1dv (GLenum, const GLdouble *);
++GLAPI void APIENTRY glMultiTexCoord1f (GLenum, GLfloat);
++GLAPI void APIENTRY glMultiTexCoord1fv (GLenum, const GLfloat *);
++GLAPI void APIENTRY glMultiTexCoord1i (GLenum, GLint);
++GLAPI void APIENTRY glMultiTexCoord1iv (GLenum, const GLint *);
++GLAPI void APIENTRY glMultiTexCoord1s (GLenum, GLshort);
++GLAPI void APIENTRY glMultiTexCoord1sv (GLenum, const GLshort *);
++GLAPI void APIENTRY glMultiTexCoord2d (GLenum, GLdouble, GLdouble);
++GLAPI void APIENTRY glMultiTexCoord2dv (GLenum, const GLdouble *);
++GLAPI void APIENTRY glMultiTexCoord2f (GLenum, GLfloat, GLfloat);
++GLAPI void APIENTRY glMultiTexCoord2fv (GLenum, const GLfloat *);
++GLAPI void APIENTRY glMultiTexCoord2i (GLenum, GLint, GLint);
++GLAPI void APIENTRY glMultiTexCoord2iv (GLenum, const GLint *);
++GLAPI void APIENTRY glMultiTexCoord2s (GLenum, GLshort, GLshort);
++GLAPI void APIENTRY glMultiTexCoord2sv (GLenum, const GLshort *);
++GLAPI void APIENTRY glMultiTexCoord3d (GLenum, GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glMultiTexCoord3dv (GLenum, const GLdouble *);
++GLAPI void APIENTRY glMultiTexCoord3f (GLenum, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glMultiTexCoord3fv (GLenum, const GLfloat *);
++GLAPI void APIENTRY glMultiTexCoord3i (GLenum, GLint, GLint, GLint);
++GLAPI void APIENTRY glMultiTexCoord3iv (GLenum, const GLint *);
++GLAPI void APIENTRY glMultiTexCoord3s (GLenum, GLshort, GLshort, GLshort);
++GLAPI void APIENTRY glMultiTexCoord3sv (GLenum, const GLshort *);
++GLAPI void APIENTRY glMultiTexCoord4d (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glMultiTexCoord4dv (GLenum, const GLdouble *);
++GLAPI void APIENTRY glMultiTexCoord4f (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glMultiTexCoord4fv (GLenum, const GLfloat *);
++GLAPI void APIENTRY glMultiTexCoord4i (GLenum, GLint, GLint, GLint, GLint);
++GLAPI void APIENTRY glMultiTexCoord4iv (GLenum, const GLint *);
++GLAPI void APIENTRY glMultiTexCoord4s (GLenum, GLshort, GLshort, GLshort, GLshort);
++GLAPI void APIENTRY glMultiTexCoord4sv (GLenum, const GLshort *);
++GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *);
++GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *);
++GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *);
++GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *);
++GLAPI void APIENTRY glSampleCoverage (GLclampf, GLboolean);
++GLAPI void APIENTRY glCompressedTexImage3D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glCompressedTexImage2D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glCompressedTexImage1D (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glGetCompressedTexImage (GLenum, GLint, GLvoid *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
++typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v);
++typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m);
++typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m);
++typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m);
++typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m);
++typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
++typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
++typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
++typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
++typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
++typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
++typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
++typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img);
++#endif
++
++#ifndef GL_VERSION_1_4
++#define GL_VERSION_1_4 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glBlendFuncSeparate (GLenum, GLenum, GLenum, GLenum);
++GLAPI void APIENTRY glFogCoordf (GLfloat);
++GLAPI void APIENTRY glFogCoordfv (const GLfloat *);
++GLAPI void APIENTRY glFogCoordd (GLdouble);
++GLAPI void APIENTRY glFogCoorddv (const GLdouble *);
++GLAPI void APIENTRY glFogCoordPointer (GLenum, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glMultiDrawArrays (GLenum, GLint *, GLsizei *, GLsizei);
++GLAPI void APIENTRY glMultiDrawElements (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei);
++GLAPI void APIENTRY glPointParameterf (GLenum, GLfloat);
++GLAPI void APIENTRY glPointParameterfv (GLenum, const GLfloat *);
++GLAPI void APIENTRY glPointParameteri (GLenum, GLint);
++GLAPI void APIENTRY glPointParameteriv (GLenum, const GLint *);
++GLAPI void APIENTRY glSecondaryColor3b (GLbyte, GLbyte, GLbyte);
++GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *);
++GLAPI void APIENTRY glSecondaryColor3d (GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *);
++GLAPI void APIENTRY glSecondaryColor3f (GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *);
++GLAPI void APIENTRY glSecondaryColor3i (GLint, GLint, GLint);
++GLAPI void APIENTRY glSecondaryColor3iv (const GLint *);
++GLAPI void APIENTRY glSecondaryColor3s (GLshort, GLshort, GLshort);
++GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *);
++GLAPI void APIENTRY glSecondaryColor3ub (GLubyte, GLubyte, GLubyte);
++GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *);
++GLAPI void APIENTRY glSecondaryColor3ui (GLuint, GLuint, GLuint);
++GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *);
++GLAPI void APIENTRY glSecondaryColor3us (GLushort, GLushort, GLushort);
++GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *);
++GLAPI void APIENTRY glSecondaryColorPointer (GLint, GLenum, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glWindowPos2d (GLdouble, GLdouble);
++GLAPI void APIENTRY glWindowPos2dv (const GLdouble *);
++GLAPI void APIENTRY glWindowPos2f (GLfloat, GLfloat);
++GLAPI void APIENTRY glWindowPos2fv (const GLfloat *);
++GLAPI void APIENTRY glWindowPos2i (GLint, GLint);
++GLAPI void APIENTRY glWindowPos2iv (const GLint *);
++GLAPI void APIENTRY glWindowPos2s (GLshort, GLshort);
++GLAPI void APIENTRY glWindowPos2sv (const GLshort *);
++GLAPI void APIENTRY glWindowPos3d (GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glWindowPos3dv (const GLdouble *);
++GLAPI void APIENTRY glWindowPos3f (GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glWindowPos3fv (const GLfloat *);
++GLAPI void APIENTRY glWindowPos3i (GLint, GLint, GLint);
++GLAPI void APIENTRY glWindowPos3iv (const GLint *);
++GLAPI void APIENTRY glWindowPos3s (GLshort, GLshort, GLshort);
++GLAPI void APIENTRY glWindowPos3sv (const GLshort *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
++typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord);
++typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord);
++typedef void (APIENTRYP PFNGLFOGCOORDDPROC) (GLdouble coord);
++typedef void (APIENTRYP PFNGLFOGCOORDDVPROC) (const GLdouble *coord);
++typedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
++typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
++typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
++typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
++typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);
++typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
++typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v);
++typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
++typedef void (APIENTRYP PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y);
++typedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC) (const GLdouble *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y);
++typedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC) (const GLfloat *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS2IPROC) (GLint x, GLint y);
++typedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC) (const GLint *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y);
++typedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC) (const GLshort *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z);
++typedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC) (const GLdouble *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC) (const GLfloat *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z);
++typedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC) (const GLint *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z);
++typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort *v);
++#endif
++
++#ifndef GL_VERSION_1_5
++#define GL_VERSION_1_5 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glGenQueries (GLsizei, GLuint *);
++GLAPI void APIENTRY glDeleteQueries (GLsizei, const GLuint *);
++GLAPI GLboolean APIENTRY glIsQuery (GLuint);
++GLAPI void APIENTRY glBeginQuery (GLenum, GLuint);
++GLAPI void APIENTRY glEndQuery (GLenum);
++GLAPI void APIENTRY glGetQueryiv (GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glGetQueryObjectiv (GLuint, GLenum, GLint *);
++GLAPI void APIENTRY glGetQueryObjectuiv (GLuint, GLenum, GLuint *);
++GLAPI void APIENTRY glBindBuffer (GLenum, GLuint);
++GLAPI void APIENTRY glDeleteBuffers (GLsizei, const GLuint *);
++GLAPI void APIENTRY glGenBuffers (GLsizei, GLuint *);
++GLAPI GLboolean APIENTRY glIsBuffer (GLuint);
++GLAPI void APIENTRY glBufferData (GLenum, GLsizeiptr, const GLvoid *, GLenum);
++GLAPI void APIENTRY glBufferSubData (GLenum, GLintptr, GLsizeiptr, const GLvoid *);
++GLAPI void APIENTRY glGetBufferSubData (GLenum, GLintptr, GLsizeiptr, GLvoid *);
++GLAPI GLvoid* APIENTRY glMapBuffer (GLenum, GLenum);
++GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum);
++GLAPI void APIENTRY glGetBufferParameteriv (GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glGetBufferPointerv (GLenum, GLenum, GLvoid* *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids);
++typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids);
++typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id);
++typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);
++typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target);
++typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params);
++typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
++typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
++typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
++typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer);
++typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
++typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
++typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data);
++typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
++typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target);
++typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid* *params);
++#endif
++
++#ifndef GL_VERSION_2_0
++#define GL_VERSION_2_0 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glBlendEquationSeparate (GLenum, GLenum);
++GLAPI void APIENTRY glDrawBuffers (GLsizei, const GLenum *);
++GLAPI void APIENTRY glStencilOpSeparate (GLenum, GLenum, GLenum, GLenum);
++GLAPI void APIENTRY glStencilFuncSeparate (GLenum, GLenum, GLint, GLuint);
++GLAPI void APIENTRY glStencilMaskSeparate (GLenum, GLuint);
++GLAPI void APIENTRY glAttachShader (GLuint, GLuint);
++GLAPI void APIENTRY glBindAttribLocation (GLuint, GLuint, const GLchar *);
++GLAPI void APIENTRY glCompileShader (GLuint);
++GLAPI GLuint APIENTRY glCreateProgram (void);
++GLAPI GLuint APIENTRY glCreateShader (GLenum);
++GLAPI void APIENTRY glDeleteProgram (GLuint);
++GLAPI void APIENTRY glDeleteShader (GLuint);
++GLAPI void APIENTRY glDetachShader (GLuint, GLuint);
++GLAPI void APIENTRY glDisableVertexAttribArray (GLuint);
++GLAPI void APIENTRY glEnableVertexAttribArray (GLuint);
++GLAPI void APIENTRY glGetActiveAttrib (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *);
++GLAPI void APIENTRY glGetActiveUniform (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *);
++GLAPI void APIENTRY glGetAttachedShaders (GLuint, GLsizei, GLsizei *, GLuint *);
++GLAPI GLint APIENTRY glGetAttribLocation (GLuint, const GLchar *);
++GLAPI void APIENTRY glGetProgramiv (GLuint, GLenum, GLint *);
++GLAPI void APIENTRY glGetProgramInfoLog (GLuint, GLsizei, GLsizei *, GLchar *);
++GLAPI void APIENTRY glGetShaderiv (GLuint, GLenum, GLint *);
++GLAPI void APIENTRY glGetShaderInfoLog (GLuint, GLsizei, GLsizei *, GLchar *);
++GLAPI void APIENTRY glGetShaderSource (GLuint, GLsizei, GLsizei *, GLchar *);
++GLAPI GLint APIENTRY glGetUniformLocation (GLuint, const GLchar *);
++GLAPI void APIENTRY glGetUniformfv (GLuint, GLint, GLfloat *);
++GLAPI void APIENTRY glGetUniformiv (GLuint, GLint, GLint *);
++GLAPI void APIENTRY glGetVertexAttribdv (GLuint, GLenum, GLdouble *);
++GLAPI void APIENTRY glGetVertexAttribfv (GLuint, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetVertexAttribiv (GLuint, GLenum, GLint *);
++GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint, GLenum, GLvoid* *);
++GLAPI GLboolean APIENTRY glIsProgram (GLuint);
++GLAPI GLboolean APIENTRY glIsShader (GLuint);
++GLAPI void APIENTRY glLinkProgram (GLuint);
++GLAPI void APIENTRY glShaderSource (GLuint, GLsizei, const GLchar* *, const GLint *);
++GLAPI void APIENTRY glUseProgram (GLuint);
++GLAPI void APIENTRY glUniform1f (GLint, GLfloat);
++GLAPI void APIENTRY glUniform2f (GLint, GLfloat, GLfloat);
++GLAPI void APIENTRY glUniform3f (GLint, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glUniform4f (GLint, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glUniform1i (GLint, GLint);
++GLAPI void APIENTRY glUniform2i (GLint, GLint, GLint);
++GLAPI void APIENTRY glUniform3i (GLint, GLint, GLint, GLint);
++GLAPI void APIENTRY glUniform4i (GLint, GLint, GLint, GLint, GLint);
++GLAPI void APIENTRY glUniform1fv (GLint, GLsizei, const GLfloat *);
++GLAPI void APIENTRY glUniform2fv (GLint, GLsizei, const GLfloat *);
++GLAPI void APIENTRY glUniform3fv (GLint, GLsizei, const GLfloat *);
++GLAPI void APIENTRY glUniform4fv (GLint, GLsizei, const GLfloat *);
++GLAPI void APIENTRY glUniform1iv (GLint, GLsizei, const GLint *);
++GLAPI void APIENTRY glUniform2iv (GLint, GLsizei, const GLint *);
++GLAPI void APIENTRY glUniform3iv (GLint, GLsizei, const GLint *);
++GLAPI void APIENTRY glUniform4iv (GLint, GLsizei, const GLint *);
++GLAPI void APIENTRY glUniformMatrix2fv (GLint, GLsizei, GLboolean, const GLfloat *);
++GLAPI void APIENTRY glUniformMatrix3fv (GLint, GLsizei, GLboolean, const GLfloat *);
++GLAPI void APIENTRY glUniformMatrix4fv (GLint, GLsizei, GLboolean, const GLfloat *);
++GLAPI void APIENTRY glValidateProgram (GLuint);
++GLAPI void APIENTRY glVertexAttrib1d (GLuint, GLdouble);
++GLAPI void APIENTRY glVertexAttrib1dv (GLuint, const GLdouble *);
++GLAPI void APIENTRY glVertexAttrib1f (GLuint, GLfloat);
++GLAPI void APIENTRY glVertexAttrib1fv (GLuint, const GLfloat *);
++GLAPI void APIENTRY glVertexAttrib1s (GLuint, GLshort);
++GLAPI void APIENTRY glVertexAttrib1sv (GLuint, const GLshort *);
++GLAPI void APIENTRY glVertexAttrib2d (GLuint, GLdouble, GLdouble);
++GLAPI void APIENTRY glVertexAttrib2dv (GLuint, const GLdouble *);
++GLAPI void APIENTRY glVertexAttrib2f (GLuint, GLfloat, GLfloat);
++GLAPI void APIENTRY glVertexAttrib2fv (GLuint, const GLfloat *);
++GLAPI void APIENTRY glVertexAttrib2s (GLuint, GLshort, GLshort);
++GLAPI void APIENTRY glVertexAttrib2sv (GLuint, const GLshort *);
++GLAPI void APIENTRY glVertexAttrib3d (GLuint, GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glVertexAttrib3dv (GLuint, const GLdouble *);
++GLAPI void APIENTRY glVertexAttrib3f (GLuint, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glVertexAttrib3fv (GLuint, const GLfloat *);
++GLAPI void APIENTRY glVertexAttrib3s (GLuint, GLshort, GLshort, GLshort);
++GLAPI void APIENTRY glVertexAttrib3sv (GLuint, const GLshort *);
++GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint, const GLbyte *);
++GLAPI void APIENTRY glVertexAttrib4Niv (GLuint, const GLint *);
++GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint, const GLshort *);
++GLAPI void APIENTRY glVertexAttrib4Nub (GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
++GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint, const GLubyte *);
++GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint, const GLuint *);
++GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint, const GLushort *);
++GLAPI void APIENTRY glVertexAttrib4bv (GLuint, const GLbyte *);
++GLAPI void APIENTRY glVertexAttrib4d (GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glVertexAttrib4dv (GLuint, const GLdouble *);
++GLAPI void APIENTRY glVertexAttrib4f (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glVertexAttrib4fv (GLuint, const GLfloat *);
++GLAPI void APIENTRY glVertexAttrib4iv (GLuint, const GLint *);
++GLAPI void APIENTRY glVertexAttrib4s (GLuint, GLshort, GLshort, GLshort, GLshort);
++GLAPI void APIENTRY glVertexAttrib4sv (GLuint, const GLshort *);
++GLAPI void APIENTRY glVertexAttrib4ubv (GLuint, const GLubyte *);
++GLAPI void APIENTRY glVertexAttrib4uiv (GLuint, const GLuint *);
++GLAPI void APIENTRY glVertexAttrib4usv (GLuint, const GLushort *);
++GLAPI void APIENTRY glVertexAttribPointer (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
++typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs);
++typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
++typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
++typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
++typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
++typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);
++typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
++typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void);
++typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
++typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);
++typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);
++typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
++typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
++typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
++typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
++typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
++typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj);
++typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
++typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
++typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
++typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
++typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
++typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);
++typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params);
++typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
++typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program);
++typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader);
++typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);
++typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length);
++typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);
++typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
++typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
++typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
++typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
++typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
++typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
++typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
++typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
++typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);
++typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);
++typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);
++typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
++typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);
++typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);
++typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);
++typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);
++typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
++typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
++typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
++typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
++#endif
++
++#ifndef GL_VERSION_2_1
++#define GL_VERSION_2_1 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glUniformMatrix2x3fv (GLint, GLsizei, GLboolean, const GLfloat *);
++GLAPI void APIENTRY glUniformMatrix3x2fv (GLint, GLsizei, GLboolean, const GLfloat *);
++GLAPI void APIENTRY glUniformMatrix2x4fv (GLint, GLsizei, GLboolean, const GLfloat *);
++GLAPI void APIENTRY glUniformMatrix4x2fv (GLint, GLsizei, GLboolean, const GLfloat *);
++GLAPI void APIENTRY glUniformMatrix3x4fv (GLint, GLsizei, GLboolean, const GLfloat *);
++GLAPI void APIENTRY glUniformMatrix4x3fv (GLint, GLsizei, GLboolean, const GLfloat *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
++typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
++typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
++typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
++typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
++typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
++#endif
++
++#ifndef GL_ARB_multitexture
++#define GL_ARB_multitexture 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glActiveTextureARB (GLenum);
++GLAPI void APIENTRY glClientActiveTextureARB (GLenum);
++GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum, GLdouble);
++GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum, const GLdouble *);
++GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum, GLfloat);
++GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum, const GLfloat *);
++GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum, GLint);
++GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum, const GLint *);
++GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum, GLshort);
++GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum, const GLshort *);
++GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum, GLdouble, GLdouble);
++GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum, const GLdouble *);
++GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum, GLfloat, GLfloat);
++GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum, const GLfloat *);
++GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum, GLint, GLint);
++GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum, const GLint *);
++GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum, GLshort, GLshort);
++GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum, const GLshort *);
++GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum, GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum, const GLdouble *);
++GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum, const GLfloat *);
++GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum, GLint, GLint, GLint);
++GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum, const GLint *);
++GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum, GLshort, GLshort, GLshort);
++GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum, const GLshort *);
++GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum, const GLdouble *);
++GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum, const GLfloat *);
++GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum, GLint, GLint, GLint, GLint);
++GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum, const GLint *);
++GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum, GLshort, GLshort, GLshort, GLshort);
++GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum, const GLshort *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
++typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
++#endif
++
++#ifndef GL_ARB_transpose_matrix
++#define GL_ARB_transpose_matrix 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *);
++GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *);
++GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *);
++GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
++typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
++typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
++typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
++#endif
++
++#ifndef GL_ARB_multisample
++#define GL_ARB_multisample 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glSampleCoverageARB (GLclampf, GLboolean);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert);
++#endif
++
++#ifndef GL_ARB_texture_env_add
++#define GL_ARB_texture_env_add 1
++#endif
++
++#ifndef GL_ARB_texture_cube_map
++#define GL_ARB_texture_cube_map 1
++#endif
++
++#ifndef GL_ARB_texture_compression
++#define GL_ARB_texture_compression 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum, GLint, GLvoid *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
++typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
++typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
++typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
++typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
++typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
++typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, GLvoid *img);
++#endif
++
++#ifndef GL_ARB_texture_border_clamp
++#define GL_ARB_texture_border_clamp 1
++#endif
++
++#ifndef GL_ARB_point_parameters
++#define GL_ARB_point_parameters 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glPointParameterfARB (GLenum, GLfloat);
++GLAPI void APIENTRY glPointParameterfvARB (GLenum, const GLfloat *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param);
++typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params);
++#endif
++
++#ifndef GL_ARB_vertex_blend
++#define GL_ARB_vertex_blend 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glWeightbvARB (GLint, const GLbyte *);
++GLAPI void APIENTRY glWeightsvARB (GLint, const GLshort *);
++GLAPI void APIENTRY glWeightivARB (GLint, const GLint *);
++GLAPI void APIENTRY glWeightfvARB (GLint, const GLfloat *);
++GLAPI void APIENTRY glWeightdvARB (GLint, const GLdouble *);
++GLAPI void APIENTRY glWeightubvARB (GLint, const GLubyte *);
++GLAPI void APIENTRY glWeightusvARB (GLint, const GLushort *);
++GLAPI void APIENTRY glWeightuivARB (GLint, const GLuint *);
++GLAPI void APIENTRY glWeightPointerARB (GLint, GLenum, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glVertexBlendARB (GLint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights);
++typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights);
++typedef void (APIENTRYP PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights);
++typedef void (APIENTRYP PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights);
++typedef void (APIENTRYP PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights);
++typedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights);
++typedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights);
++typedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights);
++typedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
++typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count);
++#endif
++
++#ifndef GL_ARB_matrix_palette
++#define GL_ARB_matrix_palette 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint);
++GLAPI void APIENTRY glMatrixIndexubvARB (GLint, const GLubyte *);
++GLAPI void APIENTRY glMatrixIndexusvARB (GLint, const GLushort *);
++GLAPI void APIENTRY glMatrixIndexuivARB (GLint, const GLuint *);
++GLAPI void APIENTRY glMatrixIndexPointerARB (GLint, GLenum, GLsizei, const GLvoid *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index);
++typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices);
++typedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices);
++typedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices);
++typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
++#endif
++
++#ifndef GL_ARB_texture_env_combine
++#define GL_ARB_texture_env_combine 1
++#endif
++
++#ifndef GL_ARB_texture_env_crossbar
++#define GL_ARB_texture_env_crossbar 1
++#endif
++
++#ifndef GL_ARB_texture_env_dot3
++#define GL_ARB_texture_env_dot3 1
++#endif
++
++#ifndef GL_ARB_texture_mirrored_repeat
++#define GL_ARB_texture_mirrored_repeat 1
++#endif
++
++#ifndef GL_ARB_depth_texture
++#define GL_ARB_depth_texture 1
++#endif
++
++#ifndef GL_ARB_shadow
++#define GL_ARB_shadow 1
++#endif
++
++#ifndef GL_ARB_shadow_ambient
++#define GL_ARB_shadow_ambient 1
++#endif
++
++#ifndef GL_ARB_window_pos
++#define GL_ARB_window_pos 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glWindowPos2dARB (GLdouble, GLdouble);
++GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *);
++GLAPI void APIENTRY glWindowPos2fARB (GLfloat, GLfloat);
++GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *);
++GLAPI void APIENTRY glWindowPos2iARB (GLint, GLint);
++GLAPI void APIENTRY glWindowPos2ivARB (const GLint *);
++GLAPI void APIENTRY glWindowPos2sARB (GLshort, GLshort);
++GLAPI void APIENTRY glWindowPos2svARB (const GLshort *);
++GLAPI void APIENTRY glWindowPos3dARB (GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *);
++GLAPI void APIENTRY glWindowPos3fARB (GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *);
++GLAPI void APIENTRY glWindowPos3iARB (GLint, GLint, GLint);
++GLAPI void APIENTRY glWindowPos3ivARB (const GLint *);
++GLAPI void APIENTRY glWindowPos3sARB (GLshort, GLshort, GLshort);
++GLAPI void APIENTRY glWindowPos3svARB (const GLshort *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y);
++typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y);
++typedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y);
++typedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC) (const GLint *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y);
++typedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z);
++typedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z);
++typedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC) (const GLint *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z);
++typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v);
++#endif
++
++#ifndef GL_ARB_vertex_program
++#define GL_ARB_vertex_program 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glVertexAttrib1dARB (GLuint, GLdouble);
++GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint, const GLdouble *);
++GLAPI void APIENTRY glVertexAttrib1fARB (GLuint, GLfloat);
++GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint, const GLfloat *);
++GLAPI void APIENTRY glVertexAttrib1sARB (GLuint, GLshort);
++GLAPI void APIENTRY glVertexAttrib1svARB (GLuint, const GLshort *);
++GLAPI void APIENTRY glVertexAttrib2dARB (GLuint, GLdouble, GLdouble);
++GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint, const GLdouble *);
++GLAPI void APIENTRY glVertexAttrib2fARB (GLuint, GLfloat, GLfloat);
++GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint, const GLfloat *);
++GLAPI void APIENTRY glVertexAttrib2sARB (GLuint, GLshort, GLshort);
++GLAPI void APIENTRY glVertexAttrib2svARB (GLuint, const GLshort *);
++GLAPI void APIENTRY glVertexAttrib3dARB (GLuint, GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint, const GLdouble *);
++GLAPI void APIENTRY glVertexAttrib3fARB (GLuint, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint, const GLfloat *);
++GLAPI void APIENTRY glVertexAttrib3sARB (GLuint, GLshort, GLshort, GLshort);
++GLAPI void APIENTRY glVertexAttrib3svARB (GLuint, const GLshort *);
++GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint, const GLbyte *);
++GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint, const GLint *);
++GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint, const GLshort *);
++GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
++GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint, const GLubyte *);
++GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint, const GLuint *);
++GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint, const GLushort *);
++GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint, const GLbyte *);
++GLAPI void APIENTRY glVertexAttrib4dARB (GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint, const GLdouble *);
++GLAPI void APIENTRY glVertexAttrib4fARB (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint, const GLfloat *);
++GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint, const GLint *);
++GLAPI void APIENTRY glVertexAttrib4sARB (GLuint, GLshort, GLshort, GLshort, GLshort);
++GLAPI void APIENTRY glVertexAttrib4svARB (GLuint, const GLshort *);
++GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint, const GLubyte *);
++GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint, const GLuint *);
++GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint, const GLushort *);
++GLAPI void APIENTRY glVertexAttribPointerARB (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint);
++GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint);
++GLAPI void APIENTRY glProgramStringARB (GLenum, GLenum, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glBindProgramARB (GLenum, GLuint);
++GLAPI void APIENTRY glDeleteProgramsARB (GLsizei, const GLuint *);
++GLAPI void APIENTRY glGenProgramsARB (GLsizei, GLuint *);
++GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum, GLuint, const GLdouble *);
++GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum, GLuint, const GLfloat *);
++GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum, GLuint, const GLdouble *);
++GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum, GLuint, const GLfloat *);
++GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum, GLuint, GLdouble *);
++GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum, GLuint, GLfloat *);
++GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum, GLuint, GLdouble *);
++GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum, GLuint, GLfloat *);
++GLAPI void APIENTRY glGetProgramivARB (GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glGetProgramStringARB (GLenum, GLenum, GLvoid *);
++GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint, GLenum, GLdouble *);
++GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetVertexAttribivARB (GLuint, GLenum, GLint *);
++GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint, GLenum, GLvoid* *);
++GLAPI GLboolean APIENTRY glIsProgramARB (GLuint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
++typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
++typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
++typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid *string);
++typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program);
++typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs);
++typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs);
++typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
++typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
++typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
++typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
++typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
++typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
++typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
++typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
++typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
++typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
++typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, GLvoid *string);
++typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params);
++typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
++typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program);
++#endif
++
++#ifndef GL_ARB_fragment_program
++#define GL_ARB_fragment_program 1
++/* All ARB_fragment_program entry points are shared with ARB_vertex_program. */
++#endif
++
++#ifndef GL_ARB_vertex_buffer_object
++#define GL_ARB_vertex_buffer_object 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glBindBufferARB (GLenum, GLuint);
++GLAPI void APIENTRY glDeleteBuffersARB (GLsizei, const GLuint *);
++GLAPI void APIENTRY glGenBuffersARB (GLsizei, GLuint *);
++GLAPI GLboolean APIENTRY glIsBufferARB (GLuint);
++GLAPI void APIENTRY glBufferDataARB (GLenum, GLsizeiptrARB, const GLvoid *, GLenum);
++GLAPI void APIENTRY glBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid *);
++GLAPI void APIENTRY glGetBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, GLvoid *);
++GLAPI GLvoid* APIENTRY glMapBufferARB (GLenum, GLenum);
++GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum);
++GLAPI void APIENTRY glGetBufferParameterivARB (GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glGetBufferPointervARB (GLenum, GLenum, GLvoid* *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
++typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers);
++typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers);
++typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC) (GLuint buffer);
++typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage);
++typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data);
++typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data);
++typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access);
++typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC) (GLenum target);
++typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid* *params);
++#endif
++
++#ifndef GL_ARB_occlusion_query
++#define GL_ARB_occlusion_query 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glGenQueriesARB (GLsizei, GLuint *);
++GLAPI void APIENTRY glDeleteQueriesARB (GLsizei, const GLuint *);
++GLAPI GLboolean APIENTRY glIsQueryARB (GLuint);
++GLAPI void APIENTRY glBeginQueryARB (GLenum, GLuint);
++GLAPI void APIENTRY glEndQueryARB (GLenum);
++GLAPI void APIENTRY glGetQueryivARB (GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glGetQueryObjectivARB (GLuint, GLenum, GLint *);
++GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint, GLenum, GLuint *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids);
++typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids);
++typedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC) (GLuint id);
++typedef void (APIENTRYP PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id);
++typedef void (APIENTRYP PFNGLENDQUERYARBPROC) (GLenum target);
++typedef void (APIENTRYP PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params);
++#endif
++
++#ifndef GL_ARB_shader_objects
++#define GL_ARB_shader_objects 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB);
++GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum);
++GLAPI void APIENTRY glDetachObjectARB (GLhandleARB, GLhandleARB);
++GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum);
++GLAPI void APIENTRY glShaderSourceARB (GLhandleARB, GLsizei, const GLcharARB* *, const GLint *);
++GLAPI void APIENTRY glCompileShaderARB (GLhandleARB);
++GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB (void);
++GLAPI void APIENTRY glAttachObjectARB (GLhandleARB, GLhandleARB);
++GLAPI void APIENTRY glLinkProgramARB (GLhandleARB);
++GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB);
++GLAPI void APIENTRY glValidateProgramARB (GLhandleARB);
++GLAPI void APIENTRY glUniform1fARB (GLint, GLfloat);
++GLAPI void APIENTRY glUniform2fARB (GLint, GLfloat, GLfloat);
++GLAPI void APIENTRY glUniform3fARB (GLint, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glUniform4fARB (GLint, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glUniform1iARB (GLint, GLint);
++GLAPI void APIENTRY glUniform2iARB (GLint, GLint, GLint);
++GLAPI void APIENTRY glUniform3iARB (GLint, GLint, GLint, GLint);
++GLAPI void APIENTRY glUniform4iARB (GLint, GLint, GLint, GLint, GLint);
++GLAPI void APIENTRY glUniform1fvARB (GLint, GLsizei, const GLfloat *);
++GLAPI void APIENTRY glUniform2fvARB (GLint, GLsizei, const GLfloat *);
++GLAPI void APIENTRY glUniform3fvARB (GLint, GLsizei, const GLfloat *);
++GLAPI void APIENTRY glUniform4fvARB (GLint, GLsizei, const GLfloat *);
++GLAPI void APIENTRY glUniform1ivARB (GLint, GLsizei, const GLint *);
++GLAPI void APIENTRY glUniform2ivARB (GLint, GLsizei, const GLint *);
++GLAPI void APIENTRY glUniform3ivARB (GLint, GLsizei, const GLint *);
++GLAPI void APIENTRY glUniform4ivARB (GLint, GLsizei, const GLint *);
++GLAPI void APIENTRY glUniformMatrix2fvARB (GLint, GLsizei, GLboolean, const GLfloat *);
++GLAPI void APIENTRY glUniformMatrix3fvARB (GLint, GLsizei, GLboolean, const GLfloat *);
++GLAPI void APIENTRY glUniformMatrix4fvARB (GLint, GLsizei, GLboolean, const GLfloat *);
++GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB, GLenum, GLint *);
++GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *);
++GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB, GLsizei, GLsizei *, GLhandleARB *);
++GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB, const GLcharARB *);
++GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *);
++GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB, GLint, GLfloat *);
++GLAPI void APIENTRY glGetUniformivARB (GLhandleARB, GLint, GLint *);
++GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj);
++typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname);
++typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj);
++typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType);
++typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length);
++typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj);
++typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void);
++typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj);
++typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj);
++typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj);
++typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj);
++typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0);
++typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1);
++typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
++typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
++typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0);
++typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1);
++typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2);
++typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
++typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
++typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
++typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
++typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
++typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value);
++typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value);
++typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value);
++typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value);
++typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
++typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
++typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
++typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
++typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);
++typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
++typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
++typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params);
++typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);
++#endif
++
++#ifndef GL_ARB_vertex_shader
++#define GL_ARB_vertex_shader 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB, GLuint, const GLcharARB *);
++GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *);
++GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB, const GLcharARB *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name);
++typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
++typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
++#endif
++
++#ifndef GL_ARB_fragment_shader
++#define GL_ARB_fragment_shader 1
++#endif
++
++#ifndef GL_ARB_shading_language_100
++#define GL_ARB_shading_language_100 1
++#endif
++
++#ifndef GL_ARB_texture_non_power_of_two
++#define GL_ARB_texture_non_power_of_two 1
++#endif
++
++#ifndef GL_ARB_point_sprite
++#define GL_ARB_point_sprite 1
++#endif
++
++#ifndef GL_ARB_fragment_program_shadow
++#define GL_ARB_fragment_program_shadow 1
++#endif
++
++#ifndef GL_ARB_draw_buffers
++#define GL_ARB_draw_buffers 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glDrawBuffersARB (GLsizei, const GLenum *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs);
++#endif
++
++#ifndef GL_ARB_texture_rectangle
++#define GL_ARB_texture_rectangle 1
++#endif
++
++#ifndef GL_ARB_color_buffer_float
++#define GL_ARB_color_buffer_float 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glClampColorARB (GLenum, GLenum);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp);
++#endif
++
++#ifndef GL_ARB_half_float_pixel
++#define GL_ARB_half_float_pixel 1
++#endif
++
++#ifndef GL_ARB_texture_float
++#define GL_ARB_texture_float 1
++#endif
++
++#ifndef GL_ARB_pixel_buffer_object
++#define GL_ARB_pixel_buffer_object 1
++#endif
++
++#ifndef GL_EXT_abgr
++#define GL_EXT_abgr 1
++#endif
++
++#ifndef GL_EXT_blend_color
++#define GL_EXT_blend_color 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glBlendColorEXT (GLclampf, GLclampf, GLclampf, GLclampf);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
++#endif
++
++#ifndef GL_EXT_polygon_offset
++#define GL_EXT_polygon_offset 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat, GLfloat);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias);
++#endif
++
++#ifndef GL_EXT_texture
++#define GL_EXT_texture 1
++#endif
++
++#ifndef GL_EXT_texture3D
++#define GL_EXT_texture3D 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glTexImage3DEXT (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
++GLAPI void APIENTRY glTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
++typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
++#endif
++
++#ifndef GL_SGIS_texture_filter4
++#define GL_SGIS_texture_filter4 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum, GLenum, GLfloat *);
++GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum, GLenum, GLsizei, const GLfloat *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights);
++typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
++#endif
++
++#ifndef GL_EXT_subtexture
++#define GL_EXT_subtexture 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glTexSubImage1DEXT (GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *);
++GLAPI void APIENTRY glTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
++typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
++#endif
++
++#ifndef GL_EXT_copy_texture
++#define GL_EXT_copy_texture 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
++GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
++GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei);
++GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
++GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
++typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
++typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
++typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
++typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
++#endif
++
++#ifndef GL_EXT_histogram
++#define GL_EXT_histogram 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glGetHistogramEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
++GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glGetMinmaxEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
++GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glHistogramEXT (GLenum, GLsizei, GLenum, GLboolean);
++GLAPI void APIENTRY glMinmaxEXT (GLenum, GLenum, GLboolean);
++GLAPI void APIENTRY glResetHistogramEXT (GLenum);
++GLAPI void APIENTRY glResetMinmaxEXT (GLenum);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
++typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
++typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
++typedef void (APIENTRYP PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink);
++typedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC) (GLenum target);
++typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target);
++#endif
++
++#ifndef GL_EXT_convolution
++#define GL_EXT_convolution 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
++GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
++GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum, GLenum, GLfloat);
++GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum, GLenum, const GLfloat *);
++GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum, GLenum, GLint);
++GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum, GLenum, const GLint *);
++GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum, GLenum, GLint, GLint, GLsizei);
++GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei);
++GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum, GLenum, GLenum, GLvoid *);
++GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *);
++GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
++typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
++typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params);
++typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
++typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params);
++typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
++typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
++typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
++typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image);
++typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
++typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
++#endif
++
++#ifndef GL_SGI_color_matrix
++#define GL_SGI_color_matrix 1
++#endif
++
++#ifndef GL_SGI_color_table
++#define GL_SGI_color_table 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glColorTableSGI (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
++GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum, GLenum, const GLfloat *);
++GLAPI void APIENTRY glColorTableParameterivSGI (GLenum, GLenum, const GLint *);
++GLAPI void APIENTRY glCopyColorTableSGI (GLenum, GLenum, GLint, GLint, GLsizei);
++GLAPI void APIENTRY glGetColorTableSGI (GLenum, GLenum, GLenum, GLvoid *);
++GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum, GLenum, GLint *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
++typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params);
++typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params);
++typedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
++typedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table);
++typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params);
++#endif
++
++#ifndef GL_SGIX_pixel_texture
++#define GL_SGIX_pixel_texture 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glPixelTexGenSGIX (GLenum);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode);
++#endif
++
++#ifndef GL_SGIS_pixel_texture
++#define GL_SGIS_pixel_texture 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum, GLint);
++GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum, const GLint *);
++GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum, GLfloat);
++GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum, const GLfloat *);
++GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum, GLint *);
++GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum, GLfloat *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param);
++typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params);
++typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
++typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
++typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params);
++#endif
++
++#ifndef GL_SGIS_texture4D
++#define GL_SGIS_texture4D 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glTexImage4DSGIS (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
++GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
++typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels);
++#endif
++
++#ifndef GL_SGI_texture_color_table
++#define GL_SGI_texture_color_table 1
++#endif
++
++#ifndef GL_EXT_cmyka
++#define GL_EXT_cmyka 1
++#endif
++
++#ifndef GL_EXT_texture_object
++#define GL_EXT_texture_object 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei, const GLuint *, GLboolean *);
++GLAPI void APIENTRY glBindTextureEXT (GLenum, GLuint);
++GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei, const GLuint *);
++GLAPI void APIENTRY glGenTexturesEXT (GLsizei, GLuint *);
++GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint);
++GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei, const GLuint *, const GLclampf *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences);
++typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture);
++typedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures);
++typedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures);
++typedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC) (GLuint texture);
++typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities);
++#endif
++
++#ifndef GL_SGIS_detail_texture
++#define GL_SGIS_detail_texture 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum, GLsizei, const GLfloat *);
++GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum, GLfloat *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
++typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
++#endif
++
++#ifndef GL_SGIS_sharpen_texture
++#define GL_SGIS_sharpen_texture 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum, GLsizei, const GLfloat *);
++GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum, GLfloat *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
++typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
++#endif
++
++#ifndef GL_EXT_packed_pixels
++#define GL_EXT_packed_pixels 1
++#endif
++
++#ifndef GL_SGIS_texture_lod
++#define GL_SGIS_texture_lod 1
++#endif
++
++#ifndef GL_SGIS_multisample
++#define GL_SGIS_multisample 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glSampleMaskSGIS (GLclampf, GLboolean);
++GLAPI void APIENTRY glSamplePatternSGIS (GLenum);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert);
++typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern);
++#endif
++
++#ifndef GL_EXT_rescale_normal
++#define GL_EXT_rescale_normal 1
++#endif
++
++#ifndef GL_EXT_vertex_array
++#define GL_EXT_vertex_array 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glArrayElementEXT (GLint);
++GLAPI void APIENTRY glColorPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glDrawArraysEXT (GLenum, GLint, GLsizei);
++GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei, GLsizei, const GLboolean *);
++GLAPI void APIENTRY glGetPointervEXT (GLenum, GLvoid* *);
++GLAPI void APIENTRY glIndexPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glNormalPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glTexCoordPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glVertexPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i);
++typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
++typedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count);
++typedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer);
++typedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC) (GLenum pname, GLvoid* *params);
++typedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
++typedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
++typedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
++typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
++#endif
++
++#ifndef GL_EXT_misc_attribute
++#define GL_EXT_misc_attribute 1
++#endif
++
++#ifndef GL_SGIS_generate_mipmap
++#define GL_SGIS_generate_mipmap 1
++#endif
++
++#ifndef GL_SGIX_clipmap
++#define GL_SGIX_clipmap 1
++#endif
++
++#ifndef GL_SGIX_shadow
++#define GL_SGIX_shadow 1
++#endif
++
++#ifndef GL_SGIS_texture_edge_clamp
++#define GL_SGIS_texture_edge_clamp 1
++#endif
++
++#ifndef GL_SGIS_texture_border_clamp
++#define GL_SGIS_texture_border_clamp 1
++#endif
++
++#ifndef GL_EXT_blend_minmax
++#define GL_EXT_blend_minmax 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glBlendEquationEXT (GLenum);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);
++#endif
++
++#ifndef GL_EXT_blend_subtract
++#define GL_EXT_blend_subtract 1
++#endif
++
++#ifndef GL_EXT_blend_logic_op
++#define GL_EXT_blend_logic_op 1
++#endif
++
++#ifndef GL_SGIX_interlace
++#define GL_SGIX_interlace 1
++#endif
++
++#ifndef GL_SGIX_pixel_tiles
++#define GL_SGIX_pixel_tiles 1
++#endif
++
++#ifndef GL_SGIX_texture_select
++#define GL_SGIX_texture_select 1
++#endif
++
++#ifndef GL_SGIX_sprite
++#define GL_SGIX_sprite 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum, GLfloat);
++GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum, const GLfloat *);
++GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum, GLint);
++GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum, const GLint *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param);
++typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params);
++typedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param);
++typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params);
++#endif
++
++#ifndef GL_SGIX_texture_multi_buffer
++#define GL_SGIX_texture_multi_buffer 1
++#endif
++
++#ifndef GL_EXT_point_parameters
++#define GL_EXT_point_parameters 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glPointParameterfEXT (GLenum, GLfloat);
++GLAPI void APIENTRY glPointParameterfvEXT (GLenum, const GLfloat *);
++/* ERO Begin */
++GLAPI void APIENTRY glPointParameteriEXT (GLenum, GLint);
++GLAPI void APIENTRY glPointParameterivEXT (GLenum, const GLint *);
++/* ERO end */
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param);
++typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params);
++#endif
++
++#ifndef GL_SGIS_point_parameters
++#define GL_SGIS_point_parameters 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glPointParameterfSGIS (GLenum, GLfloat);
++GLAPI void APIENTRY glPointParameterfvSGIS (GLenum, const GLfloat *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
++typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
++#endif
++
++#ifndef GL_SGIX_instruments
++#define GL_SGIX_instruments 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI GLint APIENTRY glGetInstrumentsSGIX (void);
++GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei, GLint *);
++GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *);
++GLAPI void APIENTRY glReadInstrumentsSGIX (GLint);
++GLAPI void APIENTRY glStartInstrumentsSGIX (void);
++GLAPI void APIENTRY glStopInstrumentsSGIX (GLint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) (void);
++typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer);
++typedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p);
++typedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker);
++typedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC) (void);
++typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker);
++#endif
++
++#ifndef GL_SGIX_texture_scale_bias
++#define GL_SGIX_texture_scale_bias 1
++#endif
++
++#ifndef GL_SGIX_framezoom
++#define GL_SGIX_framezoom 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glFrameZoomSGIX (GLint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor);
++#endif
++
++#ifndef GL_SGIX_tag_sample_buffer
++#define GL_SGIX_tag_sample_buffer 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glTagSampleBufferSGIX (void);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) (void);
++#endif
++
++#ifndef GL_SGIX_polynomial_ffd
++#define GL_SGIX_polynomial_ffd 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *);
++GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *);
++GLAPI void APIENTRY glDeformSGIX (GLbitfield);
++GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);
++typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);
++typedef void (APIENTRYP PFNGLDEFORMSGIXPROC) (GLbitfield mask);
++typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask);
++#endif
++
++#ifndef GL_SGIX_reference_plane
++#define GL_SGIX_reference_plane 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation);
++#endif
++
++#ifndef GL_SGIX_flush_raster
++#define GL_SGIX_flush_raster 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glFlushRasterSGIX (void);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void);
++#endif
++
++#ifndef GL_SGIX_depth_texture
++#define GL_SGIX_depth_texture 1
++#endif
++
++#ifndef GL_SGIS_fog_function
++#define GL_SGIS_fog_function 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glFogFuncSGIS (GLsizei, const GLfloat *);
++GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points);
++typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points);
++#endif
++
++#ifndef GL_SGIX_fog_offset
++#define GL_SGIX_fog_offset 1
++#endif
++
++#ifndef GL_HP_image_transform
++#define GL_HP_image_transform 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glImageTransformParameteriHP (GLenum, GLenum, GLint);
++GLAPI void APIENTRY glImageTransformParameterfHP (GLenum, GLenum, GLfloat);
++GLAPI void APIENTRY glImageTransformParameterivHP (GLenum, GLenum, const GLint *);
++GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum, GLenum, const GLfloat *);
++GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum, GLenum, GLfloat *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param);
++typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param);
++typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params);
++typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params);
++typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params);
++#endif
++
++#ifndef GL_HP_convolution_border_modes
++#define GL_HP_convolution_border_modes 1
++#endif
++
++#ifndef GL_SGIX_texture_add_env
++#define GL_SGIX_texture_add_env 1
++#endif
++
++#ifndef GL_EXT_color_subtable
++#define GL_EXT_color_subtable 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glColorSubTableEXT (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
++GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum, GLsizei, GLint, GLint, GLsizei);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
++typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
++#endif
++
++#ifndef GL_PGI_vertex_hints
++#define GL_PGI_vertex_hints 1
++#endif
++
++#ifndef GL_PGI_misc_hints
++#define GL_PGI_misc_hints 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glHintPGI (GLenum, GLint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode);
++#endif
++
++#ifndef GL_EXT_paletted_texture
++#define GL_EXT_paletted_texture 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glColorTableEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
++GLAPI void APIENTRY glGetColorTableEXT (GLenum, GLenum, GLenum, GLvoid *);
++GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum, GLenum, GLfloat *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
++typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *data);
++typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
++#endif
++
++#ifndef GL_EXT_clip_volume_hint
++#define GL_EXT_clip_volume_hint 1
++#endif
++
++#ifndef GL_SGIX_list_priority
++#define GL_SGIX_list_priority 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetListParameterivSGIX (GLuint, GLenum, GLint *);
++GLAPI void APIENTRY glListParameterfSGIX (GLuint, GLenum, GLfloat);
++GLAPI void APIENTRY glListParameterfvSGIX (GLuint, GLenum, const GLfloat *);
++GLAPI void APIENTRY glListParameteriSGIX (GLuint, GLenum, GLint);
++GLAPI void APIENTRY glListParameterivSGIX (GLuint, GLenum, const GLint *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param);
++typedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params);
++typedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param);
++typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params);
++#endif
++
++#ifndef GL_SGIX_ir_instrument1
++#define GL_SGIX_ir_instrument1 1
++#endif
++
++#ifndef GL_SGIX_calligraphic_fragment
++#define GL_SGIX_calligraphic_fragment 1
++#endif
++
++#ifndef GL_SGIX_texture_lod_bias
++#define GL_SGIX_texture_lod_bias 1
++#endif
++
++#ifndef GL_SGIX_shadow_ambient
++#define GL_SGIX_shadow_ambient 1
++#endif
++
++#ifndef GL_EXT_index_texture
++#define GL_EXT_index_texture 1
++#endif
++
++#ifndef GL_EXT_index_material
++#define GL_EXT_index_material 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glIndexMaterialEXT (GLenum, GLenum);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode);
++#endif
++
++#ifndef GL_EXT_index_func
++#define GL_EXT_index_func 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glIndexFuncEXT (GLenum, GLclampf);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref);
++#endif
++
++#ifndef GL_EXT_index_array_formats
++#define GL_EXT_index_array_formats 1
++#endif
++
++#ifndef GL_EXT_compiled_vertex_array
++#define GL_EXT_compiled_vertex_array 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glLockArraysEXT (GLint, GLsizei);
++GLAPI void APIENTRY glUnlockArraysEXT (void);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);
++typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void);
++#endif
++
++#ifndef GL_EXT_cull_vertex
++#define GL_EXT_cull_vertex 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glCullParameterdvEXT (GLenum, GLdouble *);
++GLAPI void APIENTRY glCullParameterfvEXT (GLenum, GLfloat *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params);
++typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params);
++#endif
++
++#ifndef GL_SGIX_ycrcb
++#define GL_SGIX_ycrcb 1
++#endif
++
++#ifndef GL_SGIX_fragment_lighting
++#define GL_SGIX_fragment_lighting 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum, GLenum);
++GLAPI void APIENTRY glFragmentLightfSGIX (GLenum, GLenum, GLfloat);
++GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum, GLenum, const GLfloat *);
++GLAPI void APIENTRY glFragmentLightiSGIX (GLenum, GLenum, GLint);
++GLAPI void APIENTRY glFragmentLightivSGIX (GLenum, GLenum, const GLint *);
++GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum, GLfloat);
++GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum, const GLfloat *);
++GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum, GLint);
++GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum, const GLint *);
++GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum, GLenum, GLfloat);
++GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum, GLenum, const GLfloat *);
++GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum, GLenum, GLint);
++GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum, GLenum, const GLint *);
++GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glLightEnviSGIX (GLenum, GLint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode);
++typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param);
++typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params);
++typedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param);
++typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params);
++typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param);
++typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params);
++typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param);
++typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params);
++typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param);
++typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params);
++typedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param);
++typedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params);
++typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param);
++#endif
++
++#ifndef GL_IBM_rasterpos_clip
++#define GL_IBM_rasterpos_clip 1
++#endif
++
++#ifndef GL_HP_texture_lighting
++#define GL_HP_texture_lighting 1
++#endif
++
++#ifndef GL_EXT_draw_range_elements
++#define GL_EXT_draw_range_elements 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
++#endif
++
++#ifndef GL_WIN_phong_shading
++#define GL_WIN_phong_shading 1
++#endif
++
++#ifndef GL_WIN_specular_fog
++#define GL_WIN_specular_fog 1
++#endif
++
++#ifndef GL_EXT_light_texture
++#define GL_EXT_light_texture 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glApplyTextureEXT (GLenum);
++GLAPI void APIENTRY glTextureLightEXT (GLenum);
++GLAPI void APIENTRY glTextureMaterialEXT (GLenum, GLenum);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode);
++typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname);
++typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode);
++#endif
++
++#ifndef GL_SGIX_blend_alpha_minmax
++#define GL_SGIX_blend_alpha_minmax 1
++#endif
++
++#ifndef GL_EXT_bgra
++#define GL_EXT_bgra 1
++#endif
++
++#ifndef GL_SGIX_async
++#define GL_SGIX_async 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint);
++GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *);
++GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *);
++GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei);
++GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint, GLsizei);
++GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker);
++typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp);
++typedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp);
++typedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range);
++typedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range);
++typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker);
++#endif
++
++#ifndef GL_SGIX_async_pixel
++#define GL_SGIX_async_pixel 1
++#endif
++
++#ifndef GL_SGIX_async_histogram
++#define GL_SGIX_async_histogram 1
++#endif
++
++#ifndef GL_INTEL_parallel_arrays
++#define GL_INTEL_parallel_arrays 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glVertexPointervINTEL (GLint, GLenum, const GLvoid* *);
++GLAPI void APIENTRY glNormalPointervINTEL (GLenum, const GLvoid* *);
++GLAPI void APIENTRY glColorPointervINTEL (GLint, GLenum, const GLvoid* *);
++GLAPI void APIENTRY glTexCoordPointervINTEL (GLint, GLenum, const GLvoid* *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
++typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const GLvoid* *pointer);
++typedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
++typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
++#endif
++
++#ifndef GL_HP_occlusion_test
++#define GL_HP_occlusion_test 1
++#endif
++
++#ifndef GL_EXT_pixel_transform
++#define GL_EXT_pixel_transform 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum, GLenum, GLint);
++GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum, GLenum, GLfloat);
++GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum, GLenum, const GLint *);
++GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum, GLenum, const GLfloat *);
++/* ERO Begin */
++GLAPI void APIENTRY glGetPixelTransformParameterivEXT (GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glGetPixelTransformParameterfvEXT (GLenum, GLenum, GLfloat *);
++/* ERO End */
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param);
++typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param);
++typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
++typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
++/* ERO Begin */
++typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
++/* ERO End */
++#endif
++
++#ifndef GL_EXT_pixel_transform_color_table
++#define GL_EXT_pixel_transform_color_table 1
++#endif
++
++#ifndef GL_EXT_shared_texture_palette
++#define GL_EXT_shared_texture_palette 1
++#endif
++
++#ifndef GL_EXT_separate_specular_color
++#define GL_EXT_separate_specular_color 1
++#endif
++
++#ifndef GL_EXT_secondary_color
++#define GL_EXT_secondary_color 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte, GLbyte, GLbyte);
++GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *);
++GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *);
++GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *);
++GLAPI void APIENTRY glSecondaryColor3iEXT (GLint, GLint, GLint);
++GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *);
++GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort, GLshort, GLshort);
++GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *);
++GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte, GLubyte, GLubyte);
++GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *);
++GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint, GLuint, GLuint);
++GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *);
++GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort, GLushort, GLushort);
++GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *);
++GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint, GLenum, GLsizei, const GLvoid *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v);
++typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
++#endif
++
++#ifndef GL_EXT_texture_perturb_normal
++#define GL_EXT_texture_perturb_normal 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glTextureNormalEXT (GLenum);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode);
++#endif
++
++#ifndef GL_EXT_multi_draw_arrays
++#define GL_EXT_multi_draw_arrays 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei);
++GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
++typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
++#endif
++
++#ifndef GL_EXT_fog_coord
++#define GL_EXT_fog_coord 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glFogCoordfEXT (GLfloat);
++GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *);
++GLAPI void APIENTRY glFogCoorddEXT (GLdouble);
++GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *);
++GLAPI void APIENTRY glFogCoordPointerEXT (GLenum, GLsizei, const GLvoid *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord);
++typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord);
++typedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC) (GLdouble coord);
++typedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord);
++typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
++#endif
++
++#ifndef GL_REND_screen_coordinates
++#define GL_REND_screen_coordinates 1
++#endif
++
++#ifndef GL_EXT_coordinate_frame
++#define GL_EXT_coordinate_frame 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glTangent3bEXT (GLbyte, GLbyte, GLbyte);
++GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *);
++GLAPI void APIENTRY glTangent3dEXT (GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *);
++GLAPI void APIENTRY glTangent3fEXT (GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *);
++GLAPI void APIENTRY glTangent3iEXT (GLint, GLint, GLint);
++GLAPI void APIENTRY glTangent3ivEXT (const GLint *);
++GLAPI void APIENTRY glTangent3sEXT (GLshort, GLshort, GLshort);
++GLAPI void APIENTRY glTangent3svEXT (const GLshort *);
++GLAPI void APIENTRY glBinormal3bEXT (GLbyte, GLbyte, GLbyte);
++GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *);
++GLAPI void APIENTRY glBinormal3dEXT (GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *);
++GLAPI void APIENTRY glBinormal3fEXT (GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *);
++GLAPI void APIENTRY glBinormal3iEXT (GLint, GLint, GLint);
++GLAPI void APIENTRY glBinormal3ivEXT (const GLint *);
++GLAPI void APIENTRY glBinormal3sEXT (GLshort, GLshort, GLshort);
++GLAPI void APIENTRY glBinormal3svEXT (const GLshort *);
++GLAPI void APIENTRY glTangentPointerEXT (GLenum, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glBinormalPointerEXT (GLenum, GLsizei, const GLvoid *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz);
++typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte *v);
++typedef void (APIENTRYP PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz);
++typedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC) (const GLdouble *v);
++typedef void (APIENTRYP PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz);
++typedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC) (const GLfloat *v);
++typedef void (APIENTRYP PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz);
++typedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC) (const GLint *v);
++typedef void (APIENTRYP PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz);
++typedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC) (const GLshort *v);
++typedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz);
++typedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v);
++typedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz);
++typedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v);
++typedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz);
++typedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v);
++typedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz);
++typedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC) (const GLint *v);
++typedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz);
++typedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC) (const GLshort *v);
++typedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
++typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
++#endif
++
++#ifndef GL_EXT_texture_env_combine
++#define GL_EXT_texture_env_combine 1
++#endif
++
++#ifndef GL_APPLE_specular_vector
++#define GL_APPLE_specular_vector 1
++#endif
++
++#ifndef GL_APPLE_transform_hint
++#define GL_APPLE_transform_hint 1
++#endif
++
++#ifndef GL_SGIX_fog_scale
++#define GL_SGIX_fog_scale 1
++#endif
++
++#ifndef GL_SUNX_constant_data
++#define GL_SUNX_constant_data 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glFinishTextureSUNX (void);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) (void);
++#endif
++
++#ifndef GL_SUN_global_alpha
++#define GL_SUN_global_alpha 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte);
++GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort);
++GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint);
++GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat);
++GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble);
++GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte);
++GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort);
++GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor);
++typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor);
++typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor);
++typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor);
++typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor);
++typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor);
++typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor);
++typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor);
++#endif
++
++#ifndef GL_SUN_triangle_list
++#define GL_SUN_triangle_list 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint);
++GLAPI void APIENTRY glReplacementCodeusSUN (GLushort);
++GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte);
++GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *);
++GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *);
++GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *);
++GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum, GLsizei, const GLvoid* *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const GLvoid* *pointer);
++#endif
++
++#ifndef GL_SUN_vertex
++#define GL_SUN_vertex 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat);
++GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *, const GLfloat *);
++GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *, const GLfloat *);
++GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *, const GLfloat *);
++GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *);
++GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
++GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *, const GLfloat *);
++GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *, const GLfloat *);
++GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat, GLfloat, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *, const GLubyte *, const GLfloat *);
++GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
++GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
++GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
++GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
++GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *, const GLfloat *);
++GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *, const GLubyte *, const GLfloat *);
++GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *);
++GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *);
++GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *);
++GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *);
++GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *);
++GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
++typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v);
++typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v);
++typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v);
++typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v);
++typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v);
++typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
++typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
++typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
++typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v);
++typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v);
++typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v);
++typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
++typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
++typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *v);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint *rc, const GLubyte *c, const GLfloat *v);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *v);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *n, const GLfloat *v);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *v);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
++#endif
++
++#ifndef GL_EXT_blend_func_separate
++#define GL_EXT_blend_func_separate 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum, GLenum, GLenum, GLenum);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
++#endif
++
++#ifndef GL_INGR_blend_func_separate
++#define GL_INGR_blend_func_separate 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum, GLenum, GLenum, GLenum);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
++#endif
++
++#ifndef GL_INGR_color_clamp
++#define GL_INGR_color_clamp 1
++#endif
++
++#ifndef GL_INGR_interlace_read
++#define GL_INGR_interlace_read 1
++#endif
++
++#ifndef GL_EXT_stencil_wrap
++#define GL_EXT_stencil_wrap 1
++#endif
++
++#ifndef GL_EXT_422_pixels
++#define GL_EXT_422_pixels 1
++#endif
++
++#ifndef GL_NV_texgen_reflection
++#define GL_NV_texgen_reflection 1
++#endif
++
++#ifndef GL_SUN_convolution_border_modes
++#define GL_SUN_convolution_border_modes 1
++#endif
++
++#ifndef GL_EXT_texture_env_add
++#define GL_EXT_texture_env_add 1
++#endif
++
++#ifndef GL_EXT_texture_lod_bias
++#define GL_EXT_texture_lod_bias 1
++#endif
++
++#ifndef GL_EXT_texture_filter_anisotropic
++#define GL_EXT_texture_filter_anisotropic 1
++#endif
++
++#ifndef GL_EXT_vertex_weighting
++#define GL_EXT_vertex_weighting 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glVertexWeightfEXT (GLfloat);
++GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *);
++GLAPI void APIENTRY glVertexWeightPointerEXT (GLsizei, GLenum, GLsizei, const GLvoid *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight);
++typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight);
++typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer);
++#endif
++
++#ifndef GL_NV_light_max_exponent
++#define GL_NV_light_max_exponent 1
++#endif
++
++#ifndef GL_NV_vertex_array_range
++#define GL_NV_vertex_array_range 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glFlushVertexArrayRangeNV (void);
++GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei, const GLvoid *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void);
++typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const GLvoid *pointer);
++#endif
++
++#ifndef GL_NV_register_combiners
++#define GL_NV_register_combiners 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glCombinerParameterfvNV (GLenum, const GLfloat *);
++GLAPI void APIENTRY glCombinerParameterfNV (GLenum, GLfloat);
++GLAPI void APIENTRY glCombinerParameterivNV (GLenum, const GLint *);
++GLAPI void APIENTRY glCombinerParameteriNV (GLenum, GLint);
++GLAPI void APIENTRY glCombinerInputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum);
++GLAPI void APIENTRY glCombinerOutputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean);
++GLAPI void APIENTRY glFinalCombinerInputNV (GLenum, GLenum, GLenum, GLenum);
++GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum, GLenum, GLenum, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum, GLenum, GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum, GLenum, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum, GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum, GLenum, GLint *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params);
++typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param);
++typedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
++typedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param);
++typedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
++typedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
++typedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
++typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params);
++#endif
++
++#ifndef GL_NV_fog_distance
++#define GL_NV_fog_distance 1
++#endif
++
++#ifndef GL_NV_texgen_emboss
++#define GL_NV_texgen_emboss 1
++#endif
++
++#ifndef GL_NV_blend_square
++#define GL_NV_blend_square 1
++#endif
++
++#ifndef GL_NV_texture_env_combine4
++#define GL_NV_texture_env_combine4 1
++#endif
++
++#ifndef GL_MESA_resize_buffers
++#define GL_MESA_resize_buffers 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glResizeBuffersMESA (void);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void);
++#endif
++
++#ifndef GL_MESA_window_pos
++#define GL_MESA_window_pos 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glWindowPos2dMESA (GLdouble, GLdouble);
++GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *);
++GLAPI void APIENTRY glWindowPos2fMESA (GLfloat, GLfloat);
++GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *);
++GLAPI void APIENTRY glWindowPos2iMESA (GLint, GLint);
++GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *);
++GLAPI void APIENTRY glWindowPos2sMESA (GLshort, GLshort);
++GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *);
++GLAPI void APIENTRY glWindowPos3dMESA (GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *);
++GLAPI void APIENTRY glWindowPos3fMESA (GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *);
++GLAPI void APIENTRY glWindowPos3iMESA (GLint, GLint, GLint);
++GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *);
++GLAPI void APIENTRY glWindowPos3sMESA (GLshort, GLshort, GLshort);
++GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *);
++GLAPI void APIENTRY glWindowPos4dMESA (GLdouble, GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *);
++GLAPI void APIENTRY glWindowPos4fMESA (GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *);
++GLAPI void APIENTRY glWindowPos4iMESA (GLint, GLint, GLint, GLint);
++GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *);
++GLAPI void APIENTRY glWindowPos4sMESA (GLshort, GLshort, GLshort, GLshort);
++GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y);
++typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y);
++typedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y);
++typedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y);
++typedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z);
++typedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z);
++typedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z);
++typedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
++typedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
++typedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w);
++typedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v);
++typedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w);
++typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v);
++#endif
++
++#ifndef GL_IBM_cull_vertex
++#define GL_IBM_cull_vertex 1
++#endif
++
++#ifndef GL_IBM_multimode_draw_arrays
++#define GL_IBM_multimode_draw_arrays 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *, const GLint *, const GLsizei *, GLsizei, GLint);
++GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *, const GLsizei *, GLenum, const GLvoid* const *, GLsizei, GLint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
++typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, GLint modestride);
++#endif
++
++#ifndef GL_IBM_vertex_array_lists
++#define GL_IBM_vertex_array_lists 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
++GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
++GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint, const GLboolean* *, GLint);
++GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
++GLAPI void APIENTRY glIndexPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
++GLAPI void APIENTRY glNormalPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
++GLAPI void APIENTRY glTexCoordPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
++GLAPI void APIENTRY glVertexPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
++typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
++typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean* *pointer, GLint ptrstride);
++typedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
++typedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
++typedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
++typedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
++typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
++#endif
++
++#ifndef GL_SGIX_subsample
++#define GL_SGIX_subsample 1
++#endif
++
++#ifndef GL_SGIX_ycrcba
++#define GL_SGIX_ycrcba 1
++#endif
++
++#ifndef GL_SGIX_ycrcb_subsample
++#define GL_SGIX_ycrcb_subsample 1
++#endif
++
++#ifndef GL_SGIX_depth_pass_instrument
++#define GL_SGIX_depth_pass_instrument 1
++#endif
++
++#ifndef GL_3DFX_texture_compression_FXT1
++#define GL_3DFX_texture_compression_FXT1 1
++#endif
++
++#ifndef GL_3DFX_multisample
++#define GL_3DFX_multisample 1
++#endif
++
++#ifndef GL_3DFX_tbuffer
++#define GL_3DFX_tbuffer 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glTbufferMask3DFX (GLuint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);
++#endif
++
++#ifndef GL_EXT_multisample
++#define GL_EXT_multisample 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glSampleMaskEXT (GLclampf, GLboolean);
++GLAPI void APIENTRY glSamplePatternEXT (GLenum);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert);
++typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern);
++#endif
++
++#ifndef GL_SGIX_vertex_preclip
++#define GL_SGIX_vertex_preclip 1
++#endif
++
++#ifndef GL_SGIX_convolution_accuracy
++#define GL_SGIX_convolution_accuracy 1
++#endif
++
++#ifndef GL_SGIX_resample
++#define GL_SGIX_resample 1
++#endif
++
++#ifndef GL_SGIS_point_line_texgen
++#define GL_SGIS_point_line_texgen 1
++#endif
++
++#ifndef GL_SGIS_texture_color_mask
++#define GL_SGIS_texture_color_mask 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean, GLboolean, GLboolean, GLboolean);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
++#endif
++
++#ifndef GL_SGIX_igloo_interface
++#define GL_SGIX_igloo_interface 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum, const GLvoid *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid *params);
++#endif
++
++#ifndef GL_EXT_texture_env_dot3
++#define GL_EXT_texture_env_dot3 1
++#endif
++
++#ifndef GL_ATI_texture_mirror_once
++#define GL_ATI_texture_mirror_once 1
++#endif
++
++#ifndef GL_NV_fence
++#define GL_NV_fence 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glDeleteFencesNV (GLsizei, const GLuint *);
++GLAPI void APIENTRY glGenFencesNV (GLsizei, GLuint *);
++GLAPI GLboolean APIENTRY glIsFenceNV (GLuint);
++GLAPI GLboolean APIENTRY glTestFenceNV (GLuint);
++GLAPI void APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *);
++GLAPI void APIENTRY glFinishFenceNV (GLuint);
++GLAPI void APIENTRY glSetFenceNV (GLuint, GLenum);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
++typedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
++typedef GLboolean (APIENTRYP PFNGLISFENCENVPROC) (GLuint fence);
++typedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence);
++typedef void (APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence);
++typedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
++#endif
++
++#ifndef GL_NV_evaluators
++#define GL_NV_evaluators 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLint, GLint, GLboolean, const GLvoid *);
++GLAPI void APIENTRY glMapParameterivNV (GLenum, GLenum, const GLint *);
++GLAPI void APIENTRY glMapParameterfvNV (GLenum, GLenum, const GLfloat *);
++GLAPI void APIENTRY glGetMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLboolean, GLvoid *);
++GLAPI void APIENTRY glGetMapParameterivNV (GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glGetMapParameterfvNV (GLenum, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum, GLuint, GLenum, GLint *);
++GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum, GLuint, GLenum, GLfloat *);
++GLAPI void APIENTRY glEvalMapsNV (GLenum, GLenum);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points);
++typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params);
++typedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params);
++typedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid *points);
++typedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode);
++#endif
++
++#ifndef GL_NV_packed_depth_stencil
++#define GL_NV_packed_depth_stencil 1
++#endif
++
++#ifndef GL_NV_register_combiners2
++#define GL_NV_register_combiners2 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum, GLenum, const GLfloat *);
++GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum, GLenum, GLfloat *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params);
++typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params);
++#endif
++
++#ifndef GL_NV_texture_compression_vtc
++#define GL_NV_texture_compression_vtc 1
++#endif
++
++#ifndef GL_NV_texture_rectangle
++#define GL_NV_texture_rectangle 1
++#endif
++
++#ifndef GL_NV_texture_shader
++#define GL_NV_texture_shader 1
++#endif
++
++#ifndef GL_NV_texture_shader2
++#define GL_NV_texture_shader2 1
++#endif
++
++#ifndef GL_NV_vertex_array_range2
++#define GL_NV_vertex_array_range2 1
++#endif
++
++#ifndef GL_NV_vertex_program
++#define GL_NV_vertex_program 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei, const GLuint *, GLboolean *);
++GLAPI void APIENTRY glBindProgramNV (GLenum, GLuint);
++GLAPI void APIENTRY glDeleteProgramsNV (GLsizei, const GLuint *);
++GLAPI void APIENTRY glExecuteProgramNV (GLenum, GLuint, const GLfloat *);
++GLAPI void APIENTRY glGenProgramsNV (GLsizei, GLuint *);
++GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum, GLuint, GLenum, GLdouble *);
++GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum, GLuint, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetProgramivNV (GLuint, GLenum, GLint *);
++GLAPI void APIENTRY glGetProgramStringNV (GLuint, GLenum, GLubyte *);
++GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum, GLuint, GLenum, GLint *);
++GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint, GLenum, GLdouble *);
++GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetVertexAttribivNV (GLuint, GLenum, GLint *);
++GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint, GLenum, GLvoid* *);
++GLAPI GLboolean APIENTRY glIsProgramNV (GLuint);
++GLAPI void APIENTRY glLoadProgramNV (GLenum, GLuint, GLsizei, const GLubyte *);
++GLAPI void APIENTRY glProgramParameter4dNV (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glProgramParameter4dvNV (GLenum, GLuint, const GLdouble *);
++GLAPI void APIENTRY glProgramParameter4fNV (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glProgramParameter4fvNV (GLenum, GLuint, const GLfloat *);
++GLAPI void APIENTRY glProgramParameters4dvNV (GLenum, GLuint, GLuint, const GLdouble *);
++GLAPI void APIENTRY glProgramParameters4fvNV (GLenum, GLuint, GLuint, const GLfloat *);
++GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei, const GLuint *);
++GLAPI void APIENTRY glTrackMatrixNV (GLenum, GLuint, GLenum, GLenum);
++GLAPI void APIENTRY glVertexAttribPointerNV (GLuint, GLint, GLenum, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glVertexAttrib1dNV (GLuint, GLdouble);
++GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint, const GLdouble *);
++GLAPI void APIENTRY glVertexAttrib1fNV (GLuint, GLfloat);
++GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint, const GLfloat *);
++GLAPI void APIENTRY glVertexAttrib1sNV (GLuint, GLshort);
++GLAPI void APIENTRY glVertexAttrib1svNV (GLuint, const GLshort *);
++GLAPI void APIENTRY glVertexAttrib2dNV (GLuint, GLdouble, GLdouble);
++GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint, const GLdouble *);
++GLAPI void APIENTRY glVertexAttrib2fNV (GLuint, GLfloat, GLfloat);
++GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint, const GLfloat *);
++GLAPI void APIENTRY glVertexAttrib2sNV (GLuint, GLshort, GLshort);
++GLAPI void APIENTRY glVertexAttrib2svNV (GLuint, const GLshort *);
++GLAPI void APIENTRY glVertexAttrib3dNV (GLuint, GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint, const GLdouble *);
++GLAPI void APIENTRY glVertexAttrib3fNV (GLuint, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint, const GLfloat *);
++GLAPI void APIENTRY glVertexAttrib3sNV (GLuint, GLshort, GLshort, GLshort);
++GLAPI void APIENTRY glVertexAttrib3svNV (GLuint, const GLshort *);
++GLAPI void APIENTRY glVertexAttrib4dNV (GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint, const GLdouble *);
++GLAPI void APIENTRY glVertexAttrib4fNV (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint, const GLfloat *);
++GLAPI void APIENTRY glVertexAttrib4sNV (GLuint, GLshort, GLshort, GLshort, GLshort);
++GLAPI void APIENTRY glVertexAttrib4svNV (GLuint, const GLshort *);
++GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
++GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint, const GLubyte *);
++GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint, GLsizei, const GLdouble *);
++GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint, GLsizei, const GLfloat *);
++GLAPI void APIENTRY glVertexAttribs1svNV (GLuint, GLsizei, const GLshort *);
++GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint, GLsizei, const GLdouble *);
++GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint, GLsizei, const GLfloat *);
++GLAPI void APIENTRY glVertexAttribs2svNV (GLuint, GLsizei, const GLshort *);
++GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint, GLsizei, const GLdouble *);
++GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint, GLsizei, const GLfloat *);
++GLAPI void APIENTRY glVertexAttribs3svNV (GLuint, GLsizei, const GLshort *);
++GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint, GLsizei, const GLdouble *);
++GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint, GLsizei, const GLfloat *);
++GLAPI void APIENTRY glVertexAttribs4svNV (GLuint, GLsizei, const GLshort *);
++GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint, GLsizei, const GLubyte *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences);
++typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id);
++typedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
++typedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params);
++typedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs);
++typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params);
++typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program);
++typedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params);
++typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
++typedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC) (GLuint id);
++typedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program);
++typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
++typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v);
++typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
++typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v);
++typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLuint count, const GLdouble *v);
++typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLuint count, const GLfloat *v);
++typedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
++typedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v);
++#endif
++
++#ifndef GL_SGIX_texture_coordinate_clamp
++#define GL_SGIX_texture_coordinate_clamp 1
++#endif
++
++#ifndef GL_SGIX_scalebias_hint
++#define GL_SGIX_scalebias_hint 1
++#endif
++
++#ifndef GL_OML_interlace
++#define GL_OML_interlace 1
++#endif
++
++#ifndef GL_OML_subsample
++#define GL_OML_subsample 1
++#endif
++
++#ifndef GL_OML_resample
++#define GL_OML_resample 1
++#endif
++
++#ifndef GL_NV_copy_depth_to_color
++#define GL_NV_copy_depth_to_color 1
++#endif
++
++#ifndef GL_ATI_envmap_bumpmap
++#define GL_ATI_envmap_bumpmap 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glTexBumpParameterivATI (GLenum, const GLint *);
++GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum, const GLfloat *);
++GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum, GLint *);
++GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum, GLfloat *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param);
++typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param);
++typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param);
++typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param);
++#endif
++
++#ifndef GL_ATI_fragment_shader
++#define GL_ATI_fragment_shader 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint);
++GLAPI void APIENTRY glBindFragmentShaderATI (GLuint);
++GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint);
++GLAPI void APIENTRY glBeginFragmentShaderATI (void);
++GLAPI void APIENTRY glEndFragmentShaderATI (void);
++GLAPI void APIENTRY glPassTexCoordATI (GLuint, GLuint, GLenum);
++GLAPI void APIENTRY glSampleMapATI (GLuint, GLuint, GLenum);
++GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
++GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
++GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
++GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint);
++GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
++GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
++GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint, const GLfloat *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range);
++typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id);
++typedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id);
++typedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC) (void);
++typedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC) (void);
++typedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle);
++typedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle);
++typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
++typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
++typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
++typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
++typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
++typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
++typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value);
++#endif
++
++#ifndef GL_ATI_pn_triangles
++#define GL_ATI_pn_triangles 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glPNTrianglesiATI (GLenum, GLint);
++GLAPI void APIENTRY glPNTrianglesfATI (GLenum, GLfloat);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param);
++typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param);
++#endif
++
++#ifndef GL_ATI_vertex_array_object
++#define GL_ATI_vertex_array_object 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei, const GLvoid *, GLenum);
++GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint);
++GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint, GLuint, GLsizei, const GLvoid *, GLenum);
++GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetObjectBufferivATI (GLuint, GLenum, GLint *);
++GLAPI void APIENTRY glFreeObjectBufferATI (GLuint);
++/* ERO Begin */
++GLAPI void APIENTRY glDeleteObjectBufferATI (GLuint);
++/* ERO End */
++GLAPI void APIENTRY glArrayObjectATI (GLenum, GLint, GLenum, GLsizei, GLuint, GLuint);
++GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetArrayObjectivATI (GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glVariantArrayObjectATI (GLuint, GLenum, GLsizei, GLuint, GLuint);
++GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint, GLenum, GLint *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const GLvoid *pointer, GLenum usage);
++typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer);
++typedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve);
++typedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer);
++typedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
++typedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
++typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params);
++#endif
++
++#ifndef GL_EXT_vertex_shader
++#define GL_EXT_vertex_shader 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glBeginVertexShaderEXT (void);
++GLAPI void APIENTRY glEndVertexShaderEXT (void);
++GLAPI void APIENTRY glBindVertexShaderEXT (GLuint);
++GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint);
++GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint);
++GLAPI void APIENTRY glShaderOp1EXT (GLenum, GLuint, GLuint);
++GLAPI void APIENTRY glShaderOp2EXT (GLenum, GLuint, GLuint, GLuint);
++GLAPI void APIENTRY glShaderOp3EXT (GLenum, GLuint, GLuint, GLuint, GLuint);
++GLAPI void APIENTRY glSwizzleEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum);
++GLAPI void APIENTRY glWriteMaskEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum);
++GLAPI void APIENTRY glInsertComponentEXT (GLuint, GLuint, GLuint);
++GLAPI void APIENTRY glExtractComponentEXT (GLuint, GLuint, GLuint);
++GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum, GLenum, GLenum, GLuint);
++GLAPI void APIENTRY glSetInvariantEXT (GLuint, GLenum, const GLvoid *);
++GLAPI void APIENTRY glSetLocalConstantEXT (GLuint, GLenum, const GLvoid *);
++GLAPI void APIENTRY glVariantbvEXT (GLuint, const GLbyte *);
++GLAPI void APIENTRY glVariantsvEXT (GLuint, const GLshort *);
++GLAPI void APIENTRY glVariantivEXT (GLuint, const GLint *);
++GLAPI void APIENTRY glVariantfvEXT (GLuint, const GLfloat *);
++GLAPI void APIENTRY glVariantdvEXT (GLuint, const GLdouble *);
++GLAPI void APIENTRY glVariantubvEXT (GLuint, const GLubyte *);
++GLAPI void APIENTRY glVariantusvEXT (GLuint, const GLushort *);
++GLAPI void APIENTRY glVariantuivEXT (GLuint, const GLuint *);
++GLAPI void APIENTRY glVariantPointerEXT (GLuint, GLenum, GLuint, const GLvoid *);
++GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint);
++GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint);
++GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum, GLenum);
++GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum, GLenum);
++GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum, GLenum, GLenum);
++GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum, GLenum);
++GLAPI GLuint APIENTRY glBindParameterEXT (GLenum);
++GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint, GLenum);
++GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint, GLenum, GLboolean *);
++GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint, GLenum, GLint *);
++GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetVariantPointervEXT (GLuint, GLenum, GLvoid* *);
++GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint, GLenum, GLboolean *);
++GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint, GLenum, GLint *);
++GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint, GLenum, GLboolean *);
++GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint, GLenum, GLint *);
++GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint, GLenum, GLfloat *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) (void);
++typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) (void);
++typedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id);
++typedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range);
++typedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id);
++typedef void (APIENTRYP PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1);
++typedef void (APIENTRYP PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
++typedef void (APIENTRYP PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
++typedef void (APIENTRYP PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
++typedef void (APIENTRYP PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
++typedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
++typedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
++typedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
++typedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const GLvoid *addr);
++typedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const GLvoid *addr);
++typedef void (APIENTRYP PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr);
++typedef void (APIENTRYP PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr);
++typedef void (APIENTRYP PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr);
++typedef void (APIENTRYP PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr);
++typedef void (APIENTRYP PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr);
++typedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr);
++typedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr);
++typedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr);
++typedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const GLvoid *addr);
++typedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
++typedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
++typedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value);
++typedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value);
++typedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value);
++typedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value);
++typedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC) (GLenum value);
++typedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap);
++typedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
++typedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
++typedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
++typedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid* *data);
++typedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
++typedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
++typedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
++typedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
++typedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
++typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
++#endif
++
++#ifndef GL_ATI_vertex_streams
++#define GL_ATI_vertex_streams 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glVertexStream1sATI (GLenum, GLshort);
++GLAPI void APIENTRY glVertexStream1svATI (GLenum, const GLshort *);
++GLAPI void APIENTRY glVertexStream1iATI (GLenum, GLint);
++GLAPI void APIENTRY glVertexStream1ivATI (GLenum, const GLint *);
++GLAPI void APIENTRY glVertexStream1fATI (GLenum, GLfloat);
++GLAPI void APIENTRY glVertexStream1fvATI (GLenum, const GLfloat *);
++GLAPI void APIENTRY glVertexStream1dATI (GLenum, GLdouble);
++GLAPI void APIENTRY glVertexStream1dvATI (GLenum, const GLdouble *);
++GLAPI void APIENTRY glVertexStream2sATI (GLenum, GLshort, GLshort);
++GLAPI void APIENTRY glVertexStream2svATI (GLenum, const GLshort *);
++GLAPI void APIENTRY glVertexStream2iATI (GLenum, GLint, GLint);
++GLAPI void APIENTRY glVertexStream2ivATI (GLenum, const GLint *);
++GLAPI void APIENTRY glVertexStream2fATI (GLenum, GLfloat, GLfloat);
++GLAPI void APIENTRY glVertexStream2fvATI (GLenum, const GLfloat *);
++GLAPI void APIENTRY glVertexStream2dATI (GLenum, GLdouble, GLdouble);
++GLAPI void APIENTRY glVertexStream2dvATI (GLenum, const GLdouble *);
++GLAPI void APIENTRY glVertexStream3sATI (GLenum, GLshort, GLshort, GLshort);
++GLAPI void APIENTRY glVertexStream3svATI (GLenum, const GLshort *);
++GLAPI void APIENTRY glVertexStream3iATI (GLenum, GLint, GLint, GLint);
++GLAPI void APIENTRY glVertexStream3ivATI (GLenum, const GLint *);
++GLAPI void APIENTRY glVertexStream3fATI (GLenum, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glVertexStream3fvATI (GLenum, const GLfloat *);
++GLAPI void APIENTRY glVertexStream3dATI (GLenum, GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glVertexStream3dvATI (GLenum, const GLdouble *);
++GLAPI void APIENTRY glVertexStream4sATI (GLenum, GLshort, GLshort, GLshort, GLshort);
++GLAPI void APIENTRY glVertexStream4svATI (GLenum, const GLshort *);
++GLAPI void APIENTRY glVertexStream4iATI (GLenum, GLint, GLint, GLint, GLint);
++GLAPI void APIENTRY glVertexStream4ivATI (GLenum, const GLint *);
++GLAPI void APIENTRY glVertexStream4fATI (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glVertexStream4fvATI (GLenum, const GLfloat *);
++GLAPI void APIENTRY glVertexStream4dATI (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glVertexStream4dvATI (GLenum, const GLdouble *);
++GLAPI void APIENTRY glNormalStream3bATI (GLenum, GLbyte, GLbyte, GLbyte);
++GLAPI void APIENTRY glNormalStream3bvATI (GLenum, const GLbyte *);
++GLAPI void APIENTRY glNormalStream3sATI (GLenum, GLshort, GLshort, GLshort);
++GLAPI void APIENTRY glNormalStream3svATI (GLenum, const GLshort *);
++GLAPI void APIENTRY glNormalStream3iATI (GLenum, GLint, GLint, GLint);
++GLAPI void APIENTRY glNormalStream3ivATI (GLenum, const GLint *);
++GLAPI void APIENTRY glNormalStream3fATI (GLenum, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glNormalStream3fvATI (GLenum, const GLfloat *);
++GLAPI void APIENTRY glNormalStream3dATI (GLenum, GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glNormalStream3dvATI (GLenum, const GLdouble *);
++GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum);
++GLAPI void APIENTRY glVertexBlendEnviATI (GLenum, GLint);
++GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum, GLfloat);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
++typedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords);
++typedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
++typedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords);
++typedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz);
++typedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
++typedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz);
++typedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
++typedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
++typedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
++typedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
++typedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
++typedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream);
++typedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param);
++typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param);
++#endif
++
++#ifndef GL_ATI_element_array
++#define GL_ATI_element_array 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glElementPointerATI (GLenum, const GLvoid *);
++GLAPI void APIENTRY glDrawElementArrayATI (GLenum, GLsizei);
++GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum, GLuint, GLuint, GLsizei);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const GLvoid *pointer);
++typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count);
++typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count);
++#endif
++
++#ifndef GL_SUN_mesh_array
++#define GL_SUN_mesh_array 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum, GLint, GLsizei, GLsizei);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width);
++#endif
++
++#ifndef GL_SUN_slice_accum
++#define GL_SUN_slice_accum 1
++#endif
++
++#ifndef GL_NV_multisample_filter_hint
++#define GL_NV_multisample_filter_hint 1
++#endif
++
++#ifndef GL_NV_depth_clamp
++#define GL_NV_depth_clamp 1
++#endif
++
++#ifndef GL_NV_occlusion_query
++#define GL_NV_occlusion_query 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei, GLuint *);
++GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei, const GLuint *);
++GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint);
++GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint);
++GLAPI void APIENTRY glEndOcclusionQueryNV (void);
++GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint, GLenum, GLint *);
++GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint, GLenum, GLuint *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids);
++typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids);
++typedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id);
++typedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id);
++typedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC) (void);
++typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params);
++#endif
++
++#ifndef GL_NV_point_sprite
++#define GL_NV_point_sprite 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glPointParameteriNV (GLenum, GLint);
++GLAPI void APIENTRY glPointParameterivNV (GLenum, const GLint *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param);
++typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
++#endif
++
++#ifndef GL_NV_texture_shader3
++#define GL_NV_texture_shader3 1
++#endif
++
++#ifndef GL_NV_vertex_program1_1
++#define GL_NV_vertex_program1_1 1
++#endif
++
++#ifndef GL_EXT_shadow_funcs
++#define GL_EXT_shadow_funcs 1
++#endif
++
++#ifndef GL_EXT_stencil_two_side
++#define GL_EXT_stencil_two_side 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face);
++#endif
++
++#ifndef GL_ATI_text_fragment_shader
++#define GL_ATI_text_fragment_shader 1
++#endif
++
++#ifndef GL_APPLE_client_storage
++#define GL_APPLE_client_storage 1
++#endif
++
++#ifndef GL_APPLE_element_array
++#define GL_APPLE_element_array 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glElementPointerAPPLE (GLenum, const GLvoid *);
++GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum, GLint, GLsizei);
++GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, GLint, GLsizei);
++GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum, const GLint *, const GLsizei *, GLsizei);
++GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, const GLint *, const GLsizei *, GLsizei);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const GLvoid *pointer);
++typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count);
++typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
++typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
++typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount);
++#endif
++
++#ifndef GL_APPLE_fence
++#define GL_APPLE_fence 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glGenFencesAPPLE (GLsizei, GLuint *);
++GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei, const GLuint *);
++GLAPI void APIENTRY glSetFenceAPPLE (GLuint);
++GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint);
++GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint);
++GLAPI void APIENTRY glFinishFenceAPPLE (GLuint);
++GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum, GLuint);
++GLAPI void APIENTRY glFinishObjectAPPLE (GLenum, GLint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint *fences);
++typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint *fences);
++typedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC) (GLuint fence);
++typedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC) (GLuint fence);
++typedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC) (GLuint fence);
++typedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC) (GLuint fence);
++typedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name);
++typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name);
++#endif
++
++#ifndef GL_APPLE_vertex_array_object
++#define GL_APPLE_vertex_array_object 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint);
++GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei, const GLuint *);
++GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei, GLuint *);
++GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array);
++typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays);
++typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays);
++typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array);
++#endif
++
++#ifndef GL_APPLE_vertex_array_range
++#define GL_APPLE_vertex_array_range 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei, GLvoid *);
++GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei, GLvoid *);
++GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum, GLint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer);
++typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer);
++typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param);
++#endif
++
++#ifndef GL_APPLE_ycbcr_422
++#define GL_APPLE_ycbcr_422 1
++#endif
++
++#ifndef GL_S3_s3tc
++#define GL_S3_s3tc 1
++#endif
++
++#ifndef GL_ATI_draw_buffers
++#define GL_ATI_draw_buffers 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glDrawBuffersATI (GLsizei, const GLenum *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs);
++#endif
++
++#ifndef GL_ATI_pixel_format_float
++#define GL_ATI_pixel_format_float 1
++/* This is really a WGL extension, but defines some associated GL enums.
++ * ATI does not export "GL_ATI_pixel_format_float" in the GL_EXTENSIONS string.
++ */
++#endif
++
++#ifndef GL_ATI_texture_env_combine3
++#define GL_ATI_texture_env_combine3 1
++#endif
++
++#ifndef GL_ATI_texture_float
++#define GL_ATI_texture_float 1
++#endif
++
++#ifndef GL_NV_float_buffer
++#define GL_NV_float_buffer 1
++#endif
++
++#ifndef GL_NV_fragment_program
++#define GL_NV_fragment_program 1
++/* Some NV_fragment_program entry points are shared with ARB_vertex_program. */
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint, GLsizei, const GLubyte *, GLfloat, GLfloat, GLfloat, GLfloat);
++GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint, GLsizei, const GLubyte *, GLdouble, GLdouble, GLdouble, GLdouble);
++GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint, GLsizei, const GLubyte *, const GLfloat *);
++GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint, GLsizei, const GLubyte *, const GLdouble *);
++GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint, GLsizei, const GLubyte *, GLfloat *);
++GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint, GLsizei, const GLubyte *, GLdouble *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
++typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
++typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);
++typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);
++typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);
++#endif
++
++#ifndef GL_NV_half_float
++#define GL_NV_half_float 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glVertex2hNV (GLhalfNV, GLhalfNV);
++GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *);
++GLAPI void APIENTRY glVertex3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
++GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *);
++GLAPI void APIENTRY glVertex4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
++GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *);
++GLAPI void APIENTRY glNormal3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
++GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *);
++GLAPI void APIENTRY glColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
++GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *);
++GLAPI void APIENTRY glColor4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
++GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *);
++GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV);
++GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *);
++GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV, GLhalfNV);
++GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *);
++GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
++GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *);
++GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
++GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *);
++GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum, GLhalfNV);
++GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum, const GLhalfNV *);
++GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum, GLhalfNV, GLhalfNV);
++GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum, const GLhalfNV *);
++GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV);
++GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum, const GLhalfNV *);
++GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
++GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum, const GLhalfNV *);
++GLAPI void APIENTRY glFogCoordhNV (GLhalfNV);
++GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *);
++GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
++GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *);
++GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV);
++GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *);
++GLAPI void APIENTRY glVertexAttrib1hNV (GLuint, GLhalfNV);
++GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint, const GLhalfNV *);
++GLAPI void APIENTRY glVertexAttrib2hNV (GLuint, GLhalfNV, GLhalfNV);
++GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint, const GLhalfNV *);
++GLAPI void APIENTRY glVertexAttrib3hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV);
++GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint, const GLhalfNV *);
++GLAPI void APIENTRY glVertexAttrib4hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
++GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint, const GLhalfNV *);
++GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint, GLsizei, const GLhalfNV *);
++GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint, GLsizei, const GLhalfNV *);
++GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint, GLsizei, const GLhalfNV *);
++GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint, GLsizei, const GLhalfNV *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y);
++typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z);
++typedef void (APIENTRYP PFNGLVERTEX3HVNVPROC) (const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
++typedef void (APIENTRYP PFNGLVERTEX4HVNVPROC) (const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);
++typedef void (APIENTRYP PFNGLNORMAL3HVNVPROC) (const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
++typedef void (APIENTRYP PFNGLCOLOR3HVNVPROC) (const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);
++typedef void (APIENTRYP PFNGLCOLOR4HVNVPROC) (const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC) (GLhalfNV s);
++typedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC) (const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t);
++typedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC) (const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r);
++typedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC) (const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
++typedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC) (const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
++typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog);
++typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
++typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight);
++typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
++typedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
++#endif
++
++#ifndef GL_NV_pixel_data_range
++#define GL_NV_pixel_data_range 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glPixelDataRangeNV (GLenum, GLsizei, GLvoid *);
++GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, GLvoid *pointer);
++typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target);
++#endif
++
++#ifndef GL_NV_primitive_restart
++#define GL_NV_primitive_restart 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glPrimitiveRestartNV (void);
++GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) (void);
++typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index);
++#endif
++
++#ifndef GL_NV_texture_expand_normal
++#define GL_NV_texture_expand_normal 1
++#endif
++
++#ifndef GL_NV_vertex_program2
++#define GL_NV_vertex_program2 1
++#endif
++
++#ifndef GL_ATI_map_object_buffer
++#define GL_ATI_map_object_buffer 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI GLvoid* APIENTRY glMapObjectBufferATI (GLuint);
++GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef GLvoid* (APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer);
++typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer);
++#endif
++
++#ifndef GL_ATI_separate_stencil
++#define GL_ATI_separate_stencil 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glStencilOpSeparateATI (GLenum, GLenum, GLenum, GLenum);
++GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum, GLenum, GLint, GLuint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
++typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
++#endif
++
++#ifndef GL_ATI_vertex_attrib_array_object
++#define GL_ATI_vertex_attrib_array_object 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint, GLint, GLenum, GLboolean, GLsizei, GLuint, GLuint);
++GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint, GLenum, GLfloat *);
++GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint, GLenum, GLint *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
++typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat *params);
++typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint *params);
++#endif
++
++#ifndef GL_OES_read_format
++#define GL_OES_read_format 1
++#endif
++
++#ifndef GL_EXT_depth_bounds_test
++#define GL_EXT_depth_bounds_test 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glDepthBoundsEXT (GLclampd, GLclampd);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax);
++#endif
++
++#ifndef GL_EXT_texture_mirror_clamp
++#define GL_EXT_texture_mirror_clamp 1
++#endif
++
++#ifndef GL_EXT_blend_equation_separate
++#define GL_EXT_blend_equation_separate 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum, GLenum);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha);
++#endif
++
++#ifndef GL_MESA_pack_invert
++#define GL_MESA_pack_invert 1
++#endif
++
++#ifndef GL_MESA_ycbcr_texture
++#define GL_MESA_ycbcr_texture 1
++#endif
++
++#ifndef GL_EXT_pixel_buffer_object
++#define GL_EXT_pixel_buffer_object 1
++#endif
++
++#ifndef GL_NV_fragment_program_option
++#define GL_NV_fragment_program_option 1
++#endif
++
++#ifndef GL_NV_fragment_program2
++#define GL_NV_fragment_program2 1
++#endif
++
++#ifndef GL_NV_vertex_program2_option
++#define GL_NV_vertex_program2_option 1
++#endif
++
++#ifndef GL_NV_vertex_program3
++#define GL_NV_vertex_program3 1
++#endif
++
++#ifndef GL_EXT_framebuffer_object
++#define GL_EXT_framebuffer_object 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint);
++GLAPI void APIENTRY glBindRenderbufferEXT (GLenum, GLuint);
++GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei, const GLuint *);
++GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei, GLuint *);
++GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum, GLenum, GLsizei, GLsizei);
++GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum, GLenum, GLint *);
++GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint);
++GLAPI void APIENTRY glBindFramebufferEXT (GLenum, GLuint);
++GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei, const GLuint *);
++GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei, GLuint *);
++GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum);
++GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum, GLenum, GLenum, GLuint, GLint);
++GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum, GLenum, GLenum, GLuint, GLint);
++GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum, GLenum, GLenum, GLuint, GLint, GLint);
++GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum, GLenum, GLenum, GLuint);
++GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum, GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glGenerateMipmapEXT (GLenum);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer);
++typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer);
++typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers);
++typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers);
++typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
++typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
++typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer);
++typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer);
++typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers);
++typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers);
++typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target);
++typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
++typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
++typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
++typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
++typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target);
++#endif
++
++#ifndef GL_GREMEDY_string_marker
++#define GL_GREMEDY_string_marker 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei, const GLvoid *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const GLvoid *string);
++#endif
++
++#ifndef GL_EXT_packed_depth_stencil
++#define GL_EXT_packed_depth_stencil 1
++#endif
++
++#ifndef GL_EXT_stencil_clear_tag
++#define GL_EXT_stencil_clear_tag 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glStencilClearTagEXT (GLsizei, GLuint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag);
++#endif
++
++#ifndef GL_EXT_texture_sRGB
++#define GL_EXT_texture_sRGB 1
++#endif
++
++#ifndef GL_EXT_framebuffer_blit
++#define GL_EXT_framebuffer_blit 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glBlitFramebufferEXT (GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
++#endif
++
++#ifndef GL_EXT_framebuffer_multisample
++#define GL_EXT_framebuffer_multisample 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
++#endif
++
++#ifndef GL_MESAX_texture_stack
++#define GL_MESAX_texture_stack 1
++#endif
++
++#ifndef GL_EXT_timer_query
++#define GL_EXT_timer_query 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint, GLenum, GLint64EXT *);
++GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint, GLenum, GLuint64EXT *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT *params);
++typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT *params);
++#endif
++
++#ifndef GL_EXT_gpu_program_parameters
++#define GL_EXT_gpu_program_parameters 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum, GLuint, GLsizei, const GLfloat *);
++GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum, GLuint, GLsizei, const GLfloat *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
++typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
++#endif
++
++#ifndef GL_APPLE_flush_buffer_range
++#define GL_APPLE_flush_buffer_range 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum, GLenum, GLint);
++GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum, GLintptr, GLsizeiptr);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param);
++typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size);
++#endif
++
++#ifndef GL_NV_gpu_program4
++#define GL_NV_gpu_program4 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum, GLuint, GLint, GLint, GLint, GLint);
++GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum, GLuint, const GLint *);
++GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum, GLuint, GLsizei, const GLint *);
++GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint);
++GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum, GLuint, const GLuint *);
++GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum, GLuint, GLsizei, const GLuint *);
++GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum, GLuint, GLint, GLint, GLint, GLint);
++GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum, GLuint, const GLint *);
++GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum, GLuint, GLsizei, const GLint *);
++GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint);
++GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum, GLuint, const GLuint *);
++GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum, GLuint, GLsizei, const GLuint *);
++GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum, GLuint, GLint *);
++GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum, GLuint, GLuint *);
++GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum, GLuint, GLint *);
++GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum, GLuint, GLuint *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
++typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
++typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
++typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
++typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
++typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
++typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
++typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
++typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
++typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
++typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
++typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
++typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params);
++typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params);
++typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params);
++typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params);
++#endif
++
++#ifndef GL_NV_geometry_program4
++#define GL_NV_geometry_program4 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glProgramVertexLimitNV (GLenum, GLint);
++GLAPI void APIENTRY glFramebufferTextureEXT (GLenum, GLenum, GLuint, GLint);
++GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum, GLenum, GLuint, GLint, GLint);
++GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum, GLenum, GLuint, GLint, GLenum);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit);
++typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
++typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
++typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
++#endif
++
++#ifndef GL_EXT_geometry_shader4
++#define GL_EXT_geometry_shader4 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glProgramParameteriEXT (GLuint, GLenum, GLint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value);
++#endif
++
++#ifndef GL_NV_vertex_program4
++#define GL_NV_vertex_program4 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint, GLint);
++GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint, GLint, GLint);
++GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint, GLint, GLint, GLint);
++GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint, GLint, GLint, GLint, GLint);
++GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint, GLuint);
++GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint, GLuint, GLuint);
++GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint, GLuint, GLuint, GLuint);
++GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint, GLuint, GLuint, GLuint, GLuint);
++GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint, const GLint *);
++GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint, const GLint *);
++GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint, const GLint *);
++GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint, const GLint *);
++GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint, const GLuint *);
++GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint, const GLuint *);
++GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint, const GLuint *);
++GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint, const GLuint *);
++GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint, const GLbyte *);
++GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint, const GLshort *);
++GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint, const GLubyte *);
++GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint, const GLushort *);
++GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint, GLint, GLenum, GLsizei, const GLvoid *);
++GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint, GLenum, GLint *);
++GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint, GLenum, GLuint *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v);
++typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
++typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params);
++#endif
++
++#ifndef GL_EXT_gpu_shader4
++#define GL_EXT_gpu_shader4 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glGetUniformuivEXT (GLuint, GLint, GLuint *);
++GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint, GLuint, const GLchar *);
++GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint, const GLchar *);
++GLAPI void APIENTRY glUniform1uiEXT (GLint, GLuint);
++GLAPI void APIENTRY glUniform2uiEXT (GLint, GLuint, GLuint);
++GLAPI void APIENTRY glUniform3uiEXT (GLint, GLuint, GLuint, GLuint);
++GLAPI void APIENTRY glUniform4uiEXT (GLint, GLuint, GLuint, GLuint, GLuint);
++GLAPI void APIENTRY glUniform1uivEXT (GLint, GLsizei, const GLuint *);
++GLAPI void APIENTRY glUniform2uivEXT (GLint, GLsizei, const GLuint *);
++GLAPI void APIENTRY glUniform3uivEXT (GLint, GLsizei, const GLuint *);
++GLAPI void APIENTRY glUniform4uivEXT (GLint, GLsizei, const GLuint *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params);
++typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name);
++typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name);
++typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0);
++typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1);
++typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
++typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
++typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
++typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
++typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
++typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
++#endif
++
++#ifndef GL_EXT_draw_instanced
++#define GL_EXT_draw_instanced 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum, GLint, GLsizei, GLsizei);
++GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum, GLsizei, GLenum, const GLvoid *, GLsizei);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
++typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
++#endif
++
++#ifndef GL_EXT_packed_float
++#define GL_EXT_packed_float 1
++#endif
++
++#ifndef GL_EXT_texture_array
++#define GL_EXT_texture_array 1
++#endif
++
++#ifndef GL_EXT_texture_buffer_object
++#define GL_EXT_texture_buffer_object 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glTexBufferEXT (GLenum, GLenum, GLuint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer);
++#endif
++
++#ifndef GL_EXT_texture_compression_latc
++#define GL_EXT_texture_compression_latc 1
++#endif
++
++#ifndef GL_EXT_texture_compression_rgtc
++#define GL_EXT_texture_compression_rgtc 1
++#endif
++
++#ifndef GL_EXT_texture_shared_exponent
++#define GL_EXT_texture_shared_exponent 1
++#endif
++
++#ifndef GL_NV_depth_buffer_float
++#define GL_NV_depth_buffer_float 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glDepthRangedNV (GLdouble, GLdouble);
++GLAPI void APIENTRY glClearDepthdNV (GLdouble);
++GLAPI void APIENTRY glDepthBoundsdNV (GLdouble, GLdouble);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar);
++typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth);
++typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax);
++#endif
++
++#ifndef GL_NV_fragment_program4
++#define GL_NV_fragment_program4 1
++#endif
++
++#ifndef GL_NV_framebuffer_multisample_coverage
++#define GL_NV_framebuffer_multisample_coverage 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum, GLsizei, GLsizei, GLenum, GLsizei, GLsizei);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
++#endif
++
++#ifndef GL_EXT_framebuffer_sRGB
++#define GL_EXT_framebuffer_sRGB 1
++#endif
++
++#ifndef GL_NV_geometry_shader4
++#define GL_NV_geometry_shader4 1
++#endif
++
++#ifndef GL_NV_parameter_buffer_object
++#define GL_NV_parameter_buffer_object 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum, GLuint, GLuint, GLsizei, const GLfloat *);
++GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum, GLuint, GLuint, GLsizei, const GLint *);
++GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum, GLuint, GLuint, GLsizei, const GLuint *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params);
++typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params);
++typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params);
++#endif
++
++#ifndef GL_EXT_draw_buffers2
++#define GL_EXT_draw_buffers2 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint, GLboolean, GLboolean, GLboolean, GLboolean);
++GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum, GLuint, GLboolean *);
++GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum, GLuint, GLint *);
++GLAPI void APIENTRY glEnableIndexedEXT (GLenum, GLuint);
++GLAPI void APIENTRY glDisableIndexedEXT (GLenum, GLuint);
++GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum, GLuint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
++typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data);
++typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint *data);
++typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
++typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
++typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index);
++#endif
++
++#ifndef GL_NV_transform_feedback
++#define GL_NV_transform_feedback 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum);
++GLAPI void APIENTRY glEndTransformFeedbackNV (void);
++GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLuint, const GLint *, GLenum);
++GLAPI void APIENTRY glBindBufferRangeNV (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr);
++GLAPI void APIENTRY glBindBufferOffsetNV (GLenum, GLuint, GLuint, GLintptr);
++GLAPI void APIENTRY glBindBufferBaseNV (GLenum, GLuint, GLuint);
++GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint, GLsizei, const GLint *, GLenum);
++GLAPI void APIENTRY glActiveVaryingNV (GLuint, const GLchar *);
++GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint, const GLchar *);
++GLAPI void APIENTRY glGetActiveVaryingNV (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *);
++GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint, GLuint, GLint *);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode);
++typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) (void);
++typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode);
++typedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
++typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
++typedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer);
++typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode);
++typedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name);
++typedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name);
++typedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
++typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location);
++#endif
++
++#ifndef GL_EXT_bindable_uniform
++#define GL_EXT_bindable_uniform 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glUniformBufferEXT (GLuint, GLint, GLuint);
++GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint, GLint);
++GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint, GLint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer);
++typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location);
++typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location);
++#endif
++
++#ifndef GL_EXT_texture_integer
++#define GL_EXT_texture_integer 1
++#ifdef GL_GLEXT_PROTOTYPES
++GLAPI void APIENTRY glTexParameterIivEXT (GLenum, GLenum, const GLint *);
++GLAPI void APIENTRY glTexParameterIuivEXT (GLenum, GLenum, const GLuint *);
++GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum, GLenum, GLint *);
++GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum, GLenum, GLuint *);
++GLAPI void APIENTRY glClearColorIiEXT (GLint, GLint, GLint, GLint);
++GLAPI void APIENTRY glClearColorIuiEXT (GLuint, GLuint, GLuint, GLuint);
++#endif /* GL_GLEXT_PROTOTYPES */
++typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
++typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params);
++typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
++typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params);
++typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha);
++typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha);
++#endif
++
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif
++
++
++/* ERO */
++GLAPI void GLAPIENTRY fake_gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *data);
+Index: qemu-0.13.0/target-i386/mesa_glu.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-i386/mesa_glu.h 2011-01-17 16:42:36.000000000 +0800
+@@ -0,0 +1,354 @@
++/*
++** License Applicability. Except to the extent portions of this file are
++** made subject to an alternative license as permitted in the SGI Free
++** Software License B, Version 1.1 (the "License"), the contents of this
++** file are subject only to the provisions of the License. You may not use
++** this file except in compliance with the License. You may obtain a copy
++** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
++** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
++**
++** http://oss.sgi.com/projects/FreeB
++**
++** Note that, as provided in the License, the Software is distributed on an
++** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
++** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
++** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
++** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
++**
++** Original Code. The Original Code is: OpenGL Sample Implementation,
++** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
++** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
++** Copyright in any portions created by third parties is as indicated
++** elsewhere herein. All Rights Reserved.
++**
++** Additional Notice Provisions: This software was created using the
++** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has
++** not been independently verified as being compliant with the OpenGL(R)
++** version 1.2.1 Specification.
++*/
++
++#ifndef __glu_h__
++#define __glu_h__
++
++#if defined(USE_MGL_NAMESPACE)
++#include "glu_mangle.h"
++#endif
++
++//#include <GL/gl.h>
++#include "mesa_gl.h"
++
++#ifndef GLAPIENTRY
++#define GLAPIENTRY
++#endif
++
++#ifndef GLAPIENTRYP
++#define GLAPIENTRYP GLAPIENTRY *
++#endif
++
++#ifdef GLAPI
++#undef GLAPI
++#endif
++
++# if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GLU32)
++# define GLAPI __declspec(dllexport)
++# elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
++# define GLAPI __declspec(dllimport)
++# else /* for use with static link lib build of Win32 edition only */
++# define GLAPI extern
++# endif /* _STATIC_MESA support */
++
++
++#ifndef GLAPI
++#define GLAPI
++#endif
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++/*************************************************************/
++
++/* Extensions */
++#define GLU_EXT_object_space_tess 1
++#define GLU_EXT_nurbs_tessellator 1
++
++/* Boolean */
++#define GLU_FALSE 0
++#define GLU_TRUE 1
++
++/* Version */
++#define GLU_VERSION_1_1 1
++#define GLU_VERSION_1_2 1
++#define GLU_VERSION_1_3 1
++
++/* StringName */
++#define GLU_VERSION 100800
++#define GLU_EXTENSIONS 100801
++
++/* ErrorCode */
++#define GLU_INVALID_ENUM 100900
++#define GLU_INVALID_VALUE 100901
++#define GLU_OUT_OF_MEMORY 100902
++#define GLU_INCOMPATIBLE_GL_VERSION 100903
++#define GLU_INVALID_OPERATION 100904
++
++/* NurbsDisplay */
++/* GLU_FILL */
++#define GLU_OUTLINE_POLYGON 100240
++#define GLU_OUTLINE_PATCH 100241
++
++/* NurbsCallback */
++#define GLU_NURBS_ERROR 100103
++#define GLU_ERROR 100103
++#define GLU_NURBS_BEGIN 100164
++#define GLU_NURBS_BEGIN_EXT 100164
++#define GLU_NURBS_VERTEX 100165
++#define GLU_NURBS_VERTEX_EXT 100165
++#define GLU_NURBS_NORMAL 100166
++#define GLU_NURBS_NORMAL_EXT 100166
++#define GLU_NURBS_COLOR 100167
++#define GLU_NURBS_COLOR_EXT 100167
++#define GLU_NURBS_TEXTURE_COORD 100168
++#define GLU_NURBS_TEX_COORD_EXT 100168
++#define GLU_NURBS_END 100169
++#define GLU_NURBS_END_EXT 100169
++#define GLU_NURBS_BEGIN_DATA 100170
++#define GLU_NURBS_BEGIN_DATA_EXT 100170
++#define GLU_NURBS_VERTEX_DATA 100171
++#define GLU_NURBS_VERTEX_DATA_EXT 100171
++#define GLU_NURBS_NORMAL_DATA 100172
++#define GLU_NURBS_NORMAL_DATA_EXT 100172
++#define GLU_NURBS_COLOR_DATA 100173
++#define GLU_NURBS_COLOR_DATA_EXT 100173
++#define GLU_NURBS_TEXTURE_COORD_DATA 100174
++#define GLU_NURBS_TEX_COORD_DATA_EXT 100174
++#define GLU_NURBS_END_DATA 100175
++#define GLU_NURBS_END_DATA_EXT 100175
++
++/* NurbsError */
++#define GLU_NURBS_ERROR1 100251
++#define GLU_NURBS_ERROR2 100252
++#define GLU_NURBS_ERROR3 100253
++#define GLU_NURBS_ERROR4 100254
++#define GLU_NURBS_ERROR5 100255
++#define GLU_NURBS_ERROR6 100256
++#define GLU_NURBS_ERROR7 100257
++#define GLU_NURBS_ERROR8 100258
++#define GLU_NURBS_ERROR9 100259
++#define GLU_NURBS_ERROR10 100260
++#define GLU_NURBS_ERROR11 100261
++#define GLU_NURBS_ERROR12 100262
++#define GLU_NURBS_ERROR13 100263
++#define GLU_NURBS_ERROR14 100264
++#define GLU_NURBS_ERROR15 100265
++#define GLU_NURBS_ERROR16 100266
++#define GLU_NURBS_ERROR17 100267
++#define GLU_NURBS_ERROR18 100268
++#define GLU_NURBS_ERROR19 100269
++#define GLU_NURBS_ERROR20 100270
++#define GLU_NURBS_ERROR21 100271
++#define GLU_NURBS_ERROR22 100272
++#define GLU_NURBS_ERROR23 100273
++#define GLU_NURBS_ERROR24 100274
++#define GLU_NURBS_ERROR25 100275
++#define GLU_NURBS_ERROR26 100276
++#define GLU_NURBS_ERROR27 100277
++#define GLU_NURBS_ERROR28 100278
++#define GLU_NURBS_ERROR29 100279
++#define GLU_NURBS_ERROR30 100280
++#define GLU_NURBS_ERROR31 100281
++#define GLU_NURBS_ERROR32 100282
++#define GLU_NURBS_ERROR33 100283
++#define GLU_NURBS_ERROR34 100284
++#define GLU_NURBS_ERROR35 100285
++#define GLU_NURBS_ERROR36 100286
++#define GLU_NURBS_ERROR37 100287
++
++/* NurbsProperty */
++#define GLU_AUTO_LOAD_MATRIX 100200
++#define GLU_CULLING 100201
++#define GLU_SAMPLING_TOLERANCE 100203
++#define GLU_DISPLAY_MODE 100204
++#define GLU_PARAMETRIC_TOLERANCE 100202
++#define GLU_SAMPLING_METHOD 100205
++#define GLU_U_STEP 100206
++#define GLU_V_STEP 100207
++#define GLU_NURBS_MODE 100160
++#define GLU_NURBS_MODE_EXT 100160
++#define GLU_NURBS_TESSELLATOR 100161
++#define GLU_NURBS_TESSELLATOR_EXT 100161
++#define GLU_NURBS_RENDERER 100162
++#define GLU_NURBS_RENDERER_EXT 100162
++
++/* NurbsSampling */
++#define GLU_OBJECT_PARAMETRIC_ERROR 100208
++#define GLU_OBJECT_PARAMETRIC_ERROR_EXT 100208
++#define GLU_OBJECT_PATH_LENGTH 100209
++#define GLU_OBJECT_PATH_LENGTH_EXT 100209
++#define GLU_PATH_LENGTH 100215
++#define GLU_PARAMETRIC_ERROR 100216
++#define GLU_DOMAIN_DISTANCE 100217
++
++/* NurbsTrim */
++#define GLU_MAP1_TRIM_2 100210
++#define GLU_MAP1_TRIM_3 100211
++
++/* QuadricDrawStyle */
++#define GLU_POINT 100010
++#define GLU_LINE 100011
++#define GLU_FILL 100012
++#define GLU_SILHOUETTE 100013
++
++/* QuadricCallback */
++/* GLU_ERROR */
++
++/* QuadricNormal */
++#define GLU_SMOOTH 100000
++#define GLU_FLAT 100001
++#define GLU_NONE 100002
++
++/* QuadricOrientation */
++#define GLU_OUTSIDE 100020
++#define GLU_INSIDE 100021
++
++/* TessCallback */
++#define GLU_TESS_BEGIN 100100
++#define GLU_BEGIN 100100
++#define GLU_TESS_VERTEX 100101
++#define GLU_VERTEX 100101
++#define GLU_TESS_END 100102
++#define GLU_END 100102
++#define GLU_TESS_ERROR 100103
++#define GLU_TESS_EDGE_FLAG 100104
++#define GLU_EDGE_FLAG 100104
++#define GLU_TESS_COMBINE 100105
++#define GLU_TESS_BEGIN_DATA 100106
++#define GLU_TESS_VERTEX_DATA 100107
++#define GLU_TESS_END_DATA 100108
++#define GLU_TESS_ERROR_DATA 100109
++#define GLU_TESS_EDGE_FLAG_DATA 100110
++#define GLU_TESS_COMBINE_DATA 100111
++
++/* TessContour */
++#define GLU_CW 100120
++#define GLU_CCW 100121
++#define GLU_INTERIOR 100122
++#define GLU_EXTERIOR 100123
++#define GLU_UNKNOWN 100124
++
++/* TessProperty */
++#define GLU_TESS_WINDING_RULE 100140
++#define GLU_TESS_BOUNDARY_ONLY 100141
++#define GLU_TESS_TOLERANCE 100142
++
++/* TessError */
++#define GLU_TESS_ERROR1 100151
++#define GLU_TESS_ERROR2 100152
++#define GLU_TESS_ERROR3 100153
++#define GLU_TESS_ERROR4 100154
++#define GLU_TESS_ERROR5 100155
++#define GLU_TESS_ERROR6 100156
++#define GLU_TESS_ERROR7 100157
++#define GLU_TESS_ERROR8 100158
++#define GLU_TESS_MISSING_BEGIN_POLYGON 100151
++#define GLU_TESS_MISSING_BEGIN_CONTOUR 100152
++#define GLU_TESS_MISSING_END_POLYGON 100153
++#define GLU_TESS_MISSING_END_CONTOUR 100154
++#define GLU_TESS_COORD_TOO_LARGE 100155
++#define GLU_TESS_NEED_COMBINE_CALLBACK 100156
++
++/* TessWinding */
++#define GLU_TESS_WINDING_ODD 100130
++#define GLU_TESS_WINDING_NONZERO 100131
++#define GLU_TESS_WINDING_POSITIVE 100132
++#define GLU_TESS_WINDING_NEGATIVE 100133
++#define GLU_TESS_WINDING_ABS_GEQ_TWO 100134
++
++/*************************************************************/
++
++
++#ifdef __cplusplus
++class GLUnurbs;
++class GLUquadric;
++class GLUtesselator;
++#else
++typedef struct GLUnurbs GLUnurbs;
++typedef struct GLUquadric GLUquadric;
++typedef struct GLUtesselator GLUtesselator;
++#endif
++
++typedef GLUnurbs GLUnurbsObj;
++typedef GLUquadric GLUquadricObj;
++typedef GLUtesselator GLUtesselatorObj;
++typedef GLUtesselator GLUtriangulatorObj;
++
++#define GLU_TESS_MAX_COORD 1.0e150
++
++/* Internal convenience typedefs */
++typedef void (GLAPIENTRYP _GLUfuncptr)();
++
++GLAPI void GLAPIENTRY gluBeginCurve (GLUnurbs* nurb);
++GLAPI void GLAPIENTRY gluBeginPolygon (GLUtesselator* tess);
++GLAPI void GLAPIENTRY gluBeginSurface (GLUnurbs* nurb);
++GLAPI void GLAPIENTRY gluBeginTrim (GLUnurbs* nurb);
++GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
++GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
++GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
++GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
++GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
++GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
++GLAPI GLboolean GLAPIENTRY gluCheckExtension (const GLubyte *extName, const GLubyte *extString);
++GLAPI void GLAPIENTRY gluCylinder (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks);
++GLAPI void GLAPIENTRY gluDeleteNurbsRenderer (GLUnurbs* nurb);
++GLAPI void GLAPIENTRY gluDeleteQuadric (GLUquadric* quad);
++GLAPI void GLAPIENTRY gluDeleteTess (GLUtesselator* tess);
++GLAPI void GLAPIENTRY gluDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops);
++GLAPI void GLAPIENTRY gluEndCurve (GLUnurbs* nurb);
++GLAPI void GLAPIENTRY gluEndPolygon (GLUtesselator* tess);
++GLAPI void GLAPIENTRY gluEndSurface (GLUnurbs* nurb);
++GLAPI void GLAPIENTRY gluEndTrim (GLUnurbs* nurb);
++GLAPI const GLubyte * GLAPIENTRY gluErrorString (GLenum error);
++GLAPI void GLAPIENTRY gluGetNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat* data);
++GLAPI const GLubyte * GLAPIENTRY gluGetString (GLenum name);
++GLAPI void GLAPIENTRY gluGetTessProperty (GLUtesselator* tess, GLenum which, GLdouble* data);
++GLAPI void GLAPIENTRY gluLoadSamplingMatrices (GLUnurbs* nurb, const GLfloat *model, const GLfloat *perspective, const GLint *view);
++GLAPI void GLAPIENTRY gluLookAt (GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ);
++GLAPI GLUnurbs* GLAPIENTRY gluNewNurbsRenderer (void);
++GLAPI GLUquadric* GLAPIENTRY gluNewQuadric (void);
++GLAPI GLUtesselator* GLAPIENTRY gluNewTess (void);
++GLAPI void GLAPIENTRY gluNextContour (GLUtesselator* tess, GLenum type);
++GLAPI void GLAPIENTRY gluNurbsCallback (GLUnurbs* nurb, GLenum which, _GLUfuncptr CallBackFunc);
++GLAPI void GLAPIENTRY gluNurbsCallbackData (GLUnurbs* nurb, GLvoid* userData);
++GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
++GLAPI void GLAPIENTRY gluNurbsCurve (GLUnurbs* nurb, GLint knotCount, GLfloat *knots, GLint stride, GLfloat *control, GLint order, GLenum type);
++GLAPI void GLAPIENTRY gluNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat value);
++GLAPI void GLAPIENTRY gluNurbsSurface (GLUnurbs* nurb, GLint sKnotCount, GLfloat* sKnots, GLint tKnotCount, GLfloat* tKnots, GLint sStride, GLint tStride, GLfloat* control, GLint sOrder, GLint tOrder, GLenum type);
++GLAPI void GLAPIENTRY gluOrtho2D (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
++GLAPI void GLAPIENTRY gluPartialDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops, GLdouble start, GLdouble sweep);
++GLAPI void GLAPIENTRY gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
++GLAPI void GLAPIENTRY gluPickMatrix (GLdouble x, GLdouble y, GLdouble delX, GLdouble delY, GLint *viewport);
++GLAPI GLint GLAPIENTRY gluProject (GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* winX, GLdouble* winY, GLdouble* winZ);
++GLAPI void GLAPIENTRY gluPwlCurve (GLUnurbs* nurb, GLint count, GLfloat* data, GLint stride, GLenum type);
++GLAPI void GLAPIENTRY gluQuadricCallback (GLUquadric* quad, GLenum which, _GLUfuncptr CallBackFunc);
++GLAPI void GLAPIENTRY gluQuadricDrawStyle (GLUquadric* quad, GLenum draw);
++GLAPI void GLAPIENTRY gluQuadricNormals (GLUquadric* quad, GLenum normal);
++GLAPI void GLAPIENTRY gluQuadricOrientation (GLUquadric* quad, GLenum orientation);
++GLAPI void GLAPIENTRY gluQuadricTexture (GLUquadric* quad, GLboolean texture);
++GLAPI GLint GLAPIENTRY gluScaleImage (GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void *dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut);
++GLAPI void GLAPIENTRY gluSphere (GLUquadric* quad, GLdouble radius, GLint slices, GLint stacks);
++GLAPI void GLAPIENTRY gluTessBeginContour (GLUtesselator* tess);
++GLAPI void GLAPIENTRY gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data);
++GLAPI void GLAPIENTRY gluTessCallback (GLUtesselator* tess, GLenum which, _GLUfuncptr CallBackFunc);
++GLAPI void GLAPIENTRY gluTessEndContour (GLUtesselator* tess);
++GLAPI void GLAPIENTRY gluTessEndPolygon (GLUtesselator* tess);
++GLAPI void GLAPIENTRY gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ);
++GLAPI void GLAPIENTRY gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data);
++GLAPI void GLAPIENTRY gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data);
++GLAPI GLint GLAPIENTRY gluUnProject (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ);
++GLAPI GLint GLAPIENTRY gluUnProject4 (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble nearVal, GLdouble farVal, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW);
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif /* __glu_h__ */
+Index: qemu-0.13.0/target-i386/mesa_glx.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-i386/mesa_glx.h 2011-01-17 16:42:36.000000000 +0800
+@@ -0,0 +1,510 @@
++/*
++ * Mesa 3-D graphics library
++ * Version: 6.5
++ *
++ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
++ *
++ * 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
++ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
++ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
++ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++ */
++
++
++#ifndef GLX_H
++#define GLX_H
++
++
++#ifdef __VMS
++#include <GL/vms_x_fix.h>
++# ifdef __cplusplus
++/* VMS Xlib.h gives problems with C++.
++ * this avoids a bunch of trivial warnings */
++#pragma message disable nosimpint
++#endif
++#endif
++#include <X11/Xlib.h>
++#include <X11/Xutil.h>
++#ifdef __VMS
++# ifdef __cplusplus
++#pragma message enable nosimpint
++#endif
++#endif
++#include <mesa_gl.h>
++
++
++#if defined(USE_MGL_NAMESPACE)
++#include "glx_mangle.h"
++#endif
++
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++
++#define GLX_VERSION_1_1 1
++#define GLX_VERSION_1_2 1
++#define GLX_VERSION_1_3 1
++#define GLX_VERSION_1_4 1
++
++#define GLX_EXTENSION_NAME "GLX"
++
++
++
++/*
++ * Tokens for glXChooseVisual and glXGetConfig:
++ */
++#define GLX_USE_GL 1
++#define GLX_BUFFER_SIZE 2
++#define GLX_LEVEL 3
++#define GLX_RGBA 4
++#define GLX_DOUBLEBUFFER 5
++#define GLX_STEREO 6
++#define GLX_AUX_BUFFERS 7
++#define GLX_RED_SIZE 8
++#define GLX_GREEN_SIZE 9
++#define GLX_BLUE_SIZE 10
++#define GLX_ALPHA_SIZE 11
++#define GLX_DEPTH_SIZE 12
++#define GLX_STENCIL_SIZE 13
++#define GLX_ACCUM_RED_SIZE 14
++#define GLX_ACCUM_GREEN_SIZE 15
++#define GLX_ACCUM_BLUE_SIZE 16
++#define GLX_ACCUM_ALPHA_SIZE 17
++
++
++/*
++ * Error codes returned by glXGetConfig:
++ */
++#define GLX_BAD_SCREEN 1
++#define GLX_BAD_ATTRIBUTE 2
++#define GLX_NO_EXTENSION 3
++#define GLX_BAD_VISUAL 4
++#define GLX_BAD_CONTEXT 5
++#define GLX_BAD_VALUE 6
++#define GLX_BAD_ENUM 7
++
++
++/*
++ * GLX 1.1 and later:
++ */
++#define GLX_VENDOR 1
++#define GLX_VERSION 2
++#define GLX_EXTENSIONS 3
++
++
++/*
++ * GLX 1.3 and later:
++ */
++#define GLX_CONFIG_CAVEAT 0x20
++#define GLX_DONT_CARE 0xFFFFFFFF
++#define GLX_X_VISUAL_TYPE 0x22
++#define GLX_TRANSPARENT_TYPE 0x23
++#define GLX_TRANSPARENT_INDEX_VALUE 0x24
++#define GLX_TRANSPARENT_RED_VALUE 0x25
++#define GLX_TRANSPARENT_GREEN_VALUE 0x26
++#define GLX_TRANSPARENT_BLUE_VALUE 0x27
++#define GLX_TRANSPARENT_ALPHA_VALUE 0x28
++#define GLX_WINDOW_BIT 0x00000001
++#define GLX_PIXMAP_BIT 0x00000002
++#define GLX_PBUFFER_BIT 0x00000004
++#define GLX_AUX_BUFFERS_BIT 0x00000010
++#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001
++#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002
++#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004
++#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008
++#define GLX_DEPTH_BUFFER_BIT 0x00000020
++#define GLX_STENCIL_BUFFER_BIT 0x00000040
++#define GLX_ACCUM_BUFFER_BIT 0x00000080
++#define GLX_NONE 0x8000
++#define GLX_SLOW_CONFIG 0x8001
++#define GLX_TRUE_COLOR 0x8002
++#define GLX_DIRECT_COLOR 0x8003
++#define GLX_PSEUDO_COLOR 0x8004
++#define GLX_STATIC_COLOR 0x8005
++#define GLX_GRAY_SCALE 0x8006
++#define GLX_STATIC_GRAY 0x8007
++#define GLX_TRANSPARENT_RGB 0x8008
++#define GLX_TRANSPARENT_INDEX 0x8009
++#define GLX_VISUAL_ID 0x800B
++#define GLX_SCREEN 0x800C
++#define GLX_NON_CONFORMANT_CONFIG 0x800D
++#define GLX_DRAWABLE_TYPE 0x8010
++#define GLX_RENDER_TYPE 0x8011
++#define GLX_X_RENDERABLE 0x8012
++#define GLX_FBCONFIG_ID 0x8013
++#define GLX_RGBA_TYPE 0x8014
++#define GLX_COLOR_INDEX_TYPE 0x8015
++#define GLX_MAX_PBUFFER_WIDTH 0x8016
++#define GLX_MAX_PBUFFER_HEIGHT 0x8017
++#define GLX_MAX_PBUFFER_PIXELS 0x8018
++#define GLX_PRESERVED_CONTENTS 0x801B
++#define GLX_LARGEST_PBUFFER 0x801C
++#define GLX_WIDTH 0x801D
++#define GLX_HEIGHT 0x801E
++#define GLX_EVENT_MASK 0x801F
++#define GLX_DAMAGED 0x8020
++#define GLX_SAVED 0x8021
++#define GLX_WINDOW 0x8022
++#define GLX_PBUFFER 0x8023
++#define GLX_PBUFFER_HEIGHT 0x8040
++#define GLX_PBUFFER_WIDTH 0x8041
++#define GLX_RGBA_BIT 0x00000001
++#define GLX_COLOR_INDEX_BIT 0x00000002
++#define GLX_PBUFFER_CLOBBER_MASK 0x08000000
++
++
++/*
++ * GLX 1.4 and later:
++ */
++#define GLX_SAMPLE_BUFFERS 0x186a0 /*100000*/
++#define GLX_SAMPLES 0x186a1 /*100001*/
++
++
++
++typedef struct __GLXcontextRec *GLXContext;
++typedef XID GLXPixmap;
++typedef XID GLXDrawable;
++/* GLX 1.3 and later */
++typedef struct __GLXFBConfigRec *GLXFBConfig;
++typedef XID GLXFBConfigID;
++typedef XID GLXContextID;
++typedef XID GLXWindow;
++typedef XID GLXPbuffer;
++
++
++
++extern XVisualInfo* glXChooseVisual( Display *dpy, int screen,
++ int *attribList );
++
++extern GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis,
++ GLXContext shareList, Bool direct );
++
++extern void glXDestroyContext( Display *dpy, GLXContext ctx );
++
++extern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable,
++ GLXContext ctx);
++
++extern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
++ unsigned long mask );
++
++extern void glXSwapBuffers( Display *dpy, GLXDrawable drawable );
++
++extern GLXPixmap glXCreateGLXPixmap( Display *dpy, XVisualInfo *visual,
++ Pixmap pixmap );
++
++extern void glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap );
++
++extern Bool glXQueryExtension( Display *dpy, int *errorb, int *event );
++
++extern Bool glXQueryVersion( Display *dpy, int *maj, int *min );
++
++extern Bool glXIsDirect( Display *dpy, GLXContext ctx );
++
++extern int glXGetConfig( Display *dpy, XVisualInfo *visual,
++ int attrib, int *value );
++
++extern GLXContext glXGetCurrentContext( void );
++
++extern GLXDrawable glXGetCurrentDrawable( void );
++
++extern void glXWaitGL( void );
++
++extern void glXWaitX( void );
++
++extern void glXUseXFont( Font font, int first, int count, int list );
++
++
++
++/* GLX 1.1 and later */
++extern const char *glXQueryExtensionsString( Display *dpy, int screen );
++
++extern const char *glXQueryServerString( Display *dpy, int screen, int name );
++
++extern const char *glXGetClientString( Display *dpy, int name );
++
++
++/* GLX 1.2 and later */
++extern Display *glXGetCurrentDisplay( void );
++
++
++/* GLX 1.3 and later */
++extern GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen,
++ const int *attribList, int *nitems );
++
++extern int glXGetFBConfigAttrib( Display *dpy, GLXFBConfig config,
++ int attribute, int *value );
++
++extern GLXFBConfig *glXGetFBConfigs( Display *dpy, int screen,
++ int *nelements );
++
++extern XVisualInfo *glXGetVisualFromFBConfig( Display *dpy,
++ GLXFBConfig config );
++
++extern GLXWindow glXCreateWindow( Display *dpy, GLXFBConfig config,
++ Window win, const int *attribList );
++
++extern void glXDestroyWindow( Display *dpy, GLXWindow window );
++
++extern GLXPixmap glXCreatePixmap( Display *dpy, GLXFBConfig config,
++ Pixmap pixmap, const int *attribList );
++
++extern void glXDestroyPixmap( Display *dpy, GLXPixmap pixmap );
++
++extern GLXPbuffer glXCreatePbuffer( Display *dpy, GLXFBConfig config,
++ const int *attribList );
++
++extern void glXDestroyPbuffer( Display *dpy, GLXPbuffer pbuf );
++
++extern void glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute,
++ unsigned int *value );
++
++extern GLXContext glXCreateNewContext( Display *dpy, GLXFBConfig config,
++ int renderType, GLXContext shareList,
++ Bool direct );
++
++extern Bool glXMakeContextCurrent( Display *dpy, GLXDrawable draw,
++ GLXDrawable read, GLXContext ctx );
++
++extern GLXDrawable glXGetCurrentReadDrawable( void );
++
++extern int glXQueryContext( Display *dpy, GLXContext ctx, int attribute,
++ int *value );
++
++extern void glXSelectEvent( Display *dpy, GLXDrawable drawable,
++ unsigned long mask );
++
++extern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable,
++ unsigned long *mask );
++
++
++/* GLX 1.4 and later */
++extern void (*glXGetProcAddress(const GLubyte *procname))( void );
++
++
++#ifndef GLX_GLXEXT_LEGACY
++
++#include <mesa_glxext.h>
++
++#else
++
++
++
++/*
++ * ARB 2. GLX_ARB_get_proc_address
++ */
++#ifndef GLX_ARB_get_proc_address
++#define GLX_ARB_get_proc_address 1
++
++typedef void (*__GLXextFuncPtr)(void);
++extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *);
++
++#endif /* GLX_ARB_get_proc_address */
++
++
++
++#endif /* GLX_GLXEXT_LEGACY */
++
++
++/**
++ ** The following aren't in glxext.h yet.
++ **/
++
++
++/*
++ * ???. GLX_NV_vertex_array_range
++ */
++#ifndef GLX_NV_vertex_array_range
++#define GLX_NV_vertex_array_range
++
++extern void *glXAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
++extern void glXFreeMemoryNV(GLvoid *pointer);
++typedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
++typedef void ( * PFNGLXFREEMEMORYNVPROC) (GLvoid *pointer);
++
++#endif /* GLX_NV_vertex_array_range */
++
++
++/*
++ * ???. GLX_MESA_allocate_memory
++ */
++#ifndef GLX_MESA_allocate_memory
++#define GLX_MESA_allocate_memory 1
++
++extern void *glXAllocateMemoryMESA(Display *dpy, int scrn, size_t size, float readfreq, float writefreq, float priority);
++extern void glXFreeMemoryMESA(Display *dpy, int scrn, void *pointer);
++extern GLuint glXGetMemoryOffsetMESA(Display *dpy, int scrn, const void *pointer);
++typedef void * ( * PFNGLXALLOCATEMEMORYMESAPROC) (Display *dpy, int scrn, size_t size, float readfreq, float writefreq, float priority);
++typedef void ( * PFNGLXFREEMEMORYMESAPROC) (Display *dpy, int scrn, void *pointer);
++typedef GLuint (* PFNGLXGETMEMORYOFFSETMESAPROC) (Display *dpy, int scrn, const void *pointer);
++
++#endif /* GLX_MESA_allocate_memory */
++
++
++/*
++ * ARB ?. GLX_ARB_render_texture
++ * XXX This was never finalized!
++ */
++#ifndef GLX_ARB_render_texture
++#define GLX_ARB_render_texture 1
++
++extern Bool glXBindTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer);
++extern Bool glXReleaseTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer);
++extern Bool glXDrawableAttribARB(Display *dpy, GLXDrawable draw, const int *attribList);
++
++#endif /* GLX_ARB_render_texture */
++
++
++#ifndef GLX_ATI_render_texture
++#define GLX_ATI_render_texture 1
++
++extern void glXBindTexImageATI(Display *dpy, GLXPbuffer pbuffer, int buffer);
++extern void glXReleaseTexImageATI(Display *dpy, GLXPbuffer pbuffer, int buffer);
++extern void glXDrawableAttribATI(Display *dpy, GLXDrawable draw, const int *attribList);
++
++#endif /* GLX_ATI_render_texture */
++
++
++/*
++ * Remove this when glxext.h is updated.
++ */
++#ifndef GLX_NV_float_buffer
++#define GLX_NV_float_buffer 1
++
++#define GLX_FLOAT_COMPONENTS_NV 0x20B0
++
++#endif /* GLX_NV_float_buffer */
++
++
++
++/*
++ * #?. GLX_MESA_swap_frame_usage
++ */
++#ifndef GLX_MESA_swap_frame_usage
++#define GLX_MESA_swap_frame_usage 1
++
++extern int glXGetFrameUsageMESA(Display *dpy, GLXDrawable drawable, float *usage);
++extern int glXBeginFrameTrackingMESA(Display *dpy, GLXDrawable drawable);
++extern int glXEndFrameTrackingMESA(Display *dpy, GLXDrawable drawable);
++extern int glXQueryFrameTrackingMESA(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage);
++
++typedef int (*PFNGLXGETFRAMEUSAGEMESAPROC) (Display *dpy, GLXDrawable drawable, float *usage);
++typedef int (*PFNGLXBEGINFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable);
++typedef int (*PFNGLXENDFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable);
++typedef int (*PFNGLXQUERYFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage);
++
++#endif /* GLX_MESA_swap_frame_usage */
++
++
++
++/*
++ * #?. GLX_MESA_swap_control
++ */
++#ifndef GLX_MESA_swap_control
++#define GLX_MESA_swap_control 1
++
++extern int glXSwapIntervalMESA(unsigned int interval);
++extern int glXGetSwapIntervalMESA(void);
++
++typedef int (*PFNGLXSWAPINTERVALMESAPROC)(unsigned int interval);
++typedef int (*PFNGLXGETSWAPINTERVALMESAPROC)(void);
++
++#endif /* GLX_MESA_swap_control */
++
++
++
++/*
++ * #?. GLX_EXT_texture_from_pixmap
++ * XXX not finished?
++ */
++#ifndef GLX_EXT_texture_from_pixmap
++#define GLX_EXT_texture_from_pixmap 1
++
++#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0
++#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1
++#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2
++#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3
++#define GLX_Y_INVERTED_EXT 0x20D4
++
++#define GLX_TEXTURE_FORMAT_EXT 0x20D5
++#define GLX_TEXTURE_TARGET_EXT 0x20D6
++#define GLX_MIPMAP_TEXTURE_EXT 0x20D7
++
++#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8
++#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9
++#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA
++
++#define GLX_TEXTURE_1D_BIT_EXT 0x00000001
++#define GLX_TEXTURE_2D_BIT_EXT 0x00000002
++#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004
++
++#define GLX_TEXTURE_1D_EXT 0x20DB
++#define GLX_TEXTURE_2D_EXT 0x20DC
++#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD
++
++#define GLX_FRONT_LEFT_EXT 0x20DE
++#define GLX_FRONT_RIGHT_EXT 0x20DF
++#define GLX_BACK_LEFT_EXT 0x20E0
++#define GLX_BACK_RIGHT_EXT 0x20E1
++#define GLX_FRONT_EXT GLX_FRONT_LEFT_EXT
++#define GLX_BACK_EXT GLX_BACK_LEFT_EXT
++#define GLX_AUX0_EXT 0x20E2
++#define GLX_AUX1_EXT 0x20E3
++#define GLX_AUX2_EXT 0x20E4
++#define GLX_AUX3_EXT 0x20E5
++#define GLX_AUX4_EXT 0x20E6
++#define GLX_AUX5_EXT 0x20E7
++#define GLX_AUX6_EXT 0x20E8
++#define GLX_AUX7_EXT 0x20E9
++#define GLX_AUX8_EXT 0x20EA
++#define GLX_AUX9_EXT 0x20EB
++
++extern void glXBindTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list);
++extern void glXReleaseTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer);
++
++#endif /* GLX_EXT_texture_from_pixmap */
++
++
++
++
++/*** Should these go here, or in another header? */
++/*
++** GLX Events
++*/
++typedef struct {
++ int event_type; /* GLX_DAMAGED or GLX_SAVED */
++ int draw_type; /* GLX_WINDOW or GLX_PBUFFER */
++ unsigned long serial; /* # of last request processed by server */
++ Bool send_event; /* true if this came for SendEvent request */
++ Display *display; /* display the event was read from */
++ GLXDrawable drawable; /* XID of Drawable */
++ unsigned int buffer_mask; /* mask indicating which buffers are affected */
++ unsigned int aux_buffer; /* which aux buffer was affected */
++ int x, y;
++ int width, height;
++ int count; /* if nonzero, at least this many more */
++} GLXPbufferClobberEvent;
++
++typedef union __GLXEvent {
++ GLXPbufferClobberEvent glxpbufferclobber;
++ long pad[24];
++} GLXEvent;
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif
+Index: qemu-0.13.0/target-i386/mesa_glxext.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-i386/mesa_glxext.h 2011-01-17 16:42:36.000000000 +0800
+@@ -0,0 +1,785 @@
++#ifndef __glxext_h_
++#define __glxext_h_
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++/*
++** Copyright (c) 2007 The Khronos Group Inc.
++**
++** Permission is hereby granted, free of charge, to any person obtaining a
++** copy of this software and/or associated documentation files (the
++** "Materials"), to deal in the Materials without restriction, including
++** without limitation the rights to use, copy, modify, merge, publish,
++** distribute, sublicense, and/or sell copies of the Materials, and to
++** permit persons to whom the Materials are 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 Materials.
++**
++** THE MATERIALS ARE 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
++** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
++** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
++** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
++*/
++
++#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
++#define WIN32_LEAN_AND_MEAN 1
++#include <windows.h>
++#endif
++
++#ifndef APIENTRY
++#define APIENTRY
++#endif
++#ifndef APIENTRYP
++#define APIENTRYP APIENTRY *
++#endif
++#ifndef GLAPI
++#define GLAPI extern
++#endif
++
++/*************************************************************/
++
++/* Header file version number, required by OpenGL ABI for Linux */
++/* glxext.h last updated 2007/04/21 */
++/* Current version at http://www.opengl.org/registry/ */
++#define GLX_GLXEXT_VERSION 19
++
++#ifndef GLX_VERSION_1_3
++#define GLX_WINDOW_BIT 0x00000001
++#define GLX_PIXMAP_BIT 0x00000002
++#define GLX_PBUFFER_BIT 0x00000004
++#define GLX_RGBA_BIT 0x00000001
++#define GLX_COLOR_INDEX_BIT 0x00000002
++#define GLX_PBUFFER_CLOBBER_MASK 0x08000000
++#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001
++#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002
++#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004
++#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008
++#define GLX_AUX_BUFFERS_BIT 0x00000010
++#define GLX_DEPTH_BUFFER_BIT 0x00000020
++#define GLX_STENCIL_BUFFER_BIT 0x00000040
++#define GLX_ACCUM_BUFFER_BIT 0x00000080
++#define GLX_CONFIG_CAVEAT 0x20
++#define GLX_X_VISUAL_TYPE 0x22
++#define GLX_TRANSPARENT_TYPE 0x23
++#define GLX_TRANSPARENT_INDEX_VALUE 0x24
++#define GLX_TRANSPARENT_RED_VALUE 0x25
++#define GLX_TRANSPARENT_GREEN_VALUE 0x26
++#define GLX_TRANSPARENT_BLUE_VALUE 0x27
++#define GLX_TRANSPARENT_ALPHA_VALUE 0x28
++#define GLX_DONT_CARE 0xFFFFFFFF
++#define GLX_NONE 0x8000
++#define GLX_SLOW_CONFIG 0x8001
++#define GLX_TRUE_COLOR 0x8002
++#define GLX_DIRECT_COLOR 0x8003
++#define GLX_PSEUDO_COLOR 0x8004
++#define GLX_STATIC_COLOR 0x8005
++#define GLX_GRAY_SCALE 0x8006
++#define GLX_STATIC_GRAY 0x8007
++#define GLX_TRANSPARENT_RGB 0x8008
++#define GLX_TRANSPARENT_INDEX 0x8009
++#define GLX_VISUAL_ID 0x800B
++#define GLX_SCREEN 0x800C
++#define GLX_NON_CONFORMANT_CONFIG 0x800D
++#define GLX_DRAWABLE_TYPE 0x8010
++#define GLX_RENDER_TYPE 0x8011
++#define GLX_X_RENDERABLE 0x8012
++#define GLX_FBCONFIG_ID 0x8013
++#define GLX_RGBA_TYPE 0x8014
++#define GLX_COLOR_INDEX_TYPE 0x8015
++#define GLX_MAX_PBUFFER_WIDTH 0x8016
++#define GLX_MAX_PBUFFER_HEIGHT 0x8017
++#define GLX_MAX_PBUFFER_PIXELS 0x8018
++#define GLX_PRESERVED_CONTENTS 0x801B
++#define GLX_LARGEST_PBUFFER 0x801C
++#define GLX_WIDTH 0x801D
++#define GLX_HEIGHT 0x801E
++#define GLX_EVENT_MASK 0x801F
++#define GLX_DAMAGED 0x8020
++#define GLX_SAVED 0x8021
++#define GLX_WINDOW 0x8022
++#define GLX_PBUFFER 0x8023
++#define GLX_PBUFFER_HEIGHT 0x8040
++#define GLX_PBUFFER_WIDTH 0x8041
++#endif
++
++#ifndef GLX_VERSION_1_4
++#define GLX_SAMPLE_BUFFERS 100000
++#define GLX_SAMPLES 100001
++#endif
++
++#ifndef GLX_ARB_get_proc_address
++#endif
++
++#ifndef GLX_ARB_multisample
++#define GLX_SAMPLE_BUFFERS_ARB 100000
++#define GLX_SAMPLES_ARB 100001
++#endif
++
++#ifndef GLX_ARB_fbconfig_float
++#define GLX_RGBA_FLOAT_TYPE_ARB 0x20B9
++#define GLX_RGBA_FLOAT_BIT_ARB 0x00000004
++#endif
++
++#ifndef GLX_SGIS_multisample
++#define GLX_SAMPLE_BUFFERS_SGIS 100000
++#define GLX_SAMPLES_SGIS 100001
++#endif
++
++#ifndef GLX_EXT_visual_info
++#define GLX_X_VISUAL_TYPE_EXT 0x22
++#define GLX_TRANSPARENT_TYPE_EXT 0x23
++#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24
++#define GLX_TRANSPARENT_RED_VALUE_EXT 0x25
++#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26
++#define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27
++#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28
++#define GLX_NONE_EXT 0x8000
++#define GLX_TRUE_COLOR_EXT 0x8002
++#define GLX_DIRECT_COLOR_EXT 0x8003
++#define GLX_PSEUDO_COLOR_EXT 0x8004
++#define GLX_STATIC_COLOR_EXT 0x8005
++#define GLX_GRAY_SCALE_EXT 0x8006
++#define GLX_STATIC_GRAY_EXT 0x8007
++#define GLX_TRANSPARENT_RGB_EXT 0x8008
++#define GLX_TRANSPARENT_INDEX_EXT 0x8009
++#endif
++
++#ifndef GLX_SGI_swap_control
++#endif
++
++#ifndef GLX_SGI_video_sync
++#endif
++
++#ifndef GLX_SGI_make_current_read
++#endif
++
++#ifndef GLX_SGIX_video_source
++#endif
++
++#ifndef GLX_EXT_visual_rating
++#define GLX_VISUAL_CAVEAT_EXT 0x20
++#define GLX_SLOW_VISUAL_EXT 0x8001
++#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D
++/* reuse GLX_NONE_EXT */
++#endif
++
++#ifndef GLX_EXT_import_context
++#define GLX_SHARE_CONTEXT_EXT 0x800A
++#define GLX_VISUAL_ID_EXT 0x800B
++#define GLX_SCREEN_EXT 0x800C
++#endif
++
++#ifndef GLX_SGIX_fbconfig
++#define GLX_WINDOW_BIT_SGIX 0x00000001
++#define GLX_PIXMAP_BIT_SGIX 0x00000002
++#define GLX_RGBA_BIT_SGIX 0x00000001
++#define GLX_COLOR_INDEX_BIT_SGIX 0x00000002
++#define GLX_DRAWABLE_TYPE_SGIX 0x8010
++#define GLX_RENDER_TYPE_SGIX 0x8011
++#define GLX_X_RENDERABLE_SGIX 0x8012
++#define GLX_FBCONFIG_ID_SGIX 0x8013
++#define GLX_RGBA_TYPE_SGIX 0x8014
++#define GLX_COLOR_INDEX_TYPE_SGIX 0x8015
++/* reuse GLX_SCREEN_EXT */
++#endif
++
++#ifndef GLX_SGIX_pbuffer
++#define GLX_PBUFFER_BIT_SGIX 0x00000004
++#define GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000
++#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001
++#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002
++#define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004
++#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008
++#define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010
++#define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020
++#define GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040
++#define GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080
++#define GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100
++#define GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016
++#define GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017
++#define GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018
++#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019
++#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A
++#define GLX_PRESERVED_CONTENTS_SGIX 0x801B
++#define GLX_LARGEST_PBUFFER_SGIX 0x801C
++#define GLX_WIDTH_SGIX 0x801D
++#define GLX_HEIGHT_SGIX 0x801E
++#define GLX_EVENT_MASK_SGIX 0x801F
++#define GLX_DAMAGED_SGIX 0x8020
++#define GLX_SAVED_SGIX 0x8021
++#define GLX_WINDOW_SGIX 0x8022
++#define GLX_PBUFFER_SGIX 0x8023
++#endif
++
++#ifndef GLX_SGI_cushion
++#endif
++
++#ifndef GLX_SGIX_video_resize
++#define GLX_SYNC_FRAME_SGIX 0x00000000
++#define GLX_SYNC_SWAP_SGIX 0x00000001
++#endif
++
++#ifndef GLX_SGIX_dmbuffer
++#define GLX_DIGITAL_MEDIA_PBUFFER_SGIX 0x8024
++#endif
++
++#ifndef GLX_SGIX_swap_group
++#endif
++
++#ifndef GLX_SGIX_swap_barrier
++#endif
++
++#ifndef GLX_SGIS_blended_overlay
++#define GLX_BLENDED_RGBA_SGIS 0x8025
++#endif
++
++#ifndef GLX_SGIS_shared_multisample
++#define GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026
++#define GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027
++#endif
++
++#ifndef GLX_SUN_get_transparent_index
++#endif
++
++#ifndef GLX_3DFX_multisample
++#define GLX_SAMPLE_BUFFERS_3DFX 0x8050
++#define GLX_SAMPLES_3DFX 0x8051
++#endif
++
++#ifndef GLX_MESA_copy_sub_buffer
++#endif
++
++#ifndef GLX_MESA_pixmap_colormap
++#endif
++
++#ifndef GLX_MESA_release_buffers
++#endif
++
++#ifndef GLX_MESA_set_3dfx_mode
++#define GLX_3DFX_WINDOW_MODE_MESA 0x1
++#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2
++#endif
++
++#ifndef GLX_SGIX_visual_select_group
++#define GLX_VISUAL_SELECT_GROUP_SGIX 0x8028
++#endif
++
++#ifndef GLX_OML_swap_method
++#define GLX_SWAP_METHOD_OML 0x8060
++#define GLX_SWAP_EXCHANGE_OML 0x8061
++#define GLX_SWAP_COPY_OML 0x8062
++#define GLX_SWAP_UNDEFINED_OML 0x8063
++#endif
++
++#ifndef GLX_OML_sync_control
++#endif
++
++#ifndef GLX_NV_float_buffer
++#define GLX_FLOAT_COMPONENTS_NV 0x20B0
++#endif
++
++#ifndef GLX_SGIX_hyperpipe
++#define GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX 80
++#define GLX_BAD_HYPERPIPE_CONFIG_SGIX 91
++#define GLX_BAD_HYPERPIPE_SGIX 92
++#define GLX_HYPERPIPE_DISPLAY_PIPE_SGIX 0x00000001
++#define GLX_HYPERPIPE_RENDER_PIPE_SGIX 0x00000002
++#define GLX_PIPE_RECT_SGIX 0x00000001
++#define GLX_PIPE_RECT_LIMITS_SGIX 0x00000002
++#define GLX_HYPERPIPE_STEREO_SGIX 0x00000003
++#define GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX 0x00000004
++#define GLX_HYPERPIPE_ID_SGIX 0x8030
++#endif
++
++#ifndef GLX_MESA_agp_offset
++#endif
++
++#ifndef GLX_EXT_fbconfig_packed_float
++#define GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1
++#define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008
++#endif
++
++#ifndef GLX_EXT_framebuffer_sRGB
++#define GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2
++#endif
++
++#ifndef GLX_EXT_texture_from_pixmap
++#define GLX_TEXTURE_1D_BIT_EXT 0x00000001
++#define GLX_TEXTURE_2D_BIT_EXT 0x00000002
++#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004
++#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0
++#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1
++#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2
++#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3
++#define GLX_Y_INVERTED_EXT 0x20D4
++#define GLX_TEXTURE_FORMAT_EXT 0x20D5
++#define GLX_TEXTURE_TARGET_EXT 0x20D6
++#define GLX_MIPMAP_TEXTURE_EXT 0x20D7
++#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8
++#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9
++#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA
++#define GLX_TEXTURE_1D_EXT 0x20DB
++#define GLX_TEXTURE_2D_EXT 0x20DC
++#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD
++#define GLX_FRONT_LEFT_EXT 0x20DE
++#define GLX_FRONT_RIGHT_EXT 0x20DF
++#define GLX_BACK_LEFT_EXT 0x20E0
++#define GLX_BACK_RIGHT_EXT 0x20E1
++#define GLX_FRONT_EXT GLX_FRONT_LEFT_EXT
++#define GLX_BACK_EXT GLX_BACK_LEFT_EXT
++#define GLX_AUX0_EXT 0x20E2
++#define GLX_AUX1_EXT 0x20E3
++#define GLX_AUX2_EXT 0x20E4
++#define GLX_AUX3_EXT 0x20E5
++#define GLX_AUX4_EXT 0x20E6
++#define GLX_AUX5_EXT 0x20E7
++#define GLX_AUX6_EXT 0x20E8
++#define GLX_AUX7_EXT 0x20E9
++#define GLX_AUX8_EXT 0x20EA
++#define GLX_AUX9_EXT 0x20EB
++#endif
++
++
++/*************************************************************/
++
++#ifndef GLX_ARB_get_proc_address
++typedef void (*__GLXextFuncPtr)(void);
++#endif
++
++#ifndef GLX_SGIX_video_source
++typedef XID GLXVideoSourceSGIX;
++#endif
++
++#ifndef GLX_SGIX_fbconfig
++typedef XID GLXFBConfigIDSGIX;
++typedef struct __GLXFBConfigRec *GLXFBConfigSGIX;
++#endif
++
++#ifndef GLX_SGIX_pbuffer
++typedef XID GLXPbufferSGIX;
++typedef struct {
++ int type;
++ unsigned long serial; /* # of last request processed by server */
++ Bool send_event; /* true if this came for SendEvent request */
++ Display *display; /* display the event was read from */
++ GLXDrawable drawable; /* i.d. of Drawable */
++ int event_type; /* GLX_DAMAGED_SGIX or GLX_SAVED_SGIX */
++ int draw_type; /* GLX_WINDOW_SGIX or GLX_PBUFFER_SGIX */
++ unsigned int mask; /* mask indicating which buffers are affected*/
++ int x, y;
++ int width, height;
++ int count; /* if nonzero, at least this many more */
++} GLXBufferClobberEventSGIX;
++#endif
++
++#ifndef GLEXT_64_TYPES_DEFINED
++/* This code block is duplicated in glxext.h, so must be protected */
++#define GLEXT_64_TYPES_DEFINED
++/* Define int32_t, int64_t, and uint64_t types for UST/MSC */
++/* (as used in the GLX_OML_sync_control extension). */
++#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
++#include <inttypes.h>
++#elif defined(__sun__) || defined(__digital__)
++#include <inttypes.h>
++#if defined(__STDC__)
++#if defined(__arch64__)
++typedef long int int64_t;
++typedef unsigned long int uint64_t;
++#else
++typedef long long int int64_t;
++typedef unsigned long long int uint64_t;
++#endif /* __arch64__ */
++#endif /* __STDC__ */
++#elif defined( __VMS )
++#include <inttypes.h>
++#elif defined(__SCO__) || defined(__USLC__)
++#include <stdint.h>
++#elif defined(__UNIXOS2__) || defined(__SOL64__)
++typedef long int int32_t;
++typedef long long int int64_t;
++typedef unsigned long long int uint64_t;
++#elif defined(_WIN32) && defined(__GNUC__)
++#include <stdint.h>
++#elif defined(_WIN32)
++typedef __int32 int32_t;
++typedef __int64 int64_t;
++typedef unsigned __int64 uint64_t;
++#else
++#include <inttypes.h> /* Fallback option */
++#endif
++#endif
++
++#ifndef GLX_VERSION_1_3
++#define GLX_VERSION_1_3 1
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern GLXFBConfig * glXGetFBConfigs (Display *, int, int *);
++extern GLXFBConfig * glXChooseFBConfig (Display *, int, const int *, int *);
++extern int glXGetFBConfigAttrib (Display *, GLXFBConfig, int, int *);
++extern XVisualInfo * glXGetVisualFromFBConfig (Display *, GLXFBConfig);
++extern GLXWindow glXCreateWindow (Display *, GLXFBConfig, Window, const int *);
++extern void glXDestroyWindow (Display *, GLXWindow);
++extern GLXPixmap glXCreatePixmap (Display *, GLXFBConfig, Pixmap, const int *);
++extern void glXDestroyPixmap (Display *, GLXPixmap);
++extern GLXPbuffer glXCreatePbuffer (Display *, GLXFBConfig, const int *);
++extern void glXDestroyPbuffer (Display *, GLXPbuffer);
++extern void glXQueryDrawable (Display *, GLXDrawable, int, unsigned int *);
++extern GLXContext glXCreateNewContext (Display *, GLXFBConfig, int, GLXContext, Bool);
++extern Bool glXMakeContextCurrent (Display *, GLXDrawable, GLXDrawable, GLXContext);
++extern GLXDrawable glXGetCurrentReadDrawable (void);
++extern Display * glXGetCurrentDisplay (void);
++extern int glXQueryContext (Display *, GLXContext, int, int *);
++extern void glXSelectEvent (Display *, GLXDrawable, unsigned long);
++extern void glXGetSelectedEvent (Display *, GLXDrawable, unsigned long *);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef GLXFBConfig * ( * PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements);
++typedef GLXFBConfig * ( * PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements);
++typedef int ( * PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value);
++typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config);
++typedef GLXWindow ( * PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list);
++typedef void ( * PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win);
++typedef GLXPixmap ( * PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list);
++typedef void ( * PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap);
++typedef GLXPbuffer ( * PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list);
++typedef void ( * PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf);
++typedef void ( * PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value);
++typedef GLXContext ( * PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
++typedef Bool ( * PFNGLXMAKECONTEXTCURRENTPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
++typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLEPROC) (void);
++typedef Display * ( * PFNGLXGETCURRENTDISPLAYPROC) (void);
++typedef int ( * PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value);
++typedef void ( * PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask);
++typedef void ( * PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask);
++#endif
++
++#ifndef GLX_VERSION_1_4
++#define GLX_VERSION_1_4 1
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern __GLXextFuncPtr glXGetProcAddress (const GLubyte *);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName);
++#endif
++
++#ifndef GLX_ARB_get_proc_address
++#define GLX_ARB_get_proc_address 1
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSARBPROC) (const GLubyte *procName);
++#endif
++
++#ifndef GLX_ARB_multisample
++#define GLX_ARB_multisample 1
++#endif
++
++#ifndef GLX_ARB_fbconfig_float
++#define GLX_ARB_fbconfig_float 1
++#endif
++
++#ifndef GLX_SGIS_multisample
++#define GLX_SGIS_multisample 1
++#endif
++
++#ifndef GLX_EXT_visual_info
++#define GLX_EXT_visual_info 1
++#endif
++
++#ifndef GLX_SGI_swap_control
++#define GLX_SGI_swap_control 1
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern int glXSwapIntervalSGI (int);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef int ( * PFNGLXSWAPINTERVALSGIPROC) (int interval);
++#endif
++
++#ifndef GLX_SGI_video_sync
++#define GLX_SGI_video_sync 1
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern int glXGetVideoSyncSGI (unsigned int *);
++extern int glXWaitVideoSyncSGI (int, int, unsigned int *);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef int ( * PFNGLXGETVIDEOSYNCSGIPROC) (unsigned int *count);
++typedef int ( * PFNGLXWAITVIDEOSYNCSGIPROC) (int divisor, int remainder, unsigned int *count);
++#endif
++
++#ifndef GLX_SGI_make_current_read
++#define GLX_SGI_make_current_read 1
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern Bool glXMakeCurrentReadSGI (Display *, GLXDrawable, GLXDrawable, GLXContext);
++extern GLXDrawable glXGetCurrentReadDrawableSGI (void);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef Bool ( * PFNGLXMAKECURRENTREADSGIPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
++typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLESGIPROC) (void);
++#endif
++
++#ifndef GLX_SGIX_video_source
++#define GLX_SGIX_video_source 1
++#ifdef _VL_H
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern GLXVideoSourceSGIX glXCreateGLXVideoSourceSGIX (Display *, int, VLServer, VLPath, int, VLNode);
++extern void glXDestroyGLXVideoSourceSGIX (Display *, GLXVideoSourceSGIX);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef GLXVideoSourceSGIX ( * PFNGLXCREATEGLXVIDEOSOURCESGIXPROC) (Display *display, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode);
++typedef void ( * PFNGLXDESTROYGLXVIDEOSOURCESGIXPROC) (Display *dpy, GLXVideoSourceSGIX glxvideosource);
++#endif /* _VL_H */
++#endif
++
++#ifndef GLX_EXT_visual_rating
++#define GLX_EXT_visual_rating 1
++#endif
++
++#ifndef GLX_EXT_import_context
++#define GLX_EXT_import_context 1
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern Display * glXGetCurrentDisplayEXT (void);
++extern int glXQueryContextInfoEXT (Display *, GLXContext, int, int *);
++extern GLXContextID glXGetContextIDEXT (const GLXContext);
++extern GLXContext glXImportContextEXT (Display *, GLXContextID);
++extern void glXFreeContextEXT (Display *, GLXContext);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef Display * ( * PFNGLXGETCURRENTDISPLAYEXTPROC) (void);
++typedef int ( * PFNGLXQUERYCONTEXTINFOEXTPROC) (Display *dpy, GLXContext context, int attribute, int *value);
++typedef GLXContextID ( * PFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context);
++typedef GLXContext ( * PFNGLXIMPORTCONTEXTEXTPROC) (Display *dpy, GLXContextID contextID);
++typedef void ( * PFNGLXFREECONTEXTEXTPROC) (Display *dpy, GLXContext context);
++#endif
++
++#ifndef GLX_SGIX_fbconfig
++#define GLX_SGIX_fbconfig 1
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern int glXGetFBConfigAttribSGIX (Display *, GLXFBConfigSGIX, int, int *);
++extern GLXFBConfigSGIX * glXChooseFBConfigSGIX (Display *, int, int *, int *);
++extern GLXPixmap glXCreateGLXPixmapWithConfigSGIX (Display *, GLXFBConfigSGIX, Pixmap);
++extern GLXContext glXCreateContextWithConfigSGIX (Display *, GLXFBConfigSGIX, int, GLXContext, Bool);
++extern XVisualInfo * glXGetVisualFromFBConfigSGIX (Display *, GLXFBConfigSGIX);
++extern GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX (Display *, XVisualInfo *);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef int ( * PFNGLXGETFBCONFIGATTRIBSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int attribute, int *value);
++typedef GLXFBConfigSGIX * ( * PFNGLXCHOOSEFBCONFIGSGIXPROC) (Display *dpy, int screen, int *attrib_list, int *nelements);
++typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, Pixmap pixmap);
++typedef GLXContext ( * PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct);
++typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config);
++typedef GLXFBConfigSGIX ( * PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) (Display *dpy, XVisualInfo *vis);
++#endif
++
++#ifndef GLX_SGIX_pbuffer
++#define GLX_SGIX_pbuffer 1
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern GLXPbufferSGIX glXCreateGLXPbufferSGIX (Display *, GLXFBConfigSGIX, unsigned int, unsigned int, int *);
++extern void glXDestroyGLXPbufferSGIX (Display *, GLXPbufferSGIX);
++extern int glXQueryGLXPbufferSGIX (Display *, GLXPbufferSGIX, int, unsigned int *);
++extern void glXSelectEventSGIX (Display *, GLXDrawable, unsigned long);
++extern void glXGetSelectedEventSGIX (Display *, GLXDrawable, unsigned long *);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef GLXPbufferSGIX ( * PFNGLXCREATEGLXPBUFFERSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list);
++typedef void ( * PFNGLXDESTROYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf);
++typedef int ( * PFNGLXQUERYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int *value);
++typedef void ( * PFNGLXSELECTEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long mask);
++typedef void ( * PFNGLXGETSELECTEDEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long *mask);
++#endif
++
++#ifndef GLX_SGI_cushion
++#define GLX_SGI_cushion 1
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern void glXCushionSGI (Display *, Window, float);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef void ( * PFNGLXCUSHIONSGIPROC) (Display *dpy, Window window, float cushion);
++#endif
++
++#ifndef GLX_SGIX_video_resize
++#define GLX_SGIX_video_resize 1
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern int glXBindChannelToWindowSGIX (Display *, int, int, Window);
++extern int glXChannelRectSGIX (Display *, int, int, int, int, int, int);
++extern int glXQueryChannelRectSGIX (Display *, int, int, int *, int *, int *, int *);
++extern int glXQueryChannelDeltasSGIX (Display *, int, int, int *, int *, int *, int *);
++extern int glXChannelRectSyncSGIX (Display *, int, int, GLenum);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef int ( * PFNGLXBINDCHANNELTOWINDOWSGIXPROC) (Display *display, int screen, int channel, Window window);
++typedef int ( * PFNGLXCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int x, int y, int w, int h);
++typedef int ( * PFNGLXQUERYCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int *dx, int *dy, int *dw, int *dh);
++typedef int ( * PFNGLXQUERYCHANNELDELTASSGIXPROC) (Display *display, int screen, int channel, int *x, int *y, int *w, int *h);
++typedef int ( * PFNGLXCHANNELRECTSYNCSGIXPROC) (Display *display, int screen, int channel, GLenum synctype);
++#endif
++
++#ifndef GLX_SGIX_dmbuffer
++#define GLX_SGIX_dmbuffer 1
++#ifdef _DM_BUFFER_H_
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern Bool glXAssociateDMPbufferSGIX (Display *, GLXPbufferSGIX, DMparams *, DMbuffer);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef Bool ( * PFNGLXASSOCIATEDMPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuffer, DMparams *params, DMbuffer dmbuffer);
++#endif /* _DM_BUFFER_H_ */
++#endif
++
++#ifndef GLX_SGIX_swap_group
++#define GLX_SGIX_swap_group 1
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern void glXJoinSwapGroupSGIX (Display *, GLXDrawable, GLXDrawable);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef void ( * PFNGLXJOINSWAPGROUPSGIXPROC) (Display *dpy, GLXDrawable drawable, GLXDrawable member);
++#endif
++
++#ifndef GLX_SGIX_swap_barrier
++#define GLX_SGIX_swap_barrier 1
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern void glXBindSwapBarrierSGIX (Display *, GLXDrawable, int);
++extern Bool glXQueryMaxSwapBarriersSGIX (Display *, int, int *);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef void ( * PFNGLXBINDSWAPBARRIERSGIXPROC) (Display *dpy, GLXDrawable drawable, int barrier);
++typedef Bool ( * PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) (Display *dpy, int screen, int *max);
++#endif
++
++#ifndef GLX_SUN_get_transparent_index
++#define GLX_SUN_get_transparent_index 1
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern Status glXGetTransparentIndexSUN (Display *, Window, Window, long *);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef Status ( * PFNGLXGETTRANSPARENTINDEXSUNPROC) (Display *dpy, Window overlay, Window underlay, long *pTransparentIndex);
++#endif
++
++#ifndef GLX_MESA_copy_sub_buffer
++#define GLX_MESA_copy_sub_buffer 1
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern void glXCopySubBufferMESA (Display *, GLXDrawable, int, int, int, int);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef void ( * PFNGLXCOPYSUBBUFFERMESAPROC) (Display *dpy, GLXDrawable drawable, int x, int y, int width, int height);
++#endif
++
++#ifndef GLX_MESA_pixmap_colormap
++#define GLX_MESA_pixmap_colormap 1
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern GLXPixmap glXCreateGLXPixmapMESA (Display *, XVisualInfo *, Pixmap, Colormap);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPMESAPROC) (Display *dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap);
++#endif
++
++#ifndef GLX_MESA_release_buffers
++#define GLX_MESA_release_buffers 1
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern Bool glXReleaseBuffersMESA (Display *, GLXDrawable);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef Bool ( * PFNGLXRELEASEBUFFERSMESAPROC) (Display *dpy, GLXDrawable drawable);
++#endif
++
++#ifndef GLX_MESA_set_3dfx_mode
++#define GLX_MESA_set_3dfx_mode 1
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern Bool glXSet3DfxModeMESA (int);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef Bool ( * PFNGLXSET3DFXMODEMESAPROC) (int mode);
++#endif
++
++#ifndef GLX_SGIX_visual_select_group
++#define GLX_SGIX_visual_select_group 1
++#endif
++
++#ifndef GLX_OML_swap_method
++#define GLX_OML_swap_method 1
++#endif
++
++#ifndef GLX_OML_sync_control
++#define GLX_OML_sync_control 1
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern Bool glXGetSyncValuesOML (Display *, GLXDrawable, int64_t *, int64_t *, int64_t *);
++extern Bool glXGetMscRateOML (Display *, GLXDrawable, int32_t *, int32_t *);
++extern int64_t glXSwapBuffersMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t);
++extern Bool glXWaitForMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t, int64_t *, int64_t *, int64_t *);
++extern Bool glXWaitForSbcOML (Display *, GLXDrawable, int64_t, int64_t *, int64_t *, int64_t *);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef Bool ( * PFNGLXGETSYNCVALUESOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t *ust, int64_t *msc, int64_t *sbc);
++typedef Bool ( * PFNGLXGETMSCRATEOMLPROC) (Display *dpy, GLXDrawable drawable, int32_t *numerator, int32_t *denominator);
++typedef int64_t ( * PFNGLXSWAPBUFFERSMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder);
++typedef Bool ( * PFNGLXWAITFORMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc);
++typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_sbc, int64_t *ust, int64_t *msc, int64_t *sbc);
++#endif
++
++#ifndef GLX_NV_float_buffer
++#define GLX_NV_float_buffer 1
++#endif
++
++#ifndef GLX_SGIX_hyperpipe
++#define GLX_SGIX_hyperpipe 1
++
++typedef struct {
++ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
++ int networkId;
++} GLXHyperpipeNetworkSGIX;
++
++typedef struct {
++ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
++ int channel;
++ unsigned int
++ participationType;
++ int timeSlice;
++} GLXHyperpipeConfigSGIX;
++
++typedef struct {
++ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
++ int srcXOrigin, srcYOrigin, srcWidth, srcHeight;
++ int destXOrigin, destYOrigin, destWidth, destHeight;
++} GLXPipeRect;
++
++typedef struct {
++ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
++ int XOrigin, YOrigin, maxHeight, maxWidth;
++} GLXPipeRectLimits;
++
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern GLXHyperpipeNetworkSGIX * glXQueryHyperpipeNetworkSGIX (Display *, int *);
++extern int glXHyperpipeConfigSGIX (Display *, int, int, GLXHyperpipeConfigSGIX *, int *);
++extern GLXHyperpipeConfigSGIX * glXQueryHyperpipeConfigSGIX (Display *, int, int *);
++extern int glXDestroyHyperpipeConfigSGIX (Display *, int);
++extern int glXBindHyperpipeSGIX (Display *, int);
++extern int glXQueryHyperpipeBestAttribSGIX (Display *, int, int, int, void *, void *);
++extern int glXHyperpipeAttribSGIX (Display *, int, int, int, void *);
++extern int glXQueryHyperpipeAttribSGIX (Display *, int, int, int, void *);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef GLXHyperpipeNetworkSGIX * ( * PFNGLXQUERYHYPERPIPENETWORKSGIXPROC) (Display *dpy, int *npipes);
++typedef int ( * PFNGLXHYPERPIPECONFIGSGIXPROC) (Display *dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX *cfg, int *hpId);
++typedef GLXHyperpipeConfigSGIX * ( * PFNGLXQUERYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId, int *npipes);
++typedef int ( * PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId);
++typedef int ( * PFNGLXBINDHYPERPIPESGIXPROC) (Display *dpy, int hpId);
++typedef int ( * PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList, void *returnAttribList);
++typedef int ( * PFNGLXHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList);
++typedef int ( * PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *returnAttribList);
++#endif
++
++#ifndef GLX_MESA_agp_offset
++#define GLX_MESA_agp_offset 1
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern unsigned int glXGetAGPOffsetMESA (const void *);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef unsigned int ( * PFNGLXGETAGPOFFSETMESAPROC) (const void *pointer);
++#endif
++
++#ifndef GLX_EXT_fbconfig_packed_float
++#define GLX_EXT_fbconfig_packed_float 1
++#endif
++
++#ifndef GLX_EXT_framebuffer_sRGB
++#define GLX_EXT_framebuffer_sRGB 1
++#endif
++
++#ifndef GLX_EXT_texture_from_pixmap
++#define GLX_EXT_texture_from_pixmap 1
++#ifdef GLX_GLXEXT_PROTOTYPES
++extern void glXBindTexImageEXT (Display *, GLXDrawable, int, const int *);
++extern void glXReleaseTexImageEXT (Display *, GLXDrawable, int);
++#endif /* GLX_GLXEXT_PROTOTYPES */
++typedef void ( * PFNGLXBINDTEXIMAGEEXTPROC) (Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list);
++typedef void ( * PFNGLXRELEASETEXIMAGEEXTPROC) (Display *dpy, GLXDrawable drawable, int buffer);
++#endif
++
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif
+Index: qemu-0.13.0/target-i386/mesa_mipmap.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-i386/mesa_mipmap.c 2011-01-17 16:42:36.000000000 +0800
+@@ -0,0 +1,824 @@
++
++/*
++ * Mesa 3-D graphics library
++ * Version: 3.4
++ * Copyright (C) 1995-2000 Brian Paul
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Library General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library 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
++ * Library General Public License for more details.
++ *
++ * You should have received a copy of the GNU Library General Public
++ * License along with this library; if not, write to the Free
++ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++
++#ifdef PC_HEADER
++#include "all.h"
++#else
++#include <assert.h>
++#include <math.h>
++#include <stdio.h>
++#include <stdlib.h>
++//#include "gluP.h"
++#endif
++
++
++/*
++ * Compute ceiling of integer quotient of A divided by B:
++ */
++#define CEILING( A, B ) ( (A) % (B) == 0 ? (A)/(B) : (A)/(B)+1 )
++
++
++
++#ifdef EPSILON
++#undef EPSILON
++#endif
++#define EPSILON 0.001
++
++
++/* To work around optimizer bug in MSVC4.1 */
++#if defined(__WIN32__) && !defined(OPENSTEP)
++void
++dummy(GLuint j, GLuint k)
++{
++}
++#else
++#define dummy(J, K)
++#endif
++
++
++static GLint GLAPIENTRY
++mesa_gluScaleImage(GLenum format,
++ GLsizei widthin, GLsizei heightin,
++ GLenum typein, const void *datain,
++ GLsizei widthout, GLsizei heightout,
++ GLenum typeout, void *dataout)
++{
++ GLint components, i, j, k;
++ GLfloat *tempin, *tempout;
++ GLfloat sx, sy;
++ GLint unpackrowlength, unpackalignment, unpackskiprows, unpackskippixels;
++ GLint packrowlength, packalignment, packskiprows, packskippixels;
++ GLint sizein, sizeout;
++ GLint rowstride, rowlen;
++
++
++ /* Determine number of components per pixel */
++ switch (format) {
++ case GL_COLOR_INDEX:
++ case GL_STENCIL_INDEX:
++ case GL_DEPTH_COMPONENT:
++ case GL_RED:
++ case GL_GREEN:
++ case GL_BLUE:
++ case GL_ALPHA:
++ case GL_LUMINANCE:
++ components = 1;
++ break;
++ case GL_LUMINANCE_ALPHA:
++ components = 2;
++ break;
++ case GL_RGB:
++ case GL_BGR:
++ components = 3;
++ break;
++ case GL_RGBA:
++ case GL_BGRA:
++#ifdef GL_EXT_abgr
++ case GL_ABGR_EXT:
++#endif
++ components = 4;
++ break;
++ default:
++ return GLU_INVALID_ENUM;
++ }
++
++ /* Determine bytes per input datum */
++ switch (typein) {
++ case GL_UNSIGNED_BYTE:
++ sizein = sizeof(GLubyte);
++ break;
++ case GL_BYTE:
++ sizein = sizeof(GLbyte);
++ break;
++ case GL_UNSIGNED_SHORT:
++ sizein = sizeof(GLushort);
++ break;
++ case GL_SHORT:
++ sizein = sizeof(GLshort);
++ break;
++ case GL_UNSIGNED_INT:
++ sizein = sizeof(GLuint);
++ break;
++ case GL_INT:
++ sizein = sizeof(GLint);
++ break;
++ case GL_FLOAT:
++ sizein = sizeof(GLfloat);
++ break;
++ case GL_BITMAP:
++ /* not implemented yet */
++ default:
++ return GL_INVALID_ENUM;
++ }
++
++ /* Determine bytes per output datum */
++ switch (typeout) {
++ case GL_UNSIGNED_BYTE:
++ sizeout = sizeof(GLubyte);
++ break;
++ case GL_BYTE:
++ sizeout = sizeof(GLbyte);
++ break;
++ case GL_UNSIGNED_SHORT:
++ sizeout = sizeof(GLushort);
++ break;
++ case GL_SHORT:
++ sizeout = sizeof(GLshort);
++ break;
++ case GL_UNSIGNED_INT:
++ sizeout = sizeof(GLuint);
++ break;
++ case GL_INT:
++ sizeout = sizeof(GLint);
++ break;
++ case GL_FLOAT:
++ sizeout = sizeof(GLfloat);
++ break;
++ case GL_BITMAP:
++ /* not implemented yet */
++ default:
++ return GL_INVALID_ENUM;
++ }
++
++ /* Get glPixelStore state */
++ glGetIntegerv(GL_UNPACK_ROW_LENGTH, &unpackrowlength);
++ glGetIntegerv(GL_UNPACK_ALIGNMENT, &unpackalignment);
++ glGetIntegerv(GL_UNPACK_SKIP_ROWS, &unpackskiprows);
++ glGetIntegerv(GL_UNPACK_SKIP_PIXELS, &unpackskippixels);
++ glGetIntegerv(GL_PACK_ROW_LENGTH, &packrowlength);
++ glGetIntegerv(GL_PACK_ALIGNMENT, &packalignment);
++ glGetIntegerv(GL_PACK_SKIP_ROWS, &packskiprows);
++ glGetIntegerv(GL_PACK_SKIP_PIXELS, &packskippixels);
++
++ /* Allocate storage for intermediate images */
++ tempin = (GLfloat *) malloc(widthin * heightin
++ * components * sizeof(GLfloat));
++ if (!tempin) {
++ return GLU_OUT_OF_MEMORY;
++ }
++ tempout = (GLfloat *) malloc(widthout * heightout
++ * components * sizeof(GLfloat));
++ if (!tempout) {
++ free(tempin);
++ return GLU_OUT_OF_MEMORY;
++ }
++
++
++ /*
++ * Unpack the pixel data and convert to floating point
++ */
++
++ if (unpackrowlength > 0) {
++ rowlen = unpackrowlength;
++ }
++ else {
++ rowlen = widthin;
++ }
++ if (sizein >= unpackalignment) {
++ rowstride = components * rowlen;
++ }
++ else {
++ rowstride = unpackalignment / sizein
++ * CEILING(components * rowlen * sizein, unpackalignment);
++ }
++
++ switch (typein) {
++ case GL_UNSIGNED_BYTE:
++ k = 0;
++ for (i = 0; i < heightin; i++) {
++ GLubyte *ubptr = (GLubyte *) datain
++ + i * rowstride
++ + unpackskiprows * rowstride + unpackskippixels * components;
++ for (j = 0; j < widthin * components; j++) {
++ dummy(j, k);
++ tempin[k++] = (GLfloat) * ubptr++;
++ }
++ }
++ break;
++ case GL_BYTE:
++ k = 0;
++ for (i = 0; i < heightin; i++) {
++ GLbyte *bptr = (GLbyte *) datain
++ + i * rowstride
++ + unpackskiprows * rowstride + unpackskippixels * components;
++ for (j = 0; j < widthin * components; j++) {
++ dummy(j, k);
++ tempin[k++] = (GLfloat) * bptr++;
++ }
++ }
++ break;
++ case GL_UNSIGNED_SHORT:
++ k = 0;
++ for (i = 0; i < heightin; i++) {
++ GLushort *usptr = (GLushort *) datain
++ + i * rowstride
++ + unpackskiprows * rowstride + unpackskippixels * components;
++ for (j = 0; j < widthin * components; j++) {
++ dummy(j, k);
++ tempin[k++] = (GLfloat) * usptr++;
++ }
++ }
++ break;
++ case GL_SHORT:
++ k = 0;
++ for (i = 0; i < heightin; i++) {
++ GLshort *sptr = (GLshort *) datain
++ + i * rowstride
++ + unpackskiprows * rowstride + unpackskippixels * components;
++ for (j = 0; j < widthin * components; j++) {
++ dummy(j, k);
++ tempin[k++] = (GLfloat) * sptr++;
++ }
++ }
++ break;
++ case GL_UNSIGNED_INT:
++ k = 0;
++ for (i = 0; i < heightin; i++) {
++ GLuint *uiptr = (GLuint *) datain
++ + i * rowstride
++ + unpackskiprows * rowstride + unpackskippixels * components;
++ for (j = 0; j < widthin * components; j++) {
++ dummy(j, k);
++ tempin[k++] = (GLfloat) * uiptr++;
++ }
++ }
++ break;
++ case GL_INT:
++ k = 0;
++ for (i = 0; i < heightin; i++) {
++ GLint *iptr = (GLint *) datain
++ + i * rowstride
++ + unpackskiprows * rowstride + unpackskippixels * components;
++ for (j = 0; j < widthin * components; j++) {
++ dummy(j, k);
++ tempin[k++] = (GLfloat) * iptr++;
++ }
++ }
++ break;
++ case GL_FLOAT:
++ k = 0;
++ for (i = 0; i < heightin; i++) {
++ GLfloat *fptr = (GLfloat *) datain
++ + i * rowstride
++ + unpackskiprows * rowstride + unpackskippixels * components;
++ for (j = 0; j < widthin * components; j++) {
++ dummy(j, k);
++ tempin[k++] = *fptr++;
++ }
++ }
++ break;
++ default:
++ return GLU_INVALID_ENUM;
++ }
++
++
++ /*
++ * Scale the image!
++ */
++
++ if (widthout > 1)
++ sx = (GLfloat) (widthin - 1) / (GLfloat) (widthout - 1);
++ else
++ sx = (GLfloat) (widthin - 1);
++ if (heightout > 1)
++ sy = (GLfloat) (heightin - 1) / (GLfloat) (heightout - 1);
++ else
++ sy = (GLfloat) (heightin - 1);
++
++/*#define POINT_SAMPLE*/
++#ifdef POINT_SAMPLE
++ for (i = 0; i < heightout; i++) {
++ GLint ii = i * sy;
++ for (j = 0; j < widthout; j++) {
++ GLint jj = j * sx;
++
++ GLfloat *src = tempin + (ii * widthin + jj) * components;
++ GLfloat *dst = tempout + (i * widthout + j) * components;
++
++ for (k = 0; k < components; k++) {
++ *dst++ = *src++;
++ }
++ }
++ }
++#else
++ if (sx < 1.0 && sy < 1.0) {
++ /* magnify both width and height: use weighted sample of 4 pixels */
++ GLint i0, i1, j0, j1;
++ GLfloat alpha, beta;
++ GLfloat *src00, *src01, *src10, *src11;
++ GLfloat s1, s2;
++ GLfloat *dst;
++
++ for (i = 0; i < heightout; i++) {
++ i0 = i * sy;
++ i1 = i0 + 1;
++ if (i1 >= heightin)
++ i1 = heightin - 1;
++/* i1 = (i+1) * sy - EPSILON;*/
++ alpha = i * sy - i0;
++ for (j = 0; j < widthout; j++) {
++ j0 = j * sx;
++ j1 = j0 + 1;
++ if (j1 >= widthin)
++ j1 = widthin - 1;
++/* j1 = (j+1) * sx - EPSILON; */
++ beta = j * sx - j0;
++
++ /* compute weighted average of pixels in rect (i0,j0)-(i1,j1) */
++ src00 = tempin + (i0 * widthin + j0) * components;
++ src01 = tempin + (i0 * widthin + j1) * components;
++ src10 = tempin + (i1 * widthin + j0) * components;
++ src11 = tempin + (i1 * widthin + j1) * components;
++
++ dst = tempout + (i * widthout + j) * components;
++
++ for (k = 0; k < components; k++) {
++ s1 = *src00++ * (1.0 - beta) + *src01++ * beta;
++ s2 = *src10++ * (1.0 - beta) + *src11++ * beta;
++ *dst++ = s1 * (1.0 - alpha) + s2 * alpha;
++ }
++ }
++ }
++ }
++ else {
++ /* shrink width and/or height: use an unweighted box filter */
++ GLint i0, i1;
++ GLint j0, j1;
++ GLint ii, jj;
++ GLfloat sum, *dst;
++
++ for (i = 0; i < heightout; i++) {
++ i0 = i * sy;
++ i1 = i0 + 1;
++ if (i1 >= heightin)
++ i1 = heightin - 1;
++/* i1 = (i+1) * sy - EPSILON; */
++ for (j = 0; j < widthout; j++) {
++ j0 = j * sx;
++ j1 = j0 + 1;
++ if (j1 >= widthin)
++ j1 = widthin - 1;
++/* j1 = (j+1) * sx - EPSILON; */
++
++ dst = tempout + (i * widthout + j) * components;
++
++ /* compute average of pixels in the rectangle (i0,j0)-(i1,j1) */
++ for (k = 0; k < components; k++) {
++ sum = 0.0;
++ for (ii = i0; ii <= i1; ii++) {
++ for (jj = j0; jj <= j1; jj++) {
++ sum += *(tempin + (ii * widthin + jj) * components + k);
++ }
++ }
++ sum /= (j1 - j0 + 1) * (i1 - i0 + 1);
++ *dst++ = sum;
++ }
++ }
++ }
++ }
++#endif
++
++
++ /*
++ * Return output image
++ */
++
++ if (packrowlength > 0) {
++ rowlen = packrowlength;
++ }
++ else {
++ rowlen = widthout;
++ }
++ if (sizeout >= packalignment) {
++ rowstride = components * rowlen;
++ }
++ else {
++ rowstride = packalignment / sizeout
++ * CEILING(components * rowlen * sizeout, packalignment);
++ }
++
++ switch (typeout) {
++ case GL_UNSIGNED_BYTE:
++ k = 0;
++ for (i = 0; i < heightout; i++) {
++ GLubyte *ubptr = (GLubyte *) dataout
++ + i * rowstride
++ + packskiprows * rowstride + packskippixels * components;
++ for (j = 0; j < widthout * components; j++) {
++ dummy(j, k + i);
++ *ubptr++ = (GLubyte) tempout[k++];
++ }
++ }
++ break;
++ case GL_BYTE:
++ k = 0;
++ for (i = 0; i < heightout; i++) {
++ GLbyte *bptr = (GLbyte *) dataout
++ + i * rowstride
++ + packskiprows * rowstride + packskippixels * components;
++ for (j = 0; j < widthout * components; j++) {
++ dummy(j, k + i);
++ *bptr++ = (GLbyte) tempout[k++];
++ }
++ }
++ break;
++ case GL_UNSIGNED_SHORT:
++ k = 0;
++ for (i = 0; i < heightout; i++) {
++ GLushort *usptr = (GLushort *) dataout
++ + i * rowstride
++ + packskiprows * rowstride + packskippixels * components;
++ for (j = 0; j < widthout * components; j++) {
++ dummy(j, k + i);
++ *usptr++ = (GLushort) tempout[k++];
++ }
++ }
++ break;
++ case GL_SHORT:
++ k = 0;
++ for (i = 0; i < heightout; i++) {
++ GLshort *sptr = (GLshort *) dataout
++ + i * rowstride
++ + packskiprows * rowstride + packskippixels * components;
++ for (j = 0; j < widthout * components; j++) {
++ dummy(j, k + i);
++ *sptr++ = (GLshort) tempout[k++];
++ }
++ }
++ break;
++ case GL_UNSIGNED_INT:
++ k = 0;
++ for (i = 0; i < heightout; i++) {
++ GLuint *uiptr = (GLuint *) dataout
++ + i * rowstride
++ + packskiprows * rowstride + packskippixels * components;
++ for (j = 0; j < widthout * components; j++) {
++ dummy(j, k + i);
++ *uiptr++ = (GLuint) tempout[k++];
++ }
++ }
++ break;
++ case GL_INT:
++ k = 0;
++ for (i = 0; i < heightout; i++) {
++ GLint *iptr = (GLint *) dataout
++ + i * rowstride
++ + packskiprows * rowstride + packskippixels * components;
++ for (j = 0; j < widthout * components; j++) {
++ dummy(j, k + i);
++ *iptr++ = (GLint) tempout[k++];
++ }
++ }
++ break;
++ case GL_FLOAT:
++ k = 0;
++ for (i = 0; i < heightout; i++) {
++ GLfloat *fptr = (GLfloat *) dataout
++ + i * rowstride
++ + packskiprows * rowstride + packskippixels * components;
++ for (j = 0; j < widthout * components; j++) {
++ dummy(j, k + i);
++ *fptr++ = tempout[k++];
++ }
++ }
++ break;
++ default:
++ return GLU_INVALID_ENUM;
++ }
++
++
++ /* free temporary image storage */
++ free(tempin);
++ free(tempout);
++
++ return 0;
++}
++
++
++
++/*
++ * Return the largest k such that 2^k <= n.
++ */
++static GLint
++ilog2(GLint n)
++{
++ GLint k;
++
++ if (n <= 0)
++ return 0;
++ for (k = 0; n >>= 1; k++);
++ return k;
++}
++
++
++
++/*
++ * Find the value nearest to n which is also a power of two.
++ */
++static GLint
++round2(GLint n)
++{
++ GLint m;
++
++ for (m = 1; m < n; m *= 2);
++
++ /* m>=n */
++ if (m - n <= n - m / 2) {
++ return m;
++ }
++ else {
++ return m / 2;
++ }
++}
++
++
++/*
++ * Given an pixel format and datatype, return the number of bytes to
++ * store one pixel.
++ */
++static GLint
++bytes_per_pixel(GLenum format, GLenum type)
++{
++ GLint n, m;
++
++ switch (format) {
++ case GL_COLOR_INDEX:
++ case GL_STENCIL_INDEX:
++ case GL_DEPTH_COMPONENT:
++ case GL_RED:
++ case GL_GREEN:
++ case GL_BLUE:
++ case GL_ALPHA:
++ case GL_LUMINANCE:
++ n = 1;
++ break;
++ case GL_LUMINANCE_ALPHA:
++ n = 2;
++ break;
++ case GL_RGB:
++ case GL_BGR:
++ n = 3;
++ break;
++ case GL_RGBA:
++ case GL_BGRA:
++#ifdef GL_EXT_abgr
++ case GL_ABGR_EXT:
++#endif
++ n = 4;
++ break;
++ default:
++ n = 0;
++ }
++
++ switch (type) {
++ case GL_UNSIGNED_BYTE:
++ m = sizeof(GLubyte);
++ break;
++ case GL_BYTE:
++ m = sizeof(GLbyte);
++ break;
++ case GL_BITMAP:
++ m = 1;
++ break;
++ case GL_UNSIGNED_SHORT:
++ m = sizeof(GLushort);
++ break;
++ case GL_SHORT:
++ m = sizeof(GLshort);
++ break;
++ case GL_UNSIGNED_INT:
++ m = sizeof(GLuint);
++ break;
++ case GL_INT:
++ m = sizeof(GLint);
++ break;
++ case GL_FLOAT:
++ m = sizeof(GLfloat);
++ break;
++ default:
++ m = 0;
++ }
++
++ return n * m;
++}
++
++
++
++/*
++ * WARNING: This function isn't finished and has never been tested!!!!
++ */
++GLint GLAPIENTRY
++mesa_gluBuild1DMipmaps(GLenum target, GLint components,
++ GLsizei width, GLenum format, GLenum type, const void *data)
++{
++ GLubyte *texture;
++ GLint levels, max_levels;
++ GLint new_width, max_width;
++ GLint i, j, k, l;
++
++ if (width < 1)
++ return GLU_INVALID_VALUE;
++
++ glGetIntegerv(GL_MAX_TEXTURE_SIZE, &max_width);
++ max_levels = ilog2(max_width) + 1;
++
++ /* Compute how many mipmap images to make */
++ levels = ilog2(width) + 1;
++ if (levels > max_levels) {
++ levels = max_levels;
++ }
++
++ new_width = 1 << (levels - 1);
++
++ texture = (GLubyte *) malloc(new_width * components);
++ if (!texture) {
++ return GLU_OUT_OF_MEMORY;
++ }
++
++ if (width != new_width) {
++ /* initial rescaling */
++ switch (type) {
++ case GL_UNSIGNED_BYTE:
++ {
++ GLubyte *ub_data = (GLubyte *) data;
++ for (i = 0; i < new_width; i++) {
++ j = i * width / new_width;
++ for (k = 0; k < components; k++) {
++ texture[i * components + k] = ub_data[j * components + k];
++ }
++ }
++ }
++ break;
++ default:
++ /* Not implemented */
++ return GLU_ERROR;
++ }
++ }
++
++ /* generate and load mipmap images */
++ for (l = 0; l < levels; l++) {
++ glTexImage1D(GL_TEXTURE_1D, l, components, new_width, 0,
++ format, GL_UNSIGNED_BYTE, texture);
++
++ /* Scale image down to 1/2 size */
++ new_width = new_width / 2;
++ for (i = 0; i < new_width; i++) {
++ for (k = 0; k < components; k++) {
++ GLint sample1, sample2;
++ sample1 = (GLint) texture[i * 2 * components + k];
++ sample2 = (GLint) texture[(i * 2 + 1) * components + k];
++ texture[i * components + k] = (GLubyte) ((sample1 + sample2) / 2);
++ }
++ }
++ }
++
++ free(texture);
++
++ return 0;
++}
++
++
++
++GLint GLAPIENTRY
++mesa_gluBuild2DMipmaps(GLenum target, GLint components,
++ GLsizei width, GLsizei height, GLenum format,
++ GLenum type, const void *data)
++{
++ GLint w, h, maxsize;
++ void *image, *newimage;
++ GLint neww, newh, level, bpp;
++ int error;
++ GLboolean done;
++ GLint retval = 0;
++ GLint unpackrowlength, unpackalignment, unpackskiprows, unpackskippixels;
++ GLint packrowlength, packalignment, packskiprows, packskippixels;
++
++ if (width < 1 || height < 1)
++ return GLU_INVALID_VALUE;
++
++ glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxsize);
++
++ w = round2(width);
++ if (w > maxsize) {
++ w = maxsize;
++ }
++ h = round2(height);
++ if (h > maxsize) {
++ h = maxsize;
++ }
++
++ bpp = bytes_per_pixel(format, type);
++ if (bpp == 0) {
++ /* probably a bad format or type enum */
++ return GLU_INVALID_ENUM;
++ }
++
++ /* Get current glPixelStore values */
++ glGetIntegerv(GL_UNPACK_ROW_LENGTH, &unpackrowlength);
++ glGetIntegerv(GL_UNPACK_ALIGNMENT, &unpackalignment);
++ glGetIntegerv(GL_UNPACK_SKIP_ROWS, &unpackskiprows);
++ glGetIntegerv(GL_UNPACK_SKIP_PIXELS, &unpackskippixels);
++ glGetIntegerv(GL_PACK_ROW_LENGTH, &packrowlength);
++ glGetIntegerv(GL_PACK_ALIGNMENT, &packalignment);
++ glGetIntegerv(GL_PACK_SKIP_ROWS, &packskiprows);
++ glGetIntegerv(GL_PACK_SKIP_PIXELS, &packskippixels);
++
++ /* set pixel packing */
++ glPixelStorei(GL_PACK_ROW_LENGTH, 0);
++ glPixelStorei(GL_PACK_ALIGNMENT, 1);
++ glPixelStorei(GL_PACK_SKIP_ROWS, 0);
++ glPixelStorei(GL_PACK_SKIP_PIXELS, 0);
++
++ done = GL_FALSE;
++
++ if (w != width || h != height) {
++ /* must rescale image to get "top" mipmap texture image */
++ image = malloc((w + 4) * h * bpp);
++ if (!image) {
++ return GLU_OUT_OF_MEMORY;
++ }
++ error = mesa_gluScaleImage(format, width, height, type, data,
++ w, h, type, image);
++ if (error) {
++ retval = error;
++ done = GL_TRUE;
++ }
++ }
++ else {
++ image = (void *) data;
++ }
++
++ level = 0;
++ while (!done) {
++ if (image != data) {
++ /* set pixel unpacking */
++ glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
++ glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
++ glPixelStorei(GL_UNPACK_SKIP_ROWS, 0);
++ glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
++ }
++
++ glTexImage2D(target, level, components, w, h, 0, format, type, image);
++
++ if (w == 1 && h == 1)
++ break;
++
++ neww = (w < 2) ? 1 : w / 2;
++ newh = (h < 2) ? 1 : h / 2;
++ newimage = malloc((neww + 4) * newh * bpp);
++ if (!newimage) {
++ return GLU_OUT_OF_MEMORY;
++ }
++
++ error = mesa_gluScaleImage(format, w, h, type, image,
++ neww, newh, type, newimage);
++ if (error) {
++ retval = error;
++ done = GL_TRUE;
++ }
++
++ if (image != data) {
++ free(image);
++ }
++ image = newimage;
++
++ w = neww;
++ h = newh;
++ level++;
++ }
++
++ if (image != data) {
++ free(image);
++ }
++
++ /* Restore original glPixelStore state */
++ glPixelStorei(GL_UNPACK_ROW_LENGTH, unpackrowlength);
++ glPixelStorei(GL_UNPACK_ALIGNMENT, unpackalignment);
++ glPixelStorei(GL_UNPACK_SKIP_ROWS, unpackskiprows);
++ glPixelStorei(GL_UNPACK_SKIP_PIXELS, unpackskippixels);
++ glPixelStorei(GL_PACK_ROW_LENGTH, packrowlength);
++ glPixelStorei(GL_PACK_ALIGNMENT, packalignment);
++ glPixelStorei(GL_PACK_SKIP_ROWS, packskiprows);
++ glPixelStorei(GL_PACK_SKIP_PIXELS, packskippixels);
++
++ return retval;
++}
+Index: qemu-0.13.0/target-i386/opengl_exec.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-i386/opengl_exec.c 2011-01-17 16:42:36.000000000 +0800
+@@ -0,0 +1,3931 @@
++/*
++ * Host-side implementation of GL/GLX API
++ *
++ * Copyright (c) 2006,2007 Even Rouault
++ *
++ * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
++
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <assert.h>
++#include <string.h>
++
++#include <X11/Xlib.h>
++#include <X11/Xutil.h>
++
++#define GL_GLEXT_PROTOTYPES
++#define GLX_GLXEXT_PROTOTYPES
++
++#include <mesa_gl.h>
++#include <mesa_glx.h>
++
++// TODO
++typedef long unsigned int target_phys_addr_t;
++
++#include "opengl_func.h"
++
++#include "mesa_glu.h"
++#include "mesa_mipmap.c"
++
++#include "../qemu-common.h"
++
++//#define SYSTEMATIC_ERROR_CHECK
++#define BUFFER_BEGINEND
++#define glGetError() 0
++
++#define GET_EXT_PTR(type, funcname, args_decl) \
++ static int detect_##funcname = 0; \
++ static type(*ptr_func_##funcname)args_decl = NULL; \
++ if (detect_##funcname == 0) \
++ { \
++ detect_##funcname = 1; \
++ ptr_func_##funcname = (type(*)args_decl)glXGetProcAddressARB((const GLubyte*)#funcname); \
++ assert (ptr_func_##funcname); \
++ }
++
++#define GET_EXT_PTR_NO_FAIL(type, funcname, args_decl) \
++ static int detect_##funcname = 0; \
++ static type(*ptr_func_##funcname)args_decl = NULL; \
++ if (detect_##funcname == 0) \
++ { \
++ detect_##funcname = 1; \
++ ptr_func_##funcname = (type(*)args_decl)glXGetProcAddressARB((const GLubyte*)#funcname); \
++ }
++
++#ifndef WIN32
++#include <dlfcn.h>
++#endif
++
++static void *get_glu_ptr(const char *name)
++{
++ static void *handle = (void *) -1;
++
++ if (handle == (void *) -1) {
++#ifndef WIN32
++ handle = dlopen("libGLU.so", RTLD_LAZY);
++ if (!handle)
++ fprintf(stderr, "can't load libGLU.so : %s\n", dlerror());
++#else
++ handle = (void *) LoadLibrary("glu32.dll");
++ if (!handle)
++ fprintf(stderr, "can't load glu32.dll\n");
++#endif
++ }
++ if (handle) {
++#ifndef WIN32
++ return dlsym(handle, name);
++#else
++ return GetProcAddress(handle, name);
++#endif
++ }
++ return NULL;
++}
++
++#define GET_GLU_PTR(type, funcname, args_decl) \
++ static int detect_##funcname = 0; \
++ static type(*ptr_func_##funcname)args_decl = NULL; \
++ if (detect_##funcname == 0) \
++ { \
++ detect_##funcname = 1; \
++ ptr_func_##funcname = (type(*)args_decl)get_glu_ptr(#funcname); \
++ }
++
++int display_function_call = 0;
++
++static const int defaultAttribList[] = {
++ GLX_RGBA,
++ GLX_RED_SIZE, 1,
++ GLX_GREEN_SIZE, 1,
++ GLX_BLUE_SIZE, 1,
++ GLX_DOUBLEBUFFER,
++ None
++};
++
++static XVisualInfo *get_default_visual(Display *dpy)
++{
++ static XVisualInfo *vis = NULL;
++ XVisualInfo theTemplate;
++ int numVisuals;
++
++ if (vis)
++ return vis;
++ fprintf(stderr, "get_default_visual\n");
++ /* if (vis == NULL) vis = glXChooseVisual(dpy, 0,
++ * (int*)defaultAttribList); */
++ theTemplate.screen = 0;
++ vis = XGetVisualInfo(dpy, VisualScreenMask, &theTemplate, &numVisuals);
++
++ return vis;
++}
++
++
++static Display *parent_dpy = NULL;
++static Window qemu_parent_window = 0;
++
++static Window active_win = 0; /* FIXME */
++static int active_win_x = 0;
++static int active_win_y = 0;
++
++void opengl_exec_set_parent_window(Display *_dpy, Window _parent_window)
++{
++ parent_dpy = _dpy;
++ qemu_parent_window = _parent_window;
++ if (active_win)
++ XReparentWindow(_dpy, active_win, _parent_window, active_win_x,
++ active_win_y);
++}
++
++static int local_connection = 0;
++void opengl_exec_set_local_connection()
++{
++ local_connection = 1;
++}
++
++static GLXDrawable create_window(Display *dpy, Window local_parent_window,
++ XVisualInfo *vis, const char *name,
++ int x, int y, int width, int height)
++{
++ int scrnum;
++ XSetWindowAttributes attr = { 0 };
++ unsigned long mask;
++ Window root;
++ Window win;
++
++ scrnum = DefaultScreen(dpy);
++ root = RootWindow(dpy, scrnum);
++
++ /* window attributes */
++ attr.background_pixel = 0xff000000;
++ attr.border_pixel = 0;
++ attr.colormap = XCreateColormap(dpy, root, vis->visual, AllocNone);
++ attr.event_mask = 0; /* StructureNotifyMask | ExposureMask | KeyPressMask */
++ attr.save_under = True;
++ // if (local_parent_window == NULL && qemu_parent_window == NULL)
++ attr.override_redirect = True;
++ // else
++ // attr.override_redirect = True;
++ attr.cursor = None;
++ mask =
++ CWBackPixel | CWBorderPixel | CWColormap | CWEventMask |
++ CWOverrideRedirect | CWSaveUnder;
++
++ if (local_parent_window)
++ win = XCreateWindow(dpy, local_parent_window, 0, 0, width, height, 0,
++ vis->depth, InputOutput, vis->visual, mask, &attr);
++ else if (qemu_parent_window)
++ win = XCreateWindow(dpy, qemu_parent_window, 0, 0, width, height, 0,
++ vis->depth, InputOutput, vis->visual, mask, &attr);
++ else
++ win = XCreateWindow(dpy, root, 0, 0, width, height, 0, vis->depth,
++ InputOutput, vis->visual, mask, &attr);
++
++ /* set hints and properties */
++ {
++ XSizeHints sizehints;
++
++ sizehints.x = x;
++ sizehints.y = y;
++ sizehints.width = width;
++ sizehints.height = height;
++ sizehints.flags = USSize | USPosition;
++ XSetWMNormalHints(dpy, win, &sizehints);
++ XSetStandardProperties(dpy, win, name, name, None,
++ (char **) NULL, 0, &sizehints);
++ }
++
++ XSync(dpy, 0);
++
++ /*
++ * int loop = 1; while (loop) { while (XPending(dpy) > 0) { XEvent event;
++ * XNextEvent(dpy, &event); switch (event.type) { case CreateNotify: { if
++ * (((XCreateWindowEvent*)&event)->window == win) { loop = 0; } break; } }
++ * } } */
++
++ /* TODO */
++ if (!active_win)
++ active_win = win;
++
++ return win;
++}
++
++typedef struct {
++ void *key;
++ void *value;
++} Assoc;
++
++#define MAX_HANDLED_PROCESS 100
++#define MAX_ASSOC_SIZE 100
++
++#define MAX_FBCONFIG 10
++
++#include "opengl_utils.h"
++
++#define MAX(a, b) (((a) > (b)) ? (a) : (b))
++
++
++typedef struct {
++ int x;
++ int y;
++ int width;
++ int height;
++ int map_state;
++} WindowPosStruct;
++
++typedef struct {
++ GLbitfield mask;
++ int activeTextureIndex;
++} ClientState;
++
++#define MAX_CLIENT_STATE_STACK_SIZE 16
++
++typedef struct {
++ int ref;
++ int fake_ctxt;
++ int fake_shareList;
++ GLXContext context;
++ GLXDrawable drawable;
++
++ void *vertexPointer;
++ void *normalPointer;
++ void *colorPointer;
++ void *secondaryColorPointer;
++ void *indexPointer;
++ void *texCoordPointer[NB_MAX_TEXTURES];
++ void *edgeFlagPointer;
++ void *vertexAttribPointer[MY_GL_MAX_VERTEX_ATTRIBS_ARB];
++ void *vertexAttribPointerNV[MY_GL_MAX_VERTEX_ATTRIBS_NV];
++ void *weightPointer;
++ void *matrixIndexPointer;
++ void *fogCoordPointer;
++ void *variantPointerEXT[MY_GL_MAX_VARIANT_POINTER_EXT];
++ void *interleavedArrays;
++ void *elementPointerATI;
++
++ int vertexPointerSize;
++ int normalPointerSize;
++ int colorPointerSize;
++ int secondaryColorPointerSize;
++ int indexPointerSize;
++ int texCoordPointerSize[NB_MAX_TEXTURES];
++ int edgeFlagPointerSize;
++ int vertexAttribPointerSize[MY_GL_MAX_VERTEX_ATTRIBS_ARB];
++ int vertexAttribPointerNVSize[MY_GL_MAX_VERTEX_ATTRIBS_NV];
++ int weightPointerSize;
++ int matrixIndexPointerSize;
++ int fogCoordPointerSize;
++ int variantPointerEXTSize[MY_GL_MAX_VARIANT_POINTER_EXT];
++ int interleavedArraysSize;
++ int elementPointerATISize;
++
++ int selectBufferSize;
++ void *selectBufferPtr;
++ int feedbackBufferSize;
++ void *feedbackBufferPtr;
++
++ ClientState clientStateStack[MAX_CLIENT_STATE_STACK_SIZE];
++ int clientStateSp;
++ int activeTextureIndex;
++
++ unsigned int ownTabTextures[32768];
++ unsigned int *tabTextures;
++ RangeAllocator ownTextureAllocator;
++ RangeAllocator *textureAllocator;
++
++ unsigned int ownTabBuffers[32768];
++ unsigned int *tabBuffers;
++ RangeAllocator ownBufferAllocator;
++ RangeAllocator *bufferAllocator;
++
++ unsigned int ownTabLists[32768];
++ unsigned int *tabLists;
++ RangeAllocator ownListAllocator;
++ RangeAllocator *listAllocator;
++
++#ifdef SYSTEMATIC_ERROR_CHECK
++ int last_error;
++#endif
++} GLState;
++
++typedef struct {
++ int process_id;
++ int instr_counter;
++
++ int x, y, width, height;
++ WindowPosStruct currentDrawablePos;
++
++ int next_available_context_number;
++ int next_available_pbuffer_number;
++
++ int nb_states;
++ GLState default_state;
++ GLState **glstates;
++ GLState *current_state;
++
++ int nfbconfig;
++ GLXFBConfig *fbconfigs[MAX_FBCONFIG];
++ int fbconfigs_max[MAX_FBCONFIG];
++ int nfbconfig_total;
++
++ Assoc association_fakecontext_glxcontext[MAX_ASSOC_SIZE];
++ Assoc association_fakepbuffer_pbuffer[MAX_ASSOC_SIZE];
++ Assoc association_clientdrawable_serverdrawable[MAX_ASSOC_SIZE];
++ Assoc association_fakecontext_visual[MAX_ASSOC_SIZE];
++
++ Display *dpy;
++
++ int began;
++ int primitive;
++ int bufsize;
++ int bufstart;
++ arg_t *cmdbuf;
++} ProcessStruct;
++
++static ProcessStruct processes[MAX_HANDLED_PROCESS];
++
++void init_process_tab()
++{
++ memset(processes, 0, sizeof(processes));
++}
++
++#define ARG_TO_CHAR(x) (char)(x)
++#define ARG_TO_UNSIGNED_CHAR(x) (unsigned char)(x)
++#define ARG_TO_SHORT(x) (short)(x)
++#define ARG_TO_UNSIGNED_SHORT(x) (unsigned short)(x)
++#define ARG_TO_INT(x) (int)(x)
++#define ARG_TO_UNSIGNED_INT(x) (unsigned int)(x)
++#define ARG_TO_FLOAT(x) (*(float*)&(x))
++#define ARG_TO_DOUBLE(x) (*(double*)(x))
++
++#include "server_stub.c"
++
++/* ---- */
++
++#ifdef BUFFER_BEGINEND
++/* A user of the following two functions must not buffer any calls that
++ * may throw an error (i.e. errors conditions must be checked before
++ * storing in the buffer) or return values. */
++static inline arg_t *cmd_buffer_alloc(ProcessStruct *process, size_t elems)
++{
++ arg_t *ret;
++
++ if (unlikely(process->bufstart + elems > process->bufsize)) {
++ process->bufsize = (process->bufsize ?: 0x100) << 1;
++ process->cmdbuf = qemu_realloc(process->cmdbuf,
++ process->bufsize * sizeof(arg_t));
++ }
++
++ ret = process->cmdbuf + process->bufstart;
++ process->bufstart += elems;
++ return ret;
++}
++
++static inline void cmd_buffer_replay(ProcessStruct *process)
++{
++ Signature *sig;
++ int func_number;
++ int ret_int;
++ char ret_char;
++ arg_t *call = process->cmdbuf;
++
++ while (process->bufstart) {
++ func_number = *call ++;
++ sig = (Signature *) tab_opengl_calls[func_number];
++
++ execute_func(func_number, call, &ret_int, &ret_char);
++
++ call += sig->nb_args;
++ process->bufstart -= sig->nb_args + 1;
++ }
++}
++#endif
++
++/* ---- */
++
++typedef void *ClientGLXDrawable;
++static inline ClientGLXDrawable to_drawable(arg_t arg)
++{
++#ifdef TARGET_X86_64
++ if (arg > (unsigned long) -1) {
++ fprintf(stderr, "GLXDrawable too big for this implementation\n");
++ exit(-1);
++ }
++#endif
++ return (void *) (unsigned long) arg;
++}
++
++GLXContext get_association_fakecontext_glxcontext(
++ ProcessStruct *process, int fakecontext)
++{
++ int i;
++
++ for (i = 0;
++ i < MAX_ASSOC_SIZE &&
++ process->association_fakecontext_glxcontext[i].key; i++)
++ if ((int) (long) process->association_fakecontext_glxcontext[i].key ==
++ fakecontext)
++ return (GLXContext)
++ process->association_fakecontext_glxcontext[i].value;
++
++ return NULL;
++}
++
++void set_association_fakecontext_glxcontext(
++ ProcessStruct *process, int fakecontext, GLXContext glxcontext)
++{
++ int i;
++
++ for (i = 0;
++ i < MAX_ASSOC_SIZE &&
++ process->association_fakecontext_glxcontext[i].key; i++)
++ if ((int) (long) process->association_fakecontext_glxcontext[i].key ==
++ fakecontext)
++ break;
++
++ if (i < MAX_ASSOC_SIZE) {
++ process->association_fakecontext_glxcontext[i].key =
++ (void *) (long) fakecontext;
++ process->association_fakecontext_glxcontext[i].value =
++ (void *) glxcontext;
++ } else
++ fprintf(stderr, "MAX_ASSOC_SIZE reached\n");
++}
++
++void unset_association_fakecontext_glxcontext(
++ ProcessStruct *process, int fakecontext)
++{
++ int i;
++
++ for (i = 0;
++ i < MAX_ASSOC_SIZE &&
++ process->association_fakecontext_glxcontext[i].key; i++)
++ if ((int) (long) process->association_fakecontext_glxcontext[i].key ==
++ fakecontext) {
++ memmove(&process->association_fakecontext_glxcontext[i],
++ &process->association_fakecontext_glxcontext[i + 1],
++ sizeof(Assoc) * (MAX_ASSOC_SIZE - 1 - i));
++ return;
++ }
++}
++
++/* ---- */
++
++XVisualInfo *get_association_fakecontext_visual(
++ ProcessStruct *process, int fakecontext)
++{
++ int i;
++
++ for (i = 0;
++ i < MAX_ASSOC_SIZE && process->association_fakecontext_visual[i].key;
++ i++)
++ if ((int) (long) process->association_fakecontext_visual[i].key ==
++ fakecontext)
++ return process->association_fakecontext_visual[i].value;
++
++ return NULL;
++}
++
++void set_association_fakecontext_visual(ProcessStruct *process,
++ int fakecontext, XVisualInfo *visual)
++{
++ int i;
++
++ for (i = 0;
++ i < MAX_ASSOC_SIZE && process->association_fakecontext_visual[i].key;
++ i++)
++ if ((int) (long) process->association_fakecontext_visual[i].key ==
++ fakecontext)
++ break;
++
++ if (i < MAX_ASSOC_SIZE) {
++ process->association_fakecontext_visual[i].key =
++ (void *) (long) fakecontext;
++ process->association_fakecontext_visual[i].value = (void *) visual;
++ } else
++ fprintf(stderr, "MAX_ASSOC_SIZE reached\n");
++}
++
++/* ---- */
++
++GLXPbuffer get_association_fakepbuffer_pbuffer(
++ ProcessStruct *process, ClientGLXDrawable fakepbuffer)
++{
++ int i;
++
++ for (i = 0; i < MAX_ASSOC_SIZE &&
++ process->association_fakepbuffer_pbuffer[i].key; i ++)
++ if ((ClientGLXDrawable)
++ process->association_fakepbuffer_pbuffer[i].key ==
++ fakepbuffer)
++ return (GLXPbuffer)
++ process->association_fakepbuffer_pbuffer[i].value;
++
++ return 0;
++}
++
++void set_association_fakepbuffer_pbuffer(ProcessStruct *process,
++ ClientGLXDrawable fakepbuffer, GLXPbuffer pbuffer)
++{
++ int i;
++
++ for (i = 0;
++ i < MAX_ASSOC_SIZE &&
++ process->association_fakepbuffer_pbuffer[i].key; i++)
++ if ((ClientGLXDrawable)
++ process->association_fakepbuffer_pbuffer[i].key ==
++ fakepbuffer)
++ break;
++
++ if (i < MAX_ASSOC_SIZE) {
++ process->association_fakepbuffer_pbuffer[i].key = (void *) fakepbuffer;
++ process->association_fakepbuffer_pbuffer[i].value = (void *) pbuffer;
++ } else
++ fprintf(stderr, "MAX_ASSOC_SIZE reached\n");
++}
++
++void unset_association_fakepbuffer_pbuffer(ProcessStruct *process,
++ ClientGLXDrawable fakepbuffer)
++{
++ int i;
++
++ for (i = 0; i < MAX_ASSOC_SIZE &&
++ process->association_fakepbuffer_pbuffer[i].key; i++)
++ if ((ClientGLXDrawable)
++ process->association_fakepbuffer_pbuffer[i].key ==
++ fakepbuffer) {
++ memmove(&process->association_fakepbuffer_pbuffer[i],
++ &process->association_fakepbuffer_pbuffer[i + 1],
++ sizeof(Assoc) * (MAX_ASSOC_SIZE - 1 - i));
++ return;
++ }
++}
++
++/* ---- */
++
++GLXDrawable get_association_clientdrawable_serverdrawable(
++ ProcessStruct *process, ClientGLXDrawable clientdrawable)
++{
++ int i;
++
++ for (i = 0; i < MAX_ASSOC_SIZE &&
++ process->association_clientdrawable_serverdrawable[i].key;
++ i++)
++ if ((ClientGLXDrawable) process->
++ association_clientdrawable_serverdrawable[i].key ==
++ clientdrawable)
++ return (GLXDrawable) process->
++ association_clientdrawable_serverdrawable[i].value;
++
++ return (GLXDrawable) 0;
++}
++
++ClientGLXDrawable get_association_serverdrawable_clientdrawable(
++ ProcessStruct *process, GLXDrawable serverdrawable)
++{
++ int i;
++
++ for (i = 0; i < MAX_ASSOC_SIZE &&
++ process->association_clientdrawable_serverdrawable[i].key;
++ i ++)
++ if ((GLXDrawable) process->
++ association_clientdrawable_serverdrawable[i].value ==
++ serverdrawable)
++ return (ClientGLXDrawable)
++ process->association_clientdrawable_serverdrawable[i].key;
++
++ return NULL;
++}
++
++void set_association_clientdrawable_serverdrawable(
++ ProcessStruct *process, ClientGLXDrawable clientdrawable,
++ GLXDrawable serverdrawable)
++{
++ int i;
++
++ for (i = 0; process->association_clientdrawable_serverdrawable[i].key;
++ i ++)
++ if ((ClientGLXDrawable) process->
++ association_clientdrawable_serverdrawable[i].key ==
++ clientdrawable)
++ break;
++
++ if (i < MAX_ASSOC_SIZE) {
++ process->association_clientdrawable_serverdrawable[i].key =
++ (void *) clientdrawable;
++ process->association_clientdrawable_serverdrawable[i].value =
++ (void *) serverdrawable;
++ } else
++ fprintf(stderr, "MAX_ASSOC_SIZE reached\n");
++}
++
++static void _get_window_pos(Display *dpy, Window win, WindowPosStruct *pos)
++{
++ XWindowAttributes window_attributes_return;
++ Window child;
++ int x, y;
++ Window root = DefaultRootWindow(dpy);
++
++ XGetWindowAttributes(dpy, win, &window_attributes_return);
++ XTranslateCoordinates(dpy, win, root, 0, 0, &x, &y, &child);
++ /* printf("%d %d %d %d\n", x, y, window_attributes_return.width,
++ * window_attributes_return.height); */
++ pos->x = x;
++ pos->y = y;
++ pos->width = window_attributes_return.width;
++ pos->height = window_attributes_return.height;
++ pos->map_state = window_attributes_return.map_state;
++}
++
++static int is_gl_vendor_ati(Display *dpy)
++{
++ static int is_gl_vendor_ati_flag = 0;
++ static int has_init = 0;
++
++ if (has_init == 0) {
++ has_init = 1;
++ is_gl_vendor_ati_flag =
++ (strncmp(glXGetClientString(dpy, GLX_VENDOR), "ATI", 3) == 0);
++ }
++ return is_gl_vendor_ati_flag;
++}
++
++static int get_server_texture(ProcessStruct *process,
++ unsigned int client_texture)
++{
++ unsigned int server_texture = 0;
++
++ if (client_texture < 32768) {
++ server_texture = process->current_state->tabTextures[client_texture];
++ } else {
++ fprintf(stderr, "invalid texture name %d\n", client_texture);
++ }
++ return server_texture;
++}
++
++static int get_server_buffer(ProcessStruct *process,
++ unsigned int client_buffer)
++{
++ unsigned int server_buffer = 0;
++
++ if (client_buffer < 32768) {
++ server_buffer = process->current_state->tabBuffers[client_buffer];
++ } else {
++ fprintf(stderr, "invalid buffer name %d\n", client_buffer);
++ }
++ return server_buffer;
++}
++
++
++static int get_server_list(ProcessStruct *process, unsigned int client_list)
++{
++ unsigned int server_list = 0;
++
++ if (client_list < 32768) {
++ server_list = process->current_state->tabLists[client_list];
++ } else {
++ fprintf(stderr, "invalid list name %d\n", client_list);
++ }
++ return server_list;
++}
++
++GLXFBConfig get_fbconfig(ProcessStruct *process, int client_fbconfig)
++{
++ int i;
++ int nbtotal = 0;
++
++ for (i = 0; i < process->nfbconfig; i++) {
++ assert(client_fbconfig >= 1 + nbtotal);
++ if (client_fbconfig <= nbtotal + process->fbconfigs_max[i]) {
++ return process->fbconfigs[i][client_fbconfig - 1 - nbtotal];
++ }
++ nbtotal += process->fbconfigs_max[i];
++ }
++ return 0;
++}
++
++typedef struct {
++ int attribListLength;
++ int *attribList;
++ XVisualInfo *visInfo;
++} AssocAttribListVisual;
++
++static int nTabAssocAttribListVisual = 0;
++static AssocAttribListVisual *tabAssocAttribListVisual = NULL;
++
++static int _compute_length_of_attrib_list_including_zero(const int *attribList,
++ int
++ booleanMustHaveValue)
++{
++ int i = 0;
++
++ while (attribList[i]) {
++ if (booleanMustHaveValue ||
++ !(attribList[i] == GLX_USE_GL || attribList[i] == GLX_RGBA ||
++ attribList[i] == GLX_DOUBLEBUFFER ||
++ attribList[i] == GLX_STEREO)) {
++ i += 2;
++ } else {
++ i++;
++ }
++ }
++ return i + 1;
++}
++
++static int glXChooseVisualFunc(Display *dpy, const int *_attribList)
++{
++ if (_attribList == NULL)
++ return 0;
++ int attribListLength =
++ _compute_length_of_attrib_list_including_zero(_attribList, 0);
++ int i;
++
++ int *attribList = malloc(sizeof(int) * attribListLength);
++ memcpy(attribList, _attribList, sizeof(int) * attribListLength);
++
++ i = 0;
++ while (attribList[i]) {
++ if (!
++ (attribList[i] == GLX_USE_GL || attribList[i] == GLX_RGBA ||
++ attribList[i] == GLX_DOUBLEBUFFER ||
++ attribList[i] == GLX_STEREO)) {
++ if (attribList[i] == GLX_SAMPLE_BUFFERS && attribList[i + 1] != 0
++ && getenv("DISABLE_SAMPLE_BUFFERS")) {
++ fprintf(stderr, "Disabling GLX_SAMPLE_BUFFERS\n");
++ attribList[i + 1] = 0;
++ }
++ i += 2;
++ } else {
++ i++;
++ }
++ }
++
++ for (i = 0; i < nTabAssocAttribListVisual; i++) {
++ if (tabAssocAttribListVisual[i].attribListLength == attribListLength
++ && memcmp(tabAssocAttribListVisual[i].attribList, attribList,
++ attribListLength * sizeof(int)) == 0) {
++ free(attribList);
++ return (tabAssocAttribListVisual[i].
++ visInfo) ? tabAssocAttribListVisual[i].visInfo->
++ visualid : 0;
++ }
++ }
++ XVisualInfo *visInfo = glXChooseVisual(dpy, 0, attribList);
++
++ tabAssocAttribListVisual = realloc(
++ tabAssocAttribListVisual, sizeof(AssocAttribListVisual) *
++ (nTabAssocAttribListVisual + 1));
++ tabAssocAttribListVisual[nTabAssocAttribListVisual].attribListLength =
++ attribListLength;
++ tabAssocAttribListVisual[nTabAssocAttribListVisual].attribList =
++ (int *) malloc(sizeof(int) * attribListLength);
++ memcpy(tabAssocAttribListVisual[nTabAssocAttribListVisual].attribList,
++ attribList, sizeof(int) * attribListLength);
++ tabAssocAttribListVisual[nTabAssocAttribListVisual].visInfo = visInfo;
++ nTabAssocAttribListVisual++;
++ free(attribList);
++ return (visInfo) ? visInfo->visualid : 0;
++}
++
++static XVisualInfo *get_visual_info_from_visual_id(Display *dpy,
++ int visualid)
++{
++ int i, n;
++ XVisualInfo template;
++ XVisualInfo *visInfo;
++
++ for (i = 0; i < nTabAssocAttribListVisual; i++) {
++ if (tabAssocAttribListVisual[i].visInfo &&
++ tabAssocAttribListVisual[i].visInfo->visualid == visualid) {
++ return tabAssocAttribListVisual[i].visInfo;
++ }
++ }
++ template.visualid = visualid;
++ visInfo = XGetVisualInfo(dpy, VisualIDMask, &template, &n);
++ tabAssocAttribListVisual =
++ realloc(tabAssocAttribListVisual,
++ sizeof(AssocAttribListVisual) * (nTabAssocAttribListVisual +
++ 1));
++ tabAssocAttribListVisual[nTabAssocAttribListVisual].attribListLength = 0;
++ tabAssocAttribListVisual[nTabAssocAttribListVisual].attribList = NULL;
++ tabAssocAttribListVisual[nTabAssocAttribListVisual].visInfo = visInfo;
++ nTabAssocAttribListVisual++;
++ return visInfo;
++}
++
++typedef struct {
++ int x;
++ int y;
++ int width;
++ int height;
++ int xhot;
++ int yhot;
++ int *pixels;
++} ClientCursor;
++
++#if 0
++static ClientCursor client_cursor = { 0 };
++#endif
++
++static void do_glClientActiveTextureARB(int texture)
++{
++ GET_EXT_PTR_NO_FAIL(void, glClientActiveTextureARB, (int));
++
++ if (ptr_func_glClientActiveTextureARB) {
++ ptr_func_glClientActiveTextureARB(texture);
++ }
++}
++
++#ifdef CURSOR_TRICK
++static void do_glActiveTextureARB(int texture)
++{
++ GET_EXT_PTR_NO_FAIL(void, glActiveTextureARB, (int));
++
++ if (ptr_func_glActiveTextureARB) {
++ ptr_func_glActiveTextureARB(texture);
++ }
++}
++
++static void do_glUseProgramObjectARB(GLhandleARB programObj)
++{
++ GET_EXT_PTR_NO_FAIL(void, glUseProgramObjectARB, (GLhandleARB));
++
++ if (ptr_func_glUseProgramObjectARB) {
++ ptr_func_glUseProgramObjectARB(programObj);
++ }
++}
++#endif
++
++static void destroy_gl_state(GLState *state)
++{
++ int i;
++
++ if (state->vertexPointer)
++ free(state->vertexPointer);
++ if (state->normalPointer)
++ free(state->normalPointer);
++ if (state->indexPointer)
++ free(state->indexPointer);
++ if (state->colorPointer)
++ free(state->colorPointer);
++ if (state->secondaryColorPointer)
++ free(state->secondaryColorPointer);
++ for (i = 0; i < NB_MAX_TEXTURES; i++) {
++ if (state->texCoordPointer[i])
++ free(state->texCoordPointer[i]);
++ }
++ for (i = 0; i < MY_GL_MAX_VERTEX_ATTRIBS_ARB; i++) {
++ if (state->vertexAttribPointer[i])
++ free(state->vertexAttribPointer[i]);
++ }
++ for (i = 0; i < MY_GL_MAX_VERTEX_ATTRIBS_NV; i++) {
++ if (state->vertexAttribPointerNV[i])
++ free(state->vertexAttribPointerNV[i]);
++ }
++ if (state->weightPointer)
++ free(state->weightPointer);
++ if (state->matrixIndexPointer)
++ free(state->matrixIndexPointer);
++ if (state->fogCoordPointer)
++ free(state->fogCoordPointer);
++ for (i = 0; i < MY_GL_MAX_VARIANT_POINTER_EXT; i++) {
++ if (state->variantPointerEXT[i])
++ free(state->variantPointerEXT[i]);
++ }
++ if (state->interleavedArrays)
++ free(state->interleavedArrays);
++ if (state->elementPointerATI)
++ free(state->elementPointerATI);
++}
++
++static void init_gl_state(GLState *state)
++{
++ state->textureAllocator = &state->ownTextureAllocator;
++ state->tabTextures = state->ownTabTextures;
++ state->bufferAllocator = &state->ownBufferAllocator;
++ state->tabBuffers = state->ownTabBuffers;
++ state->listAllocator = &state->ownListAllocator;
++ state->tabLists = state->ownTabLists;
++}
++
++/*
++ * Translate the nth element of list from type to GLuint.
++ */
++static GLuint translate_id(GLsizei n, GLenum type, const GLvoid *list)
++{
++ GLbyte *bptr;
++ GLubyte *ubptr;
++ GLshort *sptr;
++ GLushort *usptr;
++ GLint *iptr;
++ GLuint *uiptr;
++ GLfloat *fptr;
++
++ switch (type) {
++ case GL_BYTE:
++ bptr = (GLbyte *) list;
++ return (GLuint) *(bptr + n);
++ case GL_UNSIGNED_BYTE:
++ ubptr = (GLubyte *) list;
++ return (GLuint) *(ubptr + n);
++ case GL_SHORT:
++ sptr = (GLshort *) list;
++ return (GLuint) *(sptr + n);
++ case GL_UNSIGNED_SHORT:
++ usptr = (GLushort *) list;
++ return (GLuint) *(usptr + n);
++ case GL_INT:
++ iptr = (GLint *) list;
++ return (GLuint) *(iptr + n);
++ case GL_UNSIGNED_INT:
++ uiptr = (GLuint *) list;
++ return (GLuint) *(uiptr + n);
++ case GL_FLOAT:
++ fptr = (GLfloat *) list;
++ return (GLuint) *(fptr + n);
++ case GL_2_BYTES:
++ ubptr = ((GLubyte *) list) + 2 * n;
++ return (GLuint) *ubptr * 256 + (GLuint) *(ubptr + 1);
++ case GL_3_BYTES:
++ ubptr = ((GLubyte *) list) + 3 * n;
++ return (GLuint) *ubptr * 65536 + (GLuint) *(ubptr + 1) * 256 +
++ (GLuint) *(ubptr + 2);
++ case GL_4_BYTES:
++ ubptr = ((GLubyte *) list) + 4 * n;
++ return (GLuint) *ubptr * 16777216 + (GLuint) *(ubptr + 1) * 65536 +
++ (GLuint) *(ubptr + 2) * 256 + (GLuint) *(ubptr + 3);
++ default:
++ return 0;
++ }
++}
++
++void _create_context(ProcessStruct *process, GLXContext ctxt, int fake_ctxt,
++ GLXContext shareList, int fake_shareList)
++{
++ process->glstates =
++ realloc(process->glstates,
++ (process->nb_states + 1) * sizeof(GLState *));
++ process->glstates[process->nb_states] = malloc(sizeof(GLState));
++ memset(process->glstates[process->nb_states], 0, sizeof(GLState));
++ process->glstates[process->nb_states]->ref = 1;
++ process->glstates[process->nb_states]->context = ctxt;
++ process->glstates[process->nb_states]->fake_ctxt = fake_ctxt;
++ process->glstates[process->nb_states]->fake_shareList = fake_shareList;
++ init_gl_state(process->glstates[process->nb_states]);
++ if (shareList && fake_shareList) {
++ int i;
++
++ for (i = 0; i < process->nb_states; i++) {
++ if (process->glstates[i]->fake_ctxt == fake_shareList) {
++ process->glstates[i]->ref++;
++ process->glstates[process->nb_states]->textureAllocator =
++ process->glstates[i]->textureAllocator;
++ process->glstates[process->nb_states]->tabTextures =
++ process->glstates[i]->tabTextures;
++ process->glstates[process->nb_states]->bufferAllocator =
++ process->glstates[i]->bufferAllocator;
++ process->glstates[process->nb_states]->tabBuffers =
++ process->glstates[i]->tabBuffers;
++ process->glstates[process->nb_states]->listAllocator =
++ process->glstates[i]->listAllocator;
++ process->glstates[process->nb_states]->tabLists =
++ process->glstates[i]->tabLists;
++ break;
++ }
++ }
++ }
++ process->nb_states++;
++}
++
++static ProcessStruct *process;
++
++void do_disconnect_current(void)
++{
++ int i;
++ Display *dpy = process->dpy;
++
++ glXMakeCurrent(dpy, 0, NULL);
++
++ for (i = 0; i < MAX_ASSOC_SIZE &&
++ process->association_fakecontext_glxcontext[i].key; i ++) {
++ GLXContext ctxt = process->association_fakecontext_glxcontext[i].value;
++
++ fprintf(stderr, "Destroy context corresponding to fake_context"
++ " = %ld\n", (long) process->
++ association_fakecontext_glxcontext[i].key);
++ glXDestroyContext(dpy, ctxt);
++ }
++
++ GET_EXT_PTR(void, glXDestroyPbuffer, (Display *, GLXPbuffer));
++
++ for (i = 0; i < MAX_ASSOC_SIZE &&
++ process->association_fakepbuffer_pbuffer[i].key; i ++) {
++ GLXPbuffer pbuffer = (GLXPbuffer)
++ process->association_fakepbuffer_pbuffer[i].value;
++
++ fprintf(stderr, "Destroy pbuffer corresponding to fake_pbuffer"
++ " = %ld\n", (long) process->
++ association_fakepbuffer_pbuffer[i].key);
++ if (!is_gl_vendor_ati(dpy))
++ ptr_func_glXDestroyPbuffer(dpy, pbuffer);
++ }
++
++ for (i = 0; i < MAX_ASSOC_SIZE && process->
++ association_clientdrawable_serverdrawable[i].key; i ++) {
++ Window win = (Window) process->
++ association_clientdrawable_serverdrawable[i].value;
++
++ fprintf(stderr, "Destroy window %x corresponding to client_drawable "
++ "= %p\n", (int) win, process->
++ association_clientdrawable_serverdrawable[i].key);
++
++ XDestroyWindow(dpy, win);
++ if (active_win == win)
++ active_win = 0;
++
++ int loop = 1; // 1;
++ while (loop) {
++ while (XPending(dpy) > 0) {
++ XEvent event;
++
++ XNextEvent(dpy, &event);
++ switch (event.type) {
++ case DestroyNotify:
++ {
++ if (((XDestroyWindowEvent *) &event)->window == win)
++ loop = 0;
++ break;
++ }
++ }
++ }
++ break; /* TODO */
++ }
++ }
++
++ for (i = 0; i < process->nb_states; i++) {
++ destroy_gl_state(process->glstates[i]);
++ free(process->glstates[i]);
++ }
++ destroy_gl_state(&process->default_state);
++ free(process->glstates);
++
++ if (process->cmdbuf)
++ qemu_free(process->cmdbuf);
++
++ for (i = 0; &processes[i] != process; i ++);
++ memmove(&processes[i], &processes[i + 1],
++ (MAX_HANDLED_PROCESS - 1 - i) * sizeof(ProcessStruct));
++}
++
++static const int beginend_allowed[GL_N_CALLS] = {
++#undef MAGIC_MACRO
++#define MAGIC_MACRO(name) [name ## _func] = 1,
++#include "gl_beginend.h"
++};
++
++void do_context_switch(Display *dpy, pid_t pid, int call)
++{
++ int i;
++
++ for (i = 0; i < MAX_HANDLED_PROCESS; i ++)
++ if (processes[i].process_id == pid) {
++ process = &processes[i];
++ break;
++ } else if (processes[i].process_id == 0) {
++ process = &processes[i];
++ memset(process, 0, sizeof(ProcessStruct));
++ process->process_id = pid;
++ init_gl_state(&process->default_state);
++ process->current_state = &process->default_state;
++ process->dpy = dpy;
++ break;
++ }
++ if (process == NULL) {
++ fprintf(stderr, "Too many processes !\n");
++ exit(-1);
++ }
++
++ switch (call) {
++ case _init32_func:
++ case _init64_func:
++ case _exit_process_func:
++ case glXMakeCurrent_func:
++ /* Do nothing */
++ break;
++
++ default:
++#if 0
++ glFlush();
++ glFinish();
++ glXSwapBuffers(dpy, drawable);
++ if (process->current_state == &process->default_state)
++ /* Where do commands like glViewport go when no drawable or
++ * context are current - i.e. after a call to
++ * glXMakeCurrent(dpy, 0, 0) ? */;
++ else
++#endif
++ glXMakeCurrent(dpy, process->current_state->drawable,
++ process->current_state->context);
++ }
++}
++
++int do_function_call(int func_number, arg_t *args, char *ret_string)
++{
++ char ret_char = 0;
++ int ret_int = 0;
++ const char *ret_str = NULL;
++ Display *dpy = process->dpy;
++ Signature *signature = (Signature *) tab_opengl_calls[func_number];
++ int ret_type = signature->ret_type;
++
++ if (parent_dpy)
++ dpy = parent_dpy;
++
++ process->instr_counter++;
++ if (display_function_call)
++ fprintf(stderr, "[%d]> %s\n", process->instr_counter,
++ tab_opengl_calls_name[func_number]);
++
++#ifdef BUFFER_BEGINEND
++ if (process->began) {
++ /* Need to check for any errors now because later we won't have
++ * a chance to report them. */
++ if (beginend_allowed[func_number]) {
++ arg_t *buf = cmd_buffer_alloc(process, signature->nb_args + 1);
++
++ /* TODO: pointer arguments */
++ buf[0] = func_number;
++ memcpy(buf + 1, args, signature->nb_args * sizeof(arg_t));
++ } else if (likely(func_number == glEnd_func)) {
++ process->began = 0;
++
++ glBegin(process->primitive);
++ cmd_buffer_replay(process);
++ glEnd();
++ } else {
++ /* TODO: properly report */
++#ifdef SYSTEMATIC_ERROR_CHECK
++ process->current_state->last_error = INVALID_OPERATION;
++#endif
++ }
++
++ func_number = -1;
++ }
++#endif
++
++ switch (func_number) {
++ case -1:
++ break;
++
++ case _init_func:
++ *(int *) args[1] = 1;
++ break;
++
++ case _synchronize_func:
++ ret_int = 1;
++ break;
++
++ case _exit_process_func:
++ do_disconnect_current();
++ break;
++
++ case _changeWindowState_func:
++ {
++ ClientGLXDrawable client_drawable = to_drawable(args[0]);
++
++ if (display_function_call)
++ fprintf(stderr, "client_drawable=%p\n",
++ (void *) client_drawable);
++
++ GLXDrawable drawable =
++ get_association_clientdrawable_serverdrawable(
++ process, client_drawable);
++ if (drawable) {
++ if (args[1] == IsViewable) {
++ WindowPosStruct pos;
++
++ _get_window_pos(dpy, drawable, &pos);
++ if (pos.map_state != args[1]) {
++ XMapWindow(dpy, drawable);
++
++ int loop = 1; // 1;
++
++ while (loop) {
++ while (XPending(dpy) > 0) {
++ XEvent event;
++
++ XNextEvent(dpy, &event);
++ switch (event.type) {
++ case ConfigureNotify:
++ {
++ if (((XConfigureEvent *) &event)->
++ window == drawable) {
++ loop = 0;
++ }
++ break;
++ }
++ }
++ }
++ break; /* TODO */
++ }
++ }
++ }
++ }
++
++ break;
++ }
++
++ case _moveResizeWindow_func:
++ {
++ int *params = (int *) args[1];
++ ClientGLXDrawable client_drawable = to_drawable(args[0]);
++
++ if (display_function_call)
++ fprintf(stderr, "client_drawable=%p\n",
++ (void *) client_drawable);
++
++ GLXDrawable drawable =
++ get_association_clientdrawable_serverdrawable(
++ process, client_drawable);
++ if (drawable) {
++ WindowPosStruct pos;
++
++ _get_window_pos(dpy, drawable, &pos);
++ if (!
++ (params[0] == pos.x && params[1] == pos.y &&
++ params[2] == pos.width && params[3] == pos.height)) {
++ int redim = !(params[2] == pos.width &&
++ params[3] == pos.height);
++ active_win_x = params[0];
++ active_win_y = params[1];
++
++ fprintf(stderr, "old x=%d y=%d width=%d height=%d\n",
++ pos.x, pos.y, pos.width, pos.height);
++ fprintf(stderr, "new x=%d y=%d width=%d height=%d\n",
++ params[0], params[1], params[2], params[3]);
++ XMoveResizeWindow(dpy, drawable, params[0], params[1],
++ params[2], params[3]);
++ int loop = 0; // = 1
++
++ while (loop) {
++ while (XPending(dpy) > 0) {
++ XEvent event;
++
++ XNextEvent(dpy, &event);
++ switch (event.type) {
++ case ConfigureNotify:
++ {
++ if (((XConfigureEvent *) &event)->
++ window == drawable) {
++ loop = 0;
++ }
++ break;
++ }
++ }
++ }
++ }
++ /* The window should have resized by now, but force the
++ * new size anyway. */
++ _get_window_pos(dpy, drawable, &pos);
++ pos.width = params[2];
++ pos.height = params[3];
++ process->currentDrawablePos = pos;
++ // if (getenv("FORCE_GL_VIEWPORT"))
++ if (redim)
++ glViewport(0, 0, pos.width, pos.height);
++ }
++ }
++ break;
++ }
++
++ case _send_cursor_func:
++ {
++#if 0
++ int x = args[0];
++ int y = args[1];
++ int width = args[2];
++ int height = args[3];
++ int xhot = args[4];
++ int yhot = args[5];
++ int *pixels = (int *) args[6];
++
++ client_cursor.x = x;
++ client_cursor.y = y;
++ client_cursor.width = width;
++ client_cursor.height = height;
++ client_cursor.xhot = xhot;
++ client_cursor.yhot = yhot;
++ if (pixels) {
++ client_cursor.pixels =
++ realloc(client_cursor.pixels,
++ client_cursor.width * client_cursor.height *
++ sizeof(int));
++ memcpy(client_cursor.pixels, pixels,
++ client_cursor.width * client_cursor.height *
++ sizeof(int));
++ }
++ int in_window = (x >= 0 && y >= 0 &&
++ x < process->currentDrawablePos.width &&
++ y < process->currentDrawablePos.height);
++ // fprintf(stderr, "cursor at %d %d (%s)\n", x, y, (in_window) ?
++ // "in window" : "not in window");
++#endif
++ break;
++ }
++
++#ifdef BUFFER_BEGINEND
++ case glBegin_func:
++ process->began = 1;
++ process->primitive = args[0];
++ break;
++#endif
++
++ case glXWaitGL_func:
++ {
++ glXWaitGL();
++ ret_int = 0;
++ break;
++ }
++
++ case glXWaitX_func:
++ {
++ glXWaitX();
++ ret_int = 0;
++ break;
++ }
++
++ case glXChooseVisual_func:
++ {
++ ret_int = glXChooseVisualFunc(dpy, (int *) args[2]);
++ break;
++ }
++
++ case glXQueryExtensionsString_func:
++ {
++ ret_str = glXQueryExtensionsString(dpy, 0);
++ break;
++ }
++
++ case glXQueryServerString_func:
++ {
++ ret_str = glXQueryServerString(dpy, 0, args[2]);
++ break;
++ }
++
++ case glXGetClientString_func:
++ {
++ ret_str = glXGetClientString(dpy, args[1]);
++ break;
++ }
++
++ case glXGetScreenDriver_func:
++ {
++ GET_EXT_PTR(const char *, glXGetScreenDriver, (Display *, int));
++
++ ret_str = ptr_func_glXGetScreenDriver(dpy, 0);
++ break;
++ }
++
++ case glXGetDriverConfig_func:
++ {
++ GET_EXT_PTR(const char *, glXGetDriverConfig, (const char *));
++
++ ret_str = ptr_func_glXGetDriverConfig((const char *) args[0]);
++ break;
++ }
++
++ case glXCreateContext_func:
++ {
++ int visualid = (int) args[1];
++ int fake_shareList = (int) args[2];
++
++ if (1 || display_function_call)
++ fprintf(stderr, "visualid=%d, fake_shareList=%d\n", visualid,
++ fake_shareList);
++
++ GLXContext shareList = get_association_fakecontext_glxcontext(
++ process, fake_shareList);
++ XVisualInfo *vis = get_visual_info_from_visual_id(dpy, visualid);
++ GLXContext ctxt;
++
++ if (vis) {
++ ctxt = glXCreateContext(dpy, vis, shareList, args[3]);
++ } else {
++ vis = get_default_visual(dpy);
++ int saved_visualid = vis->visualid;
++
++ vis->visualid = visualid ?: saved_visualid;
++ ctxt = glXCreateContext(dpy, vis, shareList, args[3]);
++ vis->visualid = saved_visualid;
++ }
++
++ if (ctxt) {
++ int fake_ctxt =++ process->next_available_context_number;
++
++ set_association_fakecontext_visual(process, fake_ctxt, vis);
++ set_association_fakecontext_glxcontext(process,
++ fake_ctxt, ctxt);
++ ret_int = fake_ctxt;
++
++ _create_context(process, ctxt, fake_ctxt, shareList,
++ fake_shareList);
++ } else {
++ ret_int = 0;
++ }
++
++ break;
++ }
++
++
++ case glXCreateNewContext_func:
++ {
++ GET_EXT_PTR(GLXContext, glXCreateNewContext,
++ (Display *, GLXFBConfig, int, GLXContext, int));
++ int client_fbconfig = args[1];
++
++ ret_int = 0;
++ GLXFBConfig fbconfig = get_fbconfig(process, client_fbconfig);
++
++ if (fbconfig) {
++ int fake_shareList = args[3];
++ GLXContext shareList = get_association_fakecontext_glxcontext(
++ process, fake_shareList);
++ process->next_available_context_number++;
++ int fake_ctxt = process->next_available_context_number;
++ GLXContext ctxt = ptr_func_glXCreateNewContext(
++ dpy, fbconfig, args[2], shareList, args[4]);
++ set_association_fakecontext_glxcontext(
++ process, fake_ctxt, ctxt);
++ ret_int = fake_ctxt;
++
++ _create_context(process, ctxt, fake_ctxt, shareList,
++ fake_shareList);
++ }
++ break;
++ }
++
++ case glXCopyContext_func:
++ {
++ int fake_src_ctxt = (int) args[1];
++ int fake_dst_ctxt = (int) args[2];
++ GLXContext src_ctxt;
++ GLXContext dst_ctxt;
++
++ if (display_function_call)
++ fprintf(stderr, "fake_src_ctxt=%i, fake_dst_ctxt=%i\n",
++ fake_src_ctxt, fake_dst_ctxt);
++
++ if (!(src_ctxt = get_association_fakecontext_glxcontext(
++ process, fake_src_ctxt)))
++ fprintf(stderr, "invalid fake_src_ctxt (%i) !\n",
++ fake_src_ctxt);
++ else
++ if (!(dst_ctxt = get_association_fakecontext_glxcontext(
++ process, fake_dst_ctxt))) {
++ fprintf(stderr, "invalid fake_dst_ctxt (%i) !\n",
++ fake_dst_ctxt);
++ } else
++ glXCopyContext(dpy, src_ctxt, dst_ctxt, args[3]);
++
++ break;
++ }
++
++ case glXDestroyContext_func:
++ {
++ int fake_ctxt = (int) args[1];
++
++ if (display_function_call)
++ fprintf(stderr, "fake_ctxt=%d\n", fake_ctxt);
++
++ GLXContext ctxt = get_association_fakecontext_glxcontext(
++ process, fake_ctxt);
++ if (ctxt == NULL) {
++ fprintf(stderr, "invalid fake_ctxt (%p) !\n",
++ (void *) (long) fake_ctxt);
++ } else {
++ int i;
++
++ for (i = 0; i < process->nb_states; i ++) {
++ if (process->glstates[i]->fake_ctxt == fake_ctxt) {
++ if (ctxt == process->current_state->context)
++ process->current_state = &process->default_state;
++
++ int fake_shareList =
++ process->glstates[i]->fake_shareList;
++ process->glstates[i]->ref--;
++ if (process->glstates[i]->ref == 0) {
++ fprintf(stderr,
++ "destroy_gl_state fake_ctxt = %d\n",
++ process->glstates[i]->fake_ctxt);
++ destroy_gl_state(process->glstates[i]);
++ free(process->glstates[i]);
++ memmove(&process->glstates[i],
++ &process->glstates[i + 1],
++ (process->nb_states - i - 1) *
++ sizeof(GLState *));
++ process->nb_states --;
++ }
++
++ if (fake_shareList) {
++ for (i = 0; i < process->nb_states; i++) {
++ if (process->glstates[i]->fake_ctxt ==
++ fake_shareList) {
++ process->glstates[i]->ref--;
++ if (process->glstates[i]->ref == 0) {
++ fprintf(stderr,
++ "destroy_gl_state fake_ctxt = %d\n",
++ process->glstates[i]->
++ fake_ctxt);
++ destroy_gl_state(process->
++ glstates[i]);
++ free(process->glstates[i]);
++ memmove(&process->glstates[i],
++ &process->glstates[i + 1],
++ (process->nb_states - i - 1) *
++ sizeof(GLState *));
++ process->nb_states --;
++ }
++ break;
++ }
++ }
++ }
++
++ glXDestroyContext(dpy, ctxt);
++ unset_association_fakecontext_glxcontext(
++ process, fake_ctxt);
++
++ break;
++ }
++ }
++ }
++ break;
++ }
++
++ case glXQueryVersion_func:
++ {
++ ret_int = glXQueryVersion(dpy, (int *) args[1], (int *) args[2]);
++ break;
++ }
++
++ case glGetString_func:
++ {
++ ret_str = (char *) glGetString(args[0]);
++ break;
++ }
++
++ case glXMakeCurrent_func:
++ {
++ int i;
++ ClientGLXDrawable client_drawable = to_drawable(args[1]);
++ GLXDrawable drawable = 0;
++ int fake_ctxt = (int) args[2];
++
++ if (display_function_call)
++ fprintf(stderr, "client_drawable=%p fake_ctx=%d\n",
++ (void *) client_drawable, fake_ctxt);
++
++ if (client_drawable == 0 && fake_ctxt == 0) {
++ ret_int = glXMakeCurrent(dpy, 0, NULL);
++ process->current_state = &process->default_state;
++ } else if ((drawable = (GLXDrawable)
++ get_association_fakepbuffer_pbuffer(
++ process, client_drawable))) {
++ GLXContext ctxt = get_association_fakecontext_glxcontext(
++ process, fake_ctxt);
++ if (ctxt == NULL) {
++ fprintf(stderr, "invalid fake_ctxt (%d) (*)!\n",
++ fake_ctxt);
++ ret_int = 0;
++ } else
++ ret_int = glXMakeCurrent(dpy, drawable, ctxt);
++ } else {
++ GLXContext ctxt = get_association_fakecontext_glxcontext(
++ process, fake_ctxt);
++ if (ctxt == NULL) {
++ fprintf(stderr, "invalid fake_ctxt (%d)!\n", fake_ctxt);
++ ret_int = 0;
++ } else {
++ drawable = get_association_clientdrawable_serverdrawable(
++ process, client_drawable);
++ if (drawable == 0) {
++ XVisualInfo *vis = get_association_fakecontext_visual(
++ process, fake_ctxt);
++ if (vis == NULL)
++ vis = get_default_visual(dpy);
++ /* if (local_connection) drawable = client_drawable;
++ * else */
++ {
++ if ((int) (long) client_drawable ==
++ RootWindow(dpy, 0) &&
++ local_connection) {
++ drawable = (GLXDrawable) client_drawable;
++ } else {
++ drawable = create_window(
++ dpy, local_connection ?
++ (Window) client_drawable :
++ 0, vis, "", 0, 0, 16, 16);
++ }
++ }
++ set_association_clientdrawable_serverdrawable(process,
++ client_drawable, drawable);
++ }
++
++ ret_int = glXMakeCurrent(dpy, drawable, ctxt);
++ }
++ }
++
++ if (ret_int) {
++ for (i = 0; i < process->nb_states; i ++) {
++ if (process->glstates[i]->fake_ctxt == fake_ctxt) {
++ /* HACK !!! REMOVE */
++ process->current_state = process->glstates[i];
++ process->current_state->drawable = drawable;
++ break;
++ }
++ }
++
++ if (i == process->nb_states) {
++ fprintf(stderr, "error remembering the new context\n");
++ exit(-1);
++ }
++ }
++ break;
++ }
++
++ case glXSwapBuffers_func:
++ {
++ ClientGLXDrawable client_drawable = to_drawable(args[1]);
++
++ if (display_function_call)
++ fprintf(stderr, "client_drawable=%p\n", client_drawable);
++
++ GLXDrawable drawable =
++ get_association_clientdrawable_serverdrawable(
++ process, client_drawable);
++ if (!drawable) {
++ fprintf(stderr, "unknown client_drawable (%p) !\n",
++ (void *) client_drawable);
++ } else {
++#ifdef CURSOR_TRICK
++ if (client_cursor.pixels && local_connection == 0) {
++ glPushAttrib(GL_ALL_ATTRIB_BITS);
++ glPushClientAttrib(GL_ALL_ATTRIB_BITS);
++
++ glMatrixMode(GL_PROJECTION);
++ glPushMatrix();
++ glLoadIdentity();
++ glOrtho(0, process->currentDrawablePos.width,
++ process->currentDrawablePos.height, 0, -1, 1);
++ glMatrixMode(GL_MODELVIEW);
++ glPushMatrix();
++ glLoadIdentity();
++ glPixelZoom(1, -1);
++
++ glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
++ glPixelStorei(GL_UNPACK_SKIP_ROWS, 0);
++ glPixelStorei(GL_UNPACK_SWAP_BYTES, 0);
++ glPixelStorei(GL_UNPACK_LSB_FIRST, 0);
++ glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
++ glShadeModel(GL_SMOOTH);
++
++ glEnable(GL_BLEND);
++ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
++ glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
++
++ int i, numUnits;
++
++ glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &numUnits);
++ for (i = 0; i < numUnits; i++) {
++ do_glActiveTextureARB(GL_TEXTURE0_ARB + i);
++ glDisable(GL_TEXTURE_1D);
++ glDisable(GL_TEXTURE_2D);
++ glDisable(GL_TEXTURE_3D);
++ }
++ glDisable(GL_ALPHA_TEST);
++ glDisable(GL_DEPTH_TEST);
++ glDisable(GL_STENCIL_TEST);
++ glDisable(GL_SCISSOR_TEST);
++ glDisable(GL_FRAGMENT_PROGRAM_ARB);
++ glDisable(GL_VERTEX_PROGRAM_ARB);
++ do_glUseProgramObjectARB(0);
++
++ // memset(client_cursor.pixels, 255, client_cursor.width
++ // * client_cursor.height * sizeof(int));
++
++ glRasterPos2d(client_cursor.x - client_cursor.xhot,
++ client_cursor.y - client_cursor.yhot);
++ glDrawPixels(client_cursor.width, client_cursor.height,
++ GL_BGRA, GL_UNSIGNED_BYTE,
++ client_cursor.pixels);
++
++ glMatrixMode(GL_MODELVIEW);
++ glPopMatrix();
++
++ glMatrixMode(GL_PROJECTION);
++ glPopMatrix();
++
++ glPopClientAttrib();
++ glPopAttrib();
++ }
++#endif
++
++ ////////// HORRIBLE HORRIBLE HACK
++ if (drawable != active_win && active_win) {
++ glXMakeCurrent(dpy, active_win,
++ processes[0].current_state->context);
++ glXSwapBuffers(dpy, active_win);
++ glXMakeCurrent(dpy, process->current_state->drawable,
++ process->current_state->context);
++ }
++ glXSwapBuffers(dpy, drawable);
++ }
++ break;
++ }
++
++ case glXIsDirect_func:
++ {
++ int fake_ctxt = (int) args[1];
++
++ if (display_function_call)
++ fprintf(stderr, "fake_ctx=%x\n", fake_ctxt);
++ GLXContext ctxt =
++ get_association_fakecontext_glxcontext(process, fake_ctxt);
++ if (ctxt == NULL) {
++ fprintf(stderr, "invalid fake_ctxt (%x) !\n", fake_ctxt);
++ ret_char = False;
++ } else {
++ ret_char = glXIsDirect(dpy, ctxt);
++ }
++ break;
++ }
++
++ case glXGetConfig_func:
++ {
++ int visualid = args[1];
++ XVisualInfo *vis = NULL;
++
++ if (visualid)
++ vis = get_visual_info_from_visual_id(dpy, visualid);
++ if (vis == NULL)
++ vis = get_default_visual(dpy);
++ ret_int = glXGetConfig(dpy, vis, args[2], (int *) args[3]);
++ break;
++ }
++
++ case glXGetConfig_extended_func:
++ {
++ int visualid = args[1];
++ int n = args[2];
++ int i;
++ XVisualInfo *vis = NULL;
++ int *attribs = (int *) args[3];
++ int *values = (int *) args[4];
++ int *res = (int *) args[5];
++
++ if (visualid)
++ vis = get_visual_info_from_visual_id(dpy, visualid);
++ if (vis == NULL)
++ vis = get_default_visual(dpy);
++
++ for (i = 0; i < n; i++) {
++ res[i] = glXGetConfig(dpy, vis, attribs[i], &values[i]);
++ }
++ break;
++ }
++
++ case glXUseXFont_func:
++ {
++ /* implementation is client-side only :-) */
++ break;
++ }
++
++ case glXQueryExtension_func:
++ {
++ ret_int =
++ glXQueryExtension(dpy, (int *) args[1], (int *) args[2]);
++ break;
++ }
++
++ case glXChooseFBConfig_func:
++ {
++ GET_EXT_PTR(GLXFBConfig *, glXChooseFBConfig,
++ (Display *, int, int *, int *));
++ if (process->nfbconfig == MAX_FBCONFIG) {
++ *(int *) args[3] = 0;
++ ret_int = 0;
++ } else {
++ GLXFBConfig *fbconfigs =
++ ptr_func_glXChooseFBConfig(dpy, args[1], (int *) args[2],
++ (int *) args[3]);
++ if (fbconfigs) {
++ process->fbconfigs[process->nfbconfig] = fbconfigs;
++ process->fbconfigs_max[process->nfbconfig] =
++ *(int *) args[3];
++ process->nfbconfig++;
++ ret_int = 1 + process->nfbconfig_total;
++ process->nfbconfig_total +=
++ process->fbconfigs_max[process->nfbconfig];
++ } else {
++ ret_int = 0;
++ }
++ }
++ break;
++ }
++
++ case glXChooseFBConfigSGIX_func:
++ {
++ GET_EXT_PTR(GLXFBConfigSGIX *, glXChooseFBConfigSGIX,
++ (Display *, int, int *, int *));
++ if (process->nfbconfig == MAX_FBCONFIG) {
++ *(int *) args[3] = 0;
++ ret_int = 0;
++ } else {
++ GLXFBConfigSGIX *fbconfigs =
++ ptr_func_glXChooseFBConfigSGIX(dpy, args[1],
++ (int *) args[2],
++ (int *) args[3]);
++ if (fbconfigs) {
++ process->fbconfigs[process->nfbconfig] = fbconfigs;
++ process->fbconfigs_max[process->nfbconfig] =
++ *(int *) args[3];
++ process->nfbconfig++;
++ ret_int = 1 + process->nfbconfig_total;
++ process->nfbconfig_total +=
++ process->fbconfigs_max[process->nfbconfig];
++ } else {
++ ret_int = 0;
++ }
++ }
++ break;
++ }
++
++ case glXGetFBConfigs_func:
++ {
++ GET_EXT_PTR(GLXFBConfig *, glXGetFBConfigs,
++ (Display *, int, int *));
++ if (process->nfbconfig == MAX_FBCONFIG) {
++ *(int *) args[2] = 0;
++ ret_int = 0;
++ } else {
++ GLXFBConfig *fbconfigs =
++ ptr_func_glXGetFBConfigs(dpy, args[1], (int *) args[2]);
++ if (fbconfigs) {
++ process->fbconfigs[process->nfbconfig] = fbconfigs;
++ process->fbconfigs_max[process->nfbconfig] =
++ *(int *) args[2];
++ process->nfbconfig++;
++ ret_int = 1 + process->nfbconfig_total;
++ process->nfbconfig_total +=
++ process->fbconfigs_max[process->nfbconfig];
++ } else {
++ ret_int = 0;
++ }
++ }
++ break;
++ }
++
++ case glXCreatePbuffer_func:
++ {
++ GET_EXT_PTR(GLXPbuffer, glXCreatePbuffer,
++ (Display *, GLXFBConfig, int *));
++ int client_fbconfig = args[1];
++
++ ret_int = 0;
++ GLXFBConfig fbconfig = get_fbconfig(process, client_fbconfig);
++
++ if (fbconfig) {
++ GLXPbuffer pbuffer =
++ ptr_func_glXCreatePbuffer(dpy, fbconfig, (int *) args[2]);
++ fprintf(stderr, "glXCreatePbuffer --> %x\n", (int) pbuffer);
++ if (pbuffer) {
++ ClientGLXDrawable fake_pbuffer = to_drawable(
++ ++ process->next_available_pbuffer_number);
++
++ set_association_fakepbuffer_pbuffer(
++ process, fake_pbuffer, pbuffer);
++ fprintf(stderr,
++ "set_association_fakepbuffer_pbuffer(%p, %x)\n",
++ fake_pbuffer, (int) (long) pbuffer);
++ ret_int = (int) (long) fake_pbuffer;
++ }
++ }
++ break;
++ }
++
++ case glXCreateGLXPbufferSGIX_func:
++ {
++ GET_EXT_PTR(GLXPbufferSGIX, glXCreateGLXPbufferSGIX,
++ (Display *, GLXFBConfig, int, int, int *));
++ int client_fbconfig = args[1];
++
++ ret_int = 0;
++ GLXFBConfig fbconfig = get_fbconfig(process, client_fbconfig);
++
++ if (fbconfig) {
++ GLXPbufferSGIX pbuffer = ptr_func_glXCreateGLXPbufferSGIX(
++ dpy, fbconfig,
++ args[2], args[3], (int *) args[4]);
++ if (pbuffer) {
++ ClientGLXDrawable fake_pbuffer = to_drawable(
++ ++ process->next_available_pbuffer_number);
++
++ set_association_fakepbuffer_pbuffer(
++ process, fake_pbuffer, pbuffer);
++ ret_int = (int) (long) fake_pbuffer;
++ }
++ }
++ break;
++ }
++
++ case glXDestroyPbuffer_func:
++ {
++ GET_EXT_PTR(void, glXDestroyPbuffer, (Display *, GLXPbuffer));
++ ClientGLXDrawable fake_pbuffer = to_drawable(args[1]);
++
++ if (display_function_call)
++ fprintf(stderr, "fake_pbuffer=%p\n", fake_pbuffer);
++
++ GLXPbuffer pbuffer = get_association_fakepbuffer_pbuffer(
++ process, fake_pbuffer);
++ if (pbuffer == 0) {
++ fprintf(stderr, "invalid fake_pbuffer (%p) !\n",
++ fake_pbuffer);
++ } else {
++ if (!is_gl_vendor_ati(dpy))
++ ptr_func_glXDestroyPbuffer(dpy, pbuffer);
++ unset_association_fakepbuffer_pbuffer(process, fake_pbuffer);
++ }
++ break;
++ }
++
++ case glXDestroyGLXPbufferSGIX_func:
++ {
++ GET_EXT_PTR(void, glXDestroyGLXPbufferSGIX,
++ (Display *, GLXPbuffer));
++ ClientGLXDrawable fake_pbuffer = to_drawable(args[1]);
++
++ if (display_function_call)
++ fprintf(stderr, "fake_pbuffer=%p\n", fake_pbuffer);
++
++ GLXPbuffer pbuffer = get_association_fakepbuffer_pbuffer(
++ process, fake_pbuffer);
++ if (pbuffer == 0) {
++ fprintf(stderr, "invalid fake_pbuffer (%p) !\n",
++ fake_pbuffer);
++ } else {
++ if (!is_gl_vendor_ati(dpy))
++ ptr_func_glXDestroyGLXPbufferSGIX(dpy, pbuffer);
++ unset_association_fakepbuffer_pbuffer(process, fake_pbuffer);
++ }
++ break;
++ }
++
++ case glXBindTexImageATI_func:
++ {
++ GET_EXT_PTR(void, glXBindTexImageATI,
++ (Display *, GLXPbuffer, int));
++ ClientGLXDrawable fake_pbuffer = to_drawable(args[1]);
++
++ if (display_function_call)
++ fprintf(stderr, "fake_pbuffer=%p\n",
++ fake_pbuffer);
++
++ GLXPbuffer pbuffer = get_association_fakepbuffer_pbuffer(
++ process, fake_pbuffer);
++ if (pbuffer == 0) {
++ fprintf(stderr,
++ "glXBindTexImageATI : invalid fake_pbuffer (%p) !\n",
++ fake_pbuffer);
++ } else {
++ ptr_func_glXBindTexImageATI(dpy, pbuffer, args[2]);
++ }
++ break;
++ }
++
++ case glXReleaseTexImageATI_func:
++ {
++ GET_EXT_PTR(void, glXReleaseTexImageATI,
++ (Display *, GLXPbuffer, int));
++ ClientGLXDrawable fake_pbuffer = to_drawable(args[1]);
++
++ if (display_function_call)
++ fprintf(stderr, "fake_pbuffer=%d\n",
++ (int) (long) fake_pbuffer);
++
++ GLXPbuffer pbuffer = get_association_fakepbuffer_pbuffer(
++ process, fake_pbuffer);
++ if (pbuffer == 0) {
++ fprintf(stderr,
++ "glXReleaseTexImageATI : invalid fake_pbuffer (%d) !\n",
++ (int) (long) fake_pbuffer);
++ } else {
++ ptr_func_glXReleaseTexImageATI(dpy, pbuffer, args[2]);
++ }
++ break;
++ }
++
++ case glXBindTexImageARB_func:
++ {
++ GET_EXT_PTR(Bool, glXBindTexImageARB,
++ (Display *, GLXPbuffer, int));
++ ClientGLXDrawable fake_pbuffer = to_drawable(args[1]);
++
++ if (display_function_call)
++ fprintf(stderr, "fake_pbuffer=%p\n", fake_pbuffer);
++
++ GLXPbuffer pbuffer = get_association_fakepbuffer_pbuffer(
++ process, fake_pbuffer);
++ if (pbuffer == 0) {
++ fprintf(stderr,
++ "glXBindTexImageARB : invalid fake_pbuffer (%p) !\n",
++ fake_pbuffer);
++ ret_int = 0;
++ } else {
++ ret_int = ptr_func_glXBindTexImageARB(dpy, pbuffer, args[2]);
++ }
++ break;
++ }
++
++ case glXReleaseTexImageARB_func:
++ {
++ GET_EXT_PTR(Bool, glXReleaseTexImageARB,
++ (Display *, GLXPbuffer, int));
++ ClientGLXDrawable fake_pbuffer = to_drawable(args[1]);
++
++ if (display_function_call)
++ fprintf(stderr, "fake_pbuffer=%p\n", fake_pbuffer);
++
++ GLXPbuffer pbuffer = get_association_fakepbuffer_pbuffer(
++ process, fake_pbuffer);
++ if (pbuffer == 0) {
++ fprintf(stderr,
++ "glXReleaseTexImageARB : invalid fake_pbuffer (%p) !\n",
++ fake_pbuffer);
++ ret_int = 0;
++ } else {
++ ret_int =
++ ptr_func_glXReleaseTexImageARB(dpy, pbuffer, args[2]);
++ }
++ break;
++ }
++
++ case glXGetFBConfigAttrib_func:
++ {
++ GET_EXT_PTR(int, glXGetFBConfigAttrib,
++ (Display *, GLXFBConfig, int, int *));
++ int client_fbconfig = args[1];
++
++ ret_int = 0;
++ GLXFBConfig fbconfig = get_fbconfig(process, client_fbconfig);
++
++ if (fbconfig)
++ ret_int =
++ ptr_func_glXGetFBConfigAttrib(dpy, fbconfig, args[2],
++ (int *) args[3]);
++ break;
++ }
++
++ case glXGetFBConfigAttrib_extended_func:
++ {
++ GET_EXT_PTR(int, glXGetFBConfigAttrib,
++ (Display *, GLXFBConfig, int, int *));
++ int client_fbconfig = args[1];
++ int n = args[2];
++ int i;
++ int *attribs = (int *) args[3];
++ int *values = (int *) args[4];
++ int *res = (int *) args[5];
++ GLXFBConfig fbconfig = get_fbconfig(process, client_fbconfig);
++
++ for (i = 0; i < n; i++) {
++ if (fbconfig) {
++ res[i] =
++ ptr_func_glXGetFBConfigAttrib(dpy, fbconfig,
++ attribs[i], &values[i]);
++ } else {
++ res[i] = 0;
++ }
++ }
++ break;
++ }
++
++ case glXGetFBConfigAttribSGIX_func:
++ {
++ GET_EXT_PTR(int, glXGetFBConfigAttribSGIX,
++ (Display *, GLXFBConfigSGIX, int, int *));
++ int client_fbconfig = args[1];
++
++ ret_int = 0;
++ GLXFBConfig fbconfig = get_fbconfig(process, client_fbconfig);
++
++ if (fbconfig)
++ ret_int =
++ ptr_func_glXGetFBConfigAttribSGIX(dpy,
++ (GLXFBConfigSGIX)
++ fbconfig, args[2],
++ (int *) args[3]);
++ break;
++ }
++
++ case glXQueryContext_func:
++ {
++ GET_EXT_PTR(int, glXQueryContext,
++ (Display *, GLXContext, int, int *));
++ int fake_ctxt = (int) args[1];
++
++ if (display_function_call)
++ fprintf(stderr, "fake_ctx=%i\n", fake_ctxt);
++ GLXContext ctxt =
++ get_association_fakecontext_glxcontext(process, fake_ctxt);
++ if (ctxt == NULL) {
++ fprintf(stderr, "invalid fake_ctxt (%i) !\n", fake_ctxt);
++ ret_int = 0;
++ } else {
++ ret_int =
++ ptr_func_glXQueryContext(dpy, ctxt, args[2],
++ (int *) args[3]);
++ }
++ break;
++ }
++
++ case glXQueryDrawable_func:
++ {
++ GET_EXT_PTR(void, glXQueryDrawable,
++ (Display *, GLXDrawable, int, int *));
++ ClientGLXDrawable client_drawable = to_drawable(args[1]);
++ GLXDrawable drawable =
++ get_association_clientdrawable_serverdrawable(
++ process, client_drawable);
++
++ if (display_function_call)
++ fprintf(stderr, "client_drawable=%p\n",
++ client_drawable);
++
++ if (!drawable)
++ fprintf(stderr, "invalid client_drawable (%p) !\n",
++ client_drawable);
++ else
++ ptr_func_glXQueryDrawable(dpy, drawable,
++ args[2], (int *) args[3]);
++
++ break;
++ }
++
++ case glXQueryGLXPbufferSGIX_func:
++ {
++ GET_EXT_PTR(int, glXQueryGLXPbufferSGIX,
++ (Display *, GLXFBConfigSGIX, int, int *));
++ int client_fbconfig = args[1];
++
++ ret_int = 0;
++ GLXFBConfig fbconfig = get_fbconfig(process, client_fbconfig);
++
++ if (fbconfig)
++ ret_int = ptr_func_glXQueryGLXPbufferSGIX(dpy,
++ (GLXFBConfigSGIX) fbconfig,
++ args[2], (int *) args[3]);
++ break;
++ }
++
++ case glXCreateContextWithConfigSGIX_func:
++ {
++ GET_EXT_PTR(GLXContext, glXCreateContextWithConfigSGIX,
++ (Display *, GLXFBConfigSGIX, int, GLXContext, int));
++ int client_fbconfig = args[1];
++
++ ret_int = 0;
++ GLXFBConfig fbconfig = get_fbconfig(process, client_fbconfig);
++
++ if (fbconfig) {
++ GLXContext shareList = get_association_fakecontext_glxcontext(
++ process, (int) args[3]);
++ process->next_available_context_number++;
++ int fake_ctxt = process->next_available_context_number;
++ GLXContext ctxt = ptr_func_glXCreateContextWithConfigSGIX(
++ dpy, (GLXFBConfigSGIX) fbconfig, args[2],
++ shareList, args[4]);
++ set_association_fakecontext_glxcontext(
++ process, fake_ctxt, ctxt);
++ ret_int = fake_ctxt;
++ }
++ break;
++ }
++
++ case glXGetVisualFromFBConfig_func:
++ {
++ GET_EXT_PTR(XVisualInfo *, glXGetVisualFromFBConfig,
++ (Display *, GLXFBConfig));
++ int client_fbconfig = args[1];
++
++ ret_int = 0;
++ GLXFBConfig fbconfig = get_fbconfig(process, client_fbconfig);
++
++ if (fbconfig) {
++ XVisualInfo *vis =
++ ptr_func_glXGetVisualFromFBConfig(dpy, fbconfig);
++ ret_int = (vis) ? vis->visualid : 0;
++ if (vis) {
++ tabAssocAttribListVisual =
++ realloc(tabAssocAttribListVisual,
++ sizeof(AssocAttribListVisual) *
++ (nTabAssocAttribListVisual + 1));
++ tabAssocAttribListVisual[nTabAssocAttribListVisual].
++ attribListLength = 0;
++ tabAssocAttribListVisual[nTabAssocAttribListVisual].
++ attribList = NULL;
++ tabAssocAttribListVisual[nTabAssocAttribListVisual].
++ visInfo = vis;
++ nTabAssocAttribListVisual++;
++ }
++ if (display_function_call)
++ fprintf(stderr, "visualid = %d\n", ret_int);
++ }
++ break;
++ }
++
++ case glXSwapIntervalSGI_func:
++ {
++ GET_EXT_PTR(int, glXSwapIntervalSGI, (int));
++
++ ret_int = ptr_func_glXSwapIntervalSGI(args[0]);
++ break;
++ }
++
++ case glXGetProcAddress_fake_func:
++ {
++ if (display_function_call)
++ fprintf(stderr, "%s\n", (char *) args[0]);
++ ret_int = glXGetProcAddressARB((const GLubyte *) args[0]) != NULL;
++ break;
++ }
++
++ case glXGetProcAddress_global_fake_func:
++ {
++ int nbElts = args[0];
++ char *huge_buffer = (char *) args[1];
++ char *result = (char *) args[2];
++ int i;
++
++ for (i = 0; i < nbElts; i++) {
++ int len = strlen(huge_buffer);
++
++ result[i] =
++ glXGetProcAddressARB((const GLubyte *) huge_buffer) !=
++ NULL;
++ huge_buffer += len + 1;
++ }
++ break;
++ }
++
++/* Begin of texture stuff */
++ case glBindTexture_func:
++ case glBindTextureEXT_func:
++ {
++ int target = args[0];
++ unsigned int client_texture = args[1];
++ unsigned int server_texture;
++
++ if (client_texture == 0) {
++ glBindTexture(target, 0);
++ } else {
++ alloc_value(process->current_state->textureAllocator,
++ client_texture);
++ server_texture =
++ process->current_state->tabTextures[client_texture];
++ if (server_texture == 0) {
++ glGenTextures(1, &server_texture);
++ process->current_state->tabTextures[client_texture] =
++ server_texture;
++ }
++ glBindTexture(target, server_texture);
++ }
++ break;
++ }
++
++ case glGenTextures_fake_func:
++ {
++ GET_EXT_PTR(void, glGenTextures, (GLsizei n, GLuint *textures));
++ int i;
++ int n = args[0];
++ unsigned int *clientTabTextures = malloc(n * sizeof(int));
++ unsigned int *serverTabTextures = malloc(n * sizeof(int));
++
++ alloc_range(process->current_state->textureAllocator, n,
++ clientTabTextures);
++
++ ptr_func_glGenTextures(n, serverTabTextures);
++ for (i = 0; i < n; i++) {
++ process->current_state->tabTextures[clientTabTextures[i]] =
++ serverTabTextures[i];
++ }
++
++ free(clientTabTextures);
++ free(serverTabTextures);
++ break;
++ }
++
++
++ case glDeleteTextures_func:
++ {
++ GET_EXT_PTR(void, glDeleteTextures,
++ (GLsizei n, const GLuint *textures));
++ int i;
++ int n = args[0];
++ unsigned int *clientTabTextures = (unsigned int *) args[1];
++
++ delete_range(process->current_state->textureAllocator, n,
++ clientTabTextures);
++
++ unsigned int *serverTabTextures = malloc(n * sizeof(int));
++
++ for (i = 0; i < n; i++) {
++ serverTabTextures[i] =
++ get_server_texture(process, clientTabTextures[i]);
++ }
++ ptr_func_glDeleteTextures(n, serverTabTextures);
++ for (i = 0; i < n; i++) {
++ process->current_state->tabTextures[clientTabTextures[i]] = 0;
++ }
++ free(serverTabTextures);
++ break;
++ }
++
++ case glPrioritizeTextures_func:
++ {
++ GET_EXT_PTR(void, glPrioritizeTextures,
++ (GLsizei n, const GLuint *textures,
++ const GLclampf *priorities));
++
++ int i;
++ int n = args[0];
++ unsigned int *textures = (unsigned int *) args[1];
++
++ for (i = 0; i < n; i++) {
++ textures[i] = get_server_texture(process, textures[i]);
++ }
++ ptr_func_glPrioritizeTextures(n, textures,
++ (const GLclampf *) args[2]);
++ break;
++ }
++
++ case glAreTexturesResident_func:
++ {
++ GET_EXT_PTR(void, glAreTexturesResident,
++ (GLsizei n, const GLuint *textures,
++ GLboolean *residences));
++ int i;
++ int n = args[0];
++ unsigned int *textures = (unsigned int *) args[1];
++
++ for (i = 0; i < n; i++) {
++ textures[i] = get_server_texture(process, textures[i]);
++ }
++ ptr_func_glAreTexturesResident(n, textures,
++ (GLboolean *) args[2]);
++ break;
++ }
++
++ case glIsTexture_func:
++ case glIsTextureEXT_func:
++ {
++ GET_EXT_PTR(GLboolean, glIsTexture, (GLuint texture));
++ unsigned int client_texture = args[0];
++ unsigned int server_texture =
++ get_server_texture(process, client_texture);
++ if (server_texture)
++ ret_char = ptr_func_glIsTexture(server_texture);
++ else
++ ret_char = 0;
++ break;
++ }
++
++ case glFramebufferTexture1DEXT_func:
++ {
++ GET_EXT_PTR(void, glFramebufferTexture1DEXT,
++ (int, int, int, int, int));
++ unsigned int client_texture = args[3];
++ unsigned int server_texture =
++ get_server_texture(process, client_texture);
++ if (server_texture)
++ ptr_func_glFramebufferTexture1DEXT(args[0], args[1], args[2],
++ server_texture, args[4]);
++ break;
++ }
++
++ case glFramebufferTexture2DEXT_func:
++ {
++ GET_EXT_PTR(void, glFramebufferTexture2DEXT,
++ (int, int, int, int, int));
++ unsigned int client_texture = args[3];
++ unsigned int server_texture =
++ get_server_texture(process, client_texture);
++ if (server_texture)
++ ptr_func_glFramebufferTexture2DEXT(args[0], args[1], args[2],
++ server_texture, args[4]);
++ break;
++ }
++
++ case glFramebufferTexture3DEXT_func:
++ {
++ GET_EXT_PTR(void, glFramebufferTexture3DEXT,
++ (int, int, int, int, int, int));
++ unsigned int client_texture = args[3];
++ unsigned int server_texture =
++ get_server_texture(process, client_texture);
++ if (server_texture)
++ ptr_func_glFramebufferTexture3DEXT(args[0], args[1], args[2],
++ server_texture, args[4],
++ args[5]);
++ break;
++ }
++/* End of texture stuff */
++
++/* Begin of list stuff */
++ case glIsList_func:
++ {
++ unsigned int client_list = args[0];
++ unsigned int server_list = get_server_list(process, client_list);
++
++ if (server_list)
++ ret_char = glIsList(server_list);
++ else
++ ret_char = 0;
++ break;
++ }
++
++ case glDeleteLists_func:
++ {
++ int i;
++ unsigned int first_client = args[0];
++ int n = args[1];
++
++ unsigned int first_server =
++ get_server_list(process, first_client);
++ for (i = 0; i < n; i++) {
++ if (get_server_list(process, first_client + i) !=
++ first_server + i)
++ break;
++ }
++ if (i == n) {
++ glDeleteLists(first_server, n);
++ } else {
++ for (i = 0; i < n; i++) {
++ glDeleteLists(get_server_list(process, first_client + i),
++ 1);
++ }
++ }
++
++ for (i = 0; i < n; i++) {
++ process->current_state->tabLists[first_client + i] = 0;
++ }
++ delete_consecutive_values(process->current_state->listAllocator,
++ first_client, n);
++ break;
++ }
++
++ case glGenLists_fake_func:
++ {
++ int i;
++ int n = args[0];
++ unsigned int server_first = glGenLists(n);
++
++ if (server_first) {
++ unsigned int client_first =
++ alloc_range(process->current_state->listAllocator, n,
++ NULL);
++ for (i = 0; i < n; i++) {
++ process->current_state->tabLists[client_first + i] =
++ server_first + i;
++ }
++ }
++ break;
++ }
++
++ case glNewList_func:
++ {
++ unsigned int client_list = args[0];
++ int mode = args[1];
++
++ alloc_value(process->current_state->listAllocator, client_list);
++ unsigned int server_list = get_server_list(process, client_list);
++
++ if (server_list == 0) {
++ server_list = glGenLists(1);
++ process->current_state->tabLists[client_list] = server_list;
++ }
++ glNewList(server_list, mode);
++ break;
++ }
++
++ case glCallList_func:
++ {
++ unsigned int client_list = args[0];
++ unsigned int server_list = get_server_list(process, client_list);
++
++ glCallList(server_list);
++ break;
++ }
++
++ case glCallLists_func:
++ {
++ int i;
++ int n = args[0];
++ int type = args[1];
++ const GLvoid *lists = (const GLvoid *) args[2];
++ int *new_lists = malloc(sizeof(int) * n);
++
++ for (i = 0; i < n; i++) {
++ new_lists[i] =
++ get_server_list(process, translate_id(i, type, lists));
++ }
++ glCallLists(n, GL_UNSIGNED_INT, new_lists);
++ free(new_lists);
++ break;
++ }
++
++
++/* End of list stuff */
++
++/* Begin of buffer stuff */
++ case glBindBufferARB_func:
++ {
++ GET_EXT_PTR(void, glBindBufferARB, (int, int));
++ int target = args[0];
++ unsigned int client_buffer = args[1];
++ unsigned int server_buffer;
++
++ if (client_buffer == 0) {
++ ptr_func_glBindBufferARB(target, 0);
++ } else {
++ server_buffer = get_server_buffer(process, client_buffer);
++ ptr_func_glBindBufferARB(target, server_buffer);
++ }
++ break;
++ }
++
++ case glGenBuffersARB_fake_func:
++ {
++ GET_EXT_PTR(void, glGenBuffersARB, (int, unsigned int *));
++ int i;
++ int n = args[0];
++ unsigned int *clientTabBuffers = malloc(n * sizeof(int));
++ unsigned int *serverTabBuffers = malloc(n * sizeof(int));
++
++ alloc_range(process->current_state->bufferAllocator, n,
++ clientTabBuffers);
++
++ ptr_func_glGenBuffersARB(n, serverTabBuffers);
++ for (i = 0; i < n; i++) {
++ process->current_state->tabBuffers[clientTabBuffers[i]] =
++ serverTabBuffers[i];
++ }
++
++ free(clientTabBuffers);
++ free(serverTabBuffers);
++ break;
++ }
++
++
++ case glDeleteBuffersARB_func:
++ {
++ GET_EXT_PTR(void, glDeleteBuffersARB, (int, int *));
++ int i;
++ int n = args[0];
++ unsigned int *clientTabBuffers = (unsigned int *) args[1];
++
++ delete_range(process->current_state->bufferAllocator, n,
++ clientTabBuffers);
++
++ int *serverTabBuffers = malloc(n * sizeof(int));
++
++ for (i = 0; i < n; i++) {
++ serverTabBuffers[i] =
++ get_server_buffer(process, clientTabBuffers[i]);
++ }
++ ptr_func_glDeleteBuffersARB(n, serverTabBuffers);
++ for (i = 0; i < n; i++) {
++ process->current_state->tabBuffers[clientTabBuffers[i]] = 0;
++ }
++ free(serverTabBuffers);
++ break;
++ }
++
++ case glIsBufferARB_func:
++ {
++ GET_EXT_PTR(int, glIsBufferARB, (int));
++ unsigned int client_buffer = args[0];
++ unsigned int server_buffer =
++ get_server_buffer(process, client_buffer);
++ if (server_buffer)
++ ret_int = ptr_func_glIsBufferARB(server_buffer);
++ else
++ ret_int = 0;
++ break;
++ }
++
++/* End of buffer stuff */
++
++ case glShaderSourceARB_fake_func:
++ {
++ GET_EXT_PTR(void, glShaderSourceARB, (int, int, char **, void *));
++ int size = args[1];
++ int i;
++ int acc_length = 0;
++ GLcharARB **tab_prog = malloc(size * sizeof(GLcharARB *));
++ int *tab_length = (int *) args[3];
++
++ for (i = 0; i < size; i++) {
++ tab_prog[i] = ((GLcharARB *) args[2]) + acc_length;
++ acc_length += tab_length[i];
++ }
++ ptr_func_glShaderSourceARB(args[0], args[1], tab_prog,
++ tab_length);
++ free(tab_prog);
++ break;
++ }
++
++ case glShaderSource_fake_func:
++ {
++ GET_EXT_PTR(void, glShaderSource, (int, int, char **, void *));
++ int size = args[1];
++ int i;
++ int acc_length = 0;
++ GLcharARB **tab_prog = malloc(size * sizeof(GLcharARB *));
++ int *tab_length = (int *) args[3];
++
++ for (i = 0; i < size; i++) {
++ tab_prog[i] = ((GLcharARB *) args[2]) + acc_length;
++ acc_length += tab_length[i];
++ }
++ ptr_func_glShaderSource(args[0], args[1], tab_prog, tab_length);
++ free(tab_prog);
++ break;
++ }
++
++ case glVertexPointer_fake_func:
++ {
++ int offset = args[0];
++ int size = args[1];
++ int type = args[2];
++ int stride = args[3];
++ int bytes_size = args[4];
++
++ process->current_state->vertexPointerSize =
++ MAX(process->current_state->vertexPointerSize,
++ offset + bytes_size);
++ process->current_state->vertexPointer =
++ realloc(process->current_state->vertexPointer,
++ process->current_state->vertexPointerSize);
++ memcpy(process->current_state->vertexPointer + offset,
++ (void *) args[5], bytes_size);
++ /* fprintf(stderr, "glVertexPointer_fake_func size=%d, type=%d,
++ * stride=%d, byte_size=%d\n", size, type, stride, bytes_size); */
++ glVertexPointer(size, type, stride,
++ process->current_state->vertexPointer);
++ break;
++ }
++
++ case glNormalPointer_fake_func:
++ {
++ int offset = args[0];
++ int type = args[1];
++ int stride = args[2];
++ int bytes_size = args[3];
++
++ process->current_state->normalPointerSize =
++ MAX(process->current_state->normalPointerSize,
++ offset + bytes_size);
++ process->current_state->normalPointer =
++ realloc(process->current_state->normalPointer,
++ process->current_state->normalPointerSize);
++ memcpy(process->current_state->normalPointer + offset,
++ (void *) args[4], bytes_size);
++ // fprintf(stderr, "glNormalPointer_fake_func type=%d, stride=%d,
++ // byte_size=%d\n", type, stride, bytes_size);
++ glNormalPointer(type, stride,
++ process->current_state->normalPointer);
++ break;
++ }
++
++ case glIndexPointer_fake_func:
++ {
++ int offset = args[0];
++ int type = args[1];
++ int stride = args[2];
++ int bytes_size = args[3];
++
++ process->current_state->indexPointerSize =
++ MAX(process->current_state->indexPointerSize,
++ offset + bytes_size);
++ process->current_state->indexPointer =
++ realloc(process->current_state->indexPointer,
++ process->current_state->indexPointerSize);
++ memcpy(process->current_state->indexPointer + offset,
++ (void *) args[4], bytes_size);
++ // fprintf(stderr, "glIndexPointer_fake_func type=%d, stride=%d,
++ // byte_size=%d\n", type, stride, bytes_size);
++ glIndexPointer(type, stride,
++ process->current_state->indexPointer);
++ break;
++ }
++
++ case glEdgeFlagPointer_fake_func:
++ {
++ int offset = args[0];
++ int stride = args[1];
++ int bytes_size = args[2];
++
++ process->current_state->edgeFlagPointerSize =
++ MAX(process->current_state->edgeFlagPointerSize,
++ offset + bytes_size);
++ process->current_state->edgeFlagPointer =
++ realloc(process->current_state->edgeFlagPointer,
++ process->current_state->edgeFlagPointerSize);
++ memcpy(process->current_state->edgeFlagPointer + offset,
++ (void *) args[3], bytes_size);
++ // fprintf(stderr, "glEdgeFlagPointer_fake_func stride = %d,
++ // bytes_size=%d\n", stride, bytes_size);
++ glEdgeFlagPointer(stride,
++ process->current_state->edgeFlagPointer);
++ break;
++ }
++
++ case glVertexAttribPointerARB_fake_func:
++ {
++ GET_EXT_PTR(void, glVertexAttribPointerARB,
++ (int, int, int, int, int, void *));
++ int offset = args[0];
++ int index = args[1];
++ int size = args[2];
++ int type = args[3];
++ int normalized = args[4];
++ int stride = args[5];
++ int bytes_size = args[6];
++
++ process->current_state->vertexAttribPointerSize[index] =
++ MAX(process->current_state->vertexAttribPointerSize[index],
++ offset + bytes_size);
++ process->current_state->vertexAttribPointer[index] =
++ realloc(process->current_state->vertexAttribPointer[index],
++ process->current_state->
++ vertexAttribPointerSize[index]);
++ memcpy(process->current_state->vertexAttribPointer[index] +
++ offset, (void *) args[7], bytes_size);
++ ptr_func_glVertexAttribPointerARB(index, size, type, normalized,
++ stride,
++ process->current_state->
++ vertexAttribPointer[index]);
++ break;
++ }
++
++ case glVertexAttribPointerNV_fake_func:
++ {
++ GET_EXT_PTR(void, glVertexAttribPointerNV,
++ (int, int, int, int, void *));
++ int offset = args[0];
++ int index = args[1];
++ int size = args[2];
++ int type = args[3];
++ int stride = args[4];
++ int bytes_size = args[5];
++
++ process->current_state->vertexAttribPointerNVSize[index] =
++ MAX(process->current_state->vertexAttribPointerNVSize[index],
++ offset + bytes_size);
++ process->current_state->vertexAttribPointerNV[index] =
++ realloc(process->current_state->vertexAttribPointerNV[index],
++ process->current_state->
++ vertexAttribPointerNVSize[index]);
++ memcpy(process->current_state->vertexAttribPointerNV[index] +
++ offset, (void *) args[6], bytes_size);
++ ptr_func_glVertexAttribPointerNV(index, size, type, stride,
++ process->current_state->
++ vertexAttribPointerNV[index]);
++ break;
++ }
++
++ case glColorPointer_fake_func:
++ {
++ int offset = args[0];
++ int size = args[1];
++ int type = args[2];
++ int stride = args[3];
++ int bytes_size = args[4];
++
++ process->current_state->colorPointerSize =
++ MAX(process->current_state->colorPointerSize,
++ offset + bytes_size);
++ process->current_state->colorPointer =
++ realloc(process->current_state->colorPointer,
++ process->current_state->colorPointerSize);
++ memcpy(process->current_state->colorPointer + offset,
++ (void *) args[5], bytes_size);
++ // fprintf(stderr, "glColorPointer_fake_func bytes_size = %d\n",
++ // bytes_size);
++ glColorPointer(size, type, stride,
++ process->current_state->colorPointer);
++
++ break;
++ }
++
++ case glSecondaryColorPointer_fake_func:
++ {
++ GET_EXT_PTR(void, glSecondaryColorPointer,
++ (int, int, int, void *));
++ int offset = args[0];
++ int size = args[1];
++ int type = args[2];
++ int stride = args[3];
++ int bytes_size = args[4];
++
++ process->current_state->secondaryColorPointerSize =
++ MAX(process->current_state->secondaryColorPointerSize,
++ offset + bytes_size);
++ process->current_state->secondaryColorPointer =
++ realloc(process->current_state->secondaryColorPointer,
++ process->current_state->secondaryColorPointerSize);
++ memcpy(process->current_state->secondaryColorPointer + offset,
++ (void *) args[5], bytes_size);
++ // fprintf(stderr, "glSecondaryColorPointer_fake_func bytes_size
++ // = %d\n", bytes_size);
++ ptr_func_glSecondaryColorPointer(size, type, stride,
++ process->current_state->
++ secondaryColorPointer);
++
++ break;
++ }
++
++ case glPushClientAttrib_func:
++ {
++ int mask = args[0];
++
++ if (process->current_state->clientStateSp <
++ MAX_CLIENT_STATE_STACK_SIZE) {
++ process->current_state->clientStateStack[process->
++ current_state->
++ clientStateSp].mask =
++ mask;
++ if (mask & GL_CLIENT_VERTEX_ARRAY_BIT) {
++ process->current_state->clientStateStack[process->
++ current_state->
++ clientStateSp].
++ activeTextureIndex =
++ process->current_state->activeTextureIndex;
++ }
++ process->current_state->clientStateSp++;
++ }
++ glPushClientAttrib(mask);
++ break;
++ }
++
++ case glPopClientAttrib_func:
++ {
++ if (process->current_state->clientStateSp > 0) {
++ process->current_state->clientStateSp--;
++ if (process->current_state->
++ clientStateStack[process->current_state->clientStateSp].
++ mask & GL_CLIENT_VERTEX_ARRAY_BIT) {
++ process->current_state->activeTextureIndex =
++ process->current_state->clientStateStack[process->
++ current_state->
++ clientStateSp].
++ activeTextureIndex;
++ }
++ }
++ glPopClientAttrib();
++ break;
++ }
++
++ case glClientActiveTexture_func:
++ case glClientActiveTextureARB_func:
++ {
++ int activeTexture = args[0];
++
++ process->current_state->activeTextureIndex =
++ activeTexture - GL_TEXTURE0_ARB;
++ do_glClientActiveTextureARB(activeTexture);
++ break;
++ }
++
++ case glTexCoordPointer_fake_func:
++ {
++ int offset = args[0];
++ int index = args[1];
++ int size = args[2];
++ int type = args[3];
++ int stride = args[4];
++ int bytes_size = args[5];
++
++ process->current_state->texCoordPointerSize[index] =
++ MAX(process->current_state->texCoordPointerSize[index],
++ offset + bytes_size);
++ process->current_state->texCoordPointer[index] =
++ realloc(process->current_state->texCoordPointer[index],
++ process->current_state->texCoordPointerSize[index]);
++ memcpy(process->current_state->texCoordPointer[index] + offset,
++ (void *) args[6], bytes_size);
++ /* fprintf(stderr, "glTexCoordPointer_fake_func size=%d, type=%d,
++ * stride=%d, byte_size=%d\n", size, type, stride, bytes_size); */
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + index);
++ glTexCoordPointer(size, type, stride,
++ process->current_state->texCoordPointer[index]);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB +
++ process->current_state->
++ activeTextureIndex);
++ break;
++ }
++
++ case glWeightPointerARB_fake_func:
++ {
++ GET_EXT_PTR(void, glWeightPointerARB, (int, int, int, void *));
++ int offset = args[0];
++ int size = args[1];
++ int type = args[2];
++ int stride = args[3];
++ int bytes_size = args[4];
++
++ process->current_state->weightPointerSize =
++ MAX(process->current_state->weightPointerSize,
++ offset + bytes_size);
++ process->current_state->weightPointer =
++ realloc(process->current_state->weightPointer,
++ process->current_state->weightPointerSize);
++ memcpy(process->current_state->weightPointer + offset,
++ (void *) args[5], bytes_size);
++ /* fprintf(stderr, "glWeightPointerARB_fake_func size=%d,
++ * type=%d, stride=%d, byte_size=%d\n", size, type, stride,
++ * bytes_size); */
++ ptr_func_glWeightPointerARB(size, type, stride,
++ process->current_state->
++ weightPointer);
++ break;
++ }
++
++ case glMatrixIndexPointerARB_fake_func:
++ {
++ GET_EXT_PTR(void, glMatrixIndexPointerARB,
++ (int, int, int, void *));
++ int offset = args[0];
++ int size = args[1];
++ int type = args[2];
++ int stride = args[3];
++ int bytes_size = args[4];
++
++ process->current_state->matrixIndexPointerSize =
++ MAX(process->current_state->matrixIndexPointerSize,
++ offset + bytes_size);
++ process->current_state->matrixIndexPointer =
++ realloc(process->current_state->matrixIndexPointer,
++ process->current_state->matrixIndexPointerSize);
++ memcpy(process->current_state->matrixIndexPointer + offset,
++ (void *) args[5], bytes_size);
++ /* fprintf(stderr, "glMatrixIndexPointerARB_fake_func size=%d,
++ * type=%d, stride=%d, byte_size=%d\n", size, type, stride,
++ * bytes_size); */
++ ptr_func_glMatrixIndexPointerARB(size, type, stride,
++ process->current_state->
++ matrixIndexPointer);
++ break;
++ }
++
++ case glFogCoordPointer_fake_func:
++ {
++ GET_EXT_PTR(void, glFogCoordPointer, (int, int, void *));
++ int offset = args[0];
++ int type = args[1];
++ int stride = args[2];
++ int bytes_size = args[3];
++
++ process->current_state->fogCoordPointerSize =
++ MAX(process->current_state->fogCoordPointerSize,
++ offset + bytes_size);
++ process->current_state->fogCoordPointer =
++ realloc(process->current_state->fogCoordPointer,
++ process->current_state->fogCoordPointerSize);
++ memcpy(process->current_state->fogCoordPointer + offset,
++ (void *) args[4], bytes_size);
++ // fprintf(stderr, "glFogCoordPointer_fake_func type=%d,
++ // stride=%d, byte_size=%d\n", type, stride, bytes_size);
++ ptr_func_glFogCoordPointer(type, stride,
++ process->current_state->
++ fogCoordPointer);
++ break;
++ }
++
++ case glVariantPointerEXT_fake_func:
++ {
++ GET_EXT_PTR(void, glVariantPointerEXT, (int, int, int, void *));
++ int offset = args[0];
++ int id = args[1];
++ int type = args[2];
++ int stride = args[3];
++ int bytes_size = args[4];
++
++ process->current_state->variantPointerEXTSize[id] =
++ MAX(process->current_state->variantPointerEXTSize[id],
++ offset + bytes_size);
++ process->current_state->variantPointerEXT[id] =
++ realloc(process->current_state->variantPointerEXT[id],
++ process->current_state->variantPointerEXTSize[id]);
++ memcpy(process->current_state->variantPointerEXT[id] + offset,
++ (void *) args[5], bytes_size);
++ // fprintf(stderr, "glVariantPointerEXT_fake_func[%d] type=%d,
++ // stride=%d, byte_size=%d\n", id, type, stride, bytes_size);
++ ptr_func_glVariantPointerEXT(id, type, stride,
++ process->current_state->
++ variantPointerEXT[id]);
++ break;
++ }
++
++ case glInterleavedArrays_fake_func:
++ {
++ GET_EXT_PTR(void, glInterleavedArrays, (int, int, void *));
++ int offset = args[0];
++ int format = args[1];
++ int stride = args[2];
++ int bytes_size = args[3];
++
++ process->current_state->interleavedArraysSize =
++ MAX(process->current_state->interleavedArraysSize,
++ offset + bytes_size);
++ process->current_state->interleavedArrays =
++ realloc(process->current_state->interleavedArrays,
++ process->current_state->interleavedArraysSize);
++ memcpy(process->current_state->interleavedArrays + offset,
++ (void *) args[4], bytes_size);
++ // fprintf(stderr, "glInterleavedArrays_fake_func format=%d,
++ // stride=%d, byte_size=%d\n", format, stride, bytes_size);
++ ptr_func_glInterleavedArrays(format, stride,
++ process->current_state->
++ interleavedArrays);
++ break;
++ }
++
++ case glElementPointerATI_fake_func:
++ {
++ GET_EXT_PTR(void, glElementPointerATI, (int, void *));
++ int type = args[0];
++ int bytes_size = args[1];
++
++ process->current_state->elementPointerATISize = bytes_size;
++ process->current_state->elementPointerATI =
++ realloc(process->current_state->elementPointerATI,
++ process->current_state->elementPointerATISize);
++ memcpy(process->current_state->elementPointerATI,
++ (void *) args[2], bytes_size);
++ // fprintf(stderr, "glElementPointerATI_fake_func type=%d,
++ // byte_size=%d\n", type, bytes_size);
++ ptr_func_glElementPointerATI(type,
++ process->current_state->
++ elementPointerATI);
++ break;
++ }
++
++ case glTexCoordPointer01_fake_func:
++ {
++ int size = args[0];
++ int type = args[1];
++ int stride = args[2];
++ int bytes_size = args[3];
++
++ process->current_state->texCoordPointerSize[0] = bytes_size;
++ process->current_state->texCoordPointer[0] =
++ realloc(process->current_state->texCoordPointer[0],
++ bytes_size);
++ memcpy(process->current_state->texCoordPointer[0],
++ (void *) args[4], bytes_size);
++ /* fprintf(stderr, "glTexCoordPointer01_fake_func size=%d,
++ * type=%d, stride=%d, byte_size=%d\n", size, type, stride,
++ * bytes_size); */
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 0);
++ glTexCoordPointer(size, type, stride,
++ process->current_state->texCoordPointer[0]);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 1);
++ glTexCoordPointer(size, type, stride,
++ process->current_state->texCoordPointer[0]);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB +
++ process->current_state->
++ activeTextureIndex);
++ break;
++ }
++
++ case glTexCoordPointer012_fake_func:
++ {
++ int size = args[0];
++ int type = args[1];
++ int stride = args[2];
++ int bytes_size = args[3];
++
++ process->current_state->texCoordPointerSize[0] = bytes_size;
++ process->current_state->texCoordPointer[0] =
++ realloc(process->current_state->texCoordPointer[0],
++ bytes_size);
++ memcpy(process->current_state->texCoordPointer[0],
++ (void *) args[4], bytes_size);
++ /* fprintf(stderr, "glTexCoordPointer012_fake_func size=%d,
++ * type=%d, stride=%d, byte_size=%d\n", size, type, stride,
++ * bytes_size); */
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 0);
++ glTexCoordPointer(size, type, stride,
++ process->current_state->texCoordPointer[0]);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 1);
++ glTexCoordPointer(size, type, stride,
++ process->current_state->texCoordPointer[0]);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 2);
++ glTexCoordPointer(size, type, stride,
++ process->current_state->texCoordPointer[0]);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB +
++ process->current_state->
++ activeTextureIndex);
++ break;
++ }
++
++ case glVertexAndNormalPointer_fake_func:
++ {
++ int vertexPointerSize = args[0];
++ int vertexPointerType = args[1];
++ int vertexPointerStride = args[2];
++ int normalPointerType = args[3];
++ int normalPointerStride = args[4];
++ int bytes_size = args[5];
++ void *ptr = (void *) args[6];
++
++ process->current_state->vertexPointerSize = bytes_size;
++ process->current_state->vertexPointer =
++ realloc(process->current_state->vertexPointer, bytes_size);
++ memcpy(process->current_state->vertexPointer, ptr, bytes_size);
++ glVertexPointer(vertexPointerSize, vertexPointerType,
++ vertexPointerStride,
++ process->current_state->vertexPointer);
++ glNormalPointer(normalPointerType, normalPointerStride,
++ process->current_state->vertexPointer);
++ break;
++ }
++
++ case glVertexNormalPointerInterlaced_fake_func:
++ {
++ int i = 0;
++ int offset = args[i++];
++ int vertexPointerSize = args[i++];
++ int vertexPointerType = args[i++];
++ int stride = args[i++];
++ int normalPointerOffset = args[i++];
++ int normalPointerType = args[i++];
++ int bytes_size = args[i++];
++ void *ptr = (void *) args[i++];
++
++ process->current_state->vertexPointerSize =
++ MAX(process->current_state->vertexPointerSize,
++ offset + bytes_size);
++ process->current_state->vertexPointer =
++ realloc(process->current_state->vertexPointer,
++ process->current_state->vertexPointerSize);
++ memcpy(process->current_state->vertexPointer + offset, ptr,
++ bytes_size);
++ glVertexPointer(vertexPointerSize, vertexPointerType, stride,
++ process->current_state->vertexPointer);
++ glNormalPointer(normalPointerType, stride,
++ process->current_state->vertexPointer +
++ normalPointerOffset);
++ break;
++ }
++
++ case glTuxRacerDrawElements_fake_func:
++ {
++ int mode = args[0];
++ int count = args[1];
++ int isColorEnabled = args[2];
++ void *ptr = (void *) args[3];
++ int stride =
++ 6 * sizeof(float) +
++ ((isColorEnabled) ? 4 * sizeof(unsigned char) : 0);
++ glVertexPointer(3, GL_FLOAT, stride, ptr);
++ glNormalPointer(GL_FLOAT, stride, ptr + 3 * sizeof(float));
++ if (isColorEnabled)
++ glColorPointer(4, GL_UNSIGNED_BYTE, stride,
++ ptr + 6 * sizeof(float));
++ glDrawArrays(mode, 0, count);
++ break;
++ }
++
++ case glVertexNormalColorPointerInterlaced_fake_func:
++ {
++ int i = 0;
++ int offset = args[i++];
++ int vertexPointerSize = args[i++];
++ int vertexPointerType = args[i++];
++ int stride = args[i++];
++ int normalPointerOffset = args[i++];
++ int normalPointerType = args[i++];
++ int colorPointerOffset = args[i++];
++ int colorPointerSize = args[i++];
++ int colorPointerType = args[i++];
++ int bytes_size = args[i++];
++ void *ptr = (void *) args[i++];
++
++ process->current_state->vertexPointerSize =
++ MAX(process->current_state->vertexPointerSize,
++ offset + bytes_size);
++ process->current_state->vertexPointer =
++ realloc(process->current_state->vertexPointer,
++ process->current_state->vertexPointerSize);
++ memcpy(process->current_state->vertexPointer + offset, ptr,
++ bytes_size);
++ glVertexPointer(vertexPointerSize, vertexPointerType, stride,
++ process->current_state->vertexPointer);
++ glNormalPointer(normalPointerType, stride,
++ process->current_state->vertexPointer +
++ normalPointerOffset);
++ glColorPointer(colorPointerSize, colorPointerType, stride,
++ process->current_state->vertexPointer +
++ colorPointerOffset);
++ break;
++ }
++
++ case glVertexColorTexCoord0PointerInterlaced_fake_func:
++ {
++ int i = 0;
++ int offset = args[i++];
++ int vertexPointerSize = args[i++];
++ int vertexPointerType = args[i++];
++ int stride = args[i++];
++ int colorPointerOffset = args[i++];
++ int colorPointerSize = args[i++];
++ int colorPointerType = args[i++];
++ int texCoord0PointerOffset = args[i++];
++ int texCoord0PointerSize = args[i++];
++ int texCoord0PointerType = args[i++];
++ int bytes_size = args[i++];
++ void *ptr = (void *) args[i++];
++
++ process->current_state->vertexPointerSize =
++ MAX(process->current_state->vertexPointerSize,
++ offset + bytes_size);
++ process->current_state->vertexPointer =
++ realloc(process->current_state->vertexPointer,
++ process->current_state->vertexPointerSize);
++ memcpy(process->current_state->vertexPointer + offset, ptr,
++ bytes_size);
++ glVertexPointer(vertexPointerSize, vertexPointerType, stride,
++ process->current_state->vertexPointer);
++ glColorPointer(colorPointerSize, colorPointerType, stride,
++ process->current_state->vertexPointer +
++ colorPointerOffset);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 0);
++ glTexCoordPointer(texCoord0PointerSize, texCoord0PointerType,
++ stride,
++ process->current_state->vertexPointer +
++ texCoord0PointerOffset);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB +
++ process->current_state->
++ activeTextureIndex);
++ break;
++ }
++
++ case glVertexNormalTexCoord0PointerInterlaced_fake_func:
++ {
++ int i = 0;
++ int offset = args[i++];
++ int vertexPointerSize = args[i++];
++ int vertexPointerType = args[i++];
++ int stride = args[i++];
++ int normalPointerOffset = args[i++];
++ int normalPointerType = args[i++];
++ int texCoord0PointerOffset = args[i++];
++ int texCoord0PointerSize = args[i++];
++ int texCoord0PointerType = args[i++];
++ int bytes_size = args[i++];
++ void *ptr = (void *) args[i++];
++
++ process->current_state->vertexPointerSize =
++ MAX(process->current_state->vertexPointerSize,
++ offset + bytes_size);
++ process->current_state->vertexPointer =
++ realloc(process->current_state->vertexPointer,
++ process->current_state->vertexPointerSize);
++ memcpy(process->current_state->vertexPointer + offset, ptr,
++ bytes_size);
++ glVertexPointer(vertexPointerSize, vertexPointerType, stride,
++ process->current_state->vertexPointer);
++ glNormalPointer(normalPointerType, stride,
++ process->current_state->vertexPointer +
++ normalPointerOffset);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 0);
++ glTexCoordPointer(texCoord0PointerSize, texCoord0PointerType,
++ stride,
++ process->current_state->vertexPointer +
++ texCoord0PointerOffset);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB +
++ process->current_state->
++ activeTextureIndex);
++ break;
++ }
++
++ case glVertexNormalTexCoord01PointerInterlaced_fake_func:
++ {
++ int i = 0;
++ int offset = args[i++];
++ int vertexPointerSize = args[i++];
++ int vertexPointerType = args[i++];
++ int stride = args[i++];
++ int normalPointerOffset = args[i++];
++ int normalPointerType = args[i++];
++ int texCoord0PointerOffset = args[i++];
++ int texCoord0PointerSize = args[i++];
++ int texCoord0PointerType = args[i++];
++ int texCoord1PointerOffset = args[i++];
++ int texCoord1PointerSize = args[i++];
++ int texCoord1PointerType = args[i++];
++ int bytes_size = args[i++];
++ void *ptr = (void *) args[i++];
++
++ process->current_state->vertexPointerSize =
++ MAX(process->current_state->vertexPointerSize,
++ offset + bytes_size);
++ process->current_state->vertexPointer =
++ realloc(process->current_state->vertexPointer,
++ process->current_state->vertexPointerSize);
++ memcpy(process->current_state->vertexPointer + offset, ptr,
++ bytes_size);
++ glVertexPointer(vertexPointerSize, vertexPointerType, stride,
++ process->current_state->vertexPointer);
++ glNormalPointer(normalPointerType, stride,
++ process->current_state->vertexPointer +
++ normalPointerOffset);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 0);
++ glTexCoordPointer(texCoord0PointerSize, texCoord0PointerType,
++ stride,
++ process->current_state->vertexPointer +
++ texCoord0PointerOffset);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 1);
++ glTexCoordPointer(texCoord1PointerSize, texCoord1PointerType,
++ stride,
++ process->current_state->vertexPointer +
++ texCoord1PointerOffset);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB +
++ process->current_state->
++ activeTextureIndex);
++ break;
++ }
++
++ case glVertexNormalTexCoord012PointerInterlaced_fake_func:
++ {
++ int i = 0;
++ int offset = args[i++];
++ int vertexPointerSize = args[i++];
++ int vertexPointerType = args[i++];
++ int stride = args[i++];
++ int normalPointerOffset = args[i++];
++ int normalPointerType = args[i++];
++ int texCoord0PointerOffset = args[i++];
++ int texCoord0PointerSize = args[i++];
++ int texCoord0PointerType = args[i++];
++ int texCoord1PointerOffset = args[i++];
++ int texCoord1PointerSize = args[i++];
++ int texCoord1PointerType = args[i++];
++ int texCoord2PointerOffset = args[i++];
++ int texCoord2PointerSize = args[i++];
++ int texCoord2PointerType = args[i++];
++ int bytes_size = args[i++];
++ void *ptr = (void *) args[i++];
++
++ process->current_state->vertexPointerSize =
++ MAX(process->current_state->vertexPointerSize,
++ offset + bytes_size);
++ process->current_state->vertexPointer =
++ realloc(process->current_state->vertexPointer,
++ process->current_state->vertexPointerSize);
++ memcpy(process->current_state->vertexPointer + offset, ptr,
++ bytes_size);
++ glVertexPointer(vertexPointerSize, vertexPointerType, stride,
++ process->current_state->vertexPointer);
++ glNormalPointer(normalPointerType, stride,
++ process->current_state->vertexPointer +
++ normalPointerOffset);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 0);
++ glTexCoordPointer(texCoord0PointerSize, texCoord0PointerType,
++ stride,
++ process->current_state->vertexPointer +
++ texCoord0PointerOffset);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 1);
++ glTexCoordPointer(texCoord1PointerSize, texCoord1PointerType,
++ stride,
++ process->current_state->vertexPointer +
++ texCoord1PointerOffset);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 2);
++ glTexCoordPointer(texCoord2PointerSize, texCoord2PointerType,
++ stride,
++ process->current_state->vertexPointer +
++ texCoord2PointerOffset);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB +
++ process->current_state->
++ activeTextureIndex);
++ break;
++ }
++
++ case glVertexNormalColorTexCoord0PointerInterlaced_fake_func:
++ {
++ int i = 0;
++ int offset = args[i++];
++ int vertexPointerSize = args[i++];
++ int vertexPointerType = args[i++];
++ int stride = args[i++];
++ int normalPointerOffset = args[i++];
++ int normalPointerType = args[i++];
++ int colorPointerOffset = args[i++];
++ int colorPointerSize = args[i++];
++ int colorPointerType = args[i++];
++ int texCoord0PointerOffset = args[i++];
++ int texCoord0PointerSize = args[i++];
++ int texCoord0PointerType = args[i++];
++ int bytes_size = args[i++];
++ void *ptr = (void *) args[i++];
++
++ process->current_state->vertexPointerSize =
++ MAX(process->current_state->vertexPointerSize,
++ offset + bytes_size);
++ process->current_state->vertexPointer =
++ realloc(process->current_state->vertexPointer,
++ process->current_state->vertexPointerSize);
++ memcpy(process->current_state->vertexPointer + offset, ptr,
++ bytes_size);
++ glVertexPointer(vertexPointerSize, vertexPointerType, stride,
++ process->current_state->vertexPointer);
++ glNormalPointer(normalPointerType, stride,
++ process->current_state->vertexPointer +
++ normalPointerOffset);
++ glColorPointer(colorPointerSize, colorPointerType, stride,
++ process->current_state->vertexPointer +
++ colorPointerOffset);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 0);
++ glTexCoordPointer(texCoord0PointerSize, texCoord0PointerType,
++ stride,
++ process->current_state->vertexPointer +
++ texCoord0PointerOffset);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB +
++ process->current_state->
++ activeTextureIndex);
++ break;
++ }
++
++ case glVertexNormalColorTexCoord01PointerInterlaced_fake_func:
++ {
++ int i = 0;
++ int offset = args[i++];
++ int vertexPointerSize = args[i++];
++ int vertexPointerType = args[i++];
++ int stride = args[i++];
++ int normalPointerOffset = args[i++];
++ int normalPointerType = args[i++];
++ int colorPointerOffset = args[i++];
++ int colorPointerSize = args[i++];
++ int colorPointerType = args[i++];
++ int texCoord0PointerOffset = args[i++];
++ int texCoord0PointerSize = args[i++];
++ int texCoord0PointerType = args[i++];
++ int texCoord1PointerOffset = args[i++];
++ int texCoord1PointerSize = args[i++];
++ int texCoord1PointerType = args[i++];
++ int bytes_size = args[i++];
++ void *ptr = (void *) args[i++];
++
++ process->current_state->vertexPointerSize =
++ MAX(process->current_state->vertexPointerSize,
++ offset + bytes_size);
++ process->current_state->vertexPointer =
++ realloc(process->current_state->vertexPointer,
++ process->current_state->vertexPointerSize);
++ memcpy(process->current_state->vertexPointer + offset, ptr,
++ bytes_size);
++ glVertexPointer(vertexPointerSize, vertexPointerType, stride,
++ process->current_state->vertexPointer);
++ glNormalPointer(normalPointerType, stride,
++ process->current_state->vertexPointer +
++ normalPointerOffset);
++ glColorPointer(colorPointerSize, colorPointerType, stride,
++ process->current_state->vertexPointer +
++ colorPointerOffset);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 0);
++ glTexCoordPointer(texCoord0PointerSize, texCoord0PointerType,
++ stride,
++ process->current_state->vertexPointer +
++ texCoord0PointerOffset);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 1);
++ glTexCoordPointer(texCoord1PointerSize, texCoord1PointerType,
++ stride,
++ process->current_state->vertexPointer +
++ texCoord1PointerOffset);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB +
++ process->current_state->
++ activeTextureIndex);
++ break;
++ }
++
++ case glVertexNormalColorTexCoord012PointerInterlaced_fake_func:
++ {
++ int i = 0;
++ int offset = args[i++];
++ int vertexPointerSize = args[i++];
++ int vertexPointerType = args[i++];
++ int stride = args[i++];
++ int normalPointerOffset = args[i++];
++ int normalPointerType = args[i++];
++ int colorPointerOffset = args[i++];
++ int colorPointerSize = args[i++];
++ int colorPointerType = args[i++];
++ int texCoord0PointerOffset = args[i++];
++ int texCoord0PointerSize = args[i++];
++ int texCoord0PointerType = args[i++];
++ int texCoord1PointerOffset = args[i++];
++ int texCoord1PointerSize = args[i++];
++ int texCoord1PointerType = args[i++];
++ int texCoord2PointerOffset = args[i++];
++ int texCoord2PointerSize = args[i++];
++ int texCoord2PointerType = args[i++];
++ int bytes_size = args[i++];
++ void *ptr = (void *) args[i++];
++
++ process->current_state->vertexPointerSize =
++ MAX(process->current_state->vertexPointerSize,
++ offset + bytes_size);
++ process->current_state->vertexPointer =
++ realloc(process->current_state->vertexPointer,
++ process->current_state->vertexPointerSize);
++ memcpy(process->current_state->vertexPointer + offset, ptr,
++ bytes_size);
++ glVertexPointer(vertexPointerSize, vertexPointerType, stride,
++ process->current_state->vertexPointer);
++ glNormalPointer(normalPointerType, stride,
++ process->current_state->vertexPointer +
++ normalPointerOffset);
++ glColorPointer(colorPointerSize, colorPointerType, stride,
++ process->current_state->vertexPointer +
++ colorPointerOffset);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 0);
++ glTexCoordPointer(texCoord0PointerSize, texCoord0PointerType,
++ stride,
++ process->current_state->vertexPointer +
++ texCoord0PointerOffset);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 1);
++ glTexCoordPointer(texCoord1PointerSize, texCoord1PointerType,
++ stride,
++ process->current_state->vertexPointer +
++ texCoord1PointerOffset);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + 2);
++ glTexCoordPointer(texCoord2PointerSize, texCoord2PointerType,
++ stride,
++ process->current_state->vertexPointer +
++ texCoord2PointerOffset);
++ do_glClientActiveTextureARB(GL_TEXTURE0_ARB +
++ process->current_state->
++ activeTextureIndex);
++ break;
++ }
++
++ case _glVertexPointer_buffer_func:
++ {
++ glVertexPointer(args[0], args[1], args[2], (void *) args[3]);
++ break;
++ }
++
++ case _glNormalPointer_buffer_func:
++ {
++ glNormalPointer(args[0], args[1], (void *) args[2]);
++ break;
++ }
++
++ case _glColorPointer_buffer_func:
++ {
++ glColorPointer(args[0], args[1], args[2], (void *) args[3]);
++ break;
++ }
++
++ case _glSecondaryColorPointer_buffer_func:
++ {
++ GET_EXT_PTR(void, glSecondaryColorPointer,
++ (int, int, int, void *));
++ ptr_func_glSecondaryColorPointer(args[0], args[1], args[2],
++ (void *) args[3]);
++ break;
++ }
++
++ case _glIndexPointer_buffer_func:
++ {
++ glIndexPointer(args[0], args[1], (void *) args[2]);
++ break;
++ }
++
++ case _glTexCoordPointer_buffer_func:
++ {
++ glTexCoordPointer(args[0], args[1], args[2], (void *) args[3]);
++ break;
++ }
++
++ case _glEdgeFlagPointer_buffer_func:
++ {
++ glEdgeFlagPointer(args[0], (void *) args[1]);
++ break;
++ }
++
++ case _glVertexAttribPointerARB_buffer_func:
++ {
++ GET_EXT_PTR(void, glVertexAttribPointerARB,
++ (int, int, int, int, int, void *));
++ ptr_func_glVertexAttribPointerARB(args[0], args[1], args[2],
++ args[3], args[4],
++ (void *) args[5]);
++ break;
++ }
++
++ case _glWeightPointerARB_buffer_func:
++ {
++ GET_EXT_PTR(void, glWeightPointerARB, (int, int, int, void *));
++
++ ptr_func_glWeightPointerARB(args[0], args[1], args[2],
++ (void *) args[3]);
++ break;
++ }
++
++ case _glMatrixIndexPointerARB_buffer_func:
++ {
++ GET_EXT_PTR(void, glMatrixIndexPointerARB,
++ (int, int, int, void *));
++ ptr_func_glMatrixIndexPointerARB(args[0], args[1], args[2],
++ (void *) args[3]);
++ break;
++ }
++
++ case _glFogCoordPointer_buffer_func:
++ {
++ GET_EXT_PTR(void, glFogCoordPointer, (int, int, void *));
++
++ ptr_func_glFogCoordPointer(args[0], args[1], (void *) args[2]);
++ break;
++ }
++
++ case _glVariantPointerEXT_buffer_func:
++ {
++ GET_EXT_PTR(void, glVariantPointerEXT, (int, int, int, void *));
++
++ ptr_func_glVariantPointerEXT(args[0], args[1], args[2],
++ (void *) args[3]);
++ break;
++ }
++
++ case _glDrawElements_buffer_func:
++ {
++ glDrawElements(args[0], args[1], args[2], (void *) args[3]);
++ break;
++ }
++
++ case _glDrawRangeElements_buffer_func:
++ {
++ glDrawRangeElements(args[0], args[1], args[2], args[3], args[4],
++ (void *) args[5]);
++ break;
++ }
++
++ case _glMultiDrawElements_buffer_func:
++ {
++ GET_EXT_PTR(void, glMultiDrawElements,
++ (int, int *, int, void **, int));
++ ptr_func_glMultiDrawElements(args[0], (int *) args[1], args[2],
++ (void **) args[3], args[4]);
++ break;
++ }
++
++ case _glGetError_fake_func:
++ {
++ break;
++ }
++
++ case glGetIntegerv_func:
++ {
++ glGetIntegerv(args[0], (int *) args[1]);
++ fprintf(stderr, "glGetIntegerv(%x)=%d\n", (int) args[0],
++ *(int *) args[1]);
++ break;
++ }
++
++ case _glReadPixels_pbo_func:
++ {
++ glReadPixels(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]),
++ ARG_TO_INT(args[2]), ARG_TO_INT(args[3]),
++ ARG_TO_UNSIGNED_INT(args[4]),
++ ARG_TO_UNSIGNED_INT(args[5]), (void *) (args[6]));
++ break;
++ }
++
++ case _glDrawPixels_pbo_func:
++ {
++ glDrawPixels(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]),
++ ARG_TO_UNSIGNED_INT(args[2]),
++ ARG_TO_UNSIGNED_INT(args[3]),
++ (const void *) (args[4]));
++ break;
++ }
++
++ case _glMapBufferARB_fake_func:
++ {
++ GET_EXT_PTR(GLvoid *, glMapBufferARB, (GLenum, GLenum));
++ GET_EXT_PTR(GLboolean, glUnmapBufferARB, (GLenum));
++ int target = args[0];
++ int size = args[1];
++ void *dst_ptr = (void *) args[2];
++ void *src_ptr = ptr_func_glMapBufferARB(target, GL_READ_ONLY);
++
++ if (src_ptr) {
++ memcpy(dst_ptr, src_ptr, size);
++ ret_int = ptr_func_glUnmapBufferARB(target);
++ } else {
++ ret_int = 0;
++ }
++ break;
++ }
++
++ case fake_gluBuild2DMipmaps_func:
++ {
++ GET_GLU_PTR(GLint, gluBuild2DMipmaps,
++ (GLenum arg_0, GLint arg_1, GLsizei arg_2,
++ GLsizei arg_3, GLenum arg_4, GLenum arg_5,
++ const GLvoid *arg_6));
++ if (ptr_func_gluBuild2DMipmaps == NULL)
++ ptr_func_gluBuild2DMipmaps = mesa_gluBuild2DMipmaps;
++ ptr_func_gluBuild2DMipmaps(ARG_TO_UNSIGNED_INT(args[0]),
++ ARG_TO_INT(args[1]),
++ ARG_TO_INT(args[2]),
++ ARG_TO_INT(args[3]),
++ ARG_TO_UNSIGNED_INT(args[4]),
++ ARG_TO_UNSIGNED_INT(args[5]),
++ (const void *) (args[6]));
++ break;
++ }
++
++ case _glSelectBuffer_fake_func:
++ {
++ process->current_state->selectBufferSize = args[0] * 4;
++ process->current_state->selectBufferPtr =
++ realloc(process->current_state->selectBufferPtr,
++ process->current_state->selectBufferSize);
++ glSelectBuffer(args[0], process->current_state->selectBufferPtr);
++ break;
++ }
++
++ case _glGetSelectBuffer_fake_func:
++ {
++ void *ptr = (void *) args[0];
++
++ memcpy(ptr, process->current_state->selectBufferPtr,
++ process->current_state->selectBufferSize);
++ break;
++ }
++
++ case _glFeedbackBuffer_fake_func:
++ {
++ process->current_state->feedbackBufferSize = args[0] * 4;
++ process->current_state->feedbackBufferPtr =
++ realloc(process->current_state->feedbackBufferPtr,
++ process->current_state->feedbackBufferSize);
++ glFeedbackBuffer(args[0], args[1],
++ process->current_state->feedbackBufferPtr);
++ break;
++ }
++
++ case _glGetFeedbackBuffer_fake_func:
++ {
++ void *ptr = (void *) args[0];
++
++ memcpy(ptr, process->current_state->feedbackBufferPtr,
++ process->current_state->feedbackBufferSize);
++ break;
++ }
++
++ /*
++ * case glEnableClientState_func: { if (display_function_call)
++ * fprintf(stderr, "cap : %s\n", nameArrays[args[0] -
++ * GL_VERTEX_ARRAY]); glEnableClientState(args[0]); break; }
++ *
++ * case glDisableClientState_func: { if (display_function_call)
++ * fprintf(stderr, "cap : %s\n", nameArrays[args[0] -
++ * GL_VERTEX_ARRAY]); glDisableClientState(args[0]); break; }
++ *
++ * case glClientActiveTexture_func: case
++ * glClientActiveTextureARB_func: { if (display_function_call)
++ * fprintf(stderr, "client activeTexture %d\n", args[0] -
++ * GL_TEXTURE0_ARB); glClientActiveTextureARB(args[0]); break; }
++ *
++ * case glActiveTextureARB_func: { if (display_function_call)
++ * fprintf(stderr, "server activeTexture %d\n", args[0] -
++ * GL_TEXTURE0_ARB); glActiveTextureARB(args[0]); break; }
++ *
++ * case glLockArraysEXT_func: break;
++ *
++ * case glUnlockArraysEXT_func: break;
++ *
++ * case glArrayElement_func: { glArrayElement(args[0]); break; }
++ *
++ * case glDrawArrays_func: { glDrawArrays(args[0],args[1],args[2]);
++ * break; }
++ *
++ * case glDrawElements_func: {
++ * glDrawElements(args[0],args[1],args[2],(void*)args[3]); break; }
++ *
++ * case glDrawRangeElements_func: {
++ * glDrawRangeElements(args[0],args[1],args[2],args[3],args[4],(void*)args[5]);
++ * break; } */
++
++ case glGetError_func:
++ {
++#ifdef SYSTEMATIC_ERROR_CHECK
++ ret_int = process->current_state->last_error;
++#else
++ ret_int = glGetError();
++#endif
++ break;
++ }
++
++ case glNewObjectBufferATI_func:
++ {
++ GET_EXT_PTR(int, glNewObjectBufferATI, (int, void *, int));
++
++ ret_int = ptr_func_glNewObjectBufferATI(args[0],
++ (void *) args[1], args[2]);
++ break;
++ }
++
++ case glClear_func:
++ /* HACK workaround for an unexplainable issue */
++ if (args[0] & GL_COLOR_BUFFER_BIT)
++ glClear(GL_COLOR_BUFFER_BIT);
++ if (args[0] & GL_STENCIL_BUFFER_BIT)
++ glClear(GL_STENCIL_BUFFER_BIT);
++ if (args[0] & GL_DEPTH_BUFFER_BIT)
++ glClear(GL_DEPTH_BUFFER_BIT);
++ if (args[0] & GL_ACCUM_BUFFER_BIT)
++ glClear(GL_ACCUM_BUFFER_BIT);
++ break;
++
++ default:
++ execute_func(func_number, args, &ret_int, &ret_char);
++ break;
++ }
++
++#ifdef SYSTEMATIC_ERROR_CHECK
++ if (func_number == glGetError_func) {
++ process->current_state->last_error = 0;
++ } else {
++ process->current_state->last_error = glGetError();
++ if (process->current_state->last_error != 0) {
++ printf("error %s 0x%x\n", tab_opengl_calls_name[func_number],
++ process->current_state->last_error);
++ }
++ }
++#endif
++
++ switch (ret_type) {
++ case TYPE_NONE:
++ break;
++
++ case TYPE_CHAR:
++ case TYPE_UNSIGNED_CHAR:
++ ret_int = ret_char;
++ break;
++
++ case TYPE_INT:
++ case TYPE_UNSIGNED_INT:
++ break;
++
++ case TYPE_CONST_CHAR:
++ {
++ strncpy(ret_string, (ret_str) ? ret_str : "", 32768);
++ break;
++ }
++
++ default:
++ fprintf(stderr, "unexpected ret type : %d\n", ret_type);
++ exit(-1);
++ break;
++ }
++
++ if (display_function_call)
++ fprintf(stderr, "[%d]< %s\n", process->instr_counter,
++ tab_opengl_calls_name[func_number]);
++
++ return ret_int;
++}
+Index: qemu-0.13.0/target-i386/opengl_func.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-i386/opengl_func.h 2011-01-17 16:42:36.000000000 +0800
+@@ -0,0 +1,1108 @@
++/*
++ * Main header for both host and guest sides
++ *
++ * Copyright (c) 2006,2007 Even Rouault
++ *
++ * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
++
++#include "mesa_gl.h"
++#include "mesa_glext.h"
++
++/* Argument list are internally of a type that can hold a target pointer
++ * or a host pointer. */
++typedef target_phys_addr_t arg_t;
++
++enum {
++ TYPE_NONE,
++ TYPE_CHAR,
++ TYPE_UNSIGNED_CHAR,
++ TYPE_SHORT,
++ TYPE_UNSIGNED_SHORT,
++ TYPE_INT,
++ TYPE_UNSIGNED_INT,
++ TYPE_FLOAT,
++ TYPE_DOUBLE,
++ TYPE_1CHAR,
++ TYPE_2CHAR,
++ TYPE_3CHAR,
++ TYPE_4CHAR,
++ TYPE_128UCHAR,
++ TYPE_1SHORT,
++ TYPE_2SHORT,
++ TYPE_3SHORT,
++ TYPE_4SHORT,
++ TYPE_1INT,
++ TYPE_2INT,
++ TYPE_3INT,
++ TYPE_4INT,
++ TYPE_1FLOAT,
++ TYPE_2FLOAT,
++ TYPE_3FLOAT,
++ TYPE_4FLOAT,
++ TYPE_16FLOAT,
++ TYPE_1DOUBLE,
++ TYPE_2DOUBLE,
++ TYPE_3DOUBLE,
++ TYPE_4DOUBLE,
++ TYPE_16DOUBLE,
++ TYPE_OUT_1INT,
++ TYPE_OUT_1FLOAT,
++ TYPE_OUT_4CHAR,
++ TYPE_OUT_4INT,
++ TYPE_OUT_4FLOAT,
++ TYPE_OUT_4DOUBLE,
++ TYPE_OUT_128UCHAR,
++ TYPE_CONST_CHAR,
++ TYPE_ARRAY_CHAR,
++ TYPE_ARRAY_SHORT,
++ TYPE_ARRAY_INT,
++ TYPE_ARRAY_FLOAT,
++ TYPE_ARRAY_DOUBLE,
++ TYPE_IN_IGNORED_POINTER,
++ TYPE_OUT_ARRAY_CHAR,
++ TYPE_OUT_ARRAY_SHORT,
++ TYPE_OUT_ARRAY_INT,
++ TYPE_OUT_ARRAY_FLOAT,
++ TYPE_OUT_ARRAY_DOUBLE,
++ TYPE_NULL_TERMINATED_STRING,
++
++ TYPE_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
++ TYPE_ARRAY_SHORT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
++ TYPE_ARRAY_INT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
++ TYPE_ARRAY_FLOAT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
++ TYPE_ARRAY_DOUBLE_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
++ TYPE_OUT_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
++ TYPE_OUT_ARRAY_SHORT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
++ TYPE_OUT_ARRAY_INT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
++ TYPE_OUT_ARRAY_FLOAT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
++ TYPE_OUT_ARRAY_DOUBLE_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
++ /* .... */
++ TYPE_LAST,
++ /* .... */
++ TYPE_1UCHAR = TYPE_CHAR,
++ TYPE_1USHORT = TYPE_1SHORT,
++ TYPE_1UINT = TYPE_1INT,
++ TYPE_OUT_1UINT = TYPE_OUT_1INT,
++ TYPE_OUT_4UCHAR = TYPE_OUT_4CHAR,
++ TYPE_ARRAY_VOID = TYPE_ARRAY_CHAR,
++ TYPE_ARRAY_SIGNED_CHAR = TYPE_ARRAY_CHAR,
++ TYPE_ARRAY_UNSIGNED_CHAR = TYPE_ARRAY_CHAR,
++ TYPE_ARRAY_UNSIGNED_SHORT = TYPE_ARRAY_SHORT,
++ TYPE_ARRAY_UNSIGNED_INT = TYPE_ARRAY_INT,
++ TYPE_OUT_ARRAY_VOID = TYPE_OUT_ARRAY_CHAR,
++ TYPE_OUT_ARRAY_SIGNED_CHAR = TYPE_OUT_ARRAY_CHAR,
++ TYPE_OUT_ARRAY_UNSIGNED_CHAR = TYPE_OUT_ARRAY_CHAR,
++ TYPE_OUT_ARRAY_UNSIGNED_SHORT = TYPE_OUT_ARRAY_SHORT,
++ TYPE_OUT_ARRAY_UNSIGNED_INT = TYPE_OUT_ARRAY_INT,
++ TYPE_ARRAY_VOID_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS =
++ TYPE_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
++ TYPE_ARRAY_SIGNED_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS =
++ TYPE_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
++ TYPE_ARRAY_UNSIGNED_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS =
++ TYPE_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
++ TYPE_ARRAY_UNSIGNED_SHORT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS =
++ TYPE_ARRAY_SHORT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
++ TYPE_ARRAY_UNSIGNED_INT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS =
++ TYPE_ARRAY_INT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
++ TYPE_OUT_ARRAY_VOID_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS =
++ TYPE_OUT_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
++ TYPE_OUT_ARRAY_SIGNED_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS =
++ TYPE_OUT_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
++ TYPE_OUT_ARRAY_UNSIGNED_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS =
++ TYPE_OUT_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
++ TYPE_OUT_ARRAY_UNSIGNED_SHORT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS =
++ TYPE_OUT_ARRAY_SHORT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
++ TYPE_OUT_ARRAY_UNSIGNED_INT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS =
++ TYPE_OUT_ARRAY_INT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS,
++};
++
++#define CASE_IN_LENGTH_DEPENDING_ON_PREVIOUS_ARGS \
++ case TYPE_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS: \
++ case TYPE_ARRAY_SHORT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS: \
++ case TYPE_ARRAY_INT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS: \
++ case TYPE_ARRAY_FLOAT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS: \
++ case TYPE_ARRAY_DOUBLE_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS
++
++#define CASE_OUT_LENGTH_DEPENDING_ON_PREVIOUS_ARGS \
++ case TYPE_OUT_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS: \
++ case TYPE_OUT_ARRAY_SHORT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS: \
++ case TYPE_OUT_ARRAY_INT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS: \
++ case TYPE_OUT_ARRAY_FLOAT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS: \
++ case TYPE_OUT_ARRAY_DOUBLE_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS
++
++#define CASE_IN_UNKNOWN_SIZE_POINTERS \
++ case TYPE_ARRAY_CHAR: \
++ case TYPE_ARRAY_SHORT: \
++ case TYPE_ARRAY_INT: \
++ case TYPE_ARRAY_FLOAT: \
++ case TYPE_ARRAY_DOUBLE
++
++#define CASE_IN_KNOWN_SIZE_POINTERS \
++ case TYPE_1CHAR:\
++ case TYPE_2CHAR:\
++ case TYPE_3CHAR:\
++ case TYPE_4CHAR:\
++ case TYPE_128UCHAR:\
++ case TYPE_1SHORT:\
++ case TYPE_2SHORT:\
++ case TYPE_3SHORT:\
++ case TYPE_4SHORT:\
++ case TYPE_1INT:\
++ case TYPE_2INT:\
++ case TYPE_3INT:\
++ case TYPE_4INT:\
++ case TYPE_1FLOAT:\
++ case TYPE_2FLOAT:\
++ case TYPE_3FLOAT:\
++ case TYPE_4FLOAT:\
++ case TYPE_16FLOAT:\
++ case TYPE_1DOUBLE:\
++ case TYPE_2DOUBLE:\
++ case TYPE_3DOUBLE:\
++ case TYPE_4DOUBLE:\
++ case TYPE_16DOUBLE
++
++#define CASE_OUT_UNKNOWN_SIZE_POINTERS \
++ case TYPE_OUT_ARRAY_CHAR: \
++ case TYPE_OUT_ARRAY_SHORT: \
++ case TYPE_OUT_ARRAY_INT: \
++ case TYPE_OUT_ARRAY_FLOAT: \
++ case TYPE_OUT_ARRAY_DOUBLE
++
++#define CASE_OUT_KNOWN_SIZE_POINTERS \
++ case TYPE_OUT_1INT: \
++ case TYPE_OUT_1FLOAT: \
++ case TYPE_OUT_4CHAR: \
++ case TYPE_OUT_4INT: \
++ case TYPE_OUT_4FLOAT: \
++ case TYPE_OUT_4DOUBLE: \
++ case TYPE_OUT_128UCHAR \
++
++#define CASE_IN_POINTERS CASE_IN_UNKNOWN_SIZE_POINTERS: CASE_IN_KNOWN_SIZE_POINTERS: CASE_IN_LENGTH_DEPENDING_ON_PREVIOUS_ARGS
++#define CASE_OUT_POINTERS CASE_OUT_UNKNOWN_SIZE_POINTERS: CASE_OUT_KNOWN_SIZE_POINTERS: CASE_OUT_LENGTH_DEPENDING_ON_PREVIOUS_ARGS
++
++#define CASE_POINTERS CASE_IN_POINTERS: CASE_OUT_POINTERS
++#define CASE_KNOWN_SIZE_POINTERS CASE_IN_KNOWN_SIZE_POINTERS: CASE_OUT_KNOWN_SIZE_POINTERS
++
++
++#define IS_ARRAY_CHAR(type) (type == TYPE_ARRAY_CHAR || type == TYPE_1CHAR || type == TYPE_2CHAR || type == TYPE_3CHAR || type == TYPE_4CHAR || type == TYPE_ARRAY_CHAR_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS)
++#define IS_ARRAY_SHORT(type) (type == TYPE_ARRAY_SHORT || type == TYPE_1SHORT || type == TYPE_2SHORT || type == TYPE_3SHORT || type == TYPE_4SHORT || type == TYPE_ARRAY_SHORT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS)
++#define IS_ARRAY_INT(type) (type == TYPE_ARRAY_INT || type == TYPE_1INT || type == TYPE_2INT || type == TYPE_3INT || type == TYPE_4INT || type == TYPE_ARRAY_INT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS)
++#define IS_ARRAY_FLOAT(type) (type == TYPE_ARRAY_FLOAT || type == TYPE_1FLOAT || type == TYPE_2FLOAT || type == TYPE_3FLOAT || type == TYPE_4FLOAT || type == TYPE_16FLOAT || type == TYPE_ARRAY_FLOAT_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS)
++#define IS_ARRAY_DOUBLE(type) (type == TYPE_ARRAY_DOUBLE || type == TYPE_1DOUBLE || type == TYPE_2DOUBLE || type == TYPE_3DOUBLE || type == TYPE_4DOUBLE || type == TYPE_16DOUBLE || type == TYPE_ARRAY_DOUBLE_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS)
++
++#define NB_MAX_TEXTURES 16
++#define MY_GL_MAX_VERTEX_ATTRIBS_ARB 16
++#define MY_GL_MAX_VERTEX_ATTRIBS_NV 16
++#define MY_GL_MAX_VARIANT_POINTER_EXT 16
++
++static int tab_args_type_length[] = {
++ 0,
++ sizeof(char),
++ sizeof(unsigned char),
++ sizeof(short),
++ sizeof(unsigned short),
++ sizeof(int),
++ sizeof(unsigned int),
++ sizeof(float),
++ sizeof(double),
++ 1 * sizeof(char),
++ 2 * sizeof(char),
++ 3 * sizeof(char),
++ 4 * sizeof(char),
++ 128 * sizeof(char),
++ 1 * sizeof(short),
++ 2 * sizeof(short),
++ 3 * sizeof(short),
++ 4 * sizeof(short),
++ 1 * sizeof(int),
++ 2 * sizeof(int),
++ 3 * sizeof(int),
++ 4 * sizeof(int),
++ 1 * sizeof(float),
++ 2 * sizeof(float),
++ 3 * sizeof(float),
++ 4 * sizeof(float),
++ 16 * sizeof(float),
++ 1 * sizeof(double),
++ 2 * sizeof(double),
++ 3 * sizeof(double),
++ 4 * sizeof(double),
++ 16 * sizeof(double),
++ sizeof(int),
++ sizeof(float),
++ 4 * sizeof(char),
++ 4 * sizeof(int),
++ 4 * sizeof(float),
++ 4 * sizeof(double),
++ 128 * sizeof(char),
++ 0,
++ 0,
++ 0,
++ 0,
++ 0,
++ 0,
++ 0,
++ 0,
++ 0,
++ 0,
++ 0,
++ 0,
++ 0,
++
++ /* the following sizes are the size of 1 element of the array */
++ sizeof(char),
++ sizeof(short),
++ sizeof(int),
++ sizeof(float),
++ sizeof(double),
++ sizeof(char),
++ sizeof(short),
++ sizeof(int),
++ sizeof(float),
++ sizeof(double),
++};
++
++typedef struct {
++ int ret_type;
++ int has_out_parameters;
++ int nb_args;
++ int args_type[0];
++} Signature;
++
++static const int _init32_signature[] =
++ { TYPE_NONE, 1, 2, TYPE_INT, TYPE_OUT_1INT };
++static const int _init64_signature[] =
++ { TYPE_NONE, 1, 2, TYPE_INT, TYPE_OUT_1INT };
++
++static const int _synchronize_signature[] = { TYPE_INT, 0, 0 };
++
++static const int _serialized_calls_signature[] =
++ { TYPE_NONE, 0, 1, TYPE_ARRAY_CHAR };
++
++static const int _exit_process_signature[] = { TYPE_NONE, 0, 0 };
++
++static const int _changeWindowState_signature[] =
++ { TYPE_NONE, 0, 2, TYPE_INT, TYPE_INT };
++
++static const int _moveResizeWindow_signature[] =
++ { TYPE_NONE, 0, 2, TYPE_INT, TYPE_4INT };
++
++static const int _send_cursor_signature[] =
++ { TYPE_NONE, 0, 7, TYPE_INT, TYPE_INT,
++ TYPE_INT, TYPE_INT,
++ TYPE_INT, TYPE_INT,
++ TYPE_ARRAY_INT
++};
++
++/* XVisualInfo* glXChooseVisual( Display *dpy, int screen, int *attribList ) */
++static const int glXChooseVisual_signature[] =
++ { TYPE_INT, 0, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_ARRAY_INT };
++
++/*GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis,
++ GLXContext shareList, Bool direct )*/
++static const int glXCreateContext_signature[] =
++ { TYPE_INT, 0, 4, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT, TYPE_INT };
++
++static const int glXCopyContext_signature[] =
++ { TYPE_NONE, 0, 4, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT,
++TYPE_INT };
++
++/* void glXDestroyContext( Display *dpy, GLXContext ctx ) */
++static const int glXDestroyContext_signature[] =
++ { TYPE_NONE, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT };
++
++/* Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable, GLXContext ctx) */
++//static const int glXMakeCurrent_signature[] = {TYPE_INT, 0, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT};
++/* making it asynchronous */
++static const int glXMakeCurrent_signature[] =
++ { TYPE_NONE, 0, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT };
++
++/*int glXGetConfig( Display *dpy, XVisualInfo *visual,
++ int attrib, int *value )*/
++static const int glXGetConfig_signature[] =
++ { TYPE_INT, 1, 4, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT,
++TYPE_OUT_1INT };
++
++/* "glXGetConfig_extended"(dpy, visual_id, int n, int* attribs, int* values, int* rets) */
++static const int glXGetConfig_extended_signature[] =
++ { TYPE_NONE, 1, 6, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT,
++TYPE_ARRAY_INT, TYPE_OUT_ARRAY_INT, TYPE_OUT_ARRAY_INT };
++
++/* void glXSwapBuffers( Display *dpy, GLXDrawable drawable ); */
++static const int glXSwapBuffers_signature[] =
++ { TYPE_NONE, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT };
++
++/* Bool glXQueryVersion( Display *dpy, int *maj, int *min ) */
++static const int glXQueryVersion_signature[] =
++ { TYPE_INT, 1, 3, TYPE_IN_IGNORED_POINTER, TYPE_OUT_1INT, TYPE_OUT_1INT };
++
++/* Bool glXQueryExtension( Display *dpy, int *errorBase, int *eventBase ) */
++static const int glXQueryExtension_signature[] =
++ { TYPE_INT, 1, 3, TYPE_IN_IGNORED_POINTER, TYPE_OUT_1INT, TYPE_OUT_1INT };
++
++static const int glXWaitGL_signature[] = { TYPE_INT, 0, 0 };
++static const int glXWaitX_signature[] = { TYPE_INT, 0, 0 };
++
++/* GLX 1.1 and later */
++
++/* const char *glXGetClientString( Display *dpy, int name ) */
++static const int glXGetClientString_signature[] =
++ { TYPE_CONST_CHAR, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT };
++
++/*const char *glXQueryExtensionsString( Display *dpy, int screen ) */
++static const int glXQueryExtensionsString_signature[] =
++ { TYPE_CONST_CHAR, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT };
++
++/* const char *glXQueryServerString( Display *dpy, int screen, int name ) */
++static const int glXQueryServerString_signature[] =
++ { TYPE_CONST_CHAR, 0, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT };
++
++
++static const int glXGetProcAddress_fake_signature[] =
++ { TYPE_INT, 0, 1, TYPE_NULL_TERMINATED_STRING };
++
++static const int glXGetProcAddress_global_fake_signature[] =
++ { TYPE_NONE, 1, 3, TYPE_INT, TYPE_ARRAY_CHAR, TYPE_OUT_ARRAY_CHAR };
++
++
++/* GLX 1.3 and later */
++
++/*
++GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen,
++ const int *attribList, int *nitems ); */
++static const int glXChooseFBConfig_signature[] =
++ { TYPE_INT, 1, 4, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_ARRAY_INT,
++TYPE_OUT_1INT };
++
++static const int glXChooseFBConfigSGIX_signature[] =
++ { TYPE_INT, 1, 4, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_ARRAY_INT,
++TYPE_OUT_1INT };
++
++static const int glXGetFBConfigs_signature[] =
++ { TYPE_INT, 1, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_OUT_1INT };
++
++/* "glXGetFBConfigAttrib_extended"(dpy, fbconfig, int n, int* attribs, int* values, int* rets) */
++static const int glXGetFBConfigAttrib_extended_signature[] =
++ { TYPE_NONE, 1, 6, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT,
++TYPE_ARRAY_INT, TYPE_OUT_ARRAY_INT, TYPE_OUT_ARRAY_INT };
++
++
++/* GLXPbuffer glXCreatePbuffer( Display *dpy, GLXFBConfig config,
++ const int *attribList ) */
++static const int glXCreatePbuffer_signature[] =
++ { TYPE_INT, 0, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_ARRAY_INT };
++
++static const int glXCreateGLXPbufferSGIX_signature[] =
++ { TYPE_INT, 0, 5, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_ARRAY_INT };
++
++static const int glXDestroyPbuffer_signature[] =
++ { TYPE_NONE, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT };
++
++static const int glXDestroyGLXPbufferSGIX_signature[] =
++ { TYPE_NONE, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT };
++
++/* GLXContext glXCreateNewContext(Display * dpy
++ GLXFBConfig config
++ int renderType
++ GLXContext ShareList
++ Bool Direct) */
++static const int glXCreateNewContext_signature[] =
++ { TYPE_INT, 0, 5, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_INT };
++
++static const int glXCreateContextWithConfigSGIX_signature[] =
++ { TYPE_INT, 0, 5, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_INT };
++
++/*XVisualInfo *glXGetVisualFromFBConfig( Display *dpy, GLXFBConfig config ) */
++static const int glXGetVisualFromFBConfig_signature[] =
++ { TYPE_INT, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT };
++
++/*int glXGetFBConfigAttrib(Display *dpy, GLXFBConfig config, int attribute, int *value)*/
++static const int glXGetFBConfigAttrib_signature[] =
++ { TYPE_INT, 1, 4, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT,
++TYPE_OUT_1INT };
++
++static const int glXGetFBConfigAttribSGIX_signature[] =
++ { TYPE_INT, 1, 4, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT,
++TYPE_OUT_1INT };
++
++static const int glXQueryContext_signature[] =
++ { TYPE_INT, 1, 4, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT,
++TYPE_OUT_1INT };
++
++static const int glXQueryGLXPbufferSGIX_signature[] =
++ { TYPE_INT, 1, 4, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT,
++TYPE_OUT_1INT };
++
++static const int glXQueryDrawable_signature[] =
++ { TYPE_NONE, 1, 4, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT,
++TYPE_OUT_1INT };
++
++/* void glXUseXFont( Font font, int first, int count, int list ) */
++static const int glXUseXFont_signature[] =
++ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT };
++
++/* Bool glXIsDirect( Display *dpy, GLXContext ctx ) */
++static const int glXIsDirect_signature[] =
++ { TYPE_CHAR, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT };
++
++static const int glXGetScreenDriver_signature[] =
++ { TYPE_CONST_CHAR, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT };
++
++static const int glXGetDriverConfig_signature[] =
++ { TYPE_CONST_CHAR, 0, 1, TYPE_NULL_TERMINATED_STRING };
++
++
++static const int glXWaitVideoSyncSGI_signature[] =
++ { TYPE_INT, 1, 3, TYPE_INT, TYPE_INT, TYPE_OUT_1INT };
++
++static const int glXGetVideoSyncSGI_signature[] =
++ { TYPE_INT, 1, 1, TYPE_OUT_1INT };
++
++static const int glXSwapIntervalSGI_signature[] =
++ { TYPE_INT, 0, 1, TYPE_INT };
++
++static const int glXBindTexImageATI_signature[] =
++ { TYPE_NONE, 0, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT };
++static const int glXReleaseTexImageATI_signature[] =
++ { TYPE_NONE, 0, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT };
++static const int glXBindTexImageARB_signature[] =
++ { TYPE_INT, 0, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT };
++static const int glXReleaseTexImageARB_signature[] =
++ { TYPE_INT, 0, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT };
++
++/* const GLubyte * glGetString( GLenum name ) */
++static const int glGetString_signature[] =
++ { TYPE_CONST_CHAR, 0, 1, TYPE_INT };
++
++/* void glShaderSourceARB (GLhandleARB handle , GLsizei size, const GLcharARB* *p_tab_prog, const GLint * tab_length) */
++/* --> void glShaderSourceARB (GLhandleARB handle , GLsizei size, const GLcharARB* all_progs, const GLint * tab_length) */
++static const int glShaderSourceARB_fake_signature[] =
++ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR, TYPE_ARRAY_INT };
++static const int glShaderSource_fake_signature[] =
++ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR, TYPE_ARRAY_INT };
++
++static const int glVertexPointer_fake_signature[] =
++ { TYPE_NONE, 0, 6, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_ARRAY_CHAR };
++static const int glNormalPointer_fake_signature[] =
++ { TYPE_NONE, 0, 5, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_ARRAY_CHAR };
++static const int glColorPointer_fake_signature[] =
++ { TYPE_NONE, 0, 6, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_ARRAY_CHAR };
++static const int glSecondaryColorPointer_fake_signature[] =
++ { TYPE_NONE, 0, 6, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_ARRAY_CHAR };
++static const int glIndexPointer_fake_signature[] =
++ { TYPE_NONE, 0, 5, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_ARRAY_CHAR };
++static const int glTexCoordPointer_fake_signature[] =
++ { TYPE_NONE, 0, 7, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_INT, TYPE_ARRAY_CHAR };
++static const int glEdgeFlagPointer_fake_signature[] =
++ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
++static const int glVertexAttribPointerARB_fake_signature[] =
++ { TYPE_NONE, 0, 8, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
++static const int glVertexAttribPointerNV_fake_signature[] =
++ { TYPE_NONE, 0, 7, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_INT, TYPE_ARRAY_CHAR };
++static const int glWeightPointerARB_fake_signature[] =
++ { TYPE_NONE, 0, 6, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_ARRAY_CHAR };
++static const int glMatrixIndexPointerARB_fake_signature[] =
++ { TYPE_NONE, 0, 6, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_ARRAY_CHAR };
++static const int glFogCoordPointer_fake_signature[] =
++ { TYPE_NONE, 0, 5, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_ARRAY_CHAR };
++static const int glInterleavedArrays_fake_signature[] =
++ { TYPE_NONE, 0, 5, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_ARRAY_CHAR };
++static const int glElementPointerATI_fake_signature[] =
++ { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
++static const int glVariantPointerEXT_fake_signature[] =
++ { TYPE_NONE, 0, 6, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_ARRAY_CHAR };
++static const int glTuxRacerDrawElements_fake_signature[] =
++ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
++static const int glVertexAndNormalPointer_fake_signature[] =
++ { TYPE_NONE, 0, 7, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_INT, TYPE_ARRAY_CHAR };
++static const int glTexCoordPointer01_fake_signature[] =
++ { TYPE_NONE, 0, 5, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_ARRAY_CHAR };
++static const int glTexCoordPointer012_fake_signature[] =
++ { TYPE_NONE, 0, 5, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_ARRAY_CHAR };
++static const int glVertexNormalPointerInterlaced_fake_signature[] =
++ { TYPE_NONE, 0, 8, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
++static const int glVertexNormalColorPointerInterlaced_fake_signature[] =
++ { TYPE_NONE, 0, 11, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
++static const int glVertexColorTexCoord0PointerInterlaced_fake_signature[] =
++ { TYPE_NONE, 0, 12, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
++static const int glVertexNormalTexCoord0PointerInterlaced_fake_signature[] =
++ { TYPE_NONE, 0, 11, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
++static const int glVertexNormalTexCoord01PointerInterlaced_fake_signature[] =
++ { TYPE_NONE, 0, 14, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
++static const int glVertexNormalTexCoord012PointerInterlaced_fake_signature[] =
++ { TYPE_NONE, 0, 17, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
++static const int
++ glVertexNormalColorTexCoord0PointerInterlaced_fake_signature[] =
++ { TYPE_NONE, 0, 14, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_ARRAY_CHAR };
++static const int
++ glVertexNormalColorTexCoord01PointerInterlaced_fake_signature[] =
++ { TYPE_NONE, 0, 17, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
++static const int
++ glVertexNormalColorTexCoord012PointerInterlaced_fake_signature[] =
++ { TYPE_NONE, 0, 20, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
++
++static const int glGenTextures_fake_signature[] =
++ { TYPE_NONE, 0, 1, TYPE_INT };
++static const int glGenBuffersARB_fake_signature[] =
++ { TYPE_NONE, 0, 1, TYPE_INT };
++static const int glGenLists_fake_signature[] = { TYPE_NONE, 0, 1, TYPE_INT };
++
++static const int _glDrawElements_buffer_signature[] =
++ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT };
++static const int _glDrawRangeElements_buffer_signature[] =
++ { TYPE_NONE, 0, 6, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_INT };
++static const int _glMultiDrawElements_buffer_signature[] =
++ { TYPE_NONE, 0, 5, TYPE_INT, TYPE_ARRAY_INT, TYPE_INT, TYPE_ARRAY_INT,
++TYPE_INT };
++
++static const int _glVertexPointer_buffer_signature[] =
++ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT };
++static const int _glNormalPointer_buffer_signature[] =
++ { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_INT };
++static const int _glColorPointer_buffer_signature[] =
++ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT };
++static const int _glSecondaryColorPointer_buffer_signature[] =
++ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT };
++static const int _glIndexPointer_buffer_signature[] =
++ { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_INT };
++static const int _glTexCoordPointer_buffer_signature[] =
++ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT };
++static const int _glEdgeFlagPointer_buffer_signature[] =
++ { TYPE_NONE, 0, 2, TYPE_INT, TYPE_INT };
++static const int _glVertexAttribPointerARB_buffer_signature[] =
++ { TYPE_NONE, 0, 6, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_INT };
++static const int _glWeightPointerARB_buffer_signature[] =
++ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT };
++static const int _glMatrixIndexPointerARB_buffer_signature[] =
++ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT };
++static const int _glFogCoordPointer_buffer_signature[] =
++ { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_INT };
++static const int _glVariantPointerEXT_buffer_signature[] =
++ { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT };
++
++static const int _glReadPixels_pbo_signature[] =
++ { TYPE_INT, 0, 7, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
++TYPE_INT, TYPE_INT };
++static const int _glDrawPixels_pbo_signature[] =
++ { TYPE_NONE, 0, 5, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT };
++static const int _glMapBufferARB_fake_signature[] =
++ { TYPE_INT, 1, 3, TYPE_INT, TYPE_INT, TYPE_OUT_ARRAY_CHAR };
++
++static const int _glSelectBuffer_fake_signature[] =
++ { TYPE_NONE, 0, 1, TYPE_INT };
++static const int _glGetSelectBuffer_fake_signature[] =
++ { TYPE_NONE, 1, 1, TYPE_ARRAY_CHAR };
++static const int _glFeedbackBuffer_fake_signature[] =
++ { TYPE_NONE, 0, 2, TYPE_INT, TYPE_INT };
++static const int _glGetFeedbackBuffer_fake_signature[] =
++ { TYPE_NONE, 1, 1, TYPE_ARRAY_CHAR };
++
++static const int _glGetError_fake_signature[] = { TYPE_NONE, 0, 0 };
++
++#define timesynchro_func -1
++#define memorize_array_func -2
++#define reuse_array_func -3
++
++#include "gl_func.h"
++
++static GLint __glTexParameter_size(FILE *err_file, GLenum pname)
++{
++ switch (pname) {
++ case GL_TEXTURE_MAG_FILTER:
++ case GL_TEXTURE_MIN_FILTER:
++ case GL_TEXTURE_WRAP_S:
++ case GL_TEXTURE_WRAP_T:
++ case GL_TEXTURE_PRIORITY:
++ case GL_TEXTURE_WRAP_R:
++ case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB:
++/* case GL_SHADOW_AMBIENT_SGIX:*/
++ case GL_TEXTURE_MIN_LOD:
++ case GL_TEXTURE_MAX_LOD:
++ case GL_TEXTURE_BASE_LEVEL:
++ case GL_TEXTURE_MAX_LEVEL:
++ case GL_TEXTURE_CLIPMAP_FRAME_SGIX:
++ case GL_TEXTURE_LOD_BIAS_S_SGIX:
++ case GL_TEXTURE_LOD_BIAS_T_SGIX:
++ case GL_TEXTURE_LOD_BIAS_R_SGIX:
++ case GL_GENERATE_MIPMAP:
++/* case GL_GENERATE_MIPMAP_SGIS:*/
++ case GL_TEXTURE_COMPARE_SGIX:
++ case GL_TEXTURE_COMPARE_OPERATOR_SGIX:
++ case GL_TEXTURE_MAX_CLAMP_S_SGIX:
++ case GL_TEXTURE_MAX_CLAMP_T_SGIX:
++ case GL_TEXTURE_MAX_CLAMP_R_SGIX:
++ case GL_TEXTURE_MAX_ANISOTROPY_EXT:
++ case GL_TEXTURE_LOD_BIAS:
++/* case GL_TEXTURE_LOD_BIAS_EXT:*/
++ case GL_DEPTH_TEXTURE_MODE:
++/* case GL_DEPTH_TEXTURE_MODE_ARB:*/
++ case GL_TEXTURE_COMPARE_MODE:
++/* case GL_TEXTURE_COMPARE_MODE_ARB:*/
++ case GL_TEXTURE_COMPARE_FUNC:
++/* case GL_TEXTURE_COMPARE_FUNC_ARB:*/
++ case GL_TEXTURE_UNSIGNED_REMAP_MODE_NV:
++ return 1;
++ case GL_TEXTURE_CLIPMAP_CENTER_SGIX:
++ case GL_TEXTURE_CLIPMAP_OFFSET_SGIX:
++ return 2;
++ case GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX:
++ return 3;
++ case GL_TEXTURE_BORDER_COLOR:
++ case GL_POST_TEXTURE_FILTER_BIAS_SGIX:
++ case GL_POST_TEXTURE_FILTER_SCALE_SGIX:
++ return 4;
++ default:
++ fprintf(err_file, "unhandled pname = %d\n", pname);
++ return 0;
++ }
++}
++
++static int __glLight_size(FILE *err_file, GLenum pname)
++{
++ switch (pname) {
++ case GL_AMBIENT:
++ case GL_DIFFUSE:
++ case GL_SPECULAR:
++ case GL_POSITION:
++ return 4;
++ break;
++
++ case GL_SPOT_DIRECTION:
++ return 3;
++ break;
++
++ case GL_SPOT_EXPONENT:
++ case GL_SPOT_CUTOFF:
++ case GL_CONSTANT_ATTENUATION:
++ case GL_LINEAR_ATTENUATION:
++ case GL_QUADRATIC_ATTENUATION:
++ return 1;
++ break;
++
++ default:
++ fprintf(err_file, "unhandled pname = %d\n", pname);
++ return 0;
++ }
++}
++
++static int __glMaterial_size(FILE *err_file, GLenum pname)
++{
++ switch (pname) {
++ case GL_AMBIENT:
++ case GL_DIFFUSE:
++ case GL_SPECULAR:
++ case GL_EMISSION:
++ case GL_AMBIENT_AND_DIFFUSE:
++ return 4;
++ break;
++
++ case GL_SHININESS:
++ return 1;
++ break;
++
++ case GL_COLOR_INDEXES:
++ return 3;
++ break;
++
++ default:
++ fprintf(err_file, "unhandled pname = %d\n", pname);
++ return 0;
++ }
++}
++
++static inline int compute_arg_length(FILE *err_file, int func_number,
++ int arg_i, arg_t *args)
++{
++ Signature *signature = (Signature *) tab_opengl_calls[func_number];
++ int *args_type = signature->args_type;
++
++ switch (func_number) {
++ case glProgramNamedParameter4fNV_func:
++ case glProgramNamedParameter4dNV_func:
++ case glProgramNamedParameter4fvNV_func:
++ case glProgramNamedParameter4dvNV_func:
++ case glGetProgramNamedParameterfvNV_func:
++ case glGetProgramNamedParameterdvNV_func:
++ if (arg_i == 2)
++ return 1 * args[arg_i - 1] *
++ tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glProgramStringARB_func:
++ case glLoadProgramNV_func:
++ case glGenProgramsNV_func:
++ case glDeleteProgramsNV_func:
++ case glGenProgramsARB_func:
++ case glDeleteProgramsARB_func:
++ case glRequestResidentProgramsNV_func:
++ case glDrawBuffers_func:
++ case glDrawBuffersARB_func:
++ case glDrawBuffersATI_func:
++ case glDeleteBuffers_func:
++ case glDeleteBuffersARB_func:
++ case glDeleteTextures_func:
++ case glDeleteTexturesEXT_func:
++ case glGenFramebuffersEXT_func:
++ case glDeleteFramebuffersEXT_func:
++ case glGenRenderbuffersEXT_func:
++ case glDeleteRenderbuffersEXT_func:
++ case glGenQueries_func:
++ case glGenQueriesARB_func:
++ case glDeleteQueries_func:
++ case glDeleteQueriesARB_func:
++ case glGenOcclusionQueriesNV_func:
++ case glDeleteOcclusionQueriesNV_func:
++ case glGenFencesNV_func:
++ case glDeleteFencesNV_func:
++ case glUniform1fv_func:
++ case glUniform1iv_func:
++ case glUniform1fvARB_func:
++ case glUniform1ivARB_func:
++ case glUniform1uivEXT_func:
++ case glVertexAttribs1dvNV_func:
++ case glVertexAttribs1fvNV_func:
++ case glVertexAttribs1svNV_func:
++ case glVertexAttribs1hvNV_func:
++ case glWeightbvARB_func:
++ case glWeightsvARB_func:
++ case glWeightivARB_func:
++ case glWeightfvARB_func:
++ case glWeightdvARB_func:
++ case glWeightubvARB_func:
++ case glWeightusvARB_func:
++ case glWeightuivARB_func:
++ case glPixelMapfv_func:
++ case glPixelMapuiv_func:
++ case glPixelMapusv_func:
++ case glProgramBufferParametersfvNV_func:
++ case glProgramBufferParametersIivNV_func:
++ case glProgramBufferParametersIuivNV_func:
++ case glTransformFeedbackAttribsNV_func:
++ case glTransformFeedbackVaryingsNV_func:
++ if (arg_i == signature->nb_args - 1)
++ return 1 * args[arg_i - 1] *
++ tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glUniform2fv_func:
++ case glUniform2iv_func:
++ case glUniform2fvARB_func:
++ case glUniform2ivARB_func:
++ case glUniform2uivEXT_func:
++ case glVertexAttribs2dvNV_func:
++ case glVertexAttribs2fvNV_func:
++ case glVertexAttribs2svNV_func:
++ case glVertexAttribs2hvNV_func:
++ case glDetailTexFuncSGIS_func:
++ case glSharpenTexFuncSGIS_func:
++ if (arg_i == signature->nb_args - 1)
++ return 2 * args[arg_i - 1] *
++ tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glUniform3fv_func:
++ case glUniform3iv_func:
++ case glUniform3fvARB_func:
++ case glUniform3ivARB_func:
++ case glUniform3uivEXT_func:
++ case glVertexAttribs3dvNV_func:
++ case glVertexAttribs3fvNV_func:
++ case glVertexAttribs3svNV_func:
++ case glVertexAttribs3hvNV_func:
++ if (arg_i == signature->nb_args - 1)
++ return 3 * args[arg_i - 1] *
++ tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glUniform4fv_func:
++ case glUniform4iv_func:
++ case glUniform4fvARB_func:
++ case glUniform4ivARB_func:
++ case glUniform4uivEXT_func:
++ case glVertexAttribs4dvNV_func:
++ case glVertexAttribs4fvNV_func:
++ case glVertexAttribs4svNV_func:
++ case glVertexAttribs4hvNV_func:
++ case glVertexAttribs4ubvNV_func:
++ case glProgramParameters4fvNV_func:
++ case glProgramParameters4dvNV_func:
++ case glProgramLocalParameters4fvEXT_func:
++ case glProgramEnvParameters4fvEXT_func:
++ case glProgramLocalParametersI4ivNV_func:
++ case glProgramLocalParametersI4uivNV_func:
++ case glProgramEnvParametersI4ivNV_func:
++ case glProgramEnvParametersI4uivNV_func:
++ if (arg_i == signature->nb_args - 1)
++ return 4 * args[arg_i - 1] *
++ tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glPrioritizeTextures_func:
++ case glPrioritizeTexturesEXT_func:
++ case glAreProgramsResidentNV_func:
++ case glAreTexturesResident_func:
++ case glAreTexturesResidentEXT_func:
++ if (arg_i == 1 || arg_i == 2)
++ return args[0] * tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glLightfv_func:
++ case glLightiv_func:
++ case glGetLightfv_func:
++ case glGetLightiv_func:
++ case glFragmentLightfvSGIX_func:
++ case glFragmentLightivSGIX_func:
++ case glGetFragmentLightfvSGIX_func:
++ case glGetFragmentLightivSGIX_func:
++ if (arg_i == signature->nb_args - 1)
++ return __glLight_size(err_file,
++ args[arg_i -
++ 1]) *
++ tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glLightModelfv_func:
++ case glLightModeliv_func:
++ if (arg_i == signature->nb_args - 1)
++ return ((args[arg_i - 1] ==
++ GL_LIGHT_MODEL_AMBIENT) ? 4 : 1) *
++ tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glFragmentLightModelfvSGIX_func:
++ case glFragmentLightModelivSGIX_func:
++ if (arg_i == signature->nb_args - 1)
++ return ((args[arg_i - 1] ==
++ GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX) ? 4 : 1) *
++ tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glMaterialfv_func:
++ case glMaterialiv_func:
++ case glGetMaterialfv_func:
++ case glGetMaterialiv_func:
++ case glFragmentMaterialfvSGIX_func:
++ case glFragmentMaterialivSGIX_func:
++ case glGetFragmentMaterialfvSGIX_func:
++ case glGetFragmentMaterialivSGIX_func:
++ if (arg_i == signature->nb_args - 1)
++ return __glMaterial_size(err_file,
++ args[arg_i -
++ 1]) *
++ tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glTexParameterfv_func:
++ case glTexParameteriv_func:
++ case glGetTexParameterfv_func:
++ case glGetTexParameteriv_func:
++ case glTexParameterIivEXT_func:
++ case glTexParameterIuivEXT_func:
++ case glGetTexParameterIivEXT_func:
++ case glGetTexParameterIuivEXT_func:
++ if (arg_i == signature->nb_args - 1)
++ return __glTexParameter_size(err_file,
++ args[arg_i -
++ 1]) *
++ tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glFogiv_func:
++ case glFogfv_func:
++ if (arg_i == signature->nb_args - 1)
++ return ((args[arg_i - 1] ==
++ GL_FOG_COLOR) ? 4 : 1) *
++ tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glTexGendv_func:
++ case glTexGenfv_func:
++ case glTexGeniv_func:
++ case glGetTexGendv_func:
++ case glGetTexGenfv_func:
++ case glGetTexGeniv_func:
++ if (arg_i == signature->nb_args - 1)
++ return ((args[arg_i - 1] ==
++ GL_TEXTURE_GEN_MODE) ? 1 : 4) *
++ tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glTexEnvfv_func:
++ case glTexEnviv_func:
++ case glGetTexEnvfv_func:
++ case glGetTexEnviv_func:
++ if (arg_i == signature->nb_args - 1)
++ return ((args[arg_i - 1] ==
++ GL_TEXTURE_ENV_MODE) ? 1 : 4) *
++ tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glConvolutionParameterfv_func:
++ case glConvolutionParameteriv_func:
++ case glGetConvolutionParameterfv_func:
++ case glGetConvolutionParameteriv_func:
++ case glConvolutionParameterfvEXT_func:
++ case glConvolutionParameterivEXT_func:
++ case glGetConvolutionParameterfvEXT_func:
++ case glGetConvolutionParameterivEXT_func:
++ if (arg_i == signature->nb_args - 1)
++ return ((args[arg_i - 1] == GL_CONVOLUTION_BORDER_COLOR ||
++ args[arg_i - 1] == GL_CONVOLUTION_FILTER_SCALE ||
++ args[arg_i - 1] ==
++ GL_CONVOLUTION_FILTER_BIAS) ? 4 : 1) *
++ tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glGetVertexAttribfvARB_func:
++ case glGetVertexAttribfvNV_func:
++ case glGetVertexAttribfv_func:
++ case glGetVertexAttribdvARB_func:
++ case glGetVertexAttribdvNV_func:
++ case glGetVertexAttribdv_func:
++ case glGetVertexAttribivARB_func:
++ case glGetVertexAttribivNV_func:
++ case glGetVertexAttribiv_func:
++ case glGetVertexAttribIivEXT_func:
++ case glGetVertexAttribIuivEXT_func:
++ if (arg_i == signature->nb_args - 1)
++ return ((args[arg_i - 1] ==
++ GL_CURRENT_VERTEX_ATTRIB_ARB) ? 4 : 1) *
++ tab_args_type_length[args_type[arg_i]];
++ break;
++
++
++ case glPointParameterfv_func:
++ case glPointParameterfvEXT_func:
++ case glPointParameterfvARB_func:
++ case glPointParameterfvSGIS_func:
++ case glPointParameteriv_func:
++ case glPointParameterivEXT_func:
++ if (arg_i == signature->nb_args - 1)
++ return ((args[arg_i - 1] ==
++ GL_POINT_DISTANCE_ATTENUATION) ? 3 : 1) *
++ tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glUniformMatrix2fv_func:
++ case glUniformMatrix2fvARB_func:
++ if (arg_i == signature->nb_args - 1)
++ return 2 * 2 * args[1] * tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glUniformMatrix3fv_func:
++ case glUniformMatrix3fvARB_func:
++ if (arg_i == signature->nb_args - 1)
++ return 3 * 3 * args[1] * tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glUniformMatrix4fv_func:
++ case glUniformMatrix4fvARB_func:
++ if (arg_i == signature->nb_args - 1)
++ return 4 * 4 * args[1] * tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glUniformMatrix2x3fv_func:
++ case glUniformMatrix3x2fv_func:
++ if (arg_i == signature->nb_args - 1)
++ return 2 * 3 * args[1] * tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glUniformMatrix2x4fv_func:
++ case glUniformMatrix4x2fv_func:
++ if (arg_i == signature->nb_args - 1)
++ return 2 * 4 * args[1] * tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glUniformMatrix3x4fv_func:
++ case glUniformMatrix4x3fv_func:
++ if (arg_i == signature->nb_args - 1)
++ return 3 * 4 * args[1] * tab_args_type_length[args_type[arg_i]];
++ break;
++
++ case glSpriteParameterivSGIX_func:
++ case glSpriteParameterfvSGIX_func:
++ if (arg_i == signature->nb_args - 1)
++ return ((args[arg_i - 1] ==
++ GL_SPRITE_MODE_SGIX) ? 1 : 3) *
++ tab_args_type_length[args_type[arg_i]];
++ break;
++
++ default:
++ break;
++ }
++
++ fprintf(err_file,
++ "invalid combination for compute_arg_length : func_number=%d, arg_i=%d\n",
++ func_number, arg_i);
++ return 0;
++}
++
++#define IS_NULL_POINTER_OK_FOR_FUNC(func_number) \
++ (func_number == glBitmap_func || \
++ func_number == _send_cursor_func || \
++ func_number == glTexImage1D_func || \
++ func_number == glTexImage2D_func || \
++ func_number == glTexImage3D_func || \
++ func_number == glBufferDataARB_func || \
++ func_number == glNewObjectBufferATI_func)
++
++#ifdef __amd64__
++#define _init_func _init64_func
++#else
++#ifdef __i386__
++#define _init_func _init32_func
++#else
++#error Unsupported ABI
++#endif
++#endif
+Index: qemu-0.13.0/target-i386/opengl_player.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-i386/opengl_player.c 2011-01-17 16:42:36.000000000 +0800
+@@ -0,0 +1,1461 @@
++/*
++ * Plays a sequence of OpenGL calls recorded either under qemu or with opengl_server
++ *
++ * Copyright (c) 2007 Even Rouault
++ *
++ * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
++
++/* gcc -O2 -g -Wall opengl_player.c opengl_exec.c -o opengl_player -I../i386-softmmu -I. -I.. -lGL */
++
++#include <stdlib.h>
++#include <stdio.h>
++#include <string.h>
++#include <assert.h>
++#include <unistd.h>
++#include <sys/time.h>
++#include <math.h>
++
++#include <GL/gl.h>
++#include <X11/Xlib.h>
++
++// TODO
++typedef long unsigned int target_phys_addr_t;
++
++#include "opengl_func.h"
++#include "opengl_utils.h"
++
++//#include "ffmpeg/avcodec.h"
++
++extern void init_process_tab(void);
++extern int do_function_call(int, arg_t *, char *);
++
++void do_disconnect_current(void);
++void do_context_switch(Display *dpy, pid_t pid, int call);
++
++typedef struct {
++ int n_used;
++ unsigned int crc;
++ int size;
++ long long last_use;
++} RecordBufferedArray;
++
++typedef struct {
++ int size;
++ long file_offset;
++} ReplayBufferedArray;
++
++#define N_BUFFERED_ARRAYS 1024
++RecordBufferedArray recordBufferedArrays[N_BUFFERED_ARRAYS];
++
++#define INSTR_WINDOW_SIZE 65536
++short instrWindow[INSTR_WINDOW_SIZE];
++int instrWindowCount = 0;
++int instrWindowPtr = 0;
++int instrWindowBeginPtr = 0;
++
++#include "ghash.c"
++
++#define PRIME 131
++
++typedef struct {
++ int iFirstOccur;
++ int nbOccur;
++ int hash;
++} SeqDesc;
++
++typedef struct {
++ int hash;
++ int offset;
++} HashElt;
++
++int sort_hash_N;
++short *sort_hash_tab;
++int count_compar;
++int collision_detected;
++
++static int sort_hash(const void *ptrA, const void *ptrB)
++{
++ const HashElt *a = (const HashElt *) ptrA;
++ const HashElt *b = (const HashElt *) ptrB;
++
++ count_compar++;
++ if (a->hash == b->hash) {
++ int j;
++
++ for (j = 0; j < sort_hash_N; j++) {
++ if (sort_hash_tab[a->offset + j] != sort_hash_tab[b->offset + j]) {
++ collision_detected = 1;
++ // fprintf(stderr, "collision de hash !\n");
++ return sort_hash_tab[a->offset + j] <
++ sort_hash_tab[b->offset + j] ? -1 : 1;
++ }
++ }
++ return a->offset - b->offset;
++ } else if (a->hash < b->hash)
++ return -1;
++ else
++ return 1;
++}
++
++static int sort_seq_desc_by_occur(const void *ptrA, const void *ptrB)
++{
++ const SeqDesc *a = (const SeqDesc *) ptrA;
++ const SeqDesc *b = (const SeqDesc *) ptrB;
++
++ return b->nbOccur - a->nbOccur;
++}
++
++static int sort_seq_desc_by_offset(const void *ptrA, const void *ptrB)
++{
++ const SeqDesc *a = (const SeqDesc *) ptrA;
++ const SeqDesc *b = (const SeqDesc *) ptrB;
++
++ return a->iFirstOccur - b->iFirstOccur;
++}
++
++void find_repeated_seq(short *tab, int iStart, int length)
++{
++ // SimpleHashTable* tableHash = simple_hash_table_new(free);
++ int N = 10;
++ int i;
++ int hash = 0;
++ int primeN = 1;
++ HashElt *tabHash = malloc(sizeof(HashElt) * (length - N + 1));
++
++ short *new_tab = malloc(sizeof(short) * length);
++ memcpy(&new_tab[0], &tab[iStart], sizeof(short) * (length - iStart));
++ memcpy(&new_tab[length - iStart], &tab[0], sizeof(short) * iStart);
++ tab = new_tab;
++
++ sort_hash_N = N;
++ sort_hash_tab = tab;
++
++ fprintf(stderr, "(start) iStart = %d\n", iStart);
++ for (i = 0; i < N; i++) {
++ primeN *= PRIME;
++ }
++ for (i = 0; i < length; i++) {
++ hash = hash * PRIME + tab[i];
++ if (i >= N) {
++ hash -= tab[i - N] * primeN;
++ }
++ if (i >= N - 1) {
++ tabHash[i - (N - 1)].offset = i - (N - 1);
++ tabHash[i - (N - 1)].hash =
++ /* (i == 100) ? tabHash[0].hash : */ hash;
++#if 0
++ void **p_n_occurences =
++ simple_hash_table_lookup_pointer(tableHash, hash);
++ if (p_n_occurences == NULL) {
++ SeqDesc *seqDesc = malloc(sizeof(SeqDesc));
++
++ seqDesc->iFirstOccur = i - (N - 1);
++ seqDesc->nbOccur = 1;
++ simple_hash_table_insert(tableHash, hash, seqDesc);
++ } else {
++ SeqDesc *seqDesc = (SeqDesc *) (*p_n_occurences);
++ int j;
++
++ for (j = 0; j < N; j++) {
++ if (tab[(iStart + seqDesc->iFirstOccur + j) % length] !=
++ tab[(iStart + i - (N - 1) + j) % length])
++ break;
++ }
++ if (j != N)
++ fprintf(stderr, "arg\n");
++ seqDesc->nbOccur++;
++ // fprintf(stderr, "iStart = %d, i = %d, iFirstOccur = %d,
++ // nbOccur = %d\n", iStart, i, seqDesc->iFirstOccur,
++ // seqDesc->nbOccur);
++ }
++#endif
++ }
++ }
++ collision_detected = 0;
++ count_compar = 0;
++ qsort(tabHash, length - N + 1, sizeof(HashElt), sort_hash);
++ if (!collision_detected) {
++ SeqDesc *tabSeqDesc = (SeqDesc *) malloc(sizeof(SeqDesc) * length);
++ int nbSeqDesc = 0;
++ int lastI = 0;
++ int prevHash = tabHash[0].hash;
++
++ for (i = 1; i < length - N + 1; i++) {
++ if (tabHash[i].hash != prevHash) {
++ tabSeqDesc[nbSeqDesc].iFirstOccur = tabHash[lastI].offset;
++ tabSeqDesc[nbSeqDesc].nbOccur = i - lastI;
++ tabSeqDesc[nbSeqDesc].hash = prevHash;
++ nbSeqDesc++;
++ lastI = i;
++ prevHash = tabHash[i].hash;
++ }
++ }
++ tabSeqDesc[nbSeqDesc].iFirstOccur = tabHash[lastI].offset;
++ tabSeqDesc[nbSeqDesc].nbOccur = i - lastI;
++ nbSeqDesc++;
++ qsort(tabSeqDesc, nbSeqDesc, sizeof(SeqDesc), sort_seq_desc_by_occur);
++ for (i = 0; i < nbSeqDesc; i++) {
++ if (tabSeqDesc[i].nbOccur < 10)
++ break;
++ // fprintf(stderr, "%d %d\n", tabSeqDesc[i].iFirstOccur,
++ // tabSeqDesc[i].nbOccur);
++ }
++ nbSeqDesc = i;
++ qsort(tabSeqDesc, nbSeqDesc, sizeof(SeqDesc),
++ sort_seq_desc_by_offset);
++ lastI = tabSeqDesc[0].iFirstOccur;
++ int maxI = 0;
++ int j = 0;
++
++ for (i = 1; i < nbSeqDesc; i++) {
++ if (tabSeqDesc[i].iFirstOccur - lastI <= N) {
++ if (tabSeqDesc[i].nbOccur > tabSeqDesc[maxI].nbOccur) {
++ maxI = i;
++ }
++ } else {
++ tabSeqDesc[j].iFirstOccur = tabSeqDesc[maxI].iFirstOccur;
++ tabSeqDesc[j].nbOccur = tabSeqDesc[maxI].nbOccur;
++ j++;
++#define MAX(a,b) (((a)>(b)) ? (a) : (b))
++ lastI = tabSeqDesc[maxI].iFirstOccur;
++ while (i < nbSeqDesc &&
++ tabSeqDesc[i].iFirstOccur - lastI <= N)
++ i++;
++ if (i == nbSeqDesc)
++ break;
++ maxI = i;
++ }
++ }
++ nbSeqDesc = j;
++ qsort(tabSeqDesc, nbSeqDesc, sizeof(SeqDesc), sort_seq_desc_by_occur);
++ for (i = 0; i < nbSeqDesc; i++) {
++ fprintf(stderr, "offset=%d occurNb=%d hash=%d:",
++ tabSeqDesc[i].iFirstOccur, tabSeqDesc[i].nbOccur,
++ tabSeqDesc[i].hash);
++ for (j = 0; j < N; j++)
++ fprintf(stderr, "%d ", tab[tabSeqDesc[i].iFirstOccur + j]);
++ fprintf(stderr, "\n");
++ }
++ free(tabSeqDesc);
++ } else {
++ fprintf(stderr, "collision de hash !\n");
++ }
++
++ fprintf(stderr, "(end) iStart = %d (count_compar = %d)\n", iStart,
++ count_compar);
++ // simple_hash_table_foreach(tableHash,
++ free(tabHash);
++ free(tab);
++#if 0
++ simple_hash_table_destroy(tableHash);
++#endif
++#if 0
++ int i, j, k;
++
++ for (i = 0; i < length; i++) {
++ int nMaxContiguous = 0;
++ int jMax = 0;
++
++ for (j = 0; j < length; j++) {
++ int nContiguous = 0;
++
++ for (k = 0; k < j - i; k++) {
++ if (tab[(iStart + i + k) % length] ==
++ tab[(iStart + i + j + k) % length]) {
++ nContiguous++;
++ } else
++ break;
++ }
++ if (nContiguous >= nMaxContiguous) {
++ nMaxContiguous = nContiguous;
++ jMax = j;
++ }
++ }
++ fprintf(stderr, "iStart = %d, i = %d, j = %d, nContiguous = %d\n",
++ iStart, i, i + jMax, nMaxContiguous);
++ }
++#endif
++}
++
++#define MAX_SERVER_STATE_STACK_SIZE 16
++
++typedef struct {
++ GLbitfield mask;
++ int matrixMode;
++ int lastMatrixOp;
++} ServerState;
++
++typedef struct {
++ ServerState stackAttrib[MAX_SERVER_STATE_STACK_SIZE];
++ int stackAttribPtr;
++ int matrixMode;
++ int lastMatrixOp;
++} GLState;
++
++#define NB_STATES 100
++GLState states[NB_STATES];
++
++void usage()
++{
++ printf("Usage : opengl_player [OPTION] filename\n\n");
++ printf
++ ("filename is the file where to read the OpenGL flow ('/tmp/debug_gl.bin' by default)\n");
++ printf("'-' is supported and stands for standard input\n\n");
++ printf("The following options are available :\n");
++ printf
++ ("--debug : output debugging trace on stderr\n");
++ printf("--disable-real-time-play-back : play as fast as possible\n");
++ printf
++ ("--show-hard-disk-bandwidth : displays regularly the data bandwidth\n");
++ printf("--h or --help : display this help\n");
++}
++
++int main(int argc, char *argv[])
++{
++ static int args_size[50];
++ int i;
++ int visualid_fbconfig_read = -1;
++ int visualid_fbconfig_real = 0;
++ char *filename = "/tmp/debug_gl.bin";
++ int slowdown = 0;
++ int debug = 0;
++ char *ret_string;
++ arg_t args[50];
++ struct timeval start_time, last_time, current_time;
++ int noplay = 0;
++ int count_last_time = 0, count_current = 0;
++ int refresh_rate = 500;
++ int disable_real_time_play_back = 0;
++ int show_hard_disk_bandwith = 0;
++ int last_offset = 0;
++ int resize = 0;
++ int window_width = 0, window_height = 0;
++ int orig_window_width = 0;
++ int show_offset = 0;
++ int show_diff_offset = 0;
++ int last_cmd_offset = 0;
++ FILE *compressed_file = NULL;
++ int sizeBufferedArraysPlay = 0;
++ ReplayBufferedArray *replayBufferedArrays = NULL;
++ int currentState = 0;
++
++ memset(recordBufferedArrays, 0, sizeof(recordBufferedArrays));
++ memset(states, 0, sizeof(states));
++ for (i = 0; i < NB_STATES; i++) {
++ states[i].matrixMode = GL_MODELVIEW;
++ states[i].lastMatrixOp = -1;
++ }
++
++ /* avcodec_init(); AVCodec* avCodec =
++ * avcodec_find_encoder(CODEC_ID_MPEG2VIDEO); AVCodecContext*
++ * avCodecContext = avcodec_alloc_context(); */
++
++ for (i = 1; i < argc; i++) {
++ if (argv[i][0] == '-' && argv[i][1] == '-')
++ argv[i] = argv[i] + 1;
++
++ if (strncmp(argv[i], "-slowdown=", strlen("-slowdown=")) == 0) {
++ slowdown = atoi(argv[i] + strlen("-slowdown="));
++ } else if (strcmp(argv[i], "-noplay") == 0) {
++ noplay = 1;
++ } else if (strcmp(argv[i], "-debug") == 0) {
++ debug = 1;
++ } else if (strcmp(argv[i], "-disable-real-time-play-back") == 0) {
++ disable_real_time_play_back = 1;
++ } else if (strcmp(argv[i], "-show-hard-disk-bandwidth") == 0) {
++ show_hard_disk_bandwith = 1;
++ } else if (strcmp(argv[i], "-show-offset") == 0) {
++ show_offset = 1;
++ } else
++ if (strncmp
++ (argv[i], "-show-diff-offset",
++ strlen("-show-diff-offset")) == 0) {
++ show_diff_offset = atoi(argv[i] + strlen("-show-diff-offset="));
++ } else if (strncmp(argv[i], "-width=", strlen("-width=")) == 0) {
++ window_width = atoi(argv[i] + strlen("-width="));
++ resize = 1;
++ } else if (strncmp(argv[i], "-refreshrate=", strlen("-refreshrate="))
++ == 0) {
++ refresh_rate = atoi(argv[i] + strlen("-refreshrate="));
++ } else
++ if (strncmp
++ (argv[i], "-output-compressed-filename=",
++ strlen("-output-compressed-filename=")) == 0) {
++ char *compressed_filename =
++ argv[i] + strlen("-output-compressed-filename=");
++ compressed_file = fopen(compressed_filename, "wb");
++ } else if (strcmp(argv[i], "-") == 0) {
++ filename = NULL;
++ } else if (strcmp(argv[i], "-h") == 0 ||
++ strcmp(argv[i], "-help") == 0) {
++ usage();
++ return 0;
++ } else
++ filename = argv[i];
++ }
++ FILE *f = (filename) ? fopen(filename, "rb") : stdin;
++
++ if (f == NULL) {
++ fprintf(stderr, "cannot open %s\n", filename);
++ return 0;
++ }
++ // FILE* fout = fopen("/tmp/raw", "wb");
++
++ init_process_tab();
++ ret_string = malloc(32768);
++
++ gettimeofday(&start_time, NULL);
++ gettimeofday(&last_time, NULL);
++
++// void* buffer= NULL;
++#define WRITE_UNSIGNED_CHAR(x) do { unsigned char myvar = x; fwrite(&myvar, sizeof(myvar), 1, compressed_file); } while(0)
++#define WRITE_SHORT(x) do { short myvar = x; fwrite(&myvar, sizeof(myvar), 1, compressed_file); } while(0)
++#define WRITE_INT(x) do { int myvar = x; fwrite(&myvar, sizeof(myvar), 1, compressed_file); } while(0)
++#define WRITE_LONGLONG(x) do { long long myvar = x; fwrite(&myvar, sizeof(myvar), 1, compressed_file); } while(0)
++#define WRITE_FLOAT(x) do { float myvar = (float)x; fwrite(&myvar, sizeof(myvar), 1, compressed_file); } while(0)
++#define WRITE_3DOUBLE_AS_3FLOAT(x) do { float myfloats[] = { x[0], x[1], x[2] }; fwrite(myfloats, sizeof(myvar), 1, compressed_file); } while(0)
++
++ // FILE* fopcodes = fopen("/tmp/opcodes.bin", "wb");
++ do_context_switch(XOpenDisplay(NULL), 1, _init32_func);
++
++ long long instr_count = 0;
++
++ while (1) {
++ short func_number;
++ short memorize_array_play = -1;
++ short reuse_array_play = -1;
++
++ begin:
++ if (fread(&func_number, sizeof(short), 1, f) == 0)
++ break;
++ if (func_number == _exit_process_func)
++ break;
++
++ if (func_number == _serialized_calls_func) {
++ continue;
++ }
++ // fwrite(&func_number, sizeof(short), 1, fopcodes);
++
++ /*
++ * instrWindow[instrWindowPtr] = func_number; instrWindowPtr++; if
++ * (instrWindowPtr == INSTR_WINDOW_SIZE) instrWindowPtr = 0;
++ * instrWindowCount++; if (instrWindowCount >= INSTR_WINDOW_SIZE) {
++ * if ((instrWindowCount % (INSTR_WINDOW_SIZE / 2)) == 0)
++ * find_repeated_seq(instrWindow, instrWindowBeginPtr,
++ * INSTR_WINDOW_SIZE); instrWindowBeginPtr++; if (instrWindowBeginPtr
++ * == INSTR_WINDOW_SIZE) instrWindowBeginPtr = 0; } */
++
++ /* -1 is special code that indicates time synchro */
++ if (func_number == timesynchro_func) {
++ long long ts_file;
++ fread(&ts_file, sizeof(long long), 1, f);
++
++ if (compressed_file) {
++ WRITE_SHORT(timesynchro_func);
++ WRITE_LONGLONG(ts_file);
++ }
++
++ if (!disable_real_time_play_back) {
++ gettimeofday(&current_time, NULL);
++ long long ts_real =
++ (current_time.tv_sec -
++ start_time.tv_sec) * (long long) 1000000 +
++ current_time.tv_usec - start_time.tv_usec;
++ // fprintf(stderr, "%d %d\n", (int)ts_real, (int)ts_file);
++ if (ts_real < ts_file/* && ts_file - ts_real > 100 * 1000 */) {
++ /* we're playing too fast */
++ // fprintf(stderr, "waiting %d usec\n", (int)(ts_file -
++ // ts_real));
++ usleep((int) (ts_file - ts_real));
++ }
++ }
++ continue;
++ } else if (func_number == memorize_array_func) {
++ fread(&memorize_array_play, sizeof(short), 1, f);
++ goto begin;
++ } else if (func_number == reuse_array_func) {
++ fread(&reuse_array_play, sizeof(short), 1, f);
++ goto begin;
++ }
++
++ assert(func_number >= 0);
++
++ Signature *signature = (Signature *) tab_opengl_calls[func_number];
++ int nb_args = signature->nb_args;
++ int *args_type = signature->args_type;
++
++ for (i = 0; i < nb_args; i++) {
++ switch (args_type[i]) {
++#if 0
++ case TYPE_UNSIGNED_CHAR:
++ case TYPE_CHAR:
++ {
++ char c;
++
++ fread(&c, sizeof(c), 1, f);
++ args[i] = c;
++ break;
++ }
++
++ case TYPE_UNSIGNED_SHORT:
++ case TYPE_SHORT:
++ {
++ short s;
++
++ fread(&s, sizeof(s), 1, f);
++ args[i] = s;
++ break;
++ }
++
++ case TYPE_FLOAT:
++ fread(&args[i], sizeof(int), 1, f);
++ break;
++
++#endif
++ case TYPE_UNSIGNED_CHAR:
++ case TYPE_CHAR:
++ case TYPE_UNSIGNED_INT:
++ case TYPE_INT:
++ case TYPE_UNSIGNED_SHORT:
++ case TYPE_SHORT:
++ case TYPE_FLOAT:
++ {
++ int n;
++ fread(&n, sizeof(int), 1, f);
++ args[i] = n;
++ break;
++ }
++
++ case TYPE_NULL_TERMINATED_STRING:
++ CASE_IN_UNKNOWN_SIZE_POINTERS:
++ fread(&args_size[i], sizeof(int), 1, f);
++ if (args_size[i]) {
++ args[i] = (long) malloc(args_size[i]);
++ fread((void *) args[i], args_size[i], 1, f);
++ } else {
++ if (!IS_NULL_POINTER_OK_FOR_FUNC(func_number)) {
++ fprintf(stderr, "call %s arg %d\n",
++ tab_opengl_calls_name[func_number], i);
++ }
++ args[i] = 0;
++ }
++ if (reuse_array_play >= 0) {
++ long current_pos = ftell(f);
++
++ args_size[i] =
++ replayBufferedArrays[reuse_array_play].size;
++ args[i] = (long) malloc(args_size[i]);
++ fseek(f,
++ replayBufferedArrays[reuse_array_play].file_offset,
++ SEEK_SET);
++ fread((void *) args[i], args_size[i], 1, f);
++ fseek(f, current_pos, SEEK_SET);
++ }
++ if (memorize_array_play >= 0) {
++ assert(memorize_array_play <= sizeBufferedArraysPlay);
++ if (memorize_array_play == sizeBufferedArraysPlay) {
++ sizeBufferedArraysPlay++;
++ replayBufferedArrays =
++ realloc(replayBufferedArrays,
++ sizeBufferedArraysPlay *
++ sizeof(ReplayBufferedArray));
++ replayBufferedArrays[sizeBufferedArraysPlay -
++ 1].file_offset = 0;
++ }
++ replayBufferedArrays[memorize_array_play].file_offset =
++ ftell(f) - args_size[i];
++ replayBufferedArrays[memorize_array_play].size =
++ args_size[i];
++ }
++ break;
++
++ CASE_IN_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
++ {
++ args_size[i] =
++ compute_arg_length(stderr, func_number, i, args);
++ args[i] =
++ (args_size[i]) ? (long) malloc(args_size[i]) : 0;
++ fread((void *) args[i], args_size[i], 1, f);
++ break;
++ }
++
++ CASE_OUT_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
++ {
++ args_size[i] =
++ compute_arg_length(stderr, func_number, i, args);
++ args[i] = (long) malloc(args_size[i]);
++ break;
++ }
++
++ CASE_OUT_UNKNOWN_SIZE_POINTERS:
++ {
++ fread(&args_size[i], sizeof(int), 1, f);
++ if (args_size[i]) {
++ args[i] = (long) malloc(args_size[i]);
++ } else {
++ if (!IS_NULL_POINTER_OK_FOR_FUNC(func_number)) {
++ fprintf(stderr, "call %s arg %d\n",
++ tab_opengl_calls_name[func_number], i);
++ }
++ args[i] = 0;
++ }
++ break;
++ }
++
++ CASE_OUT_KNOWN_SIZE_POINTERS:
++ {
++ args_size[i] = tab_args_type_length[args_type[i]];
++ assert(args_size[i]);
++ args[i] = (long) malloc(args_size[i]);
++ break;
++ }
++
++ case TYPE_DOUBLE:
++ CASE_IN_KNOWN_SIZE_POINTERS:
++ args_size[i] = tab_args_type_length[args_type[i]];
++ args[i] = (long) malloc(args_size[i]);
++ fread((void *) args[i], args_size[i], 1, f);
++ break;
++
++ case TYPE_IN_IGNORED_POINTER:
++ args[i] = 0;
++ break;
++
++ default:
++ fprintf(stderr, "shouldn't happen : call %s arg %d\n",
++ tab_opengl_calls_name[func_number], i);
++ do_disconnect_current();
++ return 0;
++ }
++ }
++ if (debug)
++ display_gl_call(stderr, func_number, args, args_size);
++
++ if (debug && reuse_array_play != -1)
++ fprintf(stderr, "reuse_array_play %d\n", reuse_array_play);
++ if (debug && memorize_array_play != -1)
++ fprintf(stderr, "memorize_array_play %d\n", memorize_array_play);
++
++ if (compressed_file) {
++ int reuse_array = -1;
++ int memorize_array = -1;
++ void *ptr = NULL;
++ int bytes_size = 0;
++ int do_default = 1;
++
++ switch (func_number) {
++ case glXMakeCurrent_func:
++ {
++ currentState = args[2];
++ assert(currentState >= 0 && currentState < NB_STATES);
++ break;
++ }
++
++ case glMatrixMode_func:
++ {
++ if (states[currentState].matrixMode == args[0]) {
++ do_default = 0;
++ } else {
++ states[currentState].matrixMode = args[0];
++ }
++ break;
++ }
++
++ case glLoadIdentity_func:
++ case glLoadMatrixd_func:
++ case glLoadMatrixf_func:
++ case glMultMatrixd_func:
++ case glMultMatrixf_func:
++ case glOrtho_func:
++ case glFrustum_func:
++ case glRotated_func:
++ case glRotatef_func:
++ case glScaled_func:
++ case glScalef_func:
++ case glTranslated_func:
++ case glTranslatef_func:
++ case glPushMatrix_func:
++ case glPopMatrix_func:
++ {
++ if (states[currentState].matrixMode == 5890) {
++ if (states[currentState].lastMatrixOp ==
++ glLoadIdentity_func &&
++ func_number == glLoadIdentity_func) {
++ do_default = 0;
++ }
++ states[currentState].lastMatrixOp = func_number;
++ }
++ break;
++ }
++
++ case glPushAttrib_func:
++ {
++ if (states[currentState].stackAttribPtr <
++ MAX_SERVER_STATE_STACK_SIZE) {
++ int mask = args[0];
++
++ states[currentState].stackAttrib[states[currentState].
++ stackAttribPtr].
++ mask = mask;
++ if (mask & GL_TRANSFORM_BIT) {
++ states[currentState].
++ stackAttrib[states[currentState].
++ stackAttribPtr].matrixMode =
++ states[currentState].matrixMode;
++ states[currentState].
++ stackAttrib[states[currentState].
++ stackAttribPtr].lastMatrixOp =
++ states[currentState].lastMatrixOp;
++ }
++ states[currentState].stackAttribPtr++;
++ }
++ break;
++ }
++
++ case glPopAttrib_func:
++ {
++ if (states[currentState].stackAttribPtr > 0) {
++ --states[currentState].stackAttribPtr;
++ if (states[currentState].
++ stackAttrib[states[currentState].stackAttribPtr].
++ mask & GL_TRANSFORM_BIT) {
++ states[currentState].matrixMode =
++ states[currentState].
++ stackAttrib[states[currentState].
++ stackAttribPtr].matrixMode;
++ states[currentState].lastMatrixOp =
++ states[currentState].
++ stackAttrib[states[currentState].
++ stackAttribPtr].lastMatrixOp;
++ }
++ }
++ break;
++ }
++
++ case glBufferDataARB_func:
++ {
++ ptr = (void *) args[2];
++ bytes_size = args_size[2];
++ break;
++ }
++
++ case glVertexPointer_fake_func:
++ case glTexCoordPointer_fake_func:
++ case glTexCoordPointer01_fake_func:
++ case glDrawElements_func:
++ {
++ ptr = (void *) args[nb_args - 1];
++ bytes_size = args_size[nb_args - 1];
++ break;
++ }
++
++ default:
++ break;
++ }
++
++ if (ptr) {
++ unsigned int crc = calc_checksum(ptr, bytes_size, 0xFFFFFFFF);
++ long long minInterest = 0x7FFFFFFFFFFFFFFFLL;
++ int iMinUsed = -1;
++
++ instr_count++;
++
++ for (i = 0; i < N_BUFFERED_ARRAYS; i++) {
++ if (recordBufferedArrays[i].crc == crc) {
++ // fprintf(stderr, "reusing %d for crc %d\n", i,
++ // crc);
++ reuse_array = i;
++ // fprintf(stderr, "reuse_array %d\n", i);
++ recordBufferedArrays[i].n_used++;
++ recordBufferedArrays[i].last_use = instr_count;
++ break;
++ } else if (recordBufferedArrays[i].n_used == 0) {
++ // fprintf(stderr, "memorize_array %d\n", i);
++ memorize_array = i;
++ recordBufferedArrays[i].n_used = 1;
++ recordBufferedArrays[i].crc = crc;
++ recordBufferedArrays[i].size = bytes_size;
++ recordBufferedArrays[i].last_use = instr_count;
++ break;
++ } else {
++ long long interest =
++ N_BUFFERED_ARRAYS *
++ recordBufferedArrays[i].n_used / (instr_count -
++ recordBufferedArrays
++ [i].
++ last_use)
++ /** recordBufferedArrays[i].size*/ ;
++ if (interest < minInterest) {
++ iMinUsed = i;
++ minInterest = interest;
++ }
++ }
++ }
++ static unsigned int *discardedCrcs = NULL;
++ static int nDiscardedCrcs = 0;
++
++ if (i == N_BUFFERED_ARRAYS) {
++ int j;
++
++ for (j = 0; j < nDiscardedCrcs; j++) {
++ if (discardedCrcs[j] == crc) {
++ fprintf(stderr,
++ "%x was discarded before and is asked now...\n",
++ crc);
++ discardedCrcs[j] =
++ recordBufferedArrays[iMinUsed].crc;
++ break;
++ }
++ }
++ if (j == nDiscardedCrcs) {
++ discardedCrcs =
++ realloc(discardedCrcs,
++ sizeof(int) * (nDiscardedCrcs + 1));
++ discardedCrcs[nDiscardedCrcs++] =
++ recordBufferedArrays[iMinUsed].crc;
++ }
++ fprintf(stderr, "discarding %x\n",
++ recordBufferedArrays[iMinUsed].crc);
++
++ memorize_array = iMinUsed;
++ recordBufferedArrays[iMinUsed].n_used = 1;
++ recordBufferedArrays[iMinUsed].crc = crc;
++ recordBufferedArrays[iMinUsed].size = bytes_size;
++ recordBufferedArrays[iMinUsed].last_use = instr_count;
++ }
++
++ if (reuse_array != -1) {
++ WRITE_SHORT(reuse_array_func);
++ WRITE_SHORT(reuse_array);
++ } else if (memorize_array != -1) {
++ WRITE_SHORT(memorize_array_func);
++ WRITE_SHORT(memorize_array);
++ }
++ }
++
++ switch (func_number) {
++ case glXChooseVisual_func:
++ case glXQueryVersion_func:
++ case glXQueryExtension_func:
++ case glXGetClientString_func:
++ case glXQueryExtensionsString_func:
++ case glXQueryServerString_func:
++ case glXGetProcAddress_fake_func:
++ case glXGetProcAddress_global_fake_func:
++ case glXGetConfig_func:
++ case glXGetConfig_extended_func:
++ case glGetIntegerv_func:
++ case glGetFloatv_func:
++ case glGetBooleanv_func:
++ case glGetDoublev_func:
++ case glIsEnabled_func:
++ case _glGetError_fake_func:
++ case glGetString_func:
++ {
++ do_default = 0;
++ break;
++ }
++
++ case glLoadMatrixd_func:
++ {
++ int j;
++
++ WRITE_SHORT(glLoadMatrixf_func);
++ double *ptr = (double *) args[0];
++
++ for (j = 0; j < 16; j++) {
++ WRITE_FLOAT(ptr[j]);
++ }
++ do_default = 0;
++ break;
++ }
++
++ case glMultMatrixd_func:
++ {
++ int j;
++
++ WRITE_SHORT(glMultMatrixf_func);
++ double *ptr = (double *) args[0];
++
++ for (j = 0; j < 16; j++) {
++ WRITE_FLOAT(ptr[j]);
++ }
++ do_default = 0;
++ break;
++ }
++
++ case glTranslated_func:
++ {
++ WRITE_SHORT(glTranslatef_func);
++ WRITE_FLOAT(*(double *) args[0]);
++ WRITE_FLOAT(*(double *) args[1]);
++ WRITE_FLOAT(*(double *) args[2]);
++ do_default = 0;
++ break;
++ }
++
++ case glScalef_func:
++ {
++ if (*(float *) &args[0] == 1 && *(float *) &args[1] == 1
++ && *(float *) &args[2] == 1)
++ do_default = 0;
++ break;
++ }
++
++ case glScaled_func:
++ {
++ if (!
++ (*(double *) args[0] == 1 && *(double *) args[1] == 1
++ && *(double *) args[2] == 1)) {
++ WRITE_SHORT(glScalef_func);
++ WRITE_FLOAT(*(double *) args[0]);
++ WRITE_FLOAT(*(double *) args[1]);
++ WRITE_FLOAT(*(double *) args[2]);
++ }
++ do_default = 0;
++ break;
++ }
++
++ case glRotated_func:
++ {
++ WRITE_SHORT(glRotatef_func);
++ WRITE_FLOAT(*(double *) args[0]);
++ WRITE_FLOAT(*(double *) args[1]);
++ WRITE_FLOAT(*(double *) args[2]);
++ WRITE_FLOAT(*(double *) args[3]);
++ do_default = 0;
++ break;
++ }
++#define IS_SHORT(x) ((x) >= -32768 && (x) < 32768)
++
++ case glRasterPos2i_func:
++ {
++ if (IS_SHORT(args[0]) && IS_SHORT(args[1])) {
++ WRITE_SHORT(glRasterPos2s_func);
++ WRITE_SHORT(args[0]);
++ WRITE_SHORT(args[1]);
++ do_default = 0;
++ }
++ break;
++ }
++
++ case glVertex2i_func:
++ {
++ if (IS_SHORT(args[0]) && IS_SHORT(args[1])) {
++ WRITE_SHORT(glVertex2s_func);
++ WRITE_SHORT(args[0]);
++ WRITE_SHORT(args[1]);
++ do_default = 0;
++ }
++ break;
++ }
++
++ case glTexCoord2i_func:
++ {
++ if (IS_SHORT(args[0]) && IS_SHORT(args[1])) {
++ WRITE_SHORT(glTexCoord2s_func);
++ WRITE_SHORT(args[0]);
++ WRITE_SHORT(args[1]);
++ do_default = 0;
++ }
++ break;
++ }
++
++ case glTexCoord2fv_func:
++ {
++ float *ptr = (float *) args[0];
++ float u = ptr[0];
++ float v = ptr[1];
++
++ if (fabs(u - (int) u) < 1e-7 && fabs(v - (int) v) < 1e-7) {
++ int ui = (int) u;
++ int vi = (int) v;
++
++ if (IS_SHORT(ui) && IS_SHORT(vi)) {
++ WRITE_SHORT(glTexCoord2s_func);
++ WRITE_SHORT(ui);
++ WRITE_SHORT(vi);
++ do_default = 0;
++ }
++ }
++ break;
++ }
++
++ case glTexCoord2f_func:
++ {
++ float u = *(float *) &args[0];
++ float v = *(float *) &args[1];
++
++ if (fabs(u - (int) u) < 1e-7 && fabs(v - (int) v) < 1e-7) {
++ int ui = (int) u;
++ int vi = (int) v;
++
++ if (IS_SHORT(ui) && IS_SHORT(vi)) {
++ WRITE_SHORT(glTexCoord2s_func);
++ WRITE_SHORT(ui);
++ WRITE_SHORT(vi);
++ do_default = 0;
++ }
++ }
++ break;
++ }
++
++ case glColor3f_func:
++ {
++ WRITE_SHORT(glColor3ub_func);
++ WRITE_UNSIGNED_CHAR(255 * *(float *) &args[0]);
++ WRITE_UNSIGNED_CHAR(255 * *(float *) &args[1]);
++ WRITE_UNSIGNED_CHAR(255 * *(float *) &args[2]);
++ do_default = 0;
++ break;
++ }
++
++ case glColor4f_func:
++ {
++ if (*(float *) &args[3] == 1) {
++ WRITE_SHORT(glColor3ub_func);
++ WRITE_UNSIGNED_CHAR(255 * *(float *) &args[0]);
++ WRITE_UNSIGNED_CHAR(255 * *(float *) &args[1]);
++ WRITE_UNSIGNED_CHAR(255 * *(float *) &args[2]);
++ } else {
++ WRITE_SHORT(glColor4ub_func);
++ WRITE_UNSIGNED_CHAR(255 * *(float *) &args[0]);
++ WRITE_UNSIGNED_CHAR(255 * *(float *) &args[1]);
++ WRITE_UNSIGNED_CHAR(255 * *(float *) &args[2]);
++ WRITE_UNSIGNED_CHAR(255 * *(float *) &args[3]);
++ }
++ do_default = 0;
++ break;
++ }
++
++ case glColor4fv_func:
++ {
++ float *ptr = (float *) args[0];
++
++ if (ptr[3] == 1) {
++ WRITE_SHORT(glColor3ub_func);
++ WRITE_UNSIGNED_CHAR(255 * ptr[0]);
++ WRITE_UNSIGNED_CHAR(255 * ptr[1]);
++ WRITE_UNSIGNED_CHAR(255 * ptr[2]);
++ } else {
++ WRITE_SHORT(glColor4ub_func);
++ WRITE_UNSIGNED_CHAR(255 * ptr[0]);
++ WRITE_UNSIGNED_CHAR(255 * ptr[1]);
++ WRITE_UNSIGNED_CHAR(255 * ptr[2]);
++ WRITE_UNSIGNED_CHAR(255 * ptr[3]);
++ }
++ do_default = 0;
++ break;
++ }
++
++ case glColor3d_func:
++ {
++ WRITE_SHORT(glColor3ub_func);
++ WRITE_UNSIGNED_CHAR(255 * *(double *) args[0]);
++ WRITE_UNSIGNED_CHAR(255 * *(double *) args[1]);
++ WRITE_UNSIGNED_CHAR(255 * *(double *) args[2]);
++ do_default = 0;
++ break;
++ }
++
++ case glVertex3f_func:
++ {
++ if (*(float *) &args[2] == 0) {
++ WRITE_SHORT(glVertex2f_func);
++ WRITE_FLOAT(*(float *) &args[0]);
++ WRITE_FLOAT(*(float *) &args[1]);
++ do_default = 0;
++ }
++ break;
++ }
++
++ case glVertex3d_func:
++ {
++ WRITE_SHORT(glVertex3f_func);
++ WRITE_FLOAT(*(double *) args[0]);
++ WRITE_FLOAT(*(double *) args[1]);
++ WRITE_FLOAT(*(double *) args[2]);
++ do_default = 0;
++ break;
++ }
++
++ case glNormal3fv_func:
++ {
++ float *ptr = (float *) args[0];
++ float u = ptr[0];
++ float v = ptr[1];
++ float w = ptr[2];
++
++ if (fabs(u - (int) u) < 1e-7 && fabs(v - (int) v) < 1e-7
++ && fabs(w - (int) w) < 1e-7) {
++ int ui = (int) u;
++ int vi = (int) v;
++ int wi = (int) w;
++
++ if (IS_SHORT(ui) && IS_SHORT(vi) && IS_SHORT(wi)) {
++ WRITE_SHORT(glNormal3sv_func);
++ WRITE_SHORT(ui);
++ WRITE_SHORT(vi);
++ WRITE_SHORT(wi);
++ do_default = 0;
++ }
++ }
++ break;
++ }
++
++ case glNormal3d_func:
++ {
++ WRITE_SHORT(glNormal3f_func);
++ WRITE_FLOAT(*(double *) args[0]);
++ WRITE_FLOAT(*(double *) args[1]);
++ WRITE_FLOAT(*(double *) args[2]);
++ do_default = 0;
++ break;
++ }
++
++ case glDrawElements_func:
++ {
++ int mode = args[0];
++ int count = args[1];
++ int type = args[2];
++
++ if (type == GL_UNSIGNED_INT) {
++ int j;
++ unsigned int *ptr = (unsigned int *) args[3];
++
++ for (j = 0; j < count; j++) {
++ if ((ptr[j] >> 16) != 0)
++ break;
++ }
++ if (j == count) {
++ WRITE_SHORT(func_number);
++ WRITE_INT(mode);
++ WRITE_INT(count);
++ WRITE_INT(GL_UNSIGNED_SHORT);
++ if (reuse_array != -1) {
++ WRITE_INT(0);
++ } else {
++ WRITE_INT(count * sizeof(short));
++ for (j = 0; j < count; j++) {
++ WRITE_SHORT(ptr[j]);
++ }
++ }
++ do_default = 0;
++ } else
++ do_default = 1;
++ } else if (reuse_array != -1) {
++ WRITE_SHORT(func_number);
++ WRITE_INT(mode);
++ WRITE_INT(count);
++ WRITE_INT(type);
++ WRITE_INT(0);
++ do_default = 0;
++ } else
++ do_default = 1;
++ break;
++ }
++
++ case glBufferDataARB_func:
++ {
++ if (reuse_array != -1) {
++ WRITE_SHORT(glBufferDataARB_func);
++ WRITE_INT(args[0]);
++ WRITE_INT(args[1]);
++ WRITE_INT(0);
++ WRITE_INT(args[3]);
++ do_default = 0;
++ }
++ break;
++ }
++
++ case glVertexPointer_fake_func:
++ case glTexCoordPointer_fake_func:
++ case glTexCoordPointer01_fake_func:
++ {
++ int offset = 0, index = 0, size, type, stride, bytes_size;
++ void *ptr;
++ int countarg = 0;
++
++ if (func_number == glVertexPointer_fake_func ||
++ func_number == glTexCoordPointer_fake_func)
++ offset = args[countarg++];
++ if (func_number == glTexCoordPointer_fake_func)
++ index = args[countarg++];
++ size = args[countarg++];
++ type = args[countarg++];
++ stride = args[countarg++];
++ bytes_size = args[countarg++];
++ ptr = (void *) args[countarg++];
++ if (type == GL_DOUBLE) {
++ int count;
++ int j, k;
++
++ if (stride == 0)
++ stride = size * sizeof(double);
++ assert((bytes_size % stride) == 0);
++ assert((offset % stride) == 0);
++ offset = (offset / stride) * size * sizeof(float);
++ count = bytes_size / stride;
++ WRITE_SHORT(func_number);
++ if (func_number == glVertexPointer_fake_func ||
++ func_number == glTexCoordPointer_fake_func)
++ WRITE_INT(offset);
++ if (func_number == glTexCoordPointer_fake_func)
++ WRITE_INT(index);
++ WRITE_INT(size);
++ WRITE_INT(GL_FLOAT);
++ WRITE_INT(0);
++ WRITE_INT(count * size * sizeof(float));
++ if (reuse_array != -1) {
++ WRITE_INT(0);
++ } else {
++ WRITE_INT(count * size * sizeof(float));
++ for (j = 0; j < count; j++) {
++ for (k = 0; k < size; k++) {
++ WRITE_FLOAT(*(double *)
++ (ptr + j * stride +
++ k * sizeof(double)));
++ }
++ }
++ }
++ do_default = 0;
++ } else if (reuse_array != -1) {
++ WRITE_SHORT(func_number);
++ if (func_number == glVertexPointer_fake_func ||
++ func_number == glTexCoordPointer_fake_func)
++ WRITE_INT(offset);
++ if (func_number == glTexCoordPointer_fake_func)
++ WRITE_INT(index);
++ WRITE_INT(size);
++ WRITE_INT(type);
++ WRITE_INT(stride);
++ WRITE_INT(bytes_size);
++ WRITE_INT(0);
++ do_default = 0;
++ } else
++ do_default = 1;
++ break;
++ }
++
++ default:
++ break;
++ }
++
++ if (do_default) {
++ fwrite(&func_number, sizeof(short), 1, compressed_file);
++ for (i = 0; i < nb_args; i++) {
++ switch (args_type[i]) {
++ case TYPE_UNSIGNED_CHAR:
++ case TYPE_CHAR:
++ {
++ char c = args[i];
++
++ fwrite(&c, sizeof(c), 1, compressed_file);
++ break;
++ }
++
++ case TYPE_UNSIGNED_SHORT:
++ case TYPE_SHORT:
++ {
++ short s = args[i];
++
++ fwrite(&s, sizeof(s), 1, compressed_file);
++ break;
++ }
++
++ case TYPE_UNSIGNED_INT:
++ case TYPE_INT:
++ case TYPE_FLOAT:{
++ int n = args[i];
++ fwrite(&n, sizeof(int), 1, compressed_file);
++ break;
++ }
++
++ case TYPE_NULL_TERMINATED_STRING:
++ CASE_IN_UNKNOWN_SIZE_POINTERS:
++ fwrite(&args_size[i], sizeof(int), 1,
++ compressed_file);
++ if (args_size[i]) {
++ fwrite((void *) args[i], args_size[i], 1,
++ compressed_file);
++ }
++ break;
++
++ CASE_OUT_UNKNOWN_SIZE_POINTERS:
++ {
++ fwrite(&args_size[i], sizeof(int), 1,
++ compressed_file);
++ break;
++ }
++
++ CASE_OUT_KNOWN_SIZE_POINTERS:
++ CASE_OUT_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
++ {
++ break;
++ }
++
++ case TYPE_DOUBLE:
++ CASE_IN_KNOWN_SIZE_POINTERS:
++ CASE_IN_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
++ fwrite((void *) args[i], args_size[i], 1,
++ compressed_file);
++ break;
++
++ case TYPE_IN_IGNORED_POINTER:
++ break;
++
++ default:
++ fprintf(stderr, "shouldn't happen : call %s arg %d\n",
++ tab_opengl_calls_name[func_number], i);
++ do_disconnect_current();
++ return 0;
++ }
++ }
++ }
++ }
++
++ int new_offset = ftell(f);
++
++ if (show_offset ||
++ (show_diff_offset &&
++ new_offset - last_cmd_offset >= show_diff_offset)) {
++ fprintf(stderr, "offset = %d, diff=%d\n", new_offset,
++ new_offset - last_cmd_offset);
++ }
++ last_cmd_offset = new_offset;
++
++ if (func_number == glXCreateContext_func &&
++ args[1] == visualid_fbconfig_read) {
++ args[1] = visualid_fbconfig_real;
++ }
++ if (debug) {
++ if (func_number == glBindProgramARB_func) {
++ fprintf(stderr, "glBindProgramARB_func(y, x) : x = %d\n",
++ (int) args[1]);
++ } else if (func_number == glXGetProcAddress_fake_func) {
++ fprintf(stderr, "glXGetProcAddress_fake(%s)\n",
++ (char *) args[0]);
++ }
++ }
++
++ if (debug && func_number == glEnable_func) {
++ fprintf(stderr, "enable(0x%x)\n", (int) args[0]);
++ } else if (debug && func_number == glDisable_func) {
++ fprintf(stderr, "disable(0x%x)\n", (int) args[0]);
++ }
++
++ if (resize) {
++ if (func_number == _moveResizeWindow_func) {
++ int *params = (int *) args[1];
++
++ orig_window_width = params[2];
++ window_height = params[3] =
++ params[3] * window_width / params[2];
++ params[2] = window_width;
++ // buffer = malloc(4 * window_width * window_height);
++ } else if (func_number == glViewport_func ||
++ func_number == glScissor_func) {
++ args[0] = args[0] * window_width / orig_window_width;
++ args[1] = args[1] * window_width / orig_window_width;
++ args[2] = args[2] * window_width / orig_window_width;
++ args[3] = args[3] * window_width / orig_window_width;
++ }
++ } else if (func_number == _moveResizeWindow_func) {
++ int *params = (int *) args[1];
++
++ window_width = params[2];
++ window_height = params[3];
++ // buffer = malloc(4 * window_width * window_height);
++ }
++
++ int ret =
++ (noplay) ? 0 : do_function_call(func_number, args, ret_string);
++
++ if (func_number == glXSwapBuffers_func) {
++ /* glReadPixels(0, 0, window_width, window_height, GL_RGBA,
++ * GL_UNSIGNED_BYTE, buffer); fwrite(buffer, 4 * window_width *
++ * window_height, 1, fout); */
++
++ int diff_time;
++
++ count_current++;
++ gettimeofday(&current_time, NULL);
++ diff_time =
++ (current_time.tv_sec - last_time.tv_sec) * 1000 +
++ (current_time.tv_usec - last_time.tv_usec) / 1000;
++ if (diff_time > refresh_rate) {
++ printf("%d frames in %.1f seconds = %.3f FPS\n",
++ count_current - count_last_time, diff_time / 1000.,
++ (count_current - count_last_time) * 1000. / diff_time);
++ if (show_hard_disk_bandwith) {
++ int current_offset = ftell(f);
++
++ printf("bandwidth : %.1f MB/s\n",
++ (current_offset - last_offset) * 1e-6);
++ last_offset = current_offset;
++ }
++ last_time.tv_sec = current_time.tv_sec;
++ last_time.tv_usec = current_time.tv_usec;
++ count_last_time = count_current;
++ }
++ usleep(slowdown * 50000);
++ }
++ if (debug && func_number == glGenProgramsARB_func && args[0] == 1) {
++ fprintf(stderr, "glGenProgramsARB_func(1, &x) : x = %d\n",
++ *(int *) args[1]);
++ }
++
++ if (func_number == glXGetVisualFromFBConfig_func) {
++ fread(&visualid_fbconfig_read, sizeof(int), 1, f);
++ visualid_fbconfig_real = ret;
++ }
++
++ for (i = 0; i < nb_args; i++) {
++ switch (args_type[i]) {
++ case TYPE_UNSIGNED_INT:
++ case TYPE_INT:
++ case TYPE_UNSIGNED_CHAR:
++ case TYPE_CHAR:
++ case TYPE_UNSIGNED_SHORT:
++ case TYPE_SHORT:
++ case TYPE_FLOAT:
++ break;
++
++ case TYPE_NULL_TERMINATED_STRING:
++ CASE_POINTERS:
++ case TYPE_DOUBLE:
++ if (args[i])
++ free((void *) args[i]);
++ break;
++
++ case TYPE_IN_IGNORED_POINTER:
++ args[i] = 0;
++ break;
++
++ default:
++ fprintf(stderr, "shouldn't happen : call %s arg %d\n",
++ tab_opengl_calls_name[func_number], i);
++ do_disconnect_current();
++ return 0;
++ }
++ }
++ }
++ return 0;
++}
+Index: qemu-0.13.0/target-i386/opengl_server.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-i386/opengl_server.c 2011-01-17 16:42:36.000000000 +0800
+@@ -0,0 +1,826 @@
++/*
++ * TCP/IP OpenGL server
++ *
++ * Copyright (c) 2007 Even Rouault
++ *
++ * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
++
++/* gcc -Wall -O2 -g opengl_server.c opengl_exec.c -o opengl_server -I../i386-softmmu -I. -I.. -lGL */
++
++#include <stdio.h>
++#include <errno.h>
++#include <stdlib.h>
++#include <unistd.h>
++#include <string.h>
++#include <assert.h>
++#include <sys/types.h>
++#include <sys/socket.h>
++#include <netinet/in.h>
++#include <netinet/tcp.h>
++#include <netdb.h>
++#include <arpa/inet.h>
++#include <sys/time.h>
++#include <signal.h>
++
++#include <X11/Xlib.h>
++#include <X11/Xutil.h>
++
++#define PORT 5555
++
++#define ENABLE_GL_LOG
++
++#include "opengl_func.h"
++#include "opengl_utils.h"
++
++static int refresh_rate = 1000;
++static int must_save = 0;
++static int timestamp = 1; /* only valid if must_save == 1. include timestamps in the save file to enable real-time playback */
++
++extern int display_function_call;
++extern void init_process_tab(void);
++extern int do_function_call(Display *, int, int, arg_t *, char *);
++extern void opengl_exec_set_local_connection(void);
++extern void opengl_exec_set_parent_window(Display *_dpy, Window _parent_window);
++
++#ifdef ENABLE_GL_LOG
++static FILE* f = NULL;
++
++static char* filename = "/tmp/debug_gl.bin";
++
++#define write_gl_debug_init() do { if (f == NULL) f = fopen(filename, "wb"); } while(0)
++
++static void inline write_gl_debug_cmd_char(char my_int)
++{
++ write_gl_debug_init();
++ fwrite(&my_int, sizeof(my_int), 1, f);
++}
++
++static void inline write_gl_debug_cmd_short(short my_int)
++{
++ write_gl_debug_init();
++ fwrite(&my_int, sizeof(my_int), 1, f);
++}
++
++static void inline write_gl_debug_cmd_int(int my_int)
++{
++ write_gl_debug_init();
++ fwrite(&my_int, sizeof(my_int), 1, f);
++}
++
++static void inline write_gl_debug_cmd_longlong(long long my_longlong)
++{
++ write_gl_debug_init();
++ fwrite(&my_longlong, sizeof(my_longlong), 1, f);
++}
++
++static void inline write_gl_debug_cmd_buffer_with_size(int size, void* buffer)
++{
++ write_gl_debug_init();
++ fwrite(&size, sizeof(int), 1, f);
++ if (size)
++ fwrite(buffer, size, 1, f);
++}
++
++static void inline write_gl_debug_cmd_buffer_without_size(int size, void* buffer)
++{
++ write_gl_debug_init();
++ if (size)
++ fwrite(buffer, size, 1, f);
++}
++
++static void inline write_gl_debug_end()
++{
++ write_gl_debug_init();
++ fclose(f);
++ f = NULL;
++}
++
++#endif
++
++static void write_sock_data(int sock, void* data, int len)
++{
++ if (len && data)
++ {
++ int offset = 0;
++ while(offset < len)
++ {
++ int nwritten = write(sock, data + offset, len - offset);
++ if (nwritten == -1)
++ {
++ if (errno == EINTR)
++ continue;
++ perror("write");
++ assert(nwritten != -1);
++ }
++ offset += nwritten;
++ }
++ }
++}
++
++static void inline write_sock_int(int sock, int my_int)
++{
++ write_sock_data(sock, &my_int, sizeof(int));
++}
++
++static int total_read = 0;
++static void read_sock_data(int sock, void* data, int len)
++{
++ if (len)
++ {
++ int offset = 0;
++ while(offset < len)
++ {
++ int nread = read(sock, data + offset, len - offset);
++ if (nread == -1)
++ {
++ if (errno == EINTR)
++ continue;
++ perror("read");
++ assert(nread != -1);
++ }
++ if (nread == 0)
++ {
++ fprintf(stderr, "nread = 0\n");
++ }
++ assert(nread > 0);
++ offset += nread;
++ total_read += nread;
++ }
++ }
++}
++
++static int inline read_sock_int(int sock)
++{
++ int ret;
++ read_sock_data(sock, &ret, sizeof(int));
++ return ret;
++}
++
++static short inline read_sock_short(int sock)
++{
++ short ret;
++ read_sock_data(sock, &ret, sizeof(short));
++ return ret;
++}
++
++
++static Display* dpy = NULL;
++static int parent_xid = -1;
++
++
++static struct timeval last_time, current_time, time_stamp_start;
++static int count_last_time = 0, count_current = 0;
++
++static struct timeval last_read_time, current_read_time;
++
++int has_x_error = 0;
++
++int
++read_from_client (int sock)
++{
++ arg_t args[50];
++ int args_size[50];
++ char ret_string[32768];
++ char command_buffer[65536*16];
++
++ if (dpy == NULL)
++ {
++ init_process_tab();
++ dpy = XOpenDisplay(NULL);
++ if (parent_xid != -1)
++ {
++ opengl_exec_set_parent_window(dpy, parent_xid);
++ }
++ }
++
++ int i;
++ int func_number = read_sock_short(sock);
++
++ Signature* signature = (Signature*)tab_opengl_calls[func_number];
++ int ret_type = signature->ret_type;
++ int nb_args = signature->nb_args;
++ int* args_type = signature->args_type;
++ int pid = 0;
++
++ if (func_number == _serialized_calls_func)
++ {
++ int command_buffer_size = read_sock_int(sock);
++ int commmand_buffer_offset = 0;
++ read_sock_data(sock, command_buffer, command_buffer_size);
++ /* TODO: must convert if client is different word size */
++
++#ifdef ENABLE_GL_LOG
++ if (must_save) write_gl_debug_cmd_short(_serialized_calls_func);
++#endif
++
++ while(commmand_buffer_offset < command_buffer_size)
++ {
++ func_number = *(short*)(command_buffer + commmand_buffer_offset);
++ if( ! (func_number >= 0 && func_number < GL_N_CALLS) )
++ {
++ fprintf(stderr, "func_number >= 0 && func_number < GL_N_CALLS failed at "
++ "commmand_buffer_offset=%d (command_buffer_size=%d)\n",
++ commmand_buffer_offset, command_buffer_size);
++ exit(-1);
++ }
++
++#ifdef ENABLE_GL_LOG
++ if (must_save) write_gl_debug_cmd_short(func_number);
++#endif
++ commmand_buffer_offset += sizeof(short);
++
++
++ signature = (Signature*)tab_opengl_calls[func_number];
++ ret_type = signature->ret_type;
++ assert(ret_type == TYPE_NONE);
++ nb_args = signature->nb_args;
++ args_type = signature->args_type;
++
++ for(i=0;i<nb_args;i++)
++ {
++ switch(args_type[i])
++ {
++ case TYPE_UNSIGNED_CHAR:
++ case TYPE_CHAR:
++ {
++ args[i] = *(int*)(command_buffer + commmand_buffer_offset);
++#ifdef ENABLE_GL_LOG
++ if (must_save) write_gl_debug_cmd_char(args[i]);
++#endif
++ commmand_buffer_offset += sizeof(int);
++ break;
++ }
++
++ case TYPE_UNSIGNED_SHORT:
++ case TYPE_SHORT:
++ {
++ args[i] = *(int*)(command_buffer + commmand_buffer_offset);
++#ifdef ENABLE_GL_LOG
++ if (must_save) write_gl_debug_cmd_short(args[i]);
++#endif
++ commmand_buffer_offset += sizeof(int);
++ break;
++ }
++
++ case TYPE_UNSIGNED_INT:
++ case TYPE_INT:
++ case TYPE_FLOAT:
++ {
++ args[i] = *(int*)(command_buffer + commmand_buffer_offset);
++#ifdef ENABLE_GL_LOG
++ if (must_save) write_gl_debug_cmd_int(args[i]);
++#endif
++ commmand_buffer_offset += sizeof(int);
++ break;
++ }
++
++ case TYPE_NULL_TERMINATED_STRING:
++ CASE_IN_UNKNOWN_SIZE_POINTERS:
++ {
++ args_size[i] = *(int*)(command_buffer + commmand_buffer_offset);
++ commmand_buffer_offset += sizeof(int);
++
++ if (args_size[i] == 0)
++ {
++ args[i] = 0;
++ }
++ else
++ {
++ args[i] = (long)(command_buffer + commmand_buffer_offset);
++ }
++
++ if (args[i] == 0)
++ {
++ if (!IS_NULL_POINTER_OK_FOR_FUNC(func_number))
++ {
++ fprintf(stderr, "call %s arg %d pid=%d\n", tab_opengl_calls_name[func_number], i, pid);
++ return 0;
++ }
++ }
++#ifdef ENABLE_GL_LOG
++ if (must_save) write_gl_debug_cmd_buffer_with_size(args_size[i], (void*)args[i]);
++#endif
++ commmand_buffer_offset += args_size[i];
++
++ break;
++ }
++
++ CASE_IN_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
++ {
++ args_size[i] = compute_arg_length(stderr, func_number, i, args);
++ args[i] = (args_size[i]) ? (long)(command_buffer + commmand_buffer_offset) : 0;
++#ifdef ENABLE_GL_LOG
++ if (must_save) write_gl_debug_cmd_buffer_without_size(args_size[i], (void*)args[i]);
++#endif
++ commmand_buffer_offset += args_size[i];
++ break;
++ }
++
++ CASE_OUT_POINTERS:
++ {
++ fprintf(stderr, "shouldn't happen TYPE_OUT_xxxx : call %s arg %d pid=%d\n", tab_opengl_calls_name[func_number], i, pid);
++ return 0;
++ break;
++ }
++
++ case TYPE_DOUBLE:
++ CASE_IN_KNOWN_SIZE_POINTERS:
++ args[i] = (long)(command_buffer + commmand_buffer_offset);
++ args_size[i] = tab_args_type_length[args_type[i]];
++#ifdef ENABLE_GL_LOG
++ if (must_save) write_gl_debug_cmd_buffer_without_size(tab_args_type_length[args_type[i]], (void*)args[i]);
++#endif
++ commmand_buffer_offset += tab_args_type_length[args_type[i]];
++ break;
++
++ case TYPE_IN_IGNORED_POINTER:
++ args[i] = 0;
++ break;
++
++ default:
++ fprintf(stderr, "shouldn't happen : call %s arg %d pid=%d\n", tab_opengl_calls_name[func_number], i, pid);
++ return 0;
++ break;
++ }
++ }
++
++ if (display_function_call) display_gl_call(stderr, func_number, args, args_size);
++
++ do_function_call(dpy, func_number, 1, args, ret_string);
++ }
++ }
++ else
++ {
++#ifdef ENABLE_GL_LOG
++ if (must_save && func_number != _synchronize_func) write_gl_debug_cmd_short(func_number);
++#endif
++
++ for(i=0;i<nb_args;i++)
++ {
++ switch(args_type[i])
++ {
++ case TYPE_UNSIGNED_CHAR:
++ case TYPE_CHAR:
++ args[i] = read_sock_int(sock);
++#ifdef ENABLE_GL_LOG
++ if (must_save) write_gl_debug_cmd_char(args[i]);
++#endif
++ break;
++
++ case TYPE_UNSIGNED_SHORT:
++ case TYPE_SHORT:
++ args[i] = read_sock_int(sock);
++#ifdef ENABLE_GL_LOG
++ if (must_save) write_gl_debug_cmd_short(args[i]);
++#endif
++ break;
++
++ case TYPE_UNSIGNED_INT:
++ case TYPE_INT:
++ case TYPE_FLOAT:
++ args[i] = read_sock_int(sock);
++#ifdef ENABLE_GL_LOG
++ if (must_save) write_gl_debug_cmd_int(args[i]);
++#endif
++ break;
++
++ case TYPE_NULL_TERMINATED_STRING:
++ CASE_IN_UNKNOWN_SIZE_POINTERS:
++ {
++ args_size[i] = read_sock_int(sock);
++ if (args_size[i])
++ {
++ args[i] = (long)malloc(args_size[i]);
++ read_sock_data(sock, (void*)args[i], args_size[i]);
++ }
++ else
++ {
++ args[i] = 0;
++ if (!IS_NULL_POINTER_OK_FOR_FUNC(func_number))
++ {
++ fprintf(stderr, "call %s arg %d\n", tab_opengl_calls_name[func_number], i);
++ return 0;
++ }
++ }
++#ifdef ENABLE_GL_LOG
++ if (must_save) write_gl_debug_cmd_buffer_with_size(args_size[i], (void*)args[i]);
++#endif
++ break;
++ }
++
++ CASE_IN_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
++ {
++ args_size[i] = compute_arg_length(stderr, func_number, i, args);
++ args[i] = (args_size[i]) ? (long)malloc(args_size[i]) : 0;
++ read_sock_data(sock, (void*)args[i], args_size[i]);
++#ifdef ENABLE_GL_LOG
++ if (must_save) write_gl_debug_cmd_buffer_without_size(args_size[i], (void*)args[i]);
++#endif
++ break;
++ }
++
++ CASE_OUT_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
++ {
++ args_size[i] = compute_arg_length(stderr, func_number, i, args);
++ args[i] = (long)malloc(args_size[i]);
++ break;
++ }
++
++ CASE_OUT_UNKNOWN_SIZE_POINTERS:
++ {
++ args_size[i] = read_sock_int(sock);
++ if (func_number == glGetProgramLocalParameterdvARB_func)
++ {
++ fprintf(stderr, "size = %d\n", args_size[i]);
++ }
++ if (args_size[i])
++ {
++ args[i] = (long)malloc(args_size[i]);
++ }
++ else
++ {
++ if (!IS_NULL_POINTER_OK_FOR_FUNC(func_number))
++ {
++ fprintf(stderr, "call %s arg %d pid=%d\n", tab_opengl_calls_name[func_number], i, pid);
++ return 0;
++ };
++ args[i] = 0;
++ }
++ //fprintf(stderr, "%p %d\n", (void*)args[i], args_size[i]);
++#ifdef ENABLE_GL_LOG
++ if (must_save) write_gl_debug_cmd_int(args_size[i]);
++#endif
++ break;
++ }
++
++ CASE_OUT_KNOWN_SIZE_POINTERS:
++ {
++ args_size[i] = tab_args_type_length[args_type[i]];
++ assert(args_size[i]);
++ args[i] = (long)malloc(args_size[i]);
++ //fprintf(stderr, "%p %d\n", (void*)args[i], args_size[i]);
++ break;
++ }
++
++ case TYPE_DOUBLE:
++ CASE_IN_KNOWN_SIZE_POINTERS:
++ args_size[i] = tab_args_type_length[args_type[i]];
++ args[i] = (long)malloc(args_size[i]);
++ read_sock_data(sock, (void*)args[i], args_size[i]);
++#ifdef ENABLE_GL_LOG
++ if (must_save) write_gl_debug_cmd_buffer_without_size(tab_args_type_length[args_type[i]], (void*)args[i]);
++#endif
++ break;
++
++ case TYPE_IN_IGNORED_POINTER:
++ args[i] = 0;
++ break;
++
++ default:
++ fprintf(stderr, "shouldn't happen : call %s arg %d\n", tab_opengl_calls_name[func_number], i);
++ return 0;
++ break;
++ }
++ }
++
++ if (display_function_call) display_gl_call(stderr, func_number, args, args_size);
++
++ if (getenv("ALWAYS_FLUSH")) fflush(f);
++
++ int ret = do_function_call(dpy, func_number, 1, args, ret_string);
++#ifdef ENABLE_GL_LOG
++ if (must_save && func_number == glXGetVisualFromFBConfig_func)
++ {
++ write_gl_debug_cmd_int(ret);
++ }
++#endif
++
++ for(i=0;i<nb_args;i++)
++ {
++ switch(args_type[i])
++ {
++ case TYPE_UNSIGNED_INT:
++ case TYPE_INT:
++ case TYPE_UNSIGNED_CHAR:
++ case TYPE_CHAR:
++ case TYPE_UNSIGNED_SHORT:
++ case TYPE_SHORT:
++ case TYPE_FLOAT:
++ break;
++
++ case TYPE_NULL_TERMINATED_STRING:
++ case TYPE_DOUBLE:
++ CASE_IN_POINTERS:
++ if (args[i]) free((void*)args[i]);
++ break;
++
++ CASE_OUT_POINTERS:
++ //fprintf(stderr, "%p %d\n", (void*)args[i], args_size[i]);
++ write_sock_data(sock, (void*)args[i], args_size[i]);
++ if (display_function_call)
++ {
++ if (args_type[i] == TYPE_OUT_1INT)
++ {
++ fprintf(stderr, "out[%d] : %d\n", i, *(int*)args[i]);
++ }
++ else if (args_type[i] == TYPE_OUT_1FLOAT)
++ {
++ fprintf(stderr, "out[%d] : %f\n", i, *(float*)args[i]);
++ }
++ }
++ if (args[i]) free((void*)args[i]);
++ break;
++
++ case TYPE_IN_IGNORED_POINTER:
++ args[i] = 0;
++ break;
++
++ default:
++ fprintf(stderr, "shouldn't happen : call %s arg %d\n", tab_opengl_calls_name[func_number], i);
++ return 0;
++ break;
++ }
++ }
++
++ if (signature->ret_type == TYPE_CONST_CHAR)
++ {
++ write_sock_int(sock, strlen(ret_string) + 1);
++ write_sock_data(sock, ret_string, strlen(ret_string) + 1);
++ }
++ else if (signature->ret_type != TYPE_NONE)
++ {
++ write_sock_int(sock, ret);
++ }
++
++#ifdef ENABLE_GL_LOG
++ if (must_save && func_number == _exit_process_func)
++ {
++ write_gl_debug_end();
++ }
++#endif
++ if (func_number == _exit_process_func)
++ {
++ return -1;
++ }
++ else if (func_number == glXSwapBuffers_func)
++ {
++ int diff_time;
++ count_current++;
++ gettimeofday(&current_time, NULL);
++#ifdef ENABLE_GL_LOG
++ if (must_save && timestamp)
++ {
++ long long ts = (current_time.tv_sec - time_stamp_start.tv_sec) * (long long)1000000 + current_time.tv_usec - time_stamp_start.tv_usec;
++ /* -1 is special code that indicates time synchro */
++ write_gl_debug_cmd_short(timesynchro_func);
++ write_gl_debug_cmd_longlong(ts);
++ }
++#endif
++ diff_time = (current_time.tv_sec - last_time.tv_sec) * 1000 + (current_time.tv_usec - last_time.tv_usec) / 1000;
++ if (diff_time > refresh_rate)
++ {
++#ifdef ENABLE_GL_LOG
++ fflush(f);
++#endif
++ printf("%d frames in %.1f seconds = %.3f FPS\n",
++ count_current - count_last_time,
++ diff_time / 1000.,
++ (count_current - count_last_time) * 1000. / diff_time);
++ last_time.tv_sec = current_time.tv_sec;
++ last_time.tv_usec = current_time.tv_usec;
++ count_last_time = count_current;
++ }
++ }
++ }
++ return 0;
++}
++
++int
++make_socket (uint16_t port)
++{
++ int sock;
++ struct sockaddr_in name;
++
++ /* Create the socket. */
++ sock = socket (PF_INET, SOCK_STREAM, 0);
++ if (sock < 0)
++ {
++ perror ("socket");
++ exit (EXIT_FAILURE);
++ }
++
++ /* Give the socket a name. */
++ name.sin_family = AF_INET;
++ name.sin_port = htons (port);
++ name.sin_addr.s_addr = htonl (INADDR_ANY);
++ if (bind (sock, (struct sockaddr *) &name, sizeof (name)) < 0)
++ {
++ perror ("bind");
++ exit (EXIT_FAILURE);
++ }
++
++ return sock;
++}
++
++static int x_error_handler(Display *display,
++ XErrorEvent *error)
++{
++ char buf[64];
++ XGetErrorText(display, error->error_code, buf, 63);
++ fprintf (stderr, "The program received an X Window System error.\n"
++ "This probably reflects a bug in the program.\n"
++ "The error was '%s'.\n"
++ " (Details: serial %ld error_code %d request_code %d minor_code %d)\n",
++ buf,
++ error->serial,
++ error->error_code,
++ error->request_code,
++ error->minor_code);
++ has_x_error = 1;
++ return 0;
++}
++
++void usage()
++{
++ printf("Usage : opengl_server [OPTION]\n\n");
++ printf("The following options are available :\n");
++ printf("--port=XXXX : set XXX as the port number for the TCP/IP server (default : 5555)\n");
++ printf("--debug : output debugging trace on stderr\n");
++ printf("--save : dump the serialialized OpenGL flow in a file (default : /tmp/debug_gl.bin)\n");
++ printf("--filename=X : the file where to write the serailized OpenGL flow\n");
++ printf("--different-windows : even if the client is on 127.0.0.1, display OpenGL on a new X window\n");
++ printf("--parent-xid=XXX : use XXX as the XID of the parent X window where to display the OpenGL flow\n");
++ printf(" This is useful if you want to run accelerated OpenGL inside a non-patched QEMU\n");
++ printf(" or from another emulator, through TCP/IP\n");
++ printf("--h or --help : display this help\n");
++}
++
++int
++main (int argc, char* argv[])
++{
++ int sock;
++ fd_set active_fd_set, read_fd_set;
++ int i;
++ struct sockaddr_in clientname;
++ socklen_t size;
++ int port = PORT;
++ int different_windows = 0;
++
++ for(i=1;i<argc;i++)
++ {
++ if (argv[i][0] == '-' && argv[i][1] == '-')
++ argv[i] = argv[i]+1;
++
++ if (strcmp(argv[i], "-debug") == 0)
++ {
++ display_function_call = 1;
++ }
++ else if (strcmp(argv[i], "-save") == 0)
++ {
++ must_save = 1;
++ }
++ else if (strncmp(argv[i], "-port=",6) == 0)
++ {
++ port = atoi(argv[i] + 6);
++ }
++ else if (strncmp(argv[i], "-filename=",strlen("-filename=")) == 0)
++ {
++ filename = argv[i] + strlen("-filename=");
++ }
++ else if (strncmp(argv[i], "-parent-xid=",strlen("-parent-xid=")) == 0)
++ {
++ char* c = argv[i] + strlen("-parent-xid=");
++ parent_xid = strtol(c, NULL, 0);
++ different_windows = 1;
++ }
++ else if (strcmp(argv[i], "-different-windows") == 0)
++ {
++ different_windows = 1;
++ }
++ else if (strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "-help") == 0)
++ {
++ usage();
++ return 0;
++ }
++ else
++ {
++ fprintf(stderr, "unknown parameter : %s\n", argv[i]);
++ usage();
++ return -1;
++ }
++ }
++
++ /* Create the socket and set it up to accept connections. */
++ sock = make_socket (port);
++
++ int flag = 1;
++ if (setsockopt(sock, IPPROTO_IP, SO_REUSEADDR,(char *)&flag, sizeof(int)) != 0)
++ {
++ perror("setsockopt SO_REUSEADDR");
++ }
++ if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY,(char *)&flag, sizeof(int)) != 0)
++ {
++ perror("setsockopt TCP_NODELAY");
++ }
++
++ if (listen (sock, 1) < 0)
++ {
++ perror ("listen");
++ exit (EXIT_FAILURE);
++ }
++
++ struct sigaction action;
++ action.sa_handler = SIG_IGN;
++ action.sa_flags = SA_NOCLDWAIT;
++ sigaction(SIGCHLD,&action,NULL);
++
++ FD_ZERO (&active_fd_set);
++ FD_SET (sock, &active_fd_set);
++
++ while(1)
++ {
++ int new, pid;
++
++ read_fd_set = active_fd_set;
++ if (select (FD_SETSIZE, &read_fd_set, NULL, NULL, NULL) < 0)
++ {
++ perror ("select");
++ exit (EXIT_FAILURE);
++ }
++
++ size = sizeof (clientname);
++ new = accept (sock, (struct sockaddr *) &clientname, &size);
++ if (new < 0)
++ {
++ perror ("accept");
++ exit (EXIT_FAILURE);
++ }
++ pid = fork();
++ if (pid == -1)
++ {
++ perror ("fork");
++ exit(EXIT_FAILURE);
++ }
++ if (pid == 0)
++ {
++ close(sock);
++
++ fprintf (stderr, "Server: connect from host %s, port %hd.\n",
++ inet_ntoa (clientname.sin_addr),
++ ntohs (clientname.sin_port));
++
++ gettimeofday(&last_time, NULL);
++ gettimeofday(&last_read_time, NULL);
++
++ if (strcmp(inet_ntoa(clientname.sin_addr), "127.0.0.1") == 0 &&
++ different_windows == 0)
++ {
++ opengl_exec_set_local_connection();
++ }
++
++ if (timestamp)
++ {
++ gettimeofday(&time_stamp_start, NULL);
++ }
++
++ XSetErrorHandler(x_error_handler);
++
++ while(1)
++ {
++ if (read_from_client (new) < 0)
++ {
++ do_function_call(dpy, _exit_process_func, 1, NULL, NULL);
++
++ fprintf (stderr, "Server: disconnect from host %s, port %hd.\n",
++ inet_ntoa (clientname.sin_addr),
++ ntohs (clientname.sin_port));
++
++ return 0;
++ }
++ }
++ }
++ else
++ {
++ close(new);
++ }
++ }
++
++ return 0;
++}
+Index: qemu-0.13.0/target-i386/opengl_utils.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-i386/opengl_utils.h 2011-01-17 16:42:36.000000000 +0800
+@@ -0,0 +1,453 @@
++/*
++ * Functions used by host & client sides
++ *
++ * Copyright (c) 2007 Even Rouault
++ *
++ * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
++
++
++#ifndef _OPENGL_UTILS
++#define _OPENGL_UTILS
++
++typedef struct {
++ unsigned int *values;
++ int nbValues;
++} RangeAllocator;
++
++/*
++static void print_range(RangeAllocator* range)
++{
++ int i;
++ printf("%s", "table : ");
++ for(i=0;i<range->nbValues;i++)
++ {
++ printf("%d ", range->values[i]);
++ }
++ printf("\n");
++}
++*/
++
++static inline void alloc_value(RangeAllocator *range, unsigned int value)
++{
++ if (value == 0)
++ return;
++ if (range->nbValues >= 1) {
++ int lower = 0;
++ int upper = range->nbValues - 1;
++
++ while (1) {
++ int mid = (lower + upper) / 2;
++
++ if (range->values[mid] > value)
++ upper = mid;
++ else if (range->values[mid] < value)
++ lower = mid;
++ else
++ break;
++ if (upper - lower <= 1) {
++ if (value < range->values[lower]) {
++ range->values =
++ realloc(range->values,
++ (range->nbValues + 1) * sizeof(int));
++ memmove(&range->values[lower + 1], &range->values[lower],
++ (range->nbValues - lower) * sizeof(int));
++ range->values[lower] = value;
++ range->nbValues++;
++ } else if (value == range->values[lower]) {
++ } else if (value < range->values[upper]) {
++ range->values =
++ realloc(range->values,
++ (range->nbValues + 1) * sizeof(int));
++ memmove(&range->values[upper + 1], &range->values[upper],
++ (range->nbValues - upper) * sizeof(int));
++ range->values[upper] = value;
++ range->nbValues++;
++ } else if (value == range->values[upper]) {
++ } else {
++ upper++;
++
++ range->values =
++ realloc(range->values,
++ (range->nbValues + 1) * sizeof(int));
++ memmove(&range->values[upper + 1], &range->values[upper],
++ (range->nbValues - upper) * sizeof(int));
++ range->values[upper] = value;
++ range->nbValues++;
++ }
++ break;
++ }
++ }
++ } else {
++ range->values = malloc(sizeof(int));
++ range->values[0] = value;
++ range->nbValues = 1;
++ }
++}
++
++/* return first value */
++static inline unsigned int alloc_range(RangeAllocator *range, int n,
++ unsigned int *values)
++{
++ int i, j;
++
++ if (range->nbValues == 0) {
++ range->nbValues = n;
++ range->values = malloc(n * sizeof(int));
++ for (i = 0; i < n; i++) {
++ range->values[i] = i + 1;
++ if (values)
++ values[i] = range->values[i];
++ }
++ return 1;
++ } else {
++ int lastValue = 1;
++
++ for (i = 0; i < range->nbValues; i++) {
++ if ((int) range->values[i] - (int) lastValue - 1 >= n) {
++ range->values =
++ realloc(range->values,
++ (range->nbValues + n) * sizeof(int));
++ memmove(&range->values[i + n], &range->values[i],
++ (range->nbValues - i) * sizeof(int));
++ for (j = 0; j < n; j++) {
++ range->values[i + j] = lastValue + 1 + j;
++ if (values)
++ values[j] = range->values[i + j];
++ }
++ range->nbValues += n;
++ break;
++ } else
++ lastValue = range->values[i];
++ }
++ if (i == range->nbValues) {
++ range->values =
++ realloc(range->values, (range->nbValues + n) * sizeof(int));
++ for (j = 0; j < n; j++) {
++ range->values[i + j] = lastValue + 1 + j;
++ if (values)
++ values[j] = range->values[i + j];
++ }
++ range->nbValues += n;
++ }
++ return lastValue + 1;
++ }
++}
++
++static inline void delete_value(RangeAllocator *range, unsigned int value)
++{
++ if (value == 0)
++ return;
++ if (range->nbValues >= 1) {
++ int lower = 0;
++ int upper = range->nbValues - 1;
++
++ while (1) {
++ int mid = (lower + upper) / 2;
++
++ if (range->values[mid] > value)
++ upper = mid;
++ else if (range->values[mid] < value)
++ lower = mid;
++ else {
++ lower = upper = mid;
++ }
++ if (upper - lower <= 1) {
++ if (value == range->values[lower]) {
++ memmove(&range->values[lower], &range->values[lower + 1],
++ (range->nbValues - lower - 1) * sizeof(int));
++ range->nbValues--;
++ } else if (value == range->values[upper]) {
++ memmove(&range->values[upper], &range->values[upper + 1],
++ (range->nbValues - upper - 1) * sizeof(int));
++ range->nbValues--;
++ }
++ break;
++ }
++ }
++ }
++}
++
++static inline void delete_range(RangeAllocator *range, int n,
++ const unsigned int *values)
++{
++ int i;
++
++ for (i = 0; i < n; i++) {
++ delete_value(range, values[i]);
++ }
++}
++
++static inline void delete_consecutive_values(RangeAllocator *range,
++ unsigned int first, int n)
++{
++ int i;
++
++ for (i = 0; i < n; i++) {
++ delete_value(range, first + i);
++ }
++}
++
++
++/*****************************************************************/
++/* */
++/* CRC LOOKUP TABLE */
++/* ================ */
++/* The following CRC lookup table was generated automagically */
++/* by the Rocksoft^tm Model CRC Algorithm Table Generation */
++/* Program V1.0 using the following model parameters: */
++/* */
++/* Width : 4 bytes. */
++/* Poly : 0x04C11DB7L */
++/* Reverse : TRUE. */
++/* */
++/* For more information on the Rocksoft^tm Model CRC Algorithm, */
++/* see the document titled "A Painless Guide to CRC Error */
++/* Detection Algorithms" by Ross Williams */
++/* (ross@guest.adelaide.edu.au.). This document is likely to be */
++/* in the FTP archive "ftp.adelaide.edu.au/pub/rocksoft". */
++/* */
++/*****************************************************************/
++
++static const unsigned int crctable[256] = {
++ 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
++ 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
++ 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
++ 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
++ 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
++ 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
++ 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
++ 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
++ 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
++ 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
++ 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,
++ 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
++ 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,
++ 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
++ 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
++ 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
++ 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,
++ 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
++ 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,
++ 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
++ 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
++ 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
++ 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,
++ 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
++ 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
++ 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
++ 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
++ 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
++ 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,
++ 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
++ 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,
++ 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
++ 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
++ 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
++ 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
++ 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
++ 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,
++ 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
++ 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
++ 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
++ 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,
++ 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
++ 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,
++ 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
++ 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
++ 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
++ 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,
++ 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
++ 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
++ 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
++ 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
++ 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
++ 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,
++ 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
++ 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
++ 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
++ 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
++ 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
++ 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,
++ 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
++ 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,
++ 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
++ 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
++ 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
++};
++
++static unsigned int calc_checksum(const void *_ptr, int length,
++ unsigned int seed)
++{
++ int i;
++ unsigned int crc = seed;
++ unsigned char *ptr = (unsigned char *) _ptr;
++
++ if (ptr == NULL)
++ return -1;
++ for (i = 0; i < length; i++) {
++ crc = crctable[(crc ^ *ptr++) & 0xFF] ^ (crc >> 8);
++ }
++ return crc;
++}
++
++
++static inline void display_gl_call(FILE *f,
++ int func_number, arg_t *args, int *args_size)
++{
++ int i;
++
++ if (func_number < 0) {
++ fprintf(f, "unknown call : %d\n", func_number);
++ return;
++ }
++ Signature *signature = (Signature *) tab_opengl_calls[func_number];
++ int nb_args = signature->nb_args;
++ int *args_type = signature->args_type;
++
++ fprintf(f, "%s(", tab_opengl_calls_name[func_number]);
++
++ for (i = 0; i < nb_args; i++) {
++ switch (args_type[i]) {
++ case TYPE_UNSIGNED_CHAR:
++ case TYPE_CHAR:
++ {
++ fprintf(f, "%d", (char) args[i]);
++ break;
++ }
++
++ case TYPE_UNSIGNED_SHORT:
++ case TYPE_SHORT:
++ {
++ fprintf(f, "%d", (short) args[i]);
++ break;
++ }
++
++ case TYPE_UNSIGNED_INT:
++ case TYPE_INT:
++ {
++ fprintf(f, "%d", (int) args[i]);
++ break;
++ }
++
++ case TYPE_FLOAT:
++ fprintf(f, "%f", *(float *) &args[i]);
++ break;
++
++ case TYPE_DOUBLE:
++ CASE_IN_KNOWN_SIZE_POINTERS:
++ case TYPE_NULL_TERMINATED_STRING:
++ CASE_IN_UNKNOWN_SIZE_POINTERS:
++ CASE_IN_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
++ if (args_type[i] == TYPE_NULL_TERMINATED_STRING) {
++ fprintf(f, "\"%s\"", (char *) args[i]);
++ } else if (args_type[i] == TYPE_DOUBLE)
++ fprintf(f, "%f", *(double *) args[i]);
++ else if (IS_ARRAY_CHAR(args_type[i]) &&
++ args_size[i] <= 4 * sizeof(char)) {
++ int j;
++ int n = args_size[i] / sizeof(char);
++
++ fprintf(f, "(");
++ for (j = 0; j < n; j++) {
++ fprintf(f, "%d", ((unsigned char *) args[i])[j]);
++ if (j != n - 1)
++ fprintf(f, ", ");
++ }
++ fprintf(f, ")");
++ } else if (IS_ARRAY_SHORT(args_type[i]) &&
++ args_size[i] <= 4 * sizeof(short)) {
++ int j;
++ int n = args_size[i] / sizeof(short);
++
++ fprintf(f, "(");
++ for (j = 0; j < n; j++) {
++ fprintf(f, "%d", ((short *) args[i])[j]);
++ if (j != n - 1)
++ fprintf(f, ", ");
++ }
++ fprintf(f, ")");
++ } else if (IS_ARRAY_INT(args_type[i]) &&
++ args_size[i] <= 4 * sizeof(int)) {
++ int j;
++ int n = args_size[i] / sizeof(int);
++
++ fprintf(f, "(");
++ for (j = 0; j < n; j++) {
++ fprintf(f, "%d", ((int *) args[i])[j]);
++ if (j != n - 1)
++ fprintf(f, ", ");
++ }
++ fprintf(f, ")");
++ } else if (IS_ARRAY_FLOAT(args_type[i]) &&
++ args_size[i] <= 4 * sizeof(float)) {
++ int j;
++ int n = args_size[i] / sizeof(float);
++
++ fprintf(f, "(");
++ for (j = 0; j < n; j++) {
++ fprintf(f, "%f", ((float *) args[i])[j]);
++ if (j != n - 1)
++ fprintf(f, ", ");
++ }
++ fprintf(f, ")");
++ } else if (IS_ARRAY_DOUBLE(args_type[i]) &&
++ args_size[i] <= 4 * sizeof(double)) {
++ int j;
++ int n = args_size[i] / sizeof(double);
++
++ fprintf(f, "(");
++ for (j = 0; j < n; j++) {
++ fprintf(f, "%f", ((double *) args[i])[j]);
++ if (j != n - 1)
++ fprintf(f, ", ");
++ }
++ fprintf(f, ")");
++ } else {
++ fprintf(f, "%d bytes", args_size[i]);
++ fprintf(f, "(crc = 0x%x)",
++ calc_checksum((void *) args[i], args_size[i],
++ 0xFFFFFFFF));
++ }
++ break;
++
++ CASE_OUT_LENGTH_DEPENDING_ON_PREVIOUS_ARGS:
++ CASE_OUT_UNKNOWN_SIZE_POINTERS:
++ CASE_OUT_KNOWN_SIZE_POINTERS:
++ {
++ fprintf(f, "%d bytes (OUT)", args_size[i]);
++ break;
++ }
++
++ case TYPE_IN_IGNORED_POINTER:
++ break;
++
++ default:
++ fprintf(f, "shouldn't happen : call %s arg %d\n",
++ tab_opengl_calls_name[func_number], i);
++ return;
++ break;
++ }
++ if (i < nb_args - 1)
++ fprintf(f, ", ");
++ }
++ fprintf(f, ")\n");
++}
++
++#endif
+Index: qemu-0.13.0/target-i386/parse_gl_h.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-i386/parse_gl_h.c 2011-01-17 16:42:36.000000000 +0800
+@@ -0,0 +1,1496 @@
++/*
++ * Parse gl.h et glx.h to auto-generate source code
++ *
++ * Copyright (c) 2006,2007 Even Rouault
++ *
++ * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
++
++/* gcc -g parse_gl_h.c -o parse_gl_h && ./parse_gl_h */
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <assert.h>
++
++int isExtByName(const char* name)
++{
++ return (strstr(name, "ARB") != NULL) ||
++ (strstr(name, "IBM") != NULL) ||
++ (strstr(name, "EXT") != NULL) ||
++ (strstr(name, "ATI") != NULL) ||
++ (strstr(name, "NV") != NULL) ||
++ (strstr(name, "MESA") != NULL) ||
++ (strstr(name, "APPLE") != NULL) ||
++ (strstr(name, "SUN") != NULL) ||
++ (strstr(name, "SGI") != NULL);
++}
++
++char* get_arg_type(char* s)
++{
++ while(*s == ' ' || *s == '\t') s++;
++ char* n = s;
++ char* c = strstr(n, "const");
++ if (c)
++ n += 6;
++
++ char* t = strstr(n, " ");
++ if (t)
++ {
++ if (t[1] == '*')
++ t += 2;
++ t[0] = 0;
++ char* ori = t;
++ t = strstr(t+1, "[");
++ if (t)
++ {
++ memmove(ori, t, strlen(t));
++ strstr(ori, "]")[1] = 0;
++ }
++ }
++ return strdup(s);
++}
++
++typedef struct
++{
++ char* type;
++ char* name;
++ int nargs;
++ char** args;
++ int ok;
++ int just_for_server_side;
++ int has_out_parameters;
++ int isExt;
++} FuncDesc;
++
++int isExt(FuncDesc* func)
++{
++ return func->isExt;
++}
++
++char* get_type_string(char* type)
++{
++ if (strstr(type, "[16]"))
++ {
++ if (strstr(type, "float"))
++ return ("TYPE_16FLOAT");
++ else if (strstr(type, "double"))
++ return ("TYPE_16DOUBLE");
++ else
++ {
++ printf("inconnu %s\n", type);
++ exit(-1);
++ }
++ }
++ else if (strstr(type, "[128]") && strstr(type, "GLubyte"))
++ return strstr(type, "const") ? "TYPE_128UCHAR" : "TYPE_OUT_128UCHAR";
++ else if (strstr(type, "const GLvoid *"))
++ return "TYPE_ARRAY_VOID";
++ else if (strstr(type, "const GLchar *") ||
++ strstr(type, "const GLcharARB *"))
++ return "TYPE_NULL_TERMINATED_STRING";
++ else if (strstr(type, "const GLbyte *"))
++ return "TYPE_ARRAY_SIGNED_CHAR";
++ else if (strstr(type, "const GLubyte *"))
++ return "TYPE_ARRAY_UNSIGNED_CHAR";
++ else if (strstr(type, "const GLshort *"))
++ return "TYPE_ARRAY_SHORT";
++ else if (strstr(type, "const GLushort *") ||
++ strstr(type, "const GLhalfNV *"))
++ return "TYPE_ARRAY_UNSIGNED_SHORT";
++ else if (strstr(type, "const GLint *"))
++ return "TYPE_ARRAY_INT";
++ else if (strstr(type, "const GLuint *") ||
++ strstr(type, "const GLenum *"))
++ return "TYPE_ARRAY_UNSIGNED_INT";
++ else if (strstr(type, "const GLfloat *") ||
++ strstr(type, "const GLclampf *"))
++ return "TYPE_ARRAY_FLOAT";
++ else if (strstr(type, "const GLdouble *"))
++ return "TYPE_ARRAY_DOUBLE";
++ else if (strstr(type, "GLvoid *"))
++ return "TYPE_OUT_ARRAY_VOID";
++ else if (strstr(type, "GLboolean *") ||
++ strstr(type, "GLubyte *"))
++ return "TYPE_OUT_ARRAY_UNSIGNED_CHAR";
++ else if (strstr(type, "GLcharARB *") ||
++ strstr(type, "GLchar *"))
++ return "TYPE_OUT_ARRAY_CHAR";
++ else if (strstr(type, "GLshort *"))
++ return "TYPE_OUT_ARRAY_SHORT";
++ else if (strstr(type, "GLushort *"))
++ return "TYPE_OUT_ARRAY_UNSIGNED_SHORT";
++ else if (strstr(type, "GLint *")||
++ strstr(type, "GLsizei *"))
++ return "TYPE_OUT_ARRAY_INT";
++ else if (strstr(type, "GLuint *") ||
++ strstr(type, "GLenum *") ||
++ strstr(type, "GLhandleARB *"))
++ return "TYPE_OUT_ARRAY_UNSIGNED_INT";
++ else if (strstr(type, "GLfloat *"))
++ return "TYPE_OUT_ARRAY_FLOAT";
++ else if (strstr(type, "GLdouble *"))
++ return "TYPE_OUT_ARRAY_DOUBLE";
++ else if (strcmp(type, "void") == 0)
++ return("TYPE_NONE");
++ else if (strcmp(type, "GLbyte") == 0)
++ return("TYPE_CHAR");
++ else if (strcmp(type, "GLubyte") == 0 ||
++ strcmp(type, "GLboolean") == 0)
++ return("TYPE_UNSIGNED_CHAR");
++ else if (strcmp(type, "GLshort") == 0)
++ return("TYPE_SHORT");
++ else if (strcmp(type, "GLushort") == 0 ||
++ strcmp(type, "GLhalfNV") == 0)
++ return("TYPE_UNSIGNED_SHORT");
++ else if (strcmp(type, "GLint") == 0 ||
++ strcmp(type, "GLsizei") == 0 ||
++ strcmp(type, "GLintptr") == 0 ||
++ strcmp(type, "GLsizeiptr") == 0 ||
++ strcmp(type, "GLintptrARB") == 0 ||
++ strcmp(type, "GLsizeiptrARB") == 0)
++ return("TYPE_INT");
++ else if (strcmp(type, "GLenum") == 0 ||
++ strcmp(type, "GLuint") == 0 ||
++ strcmp(type, "GLhandleARB") == 0 ||
++ strcmp(type, "GLbitfield") == 0)
++ return("TYPE_UNSIGNED_INT");
++ else if (strcmp(type, "GLfloat") == 0 ||
++ strcmp(type, "GLclampf") == 0)
++ return("TYPE_FLOAT");
++ else if (strcmp(type, "GLdouble") == 0 ||
++ strcmp(type, "GLclampd") == 0)
++ return("TYPE_DOUBLE");
++ else
++ {
++ printf("inconnu %s\n", type);
++ exit(-1);
++ }
++}
++
++typedef struct
++{
++ char* letter;
++ char* signature_type_name;
++ char* gl_c_type_name;
++ char* c_type_name;
++} ForIsKnownArgVector;
++
++#define N_ELEMENTS(x) (sizeof(x)/sizeof(x[0]))
++#define N_FIELDS_IN_ARG_VECTOR 4
++
++
++typedef struct
++{
++ char* func_name;
++ char* signature_type_name;
++} KnownLastArgFunc;
++
++static KnownLastArgFunc knownLastArgFuncs[] =
++{
++{"glFogCoordfv", "TYPE_1FLOAT"},
++{"glFogCoorddv", "TYPE_1DOUBLE"},
++{"glFogCoordfvEXT", "TYPE_1FLOAT"},
++{"glFogCoorddvEXT", "TYPE_1DOUBLE"},
++{"glFogCoordhvNV", "TYPE_1USHORT"},
++
++{"glGetFenceivNV", "TYPE_OUT_1INT"},
++
++{"glGetTexLevelParameteriv", "TYPE_OUT_1INT" },
++{"glGetTexLevelParameterfv", "TYPE_OUT_1FLOAT" },
++
++{"glGetRenderbufferParameterivEXT", "TYPE_OUT_1INT"},
++{"glGetFramebufferAttachmentParameterivEXT", "TYPE_OUT_1INT"},
++{"glGetFinalCombinerInputParameterivNV", "TYPE_OUT_1INT"},
++{"glGetCombinerOutputParameterivNV", "TYPE_OUT_1INT"},
++{"glGetCombinerInputParameterivNV", "TYPE_OUT_1INT"},
++{"glGetOcclusionQueryivNV", "TYPE_OUT_1INT"},
++{"glGetOcclusionQueryuivNV", "TYPE_OUT_1UINT"},
++{"glGetObjectParameterivARB", "TYPE_OUT_1INT"},
++{"glGetQueryivARB", "TYPE_OUT_1INT"},
++{"glGetQueryiv", "TYPE_OUT_1INT"},
++{"glGetQueryObjectivARB", "TYPE_OUT_1INT"},
++{"glGetQueryObjectiv", "TYPE_OUT_1INT"},
++{"glGetQueryObjectuivARB", "TYPE_OUT_1UINT"},
++{"glGetQueryObjectuiv", "TYPE_OUT_1UINT"},
++{"glGetProgramivARB", "TYPE_OUT_1INT"},
++{"glGetProgramiv", "TYPE_OUT_1INT"},
++{"glGetProgramivNV", "TYPE_OUT_1INT"},
++{"glGetShaderiv", "TYPE_OUT_1INT"},
++
++{"glCombinerParameterfvNV", "TYPE_1FLOAT"},
++{"glCombinerParameterivNV", "TYPE_1INT"},
++
++{"glGetFinalCombinerInputParameterfvNV", "TYPE_OUT_1FLOAT"},
++{"glGetCombinerOutputParameterfvNV", "TYPE_OUT_1FLOAT"},
++{"glGetCombinerInputParameterfvNV", "TYPE_OUT_1FLOAT"},
++{"glGetObjectParameterfvARB", "TYPE_OUT_1FLOAT"},
++
++{"glCombinerStageParameterfvNV", "TYPE_4FLOAT"},
++{"glGetCombinerStageParameterfvNV", "TYPE_OUT_4FLOAT"},
++
++{"glTexBumpParameterivATI", "TYPE_1INT"},
++{"glTexBumpParameterfvATI", "TYPE_1FLOAT"},
++{"glGetTexBumpParameterivATI", "TYPE_OUT_1INT"},
++{"glGetTexBumpParameterfvATI", "TYPE_OUT_1FLOAT"},
++
++{"glGetProgramLocalParameterfvARB", "TYPE_OUT_4FLOAT"},
++{"glGetProgramLocalParameterdvARB", "TYPE_OUT_4DOUBLE"},
++{"glGetProgramEnvParameterfvARB", "TYPE_OUT_4FLOAT"},
++{"glGetProgramEnvParameterdvARB", "TYPE_OUT_4DOUBLE"},
++{"glGetProgramLocalParameterIivNV", "TYPE_OUT_1INT"},
++{"glGetProgramLocalParameterIuivNV", "TYPE_OUT_1UINT"},
++{"glGetProgramEnvParameterIivNV", "TYPE_OUT_1INT"},
++{"glGetProgramEnvParameterIuivNV", "TYPE_OUT_1UINT"},
++
++{"glGetProgramParameterfvNV", "TYPE_OUT_4FLOAT"},
++{"glGetProgramParameterdvNV", "TYPE_OUT_4DOUBLE"},
++{"glGetProgramNamedParameterfvNV", "TYPE_OUT_4FLOAT"},
++{"glGetProgramNamedParameterdvNV", "TYPE_OUT_4DOUBLE"},
++
++{"glCullParameterfvEXT", "TYPE_4FLOAT"},
++{"glCullParameterdvEXT", "TYPE_4DOUBLE"},
++
++{"glGetTrackMatrixivNV", "TYPE_OUT_1INT"},
++{"glExecuteProgramNV", "TYPE_4FLOAT"},
++
++{"glEdgeFlagv", "TYPE_1UCHAR"},
++
++{"glClipPlane", "TYPE_4DOUBLE"},
++{"glGetClipPlane", "TYPE_OUT_4DOUBLE"},
++
++{"glSetFragmentShaderConstantATI", "TYPE_4FLOAT"},
++
++{"glGetObjectBufferfvATI", "TYPE_OUT_1FLOAT"},
++{"glGetObjectBufferivATI", "TYPE_OUT_1INT"},
++{"glGetArrayObjectfvATI", "TYPE_OUT_1FLOAT"},
++{"glGetArrayObjectivATI", "TYPE_OUT_1INT"},
++{"glGetVariantArrayObjectfvATI", "TYPE_OUT_1FLOAT"},
++{"glGetVariantArrayObjectivATI", "TYPE_OUT_1INT"},
++{"glGetVertexAttribArrayObjectfvATI", "TYPE_OUT_1FLOAT"},
++{"glGetVertexAttribArrayObjectivATI", "TYPE_OUT_1INT"},
++
++{"glPixelTransformParameterivEXT", "TYPE_1INT"},
++{"glPixelTransformParameterfvEXT", "TYPE_1FLOAT"},
++{"glGetPixelTransformParameterivEXT", "TYPE_OUT_1INT"},
++{"glGetPixelTransformParameterfvEXT", "TYPE_OUT_1FLOAT"},
++
++{"glColorTableParameterfv", "TYPE_4FLOAT"},
++{"glColorTableParameteriv", "TYPE_4INT"},
++{"glGetColorTableParameterfv", "TYPE_OUT_4FLOAT"},
++{"glGetColorTableParameteriv", "TYPE_OUT_4INT"},
++{"glColorTableParameterfvEXT", "TYPE_4FLOAT"},
++{"glColorTableParameterivEXT", "TYPE_4INT"},
++{"glGetColorTableParameterfvEXT", "TYPE_OUT_4FLOAT"},
++{"glGetColorTableParameterivEXT", "TYPE_OUT_4INT"},
++
++{"glGetMinmaxParameterfv", "TYPE_OUT_1FLOAT"},
++{"glGetMinmaxParameteriv", "TYPE_OUT_1INT"},
++{"glGetHistogramParameterfv", "TYPE_OUT_1FLOAT"},
++{"glGetHistogramParameteriv", "TYPE_OUT_1INT"},
++{"glGetMinmaxParameterfvEXT", "TYPE_OUT_1FLOAT"},
++{"glGetMinmaxParameterivEXT", "TYPE_OUT_1INT"},
++{"glGetHistogramParameterfvEXT", "TYPE_OUT_1FLOAT"},
++{"glGetHistogramParameterivEXT", "TYPE_OUT_1INT"},
++
++/* Not sure at all for the 2 followingo ones ! */
++{"glGetBooleanIndexedvEXT", "TYPE_OUT_4UCHAR"},
++{"glGetIntegerIndexedvEXT", "TYPE_OUT_4INT"},
++
++{"glReferencePlaneSGIX", "TYPE_4DOUBLE"},
++
++{"glGetTransformFeedbackVaryingNV", "TYPE_OUT_1INT"},
++
++};
++
++int is_known_arg_vector(FuncDesc* desc, char** p_signature_type_name, char** p_c_type_name)
++{
++ static ForIsKnownArgVector my_tab[] =
++ {
++ { "b", "CHAR", "GLbyte", "signed char" },
++ { "Boolean", "CHAR", "GLboolean", "unsigned char" },
++ { "s", "SHORT", "GLshort", "short" },
++ { "i", "INT", "GLint", "int" },
++ { "Integer", "INT", "GLint", "int" },
++ { "ub", "CHAR", "GLubyte", "unsigned char" },
++ { "h", "SHORT", "GLhalf", "unsigned short" },
++ { "us", "SHORT", "GLushort", "unsigned short" },
++ { "ui", "INT", "GLuint", "unsigned int" },
++ { "Nb", "CHAR", "GLbyte", "signed char" },
++ { "Ns", "SHORT", "GLshort", "short" },
++ { "Ni", "INT", "GLint", "int" },
++ { "Nub", "CHAR", "GLubyte", "unsigned char" },
++ { "Nus", "SHORT", "GLushort", "unsigned short" },
++ { "Nui", "INT", "GLuint", "unsigned int" },
++
++ { "f", "FLOAT", "GLfloat", "float" },
++ { "Float", "FLOAT", "GLfloat", "float" },
++ { "d", "DOUBLE", "GLdouble", "double" },
++ };
++
++ if (desc->nargs == 0)
++ return 0;
++
++ int i , j;
++
++ if (strstr(desc->name, "glVertexAttribs") ||
++ strstr(desc->name, "glProgramParameters") ||
++ strstr(desc->name, "glProgramEnvParameters") ||
++ strstr(desc->name, "glProgramLocalParameters") ||
++ (strstr(desc->name, "glUniform") && (strstr(desc->name, "iv") || strstr(desc->name, "fv"))))
++ return 0;
++
++ static char signatures[N_ELEMENTS(my_tab)][N_FIELDS_IN_ARG_VECTOR][20] = {0};
++ char signature[10];
++
++ for(i=0;i<N_ELEMENTS(knownLastArgFuncs);i++)
++ {
++ if (strcmp(desc->name, knownLastArgFuncs[i].func_name) == 0)
++ {
++ if (p_signature_type_name)
++ {
++ *p_signature_type_name = knownLastArgFuncs[i].signature_type_name;
++ }
++ if (p_c_type_name)
++ {
++ if (strstr(knownLastArgFuncs[i].signature_type_name, "FLOAT"))
++ *p_c_type_name = "float";
++ else if (strstr(knownLastArgFuncs[i].signature_type_name, "DOUBLE"))
++ *p_c_type_name = "double";
++ else if (strstr(knownLastArgFuncs[i].signature_type_name, "UINT"))
++ *p_c_type_name = "unsigned int";
++ else if (strstr(knownLastArgFuncs[i].signature_type_name, "INT"))
++ *p_c_type_name = "int";
++ else if (strstr(knownLastArgFuncs[i].signature_type_name, "USHORT"))
++ *p_c_type_name = "unsigned short";
++ else if (strstr(knownLastArgFuncs[i].signature_type_name, "SHORT"))
++ *p_c_type_name = "short";
++ else if (strstr(knownLastArgFuncs[i].signature_type_name, "UCHAR"))
++ *p_c_type_name = "unsigned char";
++ else if (strstr(knownLastArgFuncs[i].signature_type_name, "CHAR"))
++ *p_c_type_name = "char";
++ else
++ assert(0);
++ }
++ return 1;
++ }
++ }
++
++ for(i=0;i<N_ELEMENTS(my_tab);i++)
++ {
++ for(j=1;j<=N_FIELDS_IN_ARG_VECTOR;j++)
++ {
++ if (strstr(desc->name, "glIndex") && strstr(desc->name, "v"))
++ sprintf(signature, "%sv", my_tab[i].letter);
++ else
++ sprintf(signature, "%d%sv", j, my_tab[i].letter);
++ if (strstr(desc->name, signature) &&
++ strstr(desc->args[desc->nargs - 1], my_tab[i].gl_c_type_name) &&
++ strstr(desc->args[desc->nargs - 1], "*"))
++ {
++ if (p_signature_type_name)
++ {
++ if (signatures[i][j-1][0] == 0)
++ sprintf(signatures[i][j-1], "TYPE_%d%s", j, my_tab[i].signature_type_name);
++ *p_signature_type_name = signatures[i][j-1];
++ }
++ if (p_c_type_name) *p_c_type_name = my_tab[i].c_type_name;
++ return 1;
++ }
++ }
++ }
++ return 0;
++}
++
++static void print_server_side_argument(FILE* server_stub, int j, char* glType)
++{
++ const char* symbolic_type = get_type_string(glType);
++ if (strcmp(symbolic_type, "TYPE_CHAR") == 0)
++ fprintf(server_stub, "ARG_TO_CHAR(args[%d])", j);
++ else if (strcmp(symbolic_type, "TYPE_UNSIGNED_CHAR") == 0)
++ fprintf(server_stub, "ARG_TO_UNSIGNED_CHAR(args[%d])", j);
++ else if (strcmp(symbolic_type, "TYPE_SHORT") == 0)
++ fprintf(server_stub, "ARG_TO_SHORT(args[%d])", j);
++ else if (strcmp(symbolic_type, "TYPE_UNSIGNED_SHORT") == 0)
++ fprintf(server_stub, "ARG_TO_UNSIGNED_SHORT(args[%d])", j);
++ else if (strcmp(symbolic_type, "TYPE_INT") == 0)
++ fprintf(server_stub, "ARG_TO_INT(args[%d])", j);
++ else if (strcmp(symbolic_type, "TYPE_UNSIGNED_INT") == 0)
++ fprintf(server_stub, "ARG_TO_UNSIGNED_INT(args[%d])", j);
++ else if (strcmp(symbolic_type, "TYPE_FLOAT") == 0)
++ fprintf(server_stub, "ARG_TO_FLOAT(args[%d])", j);
++ else if (strcmp(symbolic_type, "TYPE_16FLOAT") == 0)
++ fprintf(server_stub, "(const float*)(args[%d])", j);
++ else if (strcmp(symbolic_type, "TYPE_DOUBLE") == 0)
++ fprintf(server_stub, "ARG_TO_DOUBLE(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_16DOUBLE") == 0)
++ fprintf(server_stub, "(const double*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_OUT_128UCHAR") == 0)
++ fprintf(server_stub, "(unsigned char*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_128UCHAR") == 0)
++ fprintf(server_stub, "(const unsigned char*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_NULL_TERMINATED_STRING") == 0)
++ fprintf(server_stub, "(const char*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_ARRAY_SHORT") == 0)
++ fprintf(server_stub, "(const short*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_ARRAY_UNSIGNED_SHORT") == 0)
++ fprintf(server_stub, "(const unsigned short*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_ARRAY_INT") == 0)
++ fprintf(server_stub, "(const int*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_ARRAY_UNSIGNED_INT") == 0)
++ fprintf(server_stub, "(const unsigned int*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_ARRAY_FLOAT") == 0)
++ fprintf(server_stub, "(const float*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_ARRAY_DOUBLE") == 0)
++ fprintf(server_stub, "(const double*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_ARRAY_CHAR") == 0)
++ fprintf(server_stub, "(const char*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_ARRAY_SIGNED_CHAR") == 0)
++ fprintf(server_stub, "(const signed char*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_ARRAY_VOID") == 0)
++ fprintf(server_stub, "(const void*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_ARRAY_UNSIGNED_CHAR") == 0)
++ fprintf(server_stub, "(const unsigned char*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_OUT_ARRAY_SHORT") == 0)
++ fprintf(server_stub, "(short*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_OUT_ARRAY_UNSIGNED_SHORT") == 0)
++ fprintf(server_stub, "(unsigned short*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_OUT_ARRAY_INT") == 0)
++ fprintf(server_stub, "(int*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_OUT_ARRAY_UNSIGNED_INT") == 0)
++ fprintf(server_stub, "(unsigned int*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_OUT_ARRAY_FLOAT") == 0)
++ fprintf(server_stub, "(float*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_OUT_ARRAY_DOUBLE") == 0)
++ fprintf(server_stub, "(double*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_OUT_ARRAY_VOID") == 0)
++ fprintf(server_stub, "(void*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_OUT_ARRAY_CHAR") == 0)
++ fprintf(server_stub, "(char*)(args[%d])", j);
++ else if ( strcmp(symbolic_type, "TYPE_OUT_ARRAY_UNSIGNED_CHAR") == 0)
++ fprintf(server_stub, "(unsigned char*)(args[%d])", j);
++
++ else
++ {
++ fprintf(stderr, "Unknown : %s\n", symbolic_type);
++ assert(0);
++ }
++}
++
++static const char* func_dealt_by_hand[500] = { NULL };
++
++
++static const char* ignore_func[] =
++{
++ "glGetPointerv",
++ "glRectdv",
++ "glRectfv",
++ "glRectiv",
++ "glRectsv",
++ "glMultiDrawArrays",
++ "glMultiDrawArraysEXT",
++ "glMultiDrawElements",
++ "glMultiDrawElementsEXT",
++ "glUnmapBuffer",
++ "glUnmapBufferARB",
++ "glLoadTransposeMatrixf",
++ "glLoadTransposeMatrixd",
++ "glMultTransposeMatrixf",
++ "glMultTransposeMatrixd",
++ "glLoadTransposeMatrixfARB",
++ "glLoadTransposeMatrixdARB",
++ "glMultTransposeMatrixfARB",
++ "glMultTransposeMatrixdARB",
++
++ "glPixelDataRangeNV",
++ "glFlushPixelDataRangeNV",
++ "glVertexArrayRangeNV",
++ "glFlushVertexArrayRangeNV",
++ "glVertexWeightfEXT",
++
++ "glGetBufferPointerv",
++ "glGetBufferPointervARB",
++ "glGetVertexAttribPointerv",
++ "glGetVertexAttribPointervARB",
++ "glVertexAttribPointer",
++ "glVertexAttribPointerARB",
++ "glGetVariantPointervEXT",
++ NULL,
++};
++
++void get_func_dealt_by_hand()
++{
++ FILE* f = fopen("../target-i386/gl_func_perso.h", "r");
++ char buffer[256];
++ int i = 0;
++ char* c;
++ while(fgets(buffer, 256, f))
++ {
++ if (strstr(buffer, "MAGIC_MACRO("))
++ {
++ func_dealt_by_hand[i] = strdup(strstr(buffer, "MAGIC_MACRO(") + strlen("MAGIC_MACRO("));
++ * strstr(func_dealt_by_hand[i], ")") = 0;
++ c = strstr(func_dealt_by_hand[i], "_");
++ if (c && c != func_dealt_by_hand[i]) *c = 0;
++ i ++;
++ }
++ }
++ fclose(f);
++
++ int j = 0;
++ while(ignore_func[j])
++ {
++ func_dealt_by_hand[i] = ignore_func[j];
++ i++;
++ j++;
++ }
++}
++
++static const char* just_for_server_side_list[] =
++{
++ "glEnableClientState",
++ "glDisableClientState",
++ "glPushClientAttrib",
++ "glPopClientAttrib",
++ "glPixelStorei",
++ "glPixelStoref",
++ "glClientActiveTexture",
++ "glClientActiveTextureARB",
++ "glEnableVertexAttribArray",
++ "glEnableVertexAttribArrayARB",
++ "glDisableVertexAttribArray",
++ "glDisableVertexAttribArrayARB",
++ "glDrawElementArrayATI",
++ "glDrawRangeElementArrayATI",
++ "glGenSymbolsEXT",
++ "glFreeObjectBufferATI",
++ "glUnmapObjectBufferATI",
++ "glLockArraysEXT",
++ "glUnlockArraysEXT",
++ "glDepthFunc",
++ "glFogf",
++ "glFogi",
++ "glClipPlane",
++ "glGetClipPlane",
++
++/* begin of openquartz optimization */
++#if 1
++ "glMatrixMode",
++ "glOrtho",
++ "glFrustum",
++ "glPushMatrix",
++ "glPopMatrix",
++ "glLoadIdentity",
++ "glLoadMatrixd",
++ "glLoadMatrixf",
++ "glMultMatrixd",
++ "glMultMatrixf",
++ "glRotated",
++ "glRotatef",
++ "glScaled",
++ "glScalef",
++ "glTranslated",
++ "glTranslatef",
++#endif
++/* end of openquartz optimization */
++
++ "glGetError",
++ "glActiveTextureARB",
++
++ "glViewport",
++ "glScissor",
++
++ "glBindBufferARB",
++ "glDeleteBuffersARB",
++ "glGenBuffersARB",
++ "glBufferDataARB",
++ "glBufferSubDataARB",
++ "glGetBufferSubDataARB",
++ "glGetBufferParameterivARB",
++ "glBindBuffer",
++ "glDeleteBuffers",
++ "glGenBuffers",
++ "glBufferData",
++ "glBufferSubData",
++ "glGetBufferSubData",
++ "glGetBufferParameteriv",
++
++ "glPushAttrib",
++ "glPopAttrib",
++ "glEnable",
++ "glDisable",
++ "glIsEnabled",
++ "glBindTexture",
++ "glBindTextureEXT",
++ "glFogfv",
++ "glFogiv",
++ "glBitmap",
++ "glGetTexImage",
++ "glReadPixels",
++ "glDrawPixels",
++ "glSelectBuffer",
++ "glFeedbackBuffer",
++
++ "glTexImage1D",
++ "glTexImage2D",
++ "glTexImage3D",
++ "glTexSubImage1D",
++ "glTexSubImage2D",
++ "glTexSubImage3D",
++
++ "glTexImage3DEXT",
++ "glTexSubImage1DEXT",
++ "glTexSubImage2DEXT",
++ "glTexSubImage3DEXT",
++
++ "glGetCompressedTexImage",
++ "glCompressedTexImage1D",
++ "glCompressedTexImage2D",
++ "glCompressedTexImage3D",
++ "glCompressedTexSubImage1D",
++ "glCompressedTexSubImage2D",
++ "glCompressedTexSubImage3D",
++
++ "glGetCompressedTexImageARB",
++ "glCompressedTexImage1DARB",
++ "glCompressedTexImage2DARB",
++ "glCompressedTexImage3DARB",
++ "glCompressedTexSubImage1DARB",
++ "glCompressedTexSubImage2DARB",
++ "glCompressedTexSubImage3DARB",
++
++ "glCallLists",
++ "glNewList",
++ "glDeleteLists",
++ "glGenLists",
++
++ "glGenTextures",
++ "glDeleteTextures",
++ "glDeleteTexturesEXT",
++ "glMap1f",
++ "glMap1d",
++ "glMap2f",
++ "glMap2d",
++ "glGetMapdv",
++ "glGetMapfv",
++ "glGetMapiv",
++ "glGetBooleanv",
++ "glGetIntegerv",
++ "glGetFloatv",
++ "glGetDoublev",
++
++ "glGetPixelMapfv",
++ "glGetPixelMapuiv",
++ "glGetPixelMapusv",
++ "glGetProgramStringARB",
++ "glGetProgramStringNV",
++ "glArrayElement",
++ "glDrawArrays",
++ "glDrawElements",
++ "glDrawRangeElements",
++ "glDrawRangeElementsEXT",
++ "glGetProgramInfoLog",
++ "glGetTexLevelParameteriv",
++ "glGetInfoLogARB",
++ "glGetShaderInfoLog",
++ "glGetAttachedObjectsARB",
++ "glGetAttachedShaders",
++ "glGetActiveUniformARB",
++ "glGetActiveUniform",
++ "glGetUniformLocationARB",
++ "glGetUniformLocation",
++ "glGetUniformfvARB",
++ "glGetUniformfv",
++ "glGetUniformivARB",
++ "glGetUniformiv",
++ "glGetUniformuivEXT",
++ "glGetShaderSourceARB",
++ "glGetShaderSource",
++ "glGetActiveAttribARB",
++ "glGetActiveAttrib",
++ "glGetAttribLocationARB",
++ "glGetAttribLocation",
++
++ "glNewObjectBufferATI",
++ "glUpdateObjectBufferATI",
++
++ "glSetLocalConstantEXT",
++ "glSetInvariantEXT",
++ "glVariantbvEXT",
++ "glVariantsvEXT",
++ "glVariantivEXT",
++ "glVariantfvEXT",
++ "glVariantdvEXT",
++ "glVariantubvEXT",
++ "glVariantusvEXT",
++ "glVariantuivEXT",
++ "glGetVariantBooleanvEXT",
++ "glGetVariantIntegervEXT",
++ "glGetVariantFloatvEXT",
++ "glGetInvariantBooleanvEXT",
++ "glGetInvariantIntegervEXT",
++ "glGetInvariantFloatvEXT",
++ "glGetLocalConstantBooleanvEXT",
++ "glGetLocalConstantIntegervEXT",
++ "glGetLocalConstantFloatvEXT",
++
++ "glMatrixIndexubvARB",
++ "glMatrixIndexusvARB",
++ "glMatrixIndexuivARB",
++
++ "glColorTable",
++ "glColorSubTable",
++ "glGetColorTable",
++ "glConvolutionFilter1D",
++ "glConvolutionFilter2D",
++ "glGetConvolutionFilter",
++ "glSeparableFilter2D",
++ "glGetSeparableFilter",
++ "glGetHistogram",
++ "glGetMinmax",
++ "glColorTableEXT",
++ "glColorSubTableEXT",
++ "glGetColorTableEXT",
++ "glConvolutionFilter1DEXT",
++ "glConvolutionFilter2DEXT",
++ "glGetConvolutionFilterEXT",
++ "glSeparableFilter2DEXT",
++ "glGetSeparableFilterEXT",
++ "glGetHistogramEXT",
++ "glGetMinmaxEXT",
++
++ "glGetTexParameterfv",
++
++ "glGetVertexAttribivARB",
++ "glGetVertexAttribfvARB",
++ "glGetVertexAttribdvARB",
++ "glGetVertexAttribiv",
++ "glGetVertexAttribfv",
++ "glGetVertexAttribdv",
++
++ "glGetDetailTexFuncSGIS",
++ "glGetSharpenTexFuncSGIS",
++
++ "fake_gluBuild2DMipmaps",
++
++ "glRenderMode",
++
++ "glEnableVariantClientStateEXT",
++ "glDisableVariantClientStateEXT",
++
++ "glGetActiveVaryingNV",
++
++ NULL,
++};
++
++static int just_for_server_side_func(char* funcname)
++{
++ int i;
++ for(i=0;just_for_server_side_list[i];i++)
++ {
++ if (strcmp(just_for_server_side_list[i], funcname) == 0)
++ return 1;
++ }
++ return 0;
++}
++
++int parse(FILE* f, FuncDesc* funcDesc, int funcDescCount, int ignoreEXT)
++{
++ char buffer[256];
++ while(fgets(buffer, 256, f))
++ {
++
++ if (strncmp(buffer, "GLAPI", 5) == 0 && strstr(buffer, "APIENTRY") && strstr(buffer, "("))
++ {
++ int i = 0;
++ int skip = 0;
++ if (func_dealt_by_hand[0] == 0)
++ {
++ get_func_dealt_by_hand();
++ }
++ while (func_dealt_by_hand[i])
++ {
++ if (strstr(buffer, func_dealt_by_hand[i]))
++ {
++ skip = 1;
++ break;
++ }
++ i++;
++ }
++ if (skip)
++ continue;
++
++ char** args = malloc(15 * sizeof(char*));
++ int narg = 0;
++ char* type = buffer + 6;
++ char* n = strstr(type, "GLAPIENTRY") ? strstr(type, "GLAPIENTRY") : strstr(type, "APIENTRY");
++ int skip_length = strstr(type, "GLAPIENTRY") ? 11 : 9;
++ n[-1] = 0;
++ type = strdup(type);
++ n += skip_length;
++ char* fonc = n;
++ n = strstr(n, "(");
++ if (n[-1] == ' ') n[-1] = 0;
++ n[0] = 0;
++ fonc = strdup(fonc);
++ /*if (strstr(fonc, "glLockArraysEXT") || strstr(fonc, "glUnlockArraysEXT"))
++ {
++ }
++ else*/
++
++
++ if (ignoreEXT == 1 && isExtByName(fonc))
++ {
++ free(type);
++ free(fonc);
++ continue;
++ }
++ n++;
++ while(1)
++ {
++ char* virg = strstr(n, ",");
++ if (virg)
++ {
++ args[narg] = n;
++ virg[0] = 0;
++ args[narg] = get_arg_type(args[narg]);
++ narg++;
++ n = virg+1;
++ }
++ else
++ break;
++ }
++ while (strstr(n, ")") == 0)
++ {
++ fgets(buffer, 256, f);
++ n = buffer;
++ while(1)
++ {
++ char* virg = strstr(n, ",");
++ if (virg)
++ {
++ args[narg] = n;
++ virg[0] = 0;
++ args[narg] = get_arg_type(args[narg]);
++ narg++;
++ n = virg+1;
++ }
++ else
++ break;
++ }
++ }
++ char* par = strstr(n, ")");
++ args[narg] = n;
++ par[0] = 0;
++ args[narg] = get_arg_type(args[narg]);
++ narg++;
++
++
++ /*printf("%s %s (", type, fonc);
++ for(i=0;i<narg;i++)
++ {
++ printf("%s,", args[i]);
++ }
++ printf(")\n");*/
++
++ for(i=0;i<funcDescCount;i++)
++ {
++ if (strcmp(funcDesc[i].name, fonc) == 0)
++ {
++ if (ignoreEXT == 0)
++ funcDesc[i].isExt = 1;
++ break;
++ }
++ }
++ if (i == funcDescCount)
++ {
++ funcDesc[funcDescCount].type = type;
++ funcDesc[funcDescCount].name = fonc;
++ funcDesc[funcDescCount].nargs = narg;
++ funcDesc[funcDescCount].args = args;
++ funcDesc[funcDescCount].isExt = ignoreEXT == 0;
++ funcDescCount++;
++ }
++ else
++ {
++ free(fonc);
++ free(args);
++ free(type);
++ }
++ /*
++ for(i=0;i<narg;i++)
++ {
++ free(args[i]);
++ }
++ free(fonc);
++ free(type);*/
++ }
++ }
++ return funcDescCount;
++}
++
++typedef struct
++{
++ char* str;
++ int i;
++} StringIntStruct;
++
++StringIntStruct argDependingOnPreviousArgTab[] =
++{
++ { "glLoadProgramNV", 3},
++ { "ProgramNamedParameter", 2},
++ { "glDeleteBuffers", 1},
++ { "glDrawBuffers", 1},
++ { "glGenPrograms", 1},
++ { "glDeletePrograms", 1},
++ { "glGenQueries", 1},
++ { "glDeleteQueries", 1},
++ { "glGenFencesNV", 1},
++ { "glDeleteFencesNV", 1},
++ { "glGenOcclusionQueriesNV", 1},
++ { "glDeleteOcclusionQueriesNV", 1},
++ { "glRequestResidentProgramsNV", 1},
++ { "glDeleteTextures", 1},
++ { "glGenFramebuffersEXT", 1},
++ { "glDeleteFramebuffersEXT", 1},
++ { "glGenRenderbuffersEXT", 1},
++ { "glDeleteRenderbuffersEXT", 1},
++ { "glUniform1fv", 2},
++ { "glUniform2fv", 2},
++ { "glUniform3fv", 2},
++ { "glUniform4fv", 2},
++ { "glUniform1iv", 2},
++ { "glUniform2iv", 2},
++ { "glUniform3iv", 2},
++ { "glUniform4iv", 2},
++ { "glUniform1uivEXT", 2},
++ { "glUniform2uivEXT", 2},
++ { "glUniform3uivEXT", 2},
++ { "glUniform4uivEXT", 2},
++ { "glProgramParameters4fvNV", 3},
++ { "glProgramParameters4dvNV", 3},
++ { "glProgramLocalParameters4fvEXT", 3},
++ { "glProgramLocalParametersI4ivNV", 3},
++ { "glProgramLocalParametersI4uivNV", 3},
++ { "glProgramEnvParameters4fvEXT", 3},
++ { "glProgramEnvParametersI4ivNV", 3},
++ { "glProgramEnvParametersI4uivNV", 3},
++ { "glAreProgramsResidentNV", 1} ,
++ { "glAreProgramsResidentNV", 2} ,
++ { "glAreTexturesResident", 1} ,
++ { "glAreTexturesResident", 2} ,
++ { "glPrioritizeTextures", 1} ,
++ { "glPrioritizeTextures", 2} ,
++ { "glProgramStringARB", 3} ,
++
++ { "glVertexAttribs", 2},
++
++ { "glUniformMatrix", 3 },
++
++ { "glGetVertexAttribfv", 2},
++ { "glGetVertexAttribiv", 2},
++ { "glGetVertexAttribdv", 2},
++ { "glGetVertexAttribIivEXT", 2},
++ { "glGetVertexAttribIuivEXT", 2},
++
++ { "glPointParameterfv", 1},
++ { "glPointParameteriv", 1},
++
++ { "glWeightbvARB", 1},
++ { "glWeightsvARB", 1},
++ { "glWeightivARB", 1},
++ { "glWeightfvARB", 1},
++ { "glWeightdvARB", 1},
++ { "glWeightubvARB", 1},
++ { "glWeightusvARB", 1},
++ { "glWeightuivARB", 1},
++
++ { "glTexEnvfv", 2},
++ { "glTexEnviv", 2},
++ { "glGetTexEnvfv", 2},
++ { "glGetTexEnviv", 2},
++ { "glTexGendv", 2},
++ { "glTexGenfv", 2},
++ { "glTexGeniv", 2},
++ { "glGetTexGendv", 2},
++ { "glGetTexGenfv", 2},
++ { "glGetTexGeniv", 2},
++
++ { "glLightfv", 2},
++ { "glLightiv", 2},
++ { "glGetLightfv", 2},
++ { "glGetLightiv", 2},
++ { "glFragmentLightfvSGIX", 2},
++ { "glFragmentLightivSGIX", 2},
++ { "glGetFragmentLightfvSGIX", 2},
++ { "glGetFragmentLightivSGIX", 2},
++
++
++ { "glLightModelfv", 1},
++ { "glLightModeliv", 1},
++ { "glFragmentLightModelfvSGIX", 1},
++ { "glFragmentLightModelivSGIX", 1},
++
++ { "glMaterialfv", 2},
++ { "glMaterialiv", 2},
++ { "glGetMaterialfv", 2},
++ { "glGetMaterialiv", 2},
++ { "glFragmentMaterialfvSGIX", 2},
++ { "glFragmentMaterialivSGIX", 2},
++ { "glGetFragmentMaterialfvSGIX", 2},
++ { "glGetFragmentMaterialivSGIX", 2},
++
++ { "glFogiv", 1},
++ { "glFogfv", 1},
++
++ { "glTexParameterfv", 2},
++ { "glTexParameteriv", 2},
++ { "glGetTexParameterfv", 2},
++ { "glGetTexParameteriv", 2},
++
++ { "glTexParameterIivEXT", 2},
++ { "glTexParameterIuivEXT", 2},
++ { "glGetTexParameterIivEXT", 2},
++ { "glGetTexParameterIuivEXT", 2},
++
++ { "glPixelMapfv", 2},
++ { "glPixelMapuiv", 2},
++ { "glPixelMapusv", 2},
++
++ { "glDetailTexFuncSGIS", 2 },
++ { "glSharpenTexFuncSGIS", 2 },
++
++ { "glSpriteParameterfvSGIX", 1 },
++ { "glSpriteParameterivSGIX", 1 },
++
++ { "ConvolutionParameter", 2},
++
++ { "glProgramBufferParametersfvNV", 4},
++ { "glProgramBufferParametersIivNV", 4},
++ { "glProgramBufferParametersIuivNV", 4},
++
++ { "glTransformFeedbackAttribsNV", 1},
++ { "glTransformFeedbackVaryingsNV", 2},
++};
++
++int is_arg_of_length_depending_on_previous_args(FuncDesc* funcDesc, int j)
++{
++ int i;
++ if (strstr(funcDesc->args[j], "*") == NULL)
++ return 0;
++ for(i=0;i< N_ELEMENTS(argDependingOnPreviousArgTab); i++)
++ {
++ if (strstr(funcDesc->name, argDependingOnPreviousArgTab[i].str) && j == argDependingOnPreviousArgTab[i].i)
++ return 1;
++ }
++ return 0;
++}
++
++static void fprintf_prototype_args(FILE* f, FuncDesc* funcDesc)
++{
++ int j;
++ for(j=0;j<funcDesc->nargs;j++)
++ {
++ if (j != 0) fprintf(f,", ");
++ if (strstr(funcDesc->args[j], "[16]"))
++ {
++ if (strstr(funcDesc->args[j], "float"))
++ {
++ fprintf(f, "const GLfloat arg_%d[16]", j);
++ }
++ else if (strstr(funcDesc->args[j], "double"))
++ {
++ fprintf(f, "const GLdouble arg_%d[16]", j);
++ }
++ else
++ {
++ exit(-1);
++ }
++ }
++ else if (strstr(funcDesc->args[j], "[128]") && strstr(funcDesc->args[j], "GLubyte"))
++ fprintf(f, (strstr(funcDesc->args[j], "const")) ? "const GLubyte* arg_%d" : "GLubyte* arg_%d", j);
++ else
++ fprintf(f, "%s arg_%d", funcDesc->args[j], j);
++ }
++}
++
++int main(int argc, char* argv[])
++{
++ FuncDesc funcDesc[3000];
++ int funcDescCount = 0;
++ FILE* f;
++
++ f = fopen("../target-i386/mesa_gl.h", "r");
++ assert(f);
++ /*if (!f)
++ f = fopen("/usr/include/GL/gl.h", "r");*/
++ funcDescCount = parse(f, funcDesc, 0, 1);
++ fclose(f);
++
++ f = fopen("../target-i386/mesa_glext.h", "r");
++ assert(f);
++ /*if (!f)
++ f = fopen("/usr/include/GL/glext.h", "r");*/
++ funcDescCount = parse(f, funcDesc, funcDescCount, 0);
++ fclose(f);
++
++ FILE* header = fopen("gl_func.h", "w");
++ FILE* client_stub = fopen("client_stub.c", "w");
++ FILE* server_stub = fopen("server_stub.c", "w");
++
++ fprintf(header, "/* This is a generated file. DO NOT EDIT ! */\n\n");
++ fprintf(header, "#define COMPOSE(x,y) x##y\n");
++ fprintf(header, "#define MAGIC_MACRO(x) COMPOSE(x,_func)\n");
++ fprintf(header, "enum {\n"
++ "#include \"gl_func_perso.h\"\n");
++
++ fprintf(client_stub, "/* This is a generated file. DO NOT EDIT ! */\n\n");
++
++ fprintf(server_stub, "/* This is a generated file. DO NOT EDIT ! */\n\n");
++
++ int i;
++ for(i=0;i<funcDescCount;i++)
++ {
++ funcDesc[i].ok = 0;
++ char* name = funcDesc[i].name;
++ char* type = funcDesc[i].type;
++ if ((strcmp(type, "void") == 0 || strcmp(type, "GLboolean") == 0 ||
++ strcmp(type, "GLuint") == 0 || strcmp(type, "GLint") == 0 ||
++ strcmp(type, "GLenum") == 0) || strcmp(type, "GLhandleARB") == 0 ||
++ strcmp(type, "GLhalf") == 0 || strcmp(type, "GLhalfNV") == 0)
++ {
++ int pointer_of_unknown_size = 0;
++ int j;
++
++ if (funcDesc[i].nargs == 1 && strcmp(funcDesc[i].args[0], "void") == 0)
++ {
++ funcDesc[i].nargs = 0;
++ }
++ for(j=0;j<funcDesc[i].nargs-1;j++)
++ {
++ if (!is_arg_of_length_depending_on_previous_args(&funcDesc[i], j) &&
++ strstr(funcDesc[i].args[j], "const GLchar") == NULL &&
++ strstr(funcDesc[i].args[j], "[16]") == NULL)
++ {
++ pointer_of_unknown_size |= strstr(funcDesc[i].args[j], "*") != NULL;
++ pointer_of_unknown_size |= strstr(funcDesc[i].args[j], "[") != NULL;
++ }
++ }
++
++ if (pointer_of_unknown_size == 0)
++ {
++ char* signature_type_name;
++ if (is_known_arg_vector(&funcDesc[i], &signature_type_name, NULL))
++ {
++ if (strstr(signature_type_name, "TYPE_OUT"))
++ funcDesc[i].has_out_parameters = 1;
++ }
++ else
++ {
++ if (funcDesc[i].nargs-1 >= 0)
++ {
++ j = funcDesc[i].nargs-1;
++ if (!is_arg_of_length_depending_on_previous_args(&funcDesc[i], j) &&
++ strstr(funcDesc[i].args[j], "const GLchar") == NULL &&
++ strstr(funcDesc[i].args[j], "[16]") == NULL)
++ {
++ pointer_of_unknown_size |= strstr(funcDesc[i].args[j], "*") != NULL;
++ pointer_of_unknown_size |= strstr(funcDesc[i].args[j], "[") != NULL;
++ }
++ }
++ }
++ }
++ if (pointer_of_unknown_size && funcDesc[i].nargs == 1)
++ {
++ if (strstr(funcDesc[i].name, "Matrixf") || strstr(funcDesc[i].name, "Matrixd"))
++ {
++ free(funcDesc[i].args[0]);
++ if (strstr(funcDesc[i].name, "Matrixf"))
++ funcDesc[i].args[0] = strdup("GLfloat m[16]");
++ else
++ funcDesc[i].args[0] = strdup("GLdouble m[16]");
++ pointer_of_unknown_size = 0;
++ }
++ else if (strcmp(funcDesc[i].name, "glPolygonStipple") == 0)
++ {
++ free(funcDesc[i].args[0]);
++ funcDesc[i].args[0] = strdup("const GLubyte mask[128]");
++ pointer_of_unknown_size = 0;
++ }
++ else if (strcmp(funcDesc[i].name, "glGetPolygonStipple") == 0)
++ {
++ free(funcDesc[i].args[0]);
++ funcDesc[i].args[0] = strdup("GLubyte mask[128]");
++ funcDesc[i].has_out_parameters = 1;
++ pointer_of_unknown_size = 0;
++ }
++ }
++ if (just_for_server_side_func(name) || pointer_of_unknown_size == 0)
++ {
++ fprintf(header, " %s_func,\n", funcDesc[i].name);
++ funcDesc[i].ok = 1;
++ if (just_for_server_side_func(name))
++ funcDesc[i].just_for_server_side = 1;
++ for(j=0;j<funcDesc[i].nargs;j++)
++ {
++ if (strstr(get_type_string(funcDesc[i].args[j]), "OUT"))
++ funcDesc[i].has_out_parameters = 1;
++ }
++ }
++ else
++ {
++ fprintf(stderr, "not handled either manually or automatically : %s\n", funcDesc[i].name);
++ }
++ }
++ }
++
++ fprintf(header, " GL_N_CALLS\n};\n");
++
++
++ fprintf(server_stub, "void execute_func(int func_number, arg_t *args, int *pret_int, char *pret_char)\n");
++ fprintf(server_stub, "{\n");
++ fprintf(server_stub, " switch(func_number)\n");
++ fprintf(server_stub, " {\n");
++
++
++ for(i=0;i<funcDescCount;i++)
++ {
++ if (funcDesc[i].ok)
++ {
++ fprintf(header, "static const int %s_signature[] = { %s, %d, ",
++ funcDesc[i].name,
++ get_type_string(funcDesc[i].type),
++ funcDesc[i].has_out_parameters);
++ fprintf(header, "%d", funcDesc[i].nargs);
++ int j;
++ char* signature_type_name;
++ int n_args_to_check = is_known_arg_vector(&funcDesc[i], &signature_type_name, NULL) ? funcDesc[i].nargs - 1 : funcDesc[i].nargs;
++
++ for(j=0;j<n_args_to_check;j++)
++ {
++ if (is_arg_of_length_depending_on_previous_args(&funcDesc[i], j))
++ {
++ fprintf(header, ", %s_OF_LENGTH_DEPENDING_ON_PREVIOUS_ARGS", get_type_string(funcDesc[i].args[j]));
++ }
++ else
++ fprintf(header, ", %s", get_type_string(funcDesc[i].args[j]));
++ }
++
++ if (is_known_arg_vector(&funcDesc[i], &signature_type_name, NULL))
++ {
++ fprintf(header, ", %s", signature_type_name);
++ }
++ fprintf(header, "};\n");
++
++
++ if (funcDesc[i].just_for_server_side == 0)
++ {
++ if (isExt(&funcDesc[i]))
++ fprintf(client_stub, "GLAPI %s APIENTRY EXT_FUNC(%s) (", funcDesc[i].type, funcDesc[i].name);
++ else
++ fprintf(client_stub, "GLAPI %s APIENTRY %s(", funcDesc[i].type, funcDesc[i].name);
++ fprintf_prototype_args(client_stub, &funcDesc[i]);
++ fprintf(client_stub, ")\n");
++ fprintf(client_stub, "{\n");
++ if (strcmp(funcDesc[i].type, "void") != 0)
++ {
++ fprintf(client_stub, " %s ret;\n", funcDesc[i].type);
++ if (isExt(&funcDesc[i]))
++ fprintf(client_stub, " CHECK_PROC_WITH_RET(%s);\n", funcDesc[i].name);
++ }
++ else
++ {
++ if (isExt(&funcDesc[i]))
++ fprintf(client_stub, " CHECK_PROC(%s);\n", funcDesc[i].name);
++ }
++
++ /*
++ fprintf(client_stub, " do_opengl_call(%s_func, %s",
++ funcDesc[i].name, (strcmp(funcDesc[i].type, "void") == 0) ? "NULL" : "&ret");
++ for(j=0;j<funcDesc[i].nargs;j++)
++ {
++ fprintf(client_stub, ", arg_%d", j);
++ }
++ fprintf(client_stub, ");\n");
++ */
++
++ if (funcDesc[i].nargs)
++ {
++ fprintf(client_stub, " long args[] = { ");
++ for(j=0;j<funcDesc[i].nargs;j++)
++ {
++ if (j > 0) fprintf(client_stub, ", ");
++ if (strstr(funcDesc[i].args[j], "*"))
++ {
++ fprintf(client_stub, "POINTER_TO_ARG(arg_%d)", j);
++ }
++ else
++ {
++ const char* symbolic_type = get_type_string(funcDesc[i].args[j]);
++ if (strcmp(symbolic_type, "TYPE_CHAR") == 0)
++ fprintf(client_stub, "CHAR_TO_ARG");
++ else if (strcmp(symbolic_type, "TYPE_UNSIGNED_CHAR") == 0)
++ fprintf(client_stub, "UNSIGNED_CHAR_TO_ARG");
++ else if (strcmp(symbolic_type, "TYPE_SHORT") == 0)
++ fprintf(client_stub, "SHORT_TO_ARG");
++ else if (strcmp(symbolic_type, "TYPE_UNSIGNED_SHORT") == 0)
++ fprintf(client_stub, "UNSIGNED_SHORT_TO_ARG");
++ else if (strcmp(symbolic_type, "TYPE_INT") == 0)
++ fprintf(client_stub, "INT_TO_ARG");
++ else if (strcmp(symbolic_type, "TYPE_UNSIGNED_INT") == 0)
++ fprintf(client_stub, "UNSIGNED_INT_TO_ARG");
++ else if (strcmp(symbolic_type, "TYPE_FLOAT") == 0)
++ fprintf(client_stub, "FLOAT_TO_ARG");
++ else if (strcmp(symbolic_type, "TYPE_16FLOAT") == 0)
++ fprintf(client_stub, "POINTER_TO_ARG");
++ else if (strcmp(symbolic_type, "TYPE_DOUBLE") == 0)
++ fprintf(client_stub, "DOUBLE_TO_ARG");
++ else if ( strcmp(symbolic_type, "TYPE_16DOUBLE") == 0)
++ fprintf(client_stub, "POINTER_TO_ARG");
++ else if ( strcmp(symbolic_type, "TYPE_128UCHAR") == 0 || strcmp(symbolic_type, "TYPE_OUT_128UCHAR") == 0)
++ fprintf(client_stub, "POINTER_TO_ARG");
++ else
++ {
++ fprintf(stderr, "Unknown : %s\n", symbolic_type);
++ assert(0);
++ }
++ fprintf(client_stub, "(arg_%d)", j);
++ }
++ }
++ fprintf(client_stub, "};\n");
++ }
++
++ fprintf(client_stub, " do_opengl_call(%s_func, %s, %s, NULL);\n",
++ funcDesc[i].name, (strcmp(funcDesc[i].type, "void") == 0) ? "NULL" : "&ret",
++ (funcDesc[i].nargs) ? "args" : "NULL");
++
++ if (strcmp(funcDesc[i].type, "void") != 0)
++ {
++ fprintf(client_stub, " return ret;\n");
++ }
++ fprintf(client_stub, "}\n\n");
++ }
++
++ fprintf(server_stub, " case %s_func:\n", funcDesc[i].name);
++ fprintf(server_stub, " {\n");
++
++ if (isExt(&funcDesc[i]))
++ {
++ fprintf(server_stub, " GET_EXT_PTR(%s, %s, (", funcDesc[i].type, funcDesc[i].name);
++ fprintf_prototype_args(server_stub, &funcDesc[i]);
++ fprintf(server_stub, "));\n");
++ }
++
++ fprintf(server_stub, " ");
++
++ if (strcmp(funcDesc[i].type, "void") == 0)
++ ;
++ else if (strcmp(get_type_string(funcDesc[i].type), "TYPE_INT") == 0 ||
++ strcmp(get_type_string(funcDesc[i].type), "TYPE_UNSIGNED_INT") == 0)
++ fprintf(server_stub, "*pret_int = ");
++ else if (strcmp(get_type_string(funcDesc[i].type), "TYPE_CHAR") == 0 ||
++ strcmp(get_type_string(funcDesc[i].type), "TYPE_UNSIGNED_CHAR") == 0)
++ fprintf(server_stub, "*pret_char = ");
++ else
++ {
++ fprintf(stderr, "unknown ret type = %s\n", get_type_string(funcDesc[i].type));
++ exit(-1);
++ }
++ /*if (strstr(funcDesc[i].name, "EXT"))
++ {
++ char* dup = strdup(funcDesc[i].name);
++ *strstr(dup, "EXT") = 0;
++ fprintf(server_stub, "%s(", dup);
++ free(dup);
++ }
++ else*/
++ {
++ if (isExt(&funcDesc[i]))
++ fprintf(server_stub, "ptr_func_%s(", funcDesc[i].name);
++ else
++ fprintf(server_stub, "%s(", funcDesc[i].name);
++ }
++ char* c_type_name;
++ if (is_known_arg_vector(&funcDesc[i], NULL, &c_type_name))
++ {
++ for(j=0;j<funcDesc[i].nargs - 1;j++)
++ {
++ if (j != 0) fprintf(server_stub,", ");
++ print_server_side_argument(server_stub, j, funcDesc[i].args[j]);
++ }
++ if (j != 0) fprintf(server_stub,", ");
++ if (strstr(funcDesc[i].args[funcDesc[i].nargs - 1], "const"))
++ fprintf(server_stub, "(const %s*)args[%d]", c_type_name, j);
++ else
++ fprintf(server_stub, "(%s*)args[%d]", c_type_name, j);
++ }
++ else
++ {
++ for(j=0;j<funcDesc[i].nargs;j++)
++ {
++ if (j != 0) fprintf(server_stub,", ");
++ print_server_side_argument(server_stub, j, funcDesc[i].args[j]);
++ }
++ }
++ fprintf(server_stub, ");\n");
++
++ fprintf(server_stub, " break;\n");
++ fprintf(server_stub, " }\n");
++ }
++ }
++
++ fprintf(server_stub, " default:\n");
++ fprintf(server_stub, " fprintf(stderr, \"unknown=%%d\", func_number);\n");
++ fprintf(server_stub, " break;\n");
++ fprintf(server_stub, " }\n");
++ fprintf(server_stub, "}\n");
++
++ fprintf(header, "#undef MAGIC_MACRO\n");
++ fprintf(header, "#define MAGIC_MACRO(x) COMPOSE(x,_signature)\n");
++ fprintf(header, "static const int* tab_opengl_calls[GL_N_CALLS] =\n");
++ fprintf(header, "{\n");
++ fprintf(header, "#include \"gl_func_perso.h\"\n");
++ for(i=0;i<funcDescCount;i++)
++ {
++ if (funcDesc[i].ok)
++ {
++ fprintf(header, " %s_signature,\n", funcDesc[i].name);
++ }
++ }
++ fprintf(header, "};\n\n");
++
++ fprintf(header, "#undef MAGIC_MACRO\n");
++ fprintf(header, "#define MAGIC_MACRO(x) #x\n");
++ fprintf(header, "static const char* tab_opengl_calls_name[GL_N_CALLS] =\n");
++ fprintf(header, "{\n");
++ fprintf(header, "#include \"gl_func_perso.h\"\n");
++ for(i=0;i<funcDescCount;i++)
++ {
++ if (funcDesc[i].ok)
++ {
++ fprintf(header, " \"%s\",\n", funcDesc[i].name);
++ }
++ }
++ fprintf(header, "};\n\n");
++
++ fclose(header);
++ fclose(server_stub);
++ fclose(client_stub);
++
++ return 0;
++}
+Index: qemu-0.13.0/target-i386/parse_mesa_get_c.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qemu-0.13.0/target-i386/parse_mesa_get_c.c 2011-01-17 16:42:36.000000000 +0800
+@@ -0,0 +1,225 @@
++/*
++ * Parse the "get.c" from mesa source tree to generate "glgetv_cst.h"
++ *
++ * Copyright (c) 2007 Even Rouault
++ *
++ * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
++
++// gcc -Wall parse_mesa_get_c.c -o parse_mesa_get_c -I. && ./parse_mesa_get_c
++
++#include <stdlib.h>
++#include <stdio.h>
++#include <string.h>
++#include <assert.h>
++
++#include "mesa_gl.h"
++#include "mesa_glext.h"
++
++/* #include "mesa_enums.c" */
++
++int gl_lookup_enum_by_name(const char* name)
++{
++ FILE* f;
++ char buffer[256];
++ char template1[256];
++ char template2[256];
++ int i;
++ sprintf(template1, "#define %s\t", name);
++ sprintf(template2, "#define %s ", name);
++ for(i=0;i<2;i++)
++ {
++ if (i == 0)
++ f = fopen("mesa_gl.h", "r");
++ else
++ f = fopen("mesa_glext.h", "r");
++ while(fgets(buffer, 256, f))
++ {
++ if (strstr(buffer, template1) || strstr(buffer, template2))
++ {
++ char* c = strstr(buffer, "0x");
++ assert(c);
++ int ret;
++ ret = strtol(c, NULL, 16);
++ return ret;
++ }
++ }
++ fclose(f);
++ }
++
++ return -1;
++}
++
++typedef struct
++{
++ int value;
++ char* name;
++ int nb_elts;
++} Token;
++
++int compare_func(Token* a, Token* b)
++{
++ return a->value - b->value;
++}
++
++typedef struct
++{
++ int i;
++ char* str;
++} Cpl;
++#define CPL(x) {x, #x}
++
++Cpl constantsOneVal[] =
++{
++ CPL(GL_MAX_GENERAL_COMBINERS_NV),
++ CPL(GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT),
++ CPL(GL_MAX_VERTEX_SHADER_VARIANTS_EXT),
++ CPL(GL_MAX_VERTEX_SHADER_INVARIANTS_EXT),
++ CPL(GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT),
++ CPL(GL_MAX_VERTEX_SHADER_LOCALS_EXT),
++ CPL(GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT),
++ CPL(GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT),
++ CPL(GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT),
++ CPL(GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT),
++ CPL(GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT),
++};
++#define NB_CONSTANTS_ONE_VAL 11
++
++int main(int argc, char* argv[])
++{
++ FILE* f = fopen("mesa_get.c", "r");
++ char buffer[256];
++ int state = 0;
++ char name[256];
++ int count = 0;
++ char template[256];
++ Token tokens[1000];
++ int ntoken = 0;
++ int i;
++ FILE* outf = fopen("glgetv_cst.h", "w");
++
++ fprintf(outf, "/* This is a generated file. Do not edit !*/\n");
++ fprintf(outf, "typedef struct {\n");
++ fprintf(outf, " GLuint count;\n");
++ fprintf(outf, " GLenum token;\n");
++ fprintf(outf, " const char *name;\n");
++ fprintf(outf, "} GlGetConstant ;\n");
++ fprintf(outf, "static const GlGetConstant gl_get_constants[] = {\n");
++
++ while(fgets(buffer, 256, f))
++ {
++ if (strstr(buffer, "_mesa_GetBooleanv"))
++ {
++ state = 1;
++ }
++ else if (state == 1)
++ {
++ if (strstr(buffer, "_mesa_GetFloatv"))
++ {
++ break;
++ }
++ else if (strstr(buffer, "case GL_"))
++ {
++ strcpy(name, strstr(buffer, "case GL_") + 5);
++ *strstr(name, ":") = 0;
++ count = 0;
++ strcpy(template, "params[0]");
++ }
++ else if (strstr(buffer, template))
++ {
++ count ++;
++ sprintf(template, "params[%d]", count);
++ }
++ else if (strstr(buffer, "break"))
++ {
++ if (count > 0)
++ {
++ int gl_lookup = gl_lookup_enum_by_name(name);
++ /*
++ int mesa_lookup = _mesa_lookup_enum_by_name(name);
++ if (mesa_lookup != -1)
++ {
++ if(mesa_lookup != gl_lookup)
++ {
++ fprintf(stderr, "wrong : %s %d %d !\n", name, mesa_lookup, gl_lookup);
++ exit(-1);
++ }
++ }*/
++ if (gl_lookup == -1)
++ {
++ fprintf(stderr, "not found in includes : %s\n", name);
++ //fprintf(outf, "/* { %d, unknown value, \"%s\" },*/\n", count, name);
++ }
++ else
++ {
++ //fprintf(outf, " { %d, 0x%04x, \"%s\" },\n", count, gl_lookup, name);
++ tokens[ntoken].value = gl_lookup;
++ tokens[ntoken].nb_elts = count;
++ tokens[ntoken].name = strdup(name);
++ ntoken++;
++ }
++ /*fprintf(outf, "#ifdef %s\n", name);
++ fprintf(outf, " { %d, MAKE_TOKEN_NAME(%s) },\n", count, name);
++ fprintf(outf, "#endif\n");*/
++ }
++ else
++ fprintf(stderr, "not recognized : %s\n", name);
++ }
++ }
++ }
++
++ for(i=0;i<NB_CONSTANTS_ONE_VAL;i++)
++ {
++ tokens[ntoken].value = constantsOneVal[i].i;
++ tokens[ntoken].nb_elts = 1;
++ tokens[ntoken].name = strdup(constantsOneVal[i].str);
++ ntoken++;
++ }
++
++ tokens[ntoken].value = GL_SPRITE_MODE_SGIX;
++ tokens[ntoken].nb_elts = 1;
++ tokens[ntoken].name = strdup("GL_SPRITE_MODE_SGIX");
++ ntoken++;
++
++ tokens[ntoken].value = GL_SPRITE_AXIS_SGIX ;
++ tokens[ntoken].nb_elts = 3;
++ tokens[ntoken].name = strdup("GL_SPRITE_AXIS_SGIX ");
++ ntoken++;
++
++ tokens[ntoken].value = GL_SPRITE_TRANSLATION_SGIX;
++ tokens[ntoken].nb_elts = 3;
++ tokens[ntoken].name = strdup("GL_SPRITE_TRANSLATION_SGIX");
++ ntoken++;
++
++ tokens[ntoken].value = GL_REFERENCE_PLANE_EQUATION_SGIX;
++ tokens[ntoken].nb_elts = 4;
++ tokens[ntoken].name = strdup("GL_REFERENCE_PLANE_EQUATION_SGIX");
++ ntoken++;
++
++
++ qsort(tokens, ntoken, sizeof(Token), compare_func);
++ for(i=0;i<ntoken;i++)
++ {
++ fprintf(outf, " { %d, 0x%04x, \"%s\" },\n", tokens[i].nb_elts, tokens[i].value, tokens[i].name);
++ }
++ fprintf(outf, "};\n");
++ fclose(f);
++ fclose(outf);
++ return 0;
++}
+Index: qemu-0.13.0/target-i386/translate.c
+===================================================================
+--- qemu-0.13.0.orig/target-i386/translate.c 2011-01-17 16:41:59.000000000 +0800
++++ qemu-0.13.0/target-i386/translate.c 2011-01-17 16:42:36.000000000 +0800
+@@ -745,6 +745,8 @@
+ int state_saved;
+ target_ulong next_eip;
+
++ return;
++
+ state_saved = 0;
+ if (s->pe && (s->cpl > s->iopl || s->vm86)) {
+ if (s->cc_op != CC_OP_DYNAMIC)
+@@ -2672,11 +2674,18 @@
+ s->is_jmp = DISAS_TB_JUMP;
+ }
+
++int enable_gl = 0;
++
+ /* an interrupt is different from an exception because of the
+ privilege checks */
+ static void gen_interrupt(DisasContext *s, int intno,
+ target_ulong cur_eip, target_ulong next_eip)
+ {
++ if (enable_gl && intno == 0x99) {
++ gen_helper_opengl();
++ return;
++ }
++
+ if (s->cc_op != CC_OP_DYNAMIC)
+ gen_op_set_cc_op(s->cc_op);
+ gen_jmp_im(cur_eip);
+Index: qemu-0.13.0/vl.c
+===================================================================
+--- qemu-0.13.0.orig/vl.c 2011-01-17 16:41:59.000000000 +0800
++++ qemu-0.13.0/vl.c 2011-01-17 16:42:36.000000000 +0800
+@@ -217,12 +217,14 @@
+ int nb_option_roms;
+ int semihosting_enabled = 0;
+ int old_param = 0;
++int force_pointer = 0;
+ const char *qemu_name;
+ int alt_grab = 0;
+ int ctrl_grab = 0;
+ unsigned int nb_prom_envs = 0;
+ const char *prom_envs[MAX_PROM_ENVS];
+ int boot_menu;
++extern int enable_gl;
+
+ int nb_numa_nodes;
+ uint64_t node_mem[MAX_NODES];
+@@ -1433,6 +1435,8 @@
+ } else if (strstart(p, "xenfb", &opts)) {
+ vga_interface_type = VGA_XENFB;
+ } else if (!strstart(p, "none", &opts)) {
++ }
++ else {
+ invalid_vga:
+ fprintf(stderr, "Unknown vga type: %s\n", p);
+ exit(1);
+@@ -2535,6 +2539,9 @@
+ case QEMU_OPTION_old_param:
+ old_param = 1;
+ break;
++ case QEMU_OPTION_force_pointer:
++ force_pointer = 1;
++ break;
+ case QEMU_OPTION_clock:
+ configure_alarms(optarg);
+ break;
+@@ -2548,6 +2555,12 @@
+ }
+ configure_rtc(opts);
+ break;
++#ifdef TARGET_OPENGL_OK
++ case QEMU_OPTION_enable_gl:
++ fprintf(stderr, "Enabling opengl\n");
++ enable_gl = 1;
++ break;
++#endif
+ case QEMU_OPTION_tb_size:
+ tb_size = strtol(optarg, NULL, 0);
+ if (tb_size < 0)
+@@ -2887,6 +2900,14 @@
+ if (foreach_device_config(DEV_USB, usb_parse) < 0)
+ exit(1);
+ }
++#ifdef TARGET_OPENGL_OK
++ if (enable_gl) {
++ /* Use second serial port */
++ int opengl_serial = 1;
++
++ add_device_config(DEV_SERIAL, "opengl");
++ }
++#endif
+
+ /* init generic devices */
+ if (qemu_opts_foreach(&qemu_device_opts, device_init_func, NULL, 1) != 0)
+Index: qemu-0.13.0/qemu-options.hx
+===================================================================
+--- qemu-0.13.0.orig/qemu-options.hx 2011-01-17 16:41:59.000000000 +0800
++++ qemu-0.13.0/qemu-options.hx 2011-01-17 16:44:27.000000000 +0800
+@@ -2024,6 +2024,18 @@
+ re-inject them.
+ ETEXI
+
++DEF("enable-gl", 0, QEMU_OPTION_enable_gl, \
++ "-enable-gl\n", QEMU_ARCH_I386)
++STEXI
++@item -enable-gl
++ETEXI
++
++DEF("force-pointer", 0, QEMU_OPTION_force_pointer, \
++ "-force-pointer\n", QEMU_ARCH_ALL)
++STEXI
++@item -force-pointer
++ETEXI
++
+ DEF("icount", HAS_ARG, QEMU_OPTION_icount, \
+ "-icount [N|auto]\n" \
+ " enable virtual instruction counter with 2^N clock ticks per\n" \
+Index: qemu-0.13.0/ui/sdl.c
+===================================================================
+--- qemu-0.13.0.orig/ui/sdl.c 2011-01-17 16:41:59.000000000 +0800
++++ qemu-0.13.0/ui/sdl.c 2011-01-17 16:42:36.000000000 +0800
+@@ -59,6 +59,8 @@
+ static int scaling_active = 0;
+ static Notifier mouse_mode_notifier;
+
++extern void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window);
++
+ static void sdl_update(DisplayState *ds, int x, int y, int w, int h)
+ {
+ // printf("updating x=%d y=%d w=%d h=%d\n", x, y, w, h);
+@@ -121,12 +123,22 @@
+
+ static void sdl_resize(DisplayState *ds)
+ {
+- if (!allocator) {
++ SDL_SysWMinfo info;
++ static Display *dpy;
++
++ if (!allocator) {
+ if (!scaling_active)
+ do_sdl_resize(ds_get_width(ds), ds_get_height(ds), 0);
+ else if (real_screen->format->BitsPerPixel != ds_get_bits_per_pixel(ds))
+ do_sdl_resize(real_screen->w, real_screen->h, ds_get_bits_per_pixel(ds));
+ sdl_setdata(ds);
++
++ SDL_GetWMInfo(&info);
++ if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display &&
++ (!dpy || dpy == info.info.x11.display)) {
++ dpy = info.info.x11.display;
++ opengl_exec_set_parent_window(dpy, info.info.x11.window);
++ }
+ } else {
+ if (guest_screen != NULL) {
+ SDL_FreeSurface(guest_screen);
+@@ -455,7 +467,7 @@
+
+ if (!kbd_mouse_is_absolute()) {
+ SDL_ShowCursor(1);
+- if (guest_cursor &&
++ if (guest_cursor && !force_pointer &&
+ (gui_grab || kbd_mouse_is_absolute() || absolute_enabled))
+ SDL_SetCursor(guest_sprite);
+ else
+@@ -466,7 +478,8 @@
+ static void sdl_grab_start(void)
+ {
+ if (guest_cursor) {
+- SDL_SetCursor(guest_sprite);
++ if (!force_pointer)
++ SDL_SetCursor(guest_sprite);
+ if (!kbd_mouse_is_absolute() && !absolute_enabled)
+ SDL_WarpMouse(guest_x, guest_y);
+ } else
+@@ -768,7 +781,8 @@
+ if (!guest_cursor)
+ sdl_show_cursor();
+ if (gui_grab || kbd_mouse_is_absolute() || absolute_enabled) {
+- SDL_SetCursor(guest_sprite);
++ if (!force_pointer)
++ SDL_SetCursor(guest_sprite);
+ if (!kbd_mouse_is_absolute() && !absolute_enabled)
+ SDL_WarpMouse(x, y);
+ }
+@@ -796,7 +810,7 @@
+ qemu_free(image);
+ qemu_free(mask);
+
+- if (guest_cursor &&
++ if (guest_cursor && !force_pointer &&
+ (gui_grab || kbd_mouse_is_absolute() || absolute_enabled))
+ SDL_SetCursor(guest_sprite);
+ }
+@@ -813,6 +827,7 @@
+ int flags;
+ uint8_t data = 0;
+ DisplayAllocator *da;
++ SDL_SysWMinfo info;
+ const SDL_VideoInfo *vi;
+
+ #if defined(__APPLE__)
+@@ -842,6 +857,12 @@
+ vi = SDL_GetVideoInfo();
+ host_format = *(vi->vfmt);
+
++ SDL_GetWMInfo(&info);
++ if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display)
++ opengl_exec_set_parent_window(info.info.x11.display,
++ RootWindow(info.info.x11.display,
++ DefaultScreen(info.info.x11.display)));
++
+ dcl = qemu_mallocz(sizeof(DisplayChangeListener));
+ dcl->dpy_update = sdl_update;
+ dcl->dpy_resize = sdl_resize;
+@@ -876,4 +897,9 @@
+ gui_fullscreen_initial_grab = 1;
+ sdl_grab_start();
+ }
++
++ SDL_GetWMInfo(&info);
++ if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display)
++ opengl_exec_set_parent_window(info.info.x11.display,
++ info.info.x11.window);
+ }
diff --git a/meta/recipes-devtools/qemu/qemu-0.13.0/qemu-ppc-hack.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/qemu-ppc-hack.patch
new file mode 100644
index 0000000000..6f45788183
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/qemu-ppc-hack.patch
@@ -0,0 +1,108 @@
+Quick fixes to get the ppc system model to boot a 603e based
+kernel.
+
+Index: qemu-0.13.0/hw/m48t59.c
+===================================================================
+--- qemu-0.13.0.orig/hw/m48t59.c 2010-10-16 04:56:09.000000000 +0800
++++ qemu-0.13.0/hw/m48t59.c 2011-01-17 16:40:09.000000000 +0800
+@@ -50,6 +50,7 @@
+ */
+
+ struct M48t59State {
++ SysBusDevice busdev;
+ /* Model parameters */
+ uint32_t type; // 2 = m48t02, 8 = m48t08, 59 = m48t59
+ /* Hardware parameters */
+@@ -74,11 +75,6 @@
+ M48t59State state;
+ } M48t59ISAState;
+
+-typedef struct M48t59SysBusState {
+- SysBusDevice busdev;
+- M48t59State state;
+-} M48t59SysBusState;
+-
+ /* Fake timer functions */
+
+ /* Alarm management */
+@@ -629,8 +625,7 @@
+
+ static void m48t59_reset_sysbus(DeviceState *d)
+ {
+- M48t59SysBusState *sys = container_of(d, M48t59SysBusState, busdev.qdev);
+- M48t59State *NVRAM = &sys->state;
++ M48t59State *NVRAM = container_of(d, M48t59State, busdev.qdev);
+
+ m48t59_reset_common(NVRAM);
+ }
+@@ -641,7 +636,7 @@
+ {
+ DeviceState *dev;
+ SysBusDevice *s;
+- M48t59SysBusState *d;
++ M48t59State *d;
+
+ dev = qdev_create(NULL, "m48t59");
+ qdev_prop_set_uint32(dev, "type", type);
+@@ -658,9 +653,9 @@
+ sysbus_mmio_map(s, 0, mem_base);
+ }
+
+- d = FROM_SYSBUS(M48t59SysBusState, s);
++ d = FROM_SYSBUS(M48t59State, s);
+
+- return &d->state;
++ return d;
+ }
+
+ M48t59State *m48t59_init_isa(uint32_t io_base, uint16_t size, int type)
+@@ -710,8 +705,7 @@
+
+ static int m48t59_init1(SysBusDevice *dev)
+ {
+- M48t59SysBusState *d = FROM_SYSBUS(M48t59SysBusState, dev);
+- M48t59State *s = &d->state;
++ M48t59State *s = FROM_SYSBUS(M48t59State, dev);
+ int mem_index;
+
+ sysbus_init_irq(dev, &s->IRQ);
+@@ -740,12 +734,12 @@
+ static SysBusDeviceInfo m48t59_info = {
+ .init = m48t59_init1,
+ .qdev.name = "m48t59",
+- .qdev.size = sizeof(M48t59SysBusState),
++ .qdev.size = sizeof(M48t59State),
+ .qdev.reset = m48t59_reset_sysbus,
+ .qdev.props = (Property[]) {
+- DEFINE_PROP_UINT32("size", M48t59SysBusState, state.size, -1),
+- DEFINE_PROP_UINT32("type", M48t59SysBusState, state.type, -1),
+- DEFINE_PROP_HEX32( "io_base", M48t59SysBusState, state.io_base, 0),
++ DEFINE_PROP_UINT32("size", M48t59State, size, -1),
++ DEFINE_PROP_UINT32("type", M48t59State, type, -1),
++ DEFINE_PROP_HEX32( "io_base", M48t59State, io_base, 0),
+ DEFINE_PROP_END_OF_LIST(),
+ }
+ };
+Index: qemu-0.13.0/hw/ppc_prep.c
+===================================================================
+--- qemu-0.13.0.orig/hw/ppc_prep.c 2010-10-16 04:56:09.000000000 +0800
++++ qemu-0.13.0/hw/ppc_prep.c 2011-01-15 18:29:25.000000000 +0800
+@@ -74,7 +74,7 @@
+ /* Constants for devices init */
+ static const int ide_iobase[2] = { 0x1f0, 0x170 };
+ static const int ide_iobase2[2] = { 0x3f6, 0x376 };
+-static const int ide_irq[2] = { 13, 13 };
++static const int ide_irq[2] = { 13, 14 };
+
+ #define NE2000_NB_MAX 6
+
+@@ -631,9 +631,6 @@
+ if (filename) {
+ qemu_free(filename);
+ }
+- if (env->nip < 0xFFF80000 && bios_size < 0x00100000) {
+- hw_error("PowerPC 601 / 620 / 970 need a 1MB BIOS\n");
+- }
+
+ if (linux_boot) {
+ kernel_base = KERNEL_LOAD_ADDR;
diff --git a/meta/recipes-devtools/qemu/qemu-0.13.0/qemu-vmware-vga-depth.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/qemu-vmware-vga-depth.patch
new file mode 100644
index 0000000000..5bdbaf3937
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/qemu-vmware-vga-depth.patch
@@ -0,0 +1,115 @@
+# fix VMware VGA driver depth calculation error, which may cause segmentation fault
+#
+# ktian1, 06/29/2010
+Index: qemu-0.13.0/console.h
+===================================================================
+--- qemu-0.13.0.orig/console.h 2011-01-17 16:41:58.000000000 +0800
++++ qemu-0.13.0/console.h 2011-01-17 16:48:00.000000000 +0800
+@@ -171,6 +171,12 @@
+ void (*free_displaysurface)(DisplaySurface *surface);
+ };
+
++struct DisplayPostCallback {
++ void (*postcall) (void *);
++ void *parm;
++ struct DisplayPostCallback *next;
++};
++
+ struct DisplayState {
+ struct DisplaySurface *surface;
+ void *opaque;
+@@ -178,6 +184,7 @@
+
+ struct DisplayAllocator* allocator;
+ struct DisplayChangeListener* listeners;
++ struct DisplayPostCallback* postcalls;
+
+ void (*mouse_set)(int x, int y, int on);
+ void (*cursor_define)(QEMUCursor *cursor);
+@@ -229,6 +236,12 @@
+ ds->listeners = dcl;
+ }
+
++static inline void register_displaypostcallback(DisplayState *ds, DisplayPostCallback *dpc)
++{
++ dpc->next = ds->postcalls;
++ ds->postcalls = dpc;
++}
++
+ static inline void dpy_update(DisplayState *s, int x, int y, int w, int h)
+ {
+ struct DisplayChangeListener *dcl = s->listeners;
+Index: qemu-0.13.0/hw/vmware_vga.c
+===================================================================
+--- qemu-0.13.0.orig/hw/vmware_vga.c 2011-01-17 16:42:36.000000000 +0800
++++ qemu-0.13.0/hw/vmware_vga.c 2011-01-17 16:48:00.000000000 +0800
+@@ -957,8 +957,9 @@
+ }
+ }
+
+-static void vmsvga_reset(struct vmsvga_state_s *s)
++static void vmsvga_reset(void *parm)
+ {
++ struct vmsvga_state_s *s = (struct vmsvga_state_s *)parm;
+ s->index = 0;
+ s->enable = 0;
+ s->config = 0;
+@@ -1163,6 +1164,8 @@
+
+ static void vmsvga_init(struct vmsvga_state_s *s, int vga_ram_size)
+ {
++ DisplayPostCallback *dpc;
++
+ s->scratch_size = SVGA_SCRATCH_SIZE;
+ s->scratch = qemu_malloc(s->scratch_size * 4);
+
+@@ -1190,7 +1193,10 @@
+
+ rom_add_vga(VGABIOS_FILENAME);
+
+- vmsvga_reset(s);
++ dpc = qemu_mallocz(sizeof(DisplayPostCallback));
++ dpc->postcall = vmsvga_reset;
++ dpc->parm = s;
++ register_displaypostcallback(s->vga.ds, dpc);
+ }
+
+ static void pci_vmsvga_map_ioport(PCIDevice *pci_dev, int region_num,
+Index: qemu-0.13.0/qemu-common.h
+===================================================================
+--- qemu-0.13.0.orig/qemu-common.h 2011-01-17 16:41:58.000000000 +0800
++++ qemu-0.13.0/qemu-common.h 2011-01-17 16:48:00.000000000 +0800
+@@ -205,6 +205,7 @@
+ typedef struct DisplayChangeListener DisplayChangeListener;
+ typedef struct DisplaySurface DisplaySurface;
+ typedef struct DisplayAllocator DisplayAllocator;
++typedef struct DisplayPostCallback DisplayPostCallback;
+ typedef struct PixelFormat PixelFormat;
+ typedef struct TextConsole TextConsole;
+ typedef TextConsole QEMUConsole;
+Index: qemu-0.13.0/vl.c
+===================================================================
+--- qemu-0.13.0.orig/vl.c 2011-01-17 16:42:36.000000000 +0800
++++ qemu-0.13.0/vl.c 2011-01-17 16:48:00.000000000 +0800
+@@ -1814,6 +1814,7 @@
+ char boot_devices[33] = "cad"; /* default to HD->floppy->CD-ROM */
+ DisplayState *ds;
+ DisplayChangeListener *dcl;
++ DisplayPostCallback *dpc;
+ int cyls, heads, secs, translation;
+ QemuOpts *hda_opts = NULL, *opts;
+ int optind;
+@@ -2960,6 +2961,13 @@
+ }
+ dpy_resize(ds);
+
++ dpc = ds->postcalls;
++ while (dpc != NULL) {
++ if (dpc->postcall != NULL)
++ dpc->postcall(dpc->parm);
++ dpc = dpc->next;
++ }
++
+ dcl = ds->listeners;
+ while (dcl != NULL) {
+ if (dcl->dpy_refresh != NULL) {
diff --git a/meta/recipes-devtools/qemu/qemu-0.12.4/qemugl-allow-glxcontext-release.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/qemugl-allow-glxcontext-release.patch
index 43acc361a0..43acc361a0 100644
--- a/meta/recipes-devtools/qemu/qemu-0.12.4/qemugl-allow-glxcontext-release.patch
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/qemugl-allow-glxcontext-release.patch
diff --git a/meta/recipes-devtools/qemu/qemu-0.13.0/vmware-vga-fifo-rewind.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/vmware-vga-fifo-rewind.patch
new file mode 100644
index 0000000000..867e54ba11
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/vmware-vga-fifo-rewind.patch
@@ -0,0 +1,198 @@
+commit 4dedc07ffbbc66002e0fd2b97d5516fe6aca5eea
+Author: Andrzej Zaborowski <balrog@zabor.org>
+Date: Fri Sep 10 02:23:31 2010 +0200
+
+ vmware_vga: Add checks to deal with non-atomic fifo writes.
+
+ Janne Huttunen noticed that the FIFO end pointer is updated by the
+ guest after writing each word to the FIFO, at least the X.org driver
+ which is open does this. This means that there's no way for the
+ host to know if the guest is in the middle a write operation. Qemu
+ thus needs to read the beginning of the command up to when it's able
+ to tell how many words are expected for the given command. It will
+ abort reading and rewind the FIFO if there aren't enough words yet,
+ this should be relatively rare but it is suspected to have been the
+ cause of the occasional FIFO overrun that killed the display.
+
+Index: qemu-0.13.0/hw/vmware_vga.c
+===================================================================
+--- qemu-0.13.0.orig/hw/vmware_vga.c 2011-01-15 18:06:06.000000000 +0800
++++ qemu-0.13.0/hw/vmware_vga.c 2011-01-15 18:17:04.000000000 +0800
+@@ -521,27 +521,37 @@
+
+ static uint32_t last_cmd;
+
+-static inline int vmsvga_fifo_empty(struct vmsvga_state_s *s)
++static inline int vmsvga_fifo_length(struct vmsvga_state_s *s)
+ {
++ int num;
+ if (!s->config || !s->enable)
+- return 1;
+- return (s->cmd->next_cmd == s->cmd->stop);
++ return 0;
++ num = CMD(next_cmd) - CMD(stop);
++ if (num < 0)
++ num += CMD(max) - CMD(min);
++ return num >> 2;
+ }
+
+ static inline uint32_t vmsvga_fifo_read_raw(struct vmsvga_state_s *s)
+ {
+- int offset = CMD(stop);
++ uint32_t cmd = s->fifo[CMD(stop) >> 2];
+
++ /* If parameter is not available in FIFO, return 0 rather than random
++ * value. Also update the stop as missing parameter will be inserted
++ * soonly, else it will be treated as new command next time.
++ * With rewinding in vmsvga_fifo_run, this unlikely happen.
++ */
+ if (unlikely(s->cmd->next_cmd == s->cmd->stop)) {
+ fprintf(stderr, "%s: FIFO empty during CMD %i\n",
+ __FUNCTION__, last_cmd);
+- return 0x00000000;
++ cmd = 0;
+ }
+
+- s->cmd->stop = cpu_to_le32(offset + 4);
+- if (offset + 4 >= CMD(max))
++ s->cmd->stop = cpu_to_le32(CMD(stop) + 4);
++ if (CMD(stop) >= CMD(max))
+ s->cmd->stop = s->cmd->min;
+- return s->fifo[offset >> 2];
++
++ return cmd;
+ }
+
+ static inline uint32_t vmsvga_fifo_read(struct vmsvga_state_s *s)
+@@ -552,13 +562,23 @@
+ static void vmsvga_fifo_run(struct vmsvga_state_s *s)
+ {
+ uint32_t colour;
+- int args = 0;
++ int args, len;
+ int x, y, dx, dy, width, height;
+ struct vmsvga_cursor_definition_s cursor;
+- while (!vmsvga_fifo_empty(s))
++ uint32_t cmd_start;
++
++ len = vmsvga_fifo_length(s);
++ while (len > 0) {
++ /* May need to go back to the start of the command if incomplete */
++ cmd_start = s->cmd->stop;
++
+ switch (last_cmd = vmsvga_fifo_read(s)) {
+ case SVGA_CMD_UPDATE:
+ case SVGA_CMD_UPDATE_VERBOSE:
++ len -= 5;
++ if (len <0)
++ goto rewind;
++
+ x = vmsvga_fifo_read(s);
+ y = vmsvga_fifo_read(s);
+ width = vmsvga_fifo_read(s);
+@@ -567,6 +587,10 @@
+ break;
+
+ case SVGA_CMD_RECT_FILL:
++ len -= 6;
++ if (len < 0)
++ goto rewind;
++
+ colour = vmsvga_fifo_read(s);
+ x = vmsvga_fifo_read(s);
+ y = vmsvga_fifo_read(s);
+@@ -576,10 +600,15 @@
+ vmsvga_fill_rect(s, colour, x, y, width, height);
+ break;
+ #else
++ args = 0;
+ goto badcmd;
+ #endif
+
+ case SVGA_CMD_RECT_COPY:
++ len -= 7;
++ if (len < 0)
++ goto rewind;
++
+ x = vmsvga_fifo_read(s);
+ y = vmsvga_fifo_read(s);
+ dx = vmsvga_fifo_read(s);
+@@ -590,10 +619,15 @@
+ vmsvga_copy_rect(s, x, y, dx, dy, width, height);
+ break;
+ #else
++ args = 0;
+ goto badcmd;
+ #endif
+
+ case SVGA_CMD_DEFINE_CURSOR:
++ len -= 8;
++ if (len < 0)
++ goto rewind;
++
+ cursor.id = vmsvga_fifo_read(s);
+ cursor.hot_x = vmsvga_fifo_read(s);
+ cursor.hot_y = vmsvga_fifo_read(s);
+@@ -602,11 +636,14 @@
+ vmsvga_fifo_read(s);
+ cursor.bpp = vmsvga_fifo_read(s);
+
++ args = SVGA_BITMAP_SIZE(x, y) + SVGA_PIXMAP_SIZE(x, y, cursor.bpp);
+ if (SVGA_BITMAP_SIZE(x, y) > sizeof cursor.mask ||
+- SVGA_PIXMAP_SIZE(x, y, cursor.bpp) > sizeof cursor.image) {
+- args = SVGA_BITMAP_SIZE(x, y) + SVGA_PIXMAP_SIZE(x, y, cursor.bpp);
++ SVGA_PIXMAP_SIZE(x, y, cursor.bpp) > sizeof cursor.image)
+ goto badcmd;
+- }
++
++ len -= args;
++ if (len < 0)
++ goto rewind;
+
+ for (args = 0; args < SVGA_BITMAP_SIZE(x, y); args ++)
+ cursor.mask[args] = vmsvga_fifo_read_raw(s);
+@@ -625,6 +662,10 @@
+ * for so we can avoid FIFO desync if driver uses them illegally.
+ */
+ case SVGA_CMD_DEFINE_ALPHA_CURSOR:
++ len -= 6;
++ if (len < 0)
++ goto rewind;
++
+ vmsvga_fifo_read(s);
+ vmsvga_fifo_read(s);
+ vmsvga_fifo_read(s);
+@@ -639,6 +680,10 @@
+ args = 7;
+ goto badcmd;
+ case SVGA_CMD_DRAW_GLYPH_CLIPPED:
++ len -= 4;
++ if (len < 0)
++ goto rewind;
++
+ vmsvga_fifo_read(s);
+ vmsvga_fifo_read(s);
+ args = 7 + (vmsvga_fifo_read(s) >> 2);
+@@ -659,14 +704,22 @@
+ break; /* Nop */
+
+ default:
++ args = 0;
+ badcmd:
++ len -= args;
++ if (len < 0)
++ goto rewind;
+ while (args --)
+ vmsvga_fifo_read(s);
+ printf("%s: Unknown command 0x%02x in SVGA command FIFO\n",
+ __FUNCTION__, last_cmd);
+ break;
++ rewind:
++ s->cmd->stop = cmd_start;
++ break;
+ }
+
++ }
+ s->syncing = 0;
+ }
+
diff --git a/meta/recipes-devtools/qemu/qemu-0.13.0/wacom-tablet-fix.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/wacom-tablet-fix.patch
new file mode 100644
index 0000000000..b8210db2b1
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/wacom-tablet-fix.patch
@@ -0,0 +1,65 @@
+qemu 0.13.0 cause seg fault in qemu_remove_mouse_event_handler, this patch from
+upstream can fix it.
+
+Should remove it in next upgrade if necessary.
+
+Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
+
+commit b2d4d8329963b13c5cebe5944dcc99f0e9d1b5c7
+Author: Gerd Hoffmann <kraxel@redhat.com>
+Date: Fri Oct 8 12:30:14 2010 +0200
+
+ wacom tablet: activate event handlers.
+
+ Add qemu_activate_mouse_event_handler() calls to the usb wavom tablet so
+ it actually receives events. Also make sure we only remove the handler
+ if we registered it before.
+
+ Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
+ Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
+
+Index: qemu-0.13.0/hw/usb-wacom.c
+===================================================================
+--- qemu-0.13.0.orig/hw/usb-wacom.c 2010-10-16 04:56:09.000000000 +0800
++++ qemu-0.13.0/hw/usb-wacom.c 2011-01-18 16:58:44.000000000 +0800
+@@ -160,6 +160,7 @@
+ if (!s->mouse_grabbed) {
+ s->eh_entry = qemu_add_mouse_event_handler(usb_mouse_event, s, 0,
+ "QEMU PenPartner tablet");
++ qemu_activate_mouse_event_handler(s->eh_entry);
+ s->mouse_grabbed = 1;
+ }
+
+@@ -197,6 +198,7 @@
+ if (!s->mouse_grabbed) {
+ s->eh_entry = qemu_add_mouse_event_handler(usb_wacom_event, s, 1,
+ "QEMU PenPartner tablet");
++ qemu_activate_mouse_event_handler(s->eh_entry);
+ s->mouse_grabbed = 1;
+ }
+
+@@ -334,8 +336,10 @@
+ ret = 0;
+ break;
+ case WACOM_SET_REPORT:
+- qemu_remove_mouse_event_handler(s->eh_entry);
+- s->mouse_grabbed = 0;
++ if (s->mouse_grabbed) {
++ qemu_remove_mouse_event_handler(s->eh_entry);
++ s->mouse_grabbed = 0;
++ }
+ s->mode = data[0];
+ ret = 0;
+ break;
+@@ -397,7 +401,10 @@
+ {
+ USBWacomState *s = (USBWacomState *) dev;
+
+- qemu_remove_mouse_event_handler(s->eh_entry);
++ if (s->mouse_grabbed) {
++ qemu_remove_mouse_event_handler(s->eh_entry);
++ s->mouse_grabbed = 0;
++ }
+ }
+
+ static int usb_wacom_initfn(USBDevice *dev)
diff --git a/meta/recipes-devtools/qemu/qemu-0.13.0/workaround_bad_futex_headers.patch b/meta/recipes-devtools/qemu/qemu-0.13.0/workaround_bad_futex_headers.patch
new file mode 100644
index 0000000000..a08e2d9acd
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-0.13.0/workaround_bad_futex_headers.patch
@@ -0,0 +1,24 @@
+---
+ linux-user/syscall.c | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+Index: qemu-0.13.0/linux-user/syscall.c
+===================================================================
+--- qemu-0.13.0.orig/linux-user/syscall.c 2011-01-17 16:52:18.000000000 +0800
++++ qemu-0.13.0/linux-user/syscall.c 2011-01-17 16:52:20.000000000 +0800
+@@ -99,6 +99,15 @@
+ #define CLONE_NPTL_FLAGS2 0
+ #endif
+
++#define FUTEX_WAIT 0
++#define FUTEX_WAKE 1
++#define FUTEX_FD 2
++#define FUTEX_REQUEUE 3
++#define FUTEX_CMP_REQUEUE 4
++#define FUTEX_WAKE_OP 5
++#define FUTEX_LOCK_PI 6
++#define FUTEX_UNLOCK_PI 7
++
+ //#define DEBUG
+
+ //#include <linux/msdos_fs.h>
diff --git a/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb b/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb
index 19fb6f4ff7..23771acf2b 100644
--- a/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb
+++ b/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb
@@ -1,7 +1,9 @@
DESCRIPTION = "Qemu helper utilities from Poky"
LICENSE = "GPLv2"
-RDEPENDS = "qemu-native"
-PR = "r0"
+RDEPENDS_${PN} = "qemu-native"
+PR = "r1"
+
+LIC_FILES_CHKSUM = "file://${WORKDIR}/tunctl.c;endline=4;md5=ff3a09996bc5fff6bc5d4e0b4c28f999"
FILESPATH = "${FILE_DIRNAME}/qemu-helper"
diff --git a/meta/recipes-devtools/qemu/qemu-helper-nativesdk_1.0.bb b/meta/recipes-devtools/qemu/qemu-helper-nativesdk_1.0.bb
index 791465694b..18d278db7a 100644
--- a/meta/recipes-devtools/qemu/qemu-helper-nativesdk_1.0.bb
+++ b/meta/recipes-devtools/qemu/qemu-helper-nativesdk_1.0.bb
@@ -1,10 +1,14 @@
DESCRIPTION = "Qemu helper scripts from Poky"
-LICENSE = "GPL"
-RDEPENDS = "qemu-nativesdk"
-PR = "r8"
+LICENSE = "GPLv2"
+RDEPENDS_${PN} = "qemu-nativesdk"
+PR = "r9"
FILESPATH = "${FILE_DIRNAME}/qemu-helper"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/tunctl.c;endline=4;md5=ff3a09996bc5fff6bc5d4e0b4c28f999 \
+ file://${POKYBASE}/scripts/poky-qemu;endline=18;md5=ce52af3dd295e20ad1d849611b83690b"
+
+
SRC_URI = "file://${POKYBASE}/scripts/poky-qemu \
file://${POKYBASE}/scripts/poky-qemu-internal \
file://${POKYBASE}/scripts/poky-addptable2image \
diff --git a/meta/recipes-devtools/qemu/qemu_0.12.4.bb b/meta/recipes-devtools/qemu/qemu_0.12.4.bb
deleted file mode 100644
index 6125bca0d1..0000000000
--- a/meta/recipes-devtools/qemu/qemu_0.12.4.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-require qemu.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
- file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
-
-PR = "r23"
-
-FILESPATH = "${FILE_DIRNAME}/qemu-${PV}"
-FILESDIR = "${WORKDIR}"
-
-SRC_URI = "\
- http://download.savannah.gnu.org/releases/qemu/qemu-${PV}.tar.gz \
- file://workaround_bad_futex_headers.patch \
- file://qemu-git-qemugl-host.patch \
- file://no-strip.patch \
- file://fix-dirent.patch \
- file://fix-nogl.patch \
- file://qemugl-allow-glxcontext-release.patch \
- file://linker-flags.patch \
- file://init-info.patch \
- file://qemu-vmware-vga-depth.patch \
- file://qemu-ppc-hack.patch \
- file://enable-i386-linux-user.patch \
- file://arm-cp15-fix.patch \
- file://cursor-shadow-fix.patch \
- file://vmware-vga-fifo-rewind.patch \
- file://fix-configure-checks.patch \
- file://powerpc_rom.bin \
- file://arm_timer-fix-oneshot-mode.patch \
- file://arm_timer-reload-timer-when-enabled.patch"
-
-SRC_URI[md5sum] = "93e6b134dff89b2799f57b7d9e0e0fc5"
-SRC_URI[sha256sum] = "1a29a5b5151162d1de035c4926d1a1dbffee4a145ef61ee865d6b82aaea0602e"
-
-do_install_append () {
- install -d ${D}${datadir}/qemu
- install -m 0755 ${WORKDIR}/powerpc_rom.bin ${D}${datadir}/qemu
-}
-
-S = "${WORKDIR}/qemu-${PV}"
diff --git a/meta/recipes-devtools/qemu/qemu_0.13.0.bb b/meta/recipes-devtools/qemu/qemu_0.13.0.bb
new file mode 100644
index 0000000000..945c570f7c
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu_0.13.0.bb
@@ -0,0 +1,39 @@
+require qemu.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
+ file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
+
+PR = "r0"
+
+FILESPATH = "${FILE_DIRNAME}/qemu-${PV}"
+FILESDIR = "${WORKDIR}"
+
+SRC_URI = "\
+ http://download.savannah.gnu.org/releases/qemu/qemu-${PV}.tar.gz \
+ file://workaround_bad_futex_headers.patch \
+ file://qemu-git-qemugl-host.patch \
+ file://no-strip.patch \
+ file://fix-dirent.patch \
+ file://fix-nogl.patch \
+ file://qemugl-allow-glxcontext-release.patch \
+ file://linker-flags.patch \
+ file://init-info.patch \
+ file://qemu-vmware-vga-depth.patch \
+ file://qemu-ppc-hack.patch \
+ file://enable-i386-linux-user.patch \
+ file://vmware-vga-fifo-rewind.patch \
+ file://fix-configure-checks.patch \
+ file://parallel_make.patch \
+ file://wacom-tablet-fix.patch \
+ file://port92_fix.patch \
+ file://powerpc_rom.bin"
+
+SRC_URI[md5sum] = "397a0d665da8ba9d3b9583629f3d6421"
+SRC_URI[sha256sum] = "1e6f5851b05cea6e377c835f4668408d4124cfb845f9948d922808743c5fd877"
+
+do_install_append () {
+ install -d ${D}${datadir}/qemu
+ install -m 0755 ${WORKDIR}/powerpc_rom.bin ${D}${datadir}/qemu
+}
+
+S = "${WORKDIR}/qemu-${PV}"
diff --git a/meta/recipes-devtools/rpm/rpm/header-include-fix.patch b/meta/recipes-devtools/rpm/rpm/header-include-fix.patch
new file mode 100644
index 0000000000..92c534e582
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/header-include-fix.patch
@@ -0,0 +1,24 @@
+diff --git a/rpmdb/rpmdb.h b/rpmdb/rpmdb.h
+index 0e1bdd7..8b522bb 100644
+--- a/rpmdb/rpmdb.h
++++ b/rpmdb/rpmdb.h
+@@ -9,6 +9,7 @@
+
+ #include <assert.h>
+ #include <mire.h>
++#include <errno.h>
+
+ #include <rpmtypes.h>
+ #include <rpmtag.h> /* XXX Header typedef */
+diff --git a/rpmdb/rpmtag.h b/rpmdb/rpmtag.h
+index 8af6480..2166b4c 100644
+--- a/rpmdb/rpmtag.h
++++ b/rpmdb/rpmtag.h
+@@ -7,6 +7,7 @@
+
+ #include <rpmiotypes.h>
+ #include <rpmsw.h>
++#include <stdint.h>
+
+ #ifdef __cplusplus
+ extern "C" {
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-autogen.patch b/meta/recipes-devtools/rpm/rpm/rpm-autogen.patch
new file mode 100644
index 0000000000..323bb7151e
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-autogen.patch
@@ -0,0 +1,54 @@
+Remove the sanity checking from the rpm autogen.sh. This is required because
+we may have slightly different, but yet compatible versions. If we do end
+up breaking things, we'll deal with it at that time.
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+diff -ur rpm-5.4.0.orig/autogen.sh rpm-5.4.0/autogen.sh
+--- rpm-5.4.0.orig/autogen.sh 2010-11-02 11:55:53.000000000 -0500
++++ rpm-5.4.0/autogen.sh 2011-01-06 00:15:05.158946295 -0600
+@@ -34,12 +34,6 @@
+ eval $_libtoolize $_libtoolize_args
+ }
+
+-# requirements sanity check
+-[ "`automake --version | head -1`" != "$AMV" ] && echo "$USAGE" # && exit 1
+-[ "`autoconf --version | head -1`" != "$ACV" ] && echo "$USAGE" # && exit 1
+-[ "`libtoolize --version | head -1`" != "$LTV" ] && echo "$USAGE" # && exit 1
+-[ "`gettextize --version | head -1 | sed -e 's;^.*/\\(gettextize\\);\\1;'`" != "$GTT" ] && echo "$USAGE" # && exit 1
+-
+ for dir in bash beecrypt file neon pcre popt rc syck xar xz; do
+
+ if [ -d $dir ]; then
+diff -ur rpm-5.4.0.orig/neon/autogen.sh rpm-5.4.0/neon/autogen.sh
+--- rpm-5.4.0.orig/neon/autogen.sh 2010-10-30 19:11:33.000000000 -0500
++++ rpm-5.4.0/neon/autogen.sh 2011-01-06 00:15:17.863962139 -0600
+@@ -34,12 +34,6 @@
+ eval $_libtoolize $_libtoolize_args
+ }
+
+-# requirements sanity check
+-[ "`automake --version | head -1`" != "$AMV" ] && echo "$USAGE" # && exit 1
+-[ "`autoconf --version | head -1`" != "$ACV" ] && echo "$USAGE" # && exit 1
+-[ "`libtoolize --version | head -1`" != "$LTV" ] && echo "$USAGE" # && exit 1
+-[ "`gettextize --version | head -1 | sed -e 's;^.*/\\(gettextize\\);\\1;'`" != "$GTT" ] && echo "$USAGE" # && exit 1
+-
+ echo "---> generate files via GNU libtool (libtoolize)"
+ libtoolize --quiet --copy --force --install
+ echo "---> generate files via GNU autoconf (aclocal, autoheader)"
+diff -ur rpm-5.4.0.orig/syck/autogen.sh rpm-5.4.0/syck/autogen.sh
+--- rpm-5.4.0.orig/syck/autogen.sh 2010-11-02 11:55:56.000000000 -0500
++++ rpm-5.4.0/syck/autogen.sh 2011-01-06 00:15:27.103949601 -0600
+@@ -34,12 +34,6 @@
+ eval $_libtoolize $_libtoolize_args
+ }
+
+-# requirements sanity check
+-[ "`automake --version | head -1`" != "$AMV" ] && echo "$USAGE" # && exit 1
+-[ "`autoconf --version | head -1`" != "$ACV" ] && echo "$USAGE" # && exit 1
+-[ "`libtoolize --version | head -1`" != "$LTV" ] && echo "$USAGE" # && exit 1
+-[ "`gettextize --version | head -1 | sed -e 's;^.*/\\(gettextize\\);\\1;'`" != "$GTT" ] && echo "$USAGE" # && exit 1
+-
+ echo "---> generate files via GNU libtool (libtoolize)"
+ libtoolize --quiet --copy --force --install
+ echo "---> generate files via GNU autoconf (aclocal, autoheader)"
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-libsql-fix.patch b/meta/recipes-devtools/rpm/rpm/rpm-libsql-fix.patch
new file mode 100644
index 0000000000..829399c95e
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-libsql-fix.patch
@@ -0,0 +1,18 @@
+During installation, the libtool relink attempts to link to -lrpm...
+The problem is that it hasn't been installed yet! So small change causes
+the libtool to instead use the build version.
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+--- rpm-5.4.0/lib/Makefile.am.orig
++++ rpm-5.4.0/lib/Makefile.am
+@@ -90,6 +90,9 @@
+ libsql_la_SOURCES = libsql.c
+ libsql_la_LIBADD = librpm.la $(RPMDB_LDADD_COMMON)
+
++# pkglib libraries needs to have usrlib libraries already installed!
++install-pkglibLTLIBRARIES: install-usrlibLTLIBRARIES
++
+ install-data-hook:
+ if !ENABLE_BUILD_LAFILES
+ -for l in $(usrlib_LTLIBRARIES); do \
diff --git a/meta/recipes-devtools/rpm/rpm/rpm2cpio b/meta/recipes-devtools/rpm/rpm/rpm2cpio
new file mode 100755
index 0000000000..00c4ec549e
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm2cpio
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+pkg=$1
+if [ "$pkg" = "" -o ! -e "$pkg" ]; then
+ echo "no package supplied" 1>&2
+ exit 1
+fi
+
+leadsize=96
+o=`expr $leadsize + 8`
+set `od -j $o -N 8 -t u1 $pkg`
+il=`expr 256 \* \( 256 \* \( 256 \* $2 + $3 \) + $4 \) + $5`
+dl=`expr 256 \* \( 256 \* \( 256 \* $6 + $7 \) + $8 \) + $9`
+# echo "sig il: $il dl: $dl"
+
+sigsize=`expr 8 + 16 \* $il + $dl`
+o=`expr $o + $sigsize + \( 8 - \( $sigsize \% 8 \) \) \% 8 + 8`
+set `od -j $o -N 8 -t u1 $pkg`
+il=`expr 256 \* \( 256 \* \( 256 \* $2 + $3 \) + $4 \) + $5`
+dl=`expr 256 \* \( 256 \* \( 256 \* $6 + $7 \) + $8 \) + $9`
+# echo "hdr il: $il dl: $dl"
+
+hdrsize=`expr 8 + 16 \* $il + $dl`
+o=`expr $o + $hdrsize`
+EXTRACTOR="dd if=$pkg ibs=$o skip=1"
+
+COMPRESSION=`($EXTRACTOR |file -) 2>/dev/null`
+if echo $COMPRESSION |grep -q gzip; then
+ DECOMPRESSOR=gunzip
+elif echo $COMPRESSION |grep -q bzip2; then
+ DECOMPRESSOR=bunzip2
+elif echo $COMPRESSION |grep -q xz; then
+ DECOMPRESSOR=unxz
+elif echo $COMPRESSION |grep -q cpio; then
+ DECOMPRESSOR=cat
+else
+ # Most versions of file don't support LZMA, therefore we assume
+ # anything not detected is LZMA
+ DECOMPRESSOR=`which unlzma 2>/dev/null`
+ case "$DECOMPRESSOR" in
+ /* ) ;;
+ * ) DECOMPRESSOR=`which lzmash 2>/dev/null`
+ case "$DECOMPRESSOR" in
+ /* ) DECOMPRESSOR="lzmash -d -c" ;;
+ * ) DECOMPRESSOR=cat ;;
+ esac
+ ;;
+ esac
+fi
+
+$EXTRACTOR 2>/dev/null | $DECOMPRESSOR
diff --git a/meta/recipes-devtools/rpm/rpm_5.1.10.bb b/meta/recipes-devtools/rpm/rpm_5.1.10.bb
deleted file mode 100644
index efb4eae891..0000000000
--- a/meta/recipes-devtools/rpm/rpm_5.1.10.bb
+++ /dev/null
@@ -1,168 +0,0 @@
-DESCRIPTION = "The RPM Package Manager - relaunched"
-DESCRIPTION_rpm-build = "The RPM Package Manager rpmbuild and related commands."
-HOMEPAGE = "http://rpm5.org/"
-LICENSE = "LGPL 2.1"
-LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1"
-
-DEPENDS = "zlib perl popt beecrypt python libpcre elfutils"
-PR = "r7"
-
-SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.1/POKY/${BPN}-${PV}.tar.gz \
- file://hdraddorappend.patch \
- file://export-rpmbag-h.patch \
- file://rpm-nrescan.patch \
- file://rpm-autoconf.patch \
- file://remove-compiled-tests.patch;apply=no \
- file://perfile_rpmdeps.sh \
- file://rpm-no-loop.patch \
- "
-
-SRC_URI[md5sum] = "a5deb83b451f11c04461c630937b1189"
-SRC_URI[sha256sum] = "701726a6ae8283fcabc308dae523ad9599388296a562db1b3d7d7c871641af7e"
-inherit autotools gettext
-
-acpaths = "-I ${S}/db/dist/aclocal -I ${S}/db/dist/aclocal_java"
-
-# Specify the default rpm macros in terms of adjustable variables
-rpm_macros = "%{_usrlibrpm}/macros:%{_usrlibrpm}/poky/macros:%{_usrlibrpm}/poky/%{_target}/macros:~/.oerpmmacros"
-
-EXTRA_OECONF = "--with-python=${PYTHON_BASEVERSION} \
- --with-python-inc-dir=${STAGING_INCDIR}/python${PYTHON_BASEVERSION} \
- --with-python-lib-dir=${libdir}/python${PYTHON_BASEVERSION} \
- --with-db=internal \
- --with-db-tools-integrated \
- --with-libelf \
- --with-file=internal \
- --without-apidocs \
- --without-selinux \
- --without-lua \
- --without-dmalloc \
- --without-efence \
- --without-neon \
- --with-pcre=internal \
- --with-path-macros=${rpm_macros} \
- --with-bugreport=http://bugzilla.pokylinux.org"
-
-CFLAGS_append = " -DRPM_VENDOR_WINDRIVER"
-
-PACKAGES =+ "rpm-build python-rpm python-rpm-dbg"
-
-SOLIBS = "5.0.so"
-
-FILES_rpm-build = "${bindir}/*-rpmbuild \
- ${bindir}/*-gendiff \
- ${bindir}/*-rpmspecdump \
- ${libdir}/rpm/helpers/* \
- ${libdir}/rpm/*brp* \
- ${libdir}/rpm/*check-files \
- ${libdir}/rpm/*cross-build \
- ${libdir}/rpm/*debugedit \
- ${libdir}/rpm/*dep* \
- ${libdir}/rpm/*prov* \
- ${libdir}/rpm/*req* \
- ${libdir}/rpm/*find* \
- ${libdir}/rpm/qf/* \
- "
-
-FILES_python-rpm = "${libdir}/python*/rpm/_*"
-FILES_python-rpm-dbg = "${libdir}/python*/rpm/.debug/_*"
-
-# The mutex needs to be POSIX/pthreads/library or we can't
-# share a database between host and target environments
-# (there is a minor performance penalty, but not one great enough
-# to justify the pain of a more optimized approach!)
-EXTRA_OECONF += "--with-mutex=POSIX/pthreads/library"
-
-do_configure() {
- # Manually run through the steps of the autogen.sh
- ( cd pcre
- libtoolize --quiet --copy --force --install
- aclocal
- autoheader
- automake -Wall -Wno-override -a -c
- autoconf
- )
-
- ( cd xz
- autopoint -f
- rm -f \
- codeset.m4 \
- glibc2.m4 \
- glibc21.m4 \
- intdiv0.m4 \
- intl.m4 \
- intldir.m4 \
- intmax.m4 \
- inttypes-pri.m4 \
- inttypes_h.m4 \
- lcmessage.m4 \
- lock.m4 \
- longdouble.m4 \
- longlong.m4 \
- printf-posix.m4 \
- size_max.m4 \
- stdint_h.m4 \
- uintmax_t.m4 \
- ulonglong.m4 \
- visibility.m4 \
- wchar_t.m4 \
- wint_t.m4 \
- xsize.m4
- libtoolize -c -f || glibtoolize -c -f
- aclocal -I m4
- autoconf
- autoheader
- automake -acf --foreign
- )
-
- ( cd file
- libtoolize --quiet --copy --force --install
- aclocal
- autoheader
- automake -Wall -Wno-override -a -c
- autoconf
- )
-
- (cd syck
- libtoolize --quiet --copy --force --install
- aclocal
- autoheader
- automake -Wall -Wno-override -a -c
- autoconf
- )
-
- (cd xar
- libtoolize --quiet --copy --force --install
- aclocal
- autoheader
- automake -Wall -Wno-override -a -c
- autoconf
- )
-
- rm -rf autom4te.cache || true
- libtoolize --quiet --copy --force --install
- autopoint --force
- rm -f aclocal.m4
- aclocal -I m4
- autoheader -I m4
- automake -Wall -Wno-override -a -c
- autoconf -I m4
- # end of autogen.sh steps
-
- export ac_cv_va_copy=C99
- oe_runconf
-}
-
-do_install_append() {
- sed -i -e 's,%__check_files,#%%__check_files,' ${D}/${libdir}/rpm/macros
- sed -i -e 's,%__scriptlet_requires,#%%__scriptlet_requires,' ${D}/${libdir}/rpm/macros
- sed -i -e 's,%__perl_provides,#%%__perl_provides,' ${D}/${libdir}/rpm/macros
- sed -i -e 's,%__perl_requires,#%%__perl_requires,' ${D}/${libdir}/rpm/macros
-
- # Enable Debian style arbitrary tags...
- sed -i -e 's,%_arbitrary_tags[^_].*,%_arbitrary_tags %{_arbitrary_tags_debian},' ${D}/${libdir}/rpm/macros
-
- install -m 0755 ${WORKDIR}/perfile_rpmdeps.sh ${D}/${libdir}/rpm/perfile_rpmdeps.sh
-}
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/rpm/rpm_5.4.0.bb b/meta/recipes-devtools/rpm/rpm_5.4.0.bb
new file mode 100644
index 0000000000..566325ea4a
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm_5.4.0.bb
@@ -0,0 +1,417 @@
+SUMMARY = "The RPM package management system"
+DESCRIPTION = "The RPM Package Manager (RPM) is a powerful command line driven \
+package management system capable of installing, uninstalling, \
+verifying, querying, and updating software packages. Each software \
+package consists of an archive of files along with information about \
+the package like its version, a description, etc."
+
+SUMMARY_${PN}-libs = "Libraries for manipulating RPM packages."
+DESCRIPTION_${PN}-libs = "This package contains the RPM shared libraries."
+
+SUMMARY_${PN}-dev = "Development files for manipulating RPM packages."
+DESCRIPTION_${PN}-dev = "This package contains the RPM C library and header files. These \
+development files will simplify the process of writing programs that \
+manipulate RPM packages and databases. These files are intended to \
+simplify the process of creating graphical package managers or any \
+other tools that need an intimate knowledge of RPM packages in order \
+to function."
+
+SUMMARY_${PN}-common = "Common RPM paths, scripts, documentation and configuration."
+DESCRIPTION_${PN}-common = "The rpm-common package contains paths, scripts, documentation \
+and configuration common between RPM Package Manager."
+
+SUMMARY_${PN}-build = "Scripts and executable programs used to build packages."
+DESCRIPTION_${PN}-build = "The rpm-build packagec ontains the scripts and executable programs \
+that are used to build packages using the RPM Package Manager."
+
+SUMMARY_python-rpm = "Python bindings for apps which will manupulate RPM packages."
+DESCRIPTION_python-rpm = "The rpm-python package contains a module that permits applications \
+written in the Python programming language to use the interface \
+supplied by the RPM Package Manager libraries."
+
+SUMMARY_perl-module-rpm = "Perl bindings for apps which will manipulate RPM packages."
+DESCRIPTION_perl-modules-rpm = "The perl-modules-rpm package contains a module that permits applications \
+written in the Perl programming language to use the interface \
+supplied by the RPM Package Manager libraries."
+
+SUMMARY_perl-module-rpm-dev = "Development components for perl bindings"
+DESCRIPTION_perl-modules-rpm-dev = "Development items such as man pages for use with the Perl \
+language bindings."
+
+HOMEPAGE = "http://rpm5.org/"
+LICENSE = "LGPL 2.1"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1"
+
+DEPENDS = "bzip2 zlib python perl db openssl elfutils expat libpcre attr acl popt"
+PR = "r11"
+
+# rpm2cpio is a shell script, which is part of the rpm src.rpm. It is needed
+# in order to extract the distribution SRPM into a format we can extract...
+SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.0-0.20101229.src.rpm;unpack=rpm-5.4.0.tar.gz \
+ file://perfile_rpmdeps.sh \
+ file://rpm-autogen.patch \
+ file://rpm-libsql-fix.patch \
+ file://header-include-fix.patch \
+ "
+
+# file://hdraddorappend.patch \
+# file://export-rpmbag-h.patch \
+# file://rpm-nrescan.patch \
+# file://rpm-autoconf.patch \
+# file://remove-compiled-tests.patch;apply=no \
+# file://rpm-no-loop.patch \
+# "
+
+SRC_URI[md5sum] = "19c1a7f68d7765eeb7615c9c4e54e380"
+SRC_URI[sha256sum] = "887e76218308b570c33c8c2fb10b5298b3afd5d602860d281befc85357b3b923"
+
+inherit autotools gettext
+
+acpaths = "-I ${S}/db/dist/aclocal -I ${S}/db/dist/aclocal_java"
+
+# Specify the default rpm macros in terms of adjustable variables
+rpm_macros = "%{_usrlibrpm}/macros:%{_usrlibrpm}/poky/macros:%{_usrlibrpm}/poky/%{_target}/macros:~/.oerpmmacros"
+
+# Configure values taken from rpm.spec
+WITH_BZIP2 = "--with-bzip2"
+
+WITH_XZ = "--without-xz"
+
+WITH_Z = "--with-zlib $WITH_BZIP2 $WITH_XZ"
+
+WITH_PYTHON = " --with-python=${PYTHON_BASEVERSION} \
+ --with-python-inc-dir=${STAGING_INCDIR}/python${PYTHON_BASEVERSION} \
+ --with-python-lib-dir=${libdir}/python${PYTHON_BASEVERSION} \
+ --without-pythonembed \
+ "
+
+WITH_PYTHON_native = " --without-python"
+
+# Perl modules are not built, but they could be enabled fairly easily
+# the perl module creation and installation would need to be patched.
+# (currently has host perl contamination issues)
+#WITH_PERL = " --with-perl --without-perlembed"
+WITH_PERL = " --without-perl"
+
+WITH_PERL_native = " --without-perl"
+
+WITH_DB = "--with-db --with-dbsql --without-db-tools-integrated --without-sqlite"
+
+WITH_CRYPTO = "--with-beecrypt=internal --with-openssl --without-nss --without-gcrypt"
+
+WITH_KEYUTILS = "--without-keyutils"
+WITH_LIBELF = "--with-libelf"
+WITH_SELINUX = "--without-selinux --without-sepol --without-semanage"
+#WITH_NEON = "--with-neon=internal --without-libproxy --with-expat --without-gssapi"
+WITH_NEON = "--without-neon --without-libproxy --without-expat --without-gssapi"
+
+EXTRA_OECONF = "--verbose \
+ --sysconfdir=/etc \
+ ${WITH_DB} \
+ ${WITH_Z} \
+ --with-file \
+ --with-path-magic=/usr/share/misc/magic \
+ --without-lua \
+ --without-tcl \
+ --with-syck=internal \
+ --without-readline \
+ --without-augeas \
+ ${WITH_CRYPTO} \
+ --without-libtasn1 \
+ --without-pakchois \
+ --without-gnutls \
+ ${WITH_NEON} \
+ --with-pcre \
+ --enable-utf8 \
+ --without-uuid \
+ --with-attr \
+ --with-acl \
+ --without-xar \
+ --with-popt=external \
+ ${WITH_KEYUTILS} \
+ --with-pthreads \
+ ${WITH_LIBELF} \
+ --without-cudf \
+ --without-ficl \
+ --without-aterm \
+ --without-nix \
+ --without-bash \
+ --without-rc \
+ --without-js \
+ --without-gpsee \
+ ${WITH_PYTHON} \
+ ${WITH_PERL} \
+ --without-ruby \
+ --without-squirrel \
+ --with-build-extlibdep \
+ --with-build-maxextlibdep \
+ --without-valgrind \
+ --disable-openmp \
+ --enable-build-pic \
+ --enable-build-versionscript \
+ --enable-build-warnings \
+ --enable-build-debug \
+ --enable-maintainer-mode \
+ --with-path-macros=${rpm_macros} \
+ --with-bugreport=http://bugzilla.pokylinux.org"
+
+CFLAGS_append = " -DRPM_VENDOR_WINDRIVER"
+
+PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-libs ${PN}-dev ${PN}-common ${PN}-build python-rpm-dbg python-rpm perl-module-rpm perl-module-rpm-dev ${PN}-locale"
+
+SOLIBS = "5.4.so"
+
+# Based on %files section in the rpm.spec
+
+FILES_${PN} = "${bindir}/rpm \
+ ${bindir}/rpmconstant \
+ ${libdir}/rpm/rpm.* \
+ ${libdir}/rpm/tgpg \
+ ${libdir}/rpm/macros \
+ ${libdir}/rpm/rpmpopt \
+ ${libdir}/rpm/rpmdb_loadcvt \
+ ${libdir}/rpm/rpm2cpio \
+ ${libdir}/rpm/vcheck \
+ ${libdir}/rpm/helpers \
+ ${libdir}/rpm/qf \
+ ${libdir}/rpm/cpuinfo.yaml \
+ ${libdir}/rpm/bin/mtree \
+ ${libdir}/rpm/bin/rpmkey \
+ ${libdir}/rpm/bin/rpmrepo \
+ ${libdir}/rpm/bin/rpmspecdump \
+ ${libdir}/rpm/bin/wget \
+ "
+
+# ${libdir}/rpm/magic \
+# ${libdir}/rpm/magic.mgc \
+# ${libdir}/rpm/magic.mime \
+# ${libdir}/rpm/magic.mime.mgc \
+# ${libdir}/rpm/bin/db_* \
+# ${libdir}/rpm/bin/grep \
+
+FILES_${PN}-dbg = "${bindir}/.debug \
+ ${libdir}/.debug \
+ ${libdir}/rpm/.debug \
+ ${libdir}/rpm/bin/.debug \
+ "
+
+FILES_${PN}-common = "${bindir}/rpm2cpio \
+ ${bindir}/gendiff \
+ /etc/rpm \
+ /var/lib/rpm \
+ /var/spool/repackage \
+ "
+
+FILES_${PN}-libs = "${libdir}/librpm-*.so \
+ ${libdir}/librpmconstant-*.so \
+ ${libdir}/librpmdb-*.so \
+ ${libdir}/librpmio-*.so \
+ ${libdir}/librpmmisc-*.so \
+ ${libdir}/librpmbuild-*.so \
+ "
+
+###%{_rpmhome}/lib/libxar.so.*
+###%{_rpmhome}/lib/libjs.so.*
+###%{_rpmhome}/lib/librpmjsm.so.*
+###%{_rpmhome}/lib/rpmjsm.so
+
+
+FILES_${PN}-build = "${prefix}/src/rpm \
+ ${bindir}/rpmbuild \
+ ${libdir}/rpm/brp-* \
+ ${libdir}/rpm/check-files \
+ ${libdir}/rpm/cross-build \
+ ${libdir}/rpm/find-debuginfo.sh \
+ ${libdir}/rpm/find-lang.sh \
+ ${libdir}/rpm/find-prov.pl \
+ ${libdir}/rpm/find-provides.perl \
+ ${libdir}/rpm/find-req.pl \
+ ${libdir}/rpm/find-requires.perl \
+ ${libdir}/rpm/getpo.sh \
+ ${libdir}/rpm/http.req \
+ ${libdir}/rpm/javadeps.sh \
+ ${libdir}/rpm/mono-find-provides \
+ ${libdir}/rpm/mono-find-requires \
+ ${libdir}/rpm/executabledeps.sh \
+ ${libdir}/rpm/libtooldeps.sh \
+ ${libdir}/rpm/osgideps.pl \
+ ${libdir}/rpm/perldeps.pl \
+ ${libdir}/rpm/perl.prov \
+ ${libdir}/rpm/perl.req \
+ ${libdir}/rpm/php.prov \
+ ${libdir}/rpm/php.req \
+ ${libdir}/rpm/pkgconfigdeps.sh \
+ ${libdir}/rpm/pythondeps.sh \
+ ${libdir}/rpm/bin/debugedit \
+ ${libdir}/rpm/bin/rpmcache \
+ ${libdir}/rpm/bin/rpmcmp \
+ ${libdir}/rpm/bin/rpmdeps \
+ ${libdir}/rpm/bin/rpmdigest \
+ ${libdir}/rpm/bin/abi-compliance-checker.pl \
+ ${libdir}/rpm/bin/api-sanity-autotest.pl \
+ ${libdir}/rpm/bin/chroot \
+ ${libdir}/rpm/bin/cp \
+ ${libdir}/rpm/bin/dbsql \
+ ${libdir}/rpm/bin/find \
+ ${libdir}/rpm/bin/install-sh \
+ ${libdir}/rpm/bin/lua \
+ ${libdir}/rpm/bin/luac \
+ ${libdir}/rpm/bin/mkinstalldirs \
+ ${libdir}/rpm/bin/rpmlua \
+ ${libdir}/rpm/bin/rpmluac \
+ ${libdir}/rpm/bin/sqlite3 \
+ ${libdir}/rpm/lib/liblua.a \
+ ${libdir}/rpm/lib/liblua.la \
+ ${libdir}/rpm/macros.d/cmake \
+ ${libdir}/rpm/macros.d/java \
+ ${libdir}/rpm/macros.d/libtool \
+ ${libdir}/rpm/macros.d/mandriva \
+ ${libdir}/rpm/macros.d/mono \
+ ${libdir}/rpm/macros.d/perl \
+ ${libdir}/rpm/macros.d/php \
+ ${libdir}/rpm/macros.d/pkgconfig \
+ ${libdir}/rpm/macros.d/python \
+ ${libdir}/rpm/macros.d/ruby \
+ ${libdir}/rpm/macros.d/selinux \
+ ${libdir}/rpm/macros.d/tcl \
+ ${libdir}/rpm/macros.rpmbuild \
+ ${libdir}/rpm/u_pkg.sh \
+ ${libdir}/rpm/vpkg-provides.sh \
+ ${libdir}/rpm/vpkg-provides2.sh \
+ ${libdir}/rpm/perfile_rpmdeps.sh \
+ "
+
+#%rpmattr %{_rpmhome}/gem_helper.rb
+#%rpmattr %{_rpmhome}/symclash.*
+
+FILES_python-rpm-dbg = "${libdir}/python*/rpm/.debug/_*"
+FILES_python-rpm = "${libdir}/python*/rpm"
+
+FILES_perl-module-rpm = "${libdir}/perl/*/* \
+ "
+
+FILES_perl-module-rpm-dev = "${prefix}/share/man/man3/RPM* \
+ "
+
+FILE_${PN}-dev = "${includedir}/rpm \
+ ${libdir}/librpm.a \
+ ${libdir}/librpm.la \
+ ${libdir}/librpm.so \
+ ${libdir}/librpmconstant.a \
+ ${libdir}/librpmconstant.la \
+ ${libdir}/librpmconstant.so \
+ ${libdir}/librpmdb.a \
+ ${libdir}/librpmdb.la \
+ ${libdir}/librpmdb.so \
+ ${libdir}/librpmio.a \
+ ${libdir}/librpmio.la \
+ ${libdir}/librpmio.so \
+ ${libdir}/librpmmisc.a \
+ ${libdir}/librpmmisc.la \
+ ${libdir}/librpmmisc.so \
+ ${libdir}/librpmbuild.a \
+ ${libdir}/librpmbuild.la \
+ ${libdir}/librpmbuild.so \
+ ${libdir}/pkgconfig/rpm.pc \
+ "
+
+###%{_rpmhome}/lib/libxar.a
+###%{_rpmhome}/lib/libxar.la
+###%{_rpmhome}/lib/libxar.so
+###%{_rpmhome}/lib/libjs.a
+###%{_rpmhome}/lib/libjs.la
+###%{_rpmhome}/lib/libjs.so
+###%{_rpmhome}/lib/librpmjsm.a
+###%{_rpmhome}/lib/librpmjsm.la
+###%{_rpmhome}/lib/librpmjsm.so
+
+do_configure() {
+ # Disable tests!
+ echo "all:" > tests/Makefile.am
+
+ ./autogen.sh
+
+ oe_runconf
+}
+
+do_install_append() {
+ sed -i -e 's,%__check_files,#%%__check_files,' ${D}/${libdir}/rpm/macros
+ sed -i -e 's,%__scriptlet_requires,#%%__scriptlet_requires,' ${D}/${libdir}/rpm/macros
+ sed -i -e 's,%__perl_provides,#%%__perl_provides,' ${D}/${libdir}/rpm/macros
+ sed -i -e 's,%__perl_requires,#%%__perl_requires,' ${D}/${libdir}/rpm/macros
+
+ # Enable Debian style arbitrary tags...
+ sed -i -e 's,%_arbitrary_tags[^_].*,%_arbitrary_tags %{_arbitrary_tags_debian},' ${D}/${libdir}/rpm/macros
+
+ install -m 0755 ${WORKDIR}/perfile_rpmdeps.sh ${D}/${libdir}/rpm/perfile_rpmdeps.sh
+
+ # Remove unpackaged files (based on list in rpm.spec)
+ rm -f ${D}/${libdir}/rpm/{Specfile.pm,cpanflute,cpanflute2,rpmdiff,rpmdiff.cgi,sql.prov,sql.req,tcl.req,trpm}
+
+ rm -f ${D}/${mandir}/man8/rpmcache.8*
+ rm -f ${D}/${mandir}/man8/rpmgraph.8*
+ rm -f ${D}/${mandir}/*/man8/rpmcache.8*
+ rm -f ${D}/${mandir}/*/man8/rpmgraph.8*
+ rm -rf ${D}/${mandir}/{fr,ko}
+
+ rm -f ${D}/${includedir}/popt.h
+ rm -f ${D}/${libdir}/libpopt.*
+ rm -f ${D}/${libdir}/pkgconfig/popt.pc
+ rm -f ${D}/${datadir}/locale/*/LC_MESSAGES/popt.mo
+ rm -f ${D}/${mandir}/man3/popt.3
+
+ rm -f ${D}/${mandir}/man1/xar.1*
+ rm -f ${D}/${bindir}/xar
+ rm -rf ${D}/${includedir}/xar
+ rm -f ${D}/${libdir}/libxar*
+
+ rm -f ${D}/${bindir}/lz*
+ rm -f ${D}/${bindir}/unlzma
+ rm -f ${D}/${bindir}/unxz
+ rm -f ${D}/${bindir}/xz*
+ rm -rf ${D}/${includedir}/lzma*
+ rm -f ${D}/${mandir}/man1/lz*.1
+ rm -f ${D}/${libdir}/pkgconfig/liblzma*
+
+ rm -f ${D}/${libdir}/python%{with_python_version}/site-packages/*.{a,la}
+ rm -f ${D}/${libdir}/python%{with_python_version}/site-packages/rpm/*.{a,la}
+
+ #find ${D}/${libdir}/perl5 -type f -a \( -name perllocal.pod -o -name .packlist \
+ # -o \( -name '*.bs' -a -empty \) \) -exec rm -f {} ';'
+ #find ${D}/${libdir}/perl5 -type d -depth -exec rmdir {} 2>/dev/null ';'
+
+ # We don't want the default macro set
+ rm -rf ${D}/${libdir}/rpm/{i[3456]86*,athlon*,pentium*,x86_64*,alpha*,sparc*,ia64*,ppc*,s390*,armv[34][lb]*,armv[345]*,mips*,noarch*}
+
+ rm -f ${D}/${libdir}/rpm/dbconvert.sh
+
+ rm -f ${D}/${libdir}/rpm/libsqldb.*
+}
+
+do_install_append_virtclass-native() {
+ create_wrapper ${D}/${bindir}/rpm \
+ RPM_USRLIBRPM=${STAGING_LIBDIR_NATIVE}/rpm \
+ RPM_ETCRPM=${STAGING_ETCDIR_NATIVE}/rpm \
+ RPM_LOCALEDIRRPM=${STAGING_DATADIR_NATIVE}/locale
+
+ create_wrapper ${D}/${bindir}/rpm2cpio \
+ RPM_USRLIBRPM=${STAGING_LIBDIR_NATIVE}/rpm \
+ RPM_ETCRPM=${STAGING_ETCDIR_NATIVE}/rpm \
+ RPM_LOCALEDIRRPM=${STAGING_DATADIR_NATIVE}/locale
+
+ create_wrapper ${D}/${bindir}/rpmbuild \
+ RPM_USRLIBRPM=${STAGING_LIBDIR_NATIVE}/rpm \
+ RPM_ETCRPM=${STAGING_ETCDIR_NATIVE}/rpm \
+ RPM_LOCALEDIRRPM=${STAGING_DATADIR_NATIVE}/locale
+
+ create_wrapper ${D}/${bindir}/rpmconstant \
+ RPM_USRLIBRPM=${STAGING_LIBDIR_NATIVE}/rpm \
+ RPM_ETCRPM=${STAGING_ETCDIR_NATIVE}/rpm \
+ RPM_LOCALEDIRRPM=${STAGING_DATADIR_NATIVE}/locale
+
+ # Adjust popt macros to match...
+ cat ${D}/${libdir}/rpm/rpmpopt | sed -e "s,^\(rpm[^ ]*\)\([ ]\),\1.real\2," > ${D}/${libdir}/rpm/rpmpopt.new
+ mv ${D}/${libdir}/rpm/rpmpopt.new ${D}/${libdir}/rpm/rpmpopt
+}
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/sgml-common/sgml-common-0.6.3/autohell.patch b/meta/recipes-devtools/sgml-common/sgml-common-0.6.3/autohell.patch
new file mode 100644
index 0000000000..1366adabd8
--- /dev/null
+++ b/meta/recipes-devtools/sgml-common/sgml-common-0.6.3/autohell.patch
@@ -0,0 +1,58 @@
+Patch obtained from OpenEmbedded.
+
+Signed-off-by: Scott Garman <scott.a.garman@intel.com>
+--- sgml-common-0.6.3/bin/Makefile.am~autohell.patch 2001-01-30 15:42:21.000000000 +0100
++++ sgml-common-0.6.3/bin/Makefile.am 2004-06-17 11:51:11.000000000 +0200
+@@ -1,6 +1,5 @@
+ primitive_scripts = sgmlwhich
+
+-bindir = $(prefix)/bin
+ bin_SCRIPTS = install-catalog $(primitive_scripts)
+
+ EXTRA_DIST = install-catalog.in $(primitive_scripts)
+--- /dev/null 2003-09-23 19:59:22.000000000 +0200
++++ sgml-common-0.6.3/bin/sgmlwhich.in 2004-06-17 11:51:11.000000000 +0200
+@@ -0,0 +1,7 @@
++#!/bin/sh
++# Location of the main configuration file for consistency with non-LSB platforms
++# Send any comments to Eric Bischoff <eric@caldera.de>
++# This program is under GPL license. See LICENSE file for details.
++
++echo "@sysconfdir@/sgml/sgml.conf"
++# Simple, isn't it? ;-)
+--- /dev/null 2003-09-23 19:59:22.000000000 +0200
++++ sgml-common-0.6.3/config/sgml.conf.in 2004-06-17 11:51:11.000000000 +0200
+@@ -0,0 +1,2 @@
++SGML_BASE_DIR=@datadir@/sgml
++SGML_CATALOGS_DIR=@sysconfdir@/sgml
+--- sgml-common-0.6.3/configure.in~autohell.patch 2001-05-25 18:40:54.000000000 +0200
++++ sgml-common-0.6.3/configure.in 2004-06-17 11:53:22.000000000 +0200
+@@ -3,11 +3,6 @@
+
+ AM_INIT_AUTOMAKE(sgml-common, 0.6.3)
+
+-docdir='$(prefix)/doc'
+-AC_SUBST(docdir)
+-
+-dnl Checks for programs.
+-
+ dnl Checks for libraries.
+
+ dnl Checks for header files.
+@@ -18,6 +13,5 @@
+
+ AC_OUTPUT(Makefile \
+ bin/Makefile bin/install-catalog \
+- config/Makefile \
+- doc/Makefile doc/HTML/Makefile doc/man/Makefile doc/refentry/Makefile \
++ config/Makefile config/sgml.conf bin/sgmlwhich \
+ sgml-iso-entities/Makefile xml-iso-entities/Makefile)
+
+--- sgml-common-0.6.3/Makefile.am~no-docs 2001-05-25 18:22:01.000000000 +0200
++++ sgml-common-0.6.3/Makefile.am 2004-06-17 11:49:09.000000000 +0200
+@@ -1,4 +1,4 @@
+-SUBDIRS = bin config doc sgml-iso-entities xml-iso-entities
++SUBDIRS = bin config sgml-iso-entities xml-iso-entities
+
+ sgmlcodir = $(prefix)/share/sgml
+ sgmlco_DATA = xml.dcl
diff --git a/meta/recipes-devtools/sgml-common/sgml-common-0.6.3/license.patch b/meta/recipes-devtools/sgml-common/sgml-common-0.6.3/license.patch
new file mode 100644
index 0000000000..ec66aaefa2
--- /dev/null
+++ b/meta/recipes-devtools/sgml-common/sgml-common-0.6.3/license.patch
@@ -0,0 +1,26 @@
+The COPYING file sgml-common ships with is just a symlink to
+/usr/share/automake/COPYING, which means we can't verify it
+using our normal means. We workaround this by using this patch
+to create our own license file.
+
+Upstream was notified about this on 2011-01-24. When upgrading
+this recipe, this should be fixed and you should remove this
+patch.
+
+Signed-off-by: Scott Garman <scott.a.garman@intel.com>
+diff -urN sgml-common-0.6.3.orig/LICENSE-GPLv2 sgml-common-0.6.3/LICENSE-GPLv2
+--- sgml-common-0.6.3.orig/LICENSE-GPLv2 1969-12-31 16:00:00.000000000 -0800
++++ sgml-common-0.6.3/LICENSE-GPLv2 2011-01-28 17:05:17.299528001 -0800
+@@ -0,0 +1,12 @@
++Copyright (C) 1997 Christian Schwarz <schwarz@debian.org>.
++Copyright (C) 2001-2004 Ardo van Rangelrooij <ardo@debian.org>
++
++This is free software; you may 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, or (at your option) any later
++version.
++
++This 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.
diff --git a/meta/recipes-devtools/sgml-common/sgml-common-native_0.6.3.bb b/meta/recipes-devtools/sgml-common/sgml-common-native_0.6.3.bb
new file mode 100644
index 0000000000..7e9b923622
--- /dev/null
+++ b/meta/recipes-devtools/sgml-common/sgml-common-native_0.6.3.bb
@@ -0,0 +1,50 @@
+SUMMARY = "Base utilities for working with SGML and XML"
+DESCRIPTION = "The sgml-common package gathers very basic \
+stuff necessary to work with SGML and XML, such as xml.dcl, \
+a SGML declaration of XML; iso-entities, a list of the basic \
+SGML ISO entities; and install-catalog, a script used to \
+add entries to (or remove entries from) centralized catalogs \
+whose entries are pointers to SGML open catalogs, \
+as defined by OASIS."
+HOMEPAGE = "http://sources.redhat.com/docbook-tools/"
+LICENSE = "GPLv2"
+# The COPYING file sgml-common ships with is just a symlink to
+# /usr/share/automake/COPYING, which means we can't verify it
+# using our normal means. :( Hash the README file instead as
+# LIC_FILES_CHKSUM is still required.
+LIC_FILES_CHKSUM = "file://README;md5=197bd940bf13548ac2198e4f77d3da92"
+SECTION = "base"
+
+PR = "r0"
+
+require sgml-common_${PV}.bb
+inherit native
+
+S = "${WORKDIR}/sgml-common-${PV}"
+
+SYSROOT_PREPROCESS_FUNCS += "sgml_common_native_mangle"
+
+do_install_append() {
+ # install-catalog script contains hard-coded references to
+ # {sysconfdir}. Change it to ${D}${sysconfdir}.
+ sed -i -e "s|${sysconfdir}/sgml|${D}${sysconfdir}/sgml|g" ${D}${bindir}/install-catalog
+
+ ${D}${bindir}/install-catalog \
+ --add ${D}${sysconfdir}/sgml/sgml-ent.cat \
+ ${D}${datadir}/sgml/sgml-iso-entities-8879.1986/catalog
+
+ ${D}${bindir}/install-catalog \
+ --add ${D}${sysconfdir}/sgml/sgml-docbook.cat \
+ ${D}${sysconfdir}/sgml/sgml-ent.cat
+}
+
+sgml_common_native_mangle () {
+ # Revert back to ${sysconfdir} path in install-catalog
+ sed -i -e "s|${D}${sysconfdir}/sgml|${sysconfdir}/sgml|g" ${SYSROOT_DESTDIR}${STAGING_BINDIR}/install-catalog
+ # Change path from ${D}${datadir}/sgml/sgml-iso-entities-8879.1986/catalog to ${datadir}/sgml/sgml-iso-entities-8879.1986/catalog in sgml-ent.cat
+ sed -i -e "s|${D}${datadir}/sgml/sgml-iso-entities-8879.1986/catalog|${datadir}/sgml/sgml-iso-entities-8879.1986/catalog|g" ${SYSROOT_DESTDIR}${sysconfdir}/sgml/sgml-ent.cat
+ # Change path from ${D}${sysconfdir}/sgml/sgml-ent.cat|${sysconfdir}/sgml/sgml-ent.cat to ${sysconfdir}/sgml/sgml-ent.cat in sgml-ent.cat
+ sed -i -e "s|${D}${sysconfdir}/sgml/sgml-ent.cat|${sysconfdir}/sgml/sgml-ent.cat|g" ${SYSROOT_DESTDIR}${sysconfdir}/sgml/sgml-docbook.cat
+ # Remove ${D} path from catalog file created by install-catalog script
+ sed -i -e "s|${D}||g" ${SYSROOT_DESTDIR}${sysconfdir}/sgml/catalog
+}
diff --git a/meta/recipes-devtools/sgml-common/sgml-common_0.6.3.bb b/meta/recipes-devtools/sgml-common/sgml-common_0.6.3.bb
new file mode 100644
index 0000000000..92014a80ee
--- /dev/null
+++ b/meta/recipes-devtools/sgml-common/sgml-common_0.6.3.bb
@@ -0,0 +1,52 @@
+SUMMARY = "Base utilities for working with SGML and XML"
+DESCRIPTION = "The sgml-common package gathers very basic \
+stuff necessary to work with SGML and XML, such as xml.dcl, \
+a SGML declaration of XML; iso-entities, a list of the basic \
+SGML ISO entities; and install-catalog, a script used to \
+add entries to (or remove entries from) centralized catalogs \
+whose entries are pointers to SGML open catalogs, \
+as defined by OASIS."
+HOMEPAGE = "http://sources.redhat.com/docbook-tools/"
+LICENSE = "GPLv2+"
+# See the comments in license.patch when upgrading this recipe.
+# This is inteded to be a temporary workaround.
+LIC_FILES_CHKSUM = "file://LICENSE-GPLv2;md5=ab8a50abe86dfc859e148baae043c89b"
+SECTION = "base"
+
+PR = "r0"
+
+SRC_URI = "ftp://sources.redhat.com/pub/docbook-tools/new-trials/SOURCES/sgml-common-${PV}.tgz \
+ file://autohell.patch \
+ file://license.patch"
+
+SRC_URI[md5sum] = "103c9828f24820df86e55e7862e28974"
+SRC_URI[sha256sum] = "7dc418c1d361123ffc5e45d61f1b97257940a8eb35d0bfbbc493381cc5b1f959"
+
+inherit autotools
+
+do_compile_append() {
+ # install-catalog script contains hardcoded references to /etc/sgml
+ sed -i -e "s|/etc/sgml|${sysconfdir}/sgml|g" bin/install-catalog
+}
+
+FILES_sgml-common_append = " ${datadir}/sgml"
+
+pkg_postinst() {
+ install-catalog \
+ --add ${sysconfdir}/sgml/sgml-ent.cat \
+ ${datadir}/sgml/sgml-iso-entities-8879.1986/catalog
+
+ install-catalog \
+ --add ${sysconfdir}/sgml/sgml-docbook.cat \
+ ${sysconfdir}/sgml/sgml-ent.cat
+}
+
+pkg_postrm() {
+ install-catalog \
+ --remove ${sysconfdir}/sgml/sgml-ent.cat \
+ ${datadir}/sgml/sgml-iso-entities-8879.1986/catalog
+
+ install-catalog \
+ --remove ${sysconfdir}/sgml/sgml-docbook.cat \
+ ${sysconfdir}/sgml/sgml-ent.cat
+}
diff --git a/meta/recipes-devtools/sgmlspl/files/combined.patch b/meta/recipes-devtools/sgmlspl/files/combined.patch
new file mode 100644
index 0000000000..31536f53e6
--- /dev/null
+++ b/meta/recipes-devtools/sgmlspl/files/combined.patch
@@ -0,0 +1,457 @@
+Patch obtained from OpenEmbedded.
+
+Signed-off-by: Scott Garman <scott.a.garman@intel.com>
+--- libsgmls-perl-1.03ii.orig/Makefile
++++ libsgmls-perl-1.03ii/Makefile
+@@ -94,5 +94,5 @@
+ mv /tmp/${DIST} SGMLSpm
+
+ clean:
+- cd DOC; make clean
++ #cd DOC; make clean
+ rm -f *~ core *.tar *.tar.gz
+--- libsgmls-perl-1.03ii.orig/Makefile.PL
++++ libsgmls-perl-1.03ii/Makefile.PL
+@@ -0,0 +1,17 @@
++use ExtUtils::MakeMaker;
++# See lib/ExtUtils/MakeMaker.pm for details of how to influence
++# the contents of the Makefile that is written.
++WriteMakefile(
++ 'NAME' => 'SGMLS',
++ 'VERSION' => '1.03ii',
++ 'PM' => { 'SGMLS.pm' => '$(INST_LIBDIR)/SGMLS.pm',
++ 'Output.pm' => '$(INST_LIBDIR)/SGMLS/Output.pm',
++ 'Refs.pm' => '$(INST_LIBDIR)/SGMLS/Refs.pm',
++ 'skel.pl' => '$(INST_LIBDIR)/sgmlspl-specs/skel.pl',
++ },
++ 'MAN3PODS'=> { 'SGMLS.pm' => '$(INST_MAN3DIR)/SGMLS.3pm',
++ 'Output.pm' => '$(INST_MAN3DIR)/SGMLS::Output.3pm',
++ 'Refs.pm' => '$(INST_MAN3DIR)/SGMLS::Refs.3pm',
++ },
++ 'EXE_FILES' => [ 'sgmlspl', ],
++);
+--- libsgmls-perl-1.03ii.orig/Output.pm
++++ libsgmls-perl-1.03ii/Output.pm
+@@ -5,7 +5,7 @@
+ @ISA = Exporter;
+ @EXPORT = qw(output push_output pop_output);
+
+-$version = '$Id: Output.pm,v 1.6 1995/12/05 12:21:51 david Exp $';
++$version = '$Id: Output.pm,v 1.1 1999/10/26 19:30:45 ardo Exp $';
+
+ =head1 NAME
+
+--- libsgmls-perl-1.03ii.orig/Refs.pm
++++ libsgmls-perl-1.03ii/Refs.pm
+@@ -2,11 +2,11 @@
+
+ use Carp;
+
+-$version = '$Id: Refs.pm,v 1.5 1995/12/03 21:28:36 david Exp $';
++$version = '$Id: Refs.pm,v 1.1 1999/10/26 19:30:45 ardo Exp $';
+
+ =head1 NAME
+
+-SGMLS::Refs
++SGMLS::Refs - Forward refeence handling
+
+ =head1 SYNOPSIS
+
+--- libsgmls-perl-1.03ii.orig/sgmlspl.1
++++ libsgmls-perl-1.03ii/sgmlspl.1
+@@ -0,0 +1,47 @@
++.\" -*- nroff -*-
++.\" ----------------------------------------------------------------------
++.TH SGMLSPL 1 "October 26, 1999" "SGMLSPL" "SGMLSPL"
++.\"
++.\" ----------------------------------------------------------------------
++.SH "NAME"
++sgmlspl \- a simple post-processor for nsgmls
++.\"
++.\" ----------------------------------------------------------------------
++.SH "SYNOPSIS"
++.B sgmlspl
++.I "spec file"
++.\"
++.\" ----------------------------------------------------------------------
++.SH "DESCRIPTION"
++sgmlspl is a sample application to convert SGML documents to other
++formats by providing a specification file detailing exactly how to
++handle each element, external data entity, subdocument entity, CDATA
++string, record end, SDATA string, and processing instruction.
++
++To use sgmlspl, prepare a specification file containing regular perl5
++code. If the SGML document were named doc.sgml, the sgmlspl
++specification file were named, spec.pl, and the name of the new file
++were doc.latex, then use the following command in a Unix shell to
++convert the SGML document:
++
++nsgmls doc.sgml | sgmlspl spec.pl > doc.latex
++
++sgmlspl will pass any additional arguments on to the specification
++file, which can then process them in the regular perl5 fashion.
++.\"
++.\" ----------------------------------------------------------------------
++.SH "SEE ALSO"
++.TP
++.BR /usr/share/doc/sgmls-doc/sgmlspl/sgmlspl.html
++sgmlspl documentation in HTML format
++.TP
++.BR /usr/share/doc/sgmls-doc/SGMLSpm/sgmls.html
++SGMLS documentation in HTML format
++.TP
++.BR nsgmls (1)
++.\"
++.\" ----------------------------------------------------------------------
++.SH "AUTHOR"
++Ardo van Rangelrooij <ardo@debian.org>
++.\"
++.\" ----------------------------------------------------------------------
+--- libsgmls-perl-1.03ii.orig/sgmlspl
++++ libsgmls-perl-1.03ii/sgmlspl
+@@ -0,0 +1,323 @@
++#!/usr/bin/perl
++########################################################################
++# sgmlspl: a simple SGML postprocesser for the SGMLS and NSGMLS
++# parsers (requires SGMLS.pm library).
++#
++# Copyright (c) 1995 by David Megginson <dmeggins@aix1.uottawa.ca>
++#
++# This program 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., 675 Mass Ave, Cambridge, MA 02139, USA.
++#
++# $Log: sgmlspl,v $
++# Revision 1.1 2004/02/23 01:23:07 ardo
++# Added debian changes for version 1.03ii-27.
++#
++# Revision 1.1 2001/04/15 14:42:01 ardo
++# *** empty log message ***
++#
++# Revision 1.8 1995/12/03 21:46:31 david
++# Eliminated all use of the SGMLS_Event::key method.
++#
++# Revision 1.7 1995/11/15 20:22:24 david
++# Changed "use Output" to "use SGMLS::Output". Qualified the STDIN
++# filehandle for the SGMLS object with the main:: package name.
++#
++# Revision 1.6 1995/08/12 16:15:14 david
++# Revised version for 1.01 distribution.
++#
++# Revision 1.5 1995/04/27 11:52:25 david
++# Changed 'print' to 'main::output' for re handler; empty string
++# translates into an empty sub {} rather than a sub printing an empty
++# string; instead of evaluating every argument as a perl script, take
++# only the first as a perl script and the rest as its arguments; allow
++# empty scripts or scripts which do not end with '1;'; pass the event
++# itself as the second argument to each handler, after the event data.
++#
++# Revision 1.4 1995/04/23 14:44:58 david
++# Use the Output package. Fixed the $version variable.
++#
++# Revision 1.3 1995/04/22 21:02:49 david
++# Added some missing 'last SWITCH;' statements in the sgmls function.
++#
++# Revision 1.2 1995/04/22 20:58:48 david
++# Added $SGMLS_PL::version variable and changed SDATA notation from
++# [SDATA] to |SDATA|.
++#
++# Revision 1.1 1995/04/22 14:40:50 david
++# Initial revision
++#
++########################################################################
++
++use SGMLS::Output;
++
++package SGMLS_PL;
++use SGMLS;
++
++$version = '$Id: sgmlspl,v 1.1 2004/02/23 01:23:07 ardo Exp $';
++
++#
++# Set up handler defaults.
++#
++$start_document_handler = sub {};
++$end_document_handler = sub {};
++$start_element_handlers = { '' => sub {} };
++$end_element_handlers = { '' => sub {} };
++$cdata_handler = sub { main::output($_[0]); };
++$sdata_handlers = { '' => sub { main::output($_[0]);} };
++$re_handler = sub { main::output("\n"); };
++$pi_handler = sub { '' => sub {} };
++$entity_handlers = { '' => sub {} };
++$start_subdoc_handlers = { '' => sub {} };
++$end_subdoc_handlers = { '' => sub {} };
++$conforming_handler = sub {};
++
++#
++# Main access point: declare handlers for different SGML events.
++#
++# Usage: sgml(event, handler);
++#
++# The event may be one of the following strings, or a special pattern.
++# The generic events are as follow:
++#
++# 'start' The beginning of the document.
++# 'end' The end of the document.
++# 'start_element' The beginning of an element.
++# 'end_element' The end of an element.
++# 'cdata' Regular character data.
++# 'sdata' Special system-specific data.
++# 're' A record-end.
++# 'pi' A processing instruction.
++# 'entity' An external-entity reference.
++# 'start_subdoc' The beginning of a subdocument entity.
++# 'end_subdoc' The end of a subdocument entity.
++# 'conforming' The document is conforming.
++#
++# In addition to these generic events, it is possible to handlers
++# for certain specific, named events, as follow:
++#
++# '<GI>' The beginning of element GI.
++# '</GI>' The end of element GI.
++# '[SDATA]' The system-specific data SDATA.
++# '&ENAME;' A reference to the external entity ENAME.
++# '{ENAME}' The beginning of the subdocument-entity ENAME.
++# '{/ENAME}' The end of the subdocument-entity ENAME.
++#
++#
++# The handler may be a string, which will simply be printed when the
++# event occurs (this is usually useful only for the specific, named
++# events), or a reference to an anonymous subroutine, which will
++# receive two arguments: the event data and the event itself. For
++# example,
++#
++# sgml('<FOO>', "\n\\begin{foo}\n");
++#
++# and
++#
++# sgml('<FOO>', sub { output("\n\\begin{foo}\n"); });
++#
++# will have identical results.
++#
++sub main::sgml {
++ my ($spec,$handler) = (@_);
++ if (ref($handler) ne 'CODE') {
++ $handler =~ s/\\/\\\\/g;
++ $handler =~ s/'/\\'/g;
++ if ($handler eq '') {
++ $handler = sub {};
++ } else {
++ $handler = eval "sub { main::output('$handler'); };";
++ }
++ }
++ SWITCH: {
++ # start-document handler
++ $spec eq 'start' && do {
++ $start_document_handler = $handler;
++ last SWITCH;
++ };
++ # end-document handler
++ $spec eq 'end' && do {
++ $end_document_handler = $handler;
++ last SWITCH;
++ };
++ # start-element handler
++ $spec =~ /^<([^\/].*|)>$/ && do {
++ $start_element_handlers->{$1} = $handler;
++ last SWITCH;
++ };
++ # generic start-element handler
++ $spec eq 'start_element' && do {
++ $start_element_handlers->{''} = $handler;
++ last SWITCH;
++ };
++ # end-element handler
++ $spec =~ /^<\/(.*)>$/ && do {
++ $end_element_handlers->{$1} = $handler;
++ last SWITCH;
++ };
++ # generic end-element handler
++ $spec =~ 'end_element' && do {
++ $end_element_handlers->{''} = $handler;
++ last SWITCH;
++ };
++ # cdata handler
++ $spec eq 'cdata' && do {
++ $cdata_handler = $handler;
++ last SWITCH;
++ };
++ # sdata handler
++ $spec =~ /^\|(.*)\|$/ && do {
++ $sdata_handlers->{$1} = $handler;
++ last SWITCH;
++ };
++ # generic sdata handler
++ $spec eq 'sdata' && do {
++ $sdata_handlers->{''} = $handler;
++ last SWITCH;
++ };
++ # record-end handler
++ $spec eq 're' && do {
++ $re_handler = $handler;
++ last SWITCH;
++ };
++ # processing-instruction handler
++ $spec eq 'pi' && do {
++ $pi_handler = $handler;
++ last SWITCH;
++ };
++ # entity-reference handler
++ $spec =~ /^\&(.*);$/ && do {
++ $entity_handlers->{$1} = $handler;
++ last SWITCH;
++ };
++ # generic entity-reference handler
++ $spec eq 'entity' && do {
++ $entity_handlers->{''} = $handler;
++ last SWITCH;
++ };
++ # start-subdoc handler
++ $spec =~ /^\{([^\/].*|)\}$/ && do {
++ $start_subdoc_handlers->{$1} = $handler;
++ last SWITCH;
++ };
++ # generic start-subdoc handler
++ $spec eq 'start_subdoc' && do {
++ $start_subdoc_handlers->{''} = $handler;
++ last SWITCH;
++ };
++ # end-subdoc handler
++ $spec =~ /^\{\/(.*)\}$/ && do {
++ $end_subdoc_handlers->{$1} = $handler;
++ last SWITCH;
++ };
++ # generic end-subdoc handler
++ $spec eq 'end_subdoc' && do {
++ $end_subdoc_handlers->{''} = $handler;
++ last SWITCH;
++ };
++ # conforming handler
++ $spec eq 'conforming' && do {
++ $conforming_handler = $handler;
++ last SWITCH;
++ };
++
++ die "Bad SGML handler pattern: $spec\n";
++ }
++}
++
++
++#
++# The first argument on the command line is a perl module which will be
++# read here and evaluated in the 'main' package -- everything else will
++# be an argument to it.
++#
++package main;
++
++$ARGV = shift;
++unless ($ARGV eq '' || do 'sgmlspl-specs/' . $ARGV || do $ARGV) {
++ if (!-e $ARGV) {
++ die "FATAL: $ARGV does not exist.\n";
++ } elsif (!-r $ARGV) {
++ die "FATAL: $ARGV exists but is read-protected.\n";
++ } elsif ($@) {
++ die "FATAL: $@\n";
++ }
++}
++
++
++#
++# Do the actual work, using the SGMLS package.
++#
++package SGMLS_PL;
++
++$parse = new SGMLS(main::STDIN); # a new parse object
++
++&{$start_document_handler}(); # run the start handler.
++
++ # run the appropriate handler for each
++ # event
++while ($event = $parse->next_event) {
++ my $type = $event->type;
++ SWITCH: {
++ $type eq 'start_element' && do {
++ &{($start_element_handlers->{$event->data->name}||
++ $start_element_handlers->{''} || sub {})}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'end_element' && do {
++ &{($end_element_handlers->{$event->data->name}||
++ $end_element_handlers->{''} || sub {})}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'cdata' && do {
++ &{$cdata_handler}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'sdata' && do {
++ &{($sdata_handlers->{$event->data}||
++ $sdata_handlers->{''} || sub {})}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 're' && do {
++ &{$re_handler}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'pi' && do {
++ &{$pi_handler}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'entity' && do {
++ &{($entity_handlers->{$event->data->name}||
++ $entity_handlers->{''} || sub {})}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'start_subdoc' && do {
++ &{($start_subdoc_handlers->{$event->data->name}||
++ $start_subdoc_handlers->{''} || sub {})}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'end_subdoc' && do {
++ &{($end_subdoc_handlers->{$event->data->name}||
++ $end_subdoc_handlers->{''} || sub {})}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'conforming' && do {
++ &{$conforming_handler}($event->data,$event);
++ last SWITCH;
++ };
++
++ die "Unknown SGML event type: $type\n";
++ }
++}
++
++&{$end_document_handler}(); # run the end handler
+--- libsgmls-perl-1.03ii.orig/sgmlspl.pl
++++ libsgmls-perl-1.03ii/sgmlspl.pl
+@@ -238,7 +238,7 @@
+ package main;
+
+ $ARGV = shift;
+-unless ($ARGV eq '' || do $ARGV) {
++unless ($ARGV eq '' || do 'sgmlspl-specs/' . $ARGV || do $ARGV) {
+ if (!-e $ARGV) {
+ die "FATAL: $ARGV does not exist.\n";
+ } elsif (!-r $ARGV) {
+--- libsgmls-perl-1.03ii.orig/SGMLS.pm
++++ libsgmls-perl-1.03ii/SGMLS.pm
+@@ -1,7 +1,7 @@
+ package SGMLS;
+ use Carp;
+
+-$version = '$Revision: 1.14 $';
++$version = '$Revision: 1.1 $';
+
+ =head1 NAME
+
diff --git a/meta/recipes-devtools/sgmlspl/sgmlspl-native_1.03ii.bb b/meta/recipes-devtools/sgmlspl/sgmlspl-native_1.03ii.bb
new file mode 100644
index 0000000000..1fab417f94
--- /dev/null
+++ b/meta/recipes-devtools/sgmlspl/sgmlspl-native_1.03ii.bb
@@ -0,0 +1,17 @@
+SUMMARY = "A simple post-processor for SGMLS and NSGMLS"
+DESCRIPTION = "A simple post-processor for SGMLS and NSGMLS"
+HOMEPAGE = "http://search.cpan.org/src/DMEGG/SGMLSpm-1.03ii/DOC/HTML/SGMLSpm/sgmlspm.html"
+SECTION = "libs"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=18810669f13b87348459e611d31ab760"
+PR = "r0"
+
+SRC_URI = "http://www.cpan.org/authors/id/D/DM/DMEGG/SGMLSpm-${PV}.tar.gz \
+ file://combined.patch"
+
+SRC_URI[md5sum] = "5bcb197fd42e67d51c739b1414d514a7"
+SRC_URI[sha256sum] = "f06895c0206dada9f9e7f07ecaeb6a3651fd648f4820f49c1f76bfeaec2f2913"
+
+S = "${WORKDIR}/SGMLSpm"
+
+inherit native cpan
diff --git a/meta/recipes-devtools/subversion/subversion/disable-revision-install.patch b/meta/recipes-devtools/subversion/subversion/disable-revision-install.patch
index a1c60654cb..ad716d05ff 100644
--- a/meta/recipes-devtools/subversion/subversion/disable-revision-install.patch
+++ b/meta/recipes-devtools/subversion/subversion/disable-revision-install.patch
@@ -1,6 +1,8 @@
---- subversion-1.2.0-r0/Makefile.in.old 2005-07-17 22:28:21.898728312 +0200
-+++ subversion-1.2.0-r0/Makefile.in 2005-07-17 22:30:05.361999504 +0200
-@@ -260,7 +260,7 @@
+Index: subversion-1.6.15/Makefile.in
+===================================================================
+--- subversion-1.6.15.orig/Makefile.in 2010-11-17 06:47:23.000000000 -0800
++++ subversion-1.6.15/Makefile.in 2011-01-31 10:11:07.358779686 -0800
+@@ -305,7 +305,7 @@
clean: external-clean local-clean
distclean: external-distclean local-distclean
extraclean: external-extraclean local-extraclean
@@ -9,14 +11,24 @@
@INCLUDE_OUTPUTS@
-@@ -320,8 +320,8 @@
+@@ -363,13 +363,13 @@
local-install: @INSTALL_RULES@
### HACK!! Find a better way to do this
-revision-install:
-- subversion/svnversion/svnversion $(top_srcdir) /repos/svn/trunk > $(DESTDIR)$(includedir)/subversion-1/svn-revision.txt
+- test -d $(DESTDIR)$(includedir)/subversion-1 || \
+- $(MKDIR) $(DESTDIR)$(includedir)/subversion-1
+- (subversion/svnversion/svnversion $(top_srcdir) || \
+- svnversion $(top_srcdir) || \
+- echo "unknown"; \
+- ) > $(DESTDIR)$(includedir)/subversion-1/svn-revision.txt
+#revision-install:
-+# subversion/svnversion/svnversion $(top_srcdir) /repos/svn/trunk > $(DESTDIR)$(includedir)/subversion-1/svn-revision.txt
++# test -d $(DESTDIR)$(includedir)/subversion-1 || \
++# $(MKDIR) $(DESTDIR)$(includedir)/subversion-1
++# (subversion/svnversion/svnversion $(top_srcdir) || \
++# svnversion $(top_srcdir) || \
++# echo "unknown"; \
++# ) > $(DESTDIR)$(includedir)/subversion-1/svn-revision.txt
install-static: @INSTALL_STATIC_RULES@
diff --git a/meta/recipes-devtools/subversion/subversion_1.6.13.bb b/meta/recipes-devtools/subversion/subversion_1.6.13.bb
deleted file mode 100644
index bcdb6c22ea..0000000000
--- a/meta/recipes-devtools/subversion/subversion_1.6.13.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-DESCRIPTION = "The Subversion (svn) client"
-SECTION = "console/network"
-DEPENDS = "apr-util neon"
-RDEPENDS = "neon"
-LICENSE = "Apache BSD"
-HOMEPAGE = "http://subversion.tigris.org"
-
-PR = "r0"
-
-SRC_URI = "http://subversion.tigris.org/downloads/${P}.tar.bz2 \
- file://disable-revision-install.patch;patch=1 \
- file://neon-detection.patch;patch=1 \
- file://libtool2.patch;patch=1"
-
-SRC_URI[md5sum] = "7ae1c827689f21cf975804005be30aeb"
-SRC_URI[sha256sum] = "3a30327bdb04109f369586196ee4a6993cdab2cfa85c3134549f02c229bf0d15"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=2a69fef414e2cb907b4544298569300b"
-
-EXTRA_OECONF = "--with-neon=${STAGING_EXECPREFIXDIR} \
- --without-berkeley-db --without-apxs --without-apache \
- --without-swig --with-apr=${STAGING_BINDIR_CROSS} \
- --with-apr-util=${STAGING_BINDIR_CROSS}"
-
-inherit autotools
-
-export LDFLAGS += " -L${STAGING_LIBDIR} "
-
-acpaths = "-I build/ -I build/ac-macros/"
-
-do_configure_prepend () {
- rm -f ${S}/libtool
- rm -f ${S}/build/libtool.m4
- sed -i -e 's:with_sasl="/usr/local":with_sasl="${STAGING_DIR}":' ${S}/build/ac-macros/sasl.m4
-}
diff --git a/meta/recipes-devtools/subversion/subversion_1.6.15.bb b/meta/recipes-devtools/subversion/subversion_1.6.15.bb
new file mode 100644
index 0000000000..de40863cf5
--- /dev/null
+++ b/meta/recipes-devtools/subversion/subversion_1.6.15.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "The Subversion (svn) client"
+SECTION = "console/network"
+DEPENDS = "apr-util neon"
+RDEPENDS_${PN} = "neon"
+LICENSE = "Apache BSD"
+HOMEPAGE = "http://subversion.tigris.org"
+
+PR = "r0"
+
+SRC_URI = "http://subversion.tigris.org/downloads/${P}.tar.bz2 \
+ file://disable-revision-install.patch;patch=1 \
+ file://neon-detection.patch;patch=1 \
+ file://libtool2.patch;patch=1"
+
+SRC_URI[md5sum] = "113fca1d9e4aa389d7dc2b210010fa69"
+SRC_URI[sha256sum] = "b2919d603a5f3c19f42e3265c4b930e2376c43b3969b90ef9c42b2f72d5aaa45"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=2a69fef414e2cb907b4544298569300b"
+
+EXTRA_OECONF = "--with-neon=${STAGING_EXECPREFIXDIR} \
+ --without-berkeley-db --without-apxs --without-apache \
+ --without-swig --with-apr=${STAGING_BINDIR_CROSS} \
+ --with-apr-util=${STAGING_BINDIR_CROSS}"
+
+inherit autotools
+
+export LDFLAGS += " -L${STAGING_LIBDIR} "
+
+acpaths = "-I build/ -I build/ac-macros/"
+
+do_configure_prepend () {
+ rm -f ${S}/libtool
+ rm -f ${S}/build/libtool.m4
+ sed -i -e 's:with_sasl="/usr/local":with_sasl="${STAGING_DIR}":' ${S}/build/ac-macros/sasl.m4
+}
diff --git a/meta/recipes-devtools/tcf-agent/tcf-agent_svn.bb b/meta/recipes-devtools/tcf-agent/tcf-agent_svn.bb
index b4c70ec8b8..6f06a9c547 100644
--- a/meta/recipes-devtools/tcf-agent/tcf-agent_svn.bb
+++ b/meta/recipes-devtools/tcf-agent/tcf-agent_svn.bb
@@ -6,7 +6,7 @@ LICENSE = "EPLv1.0 | EDLv1.0"
LIC_FILES_CHKSUM = "file://../epl-v10.html;md5=7aa4215a330a0a4f6a1cbf8da1a0879f \
file://../agent/edl-v10.html;md5=522a390a83dc186513f0500543ad3679"
-PV = "0.3.0+svnr${SRCREV}"
+PV = "0.3.0+svnr${SRCPV}"
PR = "r0"
SRC_URI = "svn://dev.eclipse.org/svnroot/dsdp/org.eclipse.tm.tcf/;module=tags/0.3.0/;proto=http \
diff --git a/meta/recipes-devtools/ubootchart/ubootchart_svn.bb b/meta/recipes-devtools/ubootchart/ubootchart_svn.bb
index 6897f18153..c16be822da 100644
--- a/meta/recipes-devtools/ubootchart/ubootchart_svn.bb
+++ b/meta/recipes-devtools/ubootchart/ubootchart_svn.bb
@@ -2,10 +2,10 @@ DESCRIPTION = "A boot profiling tool"
HOMEPAGE = "http://code.google.com/p/ubootchart/"
LICENSE = "GPLv3"
LIC_FILES_CHKSUM = "file://COPYING;md5=8f0e2cd40e05189ec81232da84bd6e1a"
-PV = "0.0+r${SRCREV}"
-PR = "r4"
+PV = "0.0+r${SRCPV}"
+PR = "r5"
-#RRECOMMENDS = "acct"
+#RRECOMMENDS_${PN} = "acct"
SRC_URI = "svn://ubootchart.googlecode.com/svn/;proto=http;module=trunk \
file://sysvinit.patch;patch=1;pnum=0 \
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/001-2.2b47-2.2b51.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/001-2.2b47-2.2b51.patch
index 886ce92b34..886ce92b34 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/001-2.2b47-2.2b51.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/001-2.2b47-2.2b51.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/002-destdir.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/002-destdir.patch
index 9388332675..9388332675 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/002-destdir.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/002-destdir.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/003-manpages.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/003-manpages.patch
index a17a8dcf55..a17a8dcf55 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/003-manpages.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/003-manpages.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/004-strsignal.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/004-strsignal.patch
index 3ac4ed740c..3ac4ed740c 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/004-strsignal.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/004-strsignal.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/005-sys-time.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/005-sys-time.patch
index c21fb05e8d..c21fb05e8d 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/005-sys-time.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/005-sys-time.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/006-reiserfs.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/006-reiserfs.patch
index abdc67476e..abdc67476e 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/006-reiserfs.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/006-reiserfs.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/007-map.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/007-map.patch
index 89baabe1c2..89baabe1c2 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/007-map.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/007-map.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/008-configure.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/008-configure.patch
index a6d45993ee..a6d45993ee 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/008-configure.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/008-configure.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/009-multirw.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/009-multirw.patch
index 65b0b9eee5..65b0b9eee5 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/009-multirw.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/009-multirw.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/010-realpath.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/010-realpath.patch
index c3b5d58151..c3b5d58151 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/010-realpath.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/010-realpath.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/011-fno-strict-aliasing.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/011-fno-strict-aliasing.patch
index 695b8c7d19..695b8c7d19 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/011-fno-strict-aliasing.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/011-fno-strict-aliasing.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/012-nostrip.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/012-nostrip.patch
index a815ee4373..a815ee4373 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/012-nostrip.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/012-nostrip.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/013-mntpathlen.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/013-mntpathlen.patch
index 1f10d3c941..1f10d3c941 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/013-mntpathlen.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/013-mntpathlen.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/014-uninitialized.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/014-uninitialized.patch
index 233c08a2f3..233c08a2f3 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/014-uninitialized.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/014-uninitialized.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/015-setattr.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/015-setattr.patch
index cbfb8e8214..cbfb8e8214 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/015-setattr.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/015-setattr.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/016-makefile.in.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/016-makefile.in.patch
index 634ce46090..634ce46090 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/016-makefile.in.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/016-makefile.in.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/017-wrs-dynamic-rpc.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/017-wrs-dynamic-rpc.patch
index 18e12de789..18e12de789 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/017-wrs-dynamic-rpc.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/017-wrs-dynamic-rpc.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/018-remove-tcp-wrappers.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/018-remove-tcp-wrappers.patch
index 95ecdee611..95ecdee611 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/018-remove-tcp-wrappers.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/018-remove-tcp-wrappers.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/019-pid-before-fork.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/019-pid-before-fork.patch
index 960ca8e47f..960ca8e47f 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/019-pid-before-fork.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/019-pid-before-fork.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/020-undefined-chmod-fix.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/020-undefined-chmod-fix.patch
index 0f1108c214..0f1108c214 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/020-undefined-chmod-fix.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/020-undefined-chmod-fix.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/021-nolibwrap.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/021-nolibwrap.patch
index c0901fadcc..c0901fadcc 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/021-nolibwrap.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/021-nolibwrap.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/022-add-close-on-exec-descriptors.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/022-add-close-on-exec-descriptors.patch
index 011ae74cde..011ae74cde 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/022-add-close-on-exec-descriptors.patch
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/022-add-close-on-exec-descriptors.patch
diff --git a/meta/recipes-devtools/unfs-server/unfs-server_2.1+2.2beta47.bb b/meta/recipes-devtools/unfs-server/unfs-server_2.1+2.2beta47.bb
new file mode 100644
index 0000000000..8ed2e33f95
--- /dev/null
+++ b/meta/recipes-devtools/unfs-server/unfs-server_2.1+2.2beta47.bb
@@ -0,0 +1,75 @@
+DESCRIPTION = "Userspace NFS server"
+SECTION = "console/network"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
+
+RDEPENDS_${PN} = "pseudo"
+RDEPENDS_${PN}_virtclass-native = "pseudo-native"
+RDEPENDS_${PN}_virtclass-nativesdk = "pseudo-nativesdk"
+BASEPV = "2.2beta47"
+PR = "r0"
+
+SRC_URI = "ftp://linux.mathematik.tu-darmstadt.de/pub/linux/oldstuff/people/okir/nfs-server-${BASEPV}.tar.gz \
+ file://001-2.2b47-2.2b51.patch \
+ file://002-destdir.patch \
+ file://003-manpages.patch \
+ file://004-strsignal.patch \
+ file://005-sys-time.patch \
+ file://006-reiserfs.patch \
+ file://007-map.patch \
+ file://008-configure.patch \
+ file://009-multirw.patch \
+ file://010-realpath.patch \
+ file://011-fno-strict-aliasing.patch \
+ file://012-nostrip.patch \
+ file://013-mntpathlen.patch \
+ file://014-uninitialized.patch \
+ file://015-setattr.patch \
+ file://016-makefile.in.patch \
+ file://017-wrs-dynamic-rpc.patch \
+ file://018-remove-tcp-wrappers.patch \
+ file://019-pid-before-fork.patch \
+ file://020-undefined-chmod-fix.patch \
+ file://021-nolibwrap.patch \
+ file://022-add-close-on-exec-descriptors.patch \
+ "
+
+SRC_URI[md5sum] = "79a29fe9f79b2f3241d4915767b8c511"
+SRC_URI[sha256sum] = "7eeaf3cf0b9d96167a5ba03bf1046e39b4585de1339a55b285e673c06ba415cb"
+
+S = "${WORKDIR}/nfs-server-${BASEPV}/"
+
+inherit autotools
+
+BBCLASSEXTEND = "native nativesdk"
+
+CFLAGS = "-fPIE -fstack-protector-all"
+LDFLAGS = "-pie"
+
+EXTRA_OECONF = "--enable-ugid-dynamic \
+ --enable-ugid-nis \
+ --enable-host-access \
+ --with-exports-uid=0 \
+ --with-exports-gid=0 \
+ --enable-mount-logging \
+ --with-devtab=${DESTDIR}${base_prefix}/var/lib/nfs/devtab \
+ "
+
+do_configure_prepend () {
+ # Remove pregenerated xdr functions. They use long
+ # instead of u32, which produces incorrect code on
+ # 64-bit architectures:
+ rm -f *_xdr.c
+
+ mv aclocal.m4 acinclude.m4
+}
+
+# This recipe is intended for -native and -nativesdk builds only,
+# not target installs:
+python __anonymous () {
+ import re
+
+ pn = bb.data.getVar("PN", d, 1)
+ if not pn.endswith('-native') and not pn.endswith('-nativesdk'):
+ raise bb.parse.SkipPackage("unfs-server is intended for native/nativesdk builds only")
+}
diff --git a/meta/recipes-devtools/unfs-server/unfs-server_2.2beta47.bb b/meta/recipes-devtools/unfs-server/unfs-server_2.2beta47.bb
deleted file mode 100644
index 89313d6972..0000000000
--- a/meta/recipes-devtools/unfs-server/unfs-server_2.2beta47.bb
+++ /dev/null
@@ -1,74 +0,0 @@
-DESCRIPTION = "Userspace NFS server"
-SECTION = "console/network"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
-
-RDEPENDS = "pseudo"
-RDEPENDS_virtclass-native = "pseudo-native"
-RDEPENDS_virtclass-nativesdk = "pseudo-nativesdk"
-PR = "r1"
-
-SRC_URI = "ftp://linux.mathematik.tu-darmstadt.de/pub/linux/oldstuff/people/okir/nfs-server-${PV}.tar.gz \
- file://001-2.2b47-2.2b51.patch \
- file://002-destdir.patch \
- file://003-manpages.patch \
- file://004-strsignal.patch \
- file://005-sys-time.patch \
- file://006-reiserfs.patch \
- file://007-map.patch \
- file://008-configure.patch \
- file://009-multirw.patch \
- file://010-realpath.patch \
- file://011-fno-strict-aliasing.patch \
- file://012-nostrip.patch \
- file://013-mntpathlen.patch \
- file://014-uninitialized.patch \
- file://015-setattr.patch \
- file://016-makefile.in.patch \
- file://017-wrs-dynamic-rpc.patch \
- file://018-remove-tcp-wrappers.patch \
- file://019-pid-before-fork.patch \
- file://020-undefined-chmod-fix.patch \
- file://021-nolibwrap.patch \
- file://022-add-close-on-exec-descriptors.patch \
- "
-
-SRC_URI[md5sum] = "79a29fe9f79b2f3241d4915767b8c511"
-SRC_URI[sha256sum] = "7eeaf3cf0b9d96167a5ba03bf1046e39b4585de1339a55b285e673c06ba415cb"
-
-S = "${WORKDIR}/nfs-server-${PV}/"
-
-inherit autotools
-
-BBCLASSEXTEND = "native nativesdk"
-
-CFLAGS = "-fPIE -fstack-protector-all"
-LDFLAGS = "-pie"
-
-EXTRA_OECONF = "--enable-ugid-dynamic \
- --enable-ugid-nis \
- --enable-host-access \
- --with-exports-uid=0 \
- --with-exports-gid=0 \
- --enable-mount-logging \
- --with-devtab=${DESTDIR}${base_prefix}/var/lib/nfs/devtab \
- "
-
-do_configure_prepend () {
- # Remove pregenerated xdr functions. They use long
- # instead of u32, which produces incorrect code on
- # 64-bit architectures:
- rm -f *_xdr.c
-
- mv aclocal.m4 acinclude.m4
-}
-
-# This recipe is intended for -native and -nativesdk builds only,
-# not target installs:
-python __anonymous () {
- import re
-
- pn = bb.data.getVar("PN", d, 1)
- if not pn.endswith('-native') and not pn.endswith('-nativesdk'):
- raise bb.parse.SkipPackage("unfs-server is intended for native/nativesdk builds only")
-}
diff --git a/meta/recipes-devtools/unifdef/unifdef-native_2.6.18+git.bb b/meta/recipes-devtools/unifdef/unifdef-native_2.6.18+git.bb
index d879782b29..1b9381646c 100644
--- a/meta/recipes-devtools/unifdef/unifdef-native_2.6.18+git.bb
+++ b/meta/recipes-devtools/unifdef/unifdef-native_2.6.18+git.bb
@@ -2,6 +2,8 @@ DESCRIPTION = "Kernel header preprocessor"
SECTION = "devel"
LICENSE = "GPL"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/unifdef.c;endline=32;md5=1a33f5c39aa718a89058721df61979bd"
+
SRC_URI = "file://unifdef.c"
inherit native
diff --git a/meta/recipes-extended/at/at_3.1.12.bb b/meta/recipes-extended/at/at_3.1.12.bb
index c010b3946b..3a9449773e 100644
--- a/meta/recipes-extended/at/at_3.1.12.bb
+++ b/meta/recipes-extended/at/at_3.1.12.bb
@@ -7,7 +7,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=4325afd396febcb659c36b49533135d4"
DEPENDS = "flex libpam initscripts"
RCONFLICTS_${PN} = "atd"
RREPLACES_${PN} = "atd"
-PR = "r3"
+PR = "r4"
SRC_URI = "${DEBIAN_MIRROR}/main/a/at/at_${PV}.orig.tar.gz \
file://configure.patch \
@@ -25,8 +25,8 @@ SRC_URI[sha256sum] = "7c55c6ab4fbe8add9e68f31b2b0ebf3fe805c9a4e7cfb2623a3d8a4789
EXTRA_OECONF += "ac_cv_path_SENDMAIL=/bin/true \
--with-daemon_username=root \
--with-daemon_groupname=root \
- --with-jobdir=/var/spool/cron/atjobs \
- --with-atspool=/var/spool/cron/atspool"
+ --with-jobdir=/var/spool/at/jobs \
+ --with-atspool=/var/spool/at/spool"
inherit autotools
@@ -39,8 +39,27 @@ do_install () {
install -d ${D}${sysconfdir}/init.d
install -d ${D}${sysconfdir}/rcS.d
- install -m 0755 ${WORKDIR}/S99at ${D}${sysconfdir}/init.d/at
- ln -sf ../init.d/at ${D}${sysconfdir}/rcS.d/S99at
+ install -m 0755 ${WORKDIR}/S99at ${D}${sysconfdir}/init.d/atd
+ ln -sf ../init.d/atd ${D}${sysconfdir}/rcS.d/S99at
+}
+
+pkg_postinst_${PN} () {
+ if [ "x$D" != "x" ] ; then
+ exit 1
+ fi
+
+ # below is necessary to allow at usable to normal users
+ # now at is has its own /var/spool/at instead of under /var/spool/cron
+ # this way is better to allow setgid on both sides
+ grep "^daemon" /etc/group || groupadd daemon
+ chown root:daemon /usr/bin/at
+ chmod 2755 /usr/bin/at
+
+ chown root:daemon -R /var/spool/at
+ chmod 770 -R /var/spool/at
+
+ chown root:daemon /etc/at.deny
+ chmod 640 /etc/at.deny
}
PARALLEL_MAKE = ""
diff --git a/meta/recipes-extended/augeas/augeas_0.7.3.bb b/meta/recipes-extended/augeas/augeas_0.7.3.bb
deleted file mode 100644
index 2549f6c89a..0000000000
--- a/meta/recipes-extended/augeas/augeas_0.7.3.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require augeas.inc
-
-PR = "r0"
-
-SRC_URI[md5sum] = "d907943fc21c2d1db5dc8d97ec02a9e5"
-SRC_URI[sha256sum] = "10be72446699fdcaad66e800bd83a74b4af4da40348eaca04effd8677c11514a"
diff --git a/meta/recipes-extended/augeas/augeas_0.7.4.bb b/meta/recipes-extended/augeas/augeas_0.7.4.bb
new file mode 100644
index 0000000000..eada58f103
--- /dev/null
+++ b/meta/recipes-extended/augeas/augeas_0.7.4.bb
@@ -0,0 +1,6 @@
+require augeas.inc
+
+PR = "r0"
+
+SRC_URI[md5sum] = "e3ddce5305a15bdb876ef7feec9214d1"
+SRC_URI[sha256sum] = "02ba7b4f1d0796dff6ea5f8cc5f4949e4ba30b7fa2f36a0c8a5079f9975060d1"
diff --git a/meta/recipes-extended/bash/bash.inc b/meta/recipes-extended/bash/bash.inc
index aa8cac8222..a87b87ff4b 100644
--- a/meta/recipes-extended/bash/bash.inc
+++ b/meta/recipes-extended/bash/bash.inc
@@ -17,6 +17,11 @@ sbindir = "/sbin"
EXTRA_OECONF = "--enable-job-control"
export CC_FOR_BUILD = "${BUILD_CC}"
+ALTERNATIVE_NAME = "sh"
+ALTERNATIVE_PATH = "${base_bindir}/bash"
+ALTERNATIVE_LINK = "${base_bindir}/sh"
+ALTERNATIVE_PRIORITY = "100"
+
do_configure () {
gnu-configize
oe_runconf
diff --git a/meta/recipes-extended/bash/bash_3.2.48.bb b/meta/recipes-extended/bash/bash_3.2.48.bb
index ee563d626a..e5a3e3643d 100644
--- a/meta/recipes-extended/bash/bash_3.2.48.bb
+++ b/meta/recipes-extended/bash/bash_3.2.48.bb
@@ -6,7 +6,7 @@ LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=fd5d9bcabd8ed5a54a01ce8d183d592a"
DEPENDS = "ncurses"
-PR = "r6"
+PR = "r7"
SRC_URI = "${GNU_MIRROR}/bash/bash-${PV}.tar.gz \
http://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-049;apply=yes;striplevel=0 \
diff --git a/meta/recipes-extended/bash/bash_4.1.bb b/meta/recipes-extended/bash/bash_4.1.bb
index 6a558ed2cd..cea40420cb 100644
--- a/meta/recipes-extended/bash/bash_4.1.bb
+++ b/meta/recipes-extended/bash/bash_4.1.bb
@@ -1,6 +1,6 @@
require bash.inc
-PR = "r0"
+PR = "r1"
SRC_URI = "${GNU_MIRROR}/bash/${BPN}-${PV}.tar.gz;name=tarball \
http://ftp.gnu.org/gnu/bash/bash-4.1-patches/bash41-001;apply=yes;striplevel=0;name=patch001 \
diff --git a/meta/recipes-extended/blktool/blktool_4-6.bb b/meta/recipes-extended/blktool/blktool_4-6.bb
index 1e4ca9dc15..86d2d0d3a1 100644
--- a/meta/recipes-extended/blktool/blktool_4-6.bb
+++ b/meta/recipes-extended/blktool/blktool_4-6.bb
@@ -1,10 +1,14 @@
-SUMMARY = "tune low-level block device parameters"
-DESCRIPTION = "blktool is used for querying and/or changing settings of a block device. It is like hdparm but a more general tool, as it works on SCSI, IDE and SATA devices"
+SUMMARY = "Tune low-level block device parameters"
+DESCRIPTION = "blktool is used for querying and/or changing settings \
+of a block device. It is like hdparm but a more general tool, as it \
+works on SCSI, IDE and SATA devices."
HOMEPAGE = "http://packages.debian.org/unstable/admin/blktool"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
file://blktool.c;beginline=7;endline=8;md5=a5e798ea98fd50972088968a15e5f373"
+
DEPENDS = "glib-2.0"
+PR = "r0"
SRC_URI = "${DEBIAN_MIRROR}/main/b/blktool/blktool_4.orig.tar.gz;name=tarball \
${DEBIAN_MIRROR}/main/b/blktool/blktool_4-6.diff.gz;apply=yes;name=patch"
@@ -15,7 +19,6 @@ SRC_URI[tarball.sha256sum] = "b1e6d5912546d2a4b704ec65c2b9664aa3b4663e7d800e0680
SRC_URI[patch.md5sum] = "2d1bc2f2c38b65d47e27da7c7508d17f"
SRC_URI[patch.sha256sum] = "999f2062203e389327d997724621be37bea9c98fa226238f9f4eb4a6ea25bd4b"
-PR = "r0"
S = "${WORKDIR}/${PN}-4.orig"
inherit autotools
diff --git a/meta/recipes-extended/byacc/byacc_20100610.bb b/meta/recipes-extended/byacc/byacc_20100610.bb
deleted file mode 100644
index f02a11ba47..0000000000
--- a/meta/recipes-extended/byacc/byacc_20100610.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-PR = "r0"
-LICENSE="other-BSD"
-LIC_FILES_CHKSUM = "file://package/debian/copyright;md5=4dc4c30f840a7203fb6edf20b3db849e"
-require byacc.inc
-
-SRC_URI[md5sum] = "3063667be3bfcd844bdac9afd560954b"
-SRC_URI[sha256sum] = "02bcfb9262127fe23abe2c42f02de12c3ea51a9fffc9fb82ffa3bda7289d72c1"
diff --git a/meta/recipes-extended/byacc/byacc_20101127.bb b/meta/recipes-extended/byacc/byacc_20101127.bb
new file mode 100644
index 0000000000..b6b7b7058f
--- /dev/null
+++ b/meta/recipes-extended/byacc/byacc_20101127.bb
@@ -0,0 +1,7 @@
+PR = "r0"
+LICENSE="other-BSD"
+LIC_FILES_CHKSUM = "file://package/debian/copyright;md5=4dc4c30f840a7203fb6edf20b3db849e"
+require byacc.inc
+
+SRC_URI[md5sum] = "5931a27e43102dc868745bf4dce91fb4"
+SRC_URI[sha256sum] = "c172c7ed2ee2130510d4d6e134bcac791b217e4883051137690613ac011aca47"
diff --git a/meta/recipes-extended/cronie/cronie/crontab b/meta/recipes-extended/cronie/cronie/crontab
new file mode 100644
index 0000000000..cc9169eda9
--- /dev/null
+++ b/meta/recipes-extended/cronie/cronie/crontab
@@ -0,0 +1,10 @@
+# /etc/crontab: system-wide crontab
+# Unlike any other crontab you don't have to run the `crontab'
+# command to install the new version when you edit this file
+# and files in /etc/cron.d. These files also have username fields,
+# that none of the other crontabs do.
+
+SHELL=/bin/sh
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+# m h dom mon dow user command
diff --git a/meta/recipes-extended/cronie/cronie_1.4.6.bb b/meta/recipes-extended/cronie/cronie_1.4.6.bb
index 6b4c64e3b1..09714c7f74 100644
--- a/meta/recipes-extended/cronie/cronie_1.4.6.bb
+++ b/meta/recipes-extended/cronie/cronie_1.4.6.bb
@@ -14,10 +14,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=963ea0772a2adbdcd607a9b2ec320c11 \
SECTION = "utils"
-PR = "r0"
+PR = "r1"
SRC_URI = "https://fedorahosted.org/releases/c/r/cronie/cronie-${PV}.tar.gz \
- file://crond.init"
+ file://crond.init \
+ file://crontab"
SRC_URI[md5sum] = "968e3d3e7c8e1d0588d533883482d3fa"
SRC_URI[sha256sum] = "4435484c28a4452ee37db27182675660cdebf16d8956771b28c8a6f2e9c8048b"
@@ -32,4 +33,32 @@ do_install_append () {
install -d ${D}${sysconfdir}/init.d/
install -m 0644 ${S}/crond.sysconfig ${D}${sysconfdir}/sysconfig/crond
install -m 0755 ${WORKDIR}/crond.init ${D}${sysconfdir}/init.d/crond
+
+ # below are necessary for a complete cron environment
+ install -d ${D}${localstatedir}/spool/cron
+ install -m 0755 ${WORKDIR}/crontab ${D}${sysconfdir}/
+ mkdir -p ${D}${sysconfdir}/cron.d
+ mkdir -p ${D}${sysconfdir}/cron.hourly
+ mkdir -p ${D}${sysconfdir}/cron.daily
+ mkdir -p ${D}${sysconfdir}/cron.weekly
+ mkdir -p ${D}${sysconfdir}/cron.monthly
+}
+
+pkg_postinst_${PN} () {
+ if [ "x$D" != "x" ] ; then
+ exit 1
+ fi
+
+ # below setting is necessary to allow normal user using crontab
+
+ # add 'crontab' group and setgid for crontab binary
+ grep crontab /etc/group || addgroup crontab
+ chown root:crontab /usr/bin/crontab
+ chmod 2755 /usr/bin/crontab
+
+ # allow 'crontab' group write to /var/spool/cron
+ chown root:crontab /var/spool/cron
+ chmod 770 /var/spool/cron
+
+ chmod 600 /etc/crontab
}
diff --git a/meta/recipes-extended/cups/cups-1.4.6/0001-don-t-try-to-run-generated-binaries.patch b/meta/recipes-extended/cups/cups-1.4.6/0001-don-t-try-to-run-generated-binaries.patch
new file mode 100644
index 0000000000..7b544ca0e3
--- /dev/null
+++ b/meta/recipes-extended/cups/cups-1.4.6/0001-don-t-try-to-run-generated-binaries.patch
@@ -0,0 +1,68 @@
+From 90069586167b930befce7303aea57078f04b4ed8 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Sun, 30 Jan 2011 16:37:27 +0100
+Subject: [PATCH] don't try to run generated binaries
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+---
+ ppdc/Makefile | 30 +++++++++++++++---------------
+ 1 files changed, 15 insertions(+), 15 deletions(-)
+
+diff --git a/ppdc/Makefile b/ppdc/Makefile
+index 0288d47..fc87f1b 100644
+--- a/ppdc/Makefile
++++ b/ppdc/Makefile
+@@ -243,8 +243,8 @@ genstrings: genstrings.o libcupsppdc.a ../cups/libcups.a \
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o genstrings genstrings.o \
+ libcupsppdc.a ../cups/libcups.a $(LIBGSSAPI) $(SSLLIBS) \
+ $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
+- echo Generating localization strings...
+- ./genstrings >sample.c
++# echo Generating localization strings...
++# ./genstrings >sample.c
+
+
+ #
+@@ -261,9 +261,9 @@ ppdc-static: ppdc.o libcupsppdc.a ../cups/libcups.a foo.drv foo-fr.po
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o ppdc-static ppdc.o libcupsppdc.a \
+ ../cups/libcups.a $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
+ $(COMMONLIBS) $(LIBZ)
+- echo Testing PPD compiler...
+- ./ppdc-static -l en,fr -I ../data foo.drv
+- ./ppdc-static -l en,fr -z -I ../data foo.drv
++# echo Testing PPD compiler...
++# ./ppdc-static -l en,fr -I ../data foo.drv
++# ./ppdc-static -l en,fr -z -I ../data foo.drv
+
+
+ #
+@@ -290,16 +290,16 @@ ppdi-static: ppdc-static ppdi.o libcupsppdc.a ../cups/libcups.a
+ ../cups/libcups.a $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
+ $(COMMONLIBS) $(LIBZ)
+ echo Testing PPD importer...
+- $(RM) -r ppd ppd2 sample-import.drv
+- ./ppdc-static -I ../data sample.drv
+- ./ppdi-static -I ../data -o sample-import.drv ppd/*
+- ./ppdc-static -I ../data -d ppd2 sample-import.drv
+- if diff -r ppd ppd2 >/dev/null; then \
+- echo PPD import OK; \
+- else \
+- echo PPD import FAILED; \
+- exit 1; \
+- fi
++# $(RM) -r ppd ppd2 sample-import.drv
++# ./ppdc-static -I ../data sample.drv
++# ./ppdi-static -I ../data -o sample-import.drv ppd/*
++# ./ppdc-static -I ../data -d ppd2 sample-import.drv
++# if diff -r ppd ppd2 >/dev/null; then \
++# echo PPD import OK; \
++# else \
++# echo PPD import FAILED; \
++# exit 1; \
++# fi
+
+
+ #
+--
+1.6.6.1
+
diff --git a/meta/recipes-extended/cups/cups-1.4.6/use_echo_only_in_init.patch b/meta/recipes-extended/cups/cups-1.4.6/use_echo_only_in_init.patch
new file mode 100644
index 0000000000..21ff0e535b
--- /dev/null
+++ b/meta/recipes-extended/cups/cups-1.4.6/use_echo_only_in_init.patch
@@ -0,0 +1,11 @@
+--- a/init/cups.sh.in.orig 2008-10-04 16:50:46.000000000 -0300
++++ b/init/cups.sh.in 2008-10-04 16:51:39.000000000 -0300
+@@ -68,7 +68,7 @@
+ ECHO_ERROR=:
+ ;;
+
+- Linux*)
++ DISABLELinux*)
+ IS_ON=/bin/true
+ if test -f /etc/init.d/functions; then
+ . /etc/init.d/functions
diff --git a/meta/recipes-extended/cups/cups14.inc b/meta/recipes-extended/cups/cups14.inc
new file mode 100644
index 0000000000..e64f239a6a
--- /dev/null
+++ b/meta/recipes-extended/cups/cups14.inc
@@ -0,0 +1,85 @@
+SUMMARY = "An Internet printing system for Unix"
+DESCRIPTION = "An Internet printing system for Unix."
+SECTION = "console/utils"
+LICENSE = "GPLv2 LGPLv2"
+DEPENDS = "gnutls libpng jpeg dbus dbus-glib zlib"
+PROVIDES = "cups14"
+
+SRC_URI = "ftp://ftp.easysw.com/pub/cups/${PV}/cups-${PV}-source.tar.bz2"
+
+LEAD_SONAME = "libcupsdriver.so"
+
+inherit autotools binconfig
+
+EXTRA_OECONF = " \
+ --enable-gnutls \
+ --enable-dbus \
+ --enable-browsing \
+ --disable-openssl \
+ --disable-tiff \
+ --without-php \
+ --without-perl \
+ --without-python \
+ --without-java \
+ "
+
+
+do_configure() {
+ gnu-configize
+ libtoolize --force
+ DSOFLAGS="${LDFLAGS}" oe_runconf
+}
+
+do_compile () {
+ sed -i s:STRIP:NOSTRIP: Makedefs
+ sed -i s:serial:: backend/Makefile
+
+ echo "all:" > man/Makefile
+ echo "libs:" >> man/Makefile
+ echo "install:" >> man/Makefile
+ echo "install-data:" >> man/Makefile
+ echo "install-exec:" >> man/Makefile
+ echo "install-headers:" >> man/Makefile
+ echo "install-libs:" >> man/Makefile
+
+ oe_runmake "SSLLIBS=-lgnutls -L${STAGING_LIBDIR}" \
+ "LIBPNG=-lpng -lm -L${STAGING_LIBDIR}" \
+ "LIBJPEG=-ljpeg -L${STAGING_LIBDIR}" \
+ "LIBZ=-lz -L${STAGING_LIBDIR}" \
+ "-I."
+}
+
+fakeroot do_install () {
+ oe_runmake "DSTROOT=${D}" install
+
+ # This directory gets installed with perms 511, which makes packaging fail
+ chmod 0711 "${D}/${localstatedir}/run/cups/certs"
+}
+
+python do_package_append() {
+ # Change permissions back the way they were, they probably had a reason...
+ workdir = bb.data.getVar('WORKDIR', d, 1)
+ os.system('chmod 0511 %s/install/cups/var/run/cups/certs' % workdir)
+}
+
+PACKAGES =+ "${PN}-lib ${PN}-libimage"
+
+FILES_${PN}-lib = "${libdir}/libcups.so.*"
+
+FILES_${PN}-libimage = "${libdir}/libcupsimage.so.*"
+
+FILES_${PN}-dbg += "${libdir}/cups/backend/.debug \
+ ${libdir}/cups/cgi-bin/.debug \
+ ${libdir}/cups/filter/.debug \
+ ${libdir}/cups/monitor/.debug \
+ ${libdir}/cups/notifier/.debug \
+ ${libdir}/cups/daemon/.debug \
+ "
+
+#package the html for the webgui inside the main packages (~1MB uncompressed)
+
+FILES_${PN} += "${datadir}/doc/cups/images \
+ ${datadir}/doc/cups/*html \
+ ${datadir}/doc/cups/*.css \
+ ${datadir}/icons/ \
+ "
diff --git a/meta/recipes-extended/cups/cups_1.4.6.bb b/meta/recipes-extended/cups/cups_1.4.6.bb
new file mode 100644
index 0000000000..86b53403eb
--- /dev/null
+++ b/meta/recipes-extended/cups/cups_1.4.6.bb
@@ -0,0 +1,17 @@
+require cups14.inc
+
+PR = "r0"
+DEPENDS += "libusb"
+
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=956e7600195e6139f12de8c2a5bbefa9"
+SRC_URI += " \
+ file://use_echo_only_in_init.patch \
+ file://0001-don-t-try-to-run-generated-binaries.patch \
+ "
+
+SRC_URI[md5sum] = "de8fb5a29c36554925c0c6a6e2c0dae1"
+SRC_URI[sha256sum] = "f08711702a77b52c7150f96fe1f45482f6151cb95ef601268c528607fe6ad514"
+
+EXTRA_OECONF += " --disable-gssapi --enable-debug --disable-relro --enable-libusb"
+
+CONFFILES_${PN} += "${sysconfdir}/cups/cupsd.conf"
diff --git a/meta/recipes-extended/images/poky-image-lsb-dev.bb b/meta/recipes-extended/images/poky-image-lsb-dev.bb
new file mode 100644
index 0000000000..d490ee5277
--- /dev/null
+++ b/meta/recipes-extended/images/poky-image-lsb-dev.bb
@@ -0,0 +1,9 @@
+IMAGE_FEATURES += "apps-console-core dev-pkgs "
+
+IMAGE_INSTALL = "\
+ ${POKY_BASE_INSTALL} \
+ task-poky-basic \
+ task-poky-lsb \
+ "
+
+inherit poky-image
diff --git a/meta/recipes-extended/iputils/files/debian/CVE-2010-2529.diff b/meta/recipes-extended/iputils/files/debian/CVE-2010-2529.diff
deleted file mode 100644
index 98aae0d457..0000000000
--- a/meta/recipes-extended/iputils/files/debian/CVE-2010-2529.diff
+++ /dev/null
@@ -1,22 +0,0 @@
-Index: trunk/ping.c
-===================================================================
---- trunk.orig/ping.c 2010-07-23 21:26:53.000000000 -0700
-+++ trunk/ping.c 2010-07-23 21:28:27.000000000 -0700
-@@ -1059,7 +1059,7 @@
- i = j;
- i -= IPOPT_MINOFF;
- if (i <= 0)
-- continue;
-+ break;
- if (i == old_rrlen
- && !strncmp((char *)cp, old_rr, i)
- && !(options & F_FLOOD)) {
-@@ -1096,7 +1096,7 @@
- i = j;
- i -= 5;
- if (i <= 0)
-- continue;
-+ break;
- flags = *++cp;
- printf("\nTS: ");
- cp++;
diff --git a/meta/recipes-extended/iputils/iputils_s20100418.bb b/meta/recipes-extended/iputils/iputils_s20100418.bb
deleted file mode 100644
index 2b2d76a515..0000000000
--- a/meta/recipes-extended/iputils/iputils_s20100418.bb
+++ /dev/null
@@ -1,87 +0,0 @@
-SUMMARY = "Network monitoring tools"
-DESCRIPTION = "Utilities for the IP protocol, including traceroute6, \
-tracepath, tracepath6, ping, ping6 and arping."
-HOMEPAGE = "http://www.skbuff.net/iputils"
-SECTION = "console/network"
-
-LICENSE = "BSD & GPLv2+"
-
-LIC_FILES_CHKSUM = "file://ping.c;beginline=1;endline=35;md5=f9ceb201733e9a6cf8f00766dd278d82 \
- file://tracepath.c;beginline=1;endline=10;md5=0ecea2bf60bff2f3d840096d87647f3d \
- file://arping.c;beginline=1;endline=10;md5=ada2a6d06acc90f943bddf40d15e0541 \
- file://tftpd.c;beginline=1;endline=32;md5=28834bf8a91a5b8a92755dbee709ef96 "
-
-DEPENDS = "sysfsutils openssl"
-
-PR = "r0"
-
-SRC_URI = "http://www.skbuff.net/iputils/${PN}-${PV}.tar.bz2 \
- file://debian/fix-dead-host-ping-stats.diff \
- file://debian/add-icmp-return-codes.diff \
- file://debian/use_gethostbyname2.diff \
- file://debian/targets.diff \
- file://debian/fix-arping-timeouts.diff \
- file://debian/CVE-2010-2529.diff \
- "
-
-SRC_URI[md5sum] = "df6b0062118cdc5c62e3c810f831e976"
-SRC_URI[sha256sum] = "d0e8cbe6ce6a484ffb81697425b3b933746882f6f1521ac71c5c88971cee7684"
-
-# man is not compiled here, since it requires docbook-utils-native
-# which is not available in poky
-
-do_compile () {
- oe_runmake 'CC=${CC} -D_GNU_SOURCE' VPATH="${STAGING_LIBDIR}" all
-}
-
-do_install () {
- install -m 0755 -d ${D}${base_bindir} ${D}${mandir}/man8
- # SUID root programs
- install -m 4555 ping ${D}${base_bindir}/ping.${PN}
- install -m 4555 ping6 ${D}${base_bindir}/ping6.${PN}
- install -m 4555 traceroute6 ${D}${base_bindir}/
- # Other programgs
- for i in arping tracepath tracepath6; do
- install -m 0755 $i ${D}${base_bindir}/
- done
- # Manual pages for things we build packages for
-# for i in tracepath.8 traceroute6.8 ping.8 arping.8; do
-# install -m 0644 doc/$i ${D}${mandir}/man8/ || true
-# done
-}
-
-# Busybox also provides ping and ping6, so use update-alternatives
-# Also fixup SUID bit for applications that need it
-pkg_postinst_${PN}-ping () {
- chmod 4555 ${base_bindir}/ping.${PN}
- update-alternatives --install ${base_bindir}/ping ping ping.${PN} 100
-}
-pkg_prerm_${PN}-ping () {
- update-alternatives --remove ping ping.${PN}
-}
-
-pkg_postinst_${PN}-ping6 () {
- chmod 4555 ${base_bindir}/ping6.${PN}
- update-alternatives --install ${base_bindir}/ping6 ping6 ping6.${PN} 100
-}
-pkg_prerm_${PN}-ping6 () {
- update-alternatives --remove ping6 ping6.${PN}
-}
-
-pkg_postinst_${PN}-traceroute6 () {
- chmod 4555 ${base_bindir}/traceroute6
-}
-
-PACKAGES += "${PN}-ping ${PN}-ping6 ${PN}-arping ${PN}-tracepath ${PN}-tracepath6 ${PN}-traceroute6"
-
-ALLOW_EMPTY_${PN} = "1"
-RDEPENDS_${PN} += "${PN}-ping ${PN}-ping6 ${PN}-arping ${PN}-tracepath ${PN}-tracepath6 ${PN}-traceroute6"
-
-FILES_${PN} = ""
-FILES_${PN}-ping = "${base_bindir}/ping.${PN}"
-FILES_${PN}-ping6 = "${base_bindir}/ping6.${PN}"
-FILES_${PN}-arping = "${base_bindir}/arping"
-FILES_${PN}-tracepath = "${base_bindir}/tracepath"
-FILES_${PN}-tracepath6 = "${base_bindir}/tracepath6"
-FILES_${PN}-traceroute6 = "${base_bindir}/traceroute6"
-FILES_${PN}-doc = "${mandir}/man8"
diff --git a/meta/recipes-extended/iputils/iputils_s20101006.bb b/meta/recipes-extended/iputils/iputils_s20101006.bb
new file mode 100644
index 0000000000..0a4201787c
--- /dev/null
+++ b/meta/recipes-extended/iputils/iputils_s20101006.bb
@@ -0,0 +1,86 @@
+SUMMARY = "Network monitoring tools"
+DESCRIPTION = "Utilities for the IP protocol, including traceroute6, \
+tracepath, tracepath6, ping, ping6 and arping."
+HOMEPAGE = "http://www.skbuff.net/iputils"
+SECTION = "console/network"
+
+LICENSE = "BSD & GPLv2+"
+
+LIC_FILES_CHKSUM = "file://ping.c;beginline=1;endline=35;md5=f9ceb201733e9a6cf8f00766dd278d82 \
+ file://tracepath.c;beginline=1;endline=10;md5=0ecea2bf60bff2f3d840096d87647f3d \
+ file://arping.c;beginline=1;endline=10;md5=ada2a6d06acc90f943bddf40d15e0541 \
+ file://tftpd.c;beginline=1;endline=32;md5=28834bf8a91a5b8a92755dbee709ef96 "
+
+DEPENDS = "sysfsutils openssl"
+
+PR = "r0"
+
+SRC_URI = "http://www.skbuff.net/iputils/${PN}-${PV}.tar.bz2 \
+ file://debian/fix-dead-host-ping-stats.diff \
+ file://debian/add-icmp-return-codes.diff \
+ file://debian/use_gethostbyname2.diff \
+ file://debian/targets.diff \
+ file://debian/fix-arping-timeouts.diff \
+ "
+
+SRC_URI[md5sum] = "a36c25e9ec17e48be514dc0485e7376c"
+SRC_URI[sha256sum] = "fd3af46c80ebb99607c2ca1f2a3608b6fe828e25bbec6e54f2afd25f6ddb6ee7"
+
+# man is not compiled here, since it requires docbook-utils-native
+# which is not available in poky
+
+do_compile () {
+ oe_runmake 'CC=${CC} -D_GNU_SOURCE' VPATH="${STAGING_LIBDIR}" all
+}
+
+do_install () {
+ install -m 0755 -d ${D}${base_bindir} ${D}${mandir}/man8
+ # SUID root programs
+ install -m 4555 ping ${D}${base_bindir}/ping.${PN}
+ install -m 4555 ping6 ${D}${base_bindir}/ping6.${PN}
+ install -m 4555 traceroute6 ${D}${base_bindir}/
+ # Other programgs
+ for i in arping tracepath tracepath6; do
+ install -m 0755 $i ${D}${base_bindir}/
+ done
+ # Manual pages for things we build packages for
+# for i in tracepath.8 traceroute6.8 ping.8 arping.8; do
+# install -m 0644 doc/$i ${D}${mandir}/man8/ || true
+# done
+}
+
+# Busybox also provides ping and ping6, so use update-alternatives
+# Also fixup SUID bit for applications that need it
+pkg_postinst_${PN}-ping () {
+ chmod 4555 ${base_bindir}/ping.${PN}
+ update-alternatives --install ${base_bindir}/ping ping ping.${PN} 100
+}
+pkg_prerm_${PN}-ping () {
+ update-alternatives --remove ping ping.${PN}
+}
+
+pkg_postinst_${PN}-ping6 () {
+ chmod 4555 ${base_bindir}/ping6.${PN}
+ update-alternatives --install ${base_bindir}/ping6 ping6 ping6.${PN} 100
+}
+pkg_prerm_${PN}-ping6 () {
+ update-alternatives --remove ping6 ping6.${PN}
+}
+
+pkg_postinst_${PN}-traceroute6 () {
+ chmod 4555 ${base_bindir}/traceroute6
+}
+
+PACKAGES += "${PN}-ping ${PN}-ping6 ${PN}-arping ${PN}-tracepath ${PN}-tracepath6 ${PN}-traceroute6"
+
+ALLOW_EMPTY_${PN} = "1"
+RDEPENDS_${PN} += "${PN}-ping ${PN}-ping6 ${PN}-arping ${PN}-tracepath ${PN}-tracepath6 ${PN}-traceroute6"
+
+FILES_${PN} = ""
+FILES_${PN}-ping = "${base_bindir}/ping.${PN}"
+FILES_${PN}-ping6 = "${base_bindir}/ping6.${PN}"
+FILES_${PN}-arping = "${base_bindir}/arping"
+FILES_${PN}-tracepath = "${base_bindir}/tracepath"
+FILES_${PN}-tracepath6 = "${base_bindir}/tracepath6"
+FILES_${PN}-traceroute6 = "${base_bindir}/traceroute6"
+FILES_${PN}-doc = "${mandir}/man8"
diff --git a/meta/recipes-extended/libuser/libuser-0.56.18/disable-sgml-doc.patch b/meta/recipes-extended/libuser/libuser-0.57.1/disable-sgml-doc.patch
index a2017c5724..a2017c5724 100644
--- a/meta/recipes-extended/libuser/libuser-0.56.18/disable-sgml-doc.patch
+++ b/meta/recipes-extended/libuser/libuser-0.57.1/disable-sgml-doc.patch
diff --git a/meta/recipes-extended/libuser/libuser_0.56.18.bb b/meta/recipes-extended/libuser/libuser_0.56.18.bb
deleted file mode 100644
index 4a10d8059c..0000000000
--- a/meta/recipes-extended/libuser/libuser_0.56.18.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "user and group account administration library"
-DESCRIPTION = "The libuser library implements a standardized interface for manipulating and administering user \
-and group accounts"
-HOMEPAGE = "https://fedorahosted.org/libuser/"
-BUGTRACKER = "https://fedorahosted.org/libuser/newticket"
-
-LICENSE = "LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
- file://lib/user.h;endline=19;md5=9bc141f2e0d3e8b97ecdc945b2ed1ec7 \
- file://samples/testuser.c;endline=19;md5=61e8c05bd37ce1cba5590071f6e17500"
-
-SECTION = "base"
-
-SRC_URI = "https://fedorahosted.org/releases/l/i/libuser/libuser-${PV}.tar.xz \
- file://disable-sgml-doc.patch;patch=1"
-
-SRC_URI[md5sum] = "de074409153f690821d9340cb33ee435"
-SRC_URI[sha256sum] = "fc23d744f6853c213adb619cfb5b22c49a9ea8a5a75a1e4121f71b28cffa3a74"
-PR = "r0"
-
-DEPENDS = "gettext libpam glib-2.0 xz-native"
-
-EXTRA_OECONF += "--disable-gtk-doc --without-python"
-
-inherit autotools
diff --git a/meta/recipes-extended/libuser/libuser_0.57.1.bb b/meta/recipes-extended/libuser/libuser_0.57.1.bb
new file mode 100644
index 0000000000..d2e7c3aa2e
--- /dev/null
+++ b/meta/recipes-extended/libuser/libuser_0.57.1.bb
@@ -0,0 +1,25 @@
+SUMMARY = "user and group account administration library"
+DESCRIPTION = "The libuser library implements a standardized interface for manipulating and administering user \
+and group accounts"
+HOMEPAGE = "https://fedorahosted.org/libuser/"
+BUGTRACKER = "https://fedorahosted.org/libuser/newticket"
+
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
+ file://lib/user.h;endline=19;md5=9bc141f2e0d3e8b97ecdc945b2ed1ec7 \
+ file://samples/testuser.c;endline=19;md5=61e8c05bd37ce1cba5590071f6e17500"
+
+SECTION = "base"
+
+SRC_URI = "https://fedorahosted.org/releases/l/i/libuser/libuser-${PV}.tar.xz \
+ file://disable-sgml-doc.patch;patch=1"
+
+SRC_URI[md5sum] = "be82c6941264d0b4bd04f95fb342ec7d"
+SRC_URI[sha256sum] = "a61289867581fa715354a3fafe09c3e481173ce0a2dcb33b04588b6ac13cead5"
+PR = "r0"
+
+DEPENDS = "gettext libpam glib-2.0 xz-native"
+
+EXTRA_OECONF += "--disable-gtk-doc --without-python"
+
+inherit autotools
diff --git a/meta/recipes-extended/libzypp/libzypp/rpm5-no-rpmdbinit.patch b/meta/recipes-extended/libzypp/libzypp/rpm5-no-rpmdbinit.patch
new file mode 100644
index 0000000000..f15bb68d51
--- /dev/null
+++ b/meta/recipes-extended/libzypp/libzypp/rpm5-no-rpmdbinit.patch
@@ -0,0 +1,25 @@
+diff --git a/zypp/target/rpm/librpmDb.cc b/zypp/target/rpm/librpmDb.cc
+index 1689fbb..4999cd9 100644
+--- a/zypp/target/rpm/librpmDb.cc
++++ b/zypp/target/rpm/librpmDb.cc
+@@ -60,20 +60,6 @@ public:
+ const char * root = ( _root == "/" ? NULL : _root.asString().c_str() );
+ int perms = 0644;
+
+- // check whether to create a new db
+- PathInfo master( _root + _dbPath + "Packages" );
+- if ( ! master.isFile() )
+- {
+- // init database
+- int res = ::rpmdbInit( root, perms );
+- if ( res )
+- {
+- ERR << "rpmdbInit error(" << res << "): " << *this << endl;
+- _error = shared_ptr<RpmInitException>(new RpmInitException(_root, _dbPath));
+- ZYPP_THROW(*_error);
+- }
+- }
+-
+ // open database
+ int res = ::rpmdbOpen( root, &_db, (readonly_r ? O_RDONLY : O_RDWR ), perms );
+ if ( res || !_db )
diff --git a/meta/recipes-extended/libzypp/libzypp_git.bb b/meta/recipes-extended/libzypp/libzypp_git.bb
index e29556925a..b9110eb09e 100644
--- a/meta/recipes-extended/libzypp/libzypp_git.bb
+++ b/meta/recipes-extended/libzypp/libzypp_git.bb
@@ -9,15 +9,17 @@ inherit cmake
DEPENDS = "rpm boost gettext curl libxml2 zlib sat-solver expat openssl udev"
# rpmdb2solv from sat-solver is run from libzypp
-RDEPENDS = "sat-solver"
+RDEPENDS_${PN} = "sat-solver"
S = "${WORKDIR}/git"
PV = "0.0-git${SRCPV}"
-PR = "r3"
+PR = "r6"
SRC_URI = "git://gitorious.org/opensuse/libzypp.git;protocol=git \
file://no-doc.patch \
- file://rpm5.patch"
+ file://rpm5.patch \
+ file://rpm5-no-rpmdbinit.patch \
+ "
SRC_URI_append_mips = " file://mips-workaround-gcc-tribool-error.patch"
diff --git a/meta/recipes-extended/mailx/mailx_12.4.bb b/meta/recipes-extended/mailx/mailx_12.4.bb
new file mode 100644
index 0000000000..7abce7a31c
--- /dev/null
+++ b/meta/recipes-extended/mailx/mailx_12.4.bb
@@ -0,0 +1,28 @@
+SUMMARY = "mailx is the traditional command-line-mode mail user agent."
+
+DESCRIPTION = "Mailx is derived from Berkeley Mail and is intended provide the \
+functionality of the POSIX mailx command with additional support \
+for MIME, IMAP, POP3, SMTP, and S/MIME."
+
+HOMEPAGE = "http://heirloom.sourceforge.net/mailx.html"
+SECTION = "console/network"
+PRIORITY = "required"
+PR = "r0"
+LICENSE = "GPL"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4202a0a62910cf94f7af8a3436a2a2dd"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/h/heirloom-mailx/heirloom-mailx_${PV}.orig.tar.gz;name=archive \
+ ${DEBIAN_MIRROR}/main/h/heirloom-mailx/heirloom-mailx_${PV}-2.diff.gz;name=patch \
+ "
+SRC_URI[archive.md5sum] = "17b8ff86795a118b199e041b66b7d1aa"
+SRC_URI[archive.sha256sum] = "946d822cbff70df2ecf5b78c8347fdd01fdc5873f7a7cf55932b3e07030fa370"
+SRC_URI[patch.md5sum] = "3233d1a85fcb4dcde689132a1bba7fc9"
+SRC_URI[patch.sha256sum] = "b15fac77973b7d787469e51bbbeae7ddbe922b02a0c23208b9779ce837eba861"
+
+S = "${WORKDIR}/mailx-${PV}"
+
+inherit autotools
+
+CFLAGS_append = " -D_BSD_SOURCE -DDEBIAN -I${S}/EXT"
+
+PARALLEL_MAKE = ""
diff --git a/meta/recipes-extended/man-pages/man-pages_3.25.bb b/meta/recipes-extended/man-pages/man-pages_3.25.bb
deleted file mode 100644
index b5b200c98a..0000000000
--- a/meta/recipes-extended/man-pages/man-pages_3.25.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "Linux man-pages"
-DESCRIPTION = "The Linux man-pages project documents the Linux kernel and C library interfaces that are employed by user programs"
-SECTION = "console/utils"
-PRIORITY = "required"
-HOMEPAGE = "http://www.kernel.org/pub/linux/docs/man-pages"
-LICENSE = "GPL"
-PR = "r0"
-
-LIC_FILES_CHKSUM = "file://README;md5=9dab010c5baa416669e5d17381799dd5"
-SRC_URI = "http://www.kernel.org/pub/linux/docs/man-pages/Archive/${PN}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "98ec2324abea77d7a992470dd44d140c"
-SRC_URI[sha256sum] = "474242842a78dc2121687b7db6c32b6c78af5458f2bd809e23563dd185e2b169"
-
-RDEPENDS = "man"
-
-do_configure_prepend() {
- rm -rf not_installed
-}
-
-do_configure () {
- :
-}
-
-do_compile() {
- oe_runmake -f Makefile DESTDIR=${D} MANDIR=${D}${mandir}
-}
-
-fakeroot do_install() {
- oe_runmake install DESTDIR=${D}
-}
-
-FILES_${PN} += "${datadir}/man/"
diff --git a/meta/recipes-extended/man-pages/man-pages_3.32.bb b/meta/recipes-extended/man-pages/man-pages_3.32.bb
new file mode 100644
index 0000000000..daf22bc3c6
--- /dev/null
+++ b/meta/recipes-extended/man-pages/man-pages_3.32.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Linux man-pages"
+DESCRIPTION = "The Linux man-pages project documents the Linux kernel and C library interfaces that are employed by user programs"
+SECTION = "console/utils"
+PRIORITY = "required"
+HOMEPAGE = "http://www.kernel.org/pub/linux/docs/man-pages"
+LICENSE = "GPL"
+PR = "r1"
+
+LIC_FILES_CHKSUM = "file://README;md5=0422377a748010b2b738342e24f141c1"
+SRC_URI = "http://www.kernel.org/pub/linux/docs/man-pages/Archive/${PN}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "cc6c2d4d4eb364fd8da718c412db09d4"
+SRC_URI[sha256sum] = "61ef2fc36421e72eb92d1f533576a439a2fcdae20269393f740dd98abd8be519"
+
+RDEPENDS_${PN} = "man"
+
+do_configure_prepend() {
+ rm -rf not_installed
+}
+
+do_configure () {
+ :
+}
+
+do_compile() {
+ oe_runmake -f Makefile DESTDIR=${D} MANDIR=${D}${mandir}
+}
+
+fakeroot do_install() {
+ oe_runmake install DESTDIR=${D}
+}
+
+FILES_${PN} += "${datadir}/man/"
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.6e-lzma+xz-support.patch b/meta/recipes-extended/man/man-1.6e/man-1.6e-lzma+xz-support.patch
deleted file mode 100644
index 9aa5260b71..0000000000
--- a/meta/recipes-extended/man/man-1.6e/man-1.6e-lzma+xz-support.patch
+++ /dev/null
@@ -1,142 +0,0 @@
-diff -Naurp man-1.6e/configure man-1.6e.oden/configure
---- man-1.6e/configure 2008-12-21 19:20:51.000000000 +0100
-+++ man-1.6e.oden/configure 2008-12-21 19:20:32.000000000 +0100
-@@ -1027,7 +1027,7 @@ then
- then
- DO_COMPRESSION=true
- compress=
-- for i in bzip2 gzip bzip tzip pack compress freeze yabba
-+ for i in xz lzma bzip2 gzip bzip tzip pack compress freeze yabba
- do
- eval F$i=missing
- for j in $DEFPATH
-@@ -1080,6 +1080,8 @@ then
- fi
-
- case $compress in
-+ *xz*) ext=".xz" ;;
-+ *lzma*) ext=".lzma" ;;
- *bzip2*) ext=".bz2" ;;
- *gzip*) ext=".gz" ;;
- *bzip*) ext=".bz" ;;
-@@ -1122,7 +1124,7 @@ then
- fi
-
- # unconditionally handle uncompression
--UNCOMPRESSORS="gunzip bzip2 pcat zcat fcat unyabba"
-+UNCOMPRESSORS="unxz unlzma gunzip bzip2 pcat zcat fcat unyabba"
- for i in $UNCOMPRESSORS
- do
- eval F$i=missing
-@@ -1143,6 +1146,14 @@ bzip2=missing
- if [ $Fbzip2 != missing ]; then
- bzip2="$Fbzip2 -c -d"
- fi
-+unxz=missing
-+if [ $Funxz != missing ]; then
-+ unxz="$Funxz -c -d"
-+fi
-+unlzma=missing
-+if [ $Funlzma != missing ]; then
-+ unlzma="$Funlzma -c -d"
-+fi
- pcat="$Fpcat"
- zcat="$Fzcat"
- fcat="$Ffcat"
-@@ -1171,6 +1181,12 @@ if [ x$default = x ]; then
- bzip2)
- echo "Command to use for .bz2 files (standard bzip2)"
- echo $n "[`eval echo \\$$filter`] $c" ;;
-+ xz)
-+ echo "Command to use for .xz files (standard xz)"
-+ echo $n "[`eval echo \\$$filter`] $c" ;;
-+ lzma)
-+ echo "Command to use for .lzma files (standard lzma)"
-+ echo $n "[`eval echo \\$$filter`] $c" ;;
- pcat)
- echo "Command to use for .z files (pack/unpack)"
- echo $n "[`eval echo \\$$filter`] $c" ;;
-@@ -1232,6 +1248,8 @@ fi
- case $compress_ext in
- .gz) decompress=$gunzip ;;
- .bz2) decompress=$bzip2 ;;
-+ .xz) decompress=$unlzma ;;
-+ .lzma) decompress=$unlzma ;;
- .z) decompress=$pcat ;;
- .Z) decompress=$zcat ;;
- .F) decompress=$fcat ;;
-@@ -1319,6 +1337,8 @@ s,@pcat@,$pcat,
- s,@zcat@,$zcat,
- s,@gunzip@,$gunzip,
- s,@bzip2@,$bzip2,
-+s,@unlzma@,$unlzma,
-+s,@unxz@,$unxz,
- s,@unyabba@,$unyabba,
- s,@compress@,$compress,
- s,@compress_ext@,$compress_ext,
-diff -Naurp man-1.6e/src/makewhatis.sh man-1.6e.oden/src/makewhatis.sh
---- man-1.6e/src/makewhatis.sh 2008-12-21 19:20:51.000000000 +0100
-+++ man-1.6e.oden/src/makewhatis.sh 2008-12-21 19:20:32.000000000 +0100
-@@ -220,7 +220,7 @@ do
- find $mandir/${pages}$i/. -name '*' $findarg0 $findarg -print | LC_ALL=C $AWK -v MAN_NAME="$MAN_NAME" -v MAN_DESCRIPTION="$MAN_DESCRIPTION" '
-
- function readline() {
-- if (use_zcat || use_bzcat) {
-+ if (use_zcat || use_bzcat || use_lzcat || use_xzcat) {
- result = (pipe_cmd | getline);
- if (result < 0) {
- print "Pipe error: " pipe_cmd " " ERRNO > "/dev/stderr";
-@@ -235,7 +235,7 @@ do
- }
-
- function closeline() {
-- if (use_zcat || use_bzcat) {
-+ if (use_zcat || use_bzcat || use_lzcat || use_xzcat) {
- return close(pipe_cmd);
- } else {
- return close(filename);
-@@ -254,7 +254,11 @@ do
- match(filename,"\\.z$") || match(filename,"\\.gz$");
- if (!use_zcat)
- use_bzcat = match(filename,"\\.bz2");
-- if (use_zcat || use_bzcat) {
-+ if(!use_bzcat)
-+ use_lzcat = match(filename,"\\.lzma");
-+ if(!use_lzcat)
-+ use_xzcat = match(filename,"\\.xz");
-+ if (use_zcat || use_bzcat || use_lzcat || use_xz_cat) {
- filename_no_gz = substr(filename, 0, RSTART - 1);
- } else {
- filename_no_gz = filename;
-@@ -267,12 +271,16 @@ do
- actual_section = section;
- }
- sub(/\..*/, "", progname);
-- if (use_zcat || use_bzcat) {
-+ if (use_zcat || use_bzcat || use_lzcat || use_xz_cat) {
- if (use_zcat) {
- pipe_cmd = "zcat \"" filename "\"";
-- } else {
-+ } else if (use_bzcat) {
- pipe_cmd = "bzcat \"" filename "\"";
-- }
-+ } else if (use_lzcat) {
-+ pipe_cmd = "lzcat \"" filename "\"";
-+ } else {
-+ pipe_cmd = "xzcat \"" filename "\"";
-+ }
- # try to avoid suspicious stuff
- if (filename ~ /[;&|`$(]/) {
- print "ignored strange file name " filename " in " curdir > "/dev/stderr";
-diff -Naurp man-1.6e/src/man.conf.in man-1.6e.oden/src/man.conf.in
---- man-1.6e/src/man.conf.in 2008-12-21 19:20:51.000000000 +0100
-+++ man-1.6e.oden/src/man.conf.in 2008-12-21 19:20:32.000000000 +0100
-@@ -139,6 +139,8 @@ MANSECT @sections@
- #
- .gz @gunzip@
- .bz2 @bzip2@
-+.lzma @unlzma@
-+.xz @unxz@
- .z @pcat@
- .Z @zcat@
- .F @fcat@
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.6e-ro_usr.patch b/meta/recipes-extended/man/man-1.6e/man-1.6e-ro_usr.patch
deleted file mode 100644
index 054054b521..0000000000
--- a/meta/recipes-extended/man/man-1.6e/man-1.6e-ro_usr.patch
+++ /dev/null
@@ -1,67 +0,0 @@
---- man-1.6e.orig/src/makewhatis.sh 2006-07-19 01:58:08.000000000 -0300
-+++ man-1.6e/src/makewhatis.sh 2007-05-18 10:54:57.000000000 -0300
-@@ -124,7 +124,7 @@
- continue;;
- -s) setsections=1
- continue;;
-- -u) findarg="-ctime 0"
-+ -u) findarg="-newer /var/cache/man/whatis"
- update=1
- continue;;
- -v) verbose=1
-@@ -165,14 +165,7 @@
- # first truncate all the whatis files that will be created new,
- # then only update - we might visit the same directory twice
- if [ x$update = x ]; then
-- for pages in man cat
-- do
-- eval path="\$$pages"path
-- for mandir in $path
-- do
-- cp /dev/null $mandir/whatis
-- done
-- done
-+ cp /dev/null /var/cache/man/whatis
- fi
-
- for pages in man cat
-@@ -184,11 +177,6 @@
- if [ x$verbose != x ]; then
- echo "about to enter $mandir" > /dev/stderr
- fi
-- if [ -s ${mandir}/whatis -a $pages = man -a x$update = x ]; then
-- if [ x$verbose != x ]; then
-- echo skipping $mandir - we did it already > /dev/stderr
-- fi
-- else
- here=`pwd`
- cd $mandir
- for i in $sections
-@@ -407,23 +395,14 @@
-
- cd $here
-
-- # kludge for Slackware's /usr/man/preformat
-- if [ $mandir = /usr/man/preformat ]
-- then
-- mandir1=/usr/man
-- else
-- mandir1=$mandir
-- fi
--
-- if [ -f ${mandir1}/whatis ]
-+ if [ -f /var/cache/man/whatis ]
- then
-- cat ${mandir1}/whatis >> $TMPFILE
-+ cat /var/cache/man/whatis >> $TMPFILE
- fi
-- tr -s '\n' < $TMPFILE | sort -u > ${mandir1}/whatis
-+ tr -s '\n' < $TMPFILE | sort -u > /var/cache/man/whatis
-
-- chmod 644 ${mandir1}/whatis
-+ chmod 644 /var/cache/man/whatis
- rm $TMPFILE
-- fi
- done
- done
-
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.6e-whatis2.patch b/meta/recipes-extended/man/man-1.6e/man-1.6e-whatis2.patch
deleted file mode 100644
index 180d4a3178..0000000000
--- a/meta/recipes-extended/man/man-1.6e/man-1.6e-whatis2.patch
+++ /dev/null
@@ -1,37 +0,0 @@
---- man-1.6e-ro_usr/src/makewhatis.sh 2007-05-18 11:41:50.000000000 -0300
-+++ man-1.6e/src/makewhatis.sh 2007-05-18 13:27:16.000000000 -0300
-@@ -162,10 +162,15 @@
- fi
- catpath=`echo ${catpath} | tr : ' '`
-
-+#WHATIS_DIR=$DESTDIR/var/cache/man/`echo $here|sed -e 's!.*/man/!!g'`
-+WHATIS_DIR=$DESTDIR/var/cache/man/$LANG
-+[[ -d $WHATIS_DIR ]] || mkdir -p $WHATIS_DIR/
-+
- # first truncate all the whatis files that will be created new,
- # then only update - we might visit the same directory twice
- if [ x$update = x ]; then
-- cp /dev/null /var/cache/man/whatis
-+ mkdir -p $WHATIS_DIR/
-+ /bin/echo -n > $WHATIS_DIR/whatis
- fi
-
- for pages in man cat
-@@ -395,13 +400,13 @@
-
- cd $here
-
-- if [ -f /var/cache/man/whatis ]
-+ if [ -f $WHATIS_DIR/whatis ]
- then
-- cat /var/cache/man/whatis >> $TMPFILE
-+ cat $WHATIS_DIR/whatis >> $TMPFILE
- fi
-- tr -s '\n' < $TMPFILE | sort -u > /var/cache/man/whatis
-+ tr -s '\n' < $TMPFILE | sort -u > $WHATIS_DIR/whatis
-
-- chmod 644 /var/cache/man/whatis
-+ chmod 644 $WHATIS_DIR/whatis
- rm $TMPFILE
- done
- done
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.5g-nonrootbuild.patch b/meta/recipes-extended/man/man-1.6f/man-1.5g-nonrootbuild.patch
index ae2bc4d17f..ae2bc4d17f 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.5g-nonrootbuild.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.5g-nonrootbuild.patch
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.5h1-gencat.patch b/meta/recipes-extended/man/man-1.6f/man-1.5h1-gencat.patch
index 6409dfce55..6409dfce55 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.5h1-gencat.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.5h1-gencat.patch
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.5h1-make.patch b/meta/recipes-extended/man/man-1.6f/man-1.5h1-make.patch
index f9f91e4d0e..f9f91e4d0e 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.5h1-make.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.5h1-make.patch
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.5i2-initial.patch b/meta/recipes-extended/man/man-1.6f/man-1.5i2-initial.patch
index 1b1442385e..1b1442385e 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.5i2-initial.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.5i2-initial.patch
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.5i2-newline.patch b/meta/recipes-extended/man/man-1.6f/man-1.5i2-newline.patch
index da95d5ad18..da95d5ad18 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.5i2-newline.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.5i2-newline.patch
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.5i2-overflow.patch b/meta/recipes-extended/man/man-1.6f/man-1.5i2-overflow.patch
index f1ef06bab0..f1ef06bab0 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.5i2-overflow.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.5i2-overflow.patch
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.5j-i18n.patch b/meta/recipes-extended/man/man-1.6f/man-1.5j-i18n.patch
index 7645542e16..7645542e16 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.5j-i18n.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.5j-i18n.patch
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.5j-nocache.patch b/meta/recipes-extended/man/man-1.6f/man-1.5j-nocache.patch
index 267b34b93a..267b34b93a 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.5j-nocache.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.5j-nocache.patch
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.5j-utf8.patch b/meta/recipes-extended/man/man-1.6f/man-1.5j-utf8.patch
index c817763676..c817763676 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.5j-utf8.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.5j-utf8.patch
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.5k-confpath.patch b/meta/recipes-extended/man/man-1.6f/man-1.5k-confpath.patch
index 71ac9fcfc9..71ac9fcfc9 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.5k-confpath.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.5k-confpath.patch
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.5k-nonascii.patch b/meta/recipes-extended/man/man-1.6f/man-1.5k-nonascii.patch
index 465d839ea0..465d839ea0 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.5k-nonascii.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.5k-nonascii.patch
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.5k-sofix.patch b/meta/recipes-extended/man/man-1.6f/man-1.5k-sofix.patch
index d4522ea974..d4522ea974 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.5k-sofix.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.5k-sofix.patch
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.5m2-bug11621.patch b/meta/recipes-extended/man/man-1.6f/man-1.5m2-bug11621.patch
index 9c06c4c104..9c06c4c104 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.5m2-bug11621.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.5m2-bug11621.patch
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.5m2-buildroot.patch b/meta/recipes-extended/man/man-1.6f/man-1.5m2-buildroot.patch
index d84208390a..d84208390a 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.5m2-buildroot.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.5m2-buildroot.patch
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.5m2-multiple.patch b/meta/recipes-extended/man/man-1.6f/man-1.5m2-multiple.patch
index cc5bffde63..cc5bffde63 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.5m2-multiple.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.5m2-multiple.patch
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.5m2-no-color-for-printing.patch b/meta/recipes-extended/man/man-1.6f/man-1.5m2-no-color-for-printing.patch
index d1f810a442..d1f810a442 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.5m2-no-color-for-printing.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.5m2-no-color-for-printing.patch
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.5m2-sigpipe.patch b/meta/recipes-extended/man/man-1.6f/man-1.5m2-sigpipe.patch
index 81fb2d702a..81fb2d702a 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.5m2-sigpipe.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.5m2-sigpipe.patch
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.5m2-tv_fhs.patch b/meta/recipes-extended/man/man-1.6f/man-1.5m2-tv_fhs.patch
index 20389d9c08..20389d9c08 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.5m2-tv_fhs.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.5m2-tv_fhs.patch
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.6e-i18n_whatis.patch b/meta/recipes-extended/man/man-1.6f/man-1.6e-i18n_whatis.patch
index ad62a6016f..ad62a6016f 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.6e-i18n_whatis.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.6e-i18n_whatis.patch
diff --git a/meta/recipes-extended/man/man-1.6f/man-1.6e-lzma+xz-support.patch b/meta/recipes-extended/man/man-1.6f/man-1.6e-lzma+xz-support.patch
new file mode 100644
index 0000000000..f8ade4fc58
--- /dev/null
+++ b/meta/recipes-extended/man/man-1.6f/man-1.6e-lzma+xz-support.patch
@@ -0,0 +1,120 @@
+Index: man-1.6f/configure
+===================================================================
+--- man-1.6f.orig/configure 2010-12-29 14:00:35.000000000 -0800
++++ man-1.6f/configure 2010-12-29 14:27:57.584431711 -0800
+@@ -1027,7 +1027,7 @@
+ then
+ DO_COMPRESSION=true
+ compress=
+- for i in lzma bzip2 gzip bzip tzip pack compress freeze yabba
++ for i in xz lzma bzip2 gzip bzip tzip pack compress freeze yabba
+ do
+ eval F$i=missing
+ for j in $DEFPATH
+@@ -1080,6 +1080,7 @@
+ fi
+
+ case $compress in
++ *xz*) ext=".xz" ;;
+ *lzma*) ext=".lzma" ;;
+ *bzip2*) ext=".bz2" ;;
+ *gzip*) ext=".gz" ;;
+@@ -1123,7 +1124,7 @@
+ fi
+
+ # unconditionally handle uncompression
+-UNCOMPRESSORS="unlzma gunzip bzip2 pcat zcat fcat unyabba"
++UNCOMPRESSORS="unxz unlzma gunzip bzip2 pcat zcat fcat unyabba"
+ for i in $UNCOMPRESSORS
+ do
+ eval F$i=missing
+@@ -1144,6 +1145,10 @@
+ if [ $Fbzip2 != missing ]; then
+ bzip2="$Fbzip2 -c -d"
+ fi
++unxz=missing
++if [ $Funxz != missing ]; then
++ unxz="$Funxz -c -d"
++fi
+ unlzma=missing
+ if [ $Funlzma != missing ]; then
+ unlzma="$Funlzma -c -d"
+@@ -1176,6 +1181,9 @@
+ bzip2)
+ echo "Command to use for .bz2 files (standard bzip2)"
+ echo $n "[`eval echo \\$$filter`] $c" ;;
++ xz)
++ echo "Command to use for .xz files (standard xz)"
++ echo $n "[`eval echo \\$$filter`] $c" ;;
+ lzma)
+ echo "Command to use for .lzma files (standard lzma)"
+ echo $n "[`eval echo \\$$filter`] $c" ;;
+@@ -1240,6 +1248,7 @@
+ case $compress_ext in
+ .gz) decompress=$gunzip ;;
+ .bz2) decompress=$bzip2 ;;
++ .xz) decompress=$unxz ;;
+ .lzma) decompress=$unlzma ;;
+ .z) decompress=$pcat ;;
+ .Z) decompress=$zcat ;;
+@@ -1333,6 +1342,7 @@
+ s,@zcat@,$zcat,
+ s,@gunzip@,$gunzip,
+ s,@bzip2@,$bzip2,
++s,@unxz@,$unxz,
+ s,@unlzma@,$unlzma,
+ s,@unyabba@,$unyabba,
+ s,@compress@,$compress,
+Index: man-1.6f/src/makewhatis.sh
+===================================================================
+--- man-1.6f.orig/src/makewhatis.sh 2010-12-29 14:00:35.000000000 -0800
++++ man-1.6f/src/makewhatis.sh 2010-12-29 14:16:18.821555314 -0800
+@@ -242,7 +242,7 @@
+ find $mandir/${pages}$i/. -name '*' $findarg0 $findarg -print | LC_ALL=C $AWK -v MAN_NAME="$MAN_NAME" -v MAN_DESCRIPTION="$MAN_DESCRIPTION" '
+
+ function readline() {
+- if (use_zcat || use_bzcat || use_lzcat) {
++ if (use_zcat || use_bzcat || use_lzcat || use_xzcat) {
+ result = (pipe_cmd | getline);
+ if (result < 0) {
+ print "Pipe error: " pipe_cmd " " ERRNO > "/dev/stderr";
+@@ -257,7 +257,7 @@
+ }
+
+ function closeline() {
+- if (use_zcat || use_bzcat || use_lzcat) {
++ if (use_zcat || use_bzcat || use_lzcat || use_xzcat) {
+ return close(pipe_cmd);
+ } else {
+ return close(filename);
+@@ -278,7 +278,9 @@
+ use_bzcat = match(filename,"\\.bz2");
+ if(!use_bzcat)
+ use_lzcat = match(filename,"\\.lzma");
+- if (use_zcat || use_bzcat || use_lzcat ) {
++ if(!use_xzcat)
++ use_xzcat = match(filename,"\\.xz");
++ if (use_zcat || use_bzcat || use_lzcat || use_xzcat ) {
+ filename_no_gz = substr(filename, 0, RSTART - 1);
+ } else {
+ filename_no_gz = filename;
+@@ -291,14 +293,16 @@
+ actual_section = section;
+ }
+ sub(/\..*/, "", progname);
+- if (use_zcat || use_bzcat || use_lzcat) {
++ if (use_zcat || use_bzcat || use_lzcat || use_xzcat) {
+ if (use_zcat) {
+ pipe_cmd = "zcat \"" filename "\"";
+ } else if (use_bzcat) {
+ pipe_cmd = "bzcat \"" filename "\"";
+- } else {
++ } else if (use_lzcat) {
+ pipe_cmd = "lzcat \"" filename "\"";
+- }
++ } else {
++ pipe_cmd = "xzcat \"" filename "\"";
++ }
+ # try to avoid suspicious stuff
+ if (filename ~ /[;&|`$(]/) {
+ print "ignored strange file name " filename " in " curdir > "/dev/stderr";
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.6e-mandirs.patch b/meta/recipes-extended/man/man-1.6f/man-1.6e-mandirs.patch
index 06e9869754..06e9869754 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.6e-mandirs.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.6e-mandirs.patch
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.6e-new_sections.patch b/meta/recipes-extended/man/man-1.6f/man-1.6e-new_sections.patch
index 51727588f4..51727588f4 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.6e-new_sections.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.6e-new_sections.patch
diff --git a/meta/recipes-extended/man/man-1.6f/man-1.6e-ro_usr.patch b/meta/recipes-extended/man/man-1.6f/man-1.6e-ro_usr.patch
new file mode 100644
index 0000000000..d330e62b0b
--- /dev/null
+++ b/meta/recipes-extended/man/man-1.6f/man-1.6e-ro_usr.patch
@@ -0,0 +1,29 @@
+Index: man-1.6f/src/makewhatis.sh
+===================================================================
+--- man-1.6f.orig/src/makewhatis.sh 2010-12-29 13:42:34.000000000 -0800
++++ man-1.6f/src/makewhatis.sh 2010-12-29 13:42:35.667428347 -0800
+@@ -124,7 +124,7 @@
+ continue;;
+ -s) setsections=1
+ continue;;
+- -u) findarg="-ctime 0"
++ -u) findarg="-newer /var/cache/man/whatis"
+ update=1
+ continue;;
+ -v) verbose=1
+@@ -165,14 +165,7 @@
+ # first truncate all the whatis files that will be created new,
+ # then only update - we might visit the same directory twice
+ if [ x$update = x ]; then
+- for pages in man cat
+- do
+- eval path="\$$pages"path
+- for mandir in $path
+- do
+- cp /dev/null $mandir/whatis
+- done
+- done
++ cp /dev/null /var/cache/man/whatis
+ fi
+
+ for pages in man cat
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.6e-security.patch b/meta/recipes-extended/man/man-1.6f/man-1.6e-security.patch
index 85fdf4e5fc..85fdf4e5fc 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.6e-security.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.6e-security.patch
diff --git a/meta/recipes-extended/man/man-1.6e/man-1.6e-use_i18n_vars_in_a_std_way.patch b/meta/recipes-extended/man/man-1.6f/man-1.6e-use_i18n_vars_in_a_std_way.patch
index a448da54d7..a448da54d7 100644
--- a/meta/recipes-extended/man/man-1.6e/man-1.6e-use_i18n_vars_in_a_std_way.patch
+++ b/meta/recipes-extended/man/man-1.6f/man-1.6e-use_i18n_vars_in_a_std_way.patch
diff --git a/meta/recipes-extended/man/man-1.6f/man-1.6e-whatis2.patch b/meta/recipes-extended/man/man-1.6f/man-1.6e-whatis2.patch
new file mode 100644
index 0000000000..1a10be3611
--- /dev/null
+++ b/meta/recipes-extended/man/man-1.6f/man-1.6e-whatis2.patch
@@ -0,0 +1,48 @@
+Index: man-1.6f/src/makewhatis.sh
+===================================================================
+--- man-1.6f.orig/src/makewhatis.sh 2010-12-29 13:51:45.000000000 -0800
++++ man-1.6f/src/makewhatis.sh 2010-12-29 13:59:35.399799412 -0800
+@@ -164,10 +164,15 @@
+ fi
+ catpath=`echo ${catpath} | tr : ' '`
+
++#WHATIS_DIR=$DESTDIR/var/cache/man/`echo $here|sed -e 's!.*/man/!!g'`
++WHATIS_DIR=$DESTDIR/var/cache/man/$LANG
++[[ -d $WHATIS_DIR ]] || mkdir -p $WHATIS_DIR/
++
+ # first truncate all the whatis files that will be created new,
+ # then only update - we might visit the same directory twice
+ if [ x$update = x ]; then
+- cp /dev/null /var/cache/man/whatis
++ mkdir -p $WHATIS_DIR/
++ /bin/echo -n > $WHATIS_DIR/whatis
+ fi
+
+ for pages in man cat
+@@ -180,13 +185,7 @@
+ echo "about to enter $mandir" > /dev/stderr
+ fi
+
+- # kludge for Slackware's /usr/man/preformat
+- if [ $mandir = /usr/man/preformat ]
+- then
+- mandir1=/usr/man
+- else
+- mandir1=$mandir
+- fi
++ mandir1=$WHATIS_DIR
+
+ # if $mandir is on a readonly partition, and the whatis file
+ # is not a symlink, then let's skip trying to update it
+@@ -207,11 +206,6 @@
+ fi
+ fi
+
+- if [ -s ${mandir}/whatis -a $pages = man -a x$update = x ]; then
+- if [ x$verbose != x ]; then
+- echo skipping $mandir - we did it already > /dev/stderr
+- fi
+- else
+ here=`pwd`
+ cd $mandir
+ for i in $sections
diff --git a/meta/recipes-extended/man/man-1.6e/man.1.gz b/meta/recipes-extended/man/man-1.6f/man.1.gz
index c368045153..c368045153 100644
--- a/meta/recipes-extended/man/man-1.6e/man.1.gz
+++ b/meta/recipes-extended/man/man-1.6f/man.1.gz
Binary files differ
diff --git a/meta/recipes-extended/man/man-1.6e/man.7.gz b/meta/recipes-extended/man/man-1.6f/man.7.gz
index e85af82426..e85af82426 100644
--- a/meta/recipes-extended/man/man-1.6e/man.7.gz
+++ b/meta/recipes-extended/man/man-1.6f/man.7.gz
Binary files differ
diff --git a/meta/recipes-extended/man/man-1.6e/manpath.5.gz b/meta/recipes-extended/man/man-1.6f/manpath.5.gz
index c012ff8976..c012ff8976 100644
--- a/meta/recipes-extended/man/man-1.6e/manpath.5.gz
+++ b/meta/recipes-extended/man/man-1.6f/manpath.5.gz
Binary files differ
diff --git a/meta/recipes-extended/man/man_1.6e.bb b/meta/recipes-extended/man/man_1.6e.bb
deleted file mode 100644
index 930cca90c4..0000000000
--- a/meta/recipes-extended/man/man_1.6e.bb
+++ /dev/null
@@ -1,65 +0,0 @@
-SUMMARY = "Online documentation tools"
-DESCRIPTION = "A set of documentation tools: man, apropos and whatis"
-SECTION = "console/utils"
-HOMEPAGE = "http://primates.ximian.com/~flucifredi/man"
-PRIORITY = "required"
-LICENSE = "GPLv2"
-PR = "r0"
-
-DEPENDS = "groff less"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
-
-SRC_URI = "http://primates.ximian.com/~flucifredi/man/man-1.6e.tar.gz \
- file://man-1.5k-confpath.patch;striplevel=0 \
- file://man-1.5h1-make.patch;striplevel=1 \
- file://man-1.5k-nonascii.patch;striplevel=1 \
- file://man-1.6e-security.patch;striplevel=1 \
- file://man-1.6e-mandirs.patch;striplevel=1 \
- file://man-1.5m2-bug11621.patch;striplevel=1 \
- file://man-1.5k-sofix.patch;striplevel=1 \
- file://man-1.5m2-buildroot.patch;striplevel=1 \
- file://man-1.6e-ro_usr.patch;striplevel=1 \
- file://man-1.5i2-newline.patch;striplevel=0 \
- file://man-1.5j-utf8.patch;striplevel=1 \
- file://man-1.5i2-overflow.patch;striplevel=1 \
- file://man-1.5j-nocache.patch;striplevel=1 \
- file://man-1.5i2-initial.patch;striplevel=1 \
- file://man-1.5h1-gencat.patch;striplevel=0 \
- file://man-1.5g-nonrootbuild.patch;striplevel=1 \
- file://man-1.5m2-tv_fhs.patch;striplevel=0 \
- file://man-1.5j-i18n.patch;striplevel=1 \
- file://man-1.6e-whatis2.patch;striplevel=1 \
- file://man-1.6e-use_i18n_vars_in_a_std_way.patch;striplevel=1 \
- file://man-1.5m2-no-color-for-printing.patch;striplevel=1 \
- file://man-1.5m2-sigpipe.patch;striplevel=1 \
- file://man-1.6e-i18n_whatis.patch;striplevel=1 \
- file://man-1.6e-new_sections.patch;striplevel=1 \
- file://man-1.6e-lzma+xz-support.patch;striplevel=1 \
- file://man*"
-
-SRC_URI[md5sum] = "d8187cd756398baefc48ba7d60ff6a8a"
-SRC_URI[sha256sum] = "022faf23844eabb3662eabb105836925dd83bedda10271e2450a5bc5b61a5b5f"
-
-
-do_configure () {
- ${S}/configure -default -confdir ${D}/etc +sgid +fhs +lang all
-}
-
-
-fakeroot do_install() {
- oe_runmake install DESTDIR=${D}
-}
-
-do_install_append(){
- mkdir -p ${D}/etc/
- mkdir -p ${D}${datadir}/man/man5
- mkdir -p ${D}${datadir}/man/man7
- cp ${S}/src/man.conf ${D}/etc/
- cp ${WORKDIR}/man.1.gz ${D}${datadir}/man/man1/
- cp ${WORKDIR}/man.7.gz ${D}${datadir}/man/man7/
- cp ${WORKDIR}/manpath.5.gz ${D}${datadir}/man/man5/
-}
-
-
-FILES_${PN} += "${datadir}/locale"
diff --git a/meta/recipes-extended/man/man_1.6f.bb b/meta/recipes-extended/man/man_1.6f.bb
new file mode 100644
index 0000000000..f1c9754434
--- /dev/null
+++ b/meta/recipes-extended/man/man_1.6f.bb
@@ -0,0 +1,65 @@
+SUMMARY = "Online documentation tools"
+DESCRIPTION = "A set of documentation tools: man, apropos and whatis"
+SECTION = "console/utils"
+HOMEPAGE = "http://primates.ximian.com/~flucifredi/man"
+PRIORITY = "required"
+LICENSE = "GPLv2"
+PR = "r0"
+
+DEPENDS = "groff less"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
+
+SRC_URI = "http://primates.ximian.com/~flucifredi/${PN}/${PN}-${PV}.tar.gz \
+ file://man-1.5k-confpath.patch;striplevel=0 \
+ file://man-1.5h1-make.patch;striplevel=1 \
+ file://man-1.5k-nonascii.patch;striplevel=1 \
+ file://man-1.6e-security.patch;striplevel=1 \
+ file://man-1.6e-mandirs.patch;striplevel=1 \
+ file://man-1.5m2-bug11621.patch;striplevel=1 \
+ file://man-1.5k-sofix.patch;striplevel=1 \
+ file://man-1.5m2-buildroot.patch;striplevel=1 \
+ file://man-1.6e-ro_usr.patch;striplevel=1 \
+ file://man-1.5i2-newline.patch;striplevel=0 \
+ file://man-1.5j-utf8.patch;striplevel=1 \
+ file://man-1.5i2-overflow.patch;striplevel=1 \
+ file://man-1.5j-nocache.patch;striplevel=1 \
+ file://man-1.5i2-initial.patch;striplevel=1 \
+ file://man-1.5h1-gencat.patch;striplevel=0 \
+ file://man-1.5g-nonrootbuild.patch;striplevel=1 \
+ file://man-1.5m2-tv_fhs.patch;striplevel=0 \
+ file://man-1.5j-i18n.patch;striplevel=1 \
+ file://man-1.6e-whatis2.patch;striplevel=1 \
+ file://man-1.6e-use_i18n_vars_in_a_std_way.patch;striplevel=1 \
+ file://man-1.5m2-no-color-for-printing.patch;striplevel=1 \
+ file://man-1.5m2-sigpipe.patch;striplevel=1 \
+ file://man-1.6e-i18n_whatis.patch;striplevel=1 \
+ file://man-1.6e-new_sections.patch;striplevel=1 \
+ file://man-1.6e-lzma+xz-support.patch;striplevel=1 \
+ file://man*"
+
+SRC_URI[md5sum] = "67aaaa6df35215e812fd7d89472c44b6"
+SRC_URI[sha256sum] = "9f208c7e1981371ad4481d6e6c2c566bc726a15778723f94136d220fb9375f6c"
+
+
+do_configure () {
+ ${S}/configure -default -confdir ${D}/etc +sgid +fhs +lang all
+}
+
+
+fakeroot do_install() {
+ oe_runmake install DESTDIR=${D}
+}
+
+do_install_append(){
+ mkdir -p ${D}/etc/
+ mkdir -p ${D}${datadir}/man/man5
+ mkdir -p ${D}${datadir}/man/man7
+ cp ${S}/src/man.conf ${D}/etc/
+ cp ${WORKDIR}/man.1.gz ${D}${datadir}/man/man1/
+ cp ${WORKDIR}/man.7.gz ${D}${datadir}/man/man7/
+ cp ${WORKDIR}/manpath.5.gz ${D}${datadir}/man/man5/
+}
+
+
+FILES_${PN} += "${datadir}/locale"
diff --git a/meta/recipes-extended/mc/mc_4.7.3.bb b/meta/recipes-extended/mc/mc_4.7.3.bb
deleted file mode 100644
index 22a1a9397d..0000000000
--- a/meta/recipes-extended/mc/mc_4.7.3.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-DESCRIPTION = "Midnight Commander is an ncurses based file manager."
-HOMEPAGE = "http://www.midnight-commander.org/"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
-SECTION = "console/utils"
-DEPENDS = "ncurses glib-2.0"
-RDEPENDS = "ncurses-terminfo"
-
-SRC_URI = "http://www.midnight-commander.org/downloads/${PN}-${PV}.tar.bz2"
-
-SRC_URI[md5sum] = "42eb806d733b11d0d13ff7ee5fd1a03c"
-SRC_URI[sha256sum] = "4815184f28218a43080e4a425b5cd4e159277a10c56ff06d29bf441828fe5927"
-
-inherit autotools gettext
-
-EXTRA_OECONF = "--with-screen=ncurses --without-gpm-mouse --without-x --without-samba"
diff --git a/meta/recipes-extended/mc/mc_4.7.5.bb b/meta/recipes-extended/mc/mc_4.7.5.bb
new file mode 100644
index 0000000000..2898f2cd8b
--- /dev/null
+++ b/meta/recipes-extended/mc/mc_4.7.5.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Midnight Commander is an ncurses based file manager."
+HOMEPAGE = "http://www.midnight-commander.org/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+SECTION = "console/utils"
+DEPENDS = "ncurses glib-2.0"
+RDEPENDS_${PN} = "ncurses-terminfo"
+
+PR = "r1"
+
+PR = "r0"
+
+SRC_URI = "http://www.midnight-commander.org/downloads/${PN}-${PV}.tar.bz2"
+
+SRC_URI[md5sum] = "4eb2438b168fb0f93b748889a9294f54"
+SRC_URI[sha256sum] = "0d2b4e87b8a4158edf54380df9402b4a1a19f7494ef06dd0a0a3e3ff6a2b50f1"
+
+inherit autotools gettext
+
+EXTRA_OECONF = "--with-screen=ncurses --without-gpm-mouse --without-x --without-samba"
diff --git a/meta/recipes-extended/msmtp/msmtp_1.4.23.bb b/meta/recipes-extended/msmtp/msmtp_1.4.23.bb
new file mode 100644
index 0000000000..d72677cad2
--- /dev/null
+++ b/meta/recipes-extended/msmtp/msmtp_1.4.23.bb
@@ -0,0 +1,21 @@
+SUMMARY = "msmtp is an SMTP client."
+DESCRIPTION = "A sendmail replacement for use in MTAs like mutt"
+HOMEPAGE = "http://msmtp.sourceforge.net/"
+SECTION = "console/network"
+
+PRIORITY = "required"
+LICENSE = "GPLv3"
+DEPENDS = "zlib gnutls"
+PR = "r0"
+
+
+#COPYING or Licence
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+SRC_URI = "http://sourceforge.net/projects/msmtp/files/msmtp/${PV}/${PN}-${PV}.tar.bz2 \
+ "
+
+SRC_URI[md5sum] = "5fb7ae88186624cdb125d3efad3fdc16"
+SRC_URI[sha256sum] = "269cd30eeb867167c6a599e23399f4fc24196fcdef3bac5b120d806b3b421810"
+
+inherit gettext autotools
diff --git a/meta/recipes-extended/parted/parted-1.9.0/no_check.patch b/meta/recipes-extended/parted/parted-2.3/no_check.patch
index 24a328ceea..24a328ceea 100644
--- a/meta/recipes-extended/parted/parted-1.9.0/no_check.patch
+++ b/meta/recipes-extended/parted/parted-2.3/no_check.patch
diff --git a/meta/recipes-extended/parted/parted-1.9.0/syscalls.patch b/meta/recipes-extended/parted/parted-2.3/syscalls.patch
index 6be49968f3..6be49968f3 100644
--- a/meta/recipes-extended/parted/parted-1.9.0/syscalls.patch
+++ b/meta/recipes-extended/parted/parted-2.3/syscalls.patch
diff --git a/meta/recipes-extended/parted/parted_1.9.0.bb b/meta/recipes-extended/parted/parted_1.9.0.bb
deleted file mode 100644
index 3601fb1006..0000000000
--- a/meta/recipes-extended/parted/parted_1.9.0.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "parted, the GNU partition resizing program"
-HOMEPAGE = "http://www.gnu.org/software/parted/parted.html"
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4c61b8950dc1aab4d2aa7c2ae6b1cfb3"
-SECTION = "console/tools"
-DEPENDS = "readline e2fsprogs"
-PR = "r3"
-
-SRC_URI = "${GNU_MIRROR}/parted/parted-${PV}.tar.gz \
- file://no_check.patch;patch=1 \
- file://syscalls.patch;patch=1 "
-
-SRC_URI[md5sum] = "055305bc7bcf472ce38f9abf69a9d94d"
-SRC_URI[sha256sum] = "53231241ba24c104c207bd2920d70d31fda86df86a69c90e11f35144ffc55509"
-
-EXTRA_OECONF = "--disable-Werror --disable-device-mapper"
-
-inherit autotools pkgconfig gettext
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-extended/parted/parted_2.3.bb b/meta/recipes-extended/parted/parted_2.3.bb
new file mode 100644
index 0000000000..14c9c256e1
--- /dev/null
+++ b/meta/recipes-extended/parted/parted_2.3.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "parted, the GNU partition resizing program"
+HOMEPAGE = "http://www.gnu.org/software/parted/parted.html"
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2f31b266d3440dd7ee50f92cf67d8e6c"
+SECTION = "console/tools"
+DEPENDS = "readline e2fsprogs"
+PR = "r0"
+
+SRC_URI = "${GNU_MIRROR}/parted/parted-${PV}.tar.gz \
+ file://no_check.patch \
+ file://syscalls.patch "
+
+SRC_URI[md5sum] = "30ceb6df7e8681891e865e2fe5a7903d"
+SRC_URI[sha256sum] = "e81fa140805b5cd029ff6dda5cfa94d223e83ac182ebcae94f841d62ce468829"
+
+EXTRA_OECONF = "--disable-Werror --disable-device-mapper"
+
+inherit autotools pkgconfig gettext
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-extended/perl/libconvert-asn1-perl_0.21.bb b/meta/recipes-extended/perl/libconvert-asn1-perl_0.21.bb
deleted file mode 100644
index 660beecfbe..0000000000
--- a/meta/recipes-extended/perl/libconvert-asn1-perl_0.21.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-DESCRIPTION = "Convert::ASN1 - ASN.1 Encode/Decode library"
-SECTION = "libs"
-LICENSE = "Artistic|GPLv1+"
-LIC_FILES_CHKSUM = "file://README;beginline=10;endline=12;md5=a64b291b13ffddeef33b14f047ee8b26"
-PR = "r0"
-
-SRC_URI = "http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/Convert-ASN1-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "6f5c45724db1b09911e489275d19d0f5"
-SRC_URI[sha256sum] = "94e37fcb52148355cf9a0e96518c82bbb80b0b97adcce88bdb87766ca1cf9e45"
-
-S = "${WORKDIR}/Convert-ASN1-${PV}"
-
-inherit cpan
-
-BBCLASSEXTEND="native"
-
-PACKAGE_ARCH = "all"
diff --git a/meta/recipes-extended/perl/libconvert-asn1-perl_0.22.bb b/meta/recipes-extended/perl/libconvert-asn1-perl_0.22.bb
new file mode 100644
index 0000000000..e3edc18933
--- /dev/null
+++ b/meta/recipes-extended/perl/libconvert-asn1-perl_0.22.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Convert::ASN1 - ASN.1 Encode/Decode library"
+SECTION = "libs"
+LICENSE = "Artistic|GPLv1+"
+LIC_FILES_CHKSUM = "file://README;beginline=10;endline=12;md5=a64b291b13ffddeef33b14f047ee8b26"
+PR = "r0"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/Convert-ASN1-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "64a555e44adc79d92072b9fc7a6779c4"
+SRC_URI[sha256sum] = "be63d5cc715d7306e54b41d3c68c3617ca306289cff619a2ca43505e35f2f6ee"
+
+S = "${WORKDIR}/Convert-ASN1-${PV}"
+
+inherit cpan
+
+EXTRA_PERLFLAGS = "-I ${STAGING_LIBDIR_NATIVE}/perl/${@get_perl_version(d)}"
+
+BBCLASSEXTEND="native"
+
+PACKAGE_ARCH = "all"
diff --git a/meta/recipes-extended/polkit/polkit_0.99.bb b/meta/recipes-extended/polkit/polkit_0.99.bb
index f578ccad6b..7f969792ea 100644
--- a/meta/recipes-extended/polkit/polkit_0.99.bb
+++ b/meta/recipes-extended/polkit/polkit_0.99.bb
@@ -7,9 +7,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=155db86cdbafa7532b41f390409283eb \
file://docs/polkit/html/license.html;md5=54750ec6ece444c50b823234d445dd99"
SRC_URI = "http://hal.freedesktop.org/releases/polkit-${PV}.tar.gz"
-PR = "r0"
+PR = "r1"
DEPENDS = "libpam expat dbus-glib eggdbus intltool"
-RDEPENDS = "libpam"
+RDEPENDS_${PN} = "libpam"
EXTRA_OECONF = "--with-authfw=pam --with-os-type=moblin --disable-man-pages --disable-gtk-doc --disable-introspection"
inherit autotools pkgconfig
diff --git a/meta/recipes-extended/sat-solver/sat-solver/cmake.patch b/meta/recipes-extended/sat-solver/sat-solver/cmake.patch
index a69d82590e..d7b80b0846 100644
--- a/meta/recipes-extended/sat-solver/sat-solver/cmake.patch
+++ b/meta/recipes-extended/sat-solver/sat-solver/cmake.patch
@@ -2,23 +2,56 @@ check rpm
not building docs (need oxygen)
8/19/2010 - created by Qing He <qing.he@intel.com>
+1/24/2011 - Disable Fedora/Debian checking/settings by Mark Hatle <mark.hatle@windriver.com>
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 24234db..69413e4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -50,6 +50,10 @@ MESSAGE(STATUS "Enabling multi dist support")
+@@ -35,22 +35,15 @@
+ FIND_PACKAGE(Check REQUIRED)
+ FIND_PACKAGE(ZLIB REQUIRED)
+
+-IF ( FEDORA )
+-MESSAGE(STATUS "Building for Fedora")
+-ADD_DEFINITIONS( -DFEDORA )
+-ENDIF ( FEDORA)
+-
+-IF ( DEBIAN )
+-MESSAGE(STATUS "Building for Debian")
+-ADD_DEFINITIONS( -DDEBIAN -DDEBIAN_SEMANTICS)
+-ENDIF ( DEBIAN )
+-
+ IF ( MULTI_SEMANTICS )
+ MESSAGE(STATUS "Enabling multi dist support")
ADD_DEFINITIONS( -DMULTI_SEMANTICS)
ENDIF ( MULTI_SEMANTICS )
+-IF ( NOT DEBIAN )
+FIND_PACKAGE(PkgConfig REQUIRED)
+PKG_CHECK_MODULES(RPM REQUIRED rpm)
+INCLUDE_DIRECTORIES( ${RPM_INCLUDE_DIRS} )
+
- IF ( NOT DEBIAN )
FIND_LIBRARY(RPMDB_LIBRARY NAMES rpmdb)
IF ( NOT RPMDB_LIBRARY )
-@@ -159,22 +163,7 @@ ADD_SUBDIRECTORY(tools)
+ FIND_LIBRARY(RPMDB_LIBRARY NAMES rpm)
+@@ -59,13 +52,14 @@
+ IF ( RPMIO_LIBRARY )
+ SET( RPMDB_LIBRARY ${RPMIO_LIBRARY} ${RPMDB_LIBRARY} )
+ ENDIF ( RPMIO_LIBRARY )
+-IF ( FEDORA )
++FIND_LIBRARY(RPMMISC_LIBRARY NAMES rpmmisc)
++IF ( RPMMISC_LIBRARY )
++SET( RPMDB_LIBRARY ${RPMMISC_LIBRARY} ${RPMDB_LIBRARY} )
++ENDIF ( RPMMISC_LIBRARY )
+ FIND_LIBRARY(DB_LIBRARY NAMES db)
+ IF ( DB_LIBRARY )
+ SET( RPMDB_LIBRARY ${DB_LIBRARY} ${RPMDB_LIBRARY} )
+ ENDIF ( DB_LIBRARY )
+-ENDIF ( FEDORA )
+-ENDIF ( NOT DEBIAN )
+
+ SET( PACKAGE "satsolver" )
+ SET( VERSION "${LIBSATSOLVER_MAJOR}.${LIBSATSOLVER_MINOR}.${LIBSATSOLVER_PATCH}" )
+@@ -159,22 +153,7 @@
ADD_SUBDIRECTORY(applayer)
ADD_SUBDIRECTORY(tests)
ADD_SUBDIRECTORY(examples)
diff --git a/meta/recipes-extended/sat-solver/sat-solver/db5.patch b/meta/recipes-extended/sat-solver/sat-solver/db5.patch
new file mode 100644
index 0000000000..98f322ffbb
--- /dev/null
+++ b/meta/recipes-extended/sat-solver/sat-solver/db5.patch
@@ -0,0 +1,24 @@
+RPM no longer includes an internal version of db, it now relies on the system
+version. The system version in Poky is available at /usr/include/db51
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+rebased to sat-solver commit 9e1f2a097965debebc69cebf8ed73c6ff31a5220
+
+Signed-off-by: Qing He <qing.he@intel.com>
+
+--- git/ext/repo_rpmdb.c.orig 2011-01-06 10:46:37.369900542 -0600
++++ git/ext/repo_rpmdb.c 2011-01-06 10:48:35.482919434 -0600
+@@ -29,11 +29,7 @@
+ #include <rpm/rpmdb.h>
+
+ #ifndef DB_CREATE
+-# ifdef FEDORA
+-# include <db.h>
+-# else
+-# include <rpm/db.h>
+-# endif
++# include <db.h>
+ #endif
+
+ #include "pool.h"
diff --git a/meta/recipes-extended/sat-solver/sat-solver/rpm5.patch b/meta/recipes-extended/sat-solver/sat-solver/rpm5.patch
index a44a07deef..5ab632155d 100644
--- a/meta/recipes-extended/sat-solver/sat-solver/rpm5.patch
+++ b/meta/recipes-extended/sat-solver/sat-solver/rpm5.patch
@@ -2,6 +2,11 @@ fix rpm5 build
8/19/2010 - created by Qing He <qing.he@intel.com>
+
+pgpDigNew/pgpDigFree has changed in RPM 5.4.0
+
+Signed-off-by: Qing He <qing.he@intel.com>
+
diff --git a/ext/repo_rpmdb.c b/ext/repo_rpmdb.c
index 34f2b65..3c6ab9a 100644
--- a/ext/repo_rpmdb.c
@@ -33,7 +38,7 @@ index 34f2b65..3c6ab9a 100644
/* only rpm knows how to do the release calculation, we don't dare
* to recreate all the bugs */
- dig = pgpNewDig();
-+ dig = pgpDigNew(0);
++ dig = pgpDigNew(RPMVSF_DEFAULT, 0);
(void) pgpPrtPkts(pkts, pktsl, dig, 0);
btime = dig->pubkey.time[0] << 24 | dig->pubkey.time[1] << 16 | dig->pubkey.time[2] << 8 | dig->pubkey.signid[3];
sprintf(evrbuf, "%02x%02x%02x%02x-%02x%02x%02x%02x", dig->pubkey.signid[4], dig->pubkey.signid[5], dig->pubkey.signid[6], dig->pubkey.signid[7], dig->pubkey.time[0], dig->pubkey.time[1], dig->pubkey.time[2], dig->pubkey.time[3]);
@@ -42,7 +47,7 @@ index 34f2b65..3c6ab9a 100644
if (dig->pubkey.userid)
setutf8string(data, s - s->repo->pool->solvables, SOLVABLE_SUMMARY, dig->pubkey.userid);
- pgpFreeDig(dig);
-+ (void) pgpDigFree(dig, "");
++ (void) pgpDigFree(dig);
sat_free((void *)pkts);
return 1;
}
diff --git a/meta/recipes-extended/sat-solver/sat-solver_git.bb b/meta/recipes-extended/sat-solver/sat-solver_git.bb
index db368b1e1e..02b6c75507 100644
--- a/meta/recipes-extended/sat-solver/sat-solver_git.bb
+++ b/meta/recipes-extended/sat-solver/sat-solver_git.bb
@@ -4,14 +4,15 @@ HOMEPAGE = "http://en.opensue.org/Portal:Libzypp"
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://LICENSE.BSD;md5=62272bd11c97396d4aaf1c41bc11f7d8"
-DEPENDS = "libcheck rpm zlib expat"
+DEPENDS = "libcheck rpm zlib expat db"
PV = "0.0-git${SRCPV}"
-PR = "r1"
+PR = "r3"
SRC_URI = "git://gitorious.org/opensuse/sat-solver.git;protocol=git \
file://cmake.patch \
- file://rpm5.patch"
+ file://rpm5.patch \
+ file://db5.patch"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-extended/shadow/shadow.inc b/meta/recipes-extended/shadow/shadow.inc
index fcbcb3eb75..42f92a7f4e 100644
--- a/meta/recipes-extended/shadow/shadow.inc
+++ b/meta/recipes-extended/shadow/shadow.inc
@@ -20,7 +20,7 @@ PAM_PLUGINS = " libpam-runtime \
pam-plugin-rootok"
DEPENDS = "${@base_contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
-RDEPENDS = "${@base_contains('DISTRO_FEATURES', 'pam', '${PAM_PLUGINS}', '', d)}"
+RDEPENDS_${PN} = "${@base_contains('DISTRO_FEATURES', 'pam', '${PAM_PLUGINS}', '', d)}"
# since we deduce from ${SERIAL_CONSOLE}
PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/meta/recipes-extended/shadow/shadow_4.1.4.2.bb b/meta/recipes-extended/shadow/shadow_4.1.4.2.bb
index ca5f533f92..224ae5e38f 100644
--- a/meta/recipes-extended/shadow/shadow_4.1.4.2.bb
+++ b/meta/recipes-extended/shadow/shadow_4.1.4.2.bb
@@ -1,6 +1,6 @@
require shadow.inc
-PR = "r0"
+PR = "r1"
SRC_URI += "file://shadow.automake-1.11.patch \
file://shadow-4.1.3-dots-in-usernames.patch \
diff --git a/meta/recipes-extended/sudo/sudo_1.7.4p4.bb b/meta/recipes-extended/sudo/sudo_1.7.4p4.bb
deleted file mode 100644
index ee81b650ff..0000000000
--- a/meta/recipes-extended/sudo/sudo_1.7.4p4.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require sudo.inc
-
-PR = "r0"
-
-SRC_URI = "http://ftp.sudo.ws/sudo/dist/sudo-${PV}.tar.gz \
- file://libtool.patch"
-
-SRC_URI[md5sum] = "55d9906535d70a1de347cd3d3550ee87"
-SRC_URI[sha256sum] = "38de3c3e08346b2b8dcb3cf7ed0813300d1a1d5696d0f338ea8a4ef232aacf97"
-
-EXTRA_OECONF += " --with-pam=no"
diff --git a/meta/recipes-extended/sudo/sudo_1.7.4p6.bb b/meta/recipes-extended/sudo/sudo_1.7.4p6.bb
new file mode 100644
index 0000000000..edc9a0e8bf
--- /dev/null
+++ b/meta/recipes-extended/sudo/sudo_1.7.4p6.bb
@@ -0,0 +1,11 @@
+require sudo.inc
+
+PR = "r0"
+
+SRC_URI = "http://ftp.sudo.ws/sudo/dist/sudo-${PV}.tar.gz \
+ file://libtool.patch"
+
+SRC_URI[md5sum] = "1ae12d3d22e7ffedbf2db26f957676f0"
+SRC_URI[sha256sum] = "20091ef71018698c674c779f4b57178b2ecb4275fa34909b06219d2688ad14d5"
+
+EXTRA_OECONF += " --with-pam=no"
diff --git a/meta/recipes-extended/tzcode/tzcode-native_2009r.bb b/meta/recipes-extended/tzcode/tzcode-native_2009r.bb
index 7fe1326ef1..dee81139a7 100644
--- a/meta/recipes-extended/tzcode/tzcode-native_2009r.bb
+++ b/meta/recipes-extended/tzcode/tzcode-native_2009r.bb
@@ -2,6 +2,8 @@ DESCRIPTION = "tzcode, timezone zoneinfo utils -- zic, zdump, tzselect"
LICENSE = "Public Domain"
PR = "r0"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/README;md5=3ae8198f82258417ce29066d3b034035"
+
SRC_URI = "ftp://elsie.nci.nih.gov/pub/tzcode${PV}.tar.gz \
ftp://elsie.nci.nih.gov/pub/tzdata2009s.tar.gz"
diff --git a/meta/recipes-extended/zypper/zypper/dso_linking_change_build_fix.patch b/meta/recipes-extended/zypper/zypper/dso_linking_change_build_fix.patch
new file mode 100644
index 0000000000..a7d3fbe50c
--- /dev/null
+++ b/meta/recipes-extended/zypper/zypper/dso_linking_change_build_fix.patch
@@ -0,0 +1,58 @@
+after gcc linking has changed, all the libraries must be explicitely specified
+This patch avoids these linking errors:
+
+| Linking CXX executable zypp-refresh
+| cd /build_disk/poky_build/build0/tmp/work/i586-poky-linux/zypper-1.4.7-git0+9eb0e248e06c8d20ad054be2439149d9ede37531-r2/git/src && /build_disk/poky_build/build0/tmp/sysroots/x86_64-linux/usr/bin/cmake -E cmake_link_script CMakeFiles/zypp-refresh.dir/link.txt --verbose=1
+| /build_disk/poky_build/build0/tmp/sysroots/x86_64-linux/usr/bin/i586-poky-linux/i586-poky-linux-g++ -march=i586 --sysroot=/build_disk/poky_build/build0/tmp/sysroots/i586-poky-linux -fpermissive -g -O2 -Wall -Woverloaded-virtual -fstack-protector -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed CMakeFiles/zypp-refresh.dir/zypp-refresh.cc.o -o zypp-refresh -rdynamic -lzypp
+| /build_disk/poky_build/build0/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: �: invalid DSO for symbol `pthread_cancel@@GLIBC_2.0' definition
+| /build_disk/poky_build/build0/tmp/sysroots/i586-poky-linux/lib/libpthread.so.0: could not read symbols: Bad value
+| collect2: ld returned 1 exit status
+| make[2]: *** [src/zypp-refresh] Error 1
+| make[2]: Leaving directory `/build_disk/poky_build/build0/tmp/work/i586-poky-linux/zypper-1.4.7-git0+9eb0e248e06c8d20ad054be2439149d9ede37531-r2/git'
+| make[1]: *** [src/CMakeFiles/zypp-refresh.dir/all] Error 2
+
+
+| Linking CXX executable zypper
+| cd /build_disk/poky_build/build0/tmp/work/i586-poky-linux/zypper-1.4.7-git0+9eb0e248e06c8d20ad054be2439149d9ede37531-r3/git/src && /build_disk/poky_build/build0/tmp/sysroots/x86_64-linux/usr/bin/cmake -E cmake_link_script CMakeFiles/zypper.dir/link.txt --verbose=1
+| /build_disk/poky_build/build0/tmp/sysroots/x86_64-linux/usr/bin/i586-poky-linux/i586-poky-linux-g++ -march=i586 --sysroot=/build_disk/poky_build/build0/tmp/sysroots/i586-poky-linux -fpermissive -g -O2 -Wall -Woverloaded-virtual -fstack-protector -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed CMakeFiles/zypper.dir/main.cc.o -o zypper -rdynamic libzypper_lib.a -lzypp -lreadline -laugeas -laugeas
+| /build_disk/poky_build/build0/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: �: invalid DSO for symbol `pthread_cancel@@GLIBC_2.0' definition
+| /build_disk/poky_build/build0/tmp/sysroots/i586-poky-linux/lib/libpthread.so.0: could not read symbols: Bad value
+| collect2: ld returned 1 exit status
+| make[2]: *** [src/zypper] Error 1
+
+
+| Linking CXX executable zypper
+| cd /build_disk/poky_build/build0/tmp/work/i586-poky-linux/zypper-1.4.7-git0+9eb0e248e06c8d20ad054be2439149d9ede37531-r3/git/src && /build_disk/poky_build/build0/tmp/sysroots/x86_64-linux/usr/bin/cmake -E cmake_link_script CMakeFiles/zypper.dir/link.txt --verbose=1
+| /build_disk/poky_build/build0/tmp/sysroots/x86_64-linux/usr/bin/i586-poky-linux/i586-poky-linux-g++ -march=i586 --sysroot=/build_disk/poky_build/build0/tmp/sysroots/i586-poky-linux -fpermissive -g -O2 -Wall -Woverloaded-virtual -fstack-protector -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed CMakeFiles/zypper.dir/main.cc.o -o zypper -rdynamic libzypper_lib.a -lzypp -lreadline -laugeas -laugeas -lpthread
+| /build_disk/poky_build/build0/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: �: invalid DSO for symbol `clock_gettime@@GLIBC_2.2' definition
+| /build_disk/poky_build/build0/tmp/sysroots/i586-poky-linux/lib/librt.so.1: could not read symbols: Bad value
+| collect2: ld returned 1 exit status
+| make[2]: *** [src/zypper] Error 1
+
+
+Nitin A Kamble <nitin.a.kamble@intel.com>
+Date: 2011/01/19
+
+
+Index: git/src/CMakeLists.txt
+===================================================================
+--- git.orig/src/CMakeLists.txt 2010-12-20 00:02:02.000000000 -0800
++++ git/src/CMakeLists.txt 2011-01-19 09:23:13.432758255 -0800
+@@ -93,7 +93,7 @@
+ TARGET_LINK_LIBRARIES( zypper_lib ${ZYPP_LIBRARY} ${READLINE_LIBRARY} -laugeas ${AUGEAS_LIBRARY} )
+
+ ADD_EXECUTABLE( zypper main.cc )
+-TARGET_LINK_LIBRARIES( zypper zypper_lib ${ZYPP_LIBRARY} ${READLINE_LIBRARY} -laugeas ${AUGEAS_LIBRARY} -lrt )
++TARGET_LINK_LIBRARIES( zypper zypper_lib ${ZYPP_LIBRARY} ${READLINE_LIBRARY} -laugeas ${AUGEAS_LIBRARY} -lrt -lpthread )
+
+
+ INSTALL(
+@@ -115,7 +115,7 @@
+
+ # zypp-refresh utility
+ ADD_EXECUTABLE( zypp-refresh zypp-refresh.cc )
+-TARGET_LINK_LIBRARIES( zypp-refresh ${ZYPP_LIBRARY} )
++TARGET_LINK_LIBRARIES( zypp-refresh ${ZYPP_LIBRARY} -lpthread )
+ INSTALL(
+ TARGETS zypp-refresh
+ RUNTIME DESTINATION ${INSTALL_PREFIX}/sbin
diff --git a/meta/recipes-extended/zypper/zypper/rpm5-flag.patch b/meta/recipes-extended/zypper/zypper/rpm5-flag.patch
new file mode 100644
index 0000000000..4403869cd2
--- /dev/null
+++ b/meta/recipes-extended/zypper/zypper/rpm5-flag.patch
@@ -0,0 +1,16 @@
+It's required by libzypp headers
+
+Signed-off-by: Qing He <qing.he@intel.com>
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 6b040a6..84431c8 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -15,6 +15,7 @@ INCLUDE( ${ZYPPER_SOURCE_DIR}/VERSION.cmake )
+ SET( VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" )
+ ADD_DEFINITIONS( -D_FILE_OFFSET_BITS=64 )
+ ADD_DEFINITIONS( -DVERSION="${VERSION}" )
++ADD_DEFINITIONS( -D_RPM_5 )
+
+ SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O2 -Wall -Woverloaded-virtual -fstack-protector" )
+ SET( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O2 -Wall -fstack-protector" )
diff --git a/meta/recipes-extended/zypper/zypper_git.bb b/meta/recipes-extended/zypper/zypper_git.bb
index 8caf4db39e..729eabdaa8 100644
--- a/meta/recipes-extended/zypper/zypper_git.bb
+++ b/meta/recipes-extended/zypper/zypper_git.bb
@@ -5,14 +5,16 @@ LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=3201406e350b39e05a82e28b5020f413"
DEPENDS = "libzypp augeas"
-RRECOMMENDS = "procps"
-PR = "r1"
+RRECOMMENDS_${PN} = "procps"
+PR = "r3"
inherit cmake
SRC_URI = "git://gitorious.org/opensuse/zypper.git;protocol=git \
file://cmake.patch \
+ file://dso_linking_change_build_fix.patch \
+ file://rpm5-flag.patch \
"
S = "${WORKDIR}/git"
-PV = "1.4.7-git${SRCPV}"
+PV = "1.5.3-git${SRCPV}"
diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf-2.22.1/configure_fix.patch b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf-2.22.1/configure_fix.patch
new file mode 100644
index 0000000000..bbf239c8dd
--- /dev/null
+++ b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf-2.22.1/configure_fix.patch
@@ -0,0 +1,19 @@
+can sniff check buillds and runs an C binary, which breaks configure in
+cross-compile environ.
+This patch simple disables it.
+
+Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
+
+Index: gdk-pixbuf-2.22.1/configure.ac
+===================================================================
+--- gdk-pixbuf-2.22.1.orig/configure.ac 2010-11-25 16:26:41.000000000 +0800
++++ gdk-pixbuf-2.22.1/configure.ac 2010-11-25 16:29:22.000000000 +0800
+@@ -99,6 +99,8 @@
+ AC_MSG_CHECKING([for native Win32])
+ LIB_EXE_MACHINE_FLAG=X86
+ EXE_MANIFEST_ARCHITECTURE=X86
++dnl disable can sniff check in cross compile
++gio_can_sniff=no
+ case "$host" in
+ *-*-mingw*)
+ os_win32=yes
diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf-2.22.1/hardcoded_libtool.patch b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf-2.22.1/hardcoded_libtool.patch
new file mode 100644
index 0000000000..ae16927e73
--- /dev/null
+++ b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf-2.22.1/hardcoded_libtool.patch
@@ -0,0 +1,31 @@
+Index: gdk-pixbuf-2.22.1/configure.ac
+===================================================================
+--- gdk-pixbuf-2.22.1.orig/configure.ac 2010-11-26 09:06:34.000000000 +0800
++++ gdk-pixbuf-2.22.1/configure.ac 2010-11-26 09:07:33.000000000 +0800
+@@ -287,7 +287,7 @@
+ case $enable_explicit_deps in
+ auto)
+ export SED
+- deplibs_check_method=`(./libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
++ deplibs_check_method=`(./$host_alias-libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
+ if test "x$deplibs_check_method" '!=' xpass_all || test "x$enable_static" = xyes ; then
+ enable_explicit_deps=yes
+ else
+@@ -484,7 +484,7 @@
+ dnl Now we check to see if our libtool supports shared lib deps
+ dnl (in a rather ugly way even)
+ if $dynworks; then
+- pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
++ pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./$host_alias-libtool --config"
+ pixbuf_deplibs_check=`$pixbuf_libtool_config | \
+ grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
+ sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
+@@ -957,7 +957,7 @@
+ # We are using gmodule-no-export now, but I'm leaving the stripping
+ # code in place for now, since pango and atk still require gmodule.
+ export SED
+-export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++export_dynamic=`(./$host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ if test -n "$export_dynamic"; then
+ GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"`
+ fi
diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.22.1.bb b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.22.1.bb
new file mode 100644
index 0000000000..78f108a0a2
--- /dev/null
+++ b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.22.1.bb
@@ -0,0 +1,70 @@
+DESCRIPTION = "Image loading library for GTK+"
+HOMEPAGE = "http://www.gtk.org/"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
+ file://gdk-pixbuf/gdk-pixbuf.h;endline=26;md5=5066b71daefeff678494fffa3040aba9"
+
+SECTION = "libs"
+PRIORITY = "optional"
+
+DEPENDS = "libpng gettext glib-2.0 jpeg"
+PR = "r0"
+
+SRC_URI = "http://ftp.acc.umu.se/pub/GNOME/sources/gdk-pixbuf/2.22/gdk-pixbuf-${PV}.tar.gz \
+ file://hardcoded_libtool.patch;patch=1 \
+ file://configure_fix.patch;patch=1 \
+ "
+
+SRC_URI[md5sum] = "fcfc854e9aec7dbb2bb3059484d44556"
+SRC_URI[sha256sum] = "bbb57364ffba70d64f5fcfe6eda1d67249b3d58844edb06dc0f94d1ad599b4ec"
+
+inherit autotools pkgconfig
+
+LIBV = "2.10.0"
+
+EXTRA_OECONF = "\
+ --without-libtiff \
+ --with-libpng \
+"
+
+FILES_${PN} = "${bindir}/gdk-pixbuf-query-loaders \
+ ${libdir}/lib*.so.*"
+
+FILES_${PN}-dev += " \
+ ${bindir}/gdk-pixbuf-csource \
+ ${includedir}/*"
+
+FILES_${PN}-dbg += " \
+ ${libdir}/.debug/* \
+ ${libdir}/gdk-pixbuf-2.0/${LIBV}/loaders/.debug/*"
+
+postinst_pixbufloader () {
+if [ "x$D" != "x" ]; then
+ exit 1
+fi
+
+GDK_PIXBUF_MODULEDIR=${libdir}/gdk-pixbuf-2.0/${LIBV}/loaders gdk-pixbuf-query-loaders --update-cache
+
+test -x ${bindir}/gtk-update-icon-cache && gtk-update-icon-cache -q ${datadir}/icons/hicolor
+}
+
+PACKAGES_DYNAMIC += "gdk-pixbuf-loader-*"
+PACKAGES_DYNAMIC_virtclass-native = ""
+
+python populate_packages_prepend () {
+ postinst_pixbufloader = bb.data.getVar("postinst_pixbufloader", d, 1)
+
+ loaders_root = bb.data.expand('${libdir}/gdk-pixbuf-2.0/${LIBV}/loaders', d)
+
+ do_split_packages(d, loaders_root, '^libpixbufloader-(.*)\.so$', 'gdk-pixbuf-loader-%s', 'GDK pixbuf loader for %s', postinst_pixbufloader)
+}
+
+do_install_append_virtclass-native() {
+#Use wrapper script rather than binary as required libtool library is not installed now
+ GDK_PIXBUF_MODULEDIR=${D}${libdir}/gdk-pixbuf-2.0/2.10.0/loaders ${S}/gdk-pixbuf/gdk-pixbuf-query-loaders > ${D}${libdir}/gdk-pixbuf-2.0/2.10.0/loaders.cache
+ sed -i -e 's#${D}##g' ${D}${libdir}/gdk-pixbuf-2.0/2.10.0/loaders.cache
+ find ${D}${libdir} -name "libpixbufloader-*.la" -exec rm \{\} \;
+}
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-gnome/gnome/gconf-dbus_svn.bb b/meta/recipes-gnome/gnome/gconf-dbus_svn.bb
index 879a0bb558..9fdd82c968 100644
--- a/meta/recipes-gnome/gnome/gconf-dbus_svn.bb
+++ b/meta/recipes-gnome/gnome/gconf-dbus_svn.bb
@@ -8,7 +8,7 @@ PROVIDES = "gconf"
RPROVIDES_${PN} = "gconf"
RPROVIDES_${PN}-dev = "gconf-dev"
-PV = "2.16.0+svnr${SRCREV}"
+PV = "2.16.0+svnr${SRCPV}"
SRC_URI = "svn://developer.imendio.com/svn/gconf-dbus;module=trunk;proto=http"
S = "${WORKDIR}/trunk"
diff --git a/meta/recipes-gnome/gnome/gnome-common_2.28.0.bb b/meta/recipes-gnome/gnome/gnome-common_2.28.0.bb
index b4adfe4126..c2e1c8279e 100644
--- a/meta/recipes-gnome/gnome/gnome-common_2.28.0.bb
+++ b/meta/recipes-gnome/gnome/gnome-common_2.28.0.bb
@@ -25,3 +25,5 @@ DEPENDS = ""
FILES_${PN} += "${datadir}/aclocal"
FILES_${PN}-dev = ""
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-gnome/gnome/gnome-doc-utils.inc b/meta/recipes-gnome/gnome/gnome-doc-utils.inc
index 00a64e2582..30cff36ddd 100644
--- a/meta/recipes-gnome/gnome/gnome-doc-utils.inc
+++ b/meta/recipes-gnome/gnome/gnome-doc-utils.inc
@@ -1,9 +1,8 @@
LICENSE = "GPL LGPL"
-DEPENDS = "libxml2 libxslt libxslt-native"
+DEPENDS = "libxml2 libxslt libxslt-native gnome-doc-utils-native"
+DEPENDS_virtclass-native = "libxml2-native libxslt-native"
-PR = "r1"
-
-inherit gnome
+inherit gnome gettext
EXTRA_OECONF = "--disable-scrollkeeper"
@@ -13,3 +12,5 @@ do_install_append() {
}
FILES_${PN} += "${datadir}/xml*"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-gnome/gnome/gnome-doc-utils_0.20.2.bb b/meta/recipes-gnome/gnome/gnome-doc-utils_0.20.2.bb
deleted file mode 100644
index 9bdcceda76..0000000000
--- a/meta/recipes-gnome/gnome/gnome-doc-utils_0.20.2.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require gnome-doc-utils.inc
-LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=eb723b61539feef013de476e68b5c50a \
- file://COPYING.LGPL;md5=a6f89e2100d9b6cdffcea4f398e37343 "
-PR = "r1"
-
-SRC_URI[archive.md5sum] = "920914c13c57e67616c6ff8594579786"
-SRC_URI[archive.sha256sum] = "f6c0124f61b9400c63da630dd3a9ac1b738eac0058da245661ff699fad267aca"
diff --git a/meta/recipes-gnome/gnome/gnome-doc-utils_0.20.4.bb b/meta/recipes-gnome/gnome/gnome-doc-utils_0.20.4.bb
new file mode 100644
index 0000000000..a8cbcf0fec
--- /dev/null
+++ b/meta/recipes-gnome/gnome/gnome-doc-utils_0.20.4.bb
@@ -0,0 +1,7 @@
+require gnome-doc-utils.inc
+LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=eb723b61539feef013de476e68b5c50a \
+ file://COPYING.LGPL;md5=a6f89e2100d9b6cdffcea4f398e37343"
+PR = "r0"
+
+SRC_URI[archive.md5sum] = "6872b68dd081fc033e07d5877b4c0645"
+SRC_URI[archive.sha256sum] = "97c6465ffb15969a9fe1761f16f30c1028977fb24ecda89a0b479170f6412e4d"
diff --git a/meta/recipes-gnome/gnome/gnome-icon-theme_2.31.0.bb b/meta/recipes-gnome/gnome/gnome-icon-theme_2.31.0.bb
index 9898428972..17fff1c53c 100644
--- a/meta/recipes-gnome/gnome/gnome-icon-theme_2.31.0.bb
+++ b/meta/recipes-gnome/gnome/gnome-icon-theme_2.31.0.bb
@@ -7,9 +7,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=e7e289d90fc8bdceed5e3f142f98229e"
SECTION = "x11/gnome"
DEPENDS = "icon-naming-utils-native glib-2.0 intltool-native"
-RDEPENDS = "hicolor-icon-theme"
-RRECOMMENDS = "librsvg-gtk"
-PR = "r0"
+RDEPENDS_${PN} = "hicolor-icon-theme"
+RRECOMMENDS_${PN} = "librsvg-gtk"
+PR = "r1"
FILES_${PN} += "${datadir}/*"
diff --git a/meta/recipes-gnome/gnome/gnome-keyring_2.32.1.bb b/meta/recipes-gnome/gnome/gnome-keyring_2.32.1.bb
index 153979e363..5932ddd8c2 100644
--- a/meta/recipes-gnome/gnome/gnome-keyring_2.32.1.bb
+++ b/meta/recipes-gnome/gnome/gnome-keyring_2.32.1.bb
@@ -11,12 +11,12 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
SECTION = "x11/gnome"
-PR = "r0"
+PR = "r1"
inherit autotools gnome pkgconfig
DEPENDS = "gtk+ libgcrypt libtasn1 libtasn1-native gconf"
-RDEPENDS = "libgnome-keyring"
+RDEPENDS_${PN} = "libgnome-keyring"
EXTRA_OECONF = "--disable-gtk-doc"
diff --git a/meta/recipes-gnome/gnome/gnome-mime-data_2.18.0.bb b/meta/recipes-gnome/gnome/gnome-mime-data_2.18.0.bb
index 3bb50d1af3..b730daed34 100644
--- a/meta/recipes-gnome/gnome/gnome-mime-data_2.18.0.bb
+++ b/meta/recipes-gnome/gnome/gnome-mime-data_2.18.0.bb
@@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
inherit gnome
inherit autotools
-PR = "r3"
+PR = "r4"
SRC_URI += "file://pkgconfig.patch;patch=1"
@@ -16,4 +16,4 @@ SRC_URI[archive.md5sum] = "541858188f80090d12a33b5a7c34d42c"
SRC_URI[archive.sha256sum] = "37196b5b37085bbcd45c338c36e26898fe35dd5975295f69f48028b1e8436fd7"
DEPENDS += "shared-mime-info intltool-native"
-RDEPENDS = "shared-mime-info"
+RDEPENDS_${PN} = "shared-mime-info"
diff --git a/meta/recipes-gnome/gnome/gobject-introspection_git.bb b/meta/recipes-gnome/gnome/gobject-introspection_git.bb
index 81d279ac71..17a42a9a59 100644
--- a/meta/recipes-gnome/gnome/gobject-introspection_git.bb
+++ b/meta/recipes-gnome/gnome/gobject-introspection_git.bb
@@ -8,13 +8,13 @@ SRC_URI_virtclass-native = "git://git.gnome.org/gobject-introspection;protocol=g
LICENSE = "GPLv2+ & LGPLv2+"
LIC_FILES_CHKSUM = "file://COPYING.tools;md5=94d55d512a9ba36caa9b7df079bae19f \
file://COPYING.lib;md5=3bf50002aefd002f49e7bb854063f7e7"
-PV = "0.0+git${SRCREV}"
+PV = "0.0+git${SRCPV}"
PR = "r3"
S = "${WORKDIR}/git"
DEPENDS = "libffi python-native gobject-introspection-native"
-DEPENDS_virtclass-native = "libffi-native python-native"
+DEPENDS_virtclass-native = "libffi-native python-native bison-native flex-native"
inherit autotools
diff --git a/meta/recipes-gnome/gnome/libgdata_0.6.5.bb b/meta/recipes-gnome/gnome/libgdata_0.6.5.bb
deleted file mode 100644
index b5e6ee3a69..0000000000
--- a/meta/recipes-gnome/gnome/libgdata_0.6.5.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-DESCRIPTION = "GLib-based library for accessing online service APIs using the GData protocol"
-HOMEPAGE = "http://live.gnome.org/libgdata"
-BUGTRACKER = "https://bugzilla.gnome.org/"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24 \
- file://gdata/gdata.h;endline=20;md5=079a554efcf65d46f96a515806e7e99a \
- file://gdata/gdata-types.h;endline=20;md5=7399b111aac8718da13888fc634be6ef"
-
-DEPENDS = "libxml2 glib-2.0 libsoup-2.4"
-
-inherit gnome pkgconfig autotools
-
-SRC_URI[archive.md5sum] = "e12f52a3d25c25016856c64ca0331221"
-SRC_URI[archive.sha256sum] = "dcb82f7162d69549512444376da2cdea65650ee4dae4d00eed7fbbd3387ddf2c"
diff --git a/meta/recipes-gnome/gnome/libgdata_0.7.1.bb b/meta/recipes-gnome/gnome/libgdata_0.7.1.bb
new file mode 100644
index 0000000000..c3329945a1
--- /dev/null
+++ b/meta/recipes-gnome/gnome/libgdata_0.7.1.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "GLib-based library for accessing online service APIs using the GData protocol"
+HOMEPAGE = "http://live.gnome.org/libgdata"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24 \
+ file://gdata/gdata.h;endline=20;md5=079a554efcf65d46f96a515806e7e99a \
+ file://gdata/gdata-types.h;endline=20;md5=7399b111aac8718da13888fc634be6ef"
+
+DEPENDS = "gettext libxml2 glib-2.0 libsoup-2.4"
+
+inherit gnome pkgconfig autotools
+
+SRC_URI[archive.md5sum] = "ec5262cbcb07b63b58d45aa3ac636096"
+SRC_URI[archive.sha256sum] = "fb244138276a5ce98510b0e2408bbf6f9ce0fd8cdcf86f07cd4be38afbb7c2bc"
diff --git a/meta/recipes-gnome/gnome/metacity/crosscompile.patch b/meta/recipes-gnome/gnome/metacity/crosscompile.patch
new file mode 100644
index 0000000000..8d86134fae
--- /dev/null
+++ b/meta/recipes-gnome/gnome/metacity/crosscompile.patch
@@ -0,0 +1,60 @@
+This patch is revised version from openembed. It build host native binary
+rather than target binary in cross-compile environment.
+
+Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
+
+Index: metacity-2.30.3/src/Makefile.am
+===================================================================
+--- metacity-2.30.3.orig/src/Makefile.am 2010-09-05 00:09:52.000000000 +0800
++++ metacity-2.30.3/src/Makefile.am 2010-12-31 11:15:31.000000000 +0800
+@@ -134,11 +134,9 @@
+ metacity_theme_viewer_SOURCES= \
+ ui/theme-viewer.c
+
+-schema_bindings_SOURCES = \
+- core/schema-bindings.c \
+- metacity.schemas.in.in
++schema_bindings:
++ @CC_FOR_BUILD@ core/schema-bindings.c -I./include -I../ @CFLAGS_FOR_BUILD@ @LDFLAGS_FOR_BUILD@ -o schema_bindings
+
+-schema_bindings_LDADD = @METACITY_LIBS@
+ metacity.schemas.in: schema_bindings ${srcdir}/metacity.schemas.in.in
+ @echo Generating keybinding schemas... ${srcdir}/metacity.schemas.in.in
+ ${builddir}/schema_bindings ${srcdir}/metacity.schemas.in.in ${builddir}/metacity.schemas.in
+Index: metacity-2.30.3/configure.in
+===================================================================
+--- metacity-2.30.3.orig/configure.in 2010-09-22 22:14:06.000000000 +0800
++++ metacity-2.30.3/configure.in 2010-12-31 11:15:31.000000000 +0800
+@@ -31,6 +31,32 @@
+ AC_LIBTOOL_WIN32_DLL
+ AM_PROG_LIBTOOL
+
++if test x"$CC_FOR_BUILD" = x; then
++ if test x"$cross_compiling" = xyes; then
++ AC_CHECK_PROGS(CC_FOR_BUILD, gcc cc)
++ else
++ CC_FOR_BUILD="$CC"
++ fi
++fi
++AC_SUBST([CC_FOR_BUILD])
++if test x"$CFLAGS_FOR_BUILD" = x; then
++ if test x"$cross_compiling" = xyes; then
++ echo boo!
++ else
++ CFLAGS_FOR_BUILD="$CFLAGS"
++ fi
++fi
++AC_SUBST([CFLAGS_FOR_BUILD])
++if test x"$LDFLAGS_FOR_BUILD" = x; then
++ if test x"$cross_compiling" = xyes; then
++ echo boo!
++ else
++ LDFLAGS_FOR_BUILD="$LDFLAGS"
++ fi
++fi
++AC_SUBST([LDFLAGS_FOR_BUILD])
++
++
+ #### Integer sizes
+
+ AC_CHECK_SIZEOF(char)
diff --git a/meta/recipes-gnome/gnome/metacity_2.22.0.bb b/meta/recipes-gnome/gnome/metacity_2.22.0.bb
deleted file mode 100644
index e698ec439d..0000000000
--- a/meta/recipes-gnome/gnome/metacity_2.22.0.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SECTION = "x11/wm"
-DESCRIPTION = "Metacity is the boring window manager for the adult in you."
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
- file://src/include/main.h;endline=24;md5=c2242df552c880280315989bab626b90"
-
-DEPENDS = "startup-notification gtk+ gconf gdk-pixbuf-csource-native"
-PR = "r3"
-
-inherit gnome update-alternatives
-
-ALTERNATIVE_NAME = "x-window-manager"
-ALTERNATIVE_LINK = "${bindir}/x-window-manager"
-ALTERNATIVE_PATH = "${bindir}/metacity"
-ALTERNATIVE_PRIORITY = "10"
-
-EXTRA_OECONF += "--disable-verbose \
- --disable-xinerama"
-
-FILES_${PN} += "${datadir}/themes"
-
-SRC_URI[archive.md5sum] = "8cb6d02cf66a1003532b4f5d2754d696"
-SRC_URI[archive.sha256sum] = "3c670b41a214311006dc05f9a005696b9d3fdcb5c80f1275367416600103b3bf"
diff --git a/meta/recipes-gnome/gnome/metacity_2.30.3.bb b/meta/recipes-gnome/gnome/metacity_2.30.3.bb
new file mode 100644
index 0000000000..18105f2d6f
--- /dev/null
+++ b/meta/recipes-gnome/gnome/metacity_2.30.3.bb
@@ -0,0 +1,29 @@
+SECTION = "x11/wm"
+DESCRIPTION = "Metacity is the boring window manager for the adult in you."
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+ file://src/include/main.h;endline=24;md5=c2242df552c880280315989bab626b90"
+
+DEPENDS = "startup-notification gtk+ gconf gdk-pixbuf-native libcanberra"
+PR = "r0"
+
+inherit gnome update-alternatives
+
+SRC_URI += "file://crosscompile.patch;patch=1"
+
+ALTERNATIVE_NAME = "x-window-manager"
+ALTERNATIVE_LINK = "${bindir}/x-window-manager"
+ALTERNATIVE_PATH = "${bindir}/metacity"
+ALTERNATIVE_PRIORITY = "10"
+
+EXTRA_OECONF += "--disable-verbose \
+ --disable-xinerama"
+
+FILES_${PN} += "${datadir}/themes"
+
+export CC_FOR_BUILD = "${BUILD_CC}"
+export CFLAGS_FOR_BUILD = "${BUILD_CFLAGS} -I${STAGING_LIBDIR_NATIVE}/glib-2.0/include -I${STAGING_INCDIR_NATIVE}/glib-2.0 -I${STAGING_INCDIR_NATIVE}/glib-2.0/include -I${STAGING_INCDIR_NATIVE}"
+export LDFLAGS_FOR_BUILD = "${BUILD_LDFLAGS} -L${STAGING_LIBDIR_NATIVE} -lglib-2.0"
+
+SRC_URI[archive.md5sum] = "553784f376d96b902e19ff437cd5b339"
+SRC_URI[archive.sha256sum] = "08f887018fa5e447cf184d03bae3fe2c05fdb7583bed6768e3b4d66392fc18dd"
diff --git a/meta/recipes-gnome/gthumb/gthumb_2.12.0.bb b/meta/recipes-gnome/gthumb/gthumb_2.12.0.bb
deleted file mode 100644
index 7df9d5107b..0000000000
--- a/meta/recipes-gnome/gthumb/gthumb_2.12.0.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-DESCRIPTION = "gThumb is an image viewer and browser for the GNOME Desktop"
-SECTION = "x11/gnome"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
-DEPENDS = "glib-2.0 gtk+ libxml2 gnome-doc-utils libunique gconf-dbus libpng gstreamer jpeg tiff"
-PR = "r1"
-
-EXTRA_OECONF = "--disable-gnome-keyring --disable-libsoup --disable-exiv2 --disable-clutter"
-
-inherit gnome pkgconfig
-
-FILES_${PN} += "${datadir}/icons"
-FILES_${PN}-dbg += "${libdir}/gthumb/modules/.debug"
-
-SRC_URI[archive.md5sum] = "2911cd9b875efdfd554547176c59e309"
-SRC_URI[archive.sha256sum] = "9bb32ee44647f3f934d41344e2c1dbbd1546bf4949824030b3b818545758118c"
diff --git a/meta/recipes-gnome/gthumb/gthumb_2.12.1.bb b/meta/recipes-gnome/gthumb/gthumb_2.12.1.bb
new file mode 100644
index 0000000000..8a88230cea
--- /dev/null
+++ b/meta/recipes-gnome/gthumb/gthumb_2.12.1.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "gThumb is an image viewer and browser for the GNOME Desktop"
+SECTION = "x11/gnome"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+DEPENDS = "glib-2.0 gtk+ libxml2 gnome-doc-utils libunique gconf-dbus libpng gstreamer jpeg tiff"
+PR = "r0"
+
+EXTRA_OECONF = "--disable-gnome-keyring --disable-libsoup --disable-exiv2 --disable-clutter"
+
+inherit gnome pkgconfig
+
+FILES_${PN} += "${datadir}/icons"
+FILES_${PN}-dbg += "${libdir}/gthumb/modules/.debug"
+
+SRC_URI[archive.md5sum] = "a89be18a9e6f7f9d65cef56f34eb3022"
+SRC_URI[archive.sha256sum] = "94d186db48e4527f1ba1dad41b860fc34b8f13da4228319dc742c91f45ddea64"
diff --git a/meta/recipes-gnome/gtk+/gdk-pixbuf-csource-native_2.12.7.bb b/meta/recipes-gnome/gtk+/gdk-pixbuf-csource-native_2.12.7.bb
deleted file mode 100644
index c88a79570a..0000000000
--- a/meta/recipes-gnome/gtk+/gdk-pixbuf-csource-native_2.12.7.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-require gtk+_${PV}.bb
-inherit native
-DEPENDS = "jpeg-native libpng-native gettext-native glib-2.0-native libx11-native"
-S = "${WORKDIR}/gtk+-${PV}"
-FILESPATH = "${FILE_DIRNAME}/gdk-pixbuf-csource:${FILE_DIRNAME}/gtk+-${PV}:${FILE_DIRNAME}/files"
-SRC_URI += "file://reduce-dependencies.patch;patch=1"
-PR = "r11"
-
-#clear recommends for uclibc builds
-RRECOMMENDS = " "
-RRECOMMENDS_${PN}_linux = " "
-RRECOMMENDS_${PN}_linux-gnueabi = " "
-
-EXTRA_OECONF = "\
- --with-gdktarget=x11 \
- --without-libtiff \
- --with-libjpeg \
- --with-libpng \
- --x-includes=${STAGING_INCDIR} \
- --x-libraries=${STAGING_LIBDIR} \
-"
-
-PACKAGES_DYNAMIC = ""
-
-do_compile() {
- cd gdk-pixbuf && oe_runmake
-}
-
-do_install() {
- cd gdk-pixbuf
- oe_runmake 'DESTDIR=${D}' install
- install -d ${D}${sysconfdir}/gtk-2.0
- GDK_PIXBUF_MODULEDIR=${D}${libdir}/gtk-2.0/2.10.0/loaders ${D}${bindir}/gdk-pixbuf-query-loaders > ${D}${sysconfdir}/gtk-2.0/gdk-pixbuf.loaders
- sed -i -e 's#${D}##g' ${D}${sysconfdir}/gtk-2.0/gdk-pixbuf.loaders
- find ${D}${libdir} -name "libpixbufloader-*.la" -exec rm \{\} \;
-}
-
diff --git a/meta/recipes-gnome/gtk+/gdk-pixbuf-csource/reduce-dependencies.patch b/meta/recipes-gnome/gtk+/gdk-pixbuf-csource/reduce-dependencies.patch
deleted file mode 100644
index 6b030e8f16..0000000000
--- a/meta/recipes-gnome/gtk+/gdk-pixbuf-csource/reduce-dependencies.patch
+++ /dev/null
@@ -1,221 +0,0 @@
-#
-# strip unnecessary stuff out of configure, we just want
-# to build gdk-pixbuf-csource.
-# -- Michael 'Mickey' Lauer <mlauer@vanille-media.de>
-#
----
-# configure.in | 116 ++---------------------------------------------------------
-# 1 file changed, 5 insertions(+), 111 deletions(-)
-#
---- gtk+-2.12.7.orig/configure.in
-+++ gtk+-2.12.7/configure.in
-@@ -30,13 +30,10 @@ m4_define([gtk_api_version], [2.0])
- #GTK_BINARY_VERSION=$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION.$LT_CURRENT
- m4_define([gtk_binary_version], [2.10.0])
-
- # required versions of other packages
- m4_define([glib_required_version], [2.13.5])
--m4_define([pango_required_version], [1.17.3])
--m4_define([atk_required_version], [1.9.0])
--m4_define([cairo_required_version], [1.2.0])
-
-
- AC_INIT([gtk+], [gtk_version],
- [http://bugzilla.gnome.org/enter_bug.cgi?product=gtk%2B],
- [gtk+])
-@@ -347,14 +344,11 @@ ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
- ## Later on we actually use the cflags/libs from separate pkg-config
- ## calls. Oh, also the later pkg-config calls don't include
- ## the version requirements since those make the module lists
- ## annoying to construct
- PKG_CHECK_MODULES(BASE_DEPENDENCIES,
-- [glib-2.0 >= glib_required_version dnl
-- atk >= atk_required_version dnl
-- pango >= pango_required_version dnl
-- cairo >= cairo_required_version])
-+ [glib-2.0 >= glib_required_version])
-
- if test "$os_win32" != yes; then
- # libtool option to control which symbols are exported
- # right now, symbols starting with _ are not exported
- LIBTOOL_EXPORT_OPTIONS='-export-symbols-regex "^[[^_]].*"'
-@@ -1059,27 +1053,19 @@ GDK_PIXBUF_DEP_CFLAGS="`$PKG_CONFIG --cf
-
- GDK_PIXBUF_XLIB_PACKAGES=
- GDK_PIXBUF_XLIB_EXTRA_CFLAGS=
- GDK_PIXBUF_XLIB_EXTRA_LIBS=
-
--X_PACKAGES=fontconfig
-+X_PACKAGES=
- GDK_EXTRA_LIBS="$GDK_WLIBS"
- GDK_EXTRA_CFLAGS=
-
- # GTK+ uses some X calls, so needs to link against X directly
- GTK_DEP_PACKAGES_FOR_X=
- GTK_DEP_LIBS_FOR_X=
-
- if test "x$gdktarget" = "xx11"; then
-- #
-- # We use fontconfig very peripherally when decoding the default
-- # settings.
-- #
-- if $PKG_CONFIG --exists fontconfig; then : ; else
-- AC_MSG_ERROR([
--*** fontconfig (http://www.fontconfig.org) is required by the X11 backend.])
-- fi
-
- #
- # Check for basic X packages; we use pkg-config if available
- #
- if $PKG_CONFIG --exists x11 xext xrender; then
-@@ -1122,20 +1108,10 @@ if test "x$gdktarget" = "xx11"; then
- CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-
- gtk_save_LIBS=$LIBS
- LIBS="$x_libs_for_checks $LIBS"
-
-- # Sanity check for the X11 and Xext libraries. While everything we need from
-- # Xext is optional, the chances a system has *none* of these things is so
-- # small that we just unconditionally require it.
-- AC_CHECK_FUNC(XOpenDisplay, :,
-- AC_MSG_ERROR([*** libX11 not found. Check 'config.log' for more details.]))
-- AC_CHECK_FUNC(XextFindDisplay, :,
-- AC_MSG_ERROR([*** libXext not found. Check 'config.log' for more details.]))
-- AC_CHECK_FUNC(XRenderQueryExtension, :,
-- AC_MSG_ERROR([*** libXrender not found. Check 'config.log' for more details.]))
--
- # Check for xReply
-
- AC_MSG_CHECKING([if <X11/extensions/XIproto.h> is needed for xReply])
- AC_TRY_COMPILE([#include <X11/Xlibint.h>],
- [xReply *rep;],
-@@ -1416,104 +1392,33 @@ if test "x$gdktarget" = "xdirectfb"; the
- AM_CONDITIONAL(USE_DIRECTFB, true)
- else
- AM_CONDITIONAL(USE_DIRECTFB, false)
- fi
-
--
--# Check for Pango flags
--
--if test "x$gdktarget" = "xwin32"; then
-- PANGO_PACKAGES="pangowin32 pangocairo"
--else
-- PANGO_PACKAGES="pango pangocairo"
--fi
--
--AC_MSG_CHECKING(Pango flags)
--if $PKG_CONFIG --exists $PANGO_PACKAGES ; then
-- PANGO_CFLAGS=`$PKG_CONFIG --cflags $PANGO_PACKAGES`
-- PANGO_LIBS=`$PKG_CONFIG --libs $PANGO_PACKAGES`
--
-- AC_MSG_RESULT($PANGO_CFLAGS $PANGO_LIBS)
--else
-- AC_MSG_ERROR([
--*** Pango not found. Pango built with Cairo support is required
--*** to build GTK+. See http://www.pango.org for Pango information.
--])
--fi
--
--CFLAGS="$CFLAGS $PANGO_CFLAGS"
--
--if $PKG_CONFIG --uninstalled $PANGO_PACKAGES; then
-- :
--else
-- gtk_save_LIBS="$LIBS"
-- LIBS="$PANGO_LIBS $LIBS"
-- AC_TRY_LINK_FUNC(pango_context_new, :, AC_MSG_ERROR([
--*** Can't link to Pango. Pango is required to build
--*** GTK+. For more information see http://www.pango.org]))
-- LIBS="$gtk_save_LIBS"
--fi
--
--CFLAGS="$saved_cflags"
--LDFLAGS="$saved_ldflags"
--
--GDK_PACKAGES="$PANGO_PACKAGES"
--if test "x$gdktarget" = "xx11"; then
-- GDK_PACKAGES="$GDK_PACKAGES $X_PACKAGES"
--fi
- GDK_DEP_LIBS="$GDK_EXTRA_LIBS `$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $GDK_PACKAGES` $GDK_PIXBUF_EXTRA_LIBS"
- GDK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PIXBUF_PACKAGES $GDK_PACKAGES` $GDK_PIXBUF_EXTRA_CFLAGS $GDK_EXTRA_CFLAGS"
-
- #
- # If we aren't writing explicit dependencies, then don't put the extra libraries we need
- # into the pkg-config files
- #
- if test $enable_explicit_deps != yes ; then
-- GDK_PACKAGES="$PANGO_PACKAGES"
-+ GDK_PACKAGES=
- GDK_EXTRA_LIBS=
- fi
-
- AC_SUBST(GDK_PACKAGES)
- AC_SUBST(GDK_EXTRA_LIBS)
- AC_SUBST(GDK_EXTRA_CFLAGS)
- AC_SUBST(GDK_DEP_LIBS)
- AC_SUBST(GDK_DEP_CFLAGS)
-
-
--########################################
--# Check for Accessibility Toolkit flags
--########################################
--
--ATK_PACKAGES=atk
--AC_MSG_CHECKING(ATK flags)
--if $PKG_CONFIG --exists $ATK_PACKAGES ; then
-- ATK_CFLAGS=`$PKG_CONFIG --cflags $ATK_PACKAGES`
-- ATK_LIBS=`$PKG_CONFIG --libs $ATK_PACKAGES`
--
-- AC_MSG_RESULT($ATK_CFLAGS $ATK_LIBS)
--else
-- AC_MSG_ERROR([
--*** Accessibility Toolkit not found. Accessibility Toolkit is required
--*** to build GTK+.
--])
--fi
--
--if $PKG_CONFIG --uninstalled $ATK_PACKAGES; then
-- :
--else
-- gtk_save_LIBS="$LIBS"
-- LIBS="$ATK_LIBS $LIBS"
-- AC_TRY_LINK_FUNC(atk_object_get_type, : , AC_MSG_ERROR([
-- *** Cannot link to Accessibility Toolkit. Accessibility Toolkit is required
-- *** to build GTK+]))
-- LIBS="$gtk_save_LIBS"
--fi
--
--GTK_PACKAGES="atk cairo"
-+GTK_PACKAGES=
- GTK_EXTRA_LIBS=
- GTK_EXTRA_CFLAGS=
--GTK_DEP_LIBS="$GDK_EXTRA_LIBS $GTK_DEP_LIBS_FOR_X `$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $PANGO_PACKAGES $GTK_PACKAGES_FOR_X $GTK_PACKAGES` $GTK_EXTRA_LIBS $GDK_PIXBUF_EXTRA_LIBS"
-+GTK_DEP_LIBS="$GDK_EXTRA_LIBS $GTK_DEP_LIBS_FOR_X `$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $GTK_PACKAGES_FOR_X $GTK_PACKAGES` $GTK_EXTRA_LIBS $GDK_PIXBUF_EXTRA_LIBS"
- GTK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PIXBUF_PACKAGES $GDK_PACKAGES $GTK_PACKAGES` $GDK_PIXBUF_EXTRA_CFLAGS $GDK_EXTRA_CFLAGS $GTK_EXTRA_CFLAGS"
-
- if test x"$os_win32" = xyes; then
- GTK_EXTRA_CFLAGS="$msnative_struct"
- fi
-@@ -1567,21 +1472,10 @@ LIBS="$CUPS_LIBS"
- AC_CHECK_FUNCS(httpGetAuthString)
- LIBS="$gtk_save_libs"
-
- gtk_save_cppflags="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS $GTK_DEP_CFLAGS"
--
--AC_CHECK_HEADER(cairo-pdf.h,,AC_MSG_ERROR([
--*** Can't find cairo-pdf.h. You must build Cairo with the pdf
--*** backend enabled.]))
--
--if test "$os_win32" != "yes"; then
-- AC_CHECK_HEADER(cairo-ps.h,,AC_MSG_ERROR([
--*** Can't find cairo-ps.h. You must build Cairo with the
--*** postscript backend enabled.]))
--fi
--
- CPPFLAGS="$gtk_save_cppflags"
-
-
- AC_ARG_ENABLE(test-print-backend,
- [AC_HELP_STRING([--enable-test-print-backend],
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.20.1/disable-gio-png-sniff-test.diff b/meta/recipes-gnome/gtk+/gtk+-2.20.1/disable-gio-png-sniff-test.diff
deleted file mode 100644
index 13ae61ef88..0000000000
--- a/meta/recipes-gnome/gtk+/gtk+-2.20.1/disable-gio-png-sniff-test.diff
+++ /dev/null
@@ -1,97 +0,0 @@
-Index: gtk+-2.21.2/configure.in
-===================================================================
---- gtk+-2.21.2.orig/configure.in 2010-06-22 18:14:40.000000000 +0800
-+++ gtk+-2.21.2/configure.in 2010-06-22 18:14:58.000000000 +0800
-@@ -1072,48 +1072,50 @@
- # check one of the variables here
- AM_CONDITIONAL(INCLUDE_GDIPLUS, [test x"$INCLUDE_gdip_ico" = xyes])
-
--if test x$gio_can_sniff = x; then
-- AC_MSG_CHECKING([if gio can sniff png])
-- gtk_save_LIBS="$LIBS"
-- gtk_save_CFLAGS="$CFLAGS"
-- LIBS="`$PKG_CONFIG --libs gio-2.0`"
-- CFLAGS="`$PKG_CONFIG --cflags gio-2.0`"
-- AC_RUN_IFELSE([AC_LANG_SOURCE([[
-- #include <gio/gio.h>
-- static const gsize data_size = 159;
-- static const guint8 data[] =
-- {
-- 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
-- 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
-- 0x08, 0x02, 0x00, 0x00, 0x00, 0x90, 0x77, 0x53, 0xde, 0x00, 0x00, 0x00,
-- 0x01, 0x73, 0x52, 0x47, 0x42, 0x00, 0xae, 0xce, 0x1c, 0xe9, 0x00, 0x00,
-- 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 0x00,
-- 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 0x00, 0x00, 0x00, 0x07, 0x74,
-- 0x49, 0x4d, 0x45, 0x07, 0xd8, 0x07, 0x0f, 0x10, 0x08, 0x15, 0x61, 0xd8,
-- 0x35, 0x37, 0x00, 0x00, 0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f,
-- 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
-- 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57,
-- 0x81, 0x0e, 0x17, 0x00, 0x00, 0x00, 0x0c, 0x49, 0x44, 0x41, 0x54, 0x08,
-- 0xd7, 0x63, 0xf8, 0xff, 0xff, 0x3f, 0x00, 0x05, 0xfe, 0x02, 0xfe, 0xdc,
-- 0xcc, 0x59, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae,
-- 0x42, 0x60, 0x82
-- };
-- int
-- main (int argc, char **argv)
-- {
-- char *content_type;
-- char *image_png;
-- content_type = g_content_type_guess (NULL, data, data_size, NULL);
-- image_png = g_content_type_from_mime_type ("image/png");
-- return !!strcmp (content_type, image_png);
-- }]])],
-- [gio_can_sniff=yes
-- AC_DEFINE(GDK_PIXBUF_USE_GIO_MIME, 1, [Define if gio can sniff image data])],
-- [gio_can_sniff=no])
-- AC_MSG_RESULT($gio_can_sniff)
-- LIBS="$gtk_save_LIBS"
-- CFLAGS="$gtk_save_CFLAGS"
--fi
-+# Disabled due to cross-compile
-+#if test x$gio_can_sniff = x; then
-+# AC_MSG_CHECKING([if gio can sniff png])
-+# gtk_save_LIBS="$LIBS"
-+# gtk_save_CFLAGS="$CFLAGS"
-+# LIBS="`$PKG_CONFIG --libs gio-2.0`"
-+# CFLAGS="`$PKG_CONFIG --cflags gio-2.0`"
-+# AC_RUN_IFELSE([AC_LANG_SOURCE([[
-+# #include <gio/gio.h>
-+# static const gsize data_size = 159;
-+# static const guint8 data[] =
-+# {
-+# 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
-+# 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
-+# 0x08, 0x02, 0x00, 0x00, 0x00, 0x90, 0x77, 0x53, 0xde, 0x00, 0x00, 0x00,
-+# 0x01, 0x73, 0x52, 0x47, 0x42, 0x00, 0xae, 0xce, 0x1c, 0xe9, 0x00, 0x00,
-+# 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 0x00,
-+# 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 0x00, 0x00, 0x00, 0x07, 0x74,
-+# 0x49, 0x4d, 0x45, 0x07, 0xd8, 0x07, 0x0f, 0x10, 0x08, 0x15, 0x61, 0xd8,
-+# 0x35, 0x37, 0x00, 0x00, 0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f,
-+# 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
-+# 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57,
-+# 0x81, 0x0e, 0x17, 0x00, 0x00, 0x00, 0x0c, 0x49, 0x44, 0x41, 0x54, 0x08,
-+# 0xd7, 0x63, 0xf8, 0xff, 0xff, 0x3f, 0x00, 0x05, 0xfe, 0x02, 0xfe, 0xdc,
-+# 0xcc, 0x59, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae,
-+# 0x42, 0x60, 0x82
-+# };
-+# int
-+# main (int argc, char **argv)
-+# {
-+# char *content_type;
-+# char *image_png;
-+# content_type = g_content_type_guess (NULL, data, data_size, NULL);
-+# image_png = g_content_type_from_mime_type ("image/png");
-+# return !!strcmp (content_type, image_png);
-+# }]])],
-+# [gio_can_sniff=yes
-+# [gio_can_sniff=no])
-+# AC_MSG_RESULT($gio_can_sniff)
-+# LIBS="$gtk_save_LIBS"
-+# CFLAGS="$gtk_save_CFLAGS"
-+#fi
-+
-+AC_DEFINE(GDK_PIXBUF_USE_GIO_MIME, 1, [Define if gio can sniff image data])],
-
- #
- # Allow building some or all immodules included
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.20.1/hardcoded_libtool.patch b/meta/recipes-gnome/gtk+/gtk+-2.20.1/hardcoded_libtool.patch
deleted file mode 100644
index 66be74475b..0000000000
--- a/meta/recipes-gnome/gtk+/gtk+-2.20.1/hardcoded_libtool.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-Index: gtk+-2.21.2/configure.in
-===================================================================
---- gtk+-2.21.2.orig/configure.in 2010-06-22 17:21:41.000000000 +0800
-+++ gtk+-2.21.2/configure.in 2010-06-22 17:28:59.000000000 +0800
-@@ -425,7 +425,7 @@
- case $enable_explicit_deps in
- auto)
- export SED
-- deplibs_check_method=`(./libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
-+ deplibs_check_method=`(./$host_alias-libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
- if test "x$deplibs_check_method" '!=' xpass_all || test "x$enable_static" = xyes ; then
- enable_explicit_deps=yes
- else
-@@ -804,7 +804,7 @@
- dnl Now we check to see if our libtool supports shared lib deps
- dnl (in a rather ugly way even)
- if $dynworks; then
-- pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
-+ pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} $host_alias-libtool --config"
- pixbuf_deplibs_check=`$pixbuf_libtool_config | \
- grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
- sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
-@@ -1974,7 +1974,7 @@
- # We are using gmodule-no-export now, but I'm leaving the stripping
- # code in place for now, since pango and atk still require gmodule.
- export SED
--export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
-+export_dynamic=`($host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
- if test -n "$export_dynamic"; then
- GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"`
- GDK_PIXBUF_XLIB_DEP_LIBS=`echo $GDK_PIXBUF_XLIB_DEP_LIBS | sed -e "s/$export_dynamic//"`
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.20.1/no-demos.patch b/meta/recipes-gnome/gtk+/gtk+-2.20.1/no-demos.patch
deleted file mode 100644
index 0fc4c48d1a..0000000000
--- a/meta/recipes-gnome/gtk+/gtk+-2.20.1/no-demos.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- gtk+-2.10.1/Makefile.am.orig 2006-08-08 12:37:30.000000000 +0100
-+++ gtk+-2.10.1/Makefile.am 2006-08-08 12:37:48.000000000 +0100
-@@ -1,6 +1,6 @@
- ## Makefile.am for GTK+
-
--SRC_SUBDIRS = gdk-pixbuf gdk gtk modules demos tests perf contrib
-+SRC_SUBDIRS = gdk-pixbuf gdk gtk modules tests perf contrib
- SUBDIRS = po po-properties $(SRC_SUBDIRS) docs m4macros
-
- # require automake 1.4
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.20.1/0001-bgo-584832-Duplicate-the-exec-string-returned-by-gtk.patch b/meta/recipes-gnome/gtk+/gtk+-2.22.1/0001-bgo-584832-Duplicate-the-exec-string-returned-by-gtk.patch
index ee55f9cc3b..ee55f9cc3b 100644
--- a/meta/recipes-gnome/gtk+/gtk+-2.20.1/0001-bgo-584832-Duplicate-the-exec-string-returned-by-gtk.patch
+++ b/meta/recipes-gnome/gtk+/gtk+-2.22.1/0001-bgo-584832-Duplicate-the-exec-string-returned-by-gtk.patch
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.20.1/cellrenderer-cairo.patch b/meta/recipes-gnome/gtk+/gtk+-2.22.1/cellrenderer-cairo.patch
index 92ce643125..92ce643125 100644
--- a/meta/recipes-gnome/gtk+/gtk+-2.20.1/cellrenderer-cairo.patch
+++ b/meta/recipes-gnome/gtk+/gtk+-2.22.1/cellrenderer-cairo.patch
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.20.1/configurefix.patch b/meta/recipes-gnome/gtk+/gtk+-2.22.1/configurefix.patch
index 7f6c73be49..7f6c73be49 100644
--- a/meta/recipes-gnome/gtk+/gtk+-2.20.1/configurefix.patch
+++ b/meta/recipes-gnome/gtk+/gtk+-2.22.1/configurefix.patch
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.20.1/entry-cairo.patch b/meta/recipes-gnome/gtk+/gtk+-2.22.1/entry-cairo.patch
index 3313e7f132..3313e7f132 100644
--- a/meta/recipes-gnome/gtk+/gtk+-2.20.1/entry-cairo.patch
+++ b/meta/recipes-gnome/gtk+/gtk+-2.22.1/entry-cairo.patch
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.22.1/hardcoded_libtool.patch b/meta/recipes-gnome/gtk+/gtk+-2.22.1/hardcoded_libtool.patch
new file mode 100644
index 0000000000..7937ef2d07
--- /dev/null
+++ b/meta/recipes-gnome/gtk+/gtk+-2.22.1/hardcoded_libtool.patch
@@ -0,0 +1,31 @@
+Index: gtk+-2.23.2/configure.in
+===================================================================
+--- gtk+-2.23.2.orig/configure.in 2010-11-10 22:22:47.000000000 +0800
++++ gtk+-2.23.2/configure.in 2010-11-25 13:32:40.000000000 +0800
+@@ -414,7 +414,7 @@
+ case $enable_explicit_deps in
+ auto)
+ export SED
+- deplibs_check_method=`(./libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
++ deplibs_check_method=`(./$host_alias-libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
+ if test "x$deplibs_check_method" '!=' xpass_all || test "x$enable_static" = xyes ; then
+ enable_explicit_deps=yes
+ else
+@@ -773,7 +773,7 @@
+ dnl Now we check to see if our libtool supports shared lib deps
+ dnl (in a rather ugly way even)
+ if $dynworks; then
+- module_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
++ module_libtool_config="${CONFIG_SHELL-/bin/sh} $host_alias-libtool --config"
+ module_deplibs_check=`$module_libtool_config | \
+ grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
+ sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
+@@ -1555,7 +1555,7 @@
+ # We are using gmodule-no-export now, but I'm leaving the stripping
+ # code in place for now, since pango and atk still require gmodule.
+ export SED
+-export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++export_dynamic=`($host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ if test -n "$export_dynamic"; then
+ GDK_DEP_LIBS=`echo $GDK_DEP_LIBS | sed -e "s/$export_dynamic//"`
+ GTK_DEP_LIBS=`echo $GTK_DEP_LIBS | sed -e "s/$export_dynamic//"`
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.22.1/no-demos.patch b/meta/recipes-gnome/gtk+/gtk+-2.22.1/no-demos.patch
new file mode 100644
index 0000000000..21700161ea
--- /dev/null
+++ b/meta/recipes-gnome/gtk+/gtk+-2.22.1/no-demos.patch
@@ -0,0 +1,13 @@
+Index: gtk+-2.23.2/Makefile.am
+===================================================================
+--- gtk+-2.23.2.orig/Makefile.am 2010-11-10 20:34:42.000000000 +0800
++++ gtk+-2.23.2/Makefile.am 2010-11-25 13:39:22.000000000 +0800
+@@ -1,7 +1,7 @@
+ ## Makefile.am for GTK+
+ include $(top_srcdir)/Makefile.decl
+
+-SRC_SUBDIRS = gdk gtk modules demos tests perf
++SRC_SUBDIRS = gdk gtk modules tests perf
+ SUBDIRS = po po-properties $(SRC_SUBDIRS) docs m4macros build
+
+ # require automake 1.4
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.20.1/run-iconcache.patch b/meta/recipes-gnome/gtk+/gtk+-2.22.1/run-iconcache.patch
index 518875e6fd..518875e6fd 100644
--- a/meta/recipes-gnome/gtk+/gtk+-2.20.1/run-iconcache.patch
+++ b/meta/recipes-gnome/gtk+/gtk+-2.22.1/run-iconcache.patch
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.20.1/toggle-font.diff b/meta/recipes-gnome/gtk+/gtk+-2.22.1/toggle-font.diff
index 4853628c82..4853628c82 100644
--- a/meta/recipes-gnome/gtk+/gtk+-2.20.1/toggle-font.diff
+++ b/meta/recipes-gnome/gtk+/gtk+-2.22.1/toggle-font.diff
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.20.1/xsettings.patch b/meta/recipes-gnome/gtk+/gtk+-2.22.1/xsettings.patch
index 84231e9b91..84231e9b91 100644
--- a/meta/recipes-gnome/gtk+/gtk+-2.20.1/xsettings.patch
+++ b/meta/recipes-gnome/gtk+/gtk+-2.22.1/xsettings.patch
diff --git a/meta/recipes-gnome/gtk+/gtk+.inc b/meta/recipes-gnome/gtk+/gtk+.inc
index c34283eb8c..94a8fe618d 100644
--- a/meta/recipes-gnome/gtk+/gtk+.inc
+++ b/meta/recipes-gnome/gtk+/gtk+.inc
@@ -6,15 +6,16 @@ BUGTRACKER = "https://bugzilla.gnome.org/"
LICENSE = "LGPLv2 & LGPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
+
SECTION = "libs"
PRIORITY = "optional"
DEPENDS = "glib-2.0 pango atk jpeg libpng libxext libxcursor gtk-doc-native libxrandr \
- libgcrypt libxdamage libxrender libxcomposite cairo"
+ libgcrypt libxdamage libxrender libxcomposite cairo gdk-pixbuf"
inherit autotools pkgconfig
-FILES_${PN} = "${bindir}/gdk-pixbuf-query-loaders \
- ${bindir}/gtk-update-icon-cache \
+FILES_${PN} = "${bindir}/gtk-update-icon-cache \
${bindir}/gtk-query-immodules-2.0 \
${libdir}/lib*${SOLIBS} \
${datadir}/themes ${sysconfdir} \
@@ -26,7 +27,6 @@ FILES_${PN}-dev += " \
${libdir}/gtk-2.0/${LIBV}/loaders/*.la \
${libdir}/gtk-2.0/${LIBV}/immodules/*.la \
${libdir}/gtk-2.0/${LIBV}/engines/*.la \
- ${bindir}/gdk-pixbuf-csource \
${bindir}/gtk-builder-convert"
FILES_${PN}-dbg += " \
@@ -38,7 +38,6 @@ FILES_${PN}-dbg += " \
BASE_RRECOMMENDS = "ttf-dejavu-sans"
BASE_RRECOMMENDS_angstrom = "ttf-dejavu-sans gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-gif gdk-pixbuf-loader-xpm"
BASE_RRECOMMENDS_poky = "gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-gif gdk-pixbuf-loader-xpm shared-mime-info"
-BASE_RRECOMMENDS_moblin = "gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-gif gdk-pixbuf-loader-xpm shared-mime-info"
GLIBC_RRECOMMENDS= "${BASE_RRECOMMENDS} glibc-gconv-iso8859-1"
@@ -63,8 +62,8 @@ SYSROOT_PREPROCESS_FUNCS += "gtk_sysroot_preprocess"
gtk_sysroot_preprocess () {
if [ -e ${D}${bindir}/gtk-builder-convert ]; then
- install -d ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}/
- install -m 755 ${D}${bindir}/gtk-builder-convert ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}/
+ install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+ install -m 755 ${D}${bindir}/gtk-builder-convert ${SYSROOT_DESTDIR}${bindir_crossscripts}/
fi
}
@@ -74,13 +73,3 @@ if [ "x$D" != "x" ]; then
fi
}
-
-postinst_pixbufloader() {
-if [ "x$D" != "x" ]; then
- exit 1
-fi
-
-gdk-pixbuf-query-loaders > ${sysconfdir}/gtk-2.0/gdk-pixbuf.loaders
-
-test -x ${bindir}/gtk-update-icon-cache && gtk-update-icon-cache -q ${datadir}/icons/hicolor
-}
diff --git a/meta/recipes-gnome/gtk+/gtk+_2.12.7.bb b/meta/recipes-gnome/gtk+/gtk+_2.12.7.bb
index d829308513..12193f9b97 100644
--- a/meta/recipes-gnome/gtk+/gtk+_2.12.7.bb
+++ b/meta/recipes-gnome/gtk+/gtk+_2.12.7.bb
@@ -1,6 +1,6 @@
require gtk+.inc
-PR = "r9"
+PR = "r10"
SRC_URI = "http://download.gnome.org/sources/gtk+/2.12/gtk+-${PV}.tar.bz2 \
file://xsettings.patch;patch=1 \
diff --git a/meta/recipes-gnome/gtk+/gtk+_2.16.6.bb b/meta/recipes-gnome/gtk+/gtk+_2.16.6.bb
index becd2bc29c..1864d1ba06 100644
--- a/meta/recipes-gnome/gtk+/gtk+_2.16.6.bb
+++ b/meta/recipes-gnome/gtk+/gtk+_2.16.6.bb
@@ -1,6 +1,6 @@
require gtk+.inc
-PR = "r5"
+PR = "r6"
SRC_URI = "http://download.gnome.org/sources/gtk+/2.16/gtk+-${PV}.tar.bz2 \
file://xsettings.patch;patch=1 \
diff --git a/meta/recipes-gnome/gtk+/gtk+_2.20.1.bb b/meta/recipes-gnome/gtk+/gtk+_2.20.1.bb
deleted file mode 100644
index dec518746b..0000000000
--- a/meta/recipes-gnome/gtk+/gtk+_2.20.1.bb
+++ /dev/null
@@ -1,61 +0,0 @@
-require gtk+.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
- file://gtk/gtk.h;endline=27;md5=c59e0b4490dd135a5726ebf851f9b17f \
- file://gdk/gdk.h;endline=27;md5=07db285ec208fb3e0bf7d861b0614202 \
- file://tests/testgtk.c;endline=27;md5=262db5db5f776f9863e56df31423e24c"
-PR = "r1"
-
-SRC_URI = "http://download.gnome.org/sources/gtk+/2.20/gtk+-${PV}.tar.bz2 \
- file://xsettings.patch;patch=1 \
- file://run-iconcache.patch;patch=1 \
- file://hardcoded_libtool.patch;patch=1 \
- file://no-demos.patch;patch=1 \
- file://cellrenderer-cairo.patch;patch=1;pnum=0 \
- file://toggle-font.diff;patch=1;pnum=0 \
- file://0001-bgo-584832-Duplicate-the-exec-string-returned-by-gtk.patch;patch=1 \
-# TO MERGE
-# file://entry-cairo.patch;patch=1;pnum=0 \
-# file://filesystem-volumes.patch;patch=1 \
-# file://filechooser-props.patch;patch=1 \
-# file://filechooser-default.patch;patch=1 \
-# file://filechooser-sizefix.patch;patch=1 \
-# temporary
-# file://gtklabel-resize-patch;patch=1 \
-# file://menu-deactivate.patch;patch=1 \
-# file://combo-arrow-size.patch;patch=1;pnum=0 \
- file://disable-gio-png-sniff-test.diff;patch=1 \
- file://configurefix.patch;patch=1 \
- "
-
-SRC_URI[md5sum] = "53e6f3a93bd22934878fc4a4a34c68aa"
-SRC_URI[sha256sum] = "0e081731d21e34ff45c82199490c2889504fa8b3c7e117c043e82ababaec0f65"
-
-EXTRA_OECONF = "--without-libtiff --without-libjasper --disable-xkb --disable-glibtest --disable-cups"
-
-LIBV = "2.10.0"
-
-PACKAGES_DYNAMIC += "gdk-pixbuf-loader-* gtk-immodule-* gtk-printbackend-*"
-
-#-fomit-frame-pointer in default FULL_OPTIMIZATION will cause matchbox-panel segfault on atom-pc & emenlow
-FULL_OPTIMIZATION_emenlow = "-fexpensive-optimizations -frename-registers -O2 -ggdb -feliminate-unused-debug-types"
-FULL_OPTIMIZATION_atom-pc = "-fexpensive-optimizations -frename-registers -O2 -ggdb -feliminate-unused-debug-types"
-
-python populate_packages_prepend () {
- import os.path
-
- prologue = bb.data.getVar("postinst_prologue", d, 1)
- postinst_pixbufloader = bb.data.getVar("postinst_pixbufloader", d, 1)
-
- gtk_libdir = bb.data.expand('${libdir}/gtk-2.0/${LIBV}', d)
- loaders_root = os.path.join(gtk_libdir, 'loaders')
- immodules_root = os.path.join(gtk_libdir, 'immodules')
- printmodules_root = os.path.join(gtk_libdir, 'printbackends');
-
- do_split_packages(d, loaders_root, '^libpixbufloader-(.*)\.so$', 'gdk-pixbuf-loader-%s', 'GDK pixbuf loader for %s', postinst_pixbufloader)
- do_split_packages(d, immodules_root, '^im-(.*)\.so$', 'gtk-immodule-%s', 'GTK input module for %s', prologue + 'gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules')
- do_split_packages(d, printmodules_root, '^libprintbackend-(.*)\.so$', 'gtk-printbackend-%s', 'GTK printbackend module for %s')
-
- if (bb.data.getVar('DEBIAN_NAMES', d, 1)):
- bb.data.setVar('PKG_${PN}', 'libgtk-2.0', d)
-}
diff --git a/meta/recipes-gnome/gtk+/gtk+_2.22.1.bb b/meta/recipes-gnome/gtk+/gtk+_2.22.1.bb
new file mode 100644
index 0000000000..35aa883251
--- /dev/null
+++ b/meta/recipes-gnome/gtk+/gtk+_2.22.1.bb
@@ -0,0 +1,57 @@
+require gtk+.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
+ file://gtk/gtk.h;endline=27;md5=c59e0b4490dd135a5726ebf851f9b17f \
+ file://gdk/gdk.h;endline=27;md5=07db285ec208fb3e0bf7d861b0614202 \
+ file://tests/testgtk.c;endline=27;md5=262db5db5f776f9863e56df31423e24c"
+PR = "r0"
+
+SRC_URI = "http://download.gnome.org/sources/gtk+/2.22/gtk+-${PV}.tar.bz2 \
+ file://xsettings.patch;patch=1 \
+ file://run-iconcache.patch;patch=1 \
+ file://hardcoded_libtool.patch;patch=1 \
+ file://no-demos.patch;patch=1 \
+ file://cellrenderer-cairo.patch;patch=1;pnum=0 \
+ file://toggle-font.diff;patch=1;pnum=0 \
+ file://0001-bgo-584832-Duplicate-the-exec-string-returned-by-gtk.patch;patch=1 \
+# TO MERGE
+# file://entry-cairo.patch;patch=1;pnum=0 \
+# file://filesystem-volumes.patch;patch=1 \
+# file://filechooser-props.patch;patch=1 \
+# file://filechooser-default.patch;patch=1 \
+# file://filechooser-sizefix.patch;patch=1 \
+# temporary
+# file://gtklabel-resize-patch;patch=1 \
+# file://menu-deactivate.patch;patch=1 \
+# file://combo-arrow-size.patch;patch=1;pnum=0 \
+# file://configurefix.patch;patch=1 \
+ "
+
+SRC_URI[md5sum] = "fdce46ba354c155230b7d4090b17f7d9"
+SRC_URI[sha256sum] = "965bc124f0d25087c4cb2a64cbfd7e4f896e05be8d560fbba68dd8685ba24d07"
+
+EXTRA_OECONF = "--without-libtiff --without-libjasper --enable-xkb --disable-glibtest --disable-cups"
+
+LIBV = "2.10.0"
+
+PACKAGES_DYNAMIC += "gtk-immodule-* gtk-printbackend-*"
+
+#-fomit-frame-pointer in default FULL_OPTIMIZATION will cause matchbox-panel segfault on atom-pc & emenlow
+FULL_OPTIMIZATION_emenlow = "-fexpensive-optimizations -frename-registers -O2 -ggdb -feliminate-unused-debug-types"
+FULL_OPTIMIZATION_atom-pc = "-fexpensive-optimizations -frename-registers -O2 -ggdb -feliminate-unused-debug-types"
+
+python populate_packages_prepend () {
+ import os.path
+
+ prologue = bb.data.getVar("postinst_prologue", d, 1)
+
+ gtk_libdir = bb.data.expand('${libdir}/gtk-2.0/${LIBV}', d)
+ immodules_root = os.path.join(gtk_libdir, 'immodules')
+ printmodules_root = os.path.join(gtk_libdir, 'printbackends');
+
+ do_split_packages(d, immodules_root, '^im-(.*)\.so$', 'gtk-immodule-%s', 'GTK input module for %s', prologue + 'gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules')
+ do_split_packages(d, printmodules_root, '^libprintbackend-(.*)\.so$', 'gtk-printbackend-%s', 'GTK printbackend module for %s')
+
+ if (bb.data.getVar('DEBIAN_NAMES', d, 1)):
+ bb.data.setVar('PKG_${PN}', 'libgtk-2.0', d)
+}
diff --git a/meta/recipes-gnome/gtk-theme-darkilouche/gtk-theme-darkilouche.bb b/meta/recipes-gnome/gtk-theme-darkilouche/gtk-theme-darkilouche.bb
deleted file mode 100644
index 6bf1eedafc..0000000000
--- a/meta/recipes-gnome/gtk-theme-darkilouche/gtk-theme-darkilouche.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-DESCRIPTION = "Dark GTK+ theme"
-LICENSE = "GPL"
-DEPENDS = "gtk-engines"
-RDEPENDS = "gtk-engine-clearlooks gnome-icon-theme"
-SECTION = "x11/base"
-PACKAGE_ARCH = "all"
-
-PR = "r1"
-
-#SRC_URI = "http://art.gnome.org/download/themes/gtk2/1285/GTK2-Darkilouche.tar.bz2"
-SRC_URI = "git://people.freedesktop.org/~jimmac/Darkilouche.git;protocol=git \
- file://change-colours.diff;patch=1"
-
-S = "${WORKDIR}/git"
-PACKAGES = ${PN}
-
-do_install () {
- install -d ${D}${datadir}/themes/Darkilouche/gtk-2.0
- install -m 0644 ${S}/index.theme ${D}${datadir}/themes/Darkilouche
- install -m 0644 ${S}/gtk-2.0/gtkrc ${D}${datadir}/themes/Darkilouche/gtk-2.0
-}
-
-FILES_${PN} = "${datadir}/themes/Darkilouche/"
diff --git a/meta/recipes-gnome/gtk-theme-darkilouche/gtk-theme-darkilouche/change-colours.diff b/meta/recipes-gnome/gtk-theme-darkilouche/gtk-theme-darkilouche/change-colours.diff
deleted file mode 100644
index c9fb7bd73d..0000000000
--- a/meta/recipes-gnome/gtk-theme-darkilouche/gtk-theme-darkilouche/change-colours.diff
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: git/index.theme
-===================================================================
---- git.orig/index.theme 2008-09-22 18:54:50.000000000 +0100
-+++ git/index.theme 2008-09-22 18:55:02.000000000 +0100
-@@ -6,6 +6,6 @@
-
- [X-GNOME-Metatheme]
- GtkTheme=Darkilouche
--GtkColorScheme=
--MetacityTheme=Gilouche
-+GtkColorScheme=fg_color:#f5f5f5f5f5f5,bg_color:#88888a8a8585,text_color:#000000000000,base_color:#bababdbdb6b6,selected_fg_color:#ffffffffffff,selected_bg_color:#686890904343,tooltip_fg_color:#000000000000,tooltip_bg_color:#e5e5e5e5e5e5
-+MetacityTheme=Clearlooks
- IconTheme=gnome
diff --git a/meta/recipes-gnome/gtkhtml2/gtkhtml2_svn.bb b/meta/recipes-gnome/gtkhtml2/gtkhtml2_svn.bb
index a217775170..ac921bf480 100644
--- a/meta/recipes-gnome/gtkhtml2/gtkhtml2_svn.bb
+++ b/meta/recipes-gnome/gtkhtml2/gtkhtml2_svn.bb
@@ -3,7 +3,7 @@ DEPENDS = "gtk+ glib-2.0 libxml2"
DESCRIPTION = "A GTK+ HTML rendering library."
LICENSE = "LGPLv2"
LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=55ca817ccb7d5b5b66355690e9abc605"
-PV = "2.11.0+svnr${SRCREV}"
+PV = "2.11.0+svnr${SRCPV}"
PR = "r1"
SRC_URI = "svn://anonymous@svn.gnome.org/svn/gtkhtml2/;module=trunk \
diff --git a/meta/recipes-gnome/librsvg/librsvg-2.32.0/doc_Makefile.patch b/meta/recipes-gnome/librsvg/librsvg-2.32.1/doc_Makefile.patch
index 217573bd27..217573bd27 100644
--- a/meta/recipes-gnome/librsvg/librsvg-2.32.0/doc_Makefile.patch
+++ b/meta/recipes-gnome/librsvg/librsvg-2.32.1/doc_Makefile.patch
diff --git a/meta/recipes-gnome/librsvg/librsvg_2.32.0.bb b/meta/recipes-gnome/librsvg/librsvg_2.32.0.bb
deleted file mode 100644
index 35cf5a4fc9..0000000000
--- a/meta/recipes-gnome/librsvg/librsvg_2.32.0.bb
+++ /dev/null
@@ -1,47 +0,0 @@
-DESCRIPTION = "Library for rendering SVG files"
-HOMEPAGE = "http://ftp.gnome.org/pub/GNOME/sources/librsvg/"
-BUGTRACKER = "https://bugzilla.gnome.org/"
-
-LICENSE = "LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
- file://rsvg.h;beginline=3;endline=24;md5=20b4113c4909bbf0d67e006778302bc6"
-
-SECTION = "x11/utils"
-DEPENDS = "gtk+ libcroco cairo libxml2 popt"
-PR = "r2"
-
-inherit autotools pkgconfig gnome
-
-EXTRA_OECONF = "--disable-mozilla-plugin --without-svgz --without-croco --disable-gnome-vfs"
-
-SRC_URI += "file://doc_Makefile.patch"
-
-SRC_URI[archive.md5sum] = "b015a9bd80143ec876af489d882dc28b"
-SRC_URI[archive.sha256sum] = "e0f6f936dab583de317cc0c36a48f80bdb9c93775225ee84140c7e5e3f841068"
-
-do_configure_prepend () {
- export GDK_PIXBUF_QUERYLOADERS="${libdir}/gtk-2.0/version/loaders"
- echo "CLEANFILES=" > gtk-doc.make
-}
-
-PACKAGES =+ "librsvg-gtk librsvg-gtk-dbg librsvg-gtk-dev rsvg"
-FILES_${PN} = "${libdir}/*.so.*"
-FILES_rsvg = "${bindir}/rsvg \
- ${bindir}/rsvg-view \
- ${bindir}/rsvg-convert \
- ${datadir}/pixmaps/svg-viewer.svg"
-FILES_librsvg-gtk = "${libdir}/gtk-2.0/*/*/*.so"
-FILES_librsvg-gtk-dev += "${libdir}/gtk-2.0/*.*a \
- ${libdir}/gtk-2.0/*/loaders/*.*a \
- ${libdir}/gtk-2.0/*/engines/*.*a"
-FILES_librsvg-gtk-dbg += "${libdir}/gtk-2.0/.debug \
- ${libdir}/gtk-2.0/*/*/.debug"
-
-pkg_postinst_librsvg-gtk() {
-if [ "x$D" != "x" ]; then
- exit 1
-fi
-
-test -x ${bindir}/gdk-pixbuf-query-loaders && { gdk-pixbuf-query-loaders > ${sysconfdir}/gtk-2.0/gdk-pixbuf.loaders ; }
-test -x ${bindir}/gtk-update-icon-cache && gtk-update-icon-cache -q ${datadir}/icons/hicolor
-}
diff --git a/meta/recipes-gnome/librsvg/librsvg_2.32.1.bb b/meta/recipes-gnome/librsvg/librsvg_2.32.1.bb
new file mode 100644
index 0000000000..ea9456dff8
--- /dev/null
+++ b/meta/recipes-gnome/librsvg/librsvg_2.32.1.bb
@@ -0,0 +1,48 @@
+DESCRIPTION = "Library for rendering SVG files"
+HOMEPAGE = "http://ftp.gnome.org/pub/GNOME/sources/librsvg/"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+ file://rsvg.h;beginline=3;endline=24;md5=20b4113c4909bbf0d67e006778302bc6"
+
+SECTION = "x11/utils"
+DEPENDS = "gtk+ libcroco cairo libxml2 popt"
+
+PR = "r0"
+
+inherit autotools pkgconfig gnome
+
+EXTRA_OECONF = "--disable-mozilla-plugin --without-svgz --without-croco --disable-gnome-vfs"
+
+SRC_URI += "file://doc_Makefile.patch"
+
+SRC_URI[archive.md5sum] = "4b00d0fee130c936644892c152f42db7"
+SRC_URI[archive.sha256sum] = "91b98051f352fab8a6257688d6b2fd665b4648ed66144861f2f853ccf876d334"
+
+do_configure_prepend () {
+ export GDK_PIXBUF_QUERYLOADERS="${libdir}/gtk-2.0/version/loaders"
+ echo "CLEANFILES=" > gtk-doc.make
+}
+
+PACKAGES =+ "librsvg-gtk librsvg-gtk-dbg librsvg-gtk-dev rsvg"
+FILES_${PN} = "${libdir}/*.so.*"
+FILES_rsvg = "${bindir}/rsvg \
+ ${bindir}/rsvg-view \
+ ${bindir}/rsvg-convert \
+ ${datadir}/pixmaps/svg-viewer.svg"
+FILES_librsvg-gtk = "${libdir}/gtk-2.0/*/*/*.so"
+FILES_librsvg-gtk-dev += "${libdir}/gtk-2.0/*.*a \
+ ${libdir}/gtk-2.0/*/loaders/*.*a \
+ ${libdir}/gtk-2.0/*/engines/*.*a"
+FILES_librsvg-gtk-dbg += "${libdir}/gtk-2.0/.debug \
+ ${libdir}/gtk-2.0/*/*/.debug"
+
+pkg_postinst_librsvg-gtk() {
+if [ "x$D" != "x" ]; then
+ exit 1
+fi
+
+test -x ${bindir}/gdk-pixbuf-query-loaders && { GDK_PIXBUF_MODULEDIR=${libdir}/gdk-pixbuf-2.0/2.10.0/loaders gdk-pixbuf-query-loaders --update-cache ; }
+test -x ${bindir}/gtk-update-icon-cache && gtk-update-icon-cache -q ${datadir}/icons/hicolor
+}
diff --git a/meta/recipes-gnome/libunique/libunique_1.1.6.bb b/meta/recipes-gnome/libunique/libunique_1.1.6.bb
index 7eb64e0ea5..dcc65559af 100644
--- a/meta/recipes-gnome/libunique/libunique_1.1.6.bb
+++ b/meta/recipes-gnome/libunique/libunique_1.1.6.bb
@@ -1,8 +1,13 @@
+DESCRIPTION = "Unique is a library for writing single instance application. If you launch a single instance application twice, the second instance will either just quit or will send a message to the running instance."
+HOMEPAGE = "http://live.gnome.org/LibUnique"
+BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=libunique"
+
SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/libunique/1.1/libunique-${PV}.tar.bz2"
SRC_URI[md5sum] = "7955769ef31f1bc4f83446dbb3625e6d"
SRC_URI[sha256sum] = "e5c8041cef8e33c55732f06a292381cb345db946cf792a4ae18aa5c66cdd4fbb"
-PR = "r1"
+
+PR = "r2"
DEPENDS = "glib-2.0 gtk+ dbus"
diff --git a/meta/recipes-gnome/tasks/task-poky-sdk-gmae.bb b/meta/recipes-gnome/tasks/task-poky-sdk-gmae.bb
index b3b5ebbc10..d009e4ebe4 100644
--- a/meta/recipes-gnome/tasks/task-poky-sdk-gmae.bb
+++ b/meta/recipes-gnome/tasks/task-poky-sdk-gmae.bb
@@ -6,7 +6,7 @@ DESCRIPTION = "Gnome Mobile And Embedded Software Development Kit for OpenedHand
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-PR = "r9"
+PR = "r10"
ALLOW_EMPTY = "1"
@@ -14,7 +14,7 @@ require task-sdk-gmae.inc
PACKAGES = "${PN}"
-RDEPENDS = "\
+RDEPENDS_${PN} = "\
task-poky-sdk \
libglade-dev \
${SDK-GMAE} \
diff --git a/meta/recipes-gnome/tasks/task-poky-standalone-gmae-sdk-target.bb b/meta/recipes-gnome/tasks/task-poky-standalone-gmae-sdk-target.bb
index cf81bf387e..7dcad61943 100644
--- a/meta/recipes-gnome/tasks/task-poky-standalone-gmae-sdk-target.bb
+++ b/meta/recipes-gnome/tasks/task-poky-standalone-gmae-sdk-target.bb
@@ -6,7 +6,7 @@ DESCRIPTION = "Gnome Mobile And Embedded Software Development Kit for OpenedHand
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-PR = "r11"
+PR = "r12"
ALLOW_EMPTY = "1"
@@ -14,7 +14,7 @@ require task-sdk-gmae.inc
PACKAGES = "${PN} ${PN}-dbg"
-RDEPENDS = "\
+RDEPENDS_${PN} = "\
task-poky-standalone-sdk-target \
libglade-dev \
${SDK-GMAE} \
diff --git a/meta/recipes-graphics/cairo/cairo.inc b/meta/recipes-graphics/cairo/cairo.inc
index e750d6e990..e5b6e18514 100644
--- a/meta/recipes-graphics/cairo/cairo.inc
+++ b/meta/recipes-graphics/cairo/cairo.inc
@@ -1,7 +1,11 @@
-SUMMARY = "A 2D graphics library"
-DESCRIPTION = "Cairo is a 2D graphics library designed to provide high-quality display \
-and print output. Cairo is designed to produce consistent output on all output media while \
-taking advantage of display hardware acceleration when available."
+SUMMARY = "The Cairo 2D vector graphics library"
+DESCRIPTION = "Cairo is a multi-platform library providing anti-aliased \
+vector-based rendering for multiple target backends. Paths consist \
+of line segments and cubic splines and can be rendered at any width \
+with various join and cap styles. All colors may be specified with \
+optional translucence (opacity/alpha) and combined using the \
+extended Porter/Duff compositing algebra as found in the X Render \
+Extension."
HOMEPAGE = "http://cairographics.org"
BUGTRACKER = "http://bugs.freedesktop.org"
SECTION = "libs"
diff --git a/meta/recipes-graphics/cairo/cairo_1.10.0.bb b/meta/recipes-graphics/cairo/cairo_1.10.0.bb
deleted file mode 100644
index d4d0703244..0000000000
--- a/meta/recipes-graphics/cairo/cairo_1.10.0.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-require cairo.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=e73e999e0c72b5ac9012424fa157ad77"
-
-PR = "r0"
-
-SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "70a2ece66cf473d976e2db0f75bf199e"
-SRC_URI[sha256sum] = "0f2ce4cc4615594088d74eb8b5360bad7c3cc3c3da9b61af9bfd979ed1ed94b2"
-
-RDEPENDS += "libcairo2 libcairo-gobject2 libcairo-script-interpreter2 \
- cairo-perf-utils"
-
-ALLOW_EMPTY = "1"
-
-#
-# Old version (1.8.10 or below) is automatically named as libcairo2 by
-# debian_package_name_hook. To keep backword compatibility,
-# it is necessary to explicitly name the package as libcairo2 here
-#
-PACKAGES =+ "libcairo2 libcairo2-dev libcairo2-dbg \
- libcairo-gobject2 \
- libcairo-script-interpreter2 \
- cairo-perf-utils \
- "
-
-DESCRIPTION_libcairo2 = "The Cairo 2D vector graphics library"
-DESCRIPTION_libcairo-gobject2 = "The Cairo library GObject wrapper library"
-DESCRIPTION_libcairo-script-interpreter2 = "The Cairo library script interpreter"
-DESCRIPTION_cairo-perf-utils = "The Cairo library performance utilities"
-
-FILES_libcairo2 = "${libdir}/libcairo.so*"
-FILES_libcairo2-dev = "${includedir} ${libdir}/*.la ${libdir}/*.a \
- ${libdir}/*.o ${libdir}/pkgconfig"
-FILES_libcairo2-dbg = "${libdir}/.debug ${libdir}/cairo/.debug"
-FILES_libcairo-gobject2 = "${libdir}/libcairo-gobject.so*"
-FILES_libcairo-script-interpreter2 = "${libdir}/libcairo-script-interpreter.so*"
-FILES_cairo-perf-utils = "${bindir}/cairo-trace ${libdir}/cairo/libcairo-trace.*"
diff --git a/meta/recipes-graphics/cairo/cairo_1.10.2.bb b/meta/recipes-graphics/cairo/cairo_1.10.2.bb
new file mode 100644
index 0000000000..572e1f6752
--- /dev/null
+++ b/meta/recipes-graphics/cairo/cairo_1.10.2.bb
@@ -0,0 +1,53 @@
+require cairo.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=e73e999e0c72b5ac9012424fa157ad77"
+
+PR = "r0"
+
+SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "f101a9e88b783337b20b2e26dfd26d5f"
+SRC_URI[sha256sum] = "32018c7998358eebc2ad578ff8d8559d34fc80252095f110a572ed23d989fc41"
+
+RDEPENDS_${PN} += "libcairo2 libcairo-gobject2 libcairo-script-interpreter2 \
+ cairo-perf-utils"
+
+ALLOW_EMPTY = "1"
+
+#
+# Old version (1.8.10 or below) is automatically named as libcairo2 by
+# debian_package_name_hook. To keep backword compatibility,
+# it is necessary to explicitly name the package as libcairo2 here
+#
+PACKAGES =+ "libcairo2 libcairo2-dev libcairo2-dbg \
+ libcairo-gobject2 \
+ libcairo-script-interpreter2 \
+ cairo-perf-utils \
+ "
+
+SUMMARY_libcairo2 = "The Cairo 2D vector graphics library"
+DESCRIPTION_libcairo2 = "Cairo is a multi-platform library providing anti-aliased \
+vector-based rendering for multiple target backends. Paths consist \
+of line segments and cubic splines and can be rendered at any width \
+with various join and cap styles. All colors may be specified with \
+optional translucence (opacity/alpha) and combined using the \
+extended Porter/Duff compositing algebra as found in the X Render \
+Extension."
+
+SUMMARY_libcairo-gobject2 = "The Cairo library GObject wrapper library"
+DESCRIPTION_libcairo-gobject2 = "A GObject wrapper library for the Cairo API."
+
+SUMMARY_libcairo-script-interpreter2 = "The Cairo library script interpreter"
+DESCRIPTION_libcairo-script-interpreter2 = "The Cairo script interpreter implements \
+CairoScript. CairoScript is used by tracing utilities to enable the ability \
+to replay rendering."
+
+DESCRIPTION_cairo-perf-utils = "The Cairo library performance utilities"
+
+FILES_libcairo2 = "${libdir}/libcairo.so*"
+FILES_libcairo2-dev = "${includedir} ${libdir}/*.la ${libdir}/*.a \
+ ${libdir}/*.o ${libdir}/pkgconfig"
+FILES_libcairo2-dbg = "${libdir}/.debug ${libdir}/cairo/.debug"
+FILES_libcairo-gobject2 = "${libdir}/libcairo-gobject.so*"
+FILES_libcairo-script-interpreter2 = "${libdir}/libcairo-script-interpreter.so*"
+FILES_cairo-perf-utils = "${bindir}/cairo-trace ${libdir}/cairo/libcairo-trace.*"
diff --git a/meta/recipes-graphics/clutter/clutter-1.0_git.bb b/meta/recipes-graphics/clutter/clutter-1.0_git.bb
deleted file mode 100644
index ec50f076ba..0000000000
--- a/meta/recipes-graphics/clutter/clutter-1.0_git.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-require clutter.inc
-
-PV = "1.0+git${SRCPV}"
-PR = "r3"
-
-PACKAGES =+ "clutter-examples-1.0"
-FILES_clutter-examples-1.0 = "${bindir}/test-* ${pkgdatadir}/redhand.png"
-
-SRC_URI = "git://git.clutter-project.org/clutter.git;protocol=git;branch=clutter-1.0 \
- file://enable_tests-1.0.patch;patch=1 "
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
-S = "${WORKDIR}/git"
-
-BASE_CONF += "--disable-introspection"
-
-
-do_configure_prepend () {
- # Disable DOLT
- sed -i -e 's/^DOLT//' ${S}/configure.ac
-}
diff --git a/meta/recipes-graphics/clutter/clutter-1.4_1.4.2.bb b/meta/recipes-graphics/clutter/clutter-1.4_1.4.2.bb
new file mode 100644
index 0000000000..998545ab21
--- /dev/null
+++ b/meta/recipes-graphics/clutter/clutter-1.4_1.4.2.bb
@@ -0,0 +1,25 @@
+require clutter.inc
+
+PR = "r0"
+
+PACKAGES =+ "${PN}-examples"
+FILES_${PN}-examples = "${bindir}/test-* ${pkgdatadir}/redhand.png"
+
+SRC_URI = "http://source.clutter-project.org/sources/clutter/1.4/clutter-${PV}.tar.bz2 \
+ file://enable_tests-1.4.patch;patch=1 \
+ file://test-conformance-fix.patch;patch=1 "
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
+S = "${WORKDIR}/clutter-1.4.2"
+
+BASE_CONF += "--disable-introspection"
+
+EXTRA_OECONF += "--with-json=check"
+
+do_configure_prepend () {
+ # Disable DOLT
+ sed -i -e 's/^DOLT//' ${S}/configure.ac
+}
+
+SRC_URI[md5sum] = "5a3c6d8414d4e286aba0a936f344c9b1"
+SRC_URI[sha256sum] = "92fd67acce5105c933e54ad0c87d0f5ace1202fd0f87949cb49a3759e6e38892"
diff --git a/meta/recipes-graphics/clutter/clutter-box2d.inc b/meta/recipes-graphics/clutter/clutter-box2d.inc
index 7de824495b..0249984b17 100644
--- a/meta/recipes-graphics/clutter/clutter-box2d.inc
+++ b/meta/recipes-graphics/clutter/clutter-box2d.inc
@@ -2,7 +2,7 @@ DESCRIPTION = "Clutter Box2D"
HOMEPAGE = "http://www.clutter-project.org/"
LICENSE = "Catto"
-DEPENDS = "clutter-1.0"
+DEPENDS = "clutter-1.4"
# The main clutter lib is machine specific so we need to be too
PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/meta/recipes-graphics/clutter/clutter-box2d_git.bb b/meta/recipes-graphics/clutter/clutter-box2d_git.bb
index 6f795b9a3d..6b718d5bed 100644
--- a/meta/recipes-graphics/clutter/clutter-box2d_git.bb
+++ b/meta/recipes-graphics/clutter/clutter-box2d_git.bb
@@ -1,9 +1,9 @@
require clutter-box2d.inc
-LIC_FILES_CHKSUM = "file://box2d/License.txt;md5=d0a73d52dbe6da5d8cc0f28493defb26"
+LIC_FILES_CHKSUM = "file://box2d/License.txt;md5=e5d39ad91f7dc4692dcdb1d85139ec6b"
-PV = "0.0+git${SRCPV}"
-PR = "r3"
+PV = "0.10.1+git${SRCPV}"
+PR = "r0"
SRC_URI = "git://git.clutter-project.org/clutter-box2d.git;protocol=git"
diff --git a/meta/recipes-graphics/clutter/clutter-gst-1.0_git.bb b/meta/recipes-graphics/clutter/clutter-gst-1.0_git.bb
deleted file mode 100644
index 46519a019d..0000000000
--- a/meta/recipes-graphics/clutter/clutter-gst-1.0_git.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-require clutter-gst.inc
-
-PV = "0.11.0+git${SRCPV}"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34 \
- file://clutter-gst/clutter-gst.h;beginline=1;endline=24;md5=95baacba194e814c110ea3bdf25ddbf4"
-
-DEPENDS += "clutter-1.0"
-
-SRC_URI = "git://git.clutter-project.org/clutter-gst.git;protocol=git;branch=master"
-
-S = "${WORKDIR}/git"
-
-do_configure_prepend () {
- # Disable DOLT
- sed -i -e 's/^DOLT//' ${S}/configure.ac
-}
diff --git a/meta/recipes-graphics/clutter/clutter-gst-1.4_git.bb b/meta/recipes-graphics/clutter/clutter-gst-1.4_git.bb
new file mode 100644
index 0000000000..f8ba3e7fac
--- /dev/null
+++ b/meta/recipes-graphics/clutter/clutter-gst-1.4_git.bb
@@ -0,0 +1,18 @@
+require clutter-gst.inc
+
+PV = "1.3.4+git${SRCPV}"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34 \
+ file://clutter-gst/clutter-gst.h;beginline=1;endline=24;md5=95baacba194e814c110ea3bdf25ddbf4"
+
+DEPENDS += "clutter-1.4"
+
+SRC_URI = "git://git.clutter-project.org/clutter-gst.git;protocol=git;branch=master \
+ file://enable_tests.patch"
+
+S = "${WORKDIR}/git"
+
+do_configure_prepend () {
+ # Disable DOLT
+ sed -i -e 's/^DOLT//' ${S}/configure.ac
+}
diff --git a/meta/recipes-graphics/clutter/clutter-gst.inc b/meta/recipes-graphics/clutter/clutter-gst.inc
index c46d0f0ae8..614c62d525 100644
--- a/meta/recipes-graphics/clutter/clutter-gst.inc
+++ b/meta/recipes-graphics/clutter/clutter-gst.inc
@@ -2,12 +2,12 @@ DESCRIPTION = "Clutter GStreamer"
HOMEPAGE = "http://www.clutter-project.org/"
LICENSE = "LGPLv2+"
-DEPENDS = "clutter-1.0 gstreamer gst-plugins-base"
+DEPENDS = "clutter-1.4 gstreamer gst-plugins-base"
FILESPATH = "${FILE_DIRNAME}/clutter-gst"
PACKAGES =+ "${PN}-examples"
-FILES_${PN}-examples = "${bindir}/video-player ${bindir}/video-sink ${bindir}/audio"
+FILES_${PN}-examples = "${bindir}/video-player ${bindir}/video-sink"
inherit autotools pkgconfig gtk-doc
diff --git a/meta/recipes-graphics/clutter/clutter-gst/enable_tests.patch b/meta/recipes-graphics/clutter/clutter-gst/enable_tests.patch
new file mode 100644
index 0000000000..210b9492c6
--- /dev/null
+++ b/meta/recipes-graphics/clutter/clutter-gst/enable_tests.patch
@@ -0,0 +1,15 @@
+Install example binary needed for poky-image-clutter
+
+Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
+Index: git/examples/Makefile.am
+===================================================================
+--- git.orig/examples/Makefile.am 2011-01-31 10:14:23.000000000 +0800
++++ git/examples/Makefile.am 2011-01-31 10:14:34.000000000 +0800
+@@ -1,6 +1,6 @@
+ NULL = #
+
+-noinst_PROGRAMS = video-player video-sink
++bin_PROGRAMS = video-player video-sink
+
+ INCLUDES = -I$(top_srcdir) \
+ $(MAINTAINER_CFLAGS) \
diff --git a/meta/recipes-graphics/clutter/clutter-gtk-1.0_git.bb b/meta/recipes-graphics/clutter/clutter-gtk-1.0_git.bb
deleted file mode 100644
index 47667d0eed..0000000000
--- a/meta/recipes-graphics/clutter/clutter-gtk-1.0_git.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require clutter-gtk.inc
-
-PV = "0.90.0+git${SRCPV}"
-PR = "r2"
-
-SRC_URI = "git://git.clutter-project.org/clutter-gtk.git;protocol=git;branch=master \
- file://disable_deprecated.patch"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
-
-S = "${WORKDIR}/git"
-
-DEPENDS += "gtk+ clutter-1.0"
-
-EXTRA_OECONF += "--disable-introspection"
diff --git a/meta/recipes-graphics/clutter/clutter-gtk-1.4_git.bb b/meta/recipes-graphics/clutter/clutter-gtk-1.4_git.bb
new file mode 100644
index 0000000000..3822b31d5e
--- /dev/null
+++ b/meta/recipes-graphics/clutter/clutter-gtk-1.4_git.bb
@@ -0,0 +1,17 @@
+require clutter-gtk.inc
+
+PV = "0.90.0+git${SRCPV}"
+PR = "r0"
+
+SRC_URI = "git://git.clutter-project.org/clutter-gtk.git;protocol=git;branch=master \
+ file://disable_deprecated.patch \
+ file://enable_tests.patch \
+ "
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+S = "${WORKDIR}/git"
+
+DEPENDS += "gtk+ clutter-1.4"
+
+EXTRA_OECONF += "--disable-introspection"
diff --git a/meta/recipes-graphics/clutter/clutter-gtk.inc b/meta/recipes-graphics/clutter/clutter-gtk.inc
index 25b5200ca2..8492d9f53f 100644
--- a/meta/recipes-graphics/clutter/clutter-gtk.inc
+++ b/meta/recipes-graphics/clutter/clutter-gtk.inc
@@ -7,7 +7,7 @@ DEPENDS = "gtk+"
FILESPATH = "${FILE_DIRNAME}/clutter-gtk"
PACKAGES =+ "${PN}-examples"
-FILES_${PN}-examples = "${bindir}/gtk-clutter-test ${bindir}/gtk-clutter-events ${bindir}/gtk-clutter-multistage"
+FILES_${PN}-examples = "${bindir}/*"
inherit autotools pkgconfig gtk-doc
diff --git a/meta/recipes-graphics/clutter/clutter-gtk/disable_deprecated.patch b/meta/recipes-graphics/clutter/clutter-gtk/disable_deprecated.patch
index fbfaceeefd..df0c52c1d6 100644
--- a/meta/recipes-graphics/clutter/clutter-gtk/disable_deprecated.patch
+++ b/meta/recipes-graphics/clutter/clutter-gtk/disable_deprecated.patch
@@ -6,12 +6,13 @@ Signed-off-by: Saul Wold <sgw@linux.intel.com>
Index: git/clutter-gtk/Makefile.am
===================================================================
---- git.orig/clutter-gtk/Makefile.am 2010-11-16 11:04:29.000000000 -0800
-+++ git/clutter-gtk/Makefile.am 2010-11-16 11:06:16.278993999 -0800
-@@ -16,7 +16,6 @@
+--- git.orig/clutter-gtk/Makefile.am 2011-01-30 13:10:29.000000000 +0800
++++ git/clutter-gtk/Makefile.am 2011-01-30 13:15:09.000000000 +0800
+@@ -15,8 +15,6 @@
+ -DCLUTTER_GTK_COMPILATION \
-DG_DISABLE_DEPRECATED \
-DGDK_PIXBUF_DISABLE_DEPRECATED \
- -DGDK_DISABLE_DEPRECATED \
+- -DGDK_DISABLE_DEPRECATED \
- -DGTK_DISABLE_DEPRECATED \
-DCLUTTER_DISABLE_DEPRECATED \
$(CLUTTER_GTK_DEBUG_CFLAGS) \
diff --git a/meta/recipes-graphics/clutter/clutter-gtk/enable_tests.patch b/meta/recipes-graphics/clutter/clutter-gtk/enable_tests.patch
new file mode 100644
index 0000000000..e91b8272f6
--- /dev/null
+++ b/meta/recipes-graphics/clutter/clutter-gtk/enable_tests.patch
@@ -0,0 +1,17 @@
+Install the test binary needed for poky-image-clutter
+
+Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
+
+Index: git/examples/Makefile.am
+===================================================================
+--- git.orig/examples/Makefile.am 2011-01-31 09:58:47.000000000 +0800
++++ git/examples/Makefile.am 2011-01-31 09:59:02.000000000 +0800
+@@ -2,7 +2,7 @@
+
+ NULL =
+
+-noinst_PROGRAMS = \
++bin_PROGRAMS = \
+ animated-notebook \
+ expose-test \
+ gtk-clutter-events \
diff --git a/meta/recipes-graphics/clutter/clutter.inc b/meta/recipes-graphics/clutter/clutter.inc
index a42a6c59d6..bdfcb9169b 100644
--- a/meta/recipes-graphics/clutter/clutter.inc
+++ b/meta/recipes-graphics/clutter/clutter.inc
@@ -7,7 +7,7 @@ COMPATIBLE_MACHINE = "(zylonite|mx31litekit|omap-3430ldp|omap-3430sdp|mx31ads|qe
STDDEPENDS = "virtual/libx11 gtk-doc-native pango glib-2.0 libxfixes gtk+ libxi"
BASE_CONF = "--disable-gtk-doc ${@get_clutter_fpu_setting(bb, d)}"
-DEPENDS = "${STDDEPENDS} virtual/libgl"
+DEPENDS = "${STDDEPENDS} virtual/libgl gettext"
EXTRA_OECONF = "${BASE_CONF} --with-flavour=glx"
DEPENDS_zylonite = "${STDDEPENDS} libgles-zylonite tslib"
diff --git a/meta/recipes-graphics/clutter/clutter/enable_tests-1.4.patch b/meta/recipes-graphics/clutter/clutter/enable_tests-1.4.patch
new file mode 100644
index 0000000000..52fdcb4c1f
--- /dev/null
+++ b/meta/recipes-graphics/clutter/clutter/enable_tests-1.4.patch
@@ -0,0 +1,13 @@
+Index: git/tests/interactive/Makefile.am
+===================================================================
+--- git.orig/tests/interactive/Makefile.am 2011-01-28 14:06:29.000000000 +0800
++++ git/tests/interactive/Makefile.am 2011-01-28 14:26:59.000000000 +0800
+@@ -107,7 +107,7 @@
+
+ common_ldadd = $(top_builddir)/clutter/libclutter-@CLUTTER_SONAME_INFIX@-@CLUTTER_API_VERSION@.la
+
+-noinst_PROGRAMS = test-interactive
++bin_PROGRAMS = test-interactive
+
+ test_interactive_SOURCES = test-main.c $(UNIT_TESTS)
+ test_interactive_CFLAGS = $(CLUTTER_CFLAGS) $(MAINTAINER_CFLAGS)
diff --git a/meta/recipes-graphics/clutter/clutter/test-conformance-fix.patch b/meta/recipes-graphics/clutter/clutter/test-conformance-fix.patch
new file mode 100644
index 0000000000..ce412ff5af
--- /dev/null
+++ b/meta/recipes-graphics/clutter/clutter/test-conformance-fix.patch
@@ -0,0 +1,66 @@
+Compiling conformance test leads running test-conformance target binary, and
+gets failure in cross-compile environment. Introduce this commit from upstream
+to fix it.
+
+Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
+
+
+commit 7fd6273c25569fe4f37ad371532d93e5170e51f7
+Author: Neil Roberts <neil@linux.intel.com>
+Date: Mon Oct 11 16:16:45 2010 +0100
+
+ tests: Generate the stub scripts using sed
+
+ Instead of trying to run ./test-conformance with the -l option to
+ generate a list of available tests it now runs sed on the
+ test-conform-main.c file instead. Running the generated executable is
+ a pain for cross-compiling so it would be nice to avoid it unless it's
+ absolutely necessary. Although you could tell people who are cross
+ compiling to just disable the conformance tests, this seems a shame
+ because they could still be useful along with the wrappers for example
+ if the cross compile is built to a shared network folder where the
+ tests can be run on the actual device.
+
+ The sed script is a little more ugly than it could be because it tries
+ to avoid using the GNU extensions '\+' and '\|'.
+
+ The script ends up placing restrictions on the format of the C file
+ because the tests must all be listed on one line each. There is now a
+ comment to explain this. Hopefully the trade off is worth it.
+
+ http://bugzilla.clutter-project.org/show_bug.cgi?id=2363
+
+diff --git a/tests/conform/Makefile.am b/tests/conform/Makefile.am
+index 3036639..1e723e7 100644
+--- a/tests/conform/Makefile.am
++++ b/tests/conform/Makefile.am
+@@ -89,9 +89,11 @@ test_conformance_SOURCES = $(common_sources) $(units_sources)
+
+ wrappers: stamp-test-conformance
+ @true
+-stamp-test-conformance: Makefile test-conformance$(EXEEXT)
++stamp-test-conformance: Makefile $(srcdir)/test-conform-main.c
+ @mkdir -p wrappers
+- @( $(abs_builddir)/test-conformance$(EXEEXT) -l -m thorough | $(GREP) '^/' ) > unit-tests
++ @sed -n -e 's/^ \{1,\}TEST_CONFORM_SIMPLE *(.*"\([^",]\{1,\}\)", *\([a-zA-Z0-9_]\{1,\}\).*/\/conform\1\/\2/p' \
++ -e 's/^ \{1,\}TEST_CONFORM_SKIP *(.*"\([^",]\{1,\}\)", *\([a-zA-Z0-9_]\{1,\}\).*/\/conform\1\/\2/p' \
++ $(srcdir)/test-conform-main.c > unit-tests
+ @chmod +x test-launcher.sh
+ @( echo "/stamp-test-conformance" ; \
+ echo "/test-conformance" ; \
+diff --git a/tests/conform/test-conform-main.c b/tests/conform/test-conform-main.c
+index a8b3cf8..2ae7a04 100644
+--- a/tests/conform/test-conform-main.c
++++ b/tests/conform/test-conform-main.c
+@@ -92,6 +92,11 @@ main (int argc, char **argv)
+ {
+ clutter_test_init (&argc, &argv);
+
++ /* This file is run through a sed script during the make step so the
++ lines containing the tests need to be formatted on a single line
++ each. To comment out a test use the SKIP or TODO macros. Using
++ #if 0 would break the script. */
++
+ TEST_CONFORM_SIMPLE ("/timeline", test_timeline);
+ TEST_CONFORM_SKIP (!g_test_slow (), "/timeline", test_timeline_interpolate);
+ TEST_CONFORM_SKIP (!g_test_slow (), "/timeline", test_timeline_rewind);
diff --git a/meta/recipes-graphics/clutter/table.inc b/meta/recipes-graphics/clutter/table.inc
index b645514835..937ad56b9c 100644
--- a/meta/recipes-graphics/clutter/table.inc
+++ b/meta/recipes-graphics/clutter/table.inc
@@ -2,7 +2,7 @@ DESCRIPTION = "Table Clutter Demo"
HOMEPAGE = "http://www.clutter-project.org/"
LICENSE = "LGPLv2.1 & GPLv2"
-DEPENDS = "clutter-gst-1.0 gnome-vfs"
+DEPENDS = "clutter-gst-1.4 gnome-vfs"
inherit autotools pkgconfig
diff --git a/meta/recipes-graphics/clutter/tidy.inc b/meta/recipes-graphics/clutter/tidy.inc
index 19685918dc..13d6fc7686 100644
--- a/meta/recipes-graphics/clutter/tidy.inc
+++ b/meta/recipes-graphics/clutter/tidy.inc
@@ -2,7 +2,7 @@ DESCRIPTION = "Tidy library"
HOMEPAGE = "http://www.clutter-project.org/"
LICENSE = "LGPLv2.1+"
-STDDEPENDS = "clutter-1.0"
+STDDEPENDS = "clutter-1.4"
BASE_CONF = "--disable-gtk-doc"
DEPENDS = "${STDDEPENDS}"
diff --git a/meta/recipes-graphics/directfb/directfb-1.4.6/mkdfiff.patch b/meta/recipes-graphics/directfb/directfb-1.4.6/mkdfiff.patch
new file mode 100644
index 0000000000..28bd534f37
--- /dev/null
+++ b/meta/recipes-graphics/directfb/directfb-1.4.6/mkdfiff.patch
@@ -0,0 +1,24 @@
+diff -uNr DirectFB-1.4.6.orig/tools/mkdfiff.c DirectFB-1.4.6/tools/mkdfiff.c
+--- DirectFB-1.4.6.orig/tools/mkdfiff.c 2010-10-15 10:54:57.000000000 +0200
++++ DirectFB-1.4.6/tools/mkdfiff.c 2010-10-15 10:54:15.000000000 +0200
+@@ -50,6 +50,8 @@
+
+ #include <dfiff.h>
+
++#include <unistd.h>
++
+ static DirectFBPixelFormatNames( format_names );
+
+ static const char *filename;
+diff -uNr DirectFB-1.4.6.orig/tools/mkdgifft.cpp DirectFB-1.4.6/tools/mkdgifft.cpp
+--- DirectFB-1.4.6.orig/tools/mkdgifft.cpp 2010-10-08 14:02:57.000000000 +0200
++++ DirectFB-1.4.6/tools/mkdgifft.cpp 2010-10-15 10:56:06.000000000 +0200
+@@ -40,6 +40,8 @@
+ #include <errno.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <sys/stat.h>
++#include <sys/types.h>
+ #include <unistd.h>
+ #include <fcntl.h>
+ #include <sys/mman.h>
diff --git a/meta/recipes-graphics/directfb/directfb.inc b/meta/recipes-graphics/directfb/directfb.inc
new file mode 100644
index 0000000000..e4cd00626a
--- /dev/null
+++ b/meta/recipes-graphics/directfb/directfb.inc
@@ -0,0 +1,69 @@
+SUMMARY = "Graphics abstraction library for the Linux Framebuffer Device"
+DESCRIPTION = "DirectFB is a thin library that provides developers \
+with hardware graphics acceleration, input device handling and \
+abstraction, an integrated windowing system with support for \
+translucent windows and multiple display layers on top of the \
+Linux framebuffer device."
+SECTION = "libs"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=dcf3c825659e82539645da41a7908589"
+
+HOMEPAGE = "http://directfb.org"
+DEPENDS = "jpeg libpng freetype zlib tslib"
+
+SRC_URI = " \
+ http://www.directfb.org/downloads/Old/DirectFB-${PV}.tar.gz \
+ file://fix-pkgconfig-cflags.patch \
+ file://fix-font-missing-char.patch \
+ file://getpagesize.patch \
+ file://mkdfiff.patch \
+ file://dont-use-linux-config.patch \
+ file://ts_lib_autotools.patch \
+"
+S = "${WORKDIR}/DirectFB-${PV}"
+
+LDFLAGS_append =" -lts -lm"
+
+inherit autotools binconfig pkgconfig
+
+EXTRA_OECONF = "\
+ --with-gfxdrivers=none \
+ --enable-libmpeg3=no \
+ --enable-freetype=yes \
+ --enable-sdl=no \
+ --enable-vnc=no \
+ --disable-x11 \
+"
+
+#PACKAGES_DYNAMIC = "directfb-inputdrivers-*"
+#
+#python populate_packages_prepend () {
+# import os.path
+# inputdrivers_libdir = bb.data.expand('${libdir}/directfb-${RV}/inputdrivers', d)
+# do_split_packages(d, inputdrivers_libdir, '*.so$', 'directfb-inputdrivers-%s', 'Directfb plugin for %s')
+#}
+
+# NOTE: monolithic packaging for now, should improve that eventually
+
+
+
+FILES_${PN}-dbg += "\
+ ${libdir}/directfb-${RV}/*/*/.debug/*.so \
+ ${libdir}/directfb-${RV}/*/.debug/*.so \
+"
+
+FILES_${PN}-dev += "\
+ ${bindir}/directfb-config \
+ ${libdir}/directfb-${RV}/systems/*.la \
+ ${libdir}/directfb-${RV}/inputdrivers/*.la \
+ ${libdir}/directfb-${RV}/interfaces/*/*.la \
+ ${libdir}/directfb-${RV}/wm/*.la \
+"
+
+FILES_${PN} += "\
+ ${libdir}/directfb-${RV}/systems/*.so \
+ ${libdir}/directfb-${RV}/inputdrivers/*.so \
+ ${libdir}/directfb-${RV}/interfaces/*/*.so \
+ ${libdir}/directfb-${RV}/wm/*.so \
+ ${datadir}/directfb-${PV} \
+"
diff --git a/meta/recipes-graphics/directfb/directfb_1.4.6.bb b/meta/recipes-graphics/directfb/directfb_1.4.6.bb
new file mode 100644
index 0000000000..70c0225bf7
--- /dev/null
+++ b/meta/recipes-graphics/directfb/directfb_1.4.6.bb
@@ -0,0 +1,27 @@
+require directfb.inc
+
+RV = "1.4-5"
+PR = "r2"
+
+DEPENDS += "sysfsutils"
+
+SRC_URI = " \
+ http://directfb.org/downloads/Core/DirectFB-1.4/DirectFB-${PV}.tar.gz \
+ file://directfb-1.2.x-fix-pkgconfig-cflags.patch \
+ file://mkdfiff.patch \
+ file://dont-use-linux-config.patch \
+ "
+
+EXTRA_OECONF = "\
+ --enable-freetype=yes \
+ --enable-zlib \
+ --with-gfxdrivers=none \
+ --disable-sdl \
+ --disable-vnc \
+ --disable-x11 \
+"
+
+LEAD_SONAME = "libdirectfb-1.4.so.5"
+
+SRC_URI[md5sum] = "dbe1957932f81790742b58b94c1c7b84"
+SRC_URI[sha256sum] = "b18121e60e9a084ee347037a53a46cfaea1c09505bd99d673c2e65eca285e69b"
diff --git a/meta/recipes-graphics/directfb/files/directfb-1.2.x-fix-pkgconfig-cflags.patch b/meta/recipes-graphics/directfb/files/directfb-1.2.x-fix-pkgconfig-cflags.patch
new file mode 100644
index 0000000000..745c561cc0
--- /dev/null
+++ b/meta/recipes-graphics/directfb/files/directfb-1.2.x-fix-pkgconfig-cflags.patch
@@ -0,0 +1,47 @@
+Index: DirectFB-1.1.1/directfb-internal.pc.in
+===================================================================
+--- DirectFB-1.1.1.orig/directfb-internal.pc.in 2007-08-07 21:43:00.000000000 +0200
++++ DirectFB-1.1.1/directfb-internal.pc.in 2008-07-17 21:00:47.424654304 +0200
+@@ -2,10 +2,10 @@
+ exec_prefix=@exec_prefix@
+ moduledir=@MODULEDIR@
+ moduledirname=@MODULEDIRNAME@
+-includedir=@INTERNALINCLUDEDIR@
++includedir=@includedir@
+
+ Name: DirectFB-Internal
+ Description: Third party module support package for DirectFB.
+ Version: @VERSION@
+ Requires: directfb = @VERSION@
+-Cflags: @DFB_INTERNAL_CFLAGS@ -I@INTERNALINCLUDEDIR@
++Cflags: @DFB_INTERNAL_CFLAGS@ -I${includedir}/directfb -I${includedir}
+Index: DirectFB-1.1.1/directfb.pc.in
+===================================================================
+--- DirectFB-1.1.1.orig/directfb.pc.in 2007-12-15 16:23:16.000000000 +0100
++++ DirectFB-1.1.1/directfb.pc.in 2008-07-17 20:59:58.044985193 +0200
+@@ -9,4 +9,4 @@
+ Requires: fusion direct
+ Libs: -L${libdir} -ldirectfb @THREADLIB@ @OSX_LIBS@
+ Libs.private: -L${libdir} @DYNLIB@ @ZLIB_LIBS@
+-Cflags: @THREADFLAGS@ -I@INCLUDEDIR@
++Cflags: @THREADFLAGS@ -I${includedir}/directfb
+Index: DirectFB-1.1.1/lib/fusion/fusion.pc.in
+===================================================================
+--- DirectFB-1.1.1.orig/lib/fusion/fusion.pc.in 2007-08-07 21:43:00.000000000 +0200
++++ DirectFB-1.1.1/lib/fusion/fusion.pc.in 2008-07-17 20:58:07.051338866 +0200
+@@ -8,4 +8,4 @@
+ Version: @VERSION@
+ Requires: direct
+ Libs: -L${libdir} -lfusion
+-Cflags: -I@INCLUDEDIR@
++Cflags: -I${includedir}/directfb -I${includedir}
+Index: DirectFB-1.1.1/lib/voodoo/voodoo.pc.in
+===================================================================
+--- DirectFB-1.1.1.orig/lib/voodoo/voodoo.pc.in 2007-08-07 21:43:00.000000000 +0200
++++ DirectFB-1.1.1/lib/voodoo/voodoo.pc.in 2008-07-17 20:58:07.054671842 +0200
+@@ -8,4 +8,4 @@
+ Version: @VERSION@
+ Requires: direct
+ Libs: -L${libdir} -lvoodoo
+-Cflags: -I@INCLUDEDIR@
++Cflags: -I${includedir}/directfb -I${includedir}
diff --git a/meta/recipes-graphics/directfb/files/dont-use-linux-config.patch b/meta/recipes-graphics/directfb/files/dont-use-linux-config.patch
new file mode 100644
index 0000000000..f971660954
--- /dev/null
+++ b/meta/recipes-graphics/directfb/files/dont-use-linux-config.patch
@@ -0,0 +1,12 @@
+diff -urN DirectFB-1.1.0.orig/lib/direct/ppcasm_memcpy_cachable.S DirectFB-1.1.0/lib/direct/ppcasm_memcpy_cachable.S
+--- DirectFB-1.1.0.orig/lib/direct/ppcasm_memcpy_cachable.S 2007-08-07 21:43:00.000000000 +0200
++++ DirectFB-1.1.0/lib/direct/ppcasm_memcpy_cachable.S 2008-06-07 04:14:26.000000000 +0200
+@@ -34,8 +34,6 @@
+
+ #define __ASSEMBLY__
+
+-#include <linux/config.h>
+-
+ #if defined(CONFIG_8xx) || defined(CONFIG_403GCX)
+ #define L1_CACHE_LINE_SIZE 16
+ #define LG_L1_CACHE_LINE_SIZE 4
diff --git a/meta/recipes-graphics/drm/libdrm-2.4.22/installtests.patch b/meta/recipes-graphics/drm/libdrm-2.4.23/installtests.patch
index 9d6a168bbc..9d6a168bbc 100644
--- a/meta/recipes-graphics/drm/libdrm-2.4.22/installtests.patch
+++ b/meta/recipes-graphics/drm/libdrm-2.4.23/installtests.patch
diff --git a/meta/recipes-graphics/drm/libdrm.inc b/meta/recipes-graphics/drm/libdrm.inc
index 54968dbd6a..a66afad803 100644
--- a/meta/recipes-graphics/drm/libdrm.inc
+++ b/meta/recipes-graphics/drm/libdrm.inc
@@ -1,5 +1,8 @@
-SUMMARY = "Direct Rendering Manager userspace library"
-DESCRIPTION = "userspace library for accessing the DRM(direct rendering manager)"
+SUMMARY = "Userspace interface to the kernel DRM services"
+DESCRIPTION = "The runtime library for accessing the kernel DRM services. DRM \
+stands for \"Direct Rendering Manager\", which is the kernel portion of the \
+\"Direct Rendering Infrastructure\" (DRI). DRI is required for many hardware \
+accelerated OpenGL drivers."
HOMEPAGE = "http://dri.freedesktop.org"
SECTION = "x11/base"
LICENSE = "MIT"
diff --git a/meta/recipes-graphics/drm/libdrm_2.4.22.bb b/meta/recipes-graphics/drm/libdrm_2.4.22.bb
deleted file mode 100644
index d8e0fffd96..0000000000
--- a/meta/recipes-graphics/drm/libdrm_2.4.22.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require libdrm.inc
-
-LIC_FILES_CHKSUM = "file://xf86drm.c;beginline=9;endline=32;md5=c8a3b961af7667c530816761e949dc71"
-
-SRC_URI += "file://installtests.patch"
-SRC_URI[md5sum] = "3bdfa33f35d1c902e5115cceb5500c83"
-SRC_URI[sha256sum] = "0bb0e594e4094d9000d80f38e96e8f640b6364f96cfef5b970cf4481443c6b3d"
-
-PR = "r0"
diff --git a/meta/recipes-graphics/drm/libdrm_2.4.23.bb b/meta/recipes-graphics/drm/libdrm_2.4.23.bb
new file mode 100644
index 0000000000..1546ceae60
--- /dev/null
+++ b/meta/recipes-graphics/drm/libdrm_2.4.23.bb
@@ -0,0 +1,9 @@
+require libdrm.inc
+
+LIC_FILES_CHKSUM = "file://xf86drm.c;beginline=9;endline=32;md5=c8a3b961af7667c530816761e949dc71"
+
+SRC_URI += "file://installtests.patch"
+SRC_URI[md5sum] = "7577ff36ec364d88fae466d4f7fc5fc6"
+SRC_URI[sha256sum] = "c0f06d68c3edba7a1ad937f5481a8c287efd4cd368cee66cd9e678b06a911c18"
+
+PR = "r0"
diff --git a/meta/recipes-graphics/drm/libdrm_git.bb b/meta/recipes-graphics/drm/libdrm_git.bb
index d80dd5f433..866da5de25 100644
--- a/meta/recipes-graphics/drm/libdrm_git.bb
+++ b/meta/recipes-graphics/drm/libdrm_git.bb
@@ -4,5 +4,5 @@ SRC_URI = "git://anongit.freedesktop.org/git/mesa/drm;protocol=git"
S = ${WORKDIR}/git
-PV = "2.4.15+git${SRCREV}"
+PV = "2.4.15+git${SRCPV}"
PR = "r0"
diff --git a/meta/recipes-graphics/fontconfig/fontconfig_2.8.0.bb b/meta/recipes-graphics/fontconfig/fontconfig_2.8.0.bb
index 8d2d6b57df..3cdfc04076 100644
--- a/meta/recipes-graphics/fontconfig/fontconfig_2.8.0.bb
+++ b/meta/recipes-graphics/fontconfig/fontconfig_2.8.0.bb
@@ -1,5 +1,13 @@
-SUMMARY = "Font configuration and customization library"
-DESCRIPTION = "A library for configuring and customizing font access."
+SUMMARY = "Generic font configuration library"
+DESCRIPTION = "Fontconfig is a font configuration and customization library, which \
+does not depend on the X Window System. It is designed to locate \
+fonts within the system and select them according to requirements \
+specified by applications. \
+Fontconfig is not a rasterization library, nor does it impose a \
+particular rasterization library on the application. The X-specific \
+library 'Xft' uses fontconfig along with freetype to specify and \
+rasterize fonts."
+
HOMEPAGE = "http://www.fontconfig.org"
BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=fontconfig"
diff --git a/meta/recipes-graphics/freetype/freetype-2.4.3/no-hardcode.patch b/meta/recipes-graphics/freetype/freetype-2.4.4/no-hardcode.patch
index 44ae450a14..44ae450a14 100644
--- a/meta/recipes-graphics/freetype/freetype-2.4.3/no-hardcode.patch
+++ b/meta/recipes-graphics/freetype/freetype-2.4.4/no-hardcode.patch
diff --git a/meta/recipes-graphics/freetype/freetype_2.4.3.bb b/meta/recipes-graphics/freetype/freetype_2.4.3.bb
deleted file mode 100644
index 63061fbc17..0000000000
--- a/meta/recipes-graphics/freetype/freetype_2.4.3.bb
+++ /dev/null
@@ -1,56 +0,0 @@
-SUMMARY = "Freetype font rendering library"
-DESCRIPTION = "FreeType is a software font engine that is designed to be small, efficient, \
-highly customizable, and portable while capable of producing high-quality output (glyph \
-images). It can be used in graphics libraries, display servers, font conversion tools, text \
-image generation tools, and many other products as well."
-HOMEPAGE = "http://www.freetype.org/"
-BUGTRACKER = "https://savannah.nongnu.org/bugs/?group=freetype"
-
-LICENSE = "FreeTypeLicense | GPLv2+"
-LIC_FILES_CHKSUM = "file://docs/LICENSE.TXT;md5=8bc1a580aeb518100d00a2dd29e68edf \
- file://docs/FTL.TXT;md5=d479e83797f699fe873b38dadd0fcd4c \
- file://docs/GPL.TXT;md5=8ef380476f642c20ebf40fecb0add2ec"
-
-SECTION = "libs"
-
-PR = "r0"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/freetype/freetype-${PV}.tar.bz2 \
- file://no-hardcode.patch"
-
-SRC_URI[md5sum] = "75ac7082bde7b3805dc5d6bc806fa045"
-SRC_URI[sha256sum] = "b4e626db62fd1b4549ff5d57f5eca3a41631fd6066adf8a31c11879b51249afc"
-
-S = "${WORKDIR}/freetype-${PV}"
-
-inherit autotools pkgconfig binconfig
-
-LIBTOOL = "${S}/builds/unix/${HOST_SYS}-libtool"
-EXTRA_OEMAKE = "'LIBTOOL=${LIBTOOL}'"
-EXTRA_OEMAKE_virtclass-native = ""
-EXTRA_OECONF = "--without-zlib"
-
-do_configure() {
- cd builds/unix
- libtoolize --force --copy
- aclocal -I .
- gnu-configize --force
- autoconf
- cd ${S}
- oe_runconf
-}
-
-do_configure_virtclass-native() {
- (cd builds/unix && gnu-configize) || die "failure running gnu-configize"
- oe_runconf
-}
-
-do_compile_prepend() {
- ${BUILD_CC} -o objs/apinames src/tools/apinames.c
-}
-
-FILES_${PN} = "${libdir}/lib*${SOLIBS}"
-FILES_${PN}-dev += "${bindir}"
-
-BBCLASSEXTEND = "native"
-
diff --git a/meta/recipes-graphics/freetype/freetype_2.4.4.bb b/meta/recipes-graphics/freetype/freetype_2.4.4.bb
new file mode 100644
index 0000000000..661650cce7
--- /dev/null
+++ b/meta/recipes-graphics/freetype/freetype_2.4.4.bb
@@ -0,0 +1,56 @@
+SUMMARY = "Freetype font rendering library"
+DESCRIPTION = "FreeType is a software font engine that is designed to be small, efficient, \
+highly customizable, and portable while capable of producing high-quality output (glyph \
+images). It can be used in graphics libraries, display servers, font conversion tools, text \
+image generation tools, and many other products as well."
+HOMEPAGE = "http://www.freetype.org/"
+BUGTRACKER = "https://savannah.nongnu.org/bugs/?group=freetype"
+
+LICENSE = "FreeTypeLicense | GPLv2+"
+LIC_FILES_CHKSUM = "file://docs/LICENSE.TXT;md5=8bc1a580aeb518100d00a2dd29e68edf \
+ file://docs/FTL.TXT;md5=d479e83797f699fe873b38dadd0fcd4c \
+ file://docs/GPL.TXT;md5=8ef380476f642c20ebf40fecb0add2ec"
+
+SECTION = "libs"
+
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/freetype/freetype-${PV}.tar.bz2 \
+ file://no-hardcode.patch"
+
+SRC_URI[md5sum] = "b3e2b6e2f1c3e0dffa1fd2a0f848b671"
+SRC_URI[sha256sum] = "4b8281c7dc4d375c6b65d3c6f4808e488a313fab47d7be82aad2c871c8480fef"
+
+S = "${WORKDIR}/freetype-${PV}"
+
+inherit autotools pkgconfig binconfig
+
+LIBTOOL = "${S}/builds/unix/${HOST_SYS}-libtool"
+EXTRA_OEMAKE = "'LIBTOOL=${LIBTOOL}'"
+EXTRA_OEMAKE_virtclass-native = ""
+EXTRA_OECONF = "--without-zlib"
+
+do_configure() {
+ cd builds/unix
+ libtoolize --force --copy
+ aclocal -I .
+ gnu-configize --force
+ autoconf
+ cd ${S}
+ oe_runconf
+}
+
+do_configure_virtclass-native() {
+ (cd builds/unix && gnu-configize) || die "failure running gnu-configize"
+ oe_runconf
+}
+
+do_compile_prepend() {
+ ${BUILD_CC} -o objs/apinames src/tools/apinames.c
+}
+
+FILES_${PN} = "${libdir}/lib*${SOLIBS}"
+FILES_${PN}-dev += "${bindir}"
+
+BBCLASSEXTEND = "native"
+
diff --git a/meta/recipes-graphics/fstests/files/dso_linking_change_build_fix.patch b/meta/recipes-graphics/fstests/files/dso_linking_change_build_fix.patch
new file mode 100644
index 0000000000..03645b8185
--- /dev/null
+++ b/meta/recipes-graphics/fstests/files/dso_linking_change_build_fix.patch
@@ -0,0 +1,72 @@
+after gcc linking has changed, all the libraries must be explicitely specified
+This patch avoids these linking errors:
+
+
+| make[1]: Entering directory `/disk0/pokybuild/build1/tmp/work/i586-poky-linux/fstests-0.0+svnr426-r0/fstests/tests'^M
+| ccache i586-poky-linux-gcc -march=i586 --sysroot=/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux -pthread -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/gtk-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/gtk-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/atk-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/cairo -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pango-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/glib-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/glib-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pixman-1 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/freetype2 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/libpng12 -pthread -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pango-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/glib-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/glib-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/freetype2 -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb -feliminate-unused-debug-types -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o test-gtk-layout test_gtk_layout-test-gtk-layout.o -pthread -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 -pthread -lpangoxft-1.0 -lpangoft2-1.0 -lXft -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0^M
+| /disk0/pokybuild/build1/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: t^A: invalid DSO for symbol `XSync' definition^M
+| /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libX11.so.6: could not read symbols: Bad value^M
+| collect2: ld returned 1 exit status^M
+| make[1]: *** [test-gtk-layout] Error 1
+
+
+|ccache i586-poky-linux-gcc -march=i586 --sysroot=/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux -pthread -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pango-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/glib-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/glib-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/freetype2 -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb -feliminate-unused-debug-types -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o test-pango test_pango-test-pango.o -pthread -lpangoxft-1.0 -lpangoft2-1.0 -lXft -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0
+| /disk0/pokybuild/build1/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: �: invalid DSO for symbol `XOpenDisplay' definition
+| /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libX11.so.6: could not read symbols: Bad value
+| collect2: ld returned 1 exit status
+| make[1]: *** [test-pango] Error 1
+
+
+| ccache i586-poky-linux-gcc -march=i586 --sysroot=/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux -pthread -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/gtk-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/gtk-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/atk-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/cairo -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pango-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/glib-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/glib-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pixman-1 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/freetype2 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/libpng12 -pthread -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pango-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/glib-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/glib-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/freetype2 -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb -feliminate-unused-debug-types -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o test-pango-gdk test_pango_gdk-test-pango-gdk.o -pthread -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 -pthread -lpangoxft-1.0 -lpangoft2-1.0 -lXft -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0
+| /disk0/pokybuild/build1/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: t: invalid DSO for symbol `XSync' definition
+| /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libX11.so.6: could not read symbols: Bad value
+| collect2: ld returned 1 exit status
+| make[1]: *** [test-pango-gdk] Error 1
+
+
+| ccache i586-poky-linux-gcc -march=i586 --sysroot=/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux -pthread -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/gtk-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/gtk-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/atk-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/cairo -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pango-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/glib-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/glib-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pixman-1 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/freetype2 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/libpng12 -pthread -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pango-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/glib-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/glib-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/freetype2 -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb -feliminate-unused-debug-types -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o test-pango-gtk test_pango_gtk-test-pango-gtk.o -pthread -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 -pthread -lpangoxft-1.0 -lpangoft2-1.0 -lXft -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0
+| /disk0/pokybuild/build1/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: t: invalid DSO for symbol `XSync' definition
+| /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libX11.so.6: could not read symbols: Bad value
+| collect2: ld returned 1 exit status
+| make[1]: *** [test-pango-gtk] Error 1
+
+
+Nitin A Kamble <nitin.a.kamble@intel.com>
+Date: 2011/01/11
+
+Index: tests/Makefile.am
+===================================================================
+--- tests.orig/Makefile.am
++++ tests/Makefile.am
+@@ -48,19 +48,19 @@ test_xft_CFLAGS = @XLIBS_CFLAGS@ @PANGO_
+
+ # draws pango strings with just x
+ test_pango_SOURCES = test-pango.c
+-test_pango_LDADD = @PANGO_LIBS@
++test_pango_LDADD = @PANGO_LIBS@ @XLIBS_LIBS@
+ test_pango_CFLAGS = @PANGO_CFLAGS@
+
+ #below are as above but on
+
+ # Draws a list of Pango glyphs onto a GtkWindow with pango_xft_render
+ test_pango_gdk_SOURCES = test-pango-gdk.c
+-test_pango_gdk_LDADD = @GTK_LIBS@ @PANGO_LIBS@
++test_pango_gdk_LDADD = @GTK_LIBS@ @PANGO_LIBS@ @XLIBS_LIBS@
+ test_pango_gdk_CFLAGS = @GTK_CFLAGS@ @PANGO_CFLAGS@
+
+ # Draws a list of Pango glyphs onto a GtkDrawingArea with pango_xft_render
+ test_pango_gtk_SOURCES = test-pango-gtk.c
+-test_pango_gtk_LDADD = @GTK_LIBS@ @PANGO_LIBS@
++test_pango_gtk_LDADD = @GTK_LIBS@ @PANGO_LIBS@ @XLIBS_LIBS@
+ test_pango_gtk_CFLAGS = @GTK_CFLAGS@ @PANGO_CFLAGS@
+
+ # Draws a list of Pango glyphs onto a GtkWindow with gdk_draw_glyphs
+@@ -76,7 +76,7 @@ test_pango_layout_CFLAGS = @GTK_CFLAGS@
+
+ # As above PangoLayout onto a GtkWindow with gdk_draw_layout XXX TOGO ?
+ test_gtk_layout_SOURCES = test-gtk-layout.c
+-test_gtk_layout_LDADD = @GTK_LIBS@ @PANGO_LIBS@
++test_gtk_layout_LDADD = @GTK_LIBS@ @PANGO_LIBS@ @XLIBS_LIBS@
+ test_gtk_layout_CFLAGS = @GTK_CFLAGS@ @PANGO_CFLAGS@
+
+
diff --git a/meta/recipes-graphics/fstests/fstests_svn.bb b/meta/recipes-graphics/fstests/fstests_svn.bb
index 9d26e0723b..3c0d7b0b12 100644
--- a/meta/recipes-graphics/fstests/fstests_svn.bb
+++ b/meta/recipes-graphics/fstests/fstests_svn.bb
@@ -3,12 +3,13 @@ HOMEPAGE = "http://www.o-hand.com"
SECTION = "devel"
LICENSE = "ZLIB"
DEPENDS = "pango libxext libxft virtual/libx11 gtk+"
-PV = "0.0+svnr${SRCREV}"
-PR = "r0"
+PV = "0.0+svnr${SRCPV}"
+PR = "r1"
inherit autotools
-SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=fstests;proto=http"
+SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=fstests;proto=http \
+ file://dso_linking_change_build_fix.patch"
S = "${WORKDIR}/fstests/tests"
diff --git a/meta/recipes-graphics/libfakekey/libfakekey_git.bb b/meta/recipes-graphics/libfakekey/libfakekey_git.bb
new file mode 100644
index 0000000000..8670ad8215
--- /dev/null
+++ b/meta/recipes-graphics/libfakekey/libfakekey_git.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Library for converting characters to X key-presses"
+DESCRIPTION = "libfakekey is a simple library for converting UTF-8 characters into 'fake' X \
+key-presses."
+HOMEPAGE = "http://matchbox-project.org/"
+BUGTRACKER = "http://bugzilla.openedhand.com/"
+
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://src/libfakekey.c;endline=30;md5=602b5ccd48f64407510867f3373b448c"
+
+DEPENDS = "libxtst"
+SECTION = "x11/wm"
+PV = "0.0+git${SRCPV}"
+PR = "r0"
+
+SRC_URI = "git://git.pokylinux.org/${PN};protocol=git"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig gettext
diff --git a/meta/recipes-graphics/libfakekey/libfakekey_svn.bb b/meta/recipes-graphics/libfakekey/libfakekey_svn.bb
deleted file mode 100644
index 719a680a4e..0000000000
--- a/meta/recipes-graphics/libfakekey/libfakekey_svn.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "Library for converting characters to X key-presses"
-DESCRIPTION = "libfakekey is a simple library for converting UTF-8 characters into 'fake' X \
-key-presses."
-HOMEPAGE = "http://matchbox-project.org/"
-BUGTRACKER = "http://bugzilla.openedhand.com/"
-
-LICENSE = "LGPLv2+"
-LIC_FILES_CHKSUM = "file://src/libfakekey.c;endline=30;md5=602b5ccd48f64407510867f3373b448c"
-
-DEPENDS = "libxtst"
-SECTION = "x11/wm"
-PV = "0.0+svnr${SRCREV}"
-PR = "r1"
-
-SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http"
-
-S = "${WORKDIR}/${PN}"
-
-inherit autotools pkgconfig gettext
diff --git a/meta/recipes-graphics/libmatchbox/libmatchbox_git.bb b/meta/recipes-graphics/libmatchbox/libmatchbox_git.bb
new file mode 100644
index 0000000000..f916889cc3
--- /dev/null
+++ b/meta/recipes-graphics/libmatchbox/libmatchbox_git.bb
@@ -0,0 +1,17 @@
+require libmatchbox.inc
+
+PV = "1.9+git${SRCPV}"
+PR = "r0"
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "git://git.pokylinux.org/${PN};protocol=git \
+ file://configure_fixes.patch;patch=1 \
+ file://check.m4 \
+ file://16bppfixes.patch;patch=1 \
+ file://matchbox-start-fix.patch;patch=1"
+
+S = "${WORKDIR}/git"
+
+do_configure_prepend () {
+ cp ${WORKDIR}/check.m4 ${S}/
+}
diff --git a/meta/recipes-graphics/libmatchbox/libmatchbox_svn.bb b/meta/recipes-graphics/libmatchbox/libmatchbox_svn.bb
deleted file mode 100644
index 98c901f678..0000000000
--- a/meta/recipes-graphics/libmatchbox/libmatchbox_svn.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-require libmatchbox.inc
-
-PV = "1.7+svnr${SRCREV}"
-PR = "r5"
-DEFAULT_PREFERENCE = "-1"
-
-SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http \
- file://configure_fixes.patch;patch=1 \
- file://check.m4 \
- file://16bppfixes.patch;patch=1 \
- file://matchbox-start-fix.patch;patch=1"
-
-S = "${WORKDIR}/libmatchbox"
-
-do_configure_prepend () {
- cp ${WORKDIR}/check.m4 ${S}/
-}
diff --git a/meta/recipes-graphics/libsdl/libsdl-nativesdk_1.2.11.bb b/meta/recipes-graphics/libsdl/libsdl-nativesdk_1.2.11.bb
index 633a4c284b..2ef14b83a8 100644
--- a/meta/recipes-graphics/libsdl/libsdl-nativesdk_1.2.11.bb
+++ b/meta/recipes-graphics/libsdl/libsdl-nativesdk_1.2.11.bb
@@ -1,10 +1,12 @@
DESCRIPTION = "Simple DirectMedia Layer - native Edition"
HOMEPAGE = "http://www.libsdl.org"
SECTION = "libs"
-LICENSE = "LGPL"
+LICENSE = "LGPLv2.1"
DEPENDS = "libx11-nativesdk libxext-nativesdk libxrandr-nativesdk libxrender-nativesdk"
-RDEPENDS = "libx11-nativesdk libxrandr-nativesdk libxrender-nativesdk libxext-nativesdk"
-PR = "r4"
+RDEPENDS_${PN} = "libx11-nativesdk libxrandr-nativesdk libxrender-nativesdk libxext-nativesdk"
+PR = "r5"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=27818cd7fd83877a8e3ef82b82798ef4"
SRC_URI = "http://www.libsdl.org/release/SDL-${PV}.tar.gz \
file://acinclude.m4 \
diff --git a/meta/recipes-graphics/matchbox-wm-2/matchbox-wm-2_svn.bb b/meta/recipes-graphics/matchbox-wm-2/matchbox-wm-2_svn.bb
index 9c5cd939b5..2eb12e14e4 100644
--- a/meta/recipes-graphics/matchbox-wm-2/matchbox-wm-2_svn.bb
+++ b/meta/recipes-graphics/matchbox-wm-2/matchbox-wm-2_svn.bb
@@ -5,7 +5,7 @@ LIC_FILES_CHKSUM = "file://matchbox/core/mb-wm.h;endline=21;md5=1b1d328a52790635
DEPENDS = "virtual/libx11 libxext libxrender startup-notification expat gconf pango libxdamage libxcomposite gtk+"
-PV = "0.0+svnr${SRCREV}"
+PV = "0.0+svnr${SRCPV}"
PR = "r4"
SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=matchbox-window-manager-2;proto=http \
diff --git a/meta/recipes-graphics/matchbox-wm/matchbox-wm_0.9.5.bb b/meta/recipes-graphics/matchbox-wm/matchbox-wm_0.9.5.bb
deleted file mode 100644
index e09eb00ed1..0000000000
--- a/meta/recipes-graphics/matchbox-wm/matchbox-wm_0.9.5.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SECTION = "x11/wm"
-DESCRIPTION = "Matchbox window manager"
-LICENSE = "GPL"
-DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes xdamage libxrender startup-notification expat gconf"
-PR="r2"
-
-
-SRC_URI = "http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/0.9/matchbox-window-manager-${PV}.tar.gz \
- file://kbdconfig"
-
-S = "${WORKDIR}/matchbox-window-manager-${PV}"
-
-inherit autotools pkgconfig update-alternatives
-
-FILES_${PN} = "${bindir}/* \
- ${datadir}/matchbox \
- ${sysconfdir}/matchbox \
- ${datadir}/themes/blondie/matchbox \
- ${datadir}/themes/Default/matchbox \
- ${datadir}/themes/MBOpus/matchbox"
-
-ALTERNATIVE_NAME = "x-session-manager"
-ALTERNATIVE_LINK = "${bindir}/x-session-manager"
-ALTERNATIVE_PATH = "${bindir}/matchbox-session"
-ALTERNATIVE_PRIORITY = "10"
-
-EXTRA_OECONF = " --enable-startup-notification --disable-xrm"
-
-do_install_prepend() {
- install ${WORKDIR}/kbdconfig ${S}/data/kbdconfig
-}
-
diff --git a/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.1.bb b/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.1.bb
deleted file mode 100644
index ebed31e2a5..0000000000
--- a/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.1.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-SECTION = "x11/wm"
-DESCRIPTION = "Matchbox window manager"
-LICENSE = "GPL"
-DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes xdamage libxrender startup-notification expat"
-PR="r4"
-
-
-SRC_URI = "http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/1.1/matchbox-window-manager-${PV}.tar.gz \
- file://kbdconfig \
- file://gconf-2.m4"
-
-S = "${WORKDIR}/matchbox-window-manager-${PV}"
-
-inherit autotools pkgconfig update-alternatives
-
-FILES_${PN} = "${bindir}/* \
- ${datadir}/matchbox \
- ${sysconfdir}/matchbox \
- ${datadir}/themes/blondie/matchbox \
- ${datadir}/themes/Default/matchbox \
- ${datadir}/themes/MBOpus/matchbox"
-
-ALTERNATIVE_NAME = "x-session-manager"
-ALTERNATIVE_LINK = "${bindir}/x-session-manager"
-ALTERNATIVE_PATH = "${bindir}/matchbox-session"
-ALTERNATIVE_PRIORITY = "10"
-
-EXTRA_OECONF = " --enable-startup-notification --disable-xrm"
-
-do_configure_prepend () {
- cp ${WORKDIR}/gconf-2.m4 ${S}/
-}
-
-do_install_prepend() {
- install ${WORKDIR}/kbdconfig ${S}/data/kbdconfig
-}
-
diff --git a/meta/recipes-graphics/matchbox-wm/matchbox-wm_git.bb b/meta/recipes-graphics/matchbox-wm/matchbox-wm_git.bb
new file mode 100644
index 0000000000..086d4853e4
--- /dev/null
+++ b/meta/recipes-graphics/matchbox-wm/matchbox-wm_git.bb
@@ -0,0 +1,44 @@
+DESCRIPTION = "Matchbox window manager"
+HOMEPAGE = "http://matchbox-project.org"
+BUGTRACKER = "http://bugzilla.openedhand.com/"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://src/wm.h;endline=21;md5=a7e844465edbcf79c282369f93caa835 \
+ file://src/main.c;endline=21;md5=3e5d9f832b527b0d72dbe8e3c4c60b95 \
+ file://src/wm.c;endline=21;md5=8dc9d24477d87ef5dfbc2e4927146aab"
+
+SECTION = "x11/wm"
+DEPENDS = "libmatchbox virtual/libx11 libxext libxrender startup-notification expat gconf"
+
+PV = "1.2+git${SRCPV}"
+PR = "r0"
+
+SRC_URI = "git://git.pokylinux.org/matchbox-window-manager;protocol=git \
+ file://configure_fix.patch;patch=1;maxrev=1818 \
+ file://kbdconfig"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig update-alternatives
+
+ALTERNATIVE_NAME = "x-session-manager"
+ALTERNATIVE_LINK = "${bindir}/x-session-manager"
+ALTERNATIVE_PATH = "${bindir}/matchbox-session"
+ALTERNATIVE_PRIORITY = "10"
+
+FILES_${PN} = "${bindir}/* \
+ ${datadir}/matchbox \
+ ${sysconfdir}/matchbox \
+ ${datadir}/themes/blondie/matchbox \
+ ${datadir}/themes/Default/matchbox \
+ ${datadir}/themes/MBOpus/matchbox"
+
+EXTRA_OECONF = " --enable-startup-notification \
+ --disable-xrm \
+ --enable-expat \
+ --with-expat-lib=${STAGING_LIBDIR} \
+ --with-expat-includes=${STAGING_INCDIR}"
+
+do_install_prepend() {
+ install ${WORKDIR}/kbdconfig ${S}/data/kbdconfig
+}
diff --git a/meta/recipes-graphics/matchbox-wm/matchbox-wm_svn.bb b/meta/recipes-graphics/matchbox-wm/matchbox-wm_svn.bb
deleted file mode 100644
index 09c0f70f47..0000000000
--- a/meta/recipes-graphics/matchbox-wm/matchbox-wm_svn.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-DESCRIPTION = "Matchbox window manager"
-HOMEPAGE = "http://matchbox-project.org"
-BUGTRACKER = "http://bugzilla.openedhand.com/"
-
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://src/wm.h;endline=21;md5=a7e844465edbcf79c282369f93caa835 \
- file://src/main.c;endline=21;md5=3e5d9f832b527b0d72dbe8e3c4c60b95 \
- file://src/wm.c;endline=21;md5=8dc9d24477d87ef5dfbc2e4927146aab"
-
-SECTION = "x11/wm"
-DEPENDS = "libmatchbox virtual/libx11 libxext libxrender startup-notification expat gconf"
-
-PV = "1.2+svnr${SRCREV}"
-PR = "r4"
-
-SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=matchbox-window-manager;proto=http \
- file://configure_fix.patch;patch=1;maxrev=1818 \
- file://kbdconfig"
-
-S = "${WORKDIR}/matchbox-window-manager"
-
-inherit autotools pkgconfig update-alternatives
-
-ALTERNATIVE_NAME = "x-session-manager"
-ALTERNATIVE_LINK = "${bindir}/x-session-manager"
-ALTERNATIVE_PATH = "${bindir}/matchbox-session"
-ALTERNATIVE_PRIORITY = "10"
-
-FILES_${PN} = "${bindir}/* \
- ${datadir}/matchbox \
- ${sysconfdir}/matchbox \
- ${datadir}/themes/blondie/matchbox \
- ${datadir}/themes/Default/matchbox \
- ${datadir}/themes/MBOpus/matchbox"
-
-EXTRA_OECONF = " --enable-startup-notification \
- --disable-xrm \
- --enable-expat \
- --with-expat-lib=${STAGING_LIBDIR} \
- --with-expat-includes=${STAGING_INCDIR}"
-
-do_install_prepend() {
- install ${WORKDIR}/kbdconfig ${S}/data/kbdconfig
-}
diff --git a/meta/recipes-graphics/mesa/mesa-common.inc b/meta/recipes-graphics/mesa/mesa-common.inc
index f029d3d6e7..d8e800ee11 100644
--- a/meta/recipes-graphics/mesa/mesa-common.inc
+++ b/meta/recipes-graphics/mesa/mesa-common.inc
@@ -1,11 +1,18 @@
-DESCRIPTION = "An open source implementation of the OpenGL spec"
+SUMMARY = "A free implementation of the OpenGL API"
+DESCRIPTION = "Mesa is an open-source implementation of the OpenGL specification - \
+a system for rendering interactive 3D graphics. \
+A variety of device drivers allows Mesa to be used in many different environments \
+ranging from software emulation to complete hardware acceleration for modern GPUs. \
+Mesa is used as part of the overall Direct Rendering Infrastructure and X.org \
+environment."
+
HOMEPAGE = "http://mesa3d.org"
BUGTRACKER = "https://bugs.freedesktop.org"
SECTION = "x11"
LICENSE = "MIT"
-SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/${PV}/MesaLib-${PV}.tar.bz2 \
- ftp://ftp.freedesktop.org/pub/mesa/${PV}/MesaDemos-${PV}.tar.bz2 "
+SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/${PV}/MesaLib-${PV}.tar.bz2;name=mesalib \
+ ftp://ftp.freedesktop.org/pub/mesa/${PV}/MesaDemos-${PV}.tar.bz2;name=mesademos "
S = "${WORKDIR}/Mesa-${PV}"
diff --git a/meta/recipes-graphics/mesa/mesa-demos/dso_linking_change_build_fix.patch b/meta/recipes-graphics/mesa/mesa-demos/dso_linking_change_build_fix.patch
new file mode 100644
index 0000000000..aa2faf9d13
--- /dev/null
+++ b/meta/recipes-graphics/mesa/mesa-demos/dso_linking_change_build_fix.patch
@@ -0,0 +1,23 @@
+after gcc linking has changed, all the libraries must be explicitely specified
+This patch avoids these linking errors:
+
+| CCLD xeglgears
+| /build_disk/poky_build/build0/tmp/sysroots/x86_64-linux/usr/libexec/armv5te-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.5.1/ld: xeglthreads.o: undefined reference to symbol 'pthread_join@@GLIBC_2.4'
+| /build_disk/poky_build/build0/tmp/sysroots/x86_64-linux/usr/libexec/armv5te-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.5.1/ld: note: 'pthread_join@@GLIBC_2.4' is defined in DSO /build_disk/poky_build/build0/tmp/sysroots/qemuarm/lib/libpthread.so.0 so try adding it to the linker command line
+| /build_disk/poky_build/build0/tmp/sysroots/qemuarm/lib/libpthread.so.0: could not read symbols: Invalid operation
+| collect2: ld returned 1 exit status
+
+
+Nitin A Kamble <nitin.a.kamble@intel.com>
+Date: 2011/02/03
+
+
+Index: mesa-demos-8.0.1/src/egl/opengl/Makefile.am
+===================================================================
+--- mesa-demos-8.0.1.orig/src/egl/opengl/Makefile.am 2010-07-07 10:57:15.000000000 -0700
++++ mesa-demos-8.0.1/src/egl/opengl/Makefile.am 2011-02-03 14:30:13.928486381 -0800
+@@ -67,3 +67,4 @@
+
+ eglgears_x11_LDADD = ../eglut/libeglut_x11.la
+ egltri_x11_LDADD = ../eglut/libeglut_x11.la
++xeglthreads_LDADD = -lpthread
diff --git a/meta/recipes-graphics/mesa/mesa-demos_8.0.1.bb b/meta/recipes-graphics/mesa/mesa-demos_8.0.1.bb
index fde2453193..504a8b7009 100644
--- a/meta/recipes-graphics/mesa/mesa-demos_8.0.1.bb
+++ b/meta/recipes-graphics/mesa/mesa-demos_8.0.1.bb
@@ -1,4 +1,6 @@
-DESCRIPTION = "mesa demo applications"
+SUMMARY = "Mesa demo applications"
+DESCRIPTION = "This package includes the demonstration application, such as glxgears. \
+These applications can be used for Mesa validation and benchmarking."
HOMEPAGE = "http://mesa3d.org"
BUGTRACKER = "https://bugs.freedesktop.org"
SECTION = "x11"
@@ -9,9 +11,10 @@ LIC_FILES_CHKSUM = "file://src/xdemos/glxgears.c;beginline=1;endline=20;md5=9142
DEPENDS = "virtual/libx11 virtual/libgl glew"
-PR = "r0"
+PR = "r1"
-SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/demos/${PV}/${PN}-${PV}.tar.bz2"
+SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/demos/${PV}/${PN}-${PV}.tar.bz2 \
+ file://dso_linking_change_build_fix.patch"
inherit autotools pkgconfig
diff --git a/meta/recipes-graphics/mesa/mesa-dri-glsl-native_7.8.2.bb b/meta/recipes-graphics/mesa/mesa-dri-glsl-native_7.8.2.bb
new file mode 100644
index 0000000000..d6f2c33ea8
--- /dev/null
+++ b/meta/recipes-graphics/mesa/mesa-dri-glsl-native_7.8.2.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "gl shader language specific build from mesa-dri"
+HOMEPAGE = "http://mesa3d.org"
+BUGTRACKER = "https://bugs.freedesktop.org"
+SECTION = "x11"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://apps/compile.c;endline=26;md5=27c2833286ce9566b162bcbe21d5b267"
+PR = "r0"
+
+DEPENDS = "makedepend-native"
+
+SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/${PV}/MesaLib-${PV}.tar.bz2"
+SRC_URI[md5sum] = "6be2d343a0089bfd395ce02aaf8adb57"
+SRC_URI[sha256sum] = "505bf418dceba05837f4ea1b1972b9620c35f8cb94bc4d1e6d573c15f562576d"
+
+S = "${WORKDIR}/Mesa-7.8.2/src/glsl/"
+
+inherit native
+
+# use default config for native build
+do_configure_prepend() {
+ ln -s ${S}/../../configs/default ${S}/../../configs/current
+}
+
+do_install() {
+ install -d ${D}/${bindir}
+ install -m 755 ${S}/apps/compile ${D}/${bindir}/glsl-compile
+}
diff --git a/meta/recipes-graphics/mesa/mesa-dri-glsl-native_7.9.bb b/meta/recipes-graphics/mesa/mesa-dri-glsl-native_7.9.bb
deleted file mode 100644
index ffc113bfa7..0000000000
--- a/meta/recipes-graphics/mesa/mesa-dri-glsl-native_7.9.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-DESCRIPTION = "gl shader language specific build from mesa-dri"
-HOMEPAGE = "http://mesa3d.org"
-BUGTRACKER = "https://bugs.freedesktop.org"
-SECTION = "x11"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://main.cpp;endline=22;md5=a12a9c0208ee64a07ce314dfed4c81eb"
-PR = "r0"
-
-DEPENDS = "makedepend-native talloc-native"
-
-SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/${PV}/MesaLib-${PV}.tar.bz2"
-
-S = "${WORKDIR}/Mesa-${PV}/src/glsl"
-
-inherit native
-
-# use default config for native build
-do_configure_prepend() {
- ln -sf ${S}/../../configs/default ${S}/../../configs/current
-}
-
-do_install() {
- install -d ${D}/${bindir}
- install -m 755 ${S}/glsl_compiler ${D}/${bindir}/
-}
diff --git a/meta/recipes-graphics/mesa/mesa-dri_7.10.bb b/meta/recipes-graphics/mesa/mesa-dri_7.10.bb
new file mode 100644
index 0000000000..3031e4b687
--- /dev/null
+++ b/meta/recipes-graphics/mesa/mesa-dri_7.10.bb
@@ -0,0 +1,38 @@
+include mesa-common.inc
+
+LIC_FILES_CHKSUM = "file://docs/license.html;md5=7a3373c039b6b925c427755a4f779c1d"
+
+PROTO_DEPS = "xf86driproto glproto dri2proto"
+LIB_DEPS = "libdrm virtual/libx11 libxext libxxf86vm libxdamage libxfixes expat \
+ libxml2-native talloc"
+
+DEPENDS = "${PROTO_DEPS} ${LIB_DEPS}"
+
+PR = "r0"
+
+SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/${PV}/MesaLib-${PV}.tar.bz2 \
+ file://crossfix.patch"
+
+SRC_URI[md5sum] = "33fb94eccc02cbb4d8d1365615e38e46"
+SRC_URI[sha256sum] = "bcf28f43f39c28da271c0f5857fb32898d4ade3e035e80a0ceece1c2df6e0aca"
+
+# most of our targets do not have DRI so will use mesa-xlib
+DEFAULT_PREFERENCE = "-1"
+
+LEAD_SONAME = "libGL.so.1"
+
+EXTRA_OECONF += "--with-driver=dri --disable-egl --disable-gallium"
+
+python populate_packages_prepend() {
+ import os.path
+
+ dri_drivers_root = os.path.join(bb.data.getVar('libdir', d, 1), "dri")
+
+ do_split_packages(d, dri_drivers_root, '^(.*)_dri\.so$', 'mesa-dri-driver-%s', 'Mesa %s DRI driver', extra_depends='')
+}
+
+COMPATIBLE_HOST = '(i.86.*-linux|x86_64.*-linux)'
+
+PACKAGES_DYNAMIC = "mesa-dri-driver-*"
+
+FILES_${PN}-dbg += "${libdir}/dri/.debug/*"
diff --git a/meta/recipes-graphics/mesa/mesa-dri_7.8.2.bb b/meta/recipes-graphics/mesa/mesa-dri_7.8.2.bb
new file mode 100644
index 0000000000..60edddf641
--- /dev/null
+++ b/meta/recipes-graphics/mesa/mesa-dri_7.8.2.bb
@@ -0,0 +1,59 @@
+include mesa-common.inc
+
+LIC_FILES_CHKSUM = "file://docs/license.html;md5=7a3373c039b6b925c427755a4f779c1d"
+
+PROTO_DEPS = "xf86driproto glproto dri2proto"
+LIB_DEPS = "libdrm virtual/libx11 libxext libxxf86vm libxdamage libxfixes expat"
+
+DEPENDS = "${PROTO_DEPS} ${LIB_DEPS} mesa-dri-glsl-native"
+
+PR = "r2"
+
+SRC_URI += "file://crossfix.patch"
+
+SRC_URI[mesalib.md5sum] = "6be2d343a0089bfd395ce02aaf8adb57"
+SRC_URI[mesalib.sha256sum] = "505bf418dceba05837f4ea1b1972b9620c35f8cb94bc4d1e6d573c15f562576d"
+
+SRC_URI[mesademos.md5sum] = "757d9e2e06f48b1a52848be9b0307ced"
+SRC_URI[mesademos.sha256sum] = "ea7b9ebfb7a80de2b275c0c9124c8a505382ec48411a2794ab82542f9885ac3c"
+
+# most of our targets do not have DRI so will use mesa-xlib
+DEFAULT_PREFERENCE = "-1"
+
+# Atom PCs have DRI support so use mesa-dri by default
+DEFAULT_PREFERENCE_atom-pc = "1"
+
+LEAD_SONAME = "libGL.so.1"
+
+EXTRA_OECONF += "--with-driver=dri --disable-egl --disable-gallium"
+
+# We need glsl-compile built for buildhost arch instead of target (is provided by mesa-dri-glsl-native)"
+do_configure_prepend() {
+ sed -i "s#^GLSL_CL = .*\$#GLSL_CL = ${STAGING_BINDIR_NATIVE}/glsl-compile#g" ${S}/src/mesa/shader/slang/library/Makefile
+}
+
+do_install_append () {
+ install -d ${D}/usr/bin
+ install -m 0755 ${S}/progs/xdemos/{glxdemo,glxgears,glxheads,glxinfo} ${D}/usr/bin/
+}
+
+python populate_packages_prepend() {
+ import os.path
+
+ dri_drivers_root = os.path.join(bb.data.getVar('libdir', d, 1), "dri")
+
+ do_split_packages(d, dri_drivers_root, '^(.*)_dri\.so$', 'mesa-dri-driver-%s', 'Mesa %s DRI driver', extra_depends='')
+}
+
+COMPATIBLE_HOST = '(i.86.*-linux|x86_64.*-linux)'
+
+PACKAGES =+ "${PN}-xprogs"
+PACKAGES_DYNAMIC = "mesa-dri-driver-*"
+
+FILES_${PN}-dbg += "${libdir}/dri/.debug/*"
+FILES_${PN}-xprogs = "${bindir}/glxdemo ${bindir}/glxgears ${bindir}/glxheads ${bindir}/glxinfo"
+
+#
+# Header generated by i586-poky-linux-gcc gen_matypes.c -o gen_matypes -I ../../../include/GL -I ../../../include -I .. -I ../main/ -I ../math -I ../glapi/ -I ../tnl
+# then run gen_matypes > matypes.h on device
+#
diff --git a/meta/recipes-graphics/mesa/mesa-dri_7.9.bb b/meta/recipes-graphics/mesa/mesa-dri_7.9.bb
deleted file mode 100644
index 313b655d21..0000000000
--- a/meta/recipes-graphics/mesa/mesa-dri_7.9.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-include mesa-common.inc
-
-LIC_FILES_CHKSUM = "file://docs/license.html;md5=7a3373c039b6b925c427755a4f779c1d"
-
-PROTO_DEPS = "xf86driproto glproto dri2proto"
-LIB_DEPS = "libdrm virtual/libx11 libxext libxxf86vm libxdamage libxfixes expat \
- libxml2-native talloc"
-
-DEPENDS = "${PROTO_DEPS} ${LIB_DEPS} mesa-dri-glsl-native"
-
-PR = "r1"
-
-SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/${PV}/MesaLib-${PV}.tar.bz2 \
- file://crossfix.patch"
-
-# most of our targets do not have DRI so will use mesa-xlib
-DEFAULT_PREFERENCE = "-1"
-
-# Atom PCs have DRI support so use mesa-dri by default
-DEFAULT_PREFERENCE_atom-pc = "1"
-
-LEAD_SONAME = "libGL.so.1"
-
-EXTRA_OECONF += "--with-driver=dri --disable-egl --disable-gallium"
-
-python populate_packages_prepend() {
- import os.path
-
- dri_drivers_root = os.path.join(bb.data.getVar('libdir', d, 1), "dri")
-
- do_split_packages(d, dri_drivers_root, '^(.*)_dri\.so$', 'mesa-dri-driver-%s', 'Mesa %s DRI driver', extra_depends='')
-}
-
-COMPATIBLE_HOST = '(i.86.*-linux|x86_64.*-linux)'
-
-PACKAGES_DYNAMIC = "mesa-dri-driver-*"
-
-FILES_${PN}-dbg += "${libdir}/dri/.debug/*"
diff --git a/meta/recipes-graphics/mutter/mutter.inc b/meta/recipes-graphics/mutter/mutter.inc
index 456348754f..a734cdda46 100644
--- a/meta/recipes-graphics/mutter/mutter.inc
+++ b/meta/recipes-graphics/mutter/mutter.inc
@@ -1,7 +1,7 @@
SECTION = "x11/wm"
DESCRIPTION = "Metacity is the boring window manager for the adult in you. Mutter is metacity + clutter."
LICENSE = "GPLv2"
-DEPENDS = "startup-notification gtk+ gconf clutter-1.0 gdk-pixbuf-csource-native intltool glib-2.0-native"
+DEPENDS = "startup-notification gtk+ gconf clutter-1.4 gdk-pixbuf-native intltool glib-2.0-native"
# gobject-introspection
inherit gnome update-alternatives
@@ -10,6 +10,9 @@ ALTERNATIVE_LINK = "${bindir}/x-window-manager"
ALTERNATIVE_PATH = "${bindir}/mutter"
ALTERNATIVE_PRIORITY = "11"
+COMPATIBLE_MACHINE = "(zylonite|mx31litekit|omap-3430ldp|omap-3430sdp|mx31ads|qemuarm|qemux86|ipodtouch|atom-pc|menlow)"
+
+
EXTRA_OECONF += "--disable-verbose \
--disable-xinerama \
--without-introspection \
diff --git a/meta/recipes-graphics/mutter/mutter_git.bb b/meta/recipes-graphics/mutter/mutter_git.bb
index 6f88360fce..37e2361ca7 100644
--- a/meta/recipes-graphics/mutter/mutter_git.bb
+++ b/meta/recipes-graphics/mutter/mutter_git.bb
@@ -1,7 +1,7 @@
require mutter.inc
-PV = "2.28.1+git${SRCPV}"
-PR = "r18"
+PV = "2.29.1+git${SRCPV}"
+PR = "r0"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
diff --git a/meta/recipes-graphics/pango/pango.inc b/meta/recipes-graphics/pango/pango.inc
index 38ca3bed5f..5a8a5aef75 100644
--- a/meta/recipes-graphics/pango/pango.inc
+++ b/meta/recipes-graphics/pango/pango.inc
@@ -1,7 +1,9 @@
SUMMARY = "Framework for layout and rendering of internationalized text"
-DESCRIPTION = "The goal of the Pango project is to provide an \
-Open Source framework for the layout and rendering of \
-internationalized text."
+DESCRIPTION = "Pango is a library for laying out and rendering of text, \
+with an emphasis on internationalization. Pango can be used anywhere \
+that text layout is needed, though most of the work on Pango so far has \
+been done in the context of the GTK+ widget toolkit. Pango forms the \
+core of text and font handling for GTK+-2.x."
HOMEPAGE = "http://www.pango.org/"
BUGTRACKER = "http://bugzilla.gnome.org"
SECTION = "x11/libs"
diff --git a/meta/recipes-graphics/tasks/task-poky-clutter.bb b/meta/recipes-graphics/tasks/task-poky-clutter.bb
index 5e54f15a72..5fe23b92f0 100644
--- a/meta/recipes-graphics/tasks/task-poky-clutter.bb
+++ b/meta/recipes-graphics/tasks/task-poky-clutter.bb
@@ -7,7 +7,7 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-PR = "r3"
+PR = "r4"
PACKAGES = "\
task-poky-clutter-core \
@@ -24,13 +24,13 @@ PACKAGES = "\
ALLOW_EMPTY = "1"
RDEPENDS_task-poky-clutter-core = "\
- clutter-1.0 \
- clutter-gst-1.0 \
- clutter-gtk-1.0"
+ clutter-1.4 \
+ clutter-gst-1.4 \
+ clutter-gtk-1.4"
RDEPENDS_task-poky-clutter-tests = "\
- clutter-gst-1.0-examples \
- clutter-gtk-1.0-examples"
+ clutter-gst-1.4-examples \
+ clutter-gtk-1.4-examples"
-RDEPENDS_task-poky-clutter-apps = "\
- clutter-box2d "
+#RDEPENDS_task-poky-clutter-apps = "\
+# clutter-box2d "
diff --git a/meta/recipes-graphics/tslib/tslib_1.0.bb b/meta/recipes-graphics/tslib/tslib_1.0.bb
index fd75d60647..51529e3f13 100644
--- a/meta/recipes-graphics/tslib/tslib_1.0.bb
+++ b/meta/recipes-graphics/tslib/tslib_1.0.bb
@@ -1,4 +1,8 @@
-DESCRIPTION = "tslib is a plugin-based flexible touchscreen access library."
+SUMMARY = "An abstraction layer for touchscreen panel events."
+DESCRIPTION = "Tslib is an abstraction layer for touchscreen panel \
+events, as well as a filter stack for the manipulation of those events. \
+Tslib is generally used on embedded devices to provide a common user \
+space interface to touchscreen functionality."
HOMEPAGE = "http://tslib.berlios.de/"
AUTHOR = "Russell King w/ plugins by Chris Larson et. al."
diff --git a/meta/recipes-graphics/ttf-fonts/liberation-fonts_1.04.bb b/meta/recipes-graphics/ttf-fonts/liberation-fonts_1.04.bb
index bba1c246a2..12d9d86721 100644
--- a/meta/recipes-graphics/ttf-fonts/liberation-fonts_1.04.bb
+++ b/meta/recipes-graphics/ttf-fonts/liberation-fonts_1.04.bb
@@ -1,5 +1,7 @@
SUMMARY = "Liberation(tm) Fonts"
-DESCRIPTION = "The Liberation(tm) Fonts is a font family originally created by Ascender(c) which aims metric compatibility as usage of Arial, Times New Roman, Courier New"
+DESCRIPTION = "The Liberation(tm) Fonts is a font family originally \
+created by Ascender(c) which aims at metric compatibility with \
+Arial, Times New Roman, Courier New."
HOMEPAGE = "https://fedorahosted.org/liberation-fonts/"
BUGTRACKER = "https://bugzilla.redhat.com/"
diff --git a/meta/recipes-graphics/ttf-fonts/liberation-fonts_1.06.bb b/meta/recipes-graphics/ttf-fonts/liberation-fonts_1.06.bb
index 210372be7d..887536a4f0 100644
--- a/meta/recipes-graphics/ttf-fonts/liberation-fonts_1.06.bb
+++ b/meta/recipes-graphics/ttf-fonts/liberation-fonts_1.06.bb
@@ -1,4 +1,7 @@
-DESCRIPTION = "The Liberation(tm) Fonts is a font family originally created by Ascender(c) which aims metric compatibility as usage of Arial, Times New Roman, Courier New"
+SUMMARY = "Liberation(tm) Fonts"
+DESCRIPTION = "The Liberation(tm) Fonts is a font family originally \
+created by Ascender(c) which aims at metric compatibility with \
+Arial, Times New Roman, Courier New."
HOMEPAGE = "https://fedorahosted.org/liberation-fonts/"
BUGTRACKER = "https://bugzilla.redhat.com/"
diff --git a/meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb b/meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb
index ed64b1e05e..b9a75a77bb 100644
--- a/meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb
+++ b/meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb
@@ -1,4 +1,9 @@
-DESCRIPTION = "The Bitstream Vera fonts - TTF Edition"
+SUMMARY = "The Bitstream Vera fonts - TTF Edition"
+DESCRIPTION = "The Bitstream Vera fonts include four monospace and sans \
+faces (normal, oblique, bold, bold oblique) and two serif faces (normal \
+and bold). In addition Fontconfig/Xft2 can artificially oblique the \
+serif faces for you: this loses hinting and distorts the faces slightly, \
+but is visibly different than normal and bold, and reasonably pleasing."
SECTION = "x11/fonts"
PRIORITY = "optional"
LICENSE = "Bitstream Vera"
diff --git a/meta/recipes-graphics/x11-common/x11-common/etc/X11/Xsession b/meta/recipes-graphics/x11-common/x11-common/etc/X11/Xsession
index a87447a879..0b73127ae1 100644
--- a/meta/recipes-graphics/x11-common/x11-common/etc/X11/Xsession
+++ b/meta/recipes-graphics/x11-common/x11-common/etc/X11/Xsession
@@ -2,7 +2,7 @@
if [ -x /usr/bin/dbus-launch ]; then
# As this is the X session script, always start a new DBus session.
- eval `dbus-launch --sh-syntax --exit-with-session`
+ eval `dbus-launch --sh-syntax --exit-with-session </dev/null`
echo "D-BUS per-session daemon address is: $DBUS_SESSION_BUS_ADDRESS"
fi
diff --git a/meta/recipes-graphics/x11-common/x11-common_0.1.bb b/meta/recipes-graphics/x11-common/x11-common_0.1.bb
index d15628560e..2d49951670 100644
--- a/meta/recipes-graphics/x11-common/x11-common_0.1.bb
+++ b/meta/recipes-graphics/x11-common/x11-common_0.1.bb
@@ -1,9 +1,9 @@
-DESCRIPTION = "Common X11 scripts"
+DESCRIPTION = "Common X11 scripts and configuration files"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
SECTION = "x11"
RDEPENDS_${PN} = "xmodmap xdpyinfo xtscal xinit formfactor"
-PR = "r39"
+PR = "r40"
SRC_URI = "file://etc \
file://gplv2-license.patch"
diff --git a/meta/recipes-graphics/xcb/libxcb.inc b/meta/recipes-graphics/xcb/libxcb.inc
index 37d1f86339..81d4a20c2f 100644
--- a/meta/recipes-graphics/xcb/libxcb.inc
+++ b/meta/recipes-graphics/xcb/libxcb.inc
@@ -1,4 +1,7 @@
-DESCRIPTION = "XCB: an X protocol C binding"
+SUMMARY = "XCB: The X protocol C binding library"
+DESCRIPTION = "The X protocol C-language Binding (XCB) is a replacement \
+for Xlib featuring a small footprint, latency hiding, direct access to \
+the protocol, improved threading support, and extensibility."
HOMEPAGE = "http://xcb.freedesktop.org"
BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=XCB"
diff --git a/meta/recipes-graphics/xcb/libxcb_git.bb b/meta/recipes-graphics/xcb/libxcb_git.bb
index b9ac073410..faa52317c2 100644
--- a/meta/recipes-graphics/xcb/libxcb_git.bb
+++ b/meta/recipes-graphics/xcb/libxcb_git.bb
@@ -1,7 +1,7 @@
DEFAULT_PREFERENCE = "-1"
include libxcb.inc
-PV = "1.1.90.1+gitr${SRCREV}"
+PV = "1.1.90.1+gitr${SRCPV}"
DEPENDS += "libpthread-stubs xcb-proto-native"
diff --git a/meta/recipes-graphics/xcb/xcb-proto.inc b/meta/recipes-graphics/xcb/xcb-proto.inc
index 2e1810f6f2..ae4028298a 100644
--- a/meta/recipes-graphics/xcb/xcb-proto.inc
+++ b/meta/recipes-graphics/xcb/xcb-proto.inc
@@ -1,4 +1,8 @@
-DESCRIPTION = "XCB: an X protocol C binding"
+SUMMARY = "XCB: The X protocol C binding headers"
+DESCRIPTION = "Function prototypes for the X protocol C-language Binding \
+(XCB). XCB is a replacement for Xlib featuring a small footprint, \
+latency hiding, direct access to the protocol, improved threading \
+support, and extensibility."
HOMEPAGE = "http://xcb.freedesktop.org"
BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=XCB"
diff --git a/meta/recipes-graphics/xcb/xcb-proto_git.bb b/meta/recipes-graphics/xcb/xcb-proto_git.bb
index b96fc121c5..e4c238cfc7 100644
--- a/meta/recipes-graphics/xcb/xcb-proto_git.bb
+++ b/meta/recipes-graphics/xcb/xcb-proto_git.bb
@@ -1,7 +1,7 @@
DEFAULT_PREFERENCE = "-1"
include xcb-proto.inc
-PV = "1.2+gitr${SRCREV}"
+PV = "1.2+gitr${SRCPV}"
PR = "r1"
SRC_URI = "git://anongit.freedesktop.org/git/xcb/proto;protocol=git"
diff --git a/meta/recipes-graphics/xcb/xcb-util.inc b/meta/recipes-graphics/xcb/xcb-util.inc
index 6bda3d0bfa..cd9923d2ff 100644
--- a/meta/recipes-graphics/xcb/xcb-util.inc
+++ b/meta/recipes-graphics/xcb/xcb-util.inc
@@ -1,4 +1,11 @@
-DESCRIPTION = "XCB: an X protocol C binding"
+SUMMARY = "XCB: The X protocol C binding utilities"
+DESCRIPTION = "The xcb-util module provides a number of libraries which \
+sit on top of libxcb, the core X protocol library, and some of the \
+extension libraries. These experimental libraries provide convenience \
+functions and interfaces which make the raw X protocol more usable. Some \
+of the libraries also provide client-side code which is not strictly \
+part of the X protocol but which have traditionally been provided by \
+Xlib."
HOMEPAGE = "http://xcb.freedesktop.org/XcbUtil/"
BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=XCB"
diff --git a/meta/recipes-graphics/xorg-app/mkfontdir_1.0.5.bb b/meta/recipes-graphics/xorg-app/mkfontdir_1.0.5.bb
deleted file mode 100644
index 729c2a5d4f..0000000000
--- a/meta/recipes-graphics/xorg-app/mkfontdir_1.0.5.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require xorg-app-common.inc
-
-DESCRIPTION = "a program to create an index of X font files in a directory"
-
-PE = "1"
-
-RDEPENDS += "mkfontscale"
-
-BBCLASSEXTEND = "native"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=b4fcf2b90cadbfc15009b9e124dc3a3f"
-
-SRC_URI[md5sum] = "9365ac66d19186eaf030482d312fca06"
-SRC_URI[sha256sum] = "a534650cff503619f9101577d816cde283da993bc039273477bd8dfbd01a2d0b"
diff --git a/meta/recipes-graphics/xorg-app/mkfontdir_1.0.6.bb b/meta/recipes-graphics/xorg-app/mkfontdir_1.0.6.bb
new file mode 100644
index 0000000000..2657ecf71a
--- /dev/null
+++ b/meta/recipes-graphics/xorg-app/mkfontdir_1.0.6.bb
@@ -0,0 +1,21 @@
+require xorg-app-common.inc
+
+SUMMARY = "A program to create an index of X font files in a directory"
+
+DESCRIPTION = "For each directory argument, mkfontdir reads all of the \
+font files in the directory. The font names and related data are written \
+out to the files \"fonts.dir\", \"fonts.scale\", and \"fonts.alias\". \
+The X server and font server use these files to find the available font \
+files."
+
+PE = "1"
+PR = "r0"
+
+RDEPENDS_${PN} += "mkfontscale"
+
+BBCLASSEXTEND = "native"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=b4fcf2b90cadbfc15009b9e124dc3a3f"
+
+SRC_URI[md5sum] = "dc342dd8858416254bb5f71a9ddce589"
+SRC_URI[sha256sum] = "55d56c6310f8d2268cb8978e838d01d27c7d70e30282c373c5a935ab3fb8c859"
diff --git a/meta/recipes-graphics/xorg-app/mkfontscale_1.0.7.bb b/meta/recipes-graphics/xorg-app/mkfontscale_1.0.7.bb
deleted file mode 100644
index c1175194a6..0000000000
--- a/meta/recipes-graphics/xorg-app/mkfontscale_1.0.7.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require xorg-app-common.inc
-
-DESCRIPTION = "a program to create an index of scalable font files for X"
-
-DEPENDS += " zlib libfontenc freetype virtual/libx11"
-
-BBCLASSEXTEND = "native"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=8ecbbbc1259a329e96ccc4dd86ad2ca2"
-
-SRC_URI[md5sum] = "96ca346f185c0ab48e42bf5bb0375da5"
-SRC_URI[sha256sum] = "8306b229cca233216a6582cb1ff60af78e37c47d6412ac823d7d41c3d7de7127"
diff --git a/meta/recipes-graphics/xorg-app/mkfontscale_1.0.8.bb b/meta/recipes-graphics/xorg-app/mkfontscale_1.0.8.bb
new file mode 100644
index 0000000000..3b21c1ee2a
--- /dev/null
+++ b/meta/recipes-graphics/xorg-app/mkfontscale_1.0.8.bb
@@ -0,0 +1,18 @@
+require xorg-app-common.inc
+
+SUMMARY = "A program to create an index of scalable font files for X"
+
+DESCRIPTION = "For each directory argument, mkfontscale reads all of the \
+scalable font files in the directory. For every font file found, an X11 \
+font name (XLFD) is generated, and is written together with the file \
+name to a file fonts.scale in the directory. The resulting fonts.scale \
+is used by the mkfontdir program."
+
+DEPENDS += " zlib libfontenc freetype virtual/libx11"
+
+BBCLASSEXTEND = "native"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=2e0d129d05305176d1a790e0ac1acb7f"
+
+SRC_URI[md5sum] = "5210c9385c6cc4a00ce829d8dc9c819b"
+SRC_URI[sha256sum] = "6eb57786cd79eebfbaca386fe24dcfe50689dbf433d052e58291c2925f2050f9"
diff --git a/meta/recipes-graphics/xorg-app/x11perf_1.5.2.bb b/meta/recipes-graphics/xorg-app/x11perf_1.5.2.bb
index 88dec1b780..e10fcf0b53 100644
--- a/meta/recipes-graphics/xorg-app/x11perf_1.5.2.bb
+++ b/meta/recipes-graphics/xorg-app/x11perf_1.5.2.bb
@@ -1,6 +1,11 @@
require xorg-app-common.inc
-DESCRIPTION = "X11 server performance test program"
+SUMMARY = "X11 server performance test program"
+
+DESCRIPTION = "The x11perf program runs one or more performance tests \
+and reports how fast an X server can execute the tests."
+
+
DEPENDS += "libxmu libxrender libxft libxext fontconfig"
LIC_FILES_CHKSUM = "file://COPYING;md5=428ca4d67a41fcd4fc3283dce9bbda7e \
diff --git a/meta/recipes-graphics/xorg-app/xauth_1.0.5.bb b/meta/recipes-graphics/xorg-app/xauth_1.0.5.bb
index 43e51c84df..23986ac1b2 100644
--- a/meta/recipes-graphics/xorg-app/xauth_1.0.5.bb
+++ b/meta/recipes-graphics/xorg-app/xauth_1.0.5.bb
@@ -1,7 +1,7 @@
require xorg-app-common.inc
SUMMARY = "X authority utilities"
DESCRIPTION = "X application to edit and display the authorization \
-information used in connecting to the X server"
+information used in connecting to the X server."
LIC_FILES_CHKSUM = "file://COPYING;md5=5ec74dd7ea4d10c4715a7c44f159a40b"
diff --git a/meta/recipes-graphics/xorg-app/xdpyinfo_1.1.0.bb b/meta/recipes-graphics/xorg-app/xdpyinfo_1.1.0.bb
deleted file mode 100644
index ff5a58f6f6..0000000000
--- a/meta/recipes-graphics/xorg-app/xdpyinfo_1.1.0.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require xorg-app-common.inc
-
-DESCRIPTION = "X display information utility"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4641deddaa80fe7ca88e944e1fd94a94"
-DEPENDS += "libxtst libxext libxxf86vm libxxf86dga libxxf86misc libxi libxrender libxinerama libdmx libxp libxau"
-PR = "r0"
-PE = "1"
-
-SRC_URI += "file://disable-xkb.patch"
-
-SRC_URI[md5sum] = "d1d516610316138105cd07064b257c5c"
-SRC_URI[sha256sum] = "780d8dfe65653f42ee26d35928ab7f72f5f27ab08eda692fe4baad05126a0631"
-
-EXTRA_OECONF = "--disable-xkb"
diff --git a/meta/recipes-graphics/xorg-app/xdpyinfo_1.2.0.bb b/meta/recipes-graphics/xorg-app/xdpyinfo_1.2.0.bb
new file mode 100644
index 0000000000..d975d82952
--- /dev/null
+++ b/meta/recipes-graphics/xorg-app/xdpyinfo_1.2.0.bb
@@ -0,0 +1,21 @@
+require xorg-app-common.inc
+
+SUMMARY = "Display information utility for X"
+
+DESCRIPTION = "Xdpyinfo is a utility for displaying information about an \
+X server. It is used to examine the capabilities of a server, the \
+predefined values for various parameters used in communicating between \
+clients and the server, and the different types of screens and visuals \
+that are available."
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=f3d09e6b9e203a1af489e16c708f4fb3"
+DEPENDS += "libxtst libxext libxxf86vm libxxf86dga libxxf86misc libxi libxrender libxinerama libdmx libxp libxau"
+PR = "r0"
+PE = "1"
+
+SRC_URI += "file://disable-xkb.patch"
+
+SRC_URI[md5sum] = "c52fda7bbc80e74b7839f29298cb1d77"
+SRC_URI[sha256sum] = "fe5bad498ecfbf21f9a2a18eee5ece9de5d52f68878f250db8f575c9b872b5ce"
+
+EXTRA_OECONF = "--disable-xkb"
diff --git a/meta/recipes-graphics/xorg-app/xhost_1.0.3.bb b/meta/recipes-graphics/xorg-app/xhost_1.0.3.bb
deleted file mode 100644
index d39058a1e1..0000000000
--- a/meta/recipes-graphics/xorg-app/xhost_1.0.3.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-app-common.inc
-
-DESCRIPTION = "Server access control program for X"
-LIC_FILES_CHKSUM = "file://COPYING;md5=cbe6a2ee97dc38c7265adfec5644689b"
-DEPENDS += "libxmu libxau"
-PR = "r0"
-PE = "1"
-
-SRC_URI[md5sum] = "c7f91b4a750d297f269c2a0a3206a1b2"
-SRC_URI[sha256sum] = "2d63007c65e89fe273a43f3e45b3c0133acbc3ceeda6bfc9671388409134ad17"
diff --git a/meta/recipes-graphics/xorg-app/xhost_1.0.4.bb b/meta/recipes-graphics/xorg-app/xhost_1.0.4.bb
new file mode 100644
index 0000000000..9330228a15
--- /dev/null
+++ b/meta/recipes-graphics/xorg-app/xhost_1.0.4.bb
@@ -0,0 +1,18 @@
+require xorg-app-common.inc
+
+SUMMARY = "Server access control program for X"
+
+DESCRIPTION = "The xhost program is used to add and delete host names or \
+user names to the list allowed to make connections to the X server. In \
+the case of hosts, this provides a rudimentary form of privacy control \
+and security. Environments which require more sophisticated measures \
+should implement the user-based mechanism or use the hooks in the \
+protocol for passing other authentication data to the server."
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=8fbed71dddf48541818cef8079124199"
+DEPENDS += "libxmu libxau"
+PR = "r0"
+PE = "1"
+
+SRC_URI[md5sum] = "2be663a0afbcc0856c1591477d5bf32a"
+SRC_URI[sha256sum] = "5e02c06caeb7a258f3621bf11459a7820cfeaf9bf269c1f8da86d7071346a594"
diff --git a/meta/recipes-graphics/xorg-app/xinit_1.2.1.bb b/meta/recipes-graphics/xorg-app/xinit_1.2.1.bb
deleted file mode 100644
index 68150ca05d..0000000000
--- a/meta/recipes-graphics/xorg-app/xinit_1.2.1.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require xorg-app-common.inc
-
-DESCRIPTION = "X Window System initializer"
-LIC_FILES_CHKSUM = "file://COPYING;md5=0d4b5eef75f1584ccbdc5e4a34314407"
-PR = "r0"
-PE = "1"
-
-FILES_${PN} += "${libdir}X11/xinit"
-
-SRC_URI[md5sum] = "56f2d202b3dc10fcd21931a67bb270f7"
-SRC_URI[sha256sum] = "16bcc73ae81b6d80fd1a9419ea757f38870d1043d440b6d56fcaa79d4c6c9b07"
diff --git a/meta/recipes-graphics/xorg-app/xinit_1.3.0.bb b/meta/recipes-graphics/xorg-app/xinit_1.3.0.bb
new file mode 100644
index 0000000000..ee7c64d928
--- /dev/null
+++ b/meta/recipes-graphics/xorg-app/xinit_1.3.0.bb
@@ -0,0 +1,18 @@
+require xorg-app-common.inc
+
+SUMMARY = "X Window System initializer"
+
+DESCRIPTION = "The xinit program is used to start the X Window System \
+server and a first client program on systems that cannot start X \
+directly from /etc/init or in environments that use multiple window \
+systems. When this first client exits, xinit will kill the X server and \
+then terminate."
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=0d4b5eef75f1584ccbdc5e4a34314407"
+PR = "r0"
+PE = "1"
+
+FILES_${PN} += "${libdir}X11/xinit"
+
+SRC_URI[md5sum] = "bc4e8b7d1919597cc37a0d24aa149dda"
+SRC_URI[sha256sum] = "ba76e36e1a42a7cf76505b7e6fc4777f5d14f45ddff74341abfb7dd10d5fe04c"
diff --git a/meta/recipes-graphics/xorg-app/xkbcomp/cross-compile-fix.patch b/meta/recipes-graphics/xorg-app/xkbcomp/cross-compile-fix.patch
new file mode 100644
index 0000000000..ca65345636
--- /dev/null
+++ b/meta/recipes-graphics/xorg-app/xkbcomp/cross-compile-fix.patch
@@ -0,0 +1,35 @@
+commit cc55d8f5ab021861308b071aab9c03016be15187
+Author: Gaetan Nadon <memsize@videotron.ca>
+Date: Sun Oct 31 20:35:24 2010 -0400
+
+ config: replace AC_CHECK_FILE with test -f as it fails to cross-compile
+
+ Testing for the presence of xkbparse.c is legitimate as this is a build
+ file, but the Autoconf macro assumes it is testing on the host system
+ and fails.
+
+ Tested-by: Abdoulaye Walsimou Gaye <awg@embtoolkit.org>
+ Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
+
+diff --git a/configure.ac b/configure.ac
+index c69230b..8e6bd6e 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -34,11 +34,14 @@ XORG_DEFAULT_OPTIONS
+
+ AM_CONFIG_HEADER(config.h)
+
++# If both the C file and YACC are missing, the package cannot be build.
+ AC_PROG_YACC
+ AC_PATH_PROG([YACC_INST], $YACC)
+-AC_CHECK_FILE([$srcdir/xkbparse.c], [],
+- [test -z "$YACC_INST" && AC_MSG_ERROR([yacc not found - unable to compile xkbparse.y])])
+-
++if test ! -f "$srcdir/xkbparse.c"; then
++ if test -z "$YACC_INST"; then
++ AC_MSG_ERROR([yacc not found - unable to compile xkbparse.y])
++ fi
++fi
+
+ AC_CHECK_FUNCS([strdup strcasecmp])
+
diff --git a/meta/recipes-graphics/xorg-app/xkbcomp_1.1.1.bb b/meta/recipes-graphics/xorg-app/xkbcomp_1.1.1.bb
deleted file mode 100644
index bd40e4287d..0000000000
--- a/meta/recipes-graphics/xorg-app/xkbcomp_1.1.1.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require xorg-app-common.inc
-
-SUMMARY = "X Keyboard Extensions"
-
-DESCRIPTION = "The X Keyboard Extension essentially replaces the core protocol definition of keyboard."
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=08436e4f4476964e2e2dd7e7e41e076a"
-
-DEPENDS += "libxkbfile"
-
-BBCLASSEXTEND = "native"
-
-SRC_URI[md5sum] = "38c387bacdc01038c8ac280588792bcf"
-SRC_URI[sha256sum] = "9775bcfd43d9ffa41e2865e5b2c933f419bf983d7a529b3103656c76fd82e663"
diff --git a/meta/recipes-graphics/xorg-app/xkbcomp_1.2.0.bb b/meta/recipes-graphics/xorg-app/xkbcomp_1.2.0.bb
new file mode 100644
index 0000000000..f574690898
--- /dev/null
+++ b/meta/recipes-graphics/xorg-app/xkbcomp_1.2.0.bb
@@ -0,0 +1,19 @@
+require xorg-app-common.inc
+
+SUMMARY = "A program to compile XKB keyboard description"
+
+DESCRIPTION = "The xkbcomp keymap compiler converts a description of an \
+XKB keymap into one of several output formats. The most common use for \
+xkbcomp is to create a compiled keymap file (.xkm extension) which can \
+be read directly by XKB-capable X servers or utilities."
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=08436e4f4476964e2e2dd7e7e41e076a"
+
+DEPENDS += "libxkbfile"
+
+SRC_URI += "file://cross-compile-fix.patch"
+
+BBCLASSEXTEND = "native"
+
+SRC_URI[md5sum] = "0f55995cd8da9b2d88553e1a2e17cd0a"
+SRC_URI[sha256sum] = "2c64aa414755e764ca548ae5c93e95f7b5bbd5e01bca16bf226fd32bfae77ea4"
diff --git a/meta/recipes-graphics/xorg-app/xmodmap_1.0.5.bb b/meta/recipes-graphics/xorg-app/xmodmap_1.0.5.bb
index 2d5ee24bc7..e98ed4fdfa 100644
--- a/meta/recipes-graphics/xorg-app/xmodmap_1.0.5.bb
+++ b/meta/recipes-graphics/xorg-app/xmodmap_1.0.5.bb
@@ -1,6 +1,13 @@
require xorg-app-common.inc
-DESCRIPTION = "utility for modifying keymaps and pointer button mappings in X"
+SUMMARY = "Utility for modifying keymaps and pointer button mappings in X"
+
+DESCRIPTION = "The xmodmap program is used to edit and display the \
+keyboard modifier map and keymap table that are used by client \
+applications to convert event keycodes into keysyms. It is usually run \
+from the user's session startup script to configure the keyboard \
+according to personal tastes."
+
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=eef098b27f09d0ac39268df0cc2c00b5"
diff --git a/meta/recipes-graphics/xorg-app/xprop_1.1.0.bb b/meta/recipes-graphics/xorg-app/xprop_1.1.0.bb
deleted file mode 100644
index cfa02dd31d..0000000000
--- a/meta/recipes-graphics/xorg-app/xprop_1.1.0.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require xorg-app-common.inc
-
-DESCRIPTION = "utility to display window and font properties of an X server"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=4641deddaa80fe7ca88e944e1fd94a94"
-
-DEPENDS += " libxmu virtual/libx11"
-
-PR = "r0"
-PE = "1"
-
-SRC_URI[md5sum] = "f0bacbd30f0dd1c1e9ccafe97687b7a4"
-SRC_URI[sha256sum] = "cc8e07901574895f113baffda19272c54545879e02012314527ebbf2dcc66226"
diff --git a/meta/recipes-graphics/xorg-app/xprop_1.2.0.bb b/meta/recipes-graphics/xorg-app/xprop_1.2.0.bb
new file mode 100644
index 0000000000..dc53b987cd
--- /dev/null
+++ b/meta/recipes-graphics/xorg-app/xprop_1.2.0.bb
@@ -0,0 +1,19 @@
+require xorg-app-common.inc
+
+SUMMARY = "Utility to display window and font properties of an X server"
+
+DESCRIPTION = "The xprop utility is for displaying window and font \
+properties in an X server. One window or font is selected using the \
+command line arguments or possibly in the case of a window, by clicking \
+on the desired window. A list of properties is then given, possibly with \
+formatting information."
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=e226ab8db88ac0bc0391673be40c9f91"
+
+DEPENDS += " libxmu virtual/libx11"
+
+PR = "r0"
+PE = "1"
+
+SRC_URI[md5sum] = "e6d0673a1e1e469f0a6220a6868fb94b"
+SRC_URI[sha256sum] = "53508c082b03dbbfd68489cb21392023f3e62ca9c921e1fb39b92ad10fbe6b9c"
diff --git a/meta/recipes-graphics/xorg-app/xrandr_1.3.4.bb b/meta/recipes-graphics/xorg-app/xrandr_1.3.4.bb
index 9a6e4702b9..ab298740af 100644
--- a/meta/recipes-graphics/xorg-app/xrandr_1.3.4.bb
+++ b/meta/recipes-graphics/xorg-app/xrandr_1.3.4.bb
@@ -1,6 +1,11 @@
require xorg-app-common.inc
-DESCRIPTION = "X Resize and Rotate extension command."
+SUMMARY = "XRandR: X Resize, Rotate and Reflect extension command"
+
+DESCRIPTION = "Xrandr is used to set the size, orientation and/or \
+reflection of the outputs for a screen. It can also set the screen \
+size."
+
LICENSE= "BSD-X"
LIC_FILES_CHKSUM = "file://COPYING;md5=fe1608bdb33cf8c62a4438f7d34679b3"
DEPENDS += "libxrandr libxrender"
diff --git a/meta/recipes-graphics/xorg-app/xset_1.2.1.bb b/meta/recipes-graphics/xorg-app/xset_1.2.1.bb
index 5ce0a5bb0b..b5d63bcd65 100644
--- a/meta/recipes-graphics/xorg-app/xset_1.2.1.bb
+++ b/meta/recipes-graphics/xorg-app/xset_1.2.1.bb
@@ -1,6 +1,10 @@
require xorg-app-common.inc
-DESCRIPTION = "Utility of setting various user preference options of the display"
+SUMMARY = "Utility for setting various user preference options of the display"
+
+DESCRIPTION = "xset is a utility that is used to set various user \
+preference options of the display."
+
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=bea81cc9827cdf1af0e12c2b8228cf8d"
DEPENDS += "libxext libxxf86misc libxfontcache libxmu libxp libxau"
diff --git a/meta/recipes-graphics/xorg-app/xvinfo_1.0.2.bb b/meta/recipes-graphics/xorg-app/xvinfo_1.0.2.bb
deleted file mode 100644
index 3c6f6678dc..0000000000
--- a/meta/recipes-graphics/xorg-app/xvinfo_1.0.2.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require xorg-app-common.inc
-
-DESCRIPTION = "Print out X-Video extension adaptor information"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4641deddaa80fe7ca88e944e1fd94a94"
-DEPENDS += " libxv"
-PE = "1"
-
-SRC_URI[md5sum] = "e1e318436f49e2f0f3764593dadd9ad2"
-SRC_URI[sha256sum] = "126e2a612ac723f9688904fcfa612688d62e520ce55c56eb34eb5390074cf150"
diff --git a/meta/recipes-graphics/xorg-app/xvinfo_1.1.1.bb b/meta/recipes-graphics/xorg-app/xvinfo_1.1.1.bb
new file mode 100644
index 0000000000..7a0b822aa9
--- /dev/null
+++ b/meta/recipes-graphics/xorg-app/xvinfo_1.1.1.bb
@@ -0,0 +1,14 @@
+require xorg-app-common.inc
+
+SUMMARY = "Print out X-Video extension adaptor information"
+
+DESCRIPTION = "xvinfo prints out the capabilities of any video adaptors \
+associated with the display that are accessible through the X-Video \
+extension."
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=b664101ad7a1dc758a4c4109bf978e68"
+DEPENDS += " libxv"
+PE = "1"
+
+SRC_URI[md5sum] = "c88feb501083951a8f47a21aaeb1529d"
+SRC_URI[sha256sum] = "60c74aa190bcf1e244f6f1576dc43869018a8ed5ba319703a5c198d3466a3985"
diff --git a/meta/recipes-graphics/xorg-app/xwininfo_1.1.0.bb b/meta/recipes-graphics/xorg-app/xwininfo_1.1.0.bb
deleted file mode 100644
index 8e37294886..0000000000
--- a/meta/recipes-graphics/xorg-app/xwininfo_1.1.0.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require xorg-app-common.inc
-
-DESCRIPTION = "window information utility for X"
-LIC_FILES_CHKSUM = "file://COPYING;md5=78976cd3115f6faf615accc4e094d90e"
-DEPENDS += "libxext libxmu"
-
-PR = "r0"
-PE = "0"
-
-SRC_URI[md5sum] = "932cb1393dee3caaf26f3515f640d783"
-SRC_URI[sha256sum] = "759e03d80b2a8bc843d501d5fd91fe1506da403019b6f165d32aa1b9909f8cf8"
diff --git a/meta/recipes-graphics/xorg-app/xwininfo_1.1.1.bb b/meta/recipes-graphics/xorg-app/xwininfo_1.1.1.bb
new file mode 100644
index 0000000000..cabd4663a7
--- /dev/null
+++ b/meta/recipes-graphics/xorg-app/xwininfo_1.1.1.bb
@@ -0,0 +1,16 @@
+require xorg-app-common.inc
+
+SUMMARY = "Window information utility for X"
+
+DESCRIPTION = "Xwininfo is a utility for displaying information about \
+windows. Information may include window position, size, color depth, \
+and a number of other items."
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=78976cd3115f6faf615accc4e094d90e"
+DEPENDS += "libxext libxmu"
+
+PR = "r0"
+PE = "0"
+
+SRC_URI[md5sum] = "7a7f44b826d877ba39c19cf5913978d7"
+SRC_URI[sha256sum] = "645a57be4870fb6aba459e7dc96f4d8eaafa3b31bbcd42c997ac4cb021a2343d"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.5.0.bb b/meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.5.0.bb
deleted file mode 100644
index 1b4470c17c..0000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.5.0.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xf86-input-common.inc
-
-DESCRIPTION = "X.Org X server -- evdev input driver"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=fefe33b1cf0cacba0e72e3b0fa0f0e16"
-
-PR = "r0"
-
-SRC_URI[md5sum] = "eceb6dc517c0649b772f18708a1aade8"
-SRC_URI[sha256sum] = "9dec173ac9d8d09ef5cb2f79e74471f5f3ddd108827f3e95958b623766260333"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.6.0.bb b/meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.6.0.bb
new file mode 100644
index 0000000000..a37be179a1
--- /dev/null
+++ b/meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.6.0.bb
@@ -0,0 +1,20 @@
+require xf86-input-common.inc
+
+SUMMARY = "X.Org X server -- event devices (evdev) input driver"
+
+DESCRIPTION = "evdev is an Xorg input driver for Linux's generic event \
+devices. It therefore supports all input devices that the kernel knows \
+about, including most mice and keyboards. \
+\
+The evdev driver can serve as both a pointer and a keyboard input \
+device, and may be used as both the core keyboard and the core pointer. \
+Multiple input devices are supported by multiple instances of this \
+driver, with one Load directive for evdev in the Module section of your \
+xorg.conf for each input device that will use this driver. "
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=fefe33b1cf0cacba0e72e3b0fa0f0e16"
+
+PR = "r0"
+
+SRC_URI[md5sum] = "f33fe9413bde68936d8909206a13e8a1"
+SRC_URI[sha256sum] = "b0e7f3991a8183a4743196c3e16d7184d439b80bf43653aa2f45b0756a6753ac"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-keyboard_1.4.0.bb b/meta/recipes-graphics/xorg-driver/xf86-input-keyboard_1.4.0.bb
deleted file mode 100644
index f5e51e0229..0000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-input-keyboard_1.4.0.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xf86-input-common.inc
-
-DESCRIPTION = "X.Org X server -- keyboard input driver"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=eae2c98cbb8c60401893ff9313ff3826"
-
-PR = "r1"
-
-SRC_URI[md5sum] = "fd17158ffeacecc8cc670604460cb98b"
-SRC_URI[sha256sum] = "842d36cfca68ddab4f2c562c73bfd43ba76de2d490d60034f0c5dd524aa6d6a5"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-keyboard_1.5.0.bb b/meta/recipes-graphics/xorg-driver/xf86-input-keyboard_1.5.0.bb
new file mode 100644
index 0000000000..aa8be67445
--- /dev/null
+++ b/meta/recipes-graphics/xorg-driver/xf86-input-keyboard_1.5.0.bb
@@ -0,0 +1,15 @@
+require xf86-input-common.inc
+
+SUMMARY = "X.Org X server -- keyboard input driver"
+
+DESCRIPTION = "keyboard is an Xorg input driver for keyboards. The \
+driver supports the standard OS-provided keyboard interface. The driver \
+functions as a keyboard input device, and may be used as the X server's \
+core keyboard."
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=ea2099d24ac9e316a6d4b9f20b3d4e10"
+
+PR = "r0"
+
+SRC_URI[md5sum] = "b74d7162db5ce7899c17927c6cfa9522"
+SRC_URI[sha256sum] = "2303510e905465ebee91f22cdd75706a15afb108258bc220c7500f213de19cb0"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-keyboard_git.bb b/meta/recipes-graphics/xorg-driver/xf86-input-keyboard_git.bb
index a6744bda64..57c601c12d 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-input-keyboard_git.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-input-keyboard_git.bb
@@ -1,6 +1,11 @@
require xf86-input-common.inc
-DESCRIPTION = "X.Org X server -- keyboard input driver"
+SUMMARY = "X.Org X server -- keyboard input driver"
+
+DESCRIPTION = "keyboard is an Xorg input driver for keyboards. The \
+driver supports the standard OS-provided keyboard interface. The driver \
+functions as a keyboard input device, and may be used as the X server's \
+core keyboard."
PV = "1.3.2+git${SRCPV}"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-mouse_1.6.0.bb b/meta/recipes-graphics/xorg-driver/xf86-input-mouse_1.6.0.bb
index d0914cff0a..61d73e191b 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-input-mouse_1.6.0.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-input-mouse_1.6.0.bb
@@ -1,6 +1,12 @@
require xf86-input-common.inc
-DESCRIPTION = "X.Org X server -- mouse input driver"
+SUMMARY = "X.Org X server -- mouse input driver"
+
+DESCRIPTION = "mouse is an Xorg input driver for mice. The driver \
+supports most available mouse types and interfaces. The mouse driver \
+functions as a pointer input device, and may be used as the X server's \
+core pointer. Multiple mice are supported by multiple instances of this \
+driver."
LIC_FILES_CHKSUM = "file://COPYING;md5=237eb1d1a602d29ef2af62d8fba60f19"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-mouse_git.bb b/meta/recipes-graphics/xorg-driver/xf86-input-mouse_git.bb
index 94dedf104d..bdf61c1155 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-input-mouse_git.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-input-mouse_git.bb
@@ -1,6 +1,12 @@
require xf86-input-common.inc
-DESCRIPTION = "X.Org X server -- mouse input driver"
+SUMMARY = "X.Org X server -- mouse input driver"
+
+DESCRIPTION = "mouse is an Xorg input driver for mice. The driver \
+supports most available mouse types and interfaces. The mouse driver \
+functions as a pointer input device, and may be used as the X server's \
+core pointer. Multiple mice are supported by multiple instances of this \
+driver."
PV = "1.3.0+git${SRCPV}"
PR = "r2"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.2.1.bb b/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.2.1.bb
deleted file mode 100644
index 84adb85ef9..0000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.2.1.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xf86-input-common.inc
-
-DESCRIPTION = "X.Org X server -- keyboard input driver"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=08955125302e95a16628a4bec64ade5f"
-
-DEPENDS += "libxi"
-
-SRC_URI[md5sum] = "29a6f9da5123149e4abc8ff83880ed5c"
-SRC_URI[sha256sum] = "a63b48c5c8eb09416b941dea591a948e111d1b2e14d4620f25377cf47cf877e6"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.3.0.bb b/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.3.0.bb
new file mode 100644
index 0000000000..b0953bbe93
--- /dev/null
+++ b/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.3.0.bb
@@ -0,0 +1,22 @@
+require xf86-input-common.inc
+
+SUMMARY = "X.Org X server -- synaptics touchpad input driver"
+
+DESCRIPTION = "synaptics is an Xorg input driver for the touchpads from \
+Synaptics Incorporated. Even though these touchpads (by default, \
+operating in a compatibility mode emulating a standard mouse) can be \
+handled by the normal evdev or mouse drivers, this driver allows more \
+advanced features of the touchpad to become available."
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=e395e21f3c21d4fc3a243783e85e9ab5"
+
+DEPENDS += "libxi"
+
+#
+# the xorg-synaptics.pc has hardcoded sdkdir=/usr/include/xorg, which is not correct
+# for cross compiling, so pass the correct sdkdir as include path
+#
+EXTRA_OEMAKE += " sdkdir=${STAGING_INCDIR}/xorg "
+
+SRC_URI[md5sum] = "b4e58eba1bdca13f0929a4b03b262135"
+SRC_URI[sha256sum] = "30a33250c4f3d2daa8a61cab847dc7befd3248db0fca139d17fd7b890b5a8fd7"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_git.bb b/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_git.bb
index f7dc3b731c..70478d5202 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_git.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_git.bb
@@ -1,6 +1,12 @@
require xf86-input-common.inc
-DESCRIPTION = "X.Org X server -- keyboard input driver"
+SUMMARY = "X.Org X server -- synaptics touchpad input driver"
+
+DESCRIPTION = "synaptics is an Xorg input driver for the touchpads from \
+Synaptics Incorporated. Even though these touchpads (by default, \
+operating in a compatibility mode emulating a standard mouse) can be \
+handled by the normal evdev or mouse drivers, this driver allows more \
+advanced features of the touchpad to become available."
PV = "0.15.2+git${SRCPV}"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-vmmouse_12.6.10.bb b/meta/recipes-graphics/xorg-driver/xf86-input-vmmouse_12.6.10.bb
index 15aeb582dc..6288507398 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-input-vmmouse_12.6.10.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-input-vmmouse_12.6.10.bb
@@ -9,3 +9,5 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=622841c068a9d7625fbfe7acffb1a8fc"
SRC_URI[md5sum] = "49c6e77851e9f7bc5cb7d85f061992f8"
SRC_URI[sha256sum] = "a6369d5a860627f2a38842d5563045b263a459e534f6ae08df48f330f9a40910"
+
+COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-intel_2.13.0.bb b/meta/recipes-graphics/xorg-driver/xf86-video-intel_2.13.0.bb
deleted file mode 100644
index 6f0c81c035..0000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-video-intel_2.13.0.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require xf86-video-common.inc
-
-DESCRIPTION = "X.Org X server -- Intel i8xx, i9xx display driver"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=8730ad58d11c7bbad9a7066d69f7808e"
-
-EXTRA_OECONF += "--disable-xvmc"
-
-DEPENDS += "virtual/libx11 libxvmc drm xf86driproto glproto \
- virtual/libgl xineramaproto xf86driproto libpciaccess"
-
-COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
-
-SRC_URI[md5sum] = "de2f8a5836d90c71f3175dcd46d03ec0"
-SRC_URI[sha256sum] = "d8b2fae8d0c4ae372994cb7df8de8aa995b8e89b1bc5766c53ea0751752fc887"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-intel_2.14.0.bb b/meta/recipes-graphics/xorg-driver/xf86-video-intel_2.14.0.bb
new file mode 100644
index 0000000000..017a2e0a28
--- /dev/null
+++ b/meta/recipes-graphics/xorg-driver/xf86-video-intel_2.14.0.bb
@@ -0,0 +1,20 @@
+require xf86-video-common.inc
+
+SUMMARY = "X.Org X server -- Intel integrated graphics chipsets driver"
+
+DESCRIPTION = "intel is an Xorg driver for Intel integrated graphics \
+chipsets. The driver supports depths 8, 15, 16 and 24. On some chipsets, \
+the driver supports hardware accelerated 3D via the Direct Rendering \
+Infrastructure (DRI)."
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=8730ad58d11c7bbad9a7066d69f7808e"
+
+EXTRA_OECONF += "--disable-xvmc"
+
+DEPENDS += "virtual/libx11 libxvmc drm xf86driproto glproto \
+ virtual/libgl xineramaproto xf86driproto libpciaccess"
+
+COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
+
+SRC_URI[md5sum] = "05f187582aeabda57fcd6f2782cfbf8e"
+SRC_URI[sha256sum] = "e18c37a579a960516e69de5c6f74750ca02208c0e41cf763ae5630c84db507df"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb b/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb
index 30791b2247..4aac8039f6 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb
@@ -1,6 +1,12 @@
require xf86-video-common.inc
-DESCRIPTION = "X.Org X server -- Intel i8xx, i9xx display driver"
+SUMMARY = "X.Org X server -- Intel integrated graphics chipsets driver"
+
+DESCRIPTION = "intel is an Xorg driver for Intel integrated graphics \
+chipsets. The driver supports depths 8, 15, 16 and 24. On some chipsets, \
+the driver supports hardware accelerated 3D via the Direct Rendering \
+Infrastructure (DRI)."
+
DEPENDS += "virtual/libx11 libxvmc drm dri2proto glproto \
virtual/libgl xineramaproto libpciaccess"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/omap-blacklist-tv-out.patch b/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/omap-blacklist-tv-out.patch
new file mode 100644
index 0000000000..506e174cb1
--- /dev/null
+++ b/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/omap-blacklist-tv-out.patch
@@ -0,0 +1,25 @@
+commit 05efb061f1945425d214ff6b6050883e6d8633bf
+Author: Koen Kooi <koen@dominion.thruhere.net>
+Date: Wed Jan 26 13:21:12 2011 +0100
+
+ blacklist tv out
+
+ The tv-out gets added last and the driver tries to reconfigure dvi to TV resolutions, which fails. so blacklist it
+
+ Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+
+diff --git a/src/omapfb-output-dss.c b/src/omapfb-output-dss.c
+index 6cc52de..83cb711 100644
+--- a/src/omapfb-output-dss.c
++++ b/src/omapfb-output-dss.c
+@@ -205,6 +205,10 @@ OMAPFBDSSOutputDetect (xf86OutputPtr output)
+ if(ofb->timings[idx][0] == '\0')
+ return XF86OutputStatusDisconnected;
+
++ // Hack to disable the tv out
++ if (strncmp(output->name, "tv", 2) == 0)
++ return XF86OutputStatusDisconnected;
++
+ return XF86OutputStatusConnected;
+ }
+
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/omap-force-plain-mode.patch b/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/omap-force-plain-mode.patch
new file mode 100644
index 0000000000..201a8b9588
--- /dev/null
+++ b/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/omap-force-plain-mode.patch
@@ -0,0 +1,23 @@
+commit d28a36bbadc360a9409bf9832f1d4171d7c33dad
+Author: Koen Kooi <koen@dominion.thruhere.net>
+Date: Wed Jan 26 13:20:20 2011 +0100
+
+ force 'plain' mode
+
+ The new DSS mode breaks XV, so force plain mode
+
+ Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+
+diff --git a/src/omapfb-driver.c b/src/omapfb-driver.c
+index 018e040..48aa09c 100644
+--- a/src/omapfb-driver.c
++++ b/src/omapfb-driver.c
+@@ -326,7 +326,7 @@ OMAPFBPreInit(ScrnInfoPtr pScrn, int flags)
+ OMAPFBProbeController(ofb->ctrl_name);
+
+ /* Do we have the DSS kernel API? */
+- if (stat(SYSFS_DSS_DIR, &st) == 0) {
++ if (0) { //stat(SYSFS_DSS_DIR, &st) == 0) {
+ ofb->dss = TRUE;
+ } else {
+ ofb->dss = FALSE;
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/omap-revert-set-CRTC-limit.patch b/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/omap-revert-set-CRTC-limit.patch
new file mode 100644
index 0000000000..6a9e9058b9
--- /dev/null
+++ b/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/omap-revert-set-CRTC-limit.patch
@@ -0,0 +1,32 @@
+commit 031516123d25a12808ab4e56ea8deda74946cdcd
+Author: Koen Kooi <koen@dominion.thruhere.net>
+Date: Wed Jan 26 12:04:36 2011 +0100
+
+ Revert "Set a large CRTC upper limit to not prune larger resolutions"
+
+ Picture is garbled after switching resolutions, so revert it.
+
+ Virtual size too big, revert the commit 9c4d7592dcb7dc20a48a6f941d9d94bd73d34153.
+
+diff --git a/src/omapfb-crtc.c b/src/omapfb-crtc.c
+index 9aaa52f..cbeff35 100644
+--- a/src/omapfb-crtc.c
++++ b/src/omapfb-crtc.c
+@@ -190,13 +190,13 @@ OMAPFBCRTCInit(ScrnInfoPtr pScrn)
+ * In practise, this doesn't seem to be supported.
+ * (no way to setup the overlay offset/base address)
+ */
+- /* FIXME: figure out what makes sense here. A known max resolution?
+- * framebuffer size?
+- */
+ xf86CrtcSetSizeRange(pScrn,
+- 8, 8, 2048, 2048);
++ 8, 8,
++ ofb->state_info.xres_virtual,
++ ofb->state_info.yres_virtual);
+
+ ofb->crtc = xf86CrtcCreate(pScrn, &OMAPFBCrtcFuncs);
++
+ }
+
+
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/omap-revert-set-virtual-size.patch b/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/omap-revert-set-virtual-size.patch
new file mode 100644
index 0000000000..a3fd0d5f90
--- /dev/null
+++ b/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/omap-revert-set-virtual-size.patch
@@ -0,0 +1,23 @@
+commit cbae688d7df59938ccb4af534ec2ff75cbbe9221
+Author: Koen Kooi <koen@dominion.thruhere.net>
+Date: Wed Jan 26 13:27:20 2011 +0100
+
+ Revert "Set virtual size when configuring framebuffer"
+
+ Virtual size too big, so revert it.
+
+ This reverts commit 2653ef07883fbd1a5e7025f9300cf89b79ba429a.
+
+diff --git a/src/omapfb-crtc.c b/src/omapfb-crtc.c
+index cbeff35..9655db2 100644
+--- a/src/omapfb-crtc.c
++++ b/src/omapfb-crtc.c
+@@ -98,8 +98,6 @@ OMAPFBCrtcCommitChangeMode (xf86CrtcPtr crtc)
+ v = ofb->state_info;
+ v.xres = mode->HDisplay;
+ v.yres = mode->VDisplay;
+- v.xres_virtual = crtc->scrn->virtualX;
+- v.yres_virtual = crtc->scrn->virtualY;
+ v.activate = FB_ACTIVATE_NOW;
+ v.pixclock = KHZ2PICOS(mode->Clock ? mode->Clock : 56000);
+ v.left_margin = mode->HTotal - mode->HSyncEnd;
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb_git.bb b/meta/recipes-graphics/xorg-driver/xf86-video-omapfb_git.bb
index 2d9875e7e0..2714786acd 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb_git.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-video-omapfb_git.bb
@@ -1,6 +1,10 @@
require xf86-driver-common.inc
-DESCRIPTION = "X.Org X server -- OMAP display driver"
+SUMMARY = "X.Org X server -- Texas Instruments OMAP framebuffer driver"
+
+DESCRIPTION = "omapfb driver supports the basic Texas Instruments OMAP \
+framebuffer."
+
LICENSE = "MIT-X"
LIC_FILES_CHKSUM = "file://src/omapfb-driver.c;beginline=1;endline=30;md5=a44c2a37e04d1c2c5f0313afb493f833"
DEPENDS += "virtual/libx11"
@@ -10,6 +14,10 @@ PR = "r1"
PV = "0.1.1+git${SRCPV}"
SRC_URI = "git://git.pingu.fi/xf86-video-omapfb.git;protocol=http \
+ file://omap-revert-set-CRTC-limit.patch \
+ file://omap-revert-set-virtual-size.patch \
+ file://omap-force-plain-mode.patch \
+ file://omap-blacklist-tv-out.patch \
"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.3.0.bb b/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.3.0.bb
index 75274131a4..474c77950a 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.3.0.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.3.0.bb
@@ -4,7 +4,13 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=e5418e7a75e21268637984e70265e146"
EXTRA_OECONF += "--disable-xvmc"
-DESCRIPTION = "X.Org X server -- Generic Vesa display driver"
+SUMMARY = "X.Org X server -- Generic Vesa video driver"
+
+DESCRIPTION = "vesa is an Xorg driver for generic VESA video cards. It \
+can drive most VESA-compatible video cards, but only makes use of the \
+basic standard VESA core that is common to these cards. The driver \
+supports depths 8, 15 16 and 24."
+
DEPENDS += "virtual/libx11 libxvmc drm xf86driproto glproto \
virtual/libgl xineramaproto xf86driproto libpciaccess"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-vmware_11.0.3.bb b/meta/recipes-graphics/xorg-driver/xf86-video-vmware_11.0.3.bb
index c76248f6d1..a0f6041392 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-video-vmware_11.0.3.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-video-vmware_11.0.3.bb
@@ -1,6 +1,8 @@
require xf86-video-common.inc
-DESCRIPTION = "X.Org X server -- VMware SVGA II display driver"
+SUMMARY = "X.Org X server -- VMware SVGA display driver"
+
+DESCRIPTION = "vmware is an Xorg driver for VMware virtual video cards."
LIC_FILES_CHKSUM = "file://COPYING;md5=5fcd7d437a959a15fbee8707747c6b53"
diff --git a/meta/recipes-graphics/xorg-font/encodings_1.0.4.bb b/meta/recipes-graphics/xorg-font/encodings_1.0.4.bb
index a5d901316f..897f0fa118 100644
--- a/meta/recipes-graphics/xorg-font/encodings_1.0.4.bb
+++ b/meta/recipes-graphics/xorg-font/encodings_1.0.4.bb
@@ -1,4 +1,8 @@
-DESCRIPTION = "The XFree86/Xorg encoding files"
+SUMMARY = "The Xorg font encoding files"
+
+DESCRIPTION = "The encodings that map to specific characters for a \
+number of Xorg and common fonts."
+
require xorg-font-common.inc
LICENSE = "Public Domain"
LIC_FILES_CHKSUM = "file://COPYING;md5=9da93f2daf2d5572faa2bfaf0dbd9e76"
diff --git a/meta/recipes-graphics/xorg-font/font-alias_1.0.3.bb b/meta/recipes-graphics/xorg-font/font-alias_1.0.3.bb
index f3b3716355..a1c3c63dc7 100644
--- a/meta/recipes-graphics/xorg-font/font-alias_1.0.3.bb
+++ b/meta/recipes-graphics/xorg-font/font-alias_1.0.3.bb
@@ -10,11 +10,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=bf0158b89be493d523d69d9f29265038 \
file://100dpi/fonts.alias;md5=85bebd6ca213aa656c301a72eb4397cb"
DEPENDS = "virtual/xserver font-util"
-RDEPENDS = "encodings font-util"
-RDEPENDS_virtclass-native = "font-util"
+RDEPENDS_${PN} = "encodings font-util"
+RDEPENDS_${PN}_virtclass-native = "font-util"
PE = "1"
-PR = "${INC_PR}.0"
+PR = "${INC_PR}.1"
SRC_URI[md5sum] = "6d25f64796fef34b53b439c2e9efa562"
SRC_URI[sha256sum] = "8b453b2aae1cfa8090009ca037037b8c5e333550651d5a158b7264ce1d472c9a"
diff --git a/meta/recipes-graphics/xorg-font/font-util_1.2.0.bb b/meta/recipes-graphics/xorg-font/font-util_1.2.0.bb
index 972e9e3ae4..a04bd6d5a3 100644
--- a/meta/recipes-graphics/xorg-font/font-util_1.2.0.bb
+++ b/meta/recipes-graphics/xorg-font/font-util_1.2.0.bb
@@ -12,10 +12,10 @@ PACKAGE_ARCH = "${BASE_PACKAGE_ARCH}"
DEPENDS = "encodings util-macros"
DEPENDS_virtclass-native = "util-macros-native"
-RDEPENDS = "mkfontdir mkfontscale encodings"
-RDEPENDS_virtclass-native = "mkfontdir-native mkfontscale-native"
+RDEPENDS_${PN} = "mkfontdir mkfontscale encodings"
+RDEPENDS_${PN}_virtclass-native = "mkfontdir-native mkfontscale-native"
-PR = "${INC_PR}.0"
+PR = "${INC_PR}.1"
do_configure_prepend() {
sed -i "s#MAPFILES_PATH=\`pkg-config#MAPFILES_PATH=\`PKG_CONFIG_PATH=\"${STAGING_LIBDIR_NATIVE}/pkg-config\" pkg-config#g" fontutil.m4.in
diff --git a/meta/recipes-graphics/xorg-font/xorg-font-common.inc b/meta/recipes-graphics/xorg-font/xorg-font-common.inc
index c2175a9613..5d19b4c704 100644
--- a/meta/recipes-graphics/xorg-font/xorg-font-common.inc
+++ b/meta/recipes-graphics/xorg-font/xorg-font-common.inc
@@ -5,10 +5,10 @@ SECTION = "x11/fonts"
LICENSE = "MIT-X"
DEPENDS = " encodings font-alias font-util-native mkfontdir-native mkfontscale-native"
-RDEPENDS = "encodings font-util font-alias"
+RDEPENDS_${PN} = "encodings font-util font-alias"
XORG_PN = "${BPN}"
-INC_PR = "r1"
+INC_PR = "r2"
SRC_URI = "${XORG_MIRROR}/individual/font/${XORG_PN}-${PV}.tar.bz2"
S = "${WORKDIR}/${XORG_PN}-${PV}"
diff --git a/meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb b/meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb
index 26a64cdd66..86d61944bc 100644
--- a/meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb
+++ b/meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb
@@ -1,4 +1,5 @@
-DESCRIPTION = "Xorg minimal fonts data"
+SUMMARY = "Xorg minimal fonts data"
+DESCRIPTION = "Minimal fonts required by X.org."
HOMEPAGE = "http://www.x.org"
BUGTRACKER = "n/a"
diff --git a/meta/recipes-graphics/xorg-lib/libdmx_1.1.0.bb b/meta/recipes-graphics/xorg-lib/libdmx_1.1.0.bb
deleted file mode 100644
index 11845cc6b1..0000000000
--- a/meta/recipes-graphics/xorg-lib/libdmx_1.1.0.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require xorg-lib-common.inc
-
-DESCRIPTION = "X11 Distributed Multihead extension library"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4641deddaa80fe7ca88e944e1fd94a94 \
- file://src/dmx.c;endline=33;md5=79ff7aacf716dafea0d490316f998a11"
-
-DEPENDS += "libxext dmxproto"
-PR = "r1"
-PE = "1"
-
-SRC_URI[md5sum] = "a2fcf0382837888d3781b714489a8999"
-SRC_URI[sha256sum] = "1904a8f848cc5d76105cb07707890aca095540a37fb0a63d359f71da51d3e2d5"
diff --git a/meta/recipes-graphics/xorg-lib/libdmx_1.1.1.bb b/meta/recipes-graphics/xorg-lib/libdmx_1.1.1.bb
new file mode 100644
index 0000000000..cb49880680
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/libdmx_1.1.1.bb
@@ -0,0 +1,21 @@
+require xorg-lib-common.inc
+
+SUMMARY = "DMX: Distributed Multihead X extension library"
+
+DESCRIPTION = "The DMX extension provides support for communication with \
+and control of Xdmx(1) server. Attributes of the Xdmx(1) server and of \
+the back-end screens attached to the server can be queried and modified \
+via this protocol."
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a3c3499231a8035efd0e004cfbd3b72a \
+ file://src/dmx.c;endline=33;md5=c43f19af03c7c8619cadc9724ed9afe1"
+
+DEPENDS += "libxext dmxproto"
+
+PR = "r0"
+PE = "1"
+
+SRC_URI[md5sum] = "75fd328fab3bd4a55cccaa6d5dfff749"
+SRC_URI[sha256sum] = "a6de6e87470bc749de02056fa38758d0e633303789830fdafc56600e75b3de18"
+
diff --git a/meta/recipes-graphics/xorg-lib/libfontenc_1.1.0.bb b/meta/recipes-graphics/xorg-lib/libfontenc_1.1.0.bb
index 2933f930df..3d900428aa 100644
--- a/meta/recipes-graphics/xorg-lib/libfontenc_1.1.0.bb
+++ b/meta/recipes-graphics/xorg-lib/libfontenc_1.1.0.bb
@@ -1,4 +1,7 @@
-DESCRIPTION = "X11 font encoding library"
+SUMMARY = "X font encoding library"
+
+DESCRIPTION = "libfontenc is a library which helps font libraries \
+portably determine and deal with different encodings of fonts."
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/libice_1.0.7.bb b/meta/recipes-graphics/xorg-lib/libice_1.0.7.bb
index 7228a0228d..0a906d85e2 100644
--- a/meta/recipes-graphics/xorg-lib/libice_1.0.7.bb
+++ b/meta/recipes-graphics/xorg-lib/libice_1.0.7.bb
@@ -1,4 +1,10 @@
-DESCRIPTION = "X11 Inter-Client Exchange library"
+SUMMARY = "ICE: Inter-Client Exchange library"
+
+DESCRIPTION = "The Inter-Client Exchange (ICE) protocol provides a \
+generic framework for building protocols on top of reliable, byte-stream \
+transport connections. It provides basic mechanisms for setting up and \
+shutting down connections, for performing authentication, for \
+negotiating versions, and for reporting errors. "
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/libpciaccess_0.12.0.bb b/meta/recipes-graphics/xorg-lib/libpciaccess_0.12.0.bb
index b68f3ad2c0..d7417a222a 100644
--- a/meta/recipes-graphics/xorg-lib/libpciaccess_0.12.0.bb
+++ b/meta/recipes-graphics/xorg-lib/libpciaccess_0.12.0.bb
@@ -1,4 +1,7 @@
-DESCRIPTION = "Generic PCI access library"
+SUMMARY = "Generic PCI access library for X"
+
+DESCRIPTION = "libpciaccess provides functionality for X to access the \
+PCI bus and devices in a platform-independant way."
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/libsm_1.2.0.bb b/meta/recipes-graphics/xorg-lib/libsm_1.2.0.bb
index 5ce01b7e5b..bb384aa2f6 100644
--- a/meta/recipes-graphics/xorg-lib/libsm_1.2.0.bb
+++ b/meta/recipes-graphics/xorg-lib/libsm_1.2.0.bb
@@ -1,4 +1,10 @@
-DESCRIPTION = "X11 Session management library"
+SUMMARY = "SM: Session Management library"
+
+DESCRIPTION = "The Session Management Library (SMlib) is a low-level \"C\" \
+language interface to XSMP. The purpose of the X Session Management \
+Protocol (XSMP) is to provide a uniform mechanism for users to save and \
+restore their sessions. A session is a group of clients, each of which \
+has a particular state."
require xorg-lib-common.inc
@@ -7,7 +13,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d98446615b962372d6a46057170043fa"
DEPENDS += "libice xproto xtrans e2fsprogs"
-PR = "r0"
+PR = "r1"
PE = "1"
XORG_PN = "libSM"
diff --git a/meta/recipes-graphics/xorg-lib/libx11-diet_1.3.bb b/meta/recipes-graphics/xorg-lib/libx11-diet_1.3.bb
index a76aba16e4..fee44ae8ba 100644
--- a/meta/recipes-graphics/xorg-lib/libx11-diet_1.3.bb
+++ b/meta/recipes-graphics/xorg-lib/libx11-diet_1.3.bb
@@ -1,5 +1,8 @@
require libx11.inc
+DESCRIPTION += " Support for XCB, UDC, XCMS and XLOCALE is disabled in \
+this version."
+
PR = "r1"
SRC_URI += "file://x11_disable_makekeys.patch;patch=1 \
diff --git a/meta/recipes-graphics/xorg-lib/libx11-diet_git.bb b/meta/recipes-graphics/xorg-lib/libx11-diet_git.bb
index d1f0a753fa..458ba41a3e 100644
--- a/meta/recipes-graphics/xorg-lib/libx11-diet_git.bb
+++ b/meta/recipes-graphics/xorg-lib/libx11-diet_git.bb
@@ -1,6 +1,9 @@
require libx11.inc
require libx11_git.inc
+DESCRIPTION += " Support for XCB, UDC, XCMS and XLOCALE is disabled in \
+this version."
+
SRC_URI += "file://X18NCMSstubs.diff;patch=1 \
file://fix-disable-xlocale.diff;patch=1 \
file://fix-utf8-wrong-define.patch;patch=1"
diff --git a/meta/recipes-graphics/xorg-lib/libx11-trim_1.3.4.bb b/meta/recipes-graphics/xorg-lib/libx11-trim_1.3.4.bb
index 190217d387..b0134989ae 100644
--- a/meta/recipes-graphics/xorg-lib/libx11-trim_1.3.4.bb
+++ b/meta/recipes-graphics/xorg-lib/libx11-trim_1.3.4.bb
@@ -1,5 +1,7 @@
require libx11.inc
+DESCRIPTION += " Support for XCB, and XCMS is disabled in this version."
+
LICENSE = "MIT & MIT-style & BSD"
LIC_FILES_CHKSUM = "file://COPYING;md5=bf75bfe4d05068311b5e6862d4b5f2c5"
diff --git a/meta/recipes-graphics/xorg-lib/libx11-trim_git.bb b/meta/recipes-graphics/xorg-lib/libx11-trim_git.bb
index 99426c3c5d..7044a0e3a3 100644
--- a/meta/recipes-graphics/xorg-lib/libx11-trim_git.bb
+++ b/meta/recipes-graphics/xorg-lib/libx11-trim_git.bb
@@ -1,6 +1,8 @@
require libx11.inc
require libx11_git.inc
+DESCRIPTION += " Support for XCB, and XCMS is disabled in this version."
+
PR = "r2"
DEPENDS += "libxcb xproto xextproto xtrans libxau kbproto inputproto xf86bigfontproto xproto-native"
diff --git a/meta/recipes-graphics/xorg-lib/libx11.inc b/meta/recipes-graphics/xorg-lib/libx11.inc
index f8c17b1a6d..267a03a3be 100644
--- a/meta/recipes-graphics/xorg-lib/libx11.inc
+++ b/meta/recipes-graphics/xorg-lib/libx11.inc
@@ -1,4 +1,8 @@
-DESCRIPTION = "X11 protocol and utility library"
+SUMMARY = "Xlib: C Language X Interface library"
+
+DESCRIPTION = "This package provides a client interface to the X Window \
+System, otherwise known as 'Xlib'. It provides a complete API for the \
+basic functions of the window system."
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/libxau_1.0.6.bb b/meta/recipes-graphics/xorg-lib/libxau_1.0.6.bb
index 98c84e6dd6..79078efddd 100644
--- a/meta/recipes-graphics/xorg-lib/libxau_1.0.6.bb
+++ b/meta/recipes-graphics/xorg-lib/libxau_1.0.6.bb
@@ -1,4 +1,8 @@
-DESCRIPTION = "A Sample Authorization Protocol for X"
+SUMMARY = "Xau: X Authority Database library"
+
+DESCRIPTION = "libxau provides the main interfaces to the X11 \
+authorisation handling, which controls authorisation for X connections, \
+both client-side and server-side."
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/libxcalibrate_git.bb b/meta/recipes-graphics/xorg-lib/libxcalibrate_git.bb
index 8ca731b2ef..f27c595ec7 100644
--- a/meta/recipes-graphics/xorg-lib/libxcalibrate_git.bb
+++ b/meta/recipes-graphics/xorg-lib/libxcalibrate_git.bb
@@ -1,4 +1,7 @@
-DESCRIPTION = "Touchscreen calibration client library"
+SUMMARY = "XCalibrate: Touchscreen calibration library"
+
+DESCRIPTION = "libXCalibrate is a library for performing touchscreen \
+calibration with the kdrive tslib touchscreen driver."
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.3.bb b/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.3.bb
index e6a161178f..deaa36624a 100644
--- a/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.3.bb
+++ b/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.3.bb
@@ -1,4 +1,13 @@
-DESCRIPTION = "X Composite extension library."
+SUMMARY = "Xcomposite: X Composite extension library"
+
+DESCRIPTION = "The composite extension provides three related \
+mechanisms: per-hierarchy storage, automatic shadow update, and external \
+parent. In per-hierarchy storage, the rendering of an entire hierarchy \
+of windows is redirected to off-screen storage. In automatic shadow \
+update, when a hierarchy is rendered off-screen, the X server provides \
+an automatic mechanism for presenting those contents within the parent \
+window. In external parent, a mechanism for providing redirection of \
+compositing transformations through a client."
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/libxcursor_1.1.11.bb b/meta/recipes-graphics/xorg-lib/libxcursor_1.1.11.bb
index 0506079afe..a8dee4c0c3 100644
--- a/meta/recipes-graphics/xorg-lib/libxcursor_1.1.11.bb
+++ b/meta/recipes-graphics/xorg-lib/libxcursor_1.1.11.bb
@@ -1,4 +1,10 @@
-DESCRIPTION = "X cursor management library"
+SUMMARY = "Xcursor: X Cursor management library"
+
+DESCRIPTION = "Xcursor is a simple library designed to help locate and \
+load cursors. Cursors can be loaded from files or memory. A library of \
+common cursors exists which map to the standard X cursor names. Cursors \
+can exist in several sizes and the library automatically picks the best \
+size."
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/libxdamage_1.1.3.bb b/meta/recipes-graphics/xorg-lib/libxdamage_1.1.3.bb
index f2ed669e6a..81f90ba2db 100644
--- a/meta/recipes-graphics/xorg-lib/libxdamage_1.1.3.bb
+++ b/meta/recipes-graphics/xorg-lib/libxdamage_1.1.3.bb
@@ -1,4 +1,15 @@
-DESCRIPTION = "X11 damaged region extension library"
+SUMMARY = "Xdamage: X Damage extension library"
+
+DESCRIPTION = "'Damage' is a term that describes changes make to pixel \
+contents of windows and pixmaps. Damage accumulates as drawing occurs \
+in the drawable. Each drawing operation 'damages' one or more \
+rectangular areas within the drawable. The rectangles are guaranteed to \
+include the set of pixels modified by each operation, but may include \
+significantly more than just those pixels. The DAMAGE extension allows \
+applications to either receive the raw rectangles as a stream of events, \
+or to have them partially processed within the X server to reduce the \
+amount of data transmitted as well as reduce the processing latency once \
+the repaint operation has started."
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.0.bb b/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.0.bb
index 344bdb1cc4..d897dab0f5 100644
--- a/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.0.bb
+++ b/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.0.bb
@@ -1,4 +1,10 @@
-DESCRIPTION = "X Display Manager Control Protocol library"
+SUMMARY = "XDMCP: X Display Manager Control Protocol library"
+
+DESCRIPTION = "The purpose of the X Display Manager Control Protocol \
+(XDMCP) is to provide a uniform mechanism for an autonomous display to \
+request login service from a remote host. An X terminal (screen, \
+keyboard, mouse, processor, network interface) is a prime example of an \
+autonomous display."
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/libxext_1.2.0.bb b/meta/recipes-graphics/xorg-lib/libxext_1.2.0.bb
index 75417c2996..b907b9f9da 100644
--- a/meta/recipes-graphics/xorg-lib/libxext_1.2.0.bb
+++ b/meta/recipes-graphics/xorg-lib/libxext_1.2.0.bb
@@ -1,4 +1,12 @@
-DESCRIPTION = "X11 miscellaneous extension library"
+SUMMARY = "XExt: X Extension library"
+
+DESCRIPTION = "libXext provides an X Window System client interface to \
+several extensions to the X protocol. The supported protocol extensions \
+are DOUBLE-BUFFER, DPMS, Extended-Visual-Information, LBX, MIT_SHM, \
+MIT_SUNDRY-NONSTANDARD, Multi-Buffering, SECURITY, SHAPE, SYNC, TOG-CUP, \
+XC-APPGROUP, XC-MISC, XTEST. libXext also provides a small set of \
+utility functions to aid authors of client APIs for X protocol \
+extensions."
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/libxext_git.bb b/meta/recipes-graphics/xorg-lib/libxext_git.bb
index d0b3d7fbf5..66bbbcb300 100644
--- a/meta/recipes-graphics/xorg-lib/libxext_git.bb
+++ b/meta/recipes-graphics/xorg-lib/libxext_git.bb
@@ -1,6 +1,15 @@
require xorg-lib-common.inc
-DESCRIPTION = "X11 miscellaneous extension library"
+SUMMARY = "XExt: X Extension library"
+
+DESCRIPTION = "libXext provides an X Window System client interface to \
+several extensions to the X protocol. The supported protocol extensions \
+are DOUBLE-BUFFER, DPMS, Extended-Visual-Information, LBX, MIT_SHM, \
+MIT_SUNDRY-NONSTANDARD, Multi-Buffering, SECURITY, SHAPE, SYNC, TOG-CUP, \
+XC-APPGROUP, XC-MISC, XTEST. libXext also provides a small set of \
+utility functions to aid authors of client APIs for X protocol \
+extensions."
+
DEPENDS += "xproto virtual/libx11 xextproto libxau libxdmcp"
PROVIDES = "xext"
PE = "1"
diff --git a/meta/recipes-graphics/xorg-lib/libxfixes_4.0.5.bb b/meta/recipes-graphics/xorg-lib/libxfixes_4.0.5.bb
index 8ecf1f8502..a69d5fda9c 100644
--- a/meta/recipes-graphics/xorg-lib/libxfixes_4.0.5.bb
+++ b/meta/recipes-graphics/xorg-lib/libxfixes_4.0.5.bb
@@ -1,4 +1,9 @@
-DESCRIPTION = "X Fixes extension library."
+SUMMARY = "XFixes: X Fixes extension library."
+
+DESCRIPTION = "X applications have often needed to work around various \
+shortcomings in the core X window system. This extension is designed to \
+provide the minimal server-side support necessary to eliminate problems \
+caused by these workarounds."
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/libxfont_1.4.3.bb b/meta/recipes-graphics/xorg-lib/libxfont_1.4.3.bb
index 2e19f8ff35..2f9516c2fc 100644
--- a/meta/recipes-graphics/xorg-lib/libxfont_1.4.3.bb
+++ b/meta/recipes-graphics/xorg-lib/libxfont_1.4.3.bb
@@ -1,4 +1,8 @@
-DESCRIPTION = "X11 font rasterisation library"
+SUMMARY = "XFont: X Font rasterisation library"
+
+DESCRIPTION = "libXfont provides various services for X servers, most \
+notably font selection and rasterisation (through external libraries \
+such as freetype)."
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/libxfontcache_1.0.5.bb b/meta/recipes-graphics/xorg-lib/libxfontcache_1.0.5.bb
index 5ee42befe2..b254eb94b5 100644
--- a/meta/recipes-graphics/xorg-lib/libxfontcache_1.0.5.bb
+++ b/meta/recipes-graphics/xorg-lib/libxfontcache_1.0.5.bb
@@ -1,6 +1,10 @@
require xorg-lib-common.inc
-DESCRIPTION = "X-TrueType font cache extension client library"
+SUMMARY = "XFontCache: X Font Cache extension library"
+
+DESCRIPTION = "FontCache is an extension that is used by X-TrueType to cache \
+information about fonts."
+
DEPENDS += "libxext fontcacheproto"
LIC_FILES_CHKSUM = "file://COPYING;md5=62a75d5d3da40f1f6eb1cbe3bcc0a5d0"
PR = "r0"
diff --git a/meta/recipes-graphics/xorg-lib/libxft_2.2.0.bb b/meta/recipes-graphics/xorg-lib/libxft_2.2.0.bb
index fc9c0a7f03..1a56702e53 100644
--- a/meta/recipes-graphics/xorg-lib/libxft_2.2.0.bb
+++ b/meta/recipes-graphics/xorg-lib/libxft_2.2.0.bb
@@ -1,4 +1,14 @@
-DESCRIPTION = "FreeType-based font drawing library for X"
+SUMMARY = "XFt: X FreeType libary"
+
+DESCRIPTION = "Xft was designed to provide good support for scalable \
+fonts, and to do so efficiently. Unlike the core fonts system, it \
+supports features such as anti-aliasing and sub-pixel rasterisation. \
+Perhaps more importantly, it gives applications full control over the \
+way glyphs are rendered, making fine typesetting and WYSIWIG display \
+possible. Finally, it allows applications to use fonts that are not \
+installed system-wide for displaying documents with embedded fonts. Xft \
+is not compatible with the core fonts system: usage of Xft requires \
+fairly extensive changes to toolkits (user-interface libraries)."
require xorg-lib-common.inc
@@ -13,10 +23,9 @@ PE = "1"
XORG_PN = "libXft"
-python do_package() {
+python () {
if bb.data.getVar('DEBIAN_NAMES', d, 1):
bb.data.setVar('PKG_${PN}', 'libxft2', d)
- bb.build.exec_func('package_do_package', d)
}
FILES_${PN} = "${libdir}/lib*${SOLIBS}"
diff --git a/meta/recipes-graphics/xorg-lib/libxi_1.4.0.bb b/meta/recipes-graphics/xorg-lib/libxi_1.4.0.bb
index 7820653480..c7fb9d5ac8 100644
--- a/meta/recipes-graphics/xorg-lib/libxi_1.4.0.bb
+++ b/meta/recipes-graphics/xorg-lib/libxi_1.4.0.bb
@@ -1,6 +1,11 @@
require xorg-lib-common.inc
-DESCRIPTION = "X11 Input extension library"
+SUMMARY = "XI: X Input extension library"
+
+DESCRIPTION = "libxi is an extension to the X11 protocol to support \
+input devices other than the core X keyboard and pointer. It allows \
+client programs to select input from these devices independently from \
+each other and independently from the core devices."
LICENSE = "MIT & MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=17b064789fab936a1c58c4e13d965b0f \
diff --git a/meta/recipes-graphics/xorg-lib/libxi_git.bb b/meta/recipes-graphics/xorg-lib/libxi_git.bb
index 30c1778c3e..fac32365e1 100644
--- a/meta/recipes-graphics/xorg-lib/libxi_git.bb
+++ b/meta/recipes-graphics/xorg-lib/libxi_git.bb
@@ -1,6 +1,12 @@
require xorg-lib-common.inc
-DESCRIPTION = "X11 Input extension library"
+SUMMARY = "XI: X Input extension library"
+
+DESCRIPTION = "libxi is an extension to the X11 protocol to support \
+input devices other than the core X keyboard and pointer. It allows \
+client programs to select input from these devices independently from \
+each other and independently from the core devices."
+
DEPENDS += "libxext inputproto"
PE = "1"
PV = "1.2.99.5+gitr${SRCPV}"
diff --git a/meta/recipes-graphics/xorg-lib/libxinerama_1.1.1.bb b/meta/recipes-graphics/xorg-lib/libxinerama_1.1.1.bb
index a4048b7423..cbd7d4c34a 100644
--- a/meta/recipes-graphics/xorg-lib/libxinerama_1.1.1.bb
+++ b/meta/recipes-graphics/xorg-lib/libxinerama_1.1.1.bb
@@ -1,6 +1,10 @@
require xorg-lib-common.inc
-DESCRIPTION = "X11 Xinerama extension library"
+SUMMARY = "Xinerama: Xinerama extension library"
+
+DESCRIPTION = "Xinerama is a simple library designed to interface the \
+Xinerama Extension for retrieving information about physical output \
+devices which may be combined into a single logical X screen."
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=6f4f634d1643a2e638bba3fcd19c2536 \
diff --git a/meta/recipes-graphics/xorg-lib/libxkbfile_1.0.7.bb b/meta/recipes-graphics/xorg-lib/libxkbfile_1.0.7.bb
index 17bbca0de1..ff2f90f4e4 100644
--- a/meta/recipes-graphics/xorg-lib/libxkbfile_1.0.7.bb
+++ b/meta/recipes-graphics/xorg-lib/libxkbfile_1.0.7.bb
@@ -1,4 +1,7 @@
-DESCRIPTION = "X11 keyboard file manipulation library"
+SUMMARY = "XKB: X Keyboard File manipulation library"
+
+DESCRIPTION = "libxkbfile provides an interface to read and manipulate \
+description files for XKB, the X11 keyboard configuration extension."
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/libxmu_1.1.0.bb b/meta/recipes-graphics/xorg-lib/libxmu_1.1.0.bb
index bea21791d5..59f2c28045 100644
--- a/meta/recipes-graphics/xorg-lib/libxmu_1.1.0.bb
+++ b/meta/recipes-graphics/xorg-lib/libxmu_1.1.0.bb
@@ -1,4 +1,12 @@
-DESCRIPTION = "X11 miscellaneous utility library"
+SUMMARY = "Xmu and Xmuu: X Miscellaneous Utility libraries"
+
+DESCRIPTION = "The Xmu Library is a collection of miscellaneous (some \
+might say random) utility functions that have been useful in building \
+various applications and widgets. This library is required by the Athena \
+Widgets. A subset of the functions that do not rely on the Athena \
+Widgets (libXaw) or X Toolkit Instrinsics (libXt) are provided in a \
+second library, libXmuu."
+
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/libxp_1.0.0.bb b/meta/recipes-graphics/xorg-lib/libxp_1.0.0.bb
deleted file mode 100644
index 5b412eced5..0000000000
--- a/meta/recipes-graphics/xorg-lib/libxp_1.0.0.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-require xorg-lib-common.inc
-
-DESCRIPTION = "X Printing Extension (Xprint) client library"
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=329e54eb6793b3d4830a4f6f1ca16e3f \
- file://src/XpPage.c;beginline=2;endline=37;md5=886b68ac3721003d54abfbd82bafc5ad"
-
-DEPENDS += "libxext libxau printproto"
-PR = "r1"
-PE = "1"
-
-XORG_PN = "libXp"
-
-CFLAGS_append += " -I ${S}/include/X11/XprintUtil -I ${S}/include/X11/extensions"
-
-SRC_URI[md5sum] = "0f4ac39108c1ae8c443cdfac259b58fa"
-SRC_URI[sha256sum] = "7e64b1550ce85b05762e960459ac676a0406c786756b200ff29c57f84bce9cae"
diff --git a/meta/recipes-graphics/xorg-lib/libxp_1.0.1.bb b/meta/recipes-graphics/xorg-lib/libxp_1.0.1.bb
new file mode 100644
index 0000000000..a19f561fa7
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/libxp_1.0.1.bb
@@ -0,0 +1,21 @@
+require xorg-lib-common.inc
+
+SUMMARY = "XP: X Printing extension library"
+
+DESCRIPTION = "libXp provides public APIs to allow client applications \
+to render to non-display devices, making use of the X Print Service."
+
+LICENSE = "MIT & MIT-style"
+LIC_FILES_CHKSUM = "file://COPYING;md5=9504a1264f5ddd4949254a57c0f8d6bb \
+ file://src/XpPage.c;beginline=2;endline=35;md5=2b7d3d2ba5505b19271cf31b6918997e"
+
+DEPENDS += "libxext libxau printproto"
+PR = "r0"
+PE = "1"
+
+XORG_PN = "libXp"
+
+CFLAGS_append += " -I ${S}/include/X11/XprintUtil -I ${S}/include/X11/extensions"
+
+SRC_URI[md5sum] = "7ae1d63748e79086bd51a633da1ff1a9"
+SRC_URI[sha256sum] = "71d1f260005616d646b8c8788365f2b7d93911dac57bb53b65753d9f9e6443d2"
diff --git a/meta/recipes-graphics/xorg-lib/libxpm_3.5.9.bb b/meta/recipes-graphics/xorg-lib/libxpm_3.5.9.bb
index ecb8ad71d9..1a548fa57a 100644
--- a/meta/recipes-graphics/xorg-lib/libxpm_3.5.9.bb
+++ b/meta/recipes-graphics/xorg-lib/libxpm_3.5.9.bb
@@ -1,6 +1,12 @@
require xorg-lib-common.inc
-DESCRIPTION = "X11 Pixmap library"
+SUMMARY = "Xpm: X Pixmap extension library"
+
+DESCRIPTION = "libXpm provides support and common operation for the XPM \
+pixmap format, which is commonly used in legacy X applications. XPM is \
+an extension of the monochrome XBM bitmap specificied in the X \
+protocol."
+
LICENSE = "X-BSD"
LIC_FILES_CHKSUM = "file://COPYING;md5=3e07763d16963c3af12db271a31abaa5"
DEPENDS += "libxext libsm libxt"
diff --git a/meta/recipes-graphics/xorg-lib/libxprintapputil_1.0.1.bb b/meta/recipes-graphics/xorg-lib/libxprintapputil_1.0.1.bb
index cc547909a4..0f3892cf69 100644
--- a/meta/recipes-graphics/xorg-lib/libxprintapputil_1.0.1.bb
+++ b/meta/recipes-graphics/xorg-lib/libxprintapputil_1.0.1.bb
@@ -1,6 +1,11 @@
require xorg-lib-common.inc
-DESCRIPTION = "Xprint job utility client library"
+SUMMARY = "Xprint: Xprint job utility library"
+
+DESCRIPTION = "libxprintapputil provides utility Xpau APIs allowing \
+client applications to access information about and control Xprint jobs \
+from an Xprint server."
+
DEPENDS += "libxp libxt libxprintutil"
PR = "r1"
LIC_FILES_CHKSUM = "file://src/xpapputil.c;beginline=2;endline=27;md5=be811cca90200613a672dc96206a767b"
diff --git a/meta/recipes-graphics/xorg-lib/libxprintutil_1.0.1.bb b/meta/recipes-graphics/xorg-lib/libxprintutil_1.0.1.bb
index a499fe294e..8e3507c380 100644
--- a/meta/recipes-graphics/xorg-lib/libxprintutil_1.0.1.bb
+++ b/meta/recipes-graphics/xorg-lib/libxprintutil_1.0.1.bb
@@ -1,7 +1,12 @@
require xorg-lib-common.inc
LIC_FILES_CHKSUM = "file://src/xprintutil.c;endline=29;md5=22d5a98494dd356a2c6c9c355886f3af"
-DESCRIPTION = "Xprint printer utility client library"
+SUMMARY = "Xprint: Xprint printer utility library"
+
+DESCRIPTION = "libxprintutil provides utility Xpu APIs allowing client \
+applications to access and manipulate information about printer \
+capabilities from an Xprint server."
+
DEPENDS += "libxp libxt"
PR = "r1"
PE = "1"
diff --git a/meta/recipes-graphics/xorg-lib/libxrandr_1.3.1.bb b/meta/recipes-graphics/xorg-lib/libxrandr_1.3.1.bb
index 789d394011..917fe2067f 100644
--- a/meta/recipes-graphics/xorg-lib/libxrandr_1.3.1.bb
+++ b/meta/recipes-graphics/xorg-lib/libxrandr_1.3.1.bb
@@ -1,4 +1,10 @@
-DESCRIPTION = "X11 Resize and Rotate extension library"
+SUMMARY = "XRandR: X Resize, Rotate and Reflect extension library"
+
+DESCRIPTION = "The X Resize, Rotate and Reflect Extension, called RandR \
+for short, brings the ability to resize, rotate and reflect the root \
+window of a screen. It is based on the X Resize and Rotate Extension as \
+specified in the Proceedings of the 2001 Usenix Technical Conference \
+[RANDR]."
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/libxrender_0.9.6.bb b/meta/recipes-graphics/xorg-lib/libxrender_0.9.6.bb
index 22418e3f82..a5c5ead27e 100644
--- a/meta/recipes-graphics/xorg-lib/libxrender_0.9.6.bb
+++ b/meta/recipes-graphics/xorg-lib/libxrender_0.9.6.bb
@@ -1,4 +1,10 @@
-DESCRIPTION = "X11 Rendering Extension client library"
+SUMMARY = "XRender: X Rendering Extension library"
+
+DESCRIPTION = "The X Rendering Extension (Render) introduces digital \
+image composition as the foundation of a new rendering model within the \
+X Window System. Rendering geometric figures is accomplished by \
+client-side tessellation into either triangles or trapezoids. Text is \
+drawn by loading glyphs into the server and rendering sets of them."
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/libxres_1.0.5.bb b/meta/recipes-graphics/xorg-lib/libxres_1.0.5.bb
index 5d8f946e87..3d9e8fc55b 100644
--- a/meta/recipes-graphics/xorg-lib/libxres_1.0.5.bb
+++ b/meta/recipes-graphics/xorg-lib/libxres_1.0.5.bb
@@ -1,4 +1,9 @@
-DESCRIPTION = "X11 Resource extension library"
+SUMMARY = "XRes: X Resource extension library"
+
+DESCRIPTION = "libXRes provides an X Window System client interface to \
+the Resource extension to the X protocol. The Resource extension allows \
+for X clients to see and monitor the X resource usage of various clients \
+(pixmaps, et al)."
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.1.bb b/meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.1.bb
index 3df0aca85d..453c68f48a 100644
--- a/meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.1.bb
+++ b/meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.1.bb
@@ -1,6 +1,14 @@
require xorg-lib-common.inc
-DESCRIPTION = "X Screen Saver extension library"
+SUMMARY = "Xscrnsaver: X Screen Saver extension library"
+
+DESCRIPTION = "The X Window System provides support for changing the \
+image on a display screen after a user-settable period of inactivity to \
+avoid burning the cathode ray tube phosphors. However, no interfaces are \
+provided for the user to control the image that is drawn. This extension \
+allows an external \"screen saver\" client to detect when the alternate \
+image is to be displayed and to provide the graphics."
+
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=21fd154ee757813632ada871a34113fb"
diff --git a/meta/recipes-graphics/xorg-lib/libxt_1.0.9.bb b/meta/recipes-graphics/xorg-lib/libxt_1.0.9.bb
index 7a62e7ba2d..63119ae1c5 100644
--- a/meta/recipes-graphics/xorg-lib/libxt_1.0.9.bb
+++ b/meta/recipes-graphics/xorg-lib/libxt_1.0.9.bb
@@ -1,4 +1,14 @@
-DESCRIPTION = "X11 toolkit intrinsics library"
+SUMMARY = "Xt: X Toolkit Intrinsics library"
+
+DESCRIPTION = "The Intrinsics are a programming library tailored to the \
+special requirements of user interface construction within a network \
+window system, specifically the X Window System. The Intrinsics and a \
+widget set make up an X Toolkit. The Intrinsics provide the base \
+mechanism necessary to build a wide variety of interoperating widget \
+sets and application environments. The Intrinsics are a layer on top of \
+Xlib, the C Library X Interface. They extend the fundamental \
+abstractions provided by the X Window System while still remaining \
+independent of any particular user interface policy or style."
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/libxtrap_1.0.0.bb b/meta/recipes-graphics/xorg-lib/libxtrap_1.0.0.bb
index 19b1c36763..4d1f791ace 100644
--- a/meta/recipes-graphics/xorg-lib/libxtrap_1.0.0.bb
+++ b/meta/recipes-graphics/xorg-lib/libxtrap_1.0.0.bb
@@ -1,6 +1,10 @@
+SUMMARY = "XTrap: X event trapping extension library"
+
+DESCRIPTION = "libXTrap provides an interface to the DEC-XTRAP \
+extension, which allows for capture and synthesis of core input events."
+
require xorg-lib-common.inc
LIC_FILES_CHKSUM = "file://COPYING;md5=fe7cbb8cc97683303f7814685cc47305"
-DESCRIPTION = "X11 event trapping extension library"
DEPENDS += "libxt trapproto libxext"
PR = "r1"
PE = "1"
diff --git a/meta/recipes-graphics/xorg-lib/libxtst_1.2.0.bb b/meta/recipes-graphics/xorg-lib/libxtst_1.2.0.bb
index 811a190fd3..2081f0ca92 100644
--- a/meta/recipes-graphics/xorg-lib/libxtst_1.2.0.bb
+++ b/meta/recipes-graphics/xorg-lib/libxtst_1.2.0.bb
@@ -1,6 +1,10 @@
require xorg-lib-common.inc
-DESCRIPTION = "X Test Extension: client side library"
+SUMMARY = "XTest: X Test extension library"
+
+DESCRIPTION = "This extension is a minimal set of client and server \
+extensions required to completely test the X11 server with no user \
+intervention."
LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=cba677ca25c42ad29ee8ff351b50ece8 \
diff --git a/meta/recipes-graphics/xorg-lib/libxv_1.0.6.bb b/meta/recipes-graphics/xorg-lib/libxv_1.0.6.bb
index 0feecb4362..f3d8d27c5c 100644
--- a/meta/recipes-graphics/xorg-lib/libxv_1.0.6.bb
+++ b/meta/recipes-graphics/xorg-lib/libxv_1.0.6.bb
@@ -1,4 +1,9 @@
-DESCRIPTION = "X11 Video extension library"
+SUMMARY = "Xv: X Video extension library"
+
+DESCRIPTION = "libXv provides an X Window System client interface to the \
+X Video extension to the X protocol. The X Video extension allows for \
+accelerated drawing of videos. Hardware adaptors are exposed to \
+clients, which may draw in a number of colourspaces, including YUV."
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/libxvmc_1.0.6.bb b/meta/recipes-graphics/xorg-lib/libxvmc_1.0.6.bb
index 6f87f72ce6..1f690b8c42 100644
--- a/meta/recipes-graphics/xorg-lib/libxvmc_1.0.6.bb
+++ b/meta/recipes-graphics/xorg-lib/libxvmc_1.0.6.bb
@@ -1,4 +1,7 @@
-DESCRIPTION = "X Video Motion Compensation extension library"
+SUMMARY = "XvMC: X Video Motion Compensation extension library"
+
+DESCRIPTION = "XvMC extends the X Video extension (Xv) and enables \
+hardware rendered motion compensation support."
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.2.bb b/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.2.bb
index cc76861ec3..8e777c3db3 100644
--- a/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.2.bb
+++ b/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.2.bb
@@ -1,6 +1,12 @@
require xorg-lib-common.inc
-DESCRIPTION = "X11 Direct Graphics Access extension library"
+SUMMARY = "XFree86-DGA: XFree86 Direct Graphics Access extension library"
+
+DESCRIPTION = "libXxf86dga provides the XFree86-DGA extension, which \
+allows direct graphics access to a framebuffer-like region, and also \
+allows relative mouse reporting, et al. It is mainly used by games and \
+emulators for games."
+
DEPENDS += "libxext xf86dgaproto"
PR = "r1"
PE = "1"
diff --git a/meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.2.bb b/meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.2.bb
deleted file mode 100644
index 12a1ad7ff1..0000000000
--- a/meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.2.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-DESCRIPTION = "X11 XFree86 miscellaneous extension library"
-
-require xorg-lib-common.inc
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=27c91ecc435bd3d2bfad868914c94b45"
-
-DEPENDS += "libxext xf86miscproto"
-PROVIDES = "xxf86misc"
-
-PR = "r0"
-PE = "1"
-
-XORG_PN = "libXxf86misc"
-
-SRC_URI[md5sum] = "51fed53e8de067d4b8666f75a0212400"
-SRC_URI[sha256sum] = "8e64b6b1bf34fcd112b1fd866d77e110b47794e825a996e4492c0ee408957cb3"
diff --git a/meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.3.bb b/meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.3.bb
new file mode 100644
index 0000000000..bda6da2aab
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.3.bb
@@ -0,0 +1,21 @@
+SUMMARY = "XFree86-Misc: XFree86 miscellaneous extension library"
+
+DESCRIPTION = "The XFree86-Misc extension, provides a means to access \
+input device configuration settings specific to the XFree86/Xorg DDX."
+
+require xorg-lib-common.inc
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=27c91ecc435bd3d2bfad868914c94b45"
+
+DEPENDS += "libxext xf86miscproto"
+PROVIDES = "xxf86misc"
+
+PR = "r0"
+PE = "1"
+
+XORG_PN = "libXxf86misc"
+
+SRC_URI[md5sum] = "6bc0bf78909fd71021c466c793d4385c"
+SRC_URI[sha256sum] = "563f4200862efd3334c33a669e0a0aae5bab31f3998db75b87a99a697cc26b5b"
+
diff --git a/meta/recipes-graphics/xorg-lib/libxxf86vm_1.1.1.bb b/meta/recipes-graphics/xorg-lib/libxxf86vm_1.1.1.bb
index 0e4e95b1e2..4066f08910 100644
--- a/meta/recipes-graphics/xorg-lib/libxxf86vm_1.1.1.bb
+++ b/meta/recipes-graphics/xorg-lib/libxxf86vm_1.1.1.bb
@@ -1,4 +1,9 @@
-DESCRIPTION = "X11 XFree86 video mode extension library"
+SUMMARY = "XFree86-VM: XFree86 video mode extension library"
+
+DESCRIPTION = "libXxf86vm provides an interface to the \
+XFree86-VidModeExtension extension, which allows client applications to \
+get and set video mode timings in extensive detail. It is used by the \
+xvidtune program in particular."
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-lib/pixman_0.20.0.bb b/meta/recipes-graphics/xorg-lib/pixman_0.20.0.bb
deleted file mode 100644
index 0ccadcd91b..0000000000
--- a/meta/recipes-graphics/xorg-lib/pixman_0.20.0.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-DESCRIPTION = "Library for lowlevel pixel operations"
-
-require xorg-lib-common.inc
-
-LICENSE = "MIT & MIT-style & Public Domain"
-LIC_FILES_CHKSUM = "file://COPYING;md5=fea989a44fb012b5e79584972a863d22 \
- file://pixman/pixman-matrix.c;endline=25;md5=ba6e8769bfaaee2c41698755af04c4be \
- file://pixman/pixman-arm-neon-asm.h;endline=24;md5=9a9cc1e51abbf1da58f4d9528ec9d49b \
- file://pixman/pixman-x64-mmx-emulation.h;beginline=4;endline=9;md5=4e32716f2efaa6c4659222667c339bb8"
-
-DEPENDS = "virtual/libx11"
-
-PR="r0"
-
-EXTRA_OECONF="--disable-gtk"
-
-SRC_URI[md5sum] = "512ec766a911142b901157ba581f6e75"
-SRC_URI[sha256sum] = "4798a9961bf38a1b25cabef0a8a73fd7dcc6b98da187ce55b1420894360188b5"
diff --git a/meta/recipes-graphics/xorg-lib/pixman_0.20.2.bb b/meta/recipes-graphics/xorg-lib/pixman_0.20.2.bb
new file mode 100644
index 0000000000..9a97c3d603
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/pixman_0.20.2.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Pixman: Pixel Manipulation library"
+
+DESCRIPTION = "Pixman provides a library for manipulating pixel regions \
+-- a set of Y-X banded rectangles, image compositing using the \
+Porter/Duff model and implicit mask generation for geometric primitives \
+including trapezoids, triangles, and rectangles."
+
+require xorg-lib-common.inc
+
+LICENSE = "MIT & MIT-style & Public Domain"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fea989a44fb012b5e79584972a863d22 \
+ file://pixman/pixman-matrix.c;endline=25;md5=ba6e8769bfaaee2c41698755af04c4be \
+ file://pixman/pixman-arm-neon-asm.h;endline=24;md5=9a9cc1e51abbf1da58f4d9528ec9d49b \
+ file://pixman/pixman-x64-mmx-emulation.h;beginline=4;endline=9;md5=4e32716f2efaa6c4659222667c339bb8"
+
+DEPENDS = "virtual/libx11"
+
+PE = "1"
+PR = "r0"
+
+EXTRA_OECONF="--disable-gtk"
+
+SRC_URI[md5sum] = "7ed10a0f0fde6853613105a99735e7e7"
+SRC_URI[sha256sum] = "30316f269a6b84c32b47545ca7fc428fd16875849fea644dc6910b3f8c33f4a9"
+
diff --git a/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.0.bb b/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.0.bb
deleted file mode 100644
index 358bf84952..0000000000
--- a/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.0.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-DESCRIPTION = "Keyboard configuration database for X Window"
-HOMEPAGE = "http://freedesktop.org/wiki/Software/XKeyboardConfig"
-BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xkeyboard-config"
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=0e7f21ca7db975c63467d2e7624a12f9"
-
-SRC_URI = "http://people.freedesktop.org/~svu/xkeyboard-config-${PV}.tar.bz2"
-
-SRC_URI[md5sum] = "bb8a98ee61cdc4bd835fdfd2b5cee3e6"
-SRC_URI[sha256sum] = "175f275f5a041edda41fe0f27e59061d1d9c6615959475e4d68ad773b6a2e376"
-SECTION = "x11/libs"
-DEPENDS = "intltool xkbcomp-native glib-2.0"
-
-PR = "r0"
-
-EXTRA_OECONF = "--with-xkb-rules-symlink=xorg"
-
-RDEPENDS_${PN} += "xkbcomp"
-FILES_${PN} += "${datadir}/X11/xkb"
-
-inherit autotools pkgconfig
-
-do_install_append () {
- install -d ${D}/usr/share/X11/xkb/compiled
- cd ${D}${datadir}/X11/xkb/rules && ln -sf base xorg
-}
diff --git a/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.1.bb b/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.1.bb
new file mode 100644
index 0000000000..e0aa7994c2
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.1.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Keyboard configuration database for X Window"
+
+DESCRIPTION = "The non-arch keyboard configuration database for X \
+Window. The goal is to provide the consistent, well-structured, \
+frequently released open source of X keyboard configuration data for X \
+Window System implementations. The project is targeted to XKB-based \
+systems."
+
+HOMEPAGE = "http://freedesktop.org/wiki/Software/XKeyboardConfig"
+BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xkeyboard-config"
+
+LICENSE = "MIT & MIT-style"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0e7f21ca7db975c63467d2e7624a12f9"
+
+SRC_URI = "http://people.freedesktop.org/~svu/xkeyboard-config-${PV}.tar.bz2"
+SRC_URI[md5sum] = "6ce65480445fb2d9c071ad1f002a7675"
+SRC_URI[sha256sum] = "e293aa4b0dd259dbb4f0e7f56fdd95db5047d052c7b3b80922fe5663923a805d"
+
+SECTION = "x11/libs"
+DEPENDS = "intltool xkbcomp-native glib-2.0"
+
+PR = "r0"
+
+EXTRA_OECONF = "--with-xkb-rules-symlink=xorg"
+
+RDEPENDS_${PN} += "xkbcomp"
+FILES_${PN} += "${datadir}/X11/xkb"
+
+inherit autotools pkgconfig
+
+do_install_append () {
+ install -d ${D}/usr/share/X11/xkb/compiled
+ cd ${D}${datadir}/X11/xkb/rules && ln -sf base xorg
+}
diff --git a/meta/recipes-graphics/xorg-lib/xtrans_1.2.6.bb b/meta/recipes-graphics/xorg-lib/xtrans_1.2.6.bb
index f2d9394439..335f020a26 100644
--- a/meta/recipes-graphics/xorg-lib/xtrans_1.2.6.bb
+++ b/meta/recipes-graphics/xorg-lib/xtrans_1.2.6.bb
@@ -1,7 +1,11 @@
-SUMMARY = "X transport library"
+SUMMARY = "XTrans: X Transport library"
-DESCRIPTION = "network API translation layer to insulate X applications and \
-libraries from OS network vageries."
+DESCRIPTION = "The X Transport Interface is intended to combine all \
+system and transport specific code into a single place. This API should \
+be used by all libraries, clients and servers of the X Window System. \
+Use of this API should allow the addition of new types of transports and \
+support for new platforms without making any changes to the source \
+except in the X Transport Interface code."
require xorg-lib-common.inc
diff --git a/meta/recipes-graphics/xorg-proto/bigreqsproto_1.1.0.bb b/meta/recipes-graphics/xorg-proto/bigreqsproto_1.1.0.bb
deleted file mode 100644
index 894c141f1e..0000000000
--- a/meta/recipes-graphics/xorg-proto/bigreqsproto_1.1.0.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require xorg-proto-common.inc
-
-PR = "r2"
-PE = "1"
-
-DEPENDS += "gettext"
-
-DESCRIPTION = "X.Org BigReqs extension headers"
-
-BBCLASSEXTEND = "native nativesdk"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=b12715630da6f268d0d3712ee1a504f4"
-
-SRC_URI[md5sum] = "d30c5dbf19ca6dffcd9788227ecff8c5"
-SRC_URI[sha256sum] = "4864e12d3c5a99b0a9ee4704822455299345e6c65b23c688a4e4bf11481107bd"
diff --git a/meta/recipes-graphics/xorg-proto/bigreqsproto_1.1.1.bb b/meta/recipes-graphics/xorg-proto/bigreqsproto_1.1.1.bb
new file mode 100644
index 0000000000..19fe3286c8
--- /dev/null
+++ b/meta/recipes-graphics/xorg-proto/bigreqsproto_1.1.1.bb
@@ -0,0 +1,19 @@
+require xorg-proto-common.inc
+
+PR = "r0"
+PE = "1"
+
+DEPENDS += "gettext"
+
+SUMMARY = "BigReqs: X Big Requests extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the \
+BIG-REQUESTS extension, used to send larger requests that usual in order \
+to avoid fragmentation."
+
+BBCLASSEXTEND = "native nativesdk"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=b12715630da6f268d0d3712ee1a504f4"
+
+SRC_URI[md5sum] = "6f6c24436c2b3ab235eb14a85b9aaacf"
+SRC_URI[sha256sum] = "1c3b85872b58d215e8fbfdc7c36bb397d10053324a5df8722227d35254fff09a"
diff --git a/meta/recipes-graphics/xorg-proto/calibrateproto_git.bb b/meta/recipes-graphics/xorg-proto/calibrateproto_git.bb
index 9fd5c3fe0b..f86ea4a7d4 100644
--- a/meta/recipes-graphics/xorg-proto/calibrateproto_git.bb
+++ b/meta/recipes-graphics/xorg-proto/calibrateproto_git.bb
@@ -1,6 +1,9 @@
require xorg-proto-common.inc
-DESCRIPTION = "Touchscreen calibration protocol"
+SUMMARY = "XCalibrate: Touchscreen calibration headers"
+
+DESCRIPTION = "This package provides the wire protocol for the \
+Touchscreen calibration extension."
LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://xcalibratewire.h;endline=23;md5=7f86ef7b03cce6c4c9ebd59d20ca485f \
diff --git a/meta/recipes-graphics/xorg-proto/compositeproto_0.4.2.bb b/meta/recipes-graphics/xorg-proto/compositeproto_0.4.2.bb
new file mode 100644
index 0000000000..5917f20bea
--- /dev/null
+++ b/meta/recipes-graphics/xorg-proto/compositeproto_0.4.2.bb
@@ -0,0 +1,20 @@
+require xorg-proto-common.inc
+
+SUMMARY = "Xcomposite: X composite extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the X \
+composite extension. The X composite extension provides three related \
+mechanisms for compositing and off-screen storage."
+
+LICENSE = "MIT & MIT-style"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2c4bfe136f4a4418ea2f2a96b7c8f3c5 \
+ file://composite.h;endline=43;md5=cbd44d4079053aa75930ed2f02b92926"
+
+CONFLICTS = "compositeext"
+
+PR = "r0"
+PE = "1"
+
+SRC_URI[md5sum] = "98482f65ba1e74a08bf5b056a4031ef0"
+SRC_URI[sha256sum] = "049359f0be0b2b984a8149c966dd04e8c58e6eade2a4a309cf1126635ccd0cfc"
+
diff --git a/meta/recipes-graphics/xorg-proto/compositeproto_0.4.bb b/meta/recipes-graphics/xorg-proto/compositeproto_0.4.bb
deleted file mode 100644
index 37bbe31ef1..0000000000
--- a/meta/recipes-graphics/xorg-proto/compositeproto_0.4.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require xorg-proto-common.inc
-
-LICENSE = "MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=f8cdfa47489609f305b91521f3a8803f \
- file://composite.h;endline=43;md5=11420a347713de702a1fe60949085464"
-
-CONFLICTS = "compositeext"
-PE = "1"
-
-SRC_URI[md5sum] = "6281344d656d4e0c8e9db4918efe3d1d"
-SRC_URI[sha256sum] = "6013d1ca63b2b7540f6f99977090812b899852acfbd9df123b5ebaa911e30003"
diff --git a/meta/recipes-graphics/xorg-proto/damageproto_1.2.1.bb b/meta/recipes-graphics/xorg-proto/damageproto_1.2.1.bb
index 1f2c555896..6bfa1b2b15 100644
--- a/meta/recipes-graphics/xorg-proto/damageproto_1.2.1.bb
+++ b/meta/recipes-graphics/xorg-proto/damageproto_1.2.1.bb
@@ -1,5 +1,12 @@
require xorg-proto-common.inc
+SUMMARY = "Xdamage: X Damage extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the DAMAGE \
+extension. The DAMAGE extension allows applications to receive \
+information about changes made to pixel contents of windows and \
+pixmaps."
+
LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=d5f5a2de65c3a84cbde769f07a769608 \
file://damagewire.h;endline=23;md5=4a4501a592dbc7de5ce89255e50d0296"
diff --git a/meta/recipes-graphics/xorg-proto/dmxproto_2.3.1.bb b/meta/recipes-graphics/xorg-proto/dmxproto_2.3.1.bb
new file mode 100644
index 0000000000..c521071093
--- /dev/null
+++ b/meta/recipes-graphics/xorg-proto/dmxproto_2.3.1.bb
@@ -0,0 +1,19 @@
+require xorg-proto-common.inc
+
+SUMMARY = "DMX: Distributed Multihead extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the DMX \
+extension. The DMX extension provides support for communication with \
+and control of Xdmx server. Attributes of the Xdmx server and of the \
+back-end screens attached to the server can be queried and modified via \
+this protocol."
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a3c3499231a8035efd0e004cfbd3b72a \
+ file://dmxproto.h;endline=32;md5=ab8509955c3dd4c65fac728e1b367bc4"
+
+PR = "r0"
+PE = "1"
+
+SRC_URI[md5sum] = "4ee175bbd44d05c34d43bb129be5098a"
+SRC_URI[sha256sum] = "e72051e6a3e06b236d19eed56368117b745ca1e1a27bdc50fd51aa375bea6509"
diff --git a/meta/recipes-graphics/xorg-proto/dmxproto_2.3.bb b/meta/recipes-graphics/xorg-proto/dmxproto_2.3.bb
deleted file mode 100644
index da6262969d..0000000000
--- a/meta/recipes-graphics/xorg-proto/dmxproto_2.3.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require xorg-proto-common.inc
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a3c3499231a8035efd0e004cfbd3b72a \
- file://dmxproto.h;endline=32;md5=ab8509955c3dd4c65fac728e1b367bc4"
-
-PR = "r1"
-PE = "1"
-
-SRC_URI[md5sum] = "880a41720b2937e2660dcdc0d34a8791"
-SRC_URI[sha256sum] = "3a882ca43a1f359e3489468e6c407fd7d56d559f8895cf096a2ec877d6c403b0"
diff --git a/meta/recipes-graphics/xorg-proto/dri2proto_2.3.bb b/meta/recipes-graphics/xorg-proto/dri2proto_2.3.bb
index 849dc00dda..79f7dbc1ae 100644
--- a/meta/recipes-graphics/xorg-proto/dri2proto_2.3.bb
+++ b/meta/recipes-graphics/xorg-proto/dri2proto_2.3.bb
@@ -1,7 +1,11 @@
-DESCRIPTION = "DRI2 extension headers"
-
require xorg-proto-common.inc
+SUMMARY = "DRI2: Direct Rendering Infrastructure 2 headers"
+
+DESCRIPTION = "This package provides the wire protocol for the Direct \
+Rendering Ifnrastructure 2. DIR is required for may hardware \
+accelerated OpenGL drivers."
+
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=2e396fa91834f8786032cad2da5638f3 \
file://dri2proto.h;endline=31;md5=22f28bf68d01b533f26195e94b3ed8ca"
diff --git a/meta/recipes-graphics/xorg-proto/dri2proto_git.bb b/meta/recipes-graphics/xorg-proto/dri2proto_git.bb
index a5ad7d0919..c1aa35ff2a 100644
--- a/meta/recipes-graphics/xorg-proto/dri2proto_git.bb
+++ b/meta/recipes-graphics/xorg-proto/dri2proto_git.bb
@@ -1,7 +1,11 @@
-DESCRIPTION = "DRI2 extension headers"
-
require xorg-proto-common.inc
+SUMMARY = "DRI2: Direct Rendering Infrastructure 2 headers"
+
+DESCRIPTION = "This package provides the wire protocol for the Direct \
+Rendering Ifnrastructure 2. DIR is required for may hardware \
+accelerated OpenGL drivers."
+
PV = "1.99.3+git${SRCPV}"
PR = "r2"
diff --git a/meta/recipes-graphics/xorg-proto/evieext_1.1.0.bb b/meta/recipes-graphics/xorg-proto/evieext_1.1.0.bb
index 9e283041cc..5800af10d7 100644
--- a/meta/recipes-graphics/xorg-proto/evieext_1.1.0.bb
+++ b/meta/recipes-graphics/xorg-proto/evieext_1.1.0.bb
@@ -1,6 +1,10 @@
require xorg-proto-common.inc
-DESCRIPTION = "X EVIE extension headers"
+SUMMARY = "EvIE: X Event Interception Extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the X Event \
+Interception Extension. This extension allows the interception of \
+keyboard and mouse events."
PR = "r1"
PE = "1"
diff --git a/meta/recipes-graphics/xorg-proto/fixesproto_4.1.2.bb b/meta/recipes-graphics/xorg-proto/fixesproto_4.1.2.bb
index 567f1fe530..853ffa88af 100644
--- a/meta/recipes-graphics/xorg-proto/fixesproto_4.1.2.bb
+++ b/meta/recipes-graphics/xorg-proto/fixesproto_4.1.2.bb
@@ -1,5 +1,13 @@
require xorg-proto-common.inc
+SUMMARY = "XFixes: X Fixes extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the X Fixes \
+extension. This extension is designed to provide server-side support \
+for application work arounds to shortcomings in the core X window \
+system."
+
+
LICENSE = "MIT & MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=3bd0f26ecf86d0f24922125195d5b70a \
file://xfixesproto.h;endline=43;md5=27614675897bb1cdc611ba7de506cddc"
diff --git a/meta/recipes-graphics/xorg-proto/fontcacheproto_0.1.3.bb b/meta/recipes-graphics/xorg-proto/fontcacheproto_0.1.3.bb
index d4594b32aa..42c95882b9 100644
--- a/meta/recipes-graphics/xorg-proto/fontcacheproto_0.1.3.bb
+++ b/meta/recipes-graphics/xorg-proto/fontcacheproto_0.1.3.bb
@@ -1,5 +1,11 @@
require xorg-proto-common.inc
+SUMMARY = "XFontCache: X Font Cache extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the X Font \
+Cache extension. This extension is used by X-TrueType to cache \
+information about fonts."
+
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://COPYING;md5=ba9fcd8fe6d09af9f733daccc1a21857 \
file://fontcacheP.h;endline=28;md5=85c80bfa96c802ee85a570862ee60214"
diff --git a/meta/recipes-graphics/xorg-proto/fontsproto_2.1.1.bb b/meta/recipes-graphics/xorg-proto/fontsproto_2.1.1.bb
index 1ed81007b3..af59240fdf 100644
--- a/meta/recipes-graphics/xorg-proto/fontsproto_2.1.1.bb
+++ b/meta/recipes-graphics/xorg-proto/fontsproto_2.1.1.bb
@@ -1,5 +1,11 @@
require xorg-proto-common.inc
+SUMMARY = "XFont: X Font rasterisation headers"
+
+DESCRIPTION = "This package provides the wire protocol for the X Font \
+rasterisation extensions. These extensions are used to control \
+server-side font configurations."
+
LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=c3e48aa9ce868c8e90f0401db41c11a2 \
file://FSproto.h;endline=44;md5=d2e58e27095e5ea7d4ad456ccb91986c"
diff --git a/meta/recipes-graphics/xorg-proto/glproto_1.4.12.bb b/meta/recipes-graphics/xorg-proto/glproto_1.4.12.bb
index 9c8e7030d5..7b32e70dae 100644
--- a/meta/recipes-graphics/xorg-proto/glproto_1.4.12.bb
+++ b/meta/recipes-graphics/xorg-proto/glproto_1.4.12.bb
@@ -1,5 +1,11 @@
require xorg-proto-common.inc
+SUMMARY = "OpenGL: X OpenGL extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the \
+OpenGL-related extensions, used to enable the rendering of applications \
+using OpenGL."
+
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=d44ed0146997856304dfbb512a59a8de \
file://glxproto.h;beginline=4;endline=32;md5=6b79c570f644363b356456e7d44471d9"
diff --git a/meta/recipes-graphics/xorg-proto/inputproto_2.0.1.bb b/meta/recipes-graphics/xorg-proto/inputproto_2.0.1.bb
new file mode 100644
index 0000000000..7103d0d171
--- /dev/null
+++ b/meta/recipes-graphics/xorg-proto/inputproto_2.0.1.bb
@@ -0,0 +1,22 @@
+require xorg-proto-common.inc
+
+SUMMARY = "XI: X Input extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the X Input \
+extension. The extension supports input devices other then the core X \
+keyboard and pointer."
+
+LICENSE = "MIT & MIT-style"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e562cc0f6587b961f032211d8160f31e \
+ file://XI2proto.h;endline=48;md5=1ac1581e61188da2885cc14ff49b20be"
+
+PR = "r0"
+PE = "1"
+
+inherit gettext
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI[md5sum] = "da9bf9e5d174163f597d2d72757d9038"
+SRC_URI[sha256sum] = "63663dd88df812738e0efdc52a18868c0756128f09748cbe89c8ec6d17124a44"
+
diff --git a/meta/recipes-graphics/xorg-proto/inputproto_2.0.bb b/meta/recipes-graphics/xorg-proto/inputproto_2.0.bb
deleted file mode 100644
index 1b63be58a7..0000000000
--- a/meta/recipes-graphics/xorg-proto/inputproto_2.0.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require xorg-proto-common.inc
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b9f79c119df756aeffcb89ec96716a9e \
- file://XI2proto.h;endline=48;md5=1ac1581e61188da2885cc14ff49b20be"
-
-PR = "r2"
-PE = "1"
-
-inherit gettext
-
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI[md5sum] = "0f7acbc14a082f9ae03744396527d23d"
-SRC_URI[sha256sum] = "472f57f7928ab20a1303a25982c4091db9674c2729bbd692c9a7204e23ea1af4"
diff --git a/meta/recipes-graphics/xorg-proto/inputproto_git.bb b/meta/recipes-graphics/xorg-proto/inputproto_git.bb
index a97fb0bfab..f1cbbb86fb 100644
--- a/meta/recipes-graphics/xorg-proto/inputproto_git.bb
+++ b/meta/recipes-graphics/xorg-proto/inputproto_git.bb
@@ -1,5 +1,11 @@
require xorg-proto-common.inc
+SUMMARY = "XI: X Input extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the X Input \
+extension. The extension supports input devices other then the core X \
+keyboard and pointer."
+
PR = "r1"
PE = "1"
PV = "1.9.99.12+git${SRCPV}"
diff --git a/meta/recipes-graphics/xorg-proto/kbproto_1.0.5.bb b/meta/recipes-graphics/xorg-proto/kbproto_1.0.5.bb
index affd62777a..cd62534fa0 100644
--- a/meta/recipes-graphics/xorg-proto/kbproto_1.0.5.bb
+++ b/meta/recipes-graphics/xorg-proto/kbproto_1.0.5.bb
@@ -1,5 +1,11 @@
require xorg-proto-common.inc
+SUMMARY = "XKB: X Keyboard extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the X \
+Keyboard extension. This extension is used to control options related \
+to keyboard handling and layout."
+
LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=7dd6ea99e2a83a552c02c80963623c38 \
file://XKBproto.h;beginline=2;endline=26;md5=5744eeff407aeb6e7a1346eebab486a2"
diff --git a/meta/recipes-graphics/xorg-proto/printproto_1.0.4.bb b/meta/recipes-graphics/xorg-proto/printproto_1.0.4.bb
deleted file mode 100644
index 6f8e2058e6..0000000000
--- a/meta/recipes-graphics/xorg-proto/printproto_1.0.4.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require xorg-proto-common.inc
-
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a2363c155fd3749a8cf436ef56c3070f \
- file://Print.h;beginline=2;endline=59;md5=1a2ee3cbfe3e38e136ff1b8477b51f4a"
-
-PR = "r1"
-PE = "1"
-
-SRC_URI[md5sum] = "7321847a60748b4d2f1fa16db4b6ede8"
-SRC_URI[sha256sum] = "f059a93188e7143dbb6cc55e31ccf81b976776aa3023bfa57f47501fd1bfd3be"
diff --git a/meta/recipes-graphics/xorg-proto/printproto_1.0.5.bb b/meta/recipes-graphics/xorg-proto/printproto_1.0.5.bb
new file mode 100644
index 0000000000..2c8afbd7e2
--- /dev/null
+++ b/meta/recipes-graphics/xorg-proto/printproto_1.0.5.bb
@@ -0,0 +1,17 @@
+require xorg-proto-common.inc
+
+SUMMARY = "XP: X Printing extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the X \
+Printing extension. This extension provides a way for client \
+applications to render to non-display devices."
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=658463213f19b48b81f8672d2696069f \
+ file://Print.h;beginline=2;endline=59;md5=db19e065445b3755c09432864dcd8a9b"
+
+PR = "r0"
+PE = "1"
+
+SRC_URI[md5sum] = "99d0e25feea2fead7d8325b7000b41c3"
+SRC_URI[sha256sum] = "1298316cf43b987365ab7764d61b022a3d7f180b67b423eed3456862d155911a"
diff --git a/meta/recipes-graphics/xorg-proto/randrproto_1.3.2.bb b/meta/recipes-graphics/xorg-proto/randrproto_1.3.2.bb
index c027bfaf8c..f0f81bc64c 100644
--- a/meta/recipes-graphics/xorg-proto/randrproto_1.3.2.bb
+++ b/meta/recipes-graphics/xorg-proto/randrproto_1.3.2.bb
@@ -1,5 +1,11 @@
require xorg-proto-common.inc
+SUMMARY = "XRandR: X Resize, Rotate and Reflect extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the X Resize, \
+Rotate and Reflect extension. This extension provides the ability to \
+resize, rotate and reflect the root window of a screen."
+
LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=5fa3f85d9eefaa3a945071485be11343 \
file://randrproto.h;endline=30;md5=3885957c6048fdf3310ac8ba54ca2c3f"
diff --git a/meta/recipes-graphics/xorg-proto/recordproto_1.14.1.bb b/meta/recipes-graphics/xorg-proto/recordproto_1.14.1.bb
index b5f68d3306..8ee2017886 100644
--- a/meta/recipes-graphics/xorg-proto/recordproto_1.14.1.bb
+++ b/meta/recipes-graphics/xorg-proto/recordproto_1.14.1.bb
@@ -1,5 +1,11 @@
require xorg-proto-common.inc
+SUMMARY = "XRecord: X Record extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the X Record \
+extension. This extension is used to record and play back event \
+sequences."
+
LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=575827a0f554bbed332542976d5f3d40 \
file://recordproto.h;endline=19;md5=1cbb0dd45a0b060ff833901620a3e738"
diff --git a/meta/recipes-graphics/xorg-proto/renderproto_0.11.1.bb b/meta/recipes-graphics/xorg-proto/renderproto_0.11.1.bb
new file mode 100644
index 0000000000..a352b1ed0f
--- /dev/null
+++ b/meta/recipes-graphics/xorg-proto/renderproto_0.11.1.bb
@@ -0,0 +1,21 @@
+require xorg-proto-common.inc
+
+SUMMARY = "XRender: X rendering Extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the X \
+Rendering extension. This is the basis the image composition within the \
+X window system."
+
+LICENSE = "MIT-style"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f826d99765196352e6122a406cf0d024 \
+ file://renderproto.h;beginline=4;endline=24;md5=3e5e2851dad240b0a3a27c4776b4fd1f"
+
+CONFLICTS = "renderext"
+PR = "r0"
+PE = "1"
+
+BBCLASSEXTEND = "nativesdk"
+
+SRC_URI[md5sum] = "a914ccc1de66ddeb4b611c6b0686e274"
+SRC_URI[sha256sum] = "06735a5b92b20759204e4751ecd6064a2ad8a6246bb65b3078b862a00def2537"
+
diff --git a/meta/recipes-graphics/xorg-proto/renderproto_0.11.bb b/meta/recipes-graphics/xorg-proto/renderproto_0.11.bb
deleted file mode 100644
index 50854f9d6f..0000000000
--- a/meta/recipes-graphics/xorg-proto/renderproto_0.11.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require xorg-proto-common.inc
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=f826d99765196352e6122a406cf0d024 \
- file://renderproto.h;beginline=4;endline=24;md5=3e5e2851dad240b0a3a27c4776b4fd1f"
-
-CONFLICTS = "renderext"
-PR = "r1"
-PE = "1"
-
-BBCLASSEXTEND = "nativesdk"
-
-SRC_URI[md5sum] = "b160a9733fe91b666e74fca284333148"
-SRC_URI[sha256sum] = "c4d1d6d9b0b6ed9a328a94890c171d534f62708f0982d071ccd443322bedffc2"
diff --git a/meta/recipes-graphics/xorg-proto/resourceproto_1.1.0.bb b/meta/recipes-graphics/xorg-proto/resourceproto_1.1.0.bb
deleted file mode 100644
index 23afed7821..0000000000
--- a/meta/recipes-graphics/xorg-proto/resourceproto_1.1.0.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require xorg-proto-common.inc
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e01e66e4b317088cf869bc98e6af4fb6"
-
-CONFLICTS = "resourceext"
-PR = "r1"
-PE = "1"
-
-SRC_URI[md5sum] = "84795594b3ebd2ee2570cf93340d152c"
-SRC_URI[sha256sum] = "408d9ab067e4141d1bb844d2d0d7d26ad177567384190c32a913131cf549b36b"
diff --git a/meta/recipes-graphics/xorg-proto/resourceproto_1.1.1.bb b/meta/recipes-graphics/xorg-proto/resourceproto_1.1.1.bb
new file mode 100644
index 0000000000..fa13970cf3
--- /dev/null
+++ b/meta/recipes-graphics/xorg-proto/resourceproto_1.1.1.bb
@@ -0,0 +1,19 @@
+require xorg-proto-common.inc
+
+SUMMARY = "XRes: X Resource extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the X \
+Resource extension. XRes provides an interface that allows X clients to \
+see and monitor X resource usage of various clients."
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e01e66e4b317088cf869bc98e6af4fb6"
+
+CONFLICTS = "resourceext"
+
+PR = "r0"
+PE = "1"
+
+SRC_URI[md5sum] = "8ff0525ae7502b48597b78d00bc22284"
+SRC_URI[sha256sum] = "8579818e99aa881c00c04eb5f96fcbeec463816ca8e3cda9d3d25562f7a4b8c6"
+
diff --git a/meta/recipes-graphics/xorg-proto/scrnsaverproto_1.2.0.bb b/meta/recipes-graphics/xorg-proto/scrnsaverproto_1.2.0.bb
deleted file mode 100644
index 0000a6b6b4..0000000000
--- a/meta/recipes-graphics/xorg-proto/scrnsaverproto_1.2.0.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require xorg-proto-common.inc
-
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=eed49b78b15b436c933b6b8b054e3901 \
- file://saverproto.h;endline=26;md5=a84c0637305159f3c0ab173aaeede48d"
-
-PR = "r1"
-PE = "1"
-
-SRC_URI[md5sum] = "9040c991a56ee9b5976936f8c65d5c8a"
-SRC_URI[sha256sum] = "deaf0a3212617e0dab353a3c3a66e0a1f2398306eca0fd882ac15996b0e44d99"
diff --git a/meta/recipes-graphics/xorg-proto/scrnsaverproto_1.2.1.bb b/meta/recipes-graphics/xorg-proto/scrnsaverproto_1.2.1.bb
new file mode 100644
index 0000000000..fe937eb6ec
--- /dev/null
+++ b/meta/recipes-graphics/xorg-proto/scrnsaverproto_1.2.1.bb
@@ -0,0 +1,21 @@
+require xorg-proto-common.inc
+
+SUMMARY = "Xscrnsaver: X Screen Saver extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the X Screen \
+Saver extension. This extension allows an external \"screen saver\" \
+client to detect when the alternative image is to be displayed and to \
+provide the graphics."
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=eed49b78b15b436c933b6b8b054e3901 \
+ file://saverproto.h;endline=26;md5=a84c0637305159f3c0ab173aaeede48d"
+
+PR = "r0"
+PE = "1"
+
+EXTRA_OECONF_append = " --enable-specs=no"
+
+SRC_URI[md5sum] = "6af0f2e3369f5f74e69345e214f5fd0d"
+SRC_URI[sha256sum] = "fad2f73cac136fcddd311d27a14ac7e519a9bec6ab272490d9c9b363556024f1"
+
diff --git a/meta/recipes-graphics/xorg-proto/trapproto_3.4.3.bb b/meta/recipes-graphics/xorg-proto/trapproto_3.4.3.bb
index c4a0780bdf..54d962e530 100644
--- a/meta/recipes-graphics/xorg-proto/trapproto_3.4.3.bb
+++ b/meta/recipes-graphics/xorg-proto/trapproto_3.4.3.bb
@@ -1,5 +1,11 @@
require xorg-proto-common.inc
+SUMMARY = "XTrap: X event trapping extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the X event \
+trapping extension. This extension provides the interface which allows \
+for capture and synthesis of core input events."
+
LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=0a984c8e242256a12f3b8dac085893db"
diff --git a/meta/recipes-graphics/xorg-proto/videoproto_2.3.1.bb b/meta/recipes-graphics/xorg-proto/videoproto_2.3.1.bb
index 827aa27aba..51132433ee 100644
--- a/meta/recipes-graphics/xorg-proto/videoproto_2.3.1.bb
+++ b/meta/recipes-graphics/xorg-proto/videoproto_2.3.1.bb
@@ -1,5 +1,10 @@
require xorg-proto-common.inc
+SUMMARY = "Xv: X Video extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the X Video \
+extension. This extension alows for accerlated drawing of videos."
+
LICENSE = "MIT & MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=59d089e37bf57b5206602da38f58ca5d"
diff --git a/meta/recipes-graphics/xorg-proto/xcmiscproto_1.2.1.bb b/meta/recipes-graphics/xorg-proto/xcmiscproto_1.2.1.bb
index 9b677e6dea..1b34a5d878 100644
--- a/meta/recipes-graphics/xorg-proto/xcmiscproto_1.2.1.bb
+++ b/meta/recipes-graphics/xorg-proto/xcmiscproto_1.2.1.bb
@@ -1,5 +1,11 @@
require xorg-proto-common.inc
+SUMMARY = "XC-MISC: X XC-Miscellaneous extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the XC-MISC \
+extension, which is used to get details of XID allocations within the \
+server."
+
LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=09d83047c15994e05db29b423ed6662e"
diff --git a/meta/recipes-graphics/xorg-proto/xextproto_7.1.2.bb b/meta/recipes-graphics/xorg-proto/xextproto_7.1.2.bb
index 22897442a5..b079736623 100644
--- a/meta/recipes-graphics/xorg-proto/xextproto_7.1.2.bb
+++ b/meta/recipes-graphics/xorg-proto/xextproto_7.1.2.bb
@@ -1,5 +1,14 @@
require xorg-proto-common.inc
+SUMMARY = "XExt: X Extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for several X \
+extensions. These protocol extensions include DOUBLE-BUFFER, DPMS, \
+Extended-Visual-Information, LBX, MIT_SHM, MIT_SUNDRY-NONSTANDARD, \
+Multi-Buffering, SECURITY, SHAPE, SYNC, TOG-CUP, XC-APPGROUP, XC-MISC, \
+XTEST. In addition a small set of utility functions are also \
+available."
+
LICENSE = "MIT & MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=86f273291759d0ba2a22585cd1c06c53"
diff --git a/meta/recipes-graphics/xorg-proto/xf86bigfontproto_1.2.0.bb b/meta/recipes-graphics/xorg-proto/xf86bigfontproto_1.2.0.bb
index 4bf6b5317d..d80c0f18c5 100644
--- a/meta/recipes-graphics/xorg-proto/xf86bigfontproto_1.2.0.bb
+++ b/meta/recipes-graphics/xorg-proto/xf86bigfontproto_1.2.0.bb
@@ -1,5 +1,11 @@
require xorg-proto-common.inc
+SUMMARY = "XFree86-BIGFONT: XFree86 Big Font extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the XFree86 \
+Big Font extension. This extension makes larger font requests \
+possible."
+
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=e01e66e4b317088cf869bc98e6af4fb6"
diff --git a/meta/recipes-graphics/xorg-proto/xf86dgaproto_2.1.bb b/meta/recipes-graphics/xorg-proto/xf86dgaproto_2.1.bb
index 99f1f0ea6f..f70d79daeb 100644
--- a/meta/recipes-graphics/xorg-proto/xf86dgaproto_2.1.bb
+++ b/meta/recipes-graphics/xorg-proto/xf86dgaproto_2.1.bb
@@ -1,5 +1,12 @@
require xorg-proto-common.inc
+SUMMARY = "XFree86-DGA: XFree86 Direct Graphics Access extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the XFree86 \
+Direct Graphics Access extension. This extension allows direct graphics \
+access to a framebuffer-like region, as well as relative mouse \
+reporting."
+
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=e01e66e4b317088cf869bc98e6af4fb6"
diff --git a/meta/recipes-graphics/xorg-proto/xf86driproto_2.1.0.bb b/meta/recipes-graphics/xorg-proto/xf86driproto_2.1.0.bb
deleted file mode 100644
index 9f76ddd830..0000000000
--- a/meta/recipes-graphics/xorg-proto/xf86driproto_2.1.0.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require xorg-proto-common.inc
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4641deddaa80fe7ca88e944e1fd94a94 \
- file://xf86driproto.h;endline=35;md5=42be3d8e6d429ab79172572bb0cff544"
-
-PR = "r1"
-PE = "1"
-
-SRC_URI[md5sum] = "309d552732666c3333d7dc63e80d042f"
-SRC_URI[sha256sum] = "d23f12deffd03e582e897ed6a7df3ea7f66ee8577f0f61374dcdf2ebffdce1be"
diff --git a/meta/recipes-graphics/xorg-proto/xf86driproto_2.1.1.bb b/meta/recipes-graphics/xorg-proto/xf86driproto_2.1.1.bb
new file mode 100644
index 0000000000..5b38117ec8
--- /dev/null
+++ b/meta/recipes-graphics/xorg-proto/xf86driproto_2.1.1.bb
@@ -0,0 +1,18 @@
+require xorg-proto-common.inc
+
+SUMMARY = "XFree86-DRI: XFree86 Direct Rendering Infrastructure extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the XFree86 \
+Direct Rendering Infrastructure extension. The XFree86-DRI extension is \
+used to organize direct rendering support or 3D clients and help \
+arbitrate requests."
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ef103b9d951e39ff7e23d386e2011fa3 \
+ file://xf86driproto.h;endline=35;md5=42be3d8e6d429ab79172572bb0cff544"
+
+PR = "r0"
+PE = "1"
+
+SRC_URI[md5sum] = "1d716d0dac3b664e5ee20c69d34bc10e"
+SRC_URI[sha256sum] = "9c4b8d7221cb6dc4309269ccc008a22753698ae9245a398a59df35f1404d661f"
diff --git a/meta/recipes-graphics/xorg-proto/xf86miscproto_0.9.3.bb b/meta/recipes-graphics/xorg-proto/xf86miscproto_0.9.3.bb
index 6046c7e3ee..d4663ea880 100644
--- a/meta/recipes-graphics/xorg-proto/xf86miscproto_0.9.3.bb
+++ b/meta/recipes-graphics/xorg-proto/xf86miscproto_0.9.3.bb
@@ -1,5 +1,12 @@
require xorg-proto-common.inc
+SUMMARY = "XFree86-Misc: XFree86 miscellaneous extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the XFree \
+miscellaneous extension. The XFree86-Misc extension provides a means to \
+access input device configuration settings specific to the XFree86/Xorg \
+DDX."
+
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=e01e66e4b317088cf869bc98e6af4fb6"
diff --git a/meta/recipes-graphics/xorg-proto/xf86rushproto_1.1.2.bb b/meta/recipes-graphics/xorg-proto/xf86rushproto_1.1.2.bb
index 6f090d4a20..1548bd07f9 100644
--- a/meta/recipes-graphics/xorg-proto/xf86rushproto_1.1.2.bb
+++ b/meta/recipes-graphics/xorg-proto/xf86rushproto_1.1.2.bb
@@ -1,5 +1,11 @@
require xorg-proto-common.inc
+SUMMARY = "XFree86-Rush: XFree86 Rush extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the XFree86 \
+Rush extension. This extension is there to allow Glide applications to \
+run."
+
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=e01e66e4b317088cf869bc98e6af4fb6"
diff --git a/meta/recipes-graphics/xorg-proto/xf86vidmodeproto_2.3.1.bb b/meta/recipes-graphics/xorg-proto/xf86vidmodeproto_2.3.1.bb
new file mode 100644
index 0000000000..721e7b0e13
--- /dev/null
+++ b/meta/recipes-graphics/xorg-proto/xf86vidmodeproto_2.3.1.bb
@@ -0,0 +1,18 @@
+require xorg-proto-common.inc
+
+SUMMARY = "XFree86-VM: XFree86 video mode extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the XFree86 \
+video mode extension. This extension allows client applications to get \
+and set video mode timings."
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=499be2ff387a42f84628c35f311f1502"
+
+CONFLICTS = "xxf86vmext"
+
+PR = "r0"
+PE = "1"
+
+SRC_URI[md5sum] = "e793ecefeaecfeabd1aed6a01095174e"
+SRC_URI[sha256sum] = "45d9499aa7b73203fd6b3505b0259624afed5c16b941bd04fcf123e5de698770"
diff --git a/meta/recipes-graphics/xorg-proto/xf86vidmodeproto_2.3.bb b/meta/recipes-graphics/xorg-proto/xf86vidmodeproto_2.3.bb
deleted file mode 100644
index 49f8c5c961..0000000000
--- a/meta/recipes-graphics/xorg-proto/xf86vidmodeproto_2.3.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require xorg-proto-common.inc
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=499be2ff387a42f84628c35f311f1502"
-
-CONFLICTS = "xxf86vmext"
-
-PR = "r0"
-PE = "1"
-
-SRC_URI[md5sum] = "4434894fc7d4eeb4a22e6b876d56fdaa"
-SRC_URI[sha256sum] = "8f704613a5407b31c594d05cf8e053f2b05777172a44e7cd2abd8090bd2ac247"
diff --git a/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.1.bb b/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.1.bb
new file mode 100644
index 0000000000..a68e4f5936
--- /dev/null
+++ b/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.1.bb
@@ -0,0 +1,18 @@
+require xorg-proto-common.inc
+
+SUMMARY = "Xinerama: Xinerama extension headers"
+
+DESCRIPTION = "This package provides the wire protocol for the Xinerama \
+extension. This extension is used for retrieving information about \
+physical output devices which may be combined into a single logical X \
+screen."
+
+LICENSE = "MIT & MIT-style"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3e397a5326c83d5d0ebf5b3f87163ac6 \
+ file://panoramiXproto.h;endline=24;md5=098e0bc089368a988092b3cbda617a57"
+
+PR = "r0"
+PE = "1"
+
+SRC_URI[md5sum] = "9959fe0bfb22a0e7260433b8d199590a"
+SRC_URI[sha256sum] = "977574bb3dc192ecd9c55f59f991ec1dff340be3e31392c95deff423da52485b"
diff --git a/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.bb b/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.bb
deleted file mode 100644
index 6b14b8f2f0..0000000000
--- a/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require xorg-proto-common.inc
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=3e397a5326c83d5d0ebf5b3f87163ac6 \
- file://panoramiXproto.h;endline=24;md5=098e0bc089368a988092b3cbda617a57"
-
-PR = "r1"
-PE = "1"
-
-SRC_URI[md5sum] = "a8aadcb281b9c11a91303e24cdea45f5"
-SRC_URI[sha256sum] = "58e88087ceec7201d918f94d6b1247325adca2a9903fed11291b412427a7ba64"
diff --git a/meta/recipes-graphics/xorg-proto/xproto_7.0.19.bb b/meta/recipes-graphics/xorg-proto/xproto_7.0.19.bb
deleted file mode 100644
index 1e968c53da..0000000000
--- a/meta/recipes-graphics/xorg-proto/xproto_7.0.19.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require xorg-proto-common.inc
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=70c104816b85de375ba1fc09199d0e69"
-
-PR = "r1"
-PE = "1"
-
-EXTRA_OECONF_append = "--enable-specs=no"
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI[md5sum] = "700f8663c23713c2a81a6038a7d358f0"
-SRC_URI[sha256sum] = "47b14f6da8c57a726ef1cfa5964a4a6cf9505bc6d78f69d3ae89f4b19956fc2a"
diff --git a/meta/recipes-graphics/xorg-proto/xproto_7.0.20.bb b/meta/recipes-graphics/xorg-proto/xproto_7.0.20.bb
new file mode 100644
index 0000000000..58520d9768
--- /dev/null
+++ b/meta/recipes-graphics/xorg-proto/xproto_7.0.20.bb
@@ -0,0 +1,19 @@
+require xorg-proto-common.inc
+
+SUMMARY = "Xlib: C Language X interface headers"
+
+DESCRIPTION = "This package provides the basic headers for the X Window \
+System."
+
+LICENSE = "MIT & MIT-style"
+LIC_FILES_CHKSUM = "file://COPYING;md5=93ae8952e7d02d855516fbf2efb9a0d2"
+
+PR = "r0"
+PE = "1"
+
+EXTRA_OECONF_append = "--enable-specs=no"
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI[md5sum] = "65633168e5315c19defb4652cd3d83c1"
+SRC_URI[sha256sum] = "3fe87fe47d9b795e60ba3715d71f90f9929d57e9048f1d2a6ebb558e5aee9e2a"
+
diff --git a/meta/recipes-graphics/xorg-util/gccmakedep_1.0.2.bb b/meta/recipes-graphics/xorg-util/gccmakedep_1.0.2.bb
index 9b89400bdb..23cef63ea2 100644
--- a/meta/recipes-graphics/xorg-util/gccmakedep_1.0.2.bb
+++ b/meta/recipes-graphics/xorg-util/gccmakedep_1.0.2.bb
@@ -1,10 +1,16 @@
+SUMMARY = "Program to create dependencies in makefiles"
+
+DESCRIPTION = "The gccmakedep program calls 'gcc -M' to output makefile \
+rules describing the dependencies of each sourcefile, so that make knows \
+which object files must be recompiled when a dependency has changed."
+
require xorg-util-common.inc
LIC_FILES_CHKSUM = "file://Makefile.am;endline=20;md5=23c277396d690413245ebb89b18c5d4d"
DESCRIPTION = "create dependencies in makefiles using 'gcc -M'"
DEPENDS = "util-macros"
-RDEPENDS = "gcc"
+RDEPENDS_${PN} = "gcc"
-PR = "r2"
+PR = "r3"
PE = "1"
SRC_URI[md5sum] = "fc49f45251c1336fe1dad5dba1c83fcd"
diff --git a/meta/recipes-graphics/xorg-util/imake_1.0.4.bb b/meta/recipes-graphics/xorg-util/imake_1.0.4.bb
index 8943c2dd4c..9202317e10 100644
--- a/meta/recipes-graphics/xorg-util/imake_1.0.4.bb
+++ b/meta/recipes-graphics/xorg-util/imake_1.0.4.bb
@@ -1,12 +1,19 @@
require xorg-util-common.inc
-DESCRIPTION = "C preprocessor interface to the make utility"
+SUMMARY = "C preprocessor interface to the make utility"
+
+DESCRIPTION = "Imake is used to generate Makefiles from a template, a \
+set of cpp macro functions, and a per-directory input file called an \
+Imakefile. This allows machine dependencies (such as compiler options, \
+alternate command names, and special make rules) to be kept separate \
+from the descriptions of the various items to be built."
+
DEPENDS = "util-macros"
-RDEPENDS = "perl xproto"
+RDEPENDS_${PN} = "perl xproto"
LIC_FILES_CHKSUM = "file://COPYING;md5=b9c6cfb044c6d0ff899eaafe4c729367"
-PR = "r0"
+PR = "r1"
PE = "1"
SRC_URI[md5sum] = "0fd1e53d94142ddee5340f87de0b9561"
diff --git a/meta/recipes-graphics/xorg-util/makedepend_1.0.3.bb b/meta/recipes-graphics/xorg-util/makedepend_1.0.3.bb
index a103700d84..342d1b8441 100644
--- a/meta/recipes-graphics/xorg-util/makedepend_1.0.3.bb
+++ b/meta/recipes-graphics/xorg-util/makedepend_1.0.3.bb
@@ -1,6 +1,14 @@
require xorg-util-common.inc
-DESCRIPTION = "create dependencies in makefiles"
+SUMMARY = "create dependencies in makefiles"
+
+DESCRIPTION = "The makedepend program reads each sourcefile in sequence \
+and parses it like a C-preprocessor, processing all #include, #define, \
+#undef, #ifdef, #ifndef, #endif, #if, #elif and #else directives so that \
+it can correctly tell which #include, directives would be used in a \
+compilation. Any #include, directives can reference files having other \
+#include directives, and parsing will occur in these files as well."
+
DEPENDS = "xproto util-macros"
PR = "r0"
PE = "1"
diff --git a/meta/recipes-graphics/xorg-util/util-macros_1.11.0.bb b/meta/recipes-graphics/xorg-util/util-macros_1.11.0.bb
index 7130ea2b79..82423266f2 100644
--- a/meta/recipes-graphics/xorg-util/util-macros_1.11.0.bb
+++ b/meta/recipes-graphics/xorg-util/util-macros_1.11.0.bb
@@ -1,4 +1,6 @@
-DESCRIPTION = "X autotools macros"
+SUMMARY = "X autotools macros"
+
+DESCRIPTION = "M4 autotools macros used by various X.org programs."
require xorg-util-common.inc
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-kdrive.inc b/meta/recipes-graphics/xorg-xserver/xserver-kdrive.inc
index 8c93127657..920c03285a 100644
--- a/meta/recipes-graphics/xorg-xserver/xserver-kdrive.inc
+++ b/meta/recipes-graphics/xorg-xserver/xserver-kdrive.inc
@@ -1,6 +1,10 @@
LICENSE = "MIT"
-DEPENDS = "compositeproto damageproto fixesproto recordproto resourceproto scrnsaverproto xineramaproto videoproto xextproto xproto \
- libxau libxext libxdmcp libxfont libxrandr tslib virtual/libx11 xtrans bigreqsproto xcmiscproto"
+DEPENDS = "compositeproto damageproto fixesproto recordproto resourceproto \
+ scrnsaverproto xineramaproto videoproto xextproto xproto libxau libxext \
+ libxdmcp libxfont libxrandr tslib virtual/libx11 xtrans bigreqsproto \
+ xcmiscproto libdrm"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=3dd2bbe3563837f80ed8926b06c1c353"
PROVIDES = "virtual/xserver"
PACKAGES =+ "xserver-kdrive-fbdev \
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-kdrive_1.7.99.2.bb b/meta/recipes-graphics/xorg-xserver/xserver-kdrive_1.7.99.2.bb
index 7ca88e64e2..ea3268e78e 100644
--- a/meta/recipes-graphics/xorg-xserver/xserver-kdrive_1.7.99.2.bb
+++ b/meta/recipes-graphics/xorg-xserver/xserver-kdrive_1.7.99.2.bb
@@ -1,6 +1,6 @@
require xserver-kdrive.inc
-DEPENDS += "libxkbfile libxcalibrate font-util"
+DEPENDS += "libxkbfile libxcalibrate font-util pixman"
RDEPENDS_${PN} += "xkeyboard-config"
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xf86-common.inc b/meta/recipes-graphics/xorg-xserver/xserver-xf86-common.inc
index cf69a1e156..f9ea0e4124 100644
--- a/meta/recipes-graphics/xorg-xserver/xserver-xf86-common.inc
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xf86-common.inc
@@ -3,6 +3,8 @@ HOMEPAGE = "http://www.x.org"
SECTION = "x11/base"
LICENSE = "MIT-X"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3dd2bbe3563837f80ed8926b06c1c353"
+
# xf86-*-* packages depend on an X server built with the xfree86 DDX
# so we have a virtual to represent that:
PROVIDES = "virtual/xserver-xf86"
@@ -31,3 +33,4 @@ FILES_${PN}-dbg += "${libdir}/xorg/modules/.debug \
"
SRC_URI += "file://macro_tweak.patch"
+
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xf86-dri-lite_1.9.2.bb b/meta/recipes-graphics/xorg-xserver/xserver-xf86-dri-lite_1.9.2.bb
deleted file mode 100644
index 0433fe33ba..0000000000
--- a/meta/recipes-graphics/xorg-xserver/xserver-xf86-dri-lite_1.9.2.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-require xserver-xf86-dri-lite.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=3dd2bbe3563837f80ed8926b06c1c353"
-
-PROTO_DEPS += "xf86driproto dri2proto"
-
-DEPENDS += "font-util"
-
-PE = "1"
-PR = "r0"
-
-SRC_URI += "file://nodolt.patch \
- file://crosscompile.patch"
-# file://libdri-xinerama-symbol.patch;patch=1 \
-# file://xserver-boottime.patch;patch=1"
-
-# Misc build failure for master HEAD
-SRC_URI += "file://fix_open_max_preprocessor_error.patch"
-
-SRC_URI[md5sum] = "5c8773499a6a8c1ddaedf33577ec9634"
-SRC_URI[sha256sum] = "8b30800004c98fc7a8e6ff31a339f28451be5132e774443be22bf226e1791e34"
-
-EXTRA_OECONF += "--enable-dri --enable-dri2"
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xf86-dri-lite_1.9.3.bb b/meta/recipes-graphics/xorg-xserver/xserver-xf86-dri-lite_1.9.3.bb
new file mode 100644
index 0000000000..9ff85de6c3
--- /dev/null
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xf86-dri-lite_1.9.3.bb
@@ -0,0 +1,22 @@
+require xserver-xf86-dri-lite.inc
+
+
+PROTO_DEPS += "xf86driproto dri2proto"
+
+DEPENDS += "font-util"
+
+PE = "1"
+PR = "r0"
+
+SRC_URI += "file://nodolt.patch \
+ file://crosscompile.patch"
+# file://libdri-xinerama-symbol.patch;patch=1 \
+# file://xserver-boottime.patch;patch=1"
+
+# Misc build failure for master HEAD
+SRC_URI += "file://fix_open_max_preprocessor_error.patch"
+
+SRC_URI[md5sum] = "5bef6839a76d029204ab31aa2fcb5201"
+SRC_URI[sha256sum] = "864831f51e841ff37f2445d1c85b86b559c8860a435fb496aead4f256a2b141d"
+
+EXTRA_OECONF += "--enable-dri --enable-dri2"
diff --git a/meta/recipes-graphics/xrestop/xrestop_0.4.bb b/meta/recipes-graphics/xrestop/xrestop_0.4.bb
index 915a375c18..bd4c25c469 100644
--- a/meta/recipes-graphics/xrestop/xrestop_0.4.bb
+++ b/meta/recipes-graphics/xrestop/xrestop_0.4.bb
@@ -1,4 +1,7 @@
+SUMMARY = "XRes: A top-like resource usage tool for X"
+
DESCRIPTION = "top-like statistics of X11 server resource usage by clients"
+
HOMEPAGE = "http://www.freedesktop.org/wiki/Software/xrestop"
BUGTRACKER = "https://bugs.freedesktop.org/"
diff --git a/meta/recipes-graphics/xtscal/xtscal/dso_linking_change_build_fix.patch b/meta/recipes-graphics/xtscal/xtscal/dso_linking_change_build_fix.patch
new file mode 100644
index 0000000000..3ca14d7f4d
--- /dev/null
+++ b/meta/recipes-graphics/xtscal/xtscal/dso_linking_change_build_fix.patch
@@ -0,0 +1,25 @@
+after gcc linking has changed, all the libraries must be explicitely specified
+This patch avoids this linking error:
+
+| ccache i586-poky-linux-gcc -march=i586 --sysroot=/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb -feliminate-unused-debug-types -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o xtscal main.o calibrate.o -lX11 -lXft -lXext -lXcalibrate^M
+| /disk0/pokybuild/build1/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: ^?: invalid DSO for symbol `XRenderChangePicture' definition^M
+| /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libXrender.so.1: could not read symbols: Bad value^M
+| collect2: ld returned 1 exit status^M
+| make: *** [xtscal] Error 1
+
+Nitin A Kamble <nitin.a.kamble@intel.com>
+Date: 2011/01/11
+
+Index: xtscal-0.6.3/configure.ac
+===================================================================
+--- xtscal-0.6.3.orig/configure.ac
++++ xtscal-0.6.3/configure.ac
+@@ -9,7 +9,7 @@ AM_INIT_AUTOMAKE([foreign dist-bzip2])
+ # Checks for programs.
+ AC_PROG_CC
+
+-PKG_CHECK_MODULES(XTSCAL, x11 xft xext xcalibrate)
++PKG_CHECK_MODULES(XTSCAL, x11 xft xext xcalibrate xrender)
+
+ AC_CONFIG_FILES([Makefile])
+ AC_OUTPUT
diff --git a/meta/recipes-graphics/xtscal/xtscal_0.6.3.bb b/meta/recipes-graphics/xtscal/xtscal_0.6.3.bb
index 2136f340e6..75013a26c6 100644
--- a/meta/recipes-graphics/xtscal/xtscal_0.6.3.bb
+++ b/meta/recipes-graphics/xtscal/xtscal_0.6.3.bb
@@ -1,4 +1,7 @@
-DESCRIPTION = "Touchscreen calibration utility"
+SUMMARY = "Touchscreen calibration utility"
+
+DESCRIPTION = "Basic touchscreen calibration utility"
+
HOMEPAGE = "http://gpe.linuxtogo.org"
BUGTRACKER = "http://bugs.linuxtogo.org"
LICENSE = "GPLv2 & GPLv2+"
@@ -9,11 +12,12 @@ SECTION = "x11/base"
DEPENDS = "virtual/libx11 libxft libxcalibrate"
-PR = "r12"
+PR = "r13"
SRC_URI = "${GPE_MIRROR}/xtscal-${PV}.tar.bz2 \
file://change-cross.patch;patch=1 \
file://cleanup.patch;patch=1 \
+ file://dso_linking_change_build_fix.patch \
file://30xTs_Calibrate.sh"
SRC_URI[md5sum] = "9bcab80b474d5454477d1ca166a68c34"
diff --git a/meta/recipes-graphics/xvideo-tests/xvideo-tests_svn.bb b/meta/recipes-graphics/xvideo-tests/xvideo-tests_svn.bb
index 0aa861f688..a5ac25124f 100644
--- a/meta/recipes-graphics/xvideo-tests/xvideo-tests_svn.bb
+++ b/meta/recipes-graphics/xvideo-tests/xvideo-tests_svn.bb
@@ -3,7 +3,7 @@ LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
file://src/test-xvideo.c;beginline=1;endline=20;md5=6ae3b4c3c2ff9e51dbbc35bb237afa00"
DEPENDS = "libxv"
-PV = "0.0+svnr${SRCREV}"
+PV = "0.0+svnr${SRCPV}"
PR = "r0"
SRC_URI="svn://svn.o-hand.com/repos/misc/trunk;module=test-xvideo;proto=http"
diff --git a/meta/recipes-kernel/blktrace/blktrace/blktrace-makefile.patch b/meta/recipes-kernel/blktrace/blktrace/blktrace-makefile.patch
index 87ee24ea35..c6a06ed349 100644
--- a/meta/recipes-kernel/blktrace/blktrace/blktrace-makefile.patch
+++ b/meta/recipes-kernel/blktrace/blktrace/blktrace-makefile.patch
@@ -17,11 +17,11 @@ Index: git/Makefile
btreplay/btrecord:
- $(MAKE) -C btreplay
-+ CC="${CC}" CFLAGS="${CFLAGS}" $(MAKE) -C btreplay CC="${CC}" CFLAGS="${CFLAGS}"
++ CC="${CC}" CFLAGS="${CFLAGS}" $(MAKE) -C btreplay CC="${CC}" CFLAGS="${CFLAGS}" btrecord
btreplay/btreplay:
- $(MAKE) -C btreplay
-+ CC="${CC}" CFLAGS="${CFLAGS}" $(MAKE) -C btreplay CC="${CC}" CFLAGS="${CFLAGS}"
++ CC="${CC}" CFLAGS="${CFLAGS}" $(MAKE) -C btreplay CC="${CC}" CFLAGS="${CFLAGS}" btreplay
%.o: %.c
$(CC) -o $*.o -c $(ALL_CFLAGS) $<
diff --git a/meta/recipes-kernel/blktrace/blktrace/dso_linking_change_build_fix.patch b/meta/recipes-kernel/blktrace/blktrace/dso_linking_change_build_fix.patch
new file mode 100644
index 0000000000..5b7433900d
--- /dev/null
+++ b/meta/recipes-kernel/blktrace/blktrace/dso_linking_change_build_fix.patch
@@ -0,0 +1,26 @@
+after gcc linking has changed, all the libraries must be explicitely specified
+This patch avoids this linking error:
+
+| make[1]: Entering directory `/disk0/pokybuild/build1/tmp/work/i586-poky-linux/blktrace-1.0.1+git0+1e09f6e9012826fca69fa07222b7bc53c3e629ee-r1/git/btreplay'^M
+| ccache i586-poky-linux-gcc -march=i586 --sysroot=/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb -feliminate-unused-debug-types -I. -I.. -I../btt -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -UCOUNT_IOS -UDEBUG -DNDEBUG -o btreplay btreplay.o -laio -lrt^M
+| /disk0/pokybuild/build1/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: >: invalid DSO for symbol `pthread_join@@GLIBC_2.0' definition^M
+| /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/lib/libpthread.so.0: could not read symbols: Bad value^M
+| collect2: ld returned 1 exit status^M
+| make[1]: *** [btreplay] Error 1
+
+Nitin A Kamble <nitin.a.kamble@intel.com>
+Date: 2011/01/11
+
+Index: git/btreplay/Makefile
+===================================================================
+--- git.orig/btreplay/Makefile
++++ git/btreplay/Makefile
+@@ -11,7 +11,7 @@ XCFLAGS = -D_GNU_SOURCE -D_LARGEFILE_SOU
+ override CFLAGS += $(INCS) $(XCFLAGS) $(OCFLAGS)
+
+ PROGS = btrecord btreplay
+-LIBS = -laio -lrt
++LIBS = -laio -lrt -lpthread
+
+ all: depend $(PROGS)
+
diff --git a/meta/recipes-kernel/blktrace/blktrace_git.bb b/meta/recipes-kernel/blktrace/blktrace_git.bb
index 5690f1463b..7cd8127e8a 100644
--- a/meta/recipes-kernel/blktrace/blktrace_git.bb
+++ b/meta/recipes-kernel/blktrace/blktrace_git.bb
@@ -4,11 +4,12 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
DEPENDS = "libaio"
-PR = r0
+PR = r2
PV = "1.0.1+git${SRCPV}"
SRC_URI = "git://git.kernel.dk/blktrace.git;protocol=git \
- file://blktrace-makefile.patch"
+ file://blktrace-makefile.patch \
+ file://dso_linking_change_build_fix.patch"
SRC_URI[md5sum] = "588aa9ab8a14d1766ab3f061d728ed89"
SRC_URI[sha256sum] = "f3cb6a3df1b3dc67369c7c4da3444a7897aa8a18e55937b368e0a6aa2f64b3aa"
diff --git a/meta/recipes-kernel/dtc/dtc-native_git.bb b/meta/recipes-kernel/dtc/dtc-native_git.bb
index 2d6f09217f..fd5bde5765 100644
--- a/meta/recipes-kernel/dtc/dtc-native_git.bb
+++ b/meta/recipes-kernel/dtc/dtc-native_git.bb
@@ -1,2 +1,5 @@
+LIC_FILES_CHKSUM = "file://GPL;md5=94d55d512a9ba36caa9b7df079bae19f \
+ file://libfdt/libfdt.h;beginline=3;endline=52;md5=fb360963151f8ec2d6c06b055bcbb68c"
+
require dtc-native.inc
require dtc_git.inc
diff --git a/meta/recipes-kernel/dtc/dtc/remove_space_opt.patch b/meta/recipes-kernel/dtc/dtc/remove_space_opt.patch
new file mode 100644
index 0000000000..805bf58796
--- /dev/null
+++ b/meta/recipes-kernel/dtc/dtc/remove_space_opt.patch
@@ -0,0 +1,16 @@
+Remove the -Os flag
+
+Signed-off-by: Saul Wold <sgw@linux.intel.com>
+Index: git/Makefile
+===================================================================
+--- git.orig/Makefile
++++ git/Makefile
+@@ -18,7 +18,7 @@ CONFIG_LOCALVERSION =
+ CPPFLAGS = -I libfdt
+ WARNINGS = -Werror -Wall -Wpointer-arith -Wcast-qual -Wnested-externs \
+ -Wstrict-prototypes -Wmissing-prototypes
+-CFLAGS = -g -Os -fPIC -Werror $(WARNINGS)
++CFLAGS = -g -fPIC -Werror $(WARNINGS)
+
+ BISON = bison
+ LEX = flex
diff --git a/meta/recipes-kernel/dtc/dtc_git.bb b/meta/recipes-kernel/dtc/dtc_git.bb
index 21f71e6e6a..1cca32cedb 100644
--- a/meta/recipes-kernel/dtc/dtc_git.bb
+++ b/meta/recipes-kernel/dtc/dtc_git.bb
@@ -4,3 +4,4 @@ LICENSE="GPLv2|BSD"
LIC_FILES_CHKSUM = "file://GPL;md5=94d55d512a9ba36caa9b7df079bae19f \
file://libfdt/libfdt.h;beginline=3;endline=52;md5=fb360963151f8ec2d6c06b055bcbb68c"
+SRC_URI += " file://remove_space_opt.patch"
diff --git a/meta/recipes-kernel/dtc/dtc_git.inc b/meta/recipes-kernel/dtc/dtc_git.inc
index 9bcd636849..96542f999c 100644
--- a/meta/recipes-kernel/dtc/dtc_git.inc
+++ b/meta/recipes-kernel/dtc/dtc_git.inc
@@ -1,5 +1,5 @@
SRC_URI = "git://www.jdl.com/software/dtc.git;protocol=git"
PV = "1.2.0+git${SRCPV}"
-PR = "r1"
+PR = "r2"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb b/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb
index 7350746b8c..de5628cd02 100644
--- a/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb
+++ b/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb
@@ -1,15 +1,15 @@
-DESCRIPTION = "Scripts and utilities for managing Wind River kernels."
+DESCRIPTION = "Scripts and utilities for managing Yocto branched kernels."
LICENSE = "GPL"
LIC_FILES_CHKSUM = "file://git/tools/kgit;beginline=5;endline=9;md5=e2bf4415f3d843f43d2e22b0d91a6fee"
DEPENDS = "git-native guilt-native"
-PR = r8
+PR = r10
PV = "0.1+git${SRCPV}"
inherit native
-SRC_URI = "git://git.pokylinux.org/wr-kernel-tools.git;protocol=git"
+SRC_URI = "git://git.pokylinux.org/yocto-kernel-tools.git;protocol=git"
S = "${WORKDIR}"
kern_tools_LIST = kgit kgit-init kgit-meta \
diff --git a/meta/recipes-kernel/linux-firmware/linux-firmware_git.bb b/meta/recipes-kernel/linux-firmware/linux-firmware_git.bb
index a912c45e1f..3d3c579fa9 100644
--- a/meta/recipes-kernel/linux-firmware/linux-firmware_git.bb
+++ b/meta/recipes-kernel/linux-firmware/linux-firmware_git.bb
@@ -18,7 +18,7 @@ LIC_FILES_CHKSUM = "file://LICENSE.radeon_rlc;md5=4c243f7854d2884b483abda991adef
PROVIDES += "linux-firmware-sd8686"
-PV = "0.0+git${SRCREV}"
+PV = "0.0+git${SRCPV}"
SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git;protocol=git"
diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers-yocto_git.bb b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers-yocto_git.bb
index 0515233958..0d5835401e 100644
--- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers-yocto_git.bb
+++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers-yocto_git.bb
@@ -6,14 +6,11 @@ B = "${S}"
INHIBIT_DEFAULT_DEPS = "1"
DEPENDS += "unifdef-native"
PROVIDES = "linux-libc-headers"
-PV = "2.6.34+git-${SRCPV}"
-PR = "r1"
-
-SRC_URI = "git://git.pokylinux.org/linux-2.6-windriver.git;fullclone=1"
+PV = "2.6.37+git-${SRCPV}"
+PR = "r2"
SRCREV_FORMAT = "meta_machine"
-SRC_URI = "git://git.pokylinux.org/linux-2.6-windriver.git;protocol=git;fullclone=1;branch=${KBRANCH};name=machine \
- git://git.pokylinux.org/linux-2.6-windriver.git;protocol=git;noclone=1;branch=wrs_meta;name=meta"
+SRC_URI = "git://git.pokylinux.org/linux-yocto-2.6.37;protocol=git;nocheckout=1;branch=${KBRANCH},meta;name=machine,meta"
set_arch() {
case ${TARGET_ARCH} in
diff --git a/meta/recipes-kernel/linux/linux-dtb.inc b/meta/recipes-kernel/linux/linux-dtb.inc
new file mode 100644
index 0000000000..0b27d18ded
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-dtb.inc
@@ -0,0 +1,27 @@
+# Support for device tree generation
+FILES_kernel_devicetree = "/boot/devicetree*"
+KERNEL_DEVICETREE_FLAGS = "-R 8 -p 0x3000"
+
+python __anonymous () {
+ import bb
+
+ devicetree = bb.data.getVar("KERNEL_DEVICETREE", d, 1) or ''
+ if devicetree:
+ depends = bb.data.getVar("DEPENDS", d, 1)
+ bb.data.setVar("DEPENDS", "%s dtc-native" % depends, d)
+ packages = bb.data.getVar("PACKAGES", d, 1)
+ bb.data.setVar("PACKAGES", "%s kernel-devicetree" % packages, d)
+}
+
+do_install_append() {
+ if test -n "${KERNEL_DEVICETREE}"; then
+ dtc -I dts -O dtb ${KERNEL_DEVICETREE_FLAGS} -o devicetree ${KERNEL_DEVICETREE}
+ install -m 0644 devicetree ${D}/boot/devicetree-${KERNEL_VERSION}
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 devicetree ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.dtb
+ cd ${DEPLOY_DIR_IMAGE}
+ rm -f ${KERNEL_IMAGE_SYMLINK_NAME}.dtb
+ ln -sf ${KERNEL_IMAGE_BASE_NAME}.dtb ${KERNEL_IMAGE_SYMLINK_NAME}.dtb
+ fi
+}
+
diff --git a/meta/recipes-kernel/linux/linux-dummy.bb b/meta/recipes-kernel/linux/linux-dummy.bb
index 3ea80b5374..518c74b317 100644
--- a/meta/recipes-kernel/linux/linux-dummy.bb
+++ b/meta/recipes-kernel/linux/linux-dummy.bb
@@ -2,6 +2,8 @@ SECTION = "kernel"
DESCRIPTION = "Dummy Linux kernel"
LICENSE = "GPL"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/COPYING.GPL;md5=751419260aa954499f7abaabaa882bbe"
+
PROVIDES += "virtual/kernel"
PACKAGES_DYNAMIC += "kernel-module-*"
@@ -11,7 +13,8 @@ PACKAGES_DYNAMIC += "kernel-image-*"
PR = "r1"
-SRC_URI = ""
+SRC_URI = "file://COPYING.GPL"
+S = "${WORKDIR}"
do_configure() {
:
diff --git a/meta/recipes-kernel/linux/linux-dummy/COPYING.GPL b/meta/recipes-kernel/linux/linux-dummy/COPYING.GPL
new file mode 100644
index 0000000000..d511905c16
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-dummy/COPYING.GPL
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program 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.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/meta/recipes-kernel/linux/linux-igep_2.6.33.5.bb b/meta/recipes-kernel/linux/linux-igep_2.6.33.5.bb
index 6e961b7efd..4cb7f40899 100644
--- a/meta/recipes-kernel/linux/linux-igep_2.6.33.5.bb
+++ b/meta/recipes-kernel/linux/linux-igep_2.6.33.5.bb
@@ -1,6 +1,7 @@
DESCRIPTION = "2.6 Linux Kernel for IGEP based platforms"
SECTION = "kernel"
LICENSE = "GPL"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7 "
DEFAULT_PREFERENCE = "-1"
DEFAULT_PREFERENCE_igep0020 = "1"
diff --git a/meta/recipes-kernel/linux/linux-omap2_git.bb b/meta/recipes-kernel/linux/linux-omap2_git.bb
index 39d08b714e..c29396f1ea 100644
--- a/meta/recipes-kernel/linux/linux-omap2_git.bb
+++ b/meta/recipes-kernel/linux/linux-omap2_git.bb
@@ -3,7 +3,7 @@ require linux-omap2.inc
FILESPATH = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-omap2-git/${MACHINE}:${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-omap2-git"
PV = "2.6.26"
-#PV = "2.6.26+2.6.27-rc1+${PR}+git${SRCREV}"
+#PV = "2.6.26+2.6.27-rc1+${PR}+git${SRCPV}"
PR = "r53"
SRC_URI = "git://source.mvista.com/git/linux-omap-2.6.git;protocol=git \
diff --git a/meta/recipes-kernel/linux/linux-omap3-pm_git.bb b/meta/recipes-kernel/linux/linux-omap3-pm_git.bb
index 4acf7934a1..d65ca50415 100644
--- a/meta/recipes-kernel/linux/linux-omap3-pm_git.bb
+++ b/meta/recipes-kernel/linux/linux-omap3-pm_git.bb
@@ -6,7 +6,7 @@ inherit kernel
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/${PN}-git/${MACHINE}"
-PV = "2.6.31-rc7+pm+${PR}+git${SRCREV}"
+PV = "2.6.31-rc7+pm+${PR}+git${SRCPV}"
PR = "r3"
SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap-pm.git;branch=pm;protocol=git"
diff --git a/meta/recipes-kernel/linux/linux-omap3_git.bb b/meta/recipes-kernel/linux/linux-omap3_git.bb
index f25c2c72fb..3d38ef2624 100644
--- a/meta/recipes-kernel/linux/linux-omap3_git.bb
+++ b/meta/recipes-kernel/linux/linux-omap3_git.bb
@@ -2,7 +2,7 @@ require linux-omap2.inc
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-omap3-git/${MACHINE}"
-PV = "2.6.27-rc6+${PR}+git${SRCREV}"
+PV = "2.6.27-rc6+${PR}+git${SRCPV}"
PR = "r30"
SRC_URI = "git://source.mvista.com/git/linux-omap-2.6.git;branch=master;protocol=git \
diff --git a/meta/recipes-kernel/linux/linux-rp-2.6.23/defconfig-bootcdx86 b/meta/recipes-kernel/linux/linux-rp-2.6.23/defconfig-bootcdx86
deleted file mode 100644
index 244df733ac..0000000000
--- a/meta/recipes-kernel/linux/linux-rp-2.6.23/defconfig-bootcdx86
+++ /dev/null
@@ -1,1579 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.23
-# Wed Feb 6 18:24:38 2008
-#
-CONFIG_X86_32=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_SEMAPHORE_SLEEPERS=y
-CONFIG_X86=y
-CONFIG_MMU=y
-CONFIG_ZONE_DMA=y
-CONFIG_QUICKLIST=y
-CONFIG_GENERIC_ISA_DMA=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_DMI=y
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-CONFIG_POSIX_MQUEUE=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-CONFIG_AUDIT=y
-CONFIG_AUDITSYSCALL=y
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=15
-# CONFIG_CPUSETS is not set
-# CONFIG_SYSFS_DEPRECATED is not set
-# CONFIG_RELAY is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-# CONFIG_MODULE_UNLOAD is not set
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-CONFIG_STOP_MACHINE=y
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-# CONFIG_IOSCHED_AS is not set
-# CONFIG_IOSCHED_DEADLINE is not set
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_DEFAULT_AS is not set
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-
-#
-# Processor type and features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_SMP=y
-CONFIG_X86_PC=y
-# CONFIG_X86_ELAN is not set
-# CONFIG_X86_VOYAGER is not set
-# CONFIG_X86_NUMAQ is not set
-# CONFIG_X86_SUMMIT is not set
-# CONFIG_X86_BIGSMP is not set
-# CONFIG_X86_VISWS is not set
-# CONFIG_X86_GENERICARCH is not set
-# CONFIG_X86_ES7000 is not set
-# CONFIG_PARAVIRT is not set
-# CONFIG_M386 is not set
-# CONFIG_M486 is not set
-# CONFIG_M586 is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M586MMX is not set
-# CONFIG_M686 is not set
-CONFIG_MPENTIUMII=y
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MCORE2 is not set
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_MWINCHIP2 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MVIAC3_2 is not set
-# CONFIG_MVIAC7 is not set
-CONFIG_X86_GENERIC=y
-CONFIG_X86_CMPXCHG=y
-CONFIG_X86_L1_CACHE_SHIFT=7
-CONFIG_X86_XADD=y
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_INVLPG=y
-CONFIG_X86_BSWAP=y
-CONFIG_X86_POPAD_OK=y
-CONFIG_X86_GOOD_APIC=y
-CONFIG_X86_INTEL_USERCOPY=y
-CONFIG_X86_USE_PPRO_CHECKSUM=y
-CONFIG_X86_TSC=y
-CONFIG_X86_CMOV=y
-CONFIG_X86_MINIMUM_CPU_FAMILY=4
-CONFIG_HPET_TIMER=y
-CONFIG_NR_CPUS=8
-CONFIG_SCHED_SMT=y
-CONFIG_SCHED_MC=y
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_PREEMPT_BKL=y
-CONFIG_X86_LOCAL_APIC=y
-CONFIG_X86_IO_APIC=y
-CONFIG_X86_MCE=y
-CONFIG_X86_MCE_NONFATAL=y
-CONFIG_X86_MCE_P4THERMAL=y
-CONFIG_VM86=y
-# CONFIG_TOSHIBA is not set
-# CONFIG_I8K is not set
-# CONFIG_X86_REBOOTFIXUPS is not set
-# CONFIG_MICROCODE is not set
-# CONFIG_X86_MSR is not set
-# CONFIG_X86_CPUID is not set
-
-#
-# Firmware Drivers
-#
-# CONFIG_EDD is not set
-# CONFIG_DELL_RBU is not set
-# CONFIG_DCDBAS is not set
-CONFIG_DMIID=y
-CONFIG_NOHIGHMEM=y
-# CONFIG_HIGHMEM4G is not set
-# CONFIG_HIGHMEM64G is not set
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_3G_OPT is not set
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_2G_OPT is not set
-# CONFIG_VMSPLIT_1G is not set
-CONFIG_PAGE_OFFSET=0xC0000000
-# CONFIG_X86_PAE is not set
-CONFIG_ARCH_FLATMEM_ENABLE=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_SPARSEMEM_STATIC=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_NR_QUICK=1
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_MATH_EMULATION is not set
-CONFIG_MTRR=y
-# CONFIG_EFI is not set
-CONFIG_IRQBALANCE=y
-CONFIG_SECCOMP=y
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-# CONFIG_HZ_300 is not set
-# CONFIG_HZ_1000 is not set
-CONFIG_HZ=250
-CONFIG_KEXEC=y
-CONFIG_PHYSICAL_START=0x100000
-# CONFIG_RELOCATABLE is not set
-CONFIG_PHYSICAL_ALIGN=0x100000
-CONFIG_HOTPLUG_CPU=y
-# CONFIG_COMPAT_VDSO is not set
-
-#
-# Power management options (ACPI, APM)
-#
-CONFIG_PM=y
-CONFIG_PM_LEGACY=y
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP_SMP=y
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND_SMP_POSSIBLE=y
-CONFIG_SUSPEND=y
-CONFIG_HIBERNATION_SMP_POSSIBLE=y
-# CONFIG_HIBERNATION is not set
-CONFIG_ACPI=y
-CONFIG_ACPI_SLEEP=y
-CONFIG_ACPI_PROCFS=y
-CONFIG_ACPI_PROC_EVENT=y
-CONFIG_ACPI_AC=y
-CONFIG_ACPI_BATTERY=y
-CONFIG_ACPI_BUTTON=y
-CONFIG_ACPI_FAN=y
-# CONFIG_ACPI_DOCK is not set
-CONFIG_ACPI_PROCESSOR=y
-CONFIG_ACPI_HOTPLUG_CPU=y
-CONFIG_ACPI_THERMAL=y
-# CONFIG_ACPI_ASUS is not set
-# CONFIG_ACPI_TOSHIBA is not set
-CONFIG_ACPI_BLACKLIST_YEAR=0
-# CONFIG_ACPI_DEBUG is not set
-CONFIG_ACPI_EC=y
-CONFIG_ACPI_POWER=y
-CONFIG_ACPI_SYSTEM=y
-CONFIG_X86_PM_TIMER=y
-CONFIG_ACPI_CONTAINER=y
-# CONFIG_ACPI_SBS is not set
-# CONFIG_APM is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
-#
-CONFIG_PCI=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GOMMCONFIG is not set
-# CONFIG_PCI_GODIRECT is not set
-CONFIG_PCI_GOANY=y
-CONFIG_PCI_BIOS=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_MMCONFIG=y
-CONFIG_PCIEPORTBUS=y
-CONFIG_PCIEAER=y
-CONFIG_ARCH_SUPPORTS_MSI=y
-CONFIG_PCI_MSI=y
-CONFIG_HT_IRQ=y
-CONFIG_ISA_DMA_API=y
-CONFIG_ISA=y
-# CONFIG_EISA is not set
-# CONFIG_MCA is not set
-# CONFIG_SCx200 is not set
-CONFIG_K8_NB=y
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-# CONFIG_HOTPLUG_PCI is not set
-
-#
-# Executable file formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-# CONFIG_PACKET_MMAP is not set
-CONFIG_UNIX=y
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
-# CONFIG_INET_XFRM_MODE_TUNNEL is not set
-# CONFIG_INET_XFRM_MODE_BEET is not set
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IP_VS is not set
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NF_CONNTRACK is not set
-CONFIG_NETFILTER_XTABLES=m
-# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-# CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-# CONFIG_WIRELESS_EXT is not set
-# CONFIG_MAC80211 is not set
-# CONFIG_IEEE80211 is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=m
-# CONFIG_SYS_HYPERVISOR is not set
-CONFIG_CONNECTOR=y
-CONFIG_PROC_EVENTS=y
-# CONFIG_MTD is not set
-# CONFIG_PARPORT is not set
-CONFIG_PNP=y
-# CONFIG_PNP_DEBUG is not set
-
-#
-# Protocols
-#
-# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
-CONFIG_PNPACPI=y
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-# CONFIG_BLK_DEV_LOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=1
-CONFIG_BLK_DEV_RAM_SIZE=81920
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_IBM_ASM is not set
-# CONFIG_PHANTOM is not set
-# CONFIG_EEPROM_93CX6 is not set
-# CONFIG_SGI_IOC4 is not set
-# CONFIG_TIFM_CORE is not set
-# CONFIG_SONY_LAPTOP is not set
-# CONFIG_THINKPAD_ACPI is not set
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-CONFIG_CHR_DEV_SG=y
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_7000FASST is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AHA1542 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_AIC94XX is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_ARCMSR is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-# CONFIG_SCSI_HPTIOP is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_GENERIC_NCR5380 is not set
-# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_STEX is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_QLA_ISCSI is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_SEAGATE is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_ULTRASTOR is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_SRP is not set
-# CONFIG_ATA is not set
-# CONFIG_MD is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-# CONFIG_FUSION_SPI is not set
-# CONFIG_FUSION_FC is not set
-# CONFIG_FUSION_SAS is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_FIREWIRE is not set
-# CONFIG_IEEE1394 is not set
-# CONFIG_I2O is not set
-# CONFIG_MACINTOSH_DRIVERS is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_NET_SB1000 is not set
-# CONFIG_ARCNET is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-CONFIG_NET_VENDOR_3COM=y
-# CONFIG_EL1 is not set
-# CONFIG_EL2 is not set
-# CONFIG_ELPLUS is not set
-# CONFIG_EL16 is not set
-# CONFIG_EL3 is not set
-# CONFIG_3C515 is not set
-CONFIG_VORTEX=m
-CONFIG_TYPHOON=m
-CONFIG_LANCE=m
-CONFIG_NET_VENDOR_SMC=y
-CONFIG_WD80x3=m
-CONFIG_ULTRA=m
-CONFIG_SMC9194=m
-# CONFIG_NET_VENDOR_RACAL is not set
-CONFIG_NET_TULIP=y
-# CONFIG_DE2104X is not set
-CONFIG_TULIP=m
-CONFIG_TULIP_MWI=y
-CONFIG_TULIP_MMIO=y
-CONFIG_TULIP_NAPI=y
-CONFIG_TULIP_NAPI_HW_MITIGATION=y
-CONFIG_DE4X5=m
-CONFIG_WINBOND_840=m
-CONFIG_DM9102=m
-CONFIG_ULI526X=m
-CONFIG_AT1700=m
-CONFIG_DEPCA=m
-CONFIG_HP100=m
-CONFIG_NET_ISA=y
-# CONFIG_E2100 is not set
-# CONFIG_EWRK3 is not set
-# CONFIG_EEXPRESS is not set
-# CONFIG_EEXPRESS_PRO is not set
-# CONFIG_HPLAN_PLUS is not set
-# CONFIG_HPLAN is not set
-# CONFIG_LP486E is not set
-# CONFIG_ETH16I is not set
-CONFIG_NE2000=y
-# CONFIG_ZNET is not set
-# CONFIG_SEEQ8005 is not set
-CONFIG_NET_PCI=y
-CONFIG_PCNET32=m
-CONFIG_PCNET32_NAPI=y
-CONFIG_AMD8111_ETH=m
-CONFIG_AMD8111E_NAPI=y
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_ADAPTEC_STARFIRE_NAPI=y
-CONFIG_AC3200=m
-CONFIG_APRICOT=m
-CONFIG_B44=m
-CONFIG_FORCEDETH=m
-CONFIG_FORCEDETH_NAPI=y
-CONFIG_CS89x0=m
-CONFIG_DGRS=m
-CONFIG_EEPRO100=m
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=y
-CONFIG_8139CP=m
-CONFIG_8139TOO=m
-CONFIG_8139TOO_PIO=y
-CONFIG_8139TOO_TUNE_TWISTER=y
-CONFIG_8139TOO_8129=y
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SUNDANCE=m
-CONFIG_SUNDANCE_MMIO=y
-CONFIG_TLAN=m
-CONFIG_VIA_RHINE=m
-CONFIG_VIA_RHINE_MMIO=y
-CONFIG_VIA_RHINE_NAPI=y
-CONFIG_SC92031=m
-CONFIG_NETDEV_1000=y
-CONFIG_ACENIC=m
-CONFIG_ACENIC_OMIT_TIGON_I=y
-CONFIG_DL2K=m
-CONFIG_E1000=m
-CONFIG_E1000_NAPI=y
-# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
-CONFIG_NS83820=m
-CONFIG_HAMACHI=m
-CONFIG_YELLOWFIN=m
-CONFIG_R8169=m
-CONFIG_R8169_NAPI=y
-CONFIG_SIS190=m
-CONFIG_SKGE=m
-CONFIG_SKY2=m
-CONFIG_SK98LIN=m
-CONFIG_VIA_VELOCITY=m
-CONFIG_TIGON3=m
-CONFIG_BNX2=m
-CONFIG_QLA3XXX=m
-CONFIG_ATL1=m
-CONFIG_NETDEV_10000=y
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_CHELSIO_T3 is not set
-# CONFIG_IXGB is not set
-# CONFIG_S2IO is not set
-# CONFIG_MYRI10GE is not set
-# CONFIG_NETXEN_NIC is not set
-# CONFIG_MLX4_CORE is not set
-# CONFIG_TR is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-# CONFIG_WLAN_80211 is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_USBNET_MII is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_WAN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-# CONFIG_NET_FC is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_ISDN is not set
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-# CONFIG_INPUT_POWER is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_LIFEBOOK=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-# CONFIG_MOUSE_PS2_TOUCHKIT is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_APPLETOUCH is not set
-# CONFIG_MOUSE_INPORT is not set
-# CONFIG_MOUSE_LOGIBM is not set
-# CONFIG_MOUSE_PC110PAD is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-# CONFIG_SERIO_SERPORT is not set
-# CONFIG_SERIO_CT82C710 is not set
-# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-# CONFIG_SERIAL_8250_CONSOLE is not set
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_PNP=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_IPMI_HANDLER is not set
-# CONFIG_WATCHDOG is not set
-# CONFIG_HW_RANDOM is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-# CONFIG_GEN_RTC is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
-CONFIG_AGP=m
-CONFIG_AGP_ALI=m
-CONFIG_AGP_ATI=m
-CONFIG_AGP_AMD=m
-CONFIG_AGP_AMD64=m
-CONFIG_AGP_INTEL=m
-CONFIG_AGP_NVIDIA=m
-CONFIG_AGP_SIS=m
-CONFIG_AGP_SWORKS=m
-CONFIG_AGP_VIA=m
-CONFIG_AGP_EFFICEON=m
-# CONFIG_DRM is not set
-# CONFIG_MWAVE is not set
-# CONFIG_PC8736x_GPIO is not set
-# CONFIG_NSC_GPIO is not set
-# CONFIG_CS5535_GPIO is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_HPET is not set
-# CONFIG_HANGCHECK_TIMER is not set
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-CONFIG_DEVPORT=y
-# CONFIG_I2C is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-# CONFIG_W1 is not set
-# CONFIG_POWER_SUPPLY is not set
-# CONFIG_HWMON is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-# CONFIG_HTC_ASIC3 is not set
-# CONFIG_HTC_ASIC3_DS1WM is not set
-
-#
-# Multi-Function Devices
-#
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_STRADIS is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-# CONFIG_USB_QUICKCAM_MESSENGER is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_USB_OV511 is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_STV680 is not set
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_ZR364XX is not set
-CONFIG_RADIO_ADAPTERS=y
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_SF16FMR2 is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_DVB_CORE is not set
-CONFIG_DAB=y
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-CONFIG_VGASTATE=y
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-CONFIG_FIRMWARE_EDID=y
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FOPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_CIRRUS is not set
-# CONFIG_FB_PM2 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_ARC is not set
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-# CONFIG_FB_VGA16 is not set
-CONFIG_FB_UVESA=m
-# CONFIG_FB_VESA is not set
-# CONFIG_FB_HECUBA is not set
-# CONFIG_FB_HGA is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_NVIDIA is not set
-# CONFIG_FB_RIVA is not set
-# CONFIG_FB_I810 is not set
-# CONFIG_FB_LE80578 is not set
-# CONFIG_FB_INTEL is not set
-# CONFIG_FB_MATROX is not set
-# CONFIG_FB_RADEON is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_S3 is not set
-# CONFIG_FB_SAVAGE is not set
-# CONFIG_FB_SIS is not set
-# CONFIG_FB_NEOMAGIC is not set
-# CONFIG_FB_KYRO is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VOODOO1 is not set
-# CONFIG_FB_VT8623 is not set
-# CONFIG_FB_CYBLA is not set
-# CONFIG_FB_TRIDENT is not set
-# CONFIG_FB_ARK is not set
-# CONFIG_FB_PM3 is not set
-# CONFIG_FB_GEODE is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-CONFIG_VGA_CONSOLE=y
-# CONFIG_VGACON_SOFT_SCROLLBACK is not set
-CONFIG_VIDEO_SELECT=y
-# CONFIG_MDA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_SEQUENCER=y
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=y
-CONFIG_SND_PCM_OSS=y
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=y
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ISA devices
-#
-# CONFIG_SND_ADLIB is not set
-# CONFIG_SND_AD1816A is not set
-# CONFIG_SND_AD1848 is not set
-# CONFIG_SND_ALS100 is not set
-# CONFIG_SND_AZT2320 is not set
-# CONFIG_SND_CMI8330 is not set
-# CONFIG_SND_CS4231 is not set
-# CONFIG_SND_CS4232 is not set
-# CONFIG_SND_CS4236 is not set
-# CONFIG_SND_DT019X is not set
-# CONFIG_SND_ES968 is not set
-# CONFIG_SND_ES1688 is not set
-# CONFIG_SND_ES18XX is not set
-# CONFIG_SND_GUSCLASSIC is not set
-# CONFIG_SND_GUSEXTREME is not set
-# CONFIG_SND_GUSMAX is not set
-# CONFIG_SND_INTERWAVE is not set
-# CONFIG_SND_INTERWAVE_STB is not set
-# CONFIG_SND_OPL3SA2 is not set
-# CONFIG_SND_OPTI92X_AD1848 is not set
-# CONFIG_SND_OPTI92X_CS4231 is not set
-# CONFIG_SND_OPTI93X is not set
-# CONFIG_SND_MIRO is not set
-# CONFIG_SND_SB8 is not set
-# CONFIG_SND_SB16 is not set
-# CONFIG_SND_SBAWE is not set
-# CONFIG_SND_SGALAXY is not set
-# CONFIG_SND_SSCAPE is not set
-# CONFIG_SND_WAVEFRONT is not set
-
-#
-# PCI devices
-#
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS300 is not set
-# CONFIG_SND_ALS4000 is not set
-# CONFIG_SND_ALI5451 is not set
-# CONFIG_SND_ATIIXP is not set
-# CONFIG_SND_ATIIXP_MODEM is not set
-# CONFIG_SND_AU8810 is not set
-# CONFIG_SND_AU8820 is not set
-# CONFIG_SND_AU8830 is not set
-# CONFIG_SND_AZT3328 is not set
-# CONFIG_SND_BT87X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_CMIPCI is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_CS46XX is not set
-# CONFIG_SND_CS5530 is not set
-# CONFIG_SND_CS5535AUDIO is not set
-# CONFIG_SND_DARLA20 is not set
-# CONFIG_SND_GINA20 is not set
-# CONFIG_SND_LAYLA20 is not set
-# CONFIG_SND_DARLA24 is not set
-# CONFIG_SND_GINA24 is not set
-# CONFIG_SND_LAYLA24 is not set
-# CONFIG_SND_MONA is not set
-# CONFIG_SND_MIA is not set
-# CONFIG_SND_ECHO3G is not set
-# CONFIG_SND_INDIGO is not set
-# CONFIG_SND_INDIGOIO is not set
-# CONFIG_SND_INDIGODJ is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_ENS1370 is not set
-# CONFIG_SND_ENS1371 is not set
-# CONFIG_SND_ES1938 is not set
-# CONFIG_SND_ES1968 is not set
-# CONFIG_SND_FM801 is not set
-# CONFIG_SND_HDA_INTEL is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_ICE1712 is not set
-# CONFIG_SND_ICE1724 is not set
-CONFIG_SND_INTEL8X0=y
-# CONFIG_SND_INTEL8X0M is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_MAESTRO3 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_PCXHR is not set
-# CONFIG_SND_RIPTIDE is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_SONICVIBES is not set
-# CONFIG_SND_TRIDENT is not set
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_YMFPCI is not set
-CONFIG_SND_AC97_POWER_SAVE=y
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-# CONFIG_SND_USB_USX2Y is not set
-# CONFIG_SND_USB_CAIAQ is not set
-
-#
-# System on Chip audio support
-#
-# CONFIG_SND_SOC is not set
-
-#
-# SoC Audio support for SuperH
-#
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-CONFIG_AC97_BUS=y
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HID_DEBUG is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-CONFIG_USB_SUSPEND=y
-# CONFIG_USB_PERSIST is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_SPLIT_ISO=y
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-# CONFIG_USB_EHCI_TT_NEWSCHED is not set
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=y
-# CONFIG_USB_SL811_HCD is not set
-# CONFIG_USB_R8A66597_HCD is not set
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-# CONFIG_USB_STORAGE is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_MON is not set
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_ADUTUX is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_BERRY_CHARGE is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_PHIDGET is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_SISUSBVGA is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-# CONFIG_MMC is not set
-# CONFIG_NEW_LEDS is not set
-# CONFIG_INFINIBAND is not set
-# CONFIG_EDAC is not set
-# CONFIG_RTC_CLASS is not set
-
-#
-# DMA Engine support
-#
-# CONFIG_DMA_ENGINE is not set
-
-#
-# DMA Clients
-#
-
-#
-# DMA Devices
-#
-CONFIG_VIRTUALIZATION=y
-# CONFIG_KVM is not set
-
-#
-# Userspace I/O
-#
-# CONFIG_UIO is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=m
-CONFIG_EXT3_FS_XATTR=y
-# CONFIG_EXT3_FS_POSIX_ACL is not set
-# CONFIG_EXT3_FS_SECURITY is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FS_MBCACHE=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-# CONFIG_ZISOFS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-# CONFIG_MSDOS_FS is not set
-# CONFIG_VFAT_FS is not set
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_KCORE=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLBFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_SQUASHFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=y
-# CONFIG_NFS_V3 is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-# CONFIG_ROOT_NFS is not set
-CONFIG_LOCKD=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-# CONFIG_SUNRPC_BIND34 is not set
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="utf-8"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
-
-#
-# Distributed Lock Manager
-#
-# CONFIG_DLM is not set
-CONFIG_INSTRUMENTATION=y
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=y
-# CONFIG_KPROBES is not set
-
-#
-# Kernel hacking
-#
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_KERNEL is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_EARLY_PRINTK=y
-CONFIG_X86_FIND_SMP_CONFIG=y
-CONFIG_X86_MPPARSE=y
-CONFIG_DOUBLEFAULT=y
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=m
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_MANAGER=m
-# CONFIG_CRYPTO_HMAC is not set
-# CONFIG_CRYPTO_XCBC is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_MD4 is not set
-# CONFIG_CRYPTO_MD5 is not set
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_WP512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-# CONFIG_CRYPTO_DES is not set
-# CONFIG_CRYPTO_FCRYPT is not set
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_TWOFISH_586 is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
-# CONFIG_CRYPTO_AES_586 is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_ARC4 is not set
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_LZO is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_CRC32C is not set
-# CONFIG_CRYPTO_CAMELLIA is not set
-# CONFIG_CRYPTO_TEST is not set
-CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_DEV_PADLOCK=m
-CONFIG_CRYPTO_DEV_PADLOCK_AES=m
-CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
-CONFIG_CRYPTO_DEV_GEODE=m
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=m
-# CONFIG_CRC16 is not set
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-CONFIG_LIBCRC32C=m
-CONFIG_AUDIT_GENERIC=y
-CONFIG_ZLIB_INFLATE=m
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_X86_SMP=y
-CONFIG_X86_HT=y
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_TRAMPOLINE=y
-CONFIG_KTIME_SCALAR=y
diff --git a/meta/recipes-kernel/linux/linux-rp-2.6.24/defconfig-bootcdx86 b/meta/recipes-kernel/linux/linux-rp-2.6.24/defconfig-bootcdx86
deleted file mode 100644
index 397468a366..0000000000
--- a/meta/recipes-kernel/linux/linux-rp-2.6.24/defconfig-bootcdx86
+++ /dev/null
@@ -1,1994 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.24-rc8
-# Sun Jan 20 18:34:58 2008
-#
-# CONFIG_64BIT is not set
-CONFIG_X86_32=y
-# CONFIG_X86_64 is not set
-CONFIG_X86=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_SEMAPHORE_SLEEPERS=y
-CONFIG_MMU=y
-CONFIG_ZONE_DMA=y
-CONFIG_QUICKLIST=y
-CONFIG_GENERIC_ISA_DMA=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_DMI=y
-# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-# CONFIG_GENERIC_TIME_VSYSCALL is not set
-CONFIG_ARCH_SUPPORTS_OPROFILE=y
-# CONFIG_ZONE_DMA32 is not set
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-# CONFIG_AUDIT_ARCH is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_X86_SMP=y
-CONFIG_X86_HT=y
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_TRAMPOLINE=y
-CONFIG_KTIME_SCALAR=y
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-CONFIG_POSIX_MQUEUE=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-CONFIG_AUDIT=y
-CONFIG_AUDITSYSCALL=y
-CONFIG_AUDIT_TREE=y
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=15
-# CONFIG_CGROUPS is not set
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_FAIR_USER_SCHED=y
-# CONFIG_FAIR_CGROUP_SCHED is not set
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-CONFIG_STOP_MACHINE=y
-CONFIG_BLOCK=y
-CONFIG_LBD=y
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# Processor type and features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_SMP=y
-CONFIG_X86_PC=y
-# CONFIG_X86_ELAN is not set
-# CONFIG_X86_VOYAGER is not set
-# CONFIG_X86_NUMAQ is not set
-# CONFIG_X86_SUMMIT is not set
-# CONFIG_X86_BIGSMP is not set
-# CONFIG_X86_VISWS is not set
-# CONFIG_X86_GENERICARCH is not set
-# CONFIG_X86_ES7000 is not set
-# CONFIG_X86_VSMP is not set
-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
-# CONFIG_PARAVIRT_GUEST is not set
-# CONFIG_M386 is not set
-# CONFIG_M486 is not set
-# CONFIG_M586 is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M586MMX is not set
-CONFIG_M686=y
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_MWINCHIP2 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MVIAC3_2 is not set
-# CONFIG_MVIAC7 is not set
-# CONFIG_MPSC is not set
-# CONFIG_MCORE2 is not set
-# CONFIG_GENERIC_CPU is not set
-CONFIG_X86_GENERIC=y
-CONFIG_X86_CMPXCHG=y
-CONFIG_X86_L1_CACHE_SHIFT=7
-CONFIG_X86_XADD=y
-CONFIG_X86_PPRO_FENCE=y
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_INVLPG=y
-CONFIG_X86_BSWAP=y
-CONFIG_X86_POPAD_OK=y
-CONFIG_X86_GOOD_APIC=y
-CONFIG_X86_INTEL_USERCOPY=y
-CONFIG_X86_USE_PPRO_CHECKSUM=y
-CONFIG_X86_TSC=y
-CONFIG_X86_CMOV=y
-CONFIG_X86_MINIMUM_CPU_FAMILY=4
-CONFIG_HPET_TIMER=y
-CONFIG_NR_CPUS=8
-CONFIG_SCHED_SMT=y
-CONFIG_SCHED_MC=y
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_PREEMPT_BKL=y
-CONFIG_X86_LOCAL_APIC=y
-CONFIG_X86_IO_APIC=y
-CONFIG_X86_MCE=y
-CONFIG_X86_MCE_NONFATAL=y
-CONFIG_X86_MCE_P4THERMAL=y
-CONFIG_VM86=y
-# CONFIG_TOSHIBA is not set
-# CONFIG_I8K is not set
-# CONFIG_X86_REBOOTFIXUPS is not set
-# CONFIG_MICROCODE is not set
-# CONFIG_X86_MSR is not set
-# CONFIG_X86_CPUID is not set
-CONFIG_NOHIGHMEM=y
-# CONFIG_HIGHMEM4G is not set
-# CONFIG_HIGHMEM64G is not set
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_3G_OPT is not set
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_2G_OPT is not set
-# CONFIG_VMSPLIT_1G is not set
-CONFIG_PAGE_OFFSET=0xC0000000
-# CONFIG_X86_PAE is not set
-CONFIG_ARCH_FLATMEM_ENABLE=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_SPARSEMEM_STATIC=y
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_NR_QUICK=1
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_MATH_EMULATION is not set
-CONFIG_MTRR=y
-# CONFIG_EFI is not set
-CONFIG_IRQBALANCE=y
-CONFIG_SECCOMP=y
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-# CONFIG_HZ_300 is not set
-# CONFIG_HZ_1000 is not set
-CONFIG_HZ=250
-CONFIG_KEXEC=y
-CONFIG_PHYSICAL_START=0x100000
-# CONFIG_RELOCATABLE is not set
-CONFIG_PHYSICAL_ALIGN=0x100000
-CONFIG_HOTPLUG_CPU=y
-CONFIG_COMPAT_VDSO=y
-
-#
-# Power management options
-#
-CONFIG_PM=y
-CONFIG_PM_LEGACY=y
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP_SMP=y
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND_SMP_POSSIBLE=y
-CONFIG_SUSPEND=y
-CONFIG_HIBERNATION_SMP_POSSIBLE=y
-# CONFIG_HIBERNATION is not set
-CONFIG_ACPI=y
-CONFIG_ACPI_SLEEP=y
-# CONFIG_ACPI_PROCFS is not set
-CONFIG_ACPI_PROCFS_POWER=y
-CONFIG_ACPI_SYSFS_POWER=y
-CONFIG_ACPI_PROC_EVENT=y
-CONFIG_ACPI_AC=y
-CONFIG_ACPI_BATTERY=y
-CONFIG_ACPI_BUTTON=y
-# CONFIG_ACPI_VIDEO is not set
-CONFIG_ACPI_FAN=y
-# CONFIG_ACPI_DOCK is not set
-CONFIG_ACPI_PROCESSOR=y
-CONFIG_ACPI_HOTPLUG_CPU=y
-CONFIG_ACPI_THERMAL=y
-# CONFIG_ACPI_ASUS is not set
-# CONFIG_ACPI_TOSHIBA is not set
-CONFIG_ACPI_BLACKLIST_YEAR=0
-# CONFIG_ACPI_DEBUG is not set
-CONFIG_ACPI_EC=y
-CONFIG_ACPI_POWER=y
-CONFIG_ACPI_SYSTEM=y
-CONFIG_X86_PM_TIMER=y
-CONFIG_ACPI_CONTAINER=y
-# CONFIG_ACPI_SBS is not set
-# CONFIG_APM is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-# CONFIG_CPU_IDLE is not set
-
-#
-# Bus options (PCI etc.)
-#
-CONFIG_PCI=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GOMMCONFIG is not set
-# CONFIG_PCI_GODIRECT is not set
-CONFIG_PCI_GOANY=y
-CONFIG_PCI_BIOS=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_MMCONFIG=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCIEPORTBUS=y
-CONFIG_PCIEAER=y
-CONFIG_ARCH_SUPPORTS_MSI=y
-CONFIG_PCI_MSI=y
-CONFIG_PCI_LEGACY=y
-CONFIG_HT_IRQ=y
-CONFIG_ISA_DMA_API=y
-CONFIG_ISA=y
-# CONFIG_EISA is not set
-# CONFIG_MCA is not set
-# CONFIG_SCx200 is not set
-CONFIG_K8_NB=y
-# CONFIG_PCCARD is not set
-# CONFIG_HOTPLUG_PCI is not set
-
-#
-# Executable file formats / Emulations
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-# CONFIG_INET_LRO is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NF_CONNTRACK is not set
-CONFIG_NETFILTER_XTABLES=m
-# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
-# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-# CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_TIME is not set
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-# CONFIG_KINGSUN_DONGLE is not set
-# CONFIG_KSDAZZLE_DONGLE is not set
-# CONFIG_KS959_DONGLE is not set
-
-#
-# Old SIR device drivers
-#
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-# CONFIG_VIA_FIR is not set
-# CONFIG_MCS_FIR is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-# CONFIG_BT_HCIUART_LL is not set
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIVHCI=m
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-CONFIG_WIRELESS_EXT=y
-# CONFIG_MAC80211 is not set
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-CONFIG_IEEE80211_SOFTMAC=m
-# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_SYS_HYPERVISOR is not set
-CONFIG_CONNECTOR=y
-CONFIG_PROC_EVENTS=y
-# CONFIG_MTD is not set
-CONFIG_PARPORT=y
-CONFIG_PARPORT_PC=y
-# CONFIG_PARPORT_SERIAL is not set
-# CONFIG_PARPORT_PC_FIFO is not set
-# CONFIG_PARPORT_PC_SUPERIO is not set
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_AX88796 is not set
-# CONFIG_PARPORT_1284 is not set
-CONFIG_PNP=y
-# CONFIG_PNP_DEBUG is not set
-
-#
-# Protocols
-#
-# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
-CONFIG_PNPACPI=y
-CONFIG_BLK_DEV=y
-CONFIG_BLK_DEV_FD=y
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=65536
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_IBM_ASM is not set
-# CONFIG_PHANTOM is not set
-# CONFIG_EEPROM_93CX6 is not set
-# CONFIG_SGI_IOC4 is not set
-# CONFIG_TIFM_CORE is not set
-# CONFIG_ASUS_LAPTOP is not set
-# CONFIG_FUJITSU_LAPTOP is not set
-# CONFIG_MSI_LAPTOP is not set
-# CONFIG_SONY_LAPTOP is not set
-# CONFIG_THINKPAD_ACPI is not set
-CONFIG_IDE=y
-CONFIG_IDE_MAX_HWIFS=4
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-# CONFIG_BLK_DEV_HD_IDE is not set
-CONFIG_BLK_DEV_IDEDISK=y
-CONFIG_IDEDISK_MULTI_MODE=y
-CONFIG_BLK_DEV_IDECD=y
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_BLK_DEV_IDEACPI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_PROC_FS=y
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_BLK_DEV_PLATFORM is not set
-CONFIG_BLK_DEV_CMD640=y
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_IDEPNP is not set
-
-#
-# PCI IDE chipsets support
-#
-CONFIG_BLK_DEV_IDEPCI=y
-CONFIG_IDEPCI_SHARE_IRQ=y
-CONFIG_IDEPCI_PCIBUS_ORDER=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=y
-# CONFIG_BLK_DEV_OPTI621 is not set
-CONFIG_BLK_DEV_RZ1000=y
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-# CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_BLK_DEV_ALI15X3 is not set
-# CONFIG_BLK_DEV_AMD74XX is not set
-# CONFIG_BLK_DEV_ATIIXP is not set
-# CONFIG_BLK_DEV_CMD64X is not set
-# CONFIG_BLK_DEV_TRIFLEX is not set
-# CONFIG_BLK_DEV_CY82C693 is not set
-# CONFIG_BLK_DEV_CS5520 is not set
-# CONFIG_BLK_DEV_CS5530 is not set
-# CONFIG_BLK_DEV_CS5535 is not set
-# CONFIG_BLK_DEV_HPT34X is not set
-# CONFIG_BLK_DEV_HPT366 is not set
-# CONFIG_BLK_DEV_JMICRON is not set
-# CONFIG_BLK_DEV_SC1200 is not set
-CONFIG_BLK_DEV_PIIX=y
-# CONFIG_BLK_DEV_IT8213 is not set
-# CONFIG_BLK_DEV_IT821X is not set
-# CONFIG_BLK_DEV_NS87415 is not set
-# CONFIG_BLK_DEV_PDC202XX_OLD is not set
-# CONFIG_BLK_DEV_PDC202XX_NEW is not set
-# CONFIG_BLK_DEV_SVWKS is not set
-# CONFIG_BLK_DEV_SIIMAGE is not set
-# CONFIG_BLK_DEV_SIS5513 is not set
-# CONFIG_BLK_DEV_SLC90E66 is not set
-# CONFIG_BLK_DEV_TRM290 is not set
-# CONFIG_BLK_DEV_VIA82CXXX is not set
-# CONFIG_BLK_DEV_TC86C001 is not set
-# CONFIG_IDE_ARM is not set
-
-#
-# Other IDE chipsets support
-#
-
-#
-# Note: most of these also require special kernel boot parameters
-#
-# CONFIG_BLK_DEV_4DRIVES is not set
-# CONFIG_BLK_DEV_ALI14XX is not set
-# CONFIG_BLK_DEV_DTC2278 is not set
-# CONFIG_BLK_DEV_HT6560B is not set
-# CONFIG_BLK_DEV_QD65XX is not set
-# CONFIG_BLK_DEV_UMC8672 is not set
-CONFIG_BLK_DEV_IDEDMA=y
-CONFIG_IDE_ARCH_OBSOLETE_INIT=y
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-CONFIG_CHR_DEV_SG=y
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-CONFIG_SCSI_SPI_ATTRS=y
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_7000FASST is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AHA1542 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_AIC94XX is not set
-CONFIG_SCSI_DPT_I2O=m
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_ARCMSR is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-# CONFIG_SCSI_HPTIOP is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_GENERIC_NCR5380 is not set
-# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_PPA is not set
-# CONFIG_SCSI_IMM is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_STEX is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_QLA_ISCSI is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_SEAGATE is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_ULTRASTOR is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_SRP is not set
-# CONFIG_ATA is not set
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-# CONFIG_DM_MULTIPATH_RDAC is not set
-# CONFIG_DM_MULTIPATH_HP is not set
-# CONFIG_DM_DELAY is not set
-# CONFIG_DM_UEVENT is not set
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_FIREWIRE is not set
-# CONFIG_IEEE1394 is not set
-# CONFIG_I2O is not set
-# CONFIG_MACINTOSH_DRIVERS is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_VETH is not set
-# CONFIG_NET_SB1000 is not set
-# CONFIG_ARCNET is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-CONFIG_NET_VENDOR_3COM=y
-# CONFIG_EL1 is not set
-# CONFIG_EL2 is not set
-# CONFIG_ELPLUS is not set
-# CONFIG_EL16 is not set
-# CONFIG_EL3 is not set
-# CONFIG_3C515 is not set
-CONFIG_VORTEX=m
-CONFIG_TYPHOON=m
-CONFIG_LANCE=m
-CONFIG_NET_VENDOR_SMC=y
-CONFIG_WD80x3=m
-CONFIG_ULTRA=m
-CONFIG_SMC9194=m
-# CONFIG_NET_VENDOR_RACAL is not set
-CONFIG_NET_TULIP=y
-# CONFIG_DE2104X is not set
-CONFIG_TULIP=m
-CONFIG_TULIP_MWI=y
-CONFIG_TULIP_MMIO=y
-CONFIG_TULIP_NAPI=y
-CONFIG_TULIP_NAPI_HW_MITIGATION=y
-CONFIG_DE4X5=m
-CONFIG_WINBOND_840=m
-CONFIG_DM9102=m
-CONFIG_ULI526X=m
-CONFIG_AT1700=m
-CONFIG_DEPCA=m
-CONFIG_HP100=m
-CONFIG_NET_ISA=y
-# CONFIG_E2100 is not set
-# CONFIG_EWRK3 is not set
-# CONFIG_EEXPRESS is not set
-# CONFIG_EEXPRESS_PRO is not set
-# CONFIG_HPLAN_PLUS is not set
-# CONFIG_HPLAN is not set
-# CONFIG_LP486E is not set
-# CONFIG_ETH16I is not set
-CONFIG_NE2000=y
-# CONFIG_ZNET is not set
-# CONFIG_SEEQ8005 is not set
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-CONFIG_NET_PCI=y
-CONFIG_PCNET32=m
-CONFIG_PCNET32_NAPI=y
-CONFIG_AMD8111_ETH=m
-CONFIG_AMD8111E_NAPI=y
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_ADAPTEC_STARFIRE_NAPI=y
-CONFIG_AC3200=m
-CONFIG_APRICOT=m
-CONFIG_B44=m
-CONFIG_B44_PCI_AUTOSELECT=y
-CONFIG_B44_PCICORE_AUTOSELECT=y
-CONFIG_B44_PCI=y
-CONFIG_FORCEDETH=m
-CONFIG_FORCEDETH_NAPI=y
-CONFIG_CS89x0=m
-CONFIG_EEPRO100=m
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=y
-CONFIG_8139CP=m
-CONFIG_8139TOO=m
-CONFIG_8139TOO_PIO=y
-CONFIG_8139TOO_TUNE_TWISTER=y
-CONFIG_8139TOO_8129=y
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SUNDANCE=m
-CONFIG_SUNDANCE_MMIO=y
-CONFIG_TLAN=m
-CONFIG_VIA_RHINE=m
-CONFIG_VIA_RHINE_MMIO=y
-CONFIG_VIA_RHINE_NAPI=y
-CONFIG_SC92031=m
-# CONFIG_NET_POCKET is not set
-CONFIG_NETDEV_1000=y
-CONFIG_ACENIC=m
-CONFIG_ACENIC_OMIT_TIGON_I=y
-CONFIG_DL2K=m
-CONFIG_E1000=m
-CONFIG_E1000_NAPI=y
-# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
-# CONFIG_E1000E is not set
-# CONFIG_IP1000 is not set
-CONFIG_NS83820=m
-CONFIG_HAMACHI=m
-CONFIG_YELLOWFIN=m
-CONFIG_R8169=m
-CONFIG_R8169_NAPI=y
-CONFIG_SIS190=m
-CONFIG_SKGE=m
-CONFIG_SKY2=m
-CONFIG_SK98LIN=m
-CONFIG_VIA_VELOCITY=m
-CONFIG_TIGON3=m
-CONFIG_BNX2=m
-CONFIG_QLA3XXX=m
-CONFIG_ATL1=m
-CONFIG_NETDEV_10000=y
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_CHELSIO_T3 is not set
-# CONFIG_IXGBE is not set
-# CONFIG_IXGB is not set
-CONFIG_S2IO=m
-# CONFIG_S2IO_NAPI is not set
-# CONFIG_MYRI10GE is not set
-# CONFIG_NETXEN_NIC is not set
-# CONFIG_NIU is not set
-# CONFIG_MLX4_CORE is not set
-# CONFIG_TEHUTI is not set
-# CONFIG_TR is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-# CONFIG_IPW2100 is not set
-# CONFIG_IPW2200 is not set
-# CONFIG_LIBERTAS is not set
-# CONFIG_AIRO is not set
-CONFIG_HERMES=m
-# CONFIG_PLX_HERMES is not set
-# CONFIG_TMD_HERMES is not set
-# CONFIG_NORTEL_HERMES is not set
-# CONFIG_PCI_HERMES is not set
-# CONFIG_ATMEL is not set
-# CONFIG_PRISM54 is not set
-# CONFIG_USB_ZD1201 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-# CONFIG_HOSTAP_PLX is not set
-# CONFIG_HOSTAP_PCI is not set
-# CONFIG_BCM43XX is not set
-# CONFIG_ZD1211RW is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_WAN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_PPPOL2TP is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_NET_FC is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_ISDN is not set
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_LIFEBOOK=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-# CONFIG_MOUSE_PS2_TOUCHKIT is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_APPLETOUCH is not set
-# CONFIG_MOUSE_INPORT is not set
-# CONFIG_MOUSE_LOGIBM is not set
-# CONFIG_MOUSE_PC110PAD is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TABLET=y
-# CONFIG_TABLET_USB_ACECAD is not set
-# CONFIG_TABLET_USB_AIPTEK is not set
-# CONFIG_TABLET_USB_GTCO is not set
-# CONFIG_TABLET_USB_KBTAB is not set
-CONFIG_TABLET_USB_WACOM=y
-# CONFIG_INPUT_TOUCHSCREEN is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_PCSPKR is not set
-# CONFIG_INPUT_WISTRON_BTNS is not set
-# CONFIG_INPUT_ATLAS_BTNS is not set
-# CONFIG_INPUT_ATI_REMOTE is not set
-# CONFIG_INPUT_ATI_REMOTE2 is not set
-# CONFIG_INPUT_KEYSPAN_REMOTE is not set
-# CONFIG_INPUT_POWERMATE is not set
-# CONFIG_INPUT_YEALINK is not set
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-# CONFIG_SERIO_SERPORT is not set
-# CONFIG_SERIO_CT82C710 is not set
-# CONFIG_SERIO_PARKBD is not set
-# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-# CONFIG_SERIAL_8250_CONSOLE is not set
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_PNP=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-CONFIG_PRINTER=y
-# CONFIG_LP_CONSOLE is not set
-# CONFIG_PPDEV is not set
-# CONFIG_IPMI_HANDLER is not set
-# CONFIG_HW_RANDOM is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-# CONFIG_GEN_RTC is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
-# CONFIG_MWAVE is not set
-# CONFIG_PC8736x_GPIO is not set
-# CONFIG_NSC_GPIO is not set
-# CONFIG_CS5535_GPIO is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_HPET is not set
-# CONFIG_HANGCHECK_TIMER is not set
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-CONFIG_DEVPORT=y
-# CONFIG_I2C is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-# CONFIG_W1 is not set
-CONFIG_POWER_SUPPLY=y
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-# CONFIG_PDA_POWER is not set
-# CONFIG_BATTERY_DS2760 is not set
-# CONFIG_HWMON is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB_POSSIBLE=y
-CONFIG_SSB=m
-CONFIG_SSB_PCIHOST_POSSIBLE=y
-CONFIG_SSB_PCIHOST=y
-# CONFIG_SSB_SILENT is not set
-# CONFIG_SSB_DEBUG is not set
-CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
-CONFIG_SSB_DRIVER_PCICORE=y
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-# CONFIG_HTC_ASIC3 is not set
-# CONFIG_HTC_ASIC3_DS1WM is not set
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_STRADIS is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-# CONFIG_USB_QUICKCAM_MESSENGER is not set
-# CONFIG_USB_ET61X251 is not set
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_ZR364XX is not set
-CONFIG_RADIO_ADAPTERS=y
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_SF16FMR2 is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-CONFIG_USB_DSBR=m
-# CONFIG_DVB_CORE is not set
-CONFIG_DAB=y
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-CONFIG_AGP=m
-CONFIG_AGP_ALI=m
-CONFIG_AGP_ATI=m
-CONFIG_AGP_AMD=m
-CONFIG_AGP_AMD64=m
-CONFIG_AGP_INTEL=m
-CONFIG_AGP_NVIDIA=m
-CONFIG_AGP_SIS=m
-CONFIG_AGP_SWORKS=m
-CONFIG_AGP_VIA=m
-CONFIG_AGP_EFFICEON=m
-CONFIG_DRM=m
-# CONFIG_DRM_TDFX is not set
-# CONFIG_DRM_R128 is not set
-# CONFIG_DRM_RADEON is not set
-# CONFIG_DRM_I810 is not set
-# CONFIG_DRM_I830 is not set
-# CONFIG_DRM_I915 is not set
-# CONFIG_DRM_MGA is not set
-# CONFIG_DRM_SIS is not set
-# CONFIG_DRM_VIA is not set
-# CONFIG_DRM_SAVAGE is not set
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=m
-CONFIG_FB_CFB_COPYAREA=m
-CONFIG_FB_CFB_IMAGEBLIT=m
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FOPS is not set
-# CONFIG_FB_DEFERRED_IO is not set
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-CONFIG_FB_MODE_HELPERS=y
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_CIRRUS is not set
-# CONFIG_FB_PM2 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_ARC is not set
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-# CONFIG_FB_VGA16 is not set
-CONFIG_FB_UVESA=m
-# CONFIG_FB_VESA is not set
-# CONFIG_FB_EFI is not set
-# CONFIG_FB_HECUBA is not set
-# CONFIG_FB_HGA is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_NVIDIA is not set
-# CONFIG_FB_RIVA is not set
-# CONFIG_FB_I810 is not set
-# CONFIG_FB_LE80578 is not set
-# CONFIG_FB_INTEL is not set
-# CONFIG_FB_MATROX is not set
-# CONFIG_FB_RADEON is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_S3 is not set
-# CONFIG_FB_SAVAGE is not set
-# CONFIG_FB_SIS is not set
-# CONFIG_FB_NEOMAGIC is not set
-# CONFIG_FB_KYRO is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VOODOO1 is not set
-# CONFIG_FB_VT8623 is not set
-# CONFIG_FB_CYBLA is not set
-# CONFIG_FB_TRIDENT is not set
-# CONFIG_FB_ARK is not set
-# CONFIG_FB_PM3 is not set
-# CONFIG_FB_GEODE is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=m
-CONFIG_BACKLIGHT_CLASS_DEVICE=m
-CONFIG_BACKLIGHT_CORGI=m
-# CONFIG_BACKLIGHT_PROGEAR is not set
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-
-#
-# Console display driver support
-#
-CONFIG_VGA_CONSOLE=y
-# CONFIG_VGACON_SOFT_SCROLLBACK is not set
-CONFIG_VIDEO_SELECT=y
-# CONFIG_MDA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_SEQUENCER=y
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=y
-CONFIG_SND_PCM_OSS=y
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=y
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_MTS64 is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-# CONFIG_SND_PORTMAN2X4 is not set
-
-#
-# ISA devices
-#
-# CONFIG_SND_ADLIB is not set
-# CONFIG_SND_AD1816A is not set
-# CONFIG_SND_AD1848 is not set
-# CONFIG_SND_ALS100 is not set
-# CONFIG_SND_AZT2320 is not set
-# CONFIG_SND_CMI8330 is not set
-# CONFIG_SND_CS4231 is not set
-# CONFIG_SND_CS4232 is not set
-# CONFIG_SND_CS4236 is not set
-# CONFIG_SND_DT019X is not set
-# CONFIG_SND_ES968 is not set
-# CONFIG_SND_ES1688 is not set
-# CONFIG_SND_ES18XX is not set
-# CONFIG_SND_SC6000 is not set
-# CONFIG_SND_GUSCLASSIC is not set
-# CONFIG_SND_GUSEXTREME is not set
-# CONFIG_SND_GUSMAX is not set
-# CONFIG_SND_INTERWAVE is not set
-# CONFIG_SND_INTERWAVE_STB is not set
-# CONFIG_SND_OPL3SA2 is not set
-# CONFIG_SND_OPTI92X_AD1848 is not set
-# CONFIG_SND_OPTI92X_CS4231 is not set
-# CONFIG_SND_OPTI93X is not set
-# CONFIG_SND_MIRO is not set
-# CONFIG_SND_SB8 is not set
-# CONFIG_SND_SB16 is not set
-# CONFIG_SND_SBAWE is not set
-# CONFIG_SND_SGALAXY is not set
-# CONFIG_SND_SSCAPE is not set
-# CONFIG_SND_WAVEFRONT is not set
-
-#
-# PCI devices
-#
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS300 is not set
-# CONFIG_SND_ALS4000 is not set
-# CONFIG_SND_ALI5451 is not set
-# CONFIG_SND_ATIIXP is not set
-# CONFIG_SND_ATIIXP_MODEM is not set
-# CONFIG_SND_AU8810 is not set
-# CONFIG_SND_AU8820 is not set
-# CONFIG_SND_AU8830 is not set
-# CONFIG_SND_AZT3328 is not set
-# CONFIG_SND_BT87X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_CMIPCI is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_CS46XX is not set
-# CONFIG_SND_CS5530 is not set
-# CONFIG_SND_CS5535AUDIO is not set
-# CONFIG_SND_DARLA20 is not set
-# CONFIG_SND_GINA20 is not set
-# CONFIG_SND_LAYLA20 is not set
-# CONFIG_SND_DARLA24 is not set
-# CONFIG_SND_GINA24 is not set
-# CONFIG_SND_LAYLA24 is not set
-# CONFIG_SND_MONA is not set
-# CONFIG_SND_MIA is not set
-# CONFIG_SND_ECHO3G is not set
-# CONFIG_SND_INDIGO is not set
-# CONFIG_SND_INDIGOIO is not set
-# CONFIG_SND_INDIGODJ is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_ENS1370 is not set
-# CONFIG_SND_ENS1371 is not set
-# CONFIG_SND_ES1938 is not set
-# CONFIG_SND_ES1968 is not set
-# CONFIG_SND_FM801 is not set
-# CONFIG_SND_HDA_INTEL is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_ICE1712 is not set
-# CONFIG_SND_ICE1724 is not set
-CONFIG_SND_INTEL8X0=y
-# CONFIG_SND_INTEL8X0M is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_MAESTRO3 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_PCXHR is not set
-# CONFIG_SND_RIPTIDE is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_SONICVIBES is not set
-# CONFIG_SND_TRIDENT is not set
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_YMFPCI is not set
-# CONFIG_SND_AC97_POWER_SAVE is not set
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-# CONFIG_SND_USB_USX2Y is not set
-# CONFIG_SND_USB_CAIAQ is not set
-
-#
-# System on Chip audio support
-#
-# CONFIG_SND_SOC is not set
-
-#
-# SoC Audio support for SuperH
-#
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-CONFIG_AC97_BUS=y
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HID_DEBUG is not set
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-CONFIG_USB_SUSPEND=y
-# CONFIG_USB_PERSIST is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_SPLIT_ISO=y
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-# CONFIG_USB_EHCI_TT_NEWSCHED is not set
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=y
-CONFIG_USB_SL811_HCD=m
-# CONFIG_USB_R8A66597_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRCABLE is not set
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_CH341 is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP2101=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_MOS7720 is not set
-# CONFIG_USB_SERIAL_MOS7840 is not set
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_OTI6858 is not set
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-# CONFIG_USB_BERRY_CHARGE is not set
-CONFIG_USB_LED=m
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-CONFIG_USB_CYTHERM=m
-# CONFIG_USB_PHIDGET is not set
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_SISUSBVGA is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-# CONFIG_MMC is not set
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-
-#
-# LED Triggers
-#
-# CONFIG_LEDS_TRIGGERS is not set
-# CONFIG_INFINIBAND is not set
-# CONFIG_EDAC is not set
-# CONFIG_RTC_CLASS is not set
-# CONFIG_DMADEVICES is not set
-# CONFIG_AUXDISPLAY is not set
-CONFIG_VIRTUALIZATION=y
-# CONFIG_KVM is not set
-# CONFIG_LGUEST is not set
-
-#
-# Userspace I/O
-#
-# CONFIG_UIO is not set
-
-#
-# Firmware Drivers
-#
-# CONFIG_EDD is not set
-# CONFIG_DELL_RBU is not set
-# CONFIG_DCDBAS is not set
-CONFIG_DMIID=y
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-# CONFIG_ZISOFS is not set
-CONFIG_UDF_FS=y
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_KCORE=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLBFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=y
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-# CONFIG_NFSD_V4 is not set
-# CONFIG_NFSD_TCP is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-# CONFIG_SUNRPC_BIND34 is not set
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=y
-# CONFIG_SMB_NLS_DEFAULT is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-# CONFIG_DLM is not set
-CONFIG_INSTRUMENTATION=y
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-# CONFIG_KPROBES is not set
-# CONFIG_MARKERS is not set
-
-#
-# Kernel hacking
-#
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_KERNEL is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_SAMPLES is not set
-CONFIG_EARLY_PRINTK=y
-CONFIG_X86_FIND_SMP_CONFIG=y
-CONFIG_X86_MPPARSE=y
-CONFIG_DOUBLEFAULT=y
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=m
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_HASH=m
-CONFIG_CRYPTO_MANAGER=m
-CONFIG_CRYPTO_HMAC=m
-# CONFIG_CRYPTO_XCBC is not set
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_XTS is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=m
-# CONFIG_CRYPTO_FCRYPT is not set
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-# CONFIG_CRYPTO_TWOFISH_586 is not set
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-# CONFIG_CRYPTO_AES_586 is not set
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-# CONFIG_CRYPTO_SEED is not set
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_LZO=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_TEST=m
-# CONFIG_CRYPTO_AUTHENC is not set
-# CONFIG_CRYPTO_HW is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-CONFIG_LIBCRC32C=m
-CONFIG_AUDIT_GENERIC=y
-CONFIG_ZLIB_INFLATE=m
-CONFIG_ZLIB_DEFLATE=m
-CONFIG_LZO_COMPRESS=m
-CONFIG_LZO_DECOMPRESS=m
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
diff --git a/meta/recipes-kernel/linux/linux-rp-2.6.26/defconfig-bootcdx86 b/meta/recipes-kernel/linux/linux-rp-2.6.26/defconfig-bootcdx86
deleted file mode 100644
index 35e9b5cd22..0000000000
--- a/meta/recipes-kernel/linux/linux-rp-2.6.26/defconfig-bootcdx86
+++ /dev/null
@@ -1,1994 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.24-rc8
-# Sun Jan 20 18:34:58 2008
-#
-# CONFIG_64BIT is not set
-CONFIG_X86_32=y
-# CONFIG_X86_64 is not set
-CONFIG_X86=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_SEMAPHORE_SLEEPERS=y
-CONFIG_MMU=y
-CONFIG_ZONE_DMA=y
-CONFIG_QUICKLIST=y
-CONFIG_GENERIC_ISA_DMA=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_DMI=y
-# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-# CONFIG_GENERIC_TIME_VSYSCALL is not set
-CONFIG_ARCH_SUPPORTS_OPROFILE=y
-# CONFIG_ZONE_DMA32 is not set
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-# CONFIG_AUDIT_ARCH is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_X86_SMP=y
-CONFIG_X86_HT=y
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_TRAMPOLINE=y
-CONFIG_KTIME_SCALAR=y
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-CONFIG_POSIX_MQUEUE=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-CONFIG_AUDIT=y
-CONFIG_AUDITSYSCALL=y
-CONFIG_AUDIT_TREE=y
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=15
-# CONFIG_CGROUPS is not set
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_FAIR_USER_SCHED=y
-# CONFIG_FAIR_CGROUP_SCHED is not set
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-CONFIG_STOP_MACHINE=y
-CONFIG_BLOCK=y
-CONFIG_LBD=y
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# Processor type and features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_SMP=y
-CONFIG_X86_PC=y
-# CONFIG_X86_ELAN is not set
-# CONFIG_X86_VOYAGER is not set
-# CONFIG_X86_NUMAQ is not set
-# CONFIG_X86_SUMMIT is not set
-# CONFIG_X86_BIGSMP is not set
-# CONFIG_X86_VISWS is not set
-# CONFIG_X86_GENERICARCH is not set
-# CONFIG_X86_ES7000 is not set
-# CONFIG_X86_VSMP is not set
-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
-# CONFIG_PARAVIRT_GUEST is not set
-# CONFIG_M386 is not set
-# CONFIG_M486 is not set
-# CONFIG_M586 is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M586MMX is not set
-CONFIG_M686=y
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_MWINCHIP2 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MVIAC3_2 is not set
-# CONFIG_MVIAC7 is not set
-# CONFIG_MPSC is not set
-# CONFIG_MCORE2 is not set
-# CONFIG_GENERIC_CPU is not set
-CONFIG_X86_GENERIC=y
-CONFIG_X86_CMPXCHG=y
-CONFIG_X86_L1_CACHE_SHIFT=7
-CONFIG_X86_XADD=y
-CONFIG_X86_PPRO_FENCE=y
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_INVLPG=y
-CONFIG_X86_BSWAP=y
-CONFIG_X86_POPAD_OK=y
-CONFIG_X86_GOOD_APIC=y
-CONFIG_X86_INTEL_USERCOPY=y
-CONFIG_X86_USE_PPRO_CHECKSUM=y
-CONFIG_X86_TSC=y
-CONFIG_X86_CMOV=y
-CONFIG_X86_MINIMUM_CPU_FAMILY=4
-CONFIG_HPET_TIMER=y
-CONFIG_NR_CPUS=8
-CONFIG_SCHED_SMT=y
-CONFIG_SCHED_MC=y
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_PREEMPT_BKL=y
-CONFIG_X86_LOCAL_APIC=y
-CONFIG_X86_IO_APIC=y
-CONFIG_X86_MCE=y
-CONFIG_X86_MCE_NONFATAL=y
-CONFIG_X86_MCE_P4THERMAL=y
-CONFIG_VM86=y
-# CONFIG_TOSHIBA is not set
-# CONFIG_I8K is not set
-# CONFIG_X86_REBOOTFIXUPS is not set
-# CONFIG_MICROCODE is not set
-# CONFIG_X86_MSR is not set
-# CONFIG_X86_CPUID is not set
-CONFIG_NOHIGHMEM=y
-# CONFIG_HIGHMEM4G is not set
-# CONFIG_HIGHMEM64G is not set
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_3G_OPT is not set
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_2G_OPT is not set
-# CONFIG_VMSPLIT_1G is not set
-CONFIG_PAGE_OFFSET=0xC0000000
-# CONFIG_X86_PAE is not set
-CONFIG_ARCH_FLATMEM_ENABLE=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_SPARSEMEM_STATIC=y
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_NR_QUICK=1
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_MATH_EMULATION is not set
-CONFIG_MTRR=y
-# CONFIG_EFI is not set
-CONFIG_IRQBALANCE=y
-CONFIG_SECCOMP=y
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-# CONFIG_HZ_300 is not set
-# CONFIG_HZ_1000 is not set
-CONFIG_HZ=250
-CONFIG_KEXEC=y
-CONFIG_PHYSICAL_START=0x100000
-# CONFIG_RELOCATABLE is not set
-CONFIG_PHYSICAL_ALIGN=0x100000
-CONFIG_HOTPLUG_CPU=y
-CONFIG_COMPAT_VDSO=y
-
-#
-# Power management options
-#
-CONFIG_PM=y
-CONFIG_PM_LEGACY=y
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP_SMP=y
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND_SMP_POSSIBLE=y
-CONFIG_SUSPEND=y
-CONFIG_HIBERNATION_SMP_POSSIBLE=y
-# CONFIG_HIBERNATION is not set
-CONFIG_ACPI=y
-CONFIG_ACPI_SLEEP=y
-# CONFIG_ACPI_PROCFS is not set
-CONFIG_ACPI_PROCFS_POWER=y
-CONFIG_ACPI_SYSFS_POWER=y
-CONFIG_ACPI_PROC_EVENT=y
-CONFIG_ACPI_AC=y
-CONFIG_ACPI_BATTERY=y
-CONFIG_ACPI_BUTTON=y
-# CONFIG_ACPI_VIDEO is not set
-CONFIG_ACPI_FAN=y
-# CONFIG_ACPI_DOCK is not set
-CONFIG_ACPI_PROCESSOR=y
-CONFIG_ACPI_HOTPLUG_CPU=y
-CONFIG_ACPI_THERMAL=y
-# CONFIG_ACPI_ASUS is not set
-# CONFIG_ACPI_TOSHIBA is not set
-CONFIG_ACPI_BLACKLIST_YEAR=0
-# CONFIG_ACPI_DEBUG is not set
-CONFIG_ACPI_EC=y
-CONFIG_ACPI_POWER=y
-CONFIG_ACPI_SYSTEM=y
-CONFIG_X86_PM_TIMER=y
-CONFIG_ACPI_CONTAINER=y
-# CONFIG_ACPI_SBS is not set
-# CONFIG_APM is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-# CONFIG_CPU_IDLE is not set
-
-#
-# Bus options (PCI etc.)
-#
-CONFIG_PCI=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GOMMCONFIG is not set
-# CONFIG_PCI_GODIRECT is not set
-CONFIG_PCI_GOANY=y
-CONFIG_PCI_BIOS=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_MMCONFIG=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCIEPORTBUS=y
-CONFIG_PCIEAER=y
-CONFIG_ARCH_SUPPORTS_MSI=y
-CONFIG_PCI_MSI=y
-CONFIG_PCI_LEGACY=y
-CONFIG_HT_IRQ=y
-CONFIG_ISA_DMA_API=y
-CONFIG_ISA=y
-# CONFIG_EISA is not set
-# CONFIG_MCA is not set
-# CONFIG_SCx200 is not set
-CONFIG_K8_NB=y
-# CONFIG_PCCARD is not set
-# CONFIG_HOTPLUG_PCI is not set
-
-#
-# Executable file formats / Emulations
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-# CONFIG_INET_LRO is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NF_CONNTRACK is not set
-CONFIG_NETFILTER_XTABLES=m
-# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
-# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-# CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_TIME is not set
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-# CONFIG_KINGSUN_DONGLE is not set
-# CONFIG_KSDAZZLE_DONGLE is not set
-# CONFIG_KS959_DONGLE is not set
-
-#
-# Old SIR device drivers
-#
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-# CONFIG_VIA_FIR is not set
-# CONFIG_MCS_FIR is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-# CONFIG_BT_HCIUART_LL is not set
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIVHCI=m
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-CONFIG_WIRELESS_EXT=y
-# CONFIG_MAC80211 is not set
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-CONFIG_IEEE80211_SOFTMAC=m
-# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_SYS_HYPERVISOR is not set
-CONFIG_CONNECTOR=y
-CONFIG_PROC_EVENTS=y
-# CONFIG_MTD is not set
-CONFIG_PARPORT=y
-CONFIG_PARPORT_PC=y
-# CONFIG_PARPORT_SERIAL is not set
-# CONFIG_PARPORT_PC_FIFO is not set
-# CONFIG_PARPORT_PC_SUPERIO is not set
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_AX88796 is not set
-# CONFIG_PARPORT_1284 is not set
-CONFIG_PNP=y
-# CONFIG_PNP_DEBUG is not set
-
-#
-# Protocols
-#
-# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
-CONFIG_PNPACPI=y
-CONFIG_BLK_DEV=y
-CONFIG_BLK_DEV_FD=y
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=65536
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_IBM_ASM is not set
-# CONFIG_PHANTOM is not set
-# CONFIG_EEPROM_93CX6 is not set
-# CONFIG_SGI_IOC4 is not set
-# CONFIG_TIFM_CORE is not set
-# CONFIG_ASUS_LAPTOP is not set
-# CONFIG_FUJITSU_LAPTOP is not set
-# CONFIG_MSI_LAPTOP is not set
-# CONFIG_SONY_LAPTOP is not set
-# CONFIG_THINKPAD_ACPI is not set
-CONFIG_IDE=y
-CONFIG_IDE_MAX_HWIFS=4
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-# CONFIG_BLK_DEV_HD_IDE is not set
-CONFIG_BLK_DEV_IDEDISK=y
-CONFIG_IDEDISK_MULTI_MODE=y
-CONFIG_BLK_DEV_IDECD=y
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_BLK_DEV_IDEACPI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_PROC_FS=y
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_BLK_DEV_PLATFORM is not set
-CONFIG_BLK_DEV_CMD640=y
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_IDEPNP is not set
-
-#
-# PCI IDE chipsets support
-#
-CONFIG_BLK_DEV_IDEPCI=y
-CONFIG_IDEPCI_SHARE_IRQ=y
-CONFIG_IDEPCI_PCIBUS_ORDER=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=y
-# CONFIG_BLK_DEV_OPTI621 is not set
-CONFIG_BLK_DEV_RZ1000=y
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-# CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_BLK_DEV_ALI15X3 is not set
-# CONFIG_BLK_DEV_AMD74XX is not set
-# CONFIG_BLK_DEV_ATIIXP is not set
-# CONFIG_BLK_DEV_CMD64X is not set
-# CONFIG_BLK_DEV_TRIFLEX is not set
-# CONFIG_BLK_DEV_CY82C693 is not set
-# CONFIG_BLK_DEV_CS5520 is not set
-# CONFIG_BLK_DEV_CS5530 is not set
-# CONFIG_BLK_DEV_CS5535 is not set
-# CONFIG_BLK_DEV_HPT34X is not set
-# CONFIG_BLK_DEV_HPT366 is not set
-# CONFIG_BLK_DEV_JMICRON is not set
-# CONFIG_BLK_DEV_SC1200 is not set
-CONFIG_BLK_DEV_PIIX=y
-# CONFIG_BLK_DEV_IT8213 is not set
-# CONFIG_BLK_DEV_IT821X is not set
-# CONFIG_BLK_DEV_NS87415 is not set
-# CONFIG_BLK_DEV_PDC202XX_OLD is not set
-# CONFIG_BLK_DEV_PDC202XX_NEW is not set
-# CONFIG_BLK_DEV_SVWKS is not set
-# CONFIG_BLK_DEV_SIIMAGE is not set
-# CONFIG_BLK_DEV_SIS5513 is not set
-# CONFIG_BLK_DEV_SLC90E66 is not set
-# CONFIG_BLK_DEV_TRM290 is not set
-# CONFIG_BLK_DEV_VIA82CXXX is not set
-# CONFIG_BLK_DEV_TC86C001 is not set
-# CONFIG_IDE_ARM is not set
-
-#
-# Other IDE chipsets support
-#
-
-#
-# Note: most of these also require special kernel boot parameters
-#
-# CONFIG_BLK_DEV_4DRIVES is not set
-# CONFIG_BLK_DEV_ALI14XX is not set
-# CONFIG_BLK_DEV_DTC2278 is not set
-# CONFIG_BLK_DEV_HT6560B is not set
-# CONFIG_BLK_DEV_QD65XX is not set
-# CONFIG_BLK_DEV_UMC8672 is not set
-CONFIG_BLK_DEV_IDEDMA=y
-CONFIG_IDE_ARCH_OBSOLETE_INIT=y
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-CONFIG_CHR_DEV_SG=y
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-CONFIG_SCSI_SPI_ATTRS=y
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_7000FASST is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AHA1542 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_AIC94XX is not set
-CONFIG_SCSI_DPT_I2O=m
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_ARCMSR is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-# CONFIG_SCSI_HPTIOP is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_GENERIC_NCR5380 is not set
-# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_PPA is not set
-# CONFIG_SCSI_IMM is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_STEX is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_QLA_ISCSI is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_SEAGATE is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_ULTRASTOR is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_SRP is not set
-# CONFIG_ATA is not set
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-# CONFIG_DM_MULTIPATH_RDAC is not set
-# CONFIG_DM_MULTIPATH_HP is not set
-# CONFIG_DM_DELAY is not set
-# CONFIG_DM_UEVENT is not set
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_FIREWIRE is not set
-# CONFIG_IEEE1394 is not set
-# CONFIG_I2O is not set
-# CONFIG_MACINTOSH_DRIVERS is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_VETH is not set
-# CONFIG_NET_SB1000 is not set
-# CONFIG_ARCNET is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-CONFIG_NET_VENDOR_3COM=y
-# CONFIG_EL1 is not set
-# CONFIG_EL2 is not set
-# CONFIG_ELPLUS is not set
-# CONFIG_EL16 is not set
-# CONFIG_EL3 is not set
-# CONFIG_3C515 is not set
-CONFIG_VORTEX=m
-CONFIG_TYPHOON=m
-CONFIG_LANCE=m
-CONFIG_NET_VENDOR_SMC=y
-CONFIG_WD80x3=m
-CONFIG_ULTRA=m
-CONFIG_SMC9194=m
-# CONFIG_NET_VENDOR_RACAL is not set
-CONFIG_NET_TULIP=y
-# CONFIG_DE2104X is not set
-CONFIG_TULIP=m
-CONFIG_TULIP_MWI=y
-CONFIG_TULIP_MMIO=y
-CONFIG_TULIP_NAPI=y
-CONFIG_TULIP_NAPI_HW_MITIGATION=y
-CONFIG_DE4X5=m
-CONFIG_WINBOND_840=m
-CONFIG_DM9102=m
-CONFIG_ULI526X=m
-CONFIG_AT1700=m
-CONFIG_DEPCA=m
-CONFIG_HP100=m
-CONFIG_NET_ISA=y
-# CONFIG_E2100 is not set
-# CONFIG_EWRK3 is not set
-# CONFIG_EEXPRESS is not set
-# CONFIG_EEXPRESS_PRO is not set
-# CONFIG_HPLAN_PLUS is not set
-# CONFIG_HPLAN is not set
-# CONFIG_LP486E is not set
-# CONFIG_ETH16I is not set
-CONFIG_NE2000=y
-# CONFIG_ZNET is not set
-# CONFIG_SEEQ8005 is not set
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-CONFIG_NET_PCI=y
-CONFIG_PCNET32=m
-CONFIG_PCNET32_NAPI=y
-CONFIG_AMD8111_ETH=m
-CONFIG_AMD8111E_NAPI=y
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_ADAPTEC_STARFIRE_NAPI=y
-CONFIG_AC3200=m
-CONFIG_APRICOT=m
-CONFIG_B44=m
-CONFIG_B44_PCI_AUTOSELECT=y
-CONFIG_B44_PCICORE_AUTOSELECT=y
-CONFIG_B44_PCI=y
-CONFIG_FORCEDETH=m
-CONFIG_FORCEDETH_NAPI=y
-CONFIG_CS89x0=m
-CONFIG_EEPRO100=m
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=y
-CONFIG_8139CP=m
-CONFIG_8139TOO=m
-CONFIG_8139TOO_PIO=y
-CONFIG_8139TOO_TUNE_TWISTER=y
-CONFIG_8139TOO_8129=y
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SUNDANCE=m
-CONFIG_SUNDANCE_MMIO=y
-CONFIG_TLAN=m
-CONFIG_VIA_RHINE=m
-CONFIG_VIA_RHINE_MMIO=y
-CONFIG_VIA_RHINE_NAPI=y
-CONFIG_SC92031=m
-# CONFIG_NET_POCKET is not set
-CONFIG_NETDEV_1000=y
-CONFIG_ACENIC=m
-CONFIG_ACENIC_OMIT_TIGON_I=y
-CONFIG_DL2K=m
-CONFIG_E1000=m
-CONFIG_E1000_NAPI=y
-# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
-# CONFIG_E1000E is not set
-# CONFIG_IP1000 is not set
-CONFIG_NS83820=m
-CONFIG_HAMACHI=m
-CONFIG_YELLOWFIN=m
-CONFIG_R8169=m
-CONFIG_R8169_NAPI=y
-CONFIG_SIS190=m
-CONFIG_SKGE=m
-CONFIG_SKY2=m
-CONFIG_SK98LIN=m
-CONFIG_VIA_VELOCITY=m
-CONFIG_TIGON3=m
-CONFIG_BNX2=m
-CONFIG_QLA3XXX=m
-CONFIG_ATL1=m
-CONFIG_NETDEV_10000=y
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_CHELSIO_T3 is not set
-# CONFIG_IXGBE is not set
-# CONFIG_IXGB is not set
-CONFIG_S2IO=m
-# CONFIG_S2IO_NAPI is not set
-# CONFIG_MYRI10GE is not set
-# CONFIG_NETXEN_NIC is not set
-# CONFIG_NIU is not set
-# CONFIG_MLX4_CORE is not set
-# CONFIG_TEHUTI is not set
-# CONFIG_TR is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-# CONFIG_IPW2100 is not set
-# CONFIG_IPW2200 is not set
-# CONFIG_LIBERTAS is not set
-# CONFIG_AIRO is not set
-CONFIG_HERMES=m
-# CONFIG_PLX_HERMES is not set
-# CONFIG_TMD_HERMES is not set
-# CONFIG_NORTEL_HERMES is not set
-# CONFIG_PCI_HERMES is not set
-# CONFIG_ATMEL is not set
-# CONFIG_PRISM54 is not set
-# CONFIG_USB_ZD1201 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-# CONFIG_HOSTAP_PLX is not set
-# CONFIG_HOSTAP_PCI is not set
-# CONFIG_BCM43XX is not set
-# CONFIG_ZD1211RW is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_WAN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_PPPOL2TP is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_NET_FC is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_ISDN is not set
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_LIFEBOOK=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-# CONFIG_MOUSE_PS2_TOUCHKIT is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_APPLETOUCH is not set
-# CONFIG_MOUSE_INPORT is not set
-# CONFIG_MOUSE_LOGIBM is not set
-# CONFIG_MOUSE_PC110PAD is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TABLET=y
-# CONFIG_TABLET_USB_ACECAD is not set
-# CONFIG_TABLET_USB_AIPTEK is not set
-# CONFIG_TABLET_USB_GTCO is not set
-# CONFIG_TABLET_USB_KBTAB is not set
-CONFIG_TABLET_USB_WACOM=y
-# CONFIG_INPUT_TOUCHSCREEN is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_PCSPKR is not set
-# CONFIG_INPUT_WISTRON_BTNS is not set
-# CONFIG_INPUT_ATLAS_BTNS is not set
-# CONFIG_INPUT_ATI_REMOTE is not set
-# CONFIG_INPUT_ATI_REMOTE2 is not set
-# CONFIG_INPUT_KEYSPAN_REMOTE is not set
-# CONFIG_INPUT_POWERMATE is not set
-# CONFIG_INPUT_YEALINK is not set
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-# CONFIG_SERIO_SERPORT is not set
-# CONFIG_SERIO_CT82C710 is not set
-# CONFIG_SERIO_PARKBD is not set
-# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-# CONFIG_SERIAL_8250_CONSOLE is not set
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_PNP=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-CONFIG_PRINTER=y
-# CONFIG_LP_CONSOLE is not set
-# CONFIG_PPDEV is not set
-# CONFIG_IPMI_HANDLER is not set
-# CONFIG_HW_RANDOM is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-# CONFIG_GEN_RTC is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
-# CONFIG_MWAVE is not set
-# CONFIG_PC8736x_GPIO is not set
-# CONFIG_NSC_GPIO is not set
-# CONFIG_CS5535_GPIO is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_HPET is not set
-# CONFIG_HANGCHECK_TIMER is not set
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-CONFIG_DEVPORT=y
-# CONFIG_I2C is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-# CONFIG_W1 is not set
-CONFIG_POWER_SUPPLY=y
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-# CONFIG_PDA_POWER is not set
-# CONFIG_BATTERY_DS2760 is not set
-# CONFIG_HWMON is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB_POSSIBLE=y
-CONFIG_SSB=m
-CONFIG_SSB_PCIHOST_POSSIBLE=y
-CONFIG_SSB_PCIHOST=y
-# CONFIG_SSB_SILENT is not set
-# CONFIG_SSB_DEBUG is not set
-CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
-CONFIG_SSB_DRIVER_PCICORE=y
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-# CONFIG_HTC_ASIC3 is not set
-# CONFIG_HTC_ASIC3_DS1WM is not set
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_STRADIS is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-# CONFIG_USB_QUICKCAM_MESSENGER is not set
-# CONFIG_USB_ET61X251 is not set
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_ZR364XX is not set
-CONFIG_RADIO_ADAPTERS=y
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_SF16FMR2 is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-CONFIG_USB_DSBR=m
-# CONFIG_DVB_CORE is not set
-CONFIG_DAB=y
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-CONFIG_AGP=m
-CONFIG_AGP_ALI=m
-CONFIG_AGP_ATI=m
-CONFIG_AGP_AMD=m
-CONFIG_AGP_AMD64=m
-CONFIG_AGP_INTEL=m
-CONFIG_AGP_NVIDIA=m
-CONFIG_AGP_SIS=m
-CONFIG_AGP_SWORKS=m
-CONFIG_AGP_VIA=m
-CONFIG_AGP_EFFICEON=m
-CONFIG_DRM=m
-# CONFIG_DRM_TDFX is not set
-# CONFIG_DRM_R128 is not set
-# CONFIG_DRM_RADEON is not set
-# CONFIG_DRM_I810 is not set
-# CONFIG_DRM_I830 is not set
-# CONFIG_DRM_I915 is not set
-# CONFIG_DRM_MGA is not set
-# CONFIG_DRM_SIS is not set
-# CONFIG_DRM_VIA is not set
-# CONFIG_DRM_SAVAGE is not set
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=m
-CONFIG_FB_CFB_COPYAREA=m
-CONFIG_FB_CFB_IMAGEBLIT=m
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FOPS is not set
-# CONFIG_FB_DEFERRED_IO is not set
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-CONFIG_FB_MODE_HELPERS=y
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_CIRRUS is not set
-# CONFIG_FB_PM2 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_ARC is not set
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-# CONFIG_FB_VGA16 is not set
-CONFIG_FB_UVESA=m
-# CONFIG_FB_VESA is not set
-# CONFIG_FB_EFI is not set
-# CONFIG_FB_HECUBA is not set
-# CONFIG_FB_HGA is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_NVIDIA is not set
-# CONFIG_FB_RIVA is not set
-# CONFIG_FB_I810 is not set
-# CONFIG_FB_LE80578 is not set
-# CONFIG_FB_INTEL is not set
-# CONFIG_FB_MATROX is not set
-# CONFIG_FB_RADEON is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_S3 is not set
-# CONFIG_FB_SAVAGE is not set
-# CONFIG_FB_SIS is not set
-# CONFIG_FB_NEOMAGIC is not set
-# CONFIG_FB_KYRO is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VOODOO1 is not set
-# CONFIG_FB_VT8623 is not set
-# CONFIG_FB_CYBLA is not set
-# CONFIG_FB_TRIDENT is not set
-# CONFIG_FB_ARK is not set
-# CONFIG_FB_PM3 is not set
-# CONFIG_FB_GEODE is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=m
-CONFIG_BACKLIGHT_CLASS_DEVICE=m
-CONFIG_BACKLIGHT_CORGI=m
-# CONFIG_BACKLIGHT_PROGEAR is not set
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-
-#
-# Console display driver support
-#
-CONFIG_VGA_CONSOLE=y
-# CONFIG_VGACON_SOFT_SCROLLBACK is not set
-CONFIG_VIDEO_SELECT=y
-# CONFIG_MDA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_SEQUENCER=y
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=y
-CONFIG_SND_PCM_OSS=y
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=y
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_MTS64 is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-# CONFIG_SND_PORTMAN2X4 is not set
-
-#
-# ISA devices
-#
-# CONFIG_SND_ADLIB is not set
-# CONFIG_SND_AD1816A is not set
-# CONFIG_SND_AD1848 is not set
-# CONFIG_SND_ALS100 is not set
-# CONFIG_SND_AZT2320 is not set
-# CONFIG_SND_CMI8330 is not set
-# CONFIG_SND_CS4231 is not set
-# CONFIG_SND_CS4232 is not set
-# CONFIG_SND_CS4236 is not set
-# CONFIG_SND_DT019X is not set
-# CONFIG_SND_ES968 is not set
-# CONFIG_SND_ES1688 is not set
-# CONFIG_SND_ES18XX is not set
-# CONFIG_SND_SC6000 is not set
-# CONFIG_SND_GUSCLASSIC is not set
-# CONFIG_SND_GUSEXTREME is not set
-# CONFIG_SND_GUSMAX is not set
-# CONFIG_SND_INTERWAVE is not set
-# CONFIG_SND_INTERWAVE_STB is not set
-# CONFIG_SND_OPL3SA2 is not set
-# CONFIG_SND_OPTI92X_AD1848 is not set
-# CONFIG_SND_OPTI92X_CS4231 is not set
-# CONFIG_SND_OPTI93X is not set
-# CONFIG_SND_MIRO is not set
-# CONFIG_SND_SB8 is not set
-# CONFIG_SND_SB16 is not set
-# CONFIG_SND_SBAWE is not set
-# CONFIG_SND_SGALAXY is not set
-# CONFIG_SND_SSCAPE is not set
-# CONFIG_SND_WAVEFRONT is not set
-
-#
-# PCI devices
-#
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS300 is not set
-# CONFIG_SND_ALS4000 is not set
-# CONFIG_SND_ALI5451 is not set
-# CONFIG_SND_ATIIXP is not set
-# CONFIG_SND_ATIIXP_MODEM is not set
-# CONFIG_SND_AU8810 is not set
-# CONFIG_SND_AU8820 is not set
-# CONFIG_SND_AU8830 is not set
-# CONFIG_SND_AZT3328 is not set
-# CONFIG_SND_BT87X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_CMIPCI is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_CS46XX is not set
-# CONFIG_SND_CS5530 is not set
-# CONFIG_SND_CS5535AUDIO is not set
-# CONFIG_SND_DARLA20 is not set
-# CONFIG_SND_GINA20 is not set
-# CONFIG_SND_LAYLA20 is not set
-# CONFIG_SND_DARLA24 is not set
-# CONFIG_SND_GINA24 is not set
-# CONFIG_SND_LAYLA24 is not set
-# CONFIG_SND_MONA is not set
-# CONFIG_SND_MIA is not set
-# CONFIG_SND_ECHO3G is not set
-# CONFIG_SND_INDIGO is not set
-# CONFIG_SND_INDIGOIO is not set
-# CONFIG_SND_INDIGODJ is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_ENS1370 is not set
-# CONFIG_SND_ENS1371 is not set
-# CONFIG_SND_ES1938 is not set
-# CONFIG_SND_ES1968 is not set
-# CONFIG_SND_FM801 is not set
-# CONFIG_SND_HDA_INTEL is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_ICE1712 is not set
-# CONFIG_SND_ICE1724 is not set
-CONFIG_SND_INTEL8X0=y
-# CONFIG_SND_INTEL8X0M is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_MAESTRO3 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_PCXHR is not set
-# CONFIG_SND_RIPTIDE is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_SONICVIBES is not set
-# CONFIG_SND_TRIDENT is not set
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_YMFPCI is not set
-# CONFIG_SND_AC97_POWER_SAVE is not set
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-# CONFIG_SND_USB_USX2Y is not set
-# CONFIG_SND_USB_CAIAQ is not set
-
-#
-# System on Chip audio support
-#
-# CONFIG_SND_SOC is not set
-
-#
-# SoC Audio support for SuperH
-#
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-CONFIG_AC97_BUS=y
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HID_DEBUG is not set
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-CONFIG_USB_SUSPEND=y
-# CONFIG_USB_PERSIST is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_SPLIT_ISO=y
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-# CONFIG_USB_EHCI_TT_NEWSCHED is not set
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=y
-CONFIG_USB_SL811_HCD=m
-# CONFIG_USB_R8A66597_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRCABLE is not set
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_CH341 is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_MOS7720 is not set
-# CONFIG_USB_SERIAL_MOS7840 is not set
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_OTI6858 is not set
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-# CONFIG_USB_BERRY_CHARGE is not set
-CONFIG_USB_LED=m
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-CONFIG_USB_CYTHERM=m
-# CONFIG_USB_PHIDGET is not set
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_SISUSBVGA is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-# CONFIG_MMC is not set
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-
-#
-# LED Triggers
-#
-# CONFIG_LEDS_TRIGGERS is not set
-# CONFIG_INFINIBAND is not set
-# CONFIG_EDAC is not set
-# CONFIG_RTC_CLASS is not set
-# CONFIG_DMADEVICES is not set
-# CONFIG_AUXDISPLAY is not set
-CONFIG_VIRTUALIZATION=y
-# CONFIG_KVM is not set
-# CONFIG_LGUEST is not set
-
-#
-# Userspace I/O
-#
-# CONFIG_UIO is not set
-
-#
-# Firmware Drivers
-#
-# CONFIG_EDD is not set
-# CONFIG_DELL_RBU is not set
-# CONFIG_DCDBAS is not set
-CONFIG_DMIID=y
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-# CONFIG_ZISOFS is not set
-CONFIG_UDF_FS=y
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_KCORE=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLBFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=y
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-# CONFIG_NFSD_V4 is not set
-# CONFIG_NFSD_TCP is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-# CONFIG_SUNRPC_BIND34 is not set
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=y
-# CONFIG_SMB_NLS_DEFAULT is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-# CONFIG_DLM is not set
-CONFIG_INSTRUMENTATION=y
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-# CONFIG_KPROBES is not set
-# CONFIG_MARKERS is not set
-
-#
-# Kernel hacking
-#
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_KERNEL is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_SAMPLES is not set
-CONFIG_EARLY_PRINTK=y
-CONFIG_X86_FIND_SMP_CONFIG=y
-CONFIG_X86_MPPARSE=y
-CONFIG_DOUBLEFAULT=y
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=m
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_HASH=m
-CONFIG_CRYPTO_MANAGER=m
-CONFIG_CRYPTO_HMAC=m
-# CONFIG_CRYPTO_XCBC is not set
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_XTS is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=m
-# CONFIG_CRYPTO_FCRYPT is not set
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-# CONFIG_CRYPTO_TWOFISH_586 is not set
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-# CONFIG_CRYPTO_AES_586 is not set
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-# CONFIG_CRYPTO_SEED is not set
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_LZO=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_TEST=m
-# CONFIG_CRYPTO_AUTHENC is not set
-# CONFIG_CRYPTO_HW is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-CONFIG_LIBCRC32C=m
-CONFIG_AUDIT_GENERIC=y
-CONFIG_ZLIB_INFLATE=m
-CONFIG_ZLIB_DEFLATE=m
-CONFIG_LZO_COMPRESS=m
-CONFIG_LZO_DECOMPRESS=m
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
diff --git a/meta/recipes-kernel/linux/linux-rp.inc b/meta/recipes-kernel/linux/linux-rp.inc
index 8b86bdee1f..400b1128cd 100644
--- a/meta/recipes-kernel/linux/linux-rp.inc
+++ b/meta/recipes-kernel/linux/linux-rp.inc
@@ -15,7 +15,7 @@ CHSRC = "http://oz.drigon.com/patches"
TKSRC = "http://www.informatik.hu-berlin.de/~tkunze/zaurus/patches"
COMPATIBLE_HOST = "(arm|i.86|mips).*-linux"
-COMPATIBLE_MACHINE = '(collie|poodle|c7x0|akita|spitz|tosa|hx2000|qemuarm|qemux86|qemumips|bootcdx86|htcuniversal|zylonite)'
+COMPATIBLE_MACHINE = '(collie|poodle|c7x0|akita|spitz|tosa|hx2000|qemuarm|qemux86|qemumips|htcuniversal|zylonite)'
KERNEL_CUSTOM_NAME ?= ""
KERNEL_DEPLOY_NAME ?= "${KERNEL_IMAGETYPE}-${PV}-${KERNEL_CUSTOM_NAME}${MACHINE}-${DATETIME}.bin"
diff --git a/meta/recipes-kernel/linux/linux-rp_2.6.23.bb b/meta/recipes-kernel/linux/linux-rp_2.6.23.bb
index 0c67fd4ea6..3392ca854a 100644
--- a/meta/recipes-kernel/linux/linux-rp_2.6.23.bb
+++ b/meta/recipes-kernel/linux/linux-rp_2.6.23.bb
@@ -69,7 +69,6 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 \
file://defconfig-spitz \
file://defconfig-qemuarm \
file://defconfig-qemux86 \
- file://defconfig-bootcdx86 \
file://defconfig-htcuniversal \
file://defconfig-zylonite \
file://defconfig-tosa "
diff --git a/meta/recipes-kernel/linux/linux-rp_2.6.24.bb b/meta/recipes-kernel/linux/linux-rp_2.6.24.bb
index 1d927e3ff1..bfa3ecfe7a 100644
--- a/meta/recipes-kernel/linux/linux-rp_2.6.24.bb
+++ b/meta/recipes-kernel/linux/linux-rp_2.6.24.bb
@@ -73,7 +73,6 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.24.tar.bz2 \
file://defconfig-spitz \
file://defconfig-qemuarm \
file://defconfig-qemux86 \
- file://defconfig-bootcdx86 \
file://defconfig-htcuniversal \
file://defconfig-tosa \
file://defconfig-zylonite"
diff --git a/meta/recipes-kernel/linux/linux-rp_2.6.26.bb b/meta/recipes-kernel/linux/linux-rp_2.6.26.bb
index 67d674b7be..1af90529a7 100644
--- a/meta/recipes-kernel/linux/linux-rp_2.6.26.bb
+++ b/meta/recipes-kernel/linux/linux-rp_2.6.26.bb
@@ -64,7 +64,6 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.26.tar.bz2 \
file://defconfig-qemuarmv6 \
file://defconfig-qemuarmv7 \
file://defconfig-qemux86 \
- file://defconfig-bootcdx86 \
file://defconfig-htcuniversal \
file://defconfig-zylonite"
# Disabled until the patchset is updated:
diff --git a/meta/recipes-kernel/linux/linux-tools.inc b/meta/recipes-kernel/linux/linux-tools.inc
index 714207f860..e42c8e3be7 100644
--- a/meta/recipes-kernel/linux/linux-tools.inc
+++ b/meta/recipes-kernel/linux/linux-tools.inc
@@ -2,11 +2,11 @@
# perf functionality from their tree.
do_compile_perf() {
- oe_runmake -C ${S}/tools/perf CC="${KERNEL_CC}" LD="${KERNEL_LD}" prefix=${prefix}
+ oe_runmake -C ${S}/tools/perf CC="${CC}" LD="${LD}" prefix=${prefix}
}
do_install_perf() {
- oe_runmake -C ${S}/tools/perf CC="${KERNEL_CC}" LD="${KERNEL_LD}" prefix=${prefix} DESTDIR=${D} install
+ oe_runmake -C ${S}/tools/perf CC="${CC}" LD="${LD}" prefix=${prefix} DESTDIR=${D} install
}
diff --git a/meta/recipes-kernel/linux/linux-yocto-stable_git.bb b/meta/recipes-kernel/linux/linux-yocto-stable_git.bb
index dd4d176ac5..3c1e669733 100644
--- a/meta/recipes-kernel/linux/linux-yocto-stable_git.bb
+++ b/meta/recipes-kernel/linux/linux-yocto-stable_git.bb
@@ -1,7 +1,8 @@
inherit kernel
require linux-yocto.inc
-KMACHINE_qemux86 = "common_pc/base"
+KMACHINE = "common_pc"
+KMACHINE_qemux86 = "common_pc"
KMACHINE_qemux86-64 = "common_pc_64"
KMACHINE_qemuppc = "qemu_ppc32"
KMACHINE_qemumips = "mti_malta32_be"
@@ -12,25 +13,26 @@ KMACHINE_mpc8315e-rdb = "fsl-mpc8315e-rdb"
KMACHINE_beagleboard = "beagleboard"
LINUX_VERSION ?= "2.6.34"
-LINUX_VERSION_EXTENSION ?= "-yocto-${LINUX_KERNEL_TYPE}"
-PR = "r0"
+LINUX_VERSION_EXTENSION ?= "-yocto-${LINUX_KERNEL_TYPE_EXTENSION}"
+
+KMETA = wrs_meta
+KBRANCH = ${KMACHINE}-${LINUX_KERNEL_TYPE_EXTENSION}
+
+PR = "r1"
PV = "${LINUX_VERSION}+git${SRCPV}"
SRCREV_FORMAT = "meta_machine"
COMPATIBLE_MACHINE = "(qemuarm|qemux86|qemuppc|qemumips|qemux86-64|atom-pc|routerstationpro|mpc8315e-rdb|beagleboard)"
-# this performs a fixup on the SRCREV for new/undefined BSPs
+# this performs a fixup on historical kernel types with embedded _'s
python __anonymous () {
- import bb, re
+ import bb, re, string
- rev = bb.data.getVar("SRCREV_machine", d, 1)
- if rev == "standard":
- bb.data.setVar("SRCREV_machine", "${SRCREV_meta}", d)
+ kerntype = string.replace(bb.data.expand("${LINUX_KERNEL_TYPE}", d), "_", "-")
+ bb.data.setVar("LINUX_KERNEL_TYPE_EXTENSION", kerntype, d)
}
-SRC_URI = "git://git.pokylinux.org/linux-2.6-windriver.git;protocol=git;fullclone=1;branch=${KBRANCH};name=machine \
- git://git.pokylinux.org/linux-2.6-windriver.git;protocol=git;noclone=1;branch=wrs_meta;name=meta"
-
+SRC_URI = "git://git.pokylinux.org/linux-2.6-windriver.git;protocol=git;nocheckout=1;branch=${KBRANCH},wrs_meta;name=machine,meta"
# Functionality flags
KERNEL_REVISION_CHECKING ?= "t"
diff --git a/meta/recipes-kernel/linux/linux-yocto.inc b/meta/recipes-kernel/linux/linux-yocto.inc
index 2a77f4a9c4..0812144d46 100644
--- a/meta/recipes-kernel/linux/linux-yocto.inc
+++ b/meta/recipes-kernel/linux/linux-yocto.inc
@@ -2,10 +2,12 @@ DESCRIPTION = "Yocto Kernel"
SECTION = "kernel"
LICENSE = "GPL"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
+
# A KMACHINE is the mapping of a yocto $MACHINE to what is built
# by the kernel. This is typically the branch that should be built,
# and it can be specific to the machine or shared
-KMACHINE = "UNDEFINED"
+# KMACHINE = "UNDEFINED"
# Set this to 'preempt_rt' in the local.conf if you want a real time kernel
LINUX_KERNEL_TYPE ?= standard
@@ -13,9 +15,9 @@ LINUX_KERNEL_TYPE ?= standard
do_patch[depends] = "kern-tools-native:do_populate_sysroot"
addtask kernel_configme before do_configure after do_patch
-addtask kernel_configcheck after do_configure before do_compile
# Pick up shared functions
inherit kernel-yocto
+require linux-dtb.inc
-B = "${WORKDIR}/linux-${KMACHINE}-${LINUX_KERNEL_TYPE}-build"
+B = "${WORKDIR}/linux-${MACHINE}-${LINUX_KERNEL_TYPE}-build"
diff --git a/meta/recipes-kernel/linux/linux-yocto/tools-perf-no-scripting.patch b/meta/recipes-kernel/linux/linux-yocto/tools-perf-no-scripting.patch
new file mode 100644
index 0000000000..e0ad9997f7
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-yocto/tools-perf-no-scripting.patch
@@ -0,0 +1,49 @@
+Index: tools/perf/Makefile
+===================================================================
+--- a/tools/perf/Makefile 2011-01-14 14:17:33.127008554 -0600
++++ b/tools/perf/Makefile 2011-01-14 14:18:14.227008548 -0600
+@@ -588,42 +588,8 @@
+ endif
+ endif
+
+-ifdef NO_LIBPERL
+- BASIC_CFLAGS += -DNO_LIBPERL
+-else
+- PERL_EMBED_LDOPTS = $(shell perl -MExtUtils::Embed -e ldopts 2>/dev/null)
+- PERL_EMBED_LDFLAGS = $(call strip-libs,$(PERL_EMBED_LDOPTS))
+- PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS))
+- PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null`
+- FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS)
+-
+- ifneq ($(call try-cc,$(SOURCE_PERL_EMBED),$(FLAGS_PERL_EMBED)),y)
+- BASIC_CFLAGS += -DNO_LIBPERL
+- else
+- ALL_LDFLAGS += $(PERL_EMBED_LDFLAGS)
+- EXTLIBS += $(PERL_EMBED_LIBADD)
+- LIB_OBJS += $(OUTPUT)util/scripting-engines/trace-event-perl.o
+- LIB_OBJS += $(OUTPUT)scripts/perl/Perf-Trace-Util/Context.o
+- endif
+-endif
+-
+-ifdef NO_LIBPYTHON
+- BASIC_CFLAGS += -DNO_LIBPYTHON
+-else
+- PYTHON_EMBED_LDOPTS = $(shell python-config --ldflags 2>/dev/null)
+- PYTHON_EMBED_LDFLAGS = $(call strip-libs,$(PYTHON_EMBED_LDOPTS))
+- PYTHON_EMBED_LIBADD = $(call grep-libs,$(PYTHON_EMBED_LDOPTS))
+- PYTHON_EMBED_CCOPTS = `python-config --cflags 2>/dev/null`
+- FLAGS_PYTHON_EMBED=$(PYTHON_EMBED_CCOPTS) $(PYTHON_EMBED_LDOPTS)
+- ifneq ($(call try-cc,$(SOURCE_PYTHON_EMBED),$(FLAGS_PYTHON_EMBED)),y)
+- BASIC_CFLAGS += -DNO_LIBPYTHON
+- else
+- ALL_LDFLAGS += $(PYTHON_EMBED_LDFLAGS)
+- EXTLIBS += $(PYTHON_EMBED_LIBADD)
+- LIB_OBJS += $(OUTPUT)util/scripting-engines/trace-event-python.o
+- LIB_OBJS += $(OUTPUT)scripts/python/Perf-Trace-Util/Context.o
+- endif
+-endif
++BASIC_CFLAGS += -DNO_LIBPERL
++BASIC_CFLAGS += -DNO_LIBPYTHON
+
+ ifdef NO_DEMANGLE
+ BASIC_CFLAGS += -DNO_DEMANGLE
diff --git a/meta/recipes-kernel/linux/linux-yocto_git.bb b/meta/recipes-kernel/linux/linux-yocto_git.bb
index f40fe38fcd..75c6fb1653 100644
--- a/meta/recipes-kernel/linux/linux-yocto_git.bb
+++ b/meta/recipes-kernel/linux/linux-yocto_git.bb
@@ -1,26 +1,30 @@
inherit kernel
require linux-yocto.inc
-KMACHINE_qemux86 = "common_pc/base"
-KMACHINE_qemux86-64 = "common_pc_64"
-KMACHINE_qemuppc = "qemu_ppc32"
-KMACHINE_qemumips = "mti_malta32_be"
-KMACHINE_qemuarm = "arm_versatile_926ejs"
-KMACHINE_atom-pc = "atom-pc"
-KMACHINE_routerstationpro = "routerstationpro"
-KMACHINE_mpc8315e-rdb = "fsl-mpc8315e-rdb"
-KMACHINE_beagleboard = "beagleboard"
+KMACHINE = "yocto/standard/base"
+KMACHINE_qemux86 = "yocto/standard/common-pc/base"
+KMACHINE_qemux86-64 = "yocto/standard/common-pc-64/base"
+KMACHINE_qemuppc = "yocto/standard/qemu-ppc32"
+KMACHINE_qemumips = "yocto/standard/mti-malta32-be"
+KMACHINE_qemuarm = "yocto/standard/arm-versatile-926ejs"
+KMACHINE_atom-pc = "yocto/standard/common-pc/atom-pc"
+KMACHINE_routerstationpro = "yocto/standard/routerstationpro"
+KMACHINE_mpc8315e-rdb = "yocto/standard/fsl-mpc8315e-rdb"
+KMACHINE_beagleboard = "yocto/standard/beagleboard"
+
+KBRANCH = ${KMACHINE}
+KMETA = meta
LINUX_VERSION ?= "2.6.37"
LINUX_VERSION_EXTENSION ?= "-yocto-${LINUX_KERNEL_TYPE}"
-PR = "r14"
+PR = "r15"
PV = "${LINUX_VERSION}+git${SRCPV}"
SRCREV_FORMAT = "meta_machine"
-SRC_URI = "git://git.pokylinux.org/linux-yocto-2.6.37;protocol=git;fullclone=1;branch=${KBRANCH};name=machine \
- git://git.pokylinux.org/linux-yocto-2.6.37;protocol=git;noclone=1;branch=meta;name=meta"
+SRC_URI = "git://git.pokylinux.org/linux-yocto-2.6.37;protocol=git;nocheckout=1;branch=${KBRANCH},meta;name=machine,meta \
+ file://tools-perf-no-scripting.patch"
-COMPATIBLE_MACHINE = "(qemuarm|qemux86|qemuppc|qemumips|qemux86-64)"
+COMPATIBLE_MACHINE = "(qemuarm|qemux86|qemuppc|qemumips|qemux86-64|mpc8315e-rdb|routerstationpro|beagleboard)"
# Functionality flags
KERNEL_REVISION_CHECKING ?= "t"
@@ -29,5 +33,6 @@ KERNEL_FEATURES=features/netfilter
# extra tasks
addtask kernel_link_vmlinux after do_compile before do_install
addtask validate_branches before do_patch after do_kernel_checkout
+addtask kernel_configcheck after do_configure before do_compile
require linux-tools.inc
diff --git a/meta/recipes-kernel/linux/linux.inc b/meta/recipes-kernel/linux/linux.inc
index 93859bb5a8..726d3d6904 100644
--- a/meta/recipes-kernel/linux/linux.inc
+++ b/meta/recipes-kernel/linux/linux.inc
@@ -3,6 +3,7 @@ SECTION = "kernel"
LICENSE = "GPL"
inherit kernel
+require linux-dtb.inc
DEPENDS_append_em-x270 = " mtd-utils "
@@ -15,21 +16,6 @@ CMDLINE_at91sam9263ek = "mem=64M console=ttyS0,115200 root=/dev/mmcblk0p1 rootfs
#boot from nfs
#CMDLINE_at91sam9263ek = "mem=64M console=ttyS0,115200 root=301 root=/dev/nfs nfsroot=172.20.3.1:/data/at91 ip=172.20.0.5:::255.255.0.0"
-# Support for device tree generation
-FILES_kernel_devicetree = "/boot/devicetree*"
-KERNEL_DEVICETREE_FLAGS = "-R 8 -p 0x3000"
-
-python __anonymous () {
- import bb
-
- devicetree = bb.data.getVar("KERNEL_DEVICETREE", d, 1) or ''
- if devicetree:
- depends = bb.data.getVar("DEPENDS", d, 1)
- bb.data.setVar("DEPENDS", "%s dtc-native" % depends, d)
- packages = bb.data.getVar("PACKAGES", d, 1)
- bb.data.setVar("PACKAGES", "%s kernel-devicetree" % packages, d)
-}
-
do_configure_prepend() {
echo "" > ${S}/.config
@@ -105,14 +91,3 @@ do_install_prepend() {
fi
}
-do_install_append() {
- if test -n "${KERNEL_DEVICETREE}"; then
- dtc -I dts -O dtb ${KERNEL_DEVICETREE_FLAGS} -o devicetree ${KERNEL_DEVICETREE}
- install -m 0644 devicetree ${D}/boot/devicetree-${KERNEL_VERSION}
- install -d ${DEPLOY_DIR_IMAGE}
- install -m 0644 devicetree ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.dtb
- cd ${DEPLOY_DIR_IMAGE}
- rm -f ${KERNEL_IMAGE_SYMLINK_NAME}.dtb
- ln -sf ${KERNEL_IMAGE_BASE_NAME}.dtb ${KERNEL_IMAGE_SYMLINK_NAME}.dtb
- fi
-}
diff --git a/meta/recipes-kernel/linux/linux_2.6.33.2.bb b/meta/recipes-kernel/linux/linux_2.6.33.2.bb
index 0f1a9f4e08..2c9817f296 100644
--- a/meta/recipes-kernel/linux/linux_2.6.33.2.bb
+++ b/meta/recipes-kernel/linux/linux_2.6.33.2.bb
@@ -1,5 +1,8 @@
require linux.inc
+LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
+
+
# Mark archs/machines that this kernel supports
DEFAULT_PREFERENCE = "-1"
DEFAULT_PREFERENCE_mpc8313erdb = "1"
diff --git a/meta/recipes-kernel/lttng/lttng-ust_0.11.bb b/meta/recipes-kernel/lttng/lttng-ust_0.11.bb
new file mode 100644
index 0000000000..575e35ac9c
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-ust_0.11.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Linux Trace Toolkit Userspace Tracer"
+DESCRIPTION = "The LTTng Userspace Tracer (UST) is a library accompanied by a set of tools to trace userspace code"
+HOMEPAGE = "http://lttng.org/ust"
+BUGTRACKER = "n/a"
+
+LICENSE = "LGPLv2.1+ & BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e647752e045a8c45b6f583771bd561ef \
+ file://ustctl/ustctl.c;endline=16;md5=eceeaab8a5574f24d62f7950b9d1adf4 \
+ file://snprintf/various.h;endline=31;md5=89f2509b6b4682c4fc95255eec4abe44"
+
+DEPENDS = "liburcu"
+
+PR = "r0"
+
+SRC_URI = "http://lttng.org/files/ust/releases/ust-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "0a23fa60df4da3fb5188e314001eb49c"
+SRC_URI[sha256sum] = "af8f699019ae260103bb401b6738d5e417e79732a509859b42a52e9a0f5edb35"
+
+S = "${WORKDIR}/ust-${PV}"
+
+inherit autotools
+
+# Due to liburcu not building on ARM or MIPS currently this recipe needs to
+# be limited also.
+# So here let us first suppport x86/powerpc platforms now.
+COMPATIBLE_HOST = '(x86_64.*|i.86.*|powerpc.*)-linux'
+
+
+
diff --git a/meta/recipes-kernel/lttng/lttng-ust_0.8.bb b/meta/recipes-kernel/lttng/lttng-ust_0.8.bb
deleted file mode 100644
index 507ee501e3..0000000000
--- a/meta/recipes-kernel/lttng/lttng-ust_0.8.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "Linux Trace Toolkit Userspace Tracer"
-DESCRIPTION = "The LTTng Userspace Tracer (UST) is a library accompanied by a set of tools to trace userspace code"
-HOMEPAGE = "http://lttng.org/ust"
-BUGTRACKER = "n/a"
-
-# In the source directory, doc/manual/ust.html says ustctl/libustcmd/ustd are
-# licensed as GPL v2, but the source codes of ustctl/libustcmd/ustd have a
-# LGPLv2.1+ header; the files in snprintf/ have a BSD header.
-LICENSE = "LGPV2.1+ & BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e647752e045a8c45b6f583771bd561ef \
- file://ustctl/ustctl.c;endline=16;md5=eceeaab8a5574f24d62f7950b9d1adf4 \
- file://snprintf/various.h;endline=31;md5=89f2509b6b4682c4fc95255eec4abe44"
-
-DEPENDS = "liburcu"
-
-PR = "r0"
-
-SRC_URI = "http://lttng.org/files/ust/releases/ust-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "333ff7c8fef92b31dff85789865bb791"
-SRC_URI[sha256sum] = "802398bc2c3ad5c80bd236d1ee24968f4da8a1401695e8dc15cb396ac836abb4"
-
-S = "${WORKDIR}/ust-${PV}"
-
-inherit autotools
-
diff --git a/meta/recipes-kernel/lttng/lttng-viewer_0.12.35.bb b/meta/recipes-kernel/lttng/lttng-viewer_0.12.35.bb
deleted file mode 100644
index 94c615502f..0000000000
--- a/meta/recipes-kernel/lttng/lttng-viewer_0.12.35.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-SUMMARY = "Linux Trace Toolkit Viewer"
-DESCRIPTION = "The Linux trace toolkit is a suite of tools designed to \
-extract program execution details from the Linux operating system and \
-interpret them."
-HOMEPAGE = "http://lttng.org/content/download"
-BUGTRACKER = "n/a"
-
-LICENSE = "GPLv2 & LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=f650d5f5af1e9648fe0b40e290d3adbb \
- file://ltt/ltt.h;beginline=2;endline=18;md5=8b7da9190028c50396d97fc85bad0da9 \
- file://lttv/lttv/traceset.c;beginline=2;endline=17;md5=bcab42863b64b41d153bf81bbe2490a6"
-PR = "r0"
-DEPENDS = "gtk+ pango popt"
-
-SECTION = "devel"
-
-ALTNAME = "lttv-${PV}-20082010"
-
-SRC_URI = "http://lttng.org/files/packages/${ALTNAME}.tar.gz"
-
-SRC_URI[md5sum] = "ebcbc4e21184b4b0dcb0611b4977dad8"
-SRC_URI[sha256sum] = "d258b13cd76c37e4f8395c06159986dd45517bef312895ffa59722087a2879e7"
-S = "${WORKDIR}/${ALTNAME}"
-
-inherit autotools
-
-LEAD_SONAME = "liblttvtraceread*"
-
-FILES_${PN} += "\
- ${libdir}/lttv/plugins/*.so \
- ${datadir}/LinuxTraceToolkitViewer/facilities/* \
- ${datadir}/LinuxTraceToolkitViewer/pixmaps/* "
-FILES_${PN}-dbg += "${libdir}/lttv/plugins/.debug/"
-
diff --git a/meta/recipes-kernel/lttng/lttng-viewer_0.12.36.bb b/meta/recipes-kernel/lttng/lttng-viewer_0.12.36.bb
new file mode 100644
index 0000000000..e3054957d2
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-viewer_0.12.36.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Linux Trace Toolkit Viewer"
+DESCRIPTION = "The Linux trace toolkit is a suite of tools designed to \
+extract program execution details from the Linux operating system and \
+interpret them."
+HOMEPAGE = "http://lttng.org/content/download"
+BUGTRACKER = "n/a"
+
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f650d5f5af1e9648fe0b40e290d3adbb \
+ file://ltt/ltt.h;beginline=2;endline=18;md5=8b7da9190028c50396d97fc85bad0da9 \
+ file://lttv/lttv/traceset.c;beginline=2;endline=17;md5=bcab42863b64b41d153bf81bbe2490a6"
+PR = "r0"
+DEPENDS = "gtk+ pango popt"
+
+SECTION = "devel"
+
+ALTNAME = "lttv-${PV}-18112010"
+
+SRC_URI = "http://lttng.org/files/packages/${ALTNAME}.tar.gz"
+
+SRC_URI[md5sum] = "967f7c9c843a43e2ec2ef9216edabc70"
+SRC_URI[sha256sum] = "a7d14ae84f9bb123298840922730d3121fa073dc036dccac63083d9686adeacd"
+S = "${WORKDIR}/${ALTNAME}"
+
+inherit autotools
+
+LEAD_SONAME = "liblttvtraceread*"
+
+FILES_${PN} += "\
+ ${libdir}/lttv/plugins/*.so \
+ ${datadir}/LinuxTraceToolkitViewer/facilities/* \
+ ${datadir}/LinuxTraceToolkitViewer/pixmaps/* "
+FILES_${PN}-dbg += "${libdir}/lttv/plugins/.debug/"
+
diff --git a/meta/recipes-kernel/modutils/files/gcc4.patch b/meta/recipes-kernel/modutils/files/gcc4.patch
index e204898f05..53750bc617 100644
--- a/meta/recipes-kernel/modutils/files/gcc4.patch
+++ b/meta/recipes-kernel/modutils/files/gcc4.patch
@@ -1,6 +1,8 @@
---- modutils-2.4.27/depmod/depmod.c.old 2005-06-05 23:25:28.000000000 +0100
-+++ modutils-2.4.27/depmod/depmod.c 2005-06-05 23:25:38.000000000 +0100
-@@ -1133,7 +1133,7 @@
+Index: modutils-2.4.27/depmod/depmod.c
+===================================================================
+--- modutils-2.4.27.orig/depmod/depmod.c
++++ modutils-2.4.27/depmod/depmod.c
+@@ -1133,7 +1133,7 @@ static int addksyms(char *file_syms)
for (ksym = ksyms; so_far < nksyms; ++so_far, ksym++) {
if (strncmp((char *)ksym->name, "GPLONLY_", 8) == 0)
@@ -9,9 +11,11 @@
assert(n_syms < MAX_MAP_SYM);
symtab[n_syms++] = addsym((char *)ksym->name, mod, SYM_DEFINED, 0);
}
---- modutils-2.4.27/genksyms/genksyms.c.old 2005-06-05 23:24:16.000000000 +0100
-+++ modutils-2.4.27/genksyms/genksyms.c 2005-06-05 23:24:35.000000000 +0100
-@@ -45,7 +45,7 @@
+Index: modutils-2.4.27/genksyms/genksyms.c
+===================================================================
+--- modutils-2.4.27.orig/genksyms/genksyms.c
++++ modutils-2.4.27/genksyms/genksyms.c
+@@ -45,7 +45,7 @@ char *cur_filename, *output_directory;
int flag_debug, flag_dump_defs, flag_warnings;
int checksum_version = 1, kernel_version = version(2,0,0);
@@ -20,9 +24,11 @@
static int nsyms;
static struct symbol *expansion_trail;
---- modutils-2.4.27/insmod/insmod.c.old 2005-06-05 23:21:47.000000000 +0100
-+++ modutils-2.4.27/insmod/insmod.c 2005-06-05 23:22:34.000000000 +0100
-@@ -275,7 +275,7 @@
+Index: modutils-2.4.27/insmod/insmod.c
+===================================================================
+--- modutils-2.4.27.orig/insmod/insmod.c
++++ modutils-2.4.27/insmod/insmod.c
+@@ -275,7 +275,7 @@ static int add_symbols_from(struct obj_f
if (strncmp((char *)s->name, "GPLONLY_", 8) == 0) {
gplonly_seen = 1;
if (gpl)
@@ -31,9 +37,11 @@
else
continue;
}
---- modutils-2.4.27/obj/obj_kallsyms.c.old 2005-06-05 23:20:08.000000000 +0100
-+++ modutils-2.4.27/obj/obj_kallsyms.c 2005-06-05 23:20:24.000000000 +0100
-@@ -200,7 +200,7 @@
+Index: modutils-2.4.27/obj/obj_kallsyms.c
+===================================================================
+--- modutils-2.4.27.orig/obj/obj_kallsyms.c
++++ modutils-2.4.27/obj/obj_kallsyms.c
+@@ -200,7 +200,7 @@ obj_kallsyms (struct obj_file *fin, stru
/* Initial contents, header + one entry per input section. No strings. */
osec->header.sh_size = sizeof(*a_hdr) + loaded*sizeof(*a_sec);
@@ -42,7 +50,7 @@
xmalloc(osec->header.sh_size);
memset(osec->contents, 0, osec->header.sh_size);
a_hdr->size = sizeof(*a_hdr);
-@@ -275,7 +275,7 @@
+@@ -275,7 +275,7 @@ obj_kallsyms (struct obj_file *fin, stru
a_hdr->symbol_off +
a_hdr->symbols*a_hdr->symbol_size +
strings_size - strings_left;
@@ -51,9 +59,11 @@
xrealloc(a_hdr, a_hdr->total_size);
p = (char *)a_hdr + a_hdr->symbol_off;
memcpy(p, symbols, a_hdr->symbols*a_hdr->symbol_size);
---- modutils-2.4.27/obj/obj_mips.c.orig 2003-04-05 00:47:17.000000000 +0200
-+++ modutils-2.4.27/obj/obj_mips.c 2005-07-21 12:51:48.000000000 +0200
-@@ -244,7 +244,9 @@
+Index: modutils-2.4.27/obj/obj_mips.c
+===================================================================
+--- modutils-2.4.27.orig/obj/obj_mips.c
++++ modutils-2.4.27/obj/obj_mips.c
+@@ -244,7 +244,9 @@ arch_archdata (struct obj_file *f, struc
archdata_sec->header.sh_size = 0;
sec = obj_find_section(f, "__dbe_table");
if (sec) {
@@ -64,3 +74,18 @@
memset(ad, 0, sizeof(*ad));
archdata_sec->header.sh_size = sizeof(*ad);
ad->__start___dbe_table = sec->header.sh_addr;
+Index: modutils-2.4.27/obj/obj_ppc.c
+===================================================================
+--- modutils-2.4.27.orig/obj/obj_ppc.c
++++ modutils-2.4.27/obj/obj_ppc.c
+@@ -255,7 +255,9 @@ arch_archdata (struct obj_file *f, struc
+ archdata_sec->header.sh_size = 0;
+ sec = obj_find_section(f, "__ftr_fixup");
+ if (sec) {
+- ad = (struct archdata *) (archdata_sec->contents) = xmalloc(sizeof(*ad));
++ /* ad = (struct archdata *) (archdata_sec->contents) = xmalloc(sizeof(*ad)); */
++ archdata_sec->contents = xmalloc(sizeof(*ad));
++ ad = (struct archdata *) (archdata_sec->contents);
+ memset(ad, 0, sizeof(*ad));
+ archdata_sec->header.sh_size = sizeof(*ad);
+ ad->__start___ftr_fixup = sec->header.sh_addr;
diff --git a/meta/recipes-kernel/oprofile/oprofile_0.9.6.bb b/meta/recipes-kernel/oprofile/oprofile_0.9.6.bb
index 85e065f999..eb707e06d1 100644
--- a/meta/recipes-kernel/oprofile/oprofile_0.9.6.bb
+++ b/meta/recipes-kernel/oprofile/oprofile_0.9.6.bb
@@ -12,10 +12,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
SECTION = "devel"
DEPENDS = "popt binutils"
-RDEPENDS = "binutils-symlinks"
-RRECOMMENDS = "kernel-vmlinux"
+RDEPENDS_${PN} = "binutils-symlinks"
+RRECOMMENDS_${PN} = "kernel-vmlinux"
-PR = "r0"
+PR = "r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/oprofile/oprofile-${PV}.tar.gz \
file://opstart.patch \
diff --git a/meta/recipes-kernel/oprofile/oprofile_cvs.bb b/meta/recipes-kernel/oprofile/oprofile_cvs.bb
index f2ff5adfc2..f2b5520f63 100644
--- a/meta/recipes-kernel/oprofile/oprofile_cvs.bb
+++ b/meta/recipes-kernel/oprofile/oprofile_cvs.bb
@@ -1,13 +1,13 @@
PV = "0.9.4+cvs${SRCDATE}"
-PR = "r0"
+PR = "r1"
SECTION = "devel"
SUMMARY = "System-Wide Profiler"
DESCRIPTION = "OProfile is a system-wide profiler for Linux systems, capable \
of profiling all running code at low overhead."
LICENSE = "GPL"
DEPENDS = "popt binutils"
-RDEPENDS = "binutils-symlinks"
-RRECOMMENDS = "kernel-vmlinux"
+RDEPENDS_${PN} = "binutils-symlinks"
+RRECOMMENDS_${PN} = "kernel-vmlinux"
DEFAULT_PREFERENCE = "-1"
diff --git a/meta/recipes-kernel/oprofile/oprofileui-svn.inc b/meta/recipes-kernel/oprofile/oprofileui-svn.inc
index 4c9211cc05..5d40914734 100644
--- a/meta/recipes-kernel/oprofile/oprofileui-svn.inc
+++ b/meta/recipes-kernel/oprofile/oprofileui-svn.inc
@@ -1,8 +1,9 @@
require oprofileui.inc
-PV = "0.0+svnr${SRCREV}"
-PR = "r0"
+PV = "0.0+svnr${SRCPV}"
+PR = "r1"
S = "${WORKDIR}/trunk"
-SRC_URI = "svn://svn.o-hand.com/repos/oprofileui;module=trunk;proto=http"
+SRC_URI = "svn://svn.o-hand.com/repos/oprofileui;module=trunk;proto=http \
+ file://dso_linking_change_build_fix.patch "
diff --git a/meta/recipes-kernel/oprofile/oprofileui/dso_linking_change_build_fix.patch b/meta/recipes-kernel/oprofile/oprofileui/dso_linking_change_build_fix.patch
new file mode 100644
index 0000000000..4b44c69bcf
--- /dev/null
+++ b/meta/recipes-kernel/oprofile/oprofileui/dso_linking_change_build_fix.patch
@@ -0,0 +1,25 @@
+With dso linking change in gcc, all the libraries are needed to be explicitely specified to linker now. It breaks this package in following way. The libm library needs to be specified explicitely.
+
+| make[2]: Entering directory `/disk0/pokybuild/build1/tmp/work/i586-poky-linux/oprofileui-0.0+svnr197-r0/trunk/src'^M
+| ccache i586-poky-linux-gcc -march=i586 --sysroot=/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux -Wall -g -std=gnu99 -DPKG_DATA_DIR=\""/usr/share/oprofileui"\" -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb -feliminate-unused-debug-types -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o oprofile-viewer main.o client.o archive.o archive_window.o archive_save_window.o view.o report.o parser.o image.o symbol.o module.o symbol_instance.o module_instance.o callee_symbol_instance.o caller_symbol_instance.o state-util.o -pthread -lglade-2.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lxml2 -lgnomevfs-2 -lgmodule-2.0 -lgconf-2 -ldbus-glib-1 -ldbus-1 -lpthread -lgobject-2.0 -lgthread-2.0 -lrt -lglib-2.0 -pthread -lavahi-ui -lgtk-x11-2.0 -lavahi-common -lavahi-client -lavahi-glib -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 ../protocol/libop.a^M
+| /disk0/pokybuild/build1/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: ^X^B: invalid DSO for symbol `log@@GLIBC_2.0' definition^M
+| /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/lib/libm.so.6: could not read symbols: Bad value^M
+| collect2: ld returned 1 exit status^M
+| make[2]: *** [oprofile-viewer] Error 1^M
+
+Nitin A Kamble <nitin.a.kamble@intel.com>
+Date: 2011/01/11
+
+Index: trunk/src/Makefile.am
+===================================================================
+--- trunk.orig/src/Makefile.am
++++ trunk/src/Makefile.am
+@@ -56,7 +56,7 @@ oprofile_viewer_SOURCES = \
+
+ oprofile_viewer_LDFLAGS =
+
+-oprofile_viewer_LDADD = $(OPROFILEUI_LIBS) $(AVAHI_LIBS) $(top_builddir)/protocol/libop.a
++oprofile_viewer_LDADD = $(OPROFILEUI_LIBS) -lm $(AVAHI_LIBS) $(top_builddir)/protocol/libop.a
+
+ testparser_SOURCES = \
+ parser.c \
diff --git a/meta/recipes-kernel/systemtap/systemtap_git.bb b/meta/recipes-kernel/systemtap/systemtap_git.bb
new file mode 100644
index 0000000000..f28c946a18
--- /dev/null
+++ b/meta/recipes-kernel/systemtap/systemtap_git.bb
@@ -0,0 +1,28 @@
+DESCRIPTION = "SystemTap - script-directed dynamic tracing and performance analysis tool for Linux"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "elfutils"
+
+PR = r0
+PV = "1.4+git${SRCPV}"
+
+SRC_URI = "git://sources.redhat.com/git/systemtap.git;protocol=git \
+ "
+
+EXTRA_OECONF = "--prefix=${D} --with-libelf=${STAGING_DIR_TARGET} --without-rpm \
+ ac_cv_file__usr_include_nss=no \
+ ac_cv_file__usr_include_nss3=no \
+ ac_cv_file__usr_include_nspr=no \
+ ac_cv_file__usr_include_nspr4=no \
+ ac_cv_file__usr_include_avahi_client=no \
+ ac_cv_file__usr_include_avahi_common=no "
+
+SRC_URI[md5sum] = "cb202866ed704c44a876d041f788bdee"
+SRC_URI[sha256sum] = "8ffe35caec0d937bd23fd78a3a8d94b58907cc0de0330b35e38f9f764815c459"
+
+COMPATIBLE_MACHINE = "(qemux86|qemux86-64|qemuppc|emenlow|crownbay|atom-pc|n450)"
+
+S = "${WORKDIR}/git"
+
+inherit autotools
diff --git a/meta/recipes-kernel/trace-cmd/kernelshark_git.bb b/meta/recipes-kernel/trace-cmd/kernelshark_git.bb
new file mode 100644
index 0000000000..bfe7d997f4
--- /dev/null
+++ b/meta/recipes-kernel/trace-cmd/kernelshark_git.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Graphical trace viewer for Ftrace"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
+ file://kernel-shark.c;beginline=6;endline=8;md5=2c22c965a649ddd7973d7913c5634a5e"
+
+PR = r0
+PV = "1.0.5+git${SRCPV}"
+
+DEPENDS = "gtk+"
+RDEPENDS_${PN} = "trace-cmd"
+
+inherit pkgconfig
+
+SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/trace-cmd.git;protocol=git"
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE = "'CC=${CC}' 'AR=${AR}' 'prefix=${prefix}' gui"
+
+do_install() {
+ oe_runmake CC="${CC}" AR="${AR}" prefix="${prefix}" DESTDIR="${D}" install_gui
+}
diff --git a/meta/recipes-kernel/trace-cmd/trace-cmd_git.bb b/meta/recipes-kernel/trace-cmd/trace-cmd_git.bb
index e375afcade..8fe62d4f35 100644
--- a/meta/recipes-kernel/trace-cmd/trace-cmd_git.bb
+++ b/meta/recipes-kernel/trace-cmd/trace-cmd_git.bb
@@ -1,19 +1,18 @@
DESCRIPTION = "User interface to Ftrace"
-LICENSE = "GPL"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
+ file://trace-cmd.c;beginline=6;endline=8;md5=2c22c965a649ddd7973d7913c5634a5e"
-PR = r1
-PV = "1.0.4+git${SRCPV}"
+PR = r0
+PV = "1.0.5+git${SRCPV}"
+
+inherit pkgconfig
SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/trace-cmd.git;protocol=git"
S = "${WORKDIR}/git"
-
-do_compile() {
- oe_runmake ARCH="${ARCH}" CC="${CC}" LD="${LD}" prefix=${prefix}
-}
+EXTRA_OEMAKE = "'prefix=${prefix}'"
do_install() {
- oe_runmake ARCH="${ARCH}" CC="${CC}" LD="${LD}" \
- prefix=${prefix} DESTDIR=${D} install
+ oe_runmake prefix="${prefix}" DESTDIR="${D}" install
}
diff --git a/meta/recipes-kernel/update-modules/update-modules_1.0.bb b/meta/recipes-kernel/update-modules/update-modules_1.0.bb
index 93bc1493d9..a473bb58c7 100644
--- a/meta/recipes-kernel/update-modules/update-modules_1.0.bb
+++ b/meta/recipes-kernel/update-modules/update-modules_1.0.bb
@@ -4,8 +4,8 @@ LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://${WORKDIR}/COPYING.GPL;md5=751419260aa954499f7abaabaa882bbe"
PACKAGE_ARCH = "all"
-RDEPENDS = "${@base_contains("MACHINE_FEATURES", "kernel26", "module-init-tools-depmod","modutils-depmod",d)} "
-PR = "r7"
+RDEPENDS_${PN} = "${@base_contains("MACHINE_FEATURES", "kernel26", "module-init-tools-depmod","modutils-depmod",d)} "
+PR = "r8"
SRC_URI = "file://update-modules \
file://COPYING.GPL"
@@ -25,7 +25,7 @@ do_install() {
# The Unslung distro uses a 2.4 kernel for a machine (the NSLU2) which
# supports both 2.4 and 2.6 kernels. Rather than forcing OE to have
# to deal with that unique legacy corner case, we just nullify the
-# RDEPENDS here and handle it in the Unslung image recipe. I know this
+# RDEPENDS_${PN} here and handle it in the Unslung image recipe. I know this
# is ugly. Please don't remove it unless you first make the RDEPENDS
# line at the top of this file understand that a machine can be used
# in both a 2.4 kernel distro and a 2.6 kernel distro. Really, it's
diff --git a/meta/recipes-multimedia/gstreamer/gst-openmax_0.10.1.bb b/meta/recipes-multimedia/gstreamer/gst-openmax_0.10.1.bb
index a4cf815336..5eb7e425c1 100644
--- a/meta/recipes-multimedia/gstreamer/gst-openmax_0.10.1.bb
+++ b/meta/recipes-multimedia/gstreamer/gst-openmax_0.10.1.bb
@@ -1,5 +1,5 @@
DEPENDS = "gstreamer"
-RDEPENDS = "libomxil"
+RDEPENDS_${PN} = "libomxil"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24 \
file://util/sem.h;beginline=1;endline=20;md5=accce5550d5583b839b441a0623f09fc"
@@ -10,7 +10,7 @@ inherit autotools
EXTRA_OECONF += "--disable-valgrind"
-PR = "r0"
+PR = "r1"
FILES_${PN} += "${libdir}/gstreamer-0.10/libgstomx.so"
FILES_${PN}-dev += "${libdir}/gstreamer-0.10/libgstomx.*a"
diff --git a/meta/recipes-multimedia/gstreamer/gst-plugins-base-0.10.30/gst-plugins-base-tremor.patch b/meta/recipes-multimedia/gstreamer/gst-plugins-base-0.10.31/gst-plugins-base-tremor.patch
index a6494fd4a9..a6494fd4a9 100644
--- a/meta/recipes-multimedia/gstreamer/gst-plugins-base-0.10.30/gst-plugins-base-tremor.patch
+++ b/meta/recipes-multimedia/gstreamer/gst-plugins-base-0.10.31/gst-plugins-base-tremor.patch
diff --git a/meta/recipes-multimedia/gstreamer/gst-plugins-base_0.10.30.bb b/meta/recipes-multimedia/gstreamer/gst-plugins-base_0.10.30.bb
deleted file mode 100644
index aac630291a..0000000000
--- a/meta/recipes-multimedia/gstreamer/gst-plugins-base_0.10.30.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-require gst-plugins.inc
-
-LICENSE = "GPLv2+ & LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
- file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=622921ffad8cb18ab906c56052788a3f \
- file://COPYING.LIB;md5=55ca817ccb7d5b5b66355690e9abc605 \
- file://gst/ffmpegcolorspace/utils.c;beginline=1;endline=20;md5=9c83a200b8e597b26ca29df20fc6ecd0"
-
-DEPENDS += "virtual/libx11 alsa-lib freetype gnome-vfs liboil libogg libvorbis libxv libtheora avahi"
-RDEPENDS += "gnome-vfs-plugin-file gnome-vfs-plugin-http gnome-vfs-plugin-ftp \
- gnome-vfs-plugin-sftp"
-
-SRC_URI += " file://gst-plugins-base-tremor.patch"
-
-SRC_URI[md5sum] = "3ad90152b58563e1314af26c263f3c4c"
-SRC_URI[sha256sum] = "63938641380be9935c804ae8d55acdcfd93920ed2deb72dcf70f027a78b085d7"
-
-PR = "r1"
-
-inherit gettext
-
-EXTRA_OECONF += "--disable-freetypetest --disable-pango"
-
-do_configure_prepend() {
- # This m4 file contains nastiness which conflicts with libtool 2.2.2
- rm -f ${S}/m4/lib-link.m4
-}
diff --git a/meta/recipes-multimedia/gstreamer/gst-plugins-base_0.10.31.bb b/meta/recipes-multimedia/gstreamer/gst-plugins-base_0.10.31.bb
new file mode 100644
index 0000000000..8bf243ed60
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gst-plugins-base_0.10.31.bb
@@ -0,0 +1,27 @@
+require gst-plugins.inc
+
+LICENSE = "GPLv2+ & LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
+ file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=622921ffad8cb18ab906c56052788a3f \
+ file://COPYING.LIB;md5=55ca817ccb7d5b5b66355690e9abc605 \
+ file://gst/ffmpegcolorspace/utils.c;beginline=1;endline=20;md5=9c83a200b8e597b26ca29df20fc6ecd0"
+
+DEPENDS += "virtual/libx11 alsa-lib freetype gnome-vfs liboil libogg libvorbis libxv libtheora avahi util-linux"
+RDEPENDS_${PN} += "gnome-vfs-plugin-file gnome-vfs-plugin-http gnome-vfs-plugin-ftp \
+ gnome-vfs-plugin-sftp"
+
+SRC_URI += " file://gst-plugins-base-tremor.patch"
+
+SRC_URI[md5sum] = "9baa0d87e81c88b2477a3554ab629c46"
+SRC_URI[sha256sum] = "abb006c78222cfb69d31e983268d1d5219e9d4e0da24c6c4cd687968af7a33bd"
+
+PR = "r1"
+
+inherit gettext
+
+EXTRA_OECONF += "--disable-freetypetest --disable-pango"
+
+do_configure_prepend() {
+ # This m4 file contains nastiness which conflicts with libtool 2.2.2
+ rm -f ${S}/m4/lib-link.m4
+}
diff --git a/meta/recipes-multimedia/gstreamer/gst-plugins-good_0.10.25.bb b/meta/recipes-multimedia/gstreamer/gst-plugins-good_0.10.25.bb
deleted file mode 100644
index 83b43b6f9e..0000000000
--- a/meta/recipes-multimedia/gstreamer/gst-plugins-good_0.10.25.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-require gst-plugins.inc
-
-LICENSE = "GPLv2+ & LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
- file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=622921ffad8cb18ab906c56052788a3f \
- file://gst/replaygain/rganalysis.c;beginline=1;endline=23;md5=b60ebefd5b2f5a8e0cab6bfee391a5fe"
-
-DEPENDS += "gst-plugins-base gconf cairo jpeg libpng gtk+ zlib libid3tag flac \
- speex"
-PR = "r0"
-
-inherit gettext
-
-EXTRA_OECONF += "--disable-aalib --disable-esd --disable-shout2 --disable-libcaca --without-check"
-
-do_configure_prepend() {
- # This m4 file contains nastiness which conflicts with libtool 2.2.2
- rm ${S}/m4/lib-link.m4 || true
-}
-
-SRC_URI[md5sum] = "d734bc866788d1d6fc74c4ff1318926c"
-SRC_URI[sha256sum] = "b5d5750c12412c47d85ba9391c842f6f02cad9511876695e48b15fb37e4699f6"
diff --git a/meta/recipes-multimedia/gstreamer/gst-plugins-good_0.10.26.bb b/meta/recipes-multimedia/gstreamer/gst-plugins-good_0.10.26.bb
new file mode 100644
index 0000000000..78b24fe8d3
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gst-plugins-good_0.10.26.bb
@@ -0,0 +1,22 @@
+require gst-plugins.inc
+
+LICENSE = "GPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
+ file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=622921ffad8cb18ab906c56052788a3f \
+ file://gst/replaygain/rganalysis.c;beginline=1;endline=23;md5=b60ebefd5b2f5a8e0cab6bfee391a5fe"
+
+DEPENDS += "gst-plugins-base gconf cairo jpeg libpng gtk+ zlib libid3tag flac \
+ speex"
+PR = "r0"
+
+inherit gettext
+
+EXTRA_OECONF += "--disable-aalib --disable-esd --disable-shout2 --disable-libcaca --without-check"
+
+do_configure_prepend() {
+ # This m4 file contains nastiness which conflicts with libtool 2.2.2
+ rm ${S}/m4/lib-link.m4 || true
+}
+
+SRC_URI[md5sum] = "e1ed191adbf81edff04f348f8ce8e198"
+SRC_URI[sha256sum] = "ceb3bbea5ce18463b8fe470d34786bc846469e800305c436d799af9fe22bdcc4"
diff --git a/meta/recipes-multimedia/gstreamer/gst-plugins.inc b/meta/recipes-multimedia/gstreamer/gst-plugins.inc
index cd3e0a0a95..4edca95611 100644
--- a/meta/recipes-multimedia/gstreamer/gst-plugins.inc
+++ b/meta/recipes-multimedia/gstreamer/gst-plugins.inc
@@ -7,6 +7,8 @@ DEPENDS = "gstreamer"
inherit autotools pkgconfig
+FILESPATH =. "${FILE_DIRNAME}/gst-plugins:"
+
SRC_URI = "http://gstreamer.freedesktop.org/src/${PN}/${PN}-${PV}.tar.bz2"
EXTRA_OECONF = "--disable-valgrind --disable-debug --disable-examples "
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer-0.10.30/make-382.patch b/meta/recipes-multimedia/gstreamer/gstreamer-0.10.30/make-382.patch
deleted file mode 100644
index 1af2a81325..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer-0.10.30/make-382.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-The whitespaces instead of tabs here cause the new, stricter, parser in make
-3.82 to barf on the doc makefiles.
-
-This patch should no longer be required in more recent gstreamer version
-
-JL - 14/12/10
-
-Index: gstreamer-0.10.29/common/gtk-doc.mak
-===================================================================
---- gstreamer-0.10.29.orig/common/gtk-doc.mak
-+++ gstreamer-0.10.29/common/gtk-doc.mak
-@@ -232,6 +232,6 @@ dist-hook: dist-check-gtkdoc dist-hook-l
- -cp $(srcdir)/$(DOC_MODULE).types $(distdir)/
- -cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/
- cd $(distdir) && rm -f $(DISTCLEANFILES)
-- -gtkdoc-rebase --online --relative --html-dir=$(distdir)/html
-+ -gtkdoc-rebase --online --relative --html-dir=$(distdir)/html
-
- .PHONY : dist-hook-local docs
-Index: gstreamer-0.10.29/common/gtk-doc-plugins.mak
-===================================================================
---- gstreamer-0.10.29.orig/common/gtk-doc-plugins.mak
-+++ gstreamer-0.10.29/common/gtk-doc-plugins.mak
-@@ -352,7 +352,7 @@ dist-hook: dist-check-gtkdoc dist-hook-l
- -cp $(srcdir)/$(DOC_MODULE).types $(distdir)/
- -cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/
- cd $(distdir) && rm -f $(DISTCLEANFILES)
-- -gtkdoc-rebase --online --relative --html-dir=$(distdir)/html
-+ -gtkdoc-rebase --online --relative --html-dir=$(distdir)/html
-
- .PHONY : dist-hook-local docs
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer-0.10.30/check_fix.patch b/meta/recipes-multimedia/gstreamer/gstreamer-0.10.31/check_fix.patch
index 72c3f6407e..72c3f6407e 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer-0.10.30/check_fix.patch
+++ b/meta/recipes-multimedia/gstreamer/gstreamer-0.10.31/check_fix.patch
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer-0.10.30/gst-inspect-check-error.patch b/meta/recipes-multimedia/gstreamer/gstreamer-0.10.31/gst-inspect-check-error.patch
index 4ca1dbe6ab..4ca1dbe6ab 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer-0.10.30/gst-inspect-check-error.patch
+++ b/meta/recipes-multimedia/gstreamer/gstreamer-0.10.31/gst-inspect-check-error.patch
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer-0.10.30/gstregistrybinary.c b/meta/recipes-multimedia/gstreamer/gstreamer-0.10.31/gstregistrybinary.c
index c1f3e71af6..c1f3e71af6 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer-0.10.30/gstregistrybinary.c
+++ b/meta/recipes-multimedia/gstreamer/gstreamer-0.10.31/gstregistrybinary.c
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer-0.10.30/gstregistrybinary.h b/meta/recipes-multimedia/gstreamer/gstreamer-0.10.31/gstregistrybinary.h
index 2ef24d765d..2ef24d765d 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer-0.10.30/gstregistrybinary.h
+++ b/meta/recipes-multimedia/gstreamer/gstreamer-0.10.31/gstregistrybinary.h
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer_0.10.30.bb b/meta/recipes-multimedia/gstreamer/gstreamer_0.10.30.bb
deleted file mode 100644
index 538884e3d0..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer_0.10.30.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SUMMARY = "GStreamer multimedia framework"
-DESCRIPTION = "GStreamer is a multimedia framework for encoding and decoding video and sound. \
-It supports a wide range of formats including mp3, ogg, avi, mpeg and quicktime."
-HOMEPAGE = "http://gstreamer.freedesktop.org/"
-BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer"
-SECTION = "multimedia"
-PRIORITY = "optional"
-LICENSE = "LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=55ca817ccb7d5b5b66355690e9abc605 \
- file://gst/gst.h;beginline=1;endline=21;md5=8e5fe5e87d33a04479fde862e238eaa4"
-DEPENDS = "glib-2.0 gettext libxml2 bison-native flex-native"
-
-PR = "r1"
-
-SRC_URI = "http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.bz2 \
- file://check_fix.patch \
- file://gst-inspect-check-error.patch \
- file://make-382.patch"
-
-SRC_URI[md5sum] = "de01f73f71d97c5854badd363ca06509"
-SRC_URI[sha256sum] = "e8ef301be423797ff36a0bb3615930b112b4175634051d19fd655e0ed974532a"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "--disable-docs-build --disable-dependency-tracking --with-check=no --disable-examples --disable-tests --disable-valgrind --disable-debug"
-
-#do_compile_prepend () {
-# mv ${WORKDIR}/gstregistrybinary.[ch] ${S}/gst/
-#}
-
-PARALLEL_MAKE = ""
-
-FILES_${PN} += " ${libdir}/gstreamer-0.10/*.so"
-FILES_${PN}-dev += " ${libdir}/gstreamer-0.10/*.la ${libdir}/gstreamer-0.10/*.a"
-FILES_${PN}-dbg += " ${libdir}/gstreamer-0.10/.debug/"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer_0.10.31.bb b/meta/recipes-multimedia/gstreamer/gstreamer_0.10.31.bb
new file mode 100644
index 0000000000..e7b00adfa0
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer_0.10.31.bb
@@ -0,0 +1,34 @@
+SUMMARY = "GStreamer multimedia framework"
+DESCRIPTION = "GStreamer is a multimedia framework for encoding and decoding video and sound. \
+It supports a wide range of formats including mp3, ogg, avi, mpeg and quicktime."
+HOMEPAGE = "http://gstreamer.freedesktop.org/"
+BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer"
+SECTION = "multimedia"
+PRIORITY = "optional"
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=55ca817ccb7d5b5b66355690e9abc605 \
+ file://gst/gst.h;beginline=1;endline=21;md5=8e5fe5e87d33a04479fde862e238eaa4"
+DEPENDS = "glib-2.0 gettext libxml2 bison-native flex-native"
+
+PR = "r0"
+
+SRC_URI = "http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.bz2 \
+ file://check_fix.patch \
+ file://gst-inspect-check-error.patch"
+
+SRC_URI[md5sum] = "a21fb08bdb578d972c7c14e77da8fbb6"
+SRC_URI[sha256sum] = "7f737e6d047c1ebeb4e1e0725fc377c5d9f12ee89186de7960be3cbba709ab84"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-docs-build --disable-dependency-tracking --with-check=no --disable-examples --disable-tests --disable-valgrind --disable-debug"
+
+#do_compile_prepend () {
+# mv ${WORKDIR}/gstregistrybinary.[ch] ${S}/gst/
+#}
+
+PARALLEL_MAKE = ""
+
+FILES_${PN} += " ${libdir}/gstreamer-0.10/*.so"
+FILES_${PN}-dev += " ${libdir}/gstreamer-0.10/*.la ${libdir}/gstreamer-0.10/*.a"
+FILES_${PN}-dbg += " ${libdir}/gstreamer-0.10/.debug/"
diff --git a/meta/recipes-multimedia/libogg/libogg_1.2.1.bb b/meta/recipes-multimedia/libogg/libogg_1.2.1.bb
deleted file mode 100644
index 37b6c090b7..0000000000
--- a/meta/recipes-multimedia/libogg/libogg_1.2.1.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "Ogg bitstream and framing libary"
-DESCRIPTION = "libogg is the bitstream and framing library \
-for the Ogg project. It provides functions which are \
-necessary to codec libraries like libvorbis."
-HOMEPAGE = "http://xiph.org/"
-BUGTRACKER = "https://trac.xiph.org/newticket"
-SECTION = "libs"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=db1b7a668b2a6f47b2af88fb008ad555 \
- file://include/ogg/ogg.h;beginline=1;endline=11;md5=eda812856f13a3b1326eb8f020cc3b0b"
-
-PR = "r0"
-
-SRC_URI = "http://downloads.xiph.org/releases/ogg/libogg-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "b998c2420721146df3b3d0e7776c97b9"
-SRC_URI[sha256sum] = "6858848617bca6eab01e7d8526bc0d2a417e95070a255cbf9c881881365e36c0"
-
-inherit autotools pkgconfig
diff --git a/meta/recipes-multimedia/libogg/libogg_1.2.2.bb b/meta/recipes-multimedia/libogg/libogg_1.2.2.bb
new file mode 100644
index 0000000000..83454c8d09
--- /dev/null
+++ b/meta/recipes-multimedia/libogg/libogg_1.2.2.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Ogg bitstream and framing libary"
+DESCRIPTION = "libogg is the bitstream and framing library \
+for the Ogg project. It provides functions which are \
+necessary to codec libraries like libvorbis."
+HOMEPAGE = "http://xiph.org/"
+BUGTRACKER = "https://trac.xiph.org/newticket"
+SECTION = "libs"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=db1b7a668b2a6f47b2af88fb008ad555 \
+ file://include/ogg/ogg.h;beginline=1;endline=11;md5=eda812856f13a3b1326eb8f020cc3b0b"
+
+PR = "r0"
+
+SRC_URI = "http://downloads.xiph.org/releases/ogg/libogg-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "5a9fcabc9a1b7c6f1cd75ddc78f36c56"
+SRC_URI[sha256sum] = "ab000574bc26d5f01284f5b0f50e12dc761d035c429f2e9c70cb2a9487d8cfba"
+
+inherit autotools pkgconfig
diff --git a/meta/recipes-multimedia/musicbrainz/libmusicbrainz_3.0.3.bb b/meta/recipes-multimedia/musicbrainz/libmusicbrainz_3.0.3.bb
index 080c1bf36e..861e6fc72f 100644
--- a/meta/recipes-multimedia/musicbrainz/libmusicbrainz_3.0.3.bb
+++ b/meta/recipes-multimedia/musicbrainz/libmusicbrainz_3.0.3.bb
@@ -6,10 +6,10 @@ LIC_FILES_CHKSUM = "file://COPYING.txt;md5=fbc093901857fcd118f065f900982c24 \
file://include/musicbrainz3/includes.h;beginline=1;endline=21;md5=9ab2846573f560cea7561da472803a72"
DEPENDS = "expat neon"
-PR = "r0"
+PR = "r2"
SRC_URI = "http://ftp.musicbrainz.org/pub/musicbrainz/${PN}-${PV}.tar.gz \
- file://fix_build_issue_for_gcc_4.5.0.patch"
+ file://fix_build_issue_for_gcc_4.5.0.patch "
SRC_URI[md5sum] = "f4824d0a75bdeeef1e45cc88de7bb58a"
SRC_URI[sha256sum] = "7fd459a9fd05be9faec60a9a21caa9a1e9fda03147d58d8c7c95f33582a738c5"
diff --git a/meta/recipes-multimedia/pulseaudio/libcanberra/autoconf_version.patch b/meta/recipes-multimedia/pulseaudio/libcanberra/autoconf_version.patch
deleted file mode 100644
index 73a2ea6e49..0000000000
--- a/meta/recipes-multimedia/pulseaudio/libcanberra/autoconf_version.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-Allow a slightly older autoconf and disable the inbuild libltdl
-
-RP - 16/4/09
-
-Index: libcanberra-0.10/Makefile.am
-===================================================================
---- libcanberra-0.10.orig/Makefile.am 2009-04-16 14:38:53.000000000 +0100
-+++ libcanberra-0.10/Makefile.am 2009-04-16 14:39:04.000000000 +0100
-@@ -19,7 +19,7 @@
- dist_doc_DATA = README
-
- EXTRA_DIST = bootstrap.sh autogen.sh LGPL libcanberra.schemas
--SUBDIRS = src gtkdoc libltdl doc
-+SUBDIRS = src gtkdoc doc
-
- MAINTAINERCLEANFILES = README
- noinst_DATA = README
-Index: libcanberra-0.10/configure.ac
-===================================================================
---- libcanberra-0.10.orig/configure.ac 2009-04-16 14:32:33.000000000 +0100
-+++ libcanberra-0.10/configure.ac 2009-04-16 14:37:50.000000000 +0100
-@@ -19,7 +19,7 @@
- # License along with libcanberra. If not, see
- # <http://www.gnu.org/licenses/>.
-
--AC_PREREQ(2.62)
-+AC_PREREQ(2.61)
-
- AC_INIT([libcanberra], 0.10, [mzyvopnaoreen (at) 0pointer (dot) de])
- AC_CONFIG_SRCDIR([src/common.c])
-@@ -70,7 +70,6 @@
- AC_PROG_LIBTOOL
- AC_SUBST(LTDLINCL)
- AC_SUBST(LIBLTDL)
--AC_CONFIG_SUBDIRS(libltdl)
-
- #### Determine build environment ####
-
diff --git a/meta/recipes-multimedia/pulseaudio/libcanberra/nofallbackfix.patch b/meta/recipes-multimedia/pulseaudio/libcanberra/nofallbackfix.patch
deleted file mode 100644
index 89a4fbf9f1..0000000000
--- a/meta/recipes-multimedia/pulseaudio/libcanberra/nofallbackfix.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Index: libcanberra-0.10/src/sound-theme-spec.c
-===================================================================
---- libcanberra-0.10.orig/src/sound-theme-spec.c 2009-05-22 17:08:23.000000000 +0100
-+++ libcanberra-0.10/src/sound-theme-spec.c 2009-05-22 17:12:50.000000000 +0100
-@@ -398,9 +398,9 @@
- if ((ret = load_theme_dir(t, name)) < 0)
- goto fail;
-
-+ /* The fallback theme may intentionally not exist so ignore failure */
- if (!t->loaded_fallback_theme)
-- if ((ret = load_theme_dir(t, FALLBACK_THEME)) < 0)
-- goto fail;
-+ load_theme_dir(t, FALLBACK_THEME);
-
- if (*_t)
- ca_theme_data_free(*_t);
diff --git a/meta/recipes-multimedia/pulseaudio/libcanberra_0.10.bb b/meta/recipes-multimedia/pulseaudio/libcanberra_0.10.bb
deleted file mode 100644
index a94be2076c..0000000000
--- a/meta/recipes-multimedia/pulseaudio/libcanberra_0.10.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-SUMMARY = "Implementation of XDG Sound Theme and Name Specifications"
-DESCRIPTION = "Libcanberra is an implementation of the XDG Sound Theme and Name Specifications, for generating event sounds on free desktops."
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
- file://src/canberra.h;endline=24;md5=8dd99ba690687f5816f711d9313c8967"
-
-DEPENDS = "gtk+ pulseaudio alsa-lib libtool"
-PR = "r3"
-
-inherit gconf autotools
-
-SRC_URI = "http://0pointer.de/lennart/projects/libcanberra/libcanberra-${PV}.tar.gz \
- file://nofallbackfix.patch;patch=1 \
- file://autoconf_version.patch;patch=1"
-
-SRC_URI[md5sum] = "2623370bfcecaeecaeb85e5ec445f340"
-SRC_URI[sha256sum] = "b0e3cb59e605412a52352cf9cf36344b165463d4e65916c95deb73fc51838272"
-
-EXTRA_OECONF = " --disable-oss --disable-ltdl-install"
-
-do_configure_prepend () {
- rm -f ${S}/libltdl/configure*
-}
-
-FILES_${PN} += "${libdir}/gtk-2.0/modules/ ${datadir}/gnome"
-FILES_${PN}-dbg += "${libdir}/gtk-2.0/modules/.debug"
-
diff --git a/meta/recipes-multimedia/pulseaudio/libcanberra_0.26.bb b/meta/recipes-multimedia/pulseaudio/libcanberra_0.26.bb
new file mode 100644
index 0000000000..0daeb0e6c5
--- /dev/null
+++ b/meta/recipes-multimedia/pulseaudio/libcanberra_0.26.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Implementation of XDG Sound Theme and Name Specifications"
+DESCRIPTION = "Libcanberra is an implementation of the XDG Sound Theme and Name Specifications, for generating event sounds on free desktops."
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+ file://src/canberra.h;beginline=7;endline=24;md5=c616c687cf8da540a14f917e0d23ab03"
+
+DEPENDS = "gtk+ pulseaudio alsa-lib libtool"
+PR = "r0"
+
+inherit gconf autotools
+
+SRC_URI = "http://0pointer.de/lennart/projects/libcanberra/libcanberra-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "ee2c66ada7c851a4e7b6eb1682285a24"
+SRC_URI[sha256sum] = "4b5d8d2c2835133620adbc53745dd107b6e58b9a2963059e8f457143fee00982"
+
+EXTRA_OECONF = " --disable-oss --disable-ltdl-install"
+
+do_configure_prepend () {
+ rm -f ${S}/libltdl/configure*
+}
+
+FILES_${PN} += "${libdir}/gtk-2.0/modules/ ${datadir}/gnome"
+FILES_${PN}-dbg += "${libdir}/gtk-2.0/modules/.debug"
+
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.21/armv4+v5asm.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.22/armv4+v5asm.patch
index f07ee672ee..f07ee672ee 100644
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.21/armv4+v5asm.patch
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.22/armv4+v5asm.patch
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.21/autoconf_version.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.22/autoconf_version.patch
index 80d0003d12..80d0003d12 100644
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.21/autoconf_version.patch
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.22/autoconf_version.patch
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.21/buildfix.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.22/buildfix.patch
index ea8d769abc..ea8d769abc 100644
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.21/buildfix.patch
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.22/buildfix.patch
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.21/configure_silent_rules.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.22/configure_silent_rules.patch
index fd5abd5225..fd5abd5225 100644
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.21/configure_silent_rules.patch
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.22/configure_silent_rules.patch
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.21/gcc4-compile-fix.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.22/gcc4-compile-fix.patch
index 2969cbaa5a..2969cbaa5a 100644
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.21/gcc4-compile-fix.patch
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.22/gcc4-compile-fix.patch
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.21/tls_m4.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.22/tls_m4.patch
index a8292b2e1c..a8292b2e1c 100644
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.21/tls_m4.patch
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.22/tls_m4.patch
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.21/volatiles.04_pulse b/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.22/volatiles.04_pulse
index 5b1998032b..5b1998032b 100644
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.21/volatiles.04_pulse
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio-0.9.22/volatiles.04_pulse
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio_0.9.21.bb b/meta/recipes-multimedia/pulseaudio/pulseaudio_0.9.21.bb
deleted file mode 100644
index d2c21c47b7..0000000000
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio_0.9.21.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-require pulseaudio.inc
-
-PR = "r0"
-
-DEPENDS += "gdbm speex"
-
-DEFAULT_PREFERENCE_om-gta01 = "-1"
-DEFAULT_PREFERENCE_om-gta02 = "-1"
-DEFAULT_PREFERENCE_motorola-ezx = "-1"
-
-inherit gettext
-
-SRC_URI += "\
- file://buildfix.patch \
- file://autoconf_version.patch \
- file://tls_m4.patch \
- file://configure_silent_rules.patch \
- file://armv4+v5asm.patch \
-"
-
-do_compile_prepend() {
- cd ${S}
- mkdir -p ${S}/libltdl
- cp ${STAGING_LIBDIR}/libltdl* ${S}/libltdl
-}
-
-SRC_URI[md5sum] = "76e623c4c72e2258bc8bdeb1599bad74"
-SRC_URI[sha256sum] = "94e22356ac70ee95388ae58da90d88c6b3186d1938618d21671627ff56cee254"
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio_0.9.22.bb b/meta/recipes-multimedia/pulseaudio/pulseaudio_0.9.22.bb
new file mode 100644
index 0000000000..0d2f3286e9
--- /dev/null
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio_0.9.22.bb
@@ -0,0 +1,28 @@
+require pulseaudio.inc
+
+PR = "r0"
+
+DEPENDS += "gdbm speex"
+
+DEFAULT_PREFERENCE_om-gta01 = "-1"
+DEFAULT_PREFERENCE_om-gta02 = "-1"
+DEFAULT_PREFERENCE_motorola-ezx = "-1"
+
+inherit gettext
+
+SRC_URI += "\
+ file://buildfix.patch \
+ file://autoconf_version.patch \
+ file://tls_m4.patch \
+ file://configure_silent_rules.patch \
+ file://armv4+v5asm.patch \
+"
+
+do_compile_prepend() {
+ cd ${S}
+ mkdir -p ${S}/libltdl
+ cp ${STAGING_LIBDIR}/libltdl* ${S}/libltdl
+}
+
+SRC_URI[md5sum] = "ca85ab470669b05e100861654cf5eb3c"
+SRC_URI[sha256sum] = "c6019324395117a258c048a6db5e9734551cc2c61dc35b46403ff00d64be55f0"
diff --git a/meta/recipes-multimedia/tremor/tremor_20101027.bb b/meta/recipes-multimedia/tremor/tremor_20101027.bb
deleted file mode 100644
index c0a24645a4..0000000000
--- a/meta/recipes-multimedia/tremor/tremor_20101027.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "Fixed-point decoder"
-DESCRIPTION = "tremor is a fixed point implementation of the vorbis codec."
-SECTION = "libs"
-PRIORITY = "optional"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=db1b7a668b2a6f47b2af88fb008ad555 \
- file://os.h;beginline=3;endline=14;md5=5c0af5e1bedef3ce8178c89f48cd6f1f"
-DEPENDS = "libogg"
-SRCDATE = "${PV}"
-PR = "r0"
-
-SRC_URI = "svn://svn.xiph.org/trunk;module=Tremor;rev=17572;proto=http"
-
-S = "${WORKDIR}/Tremor"
-
-inherit autotools
-
-EXTRA_OECONF=" --enable-shared --disable-rpath "
-
-ARM_INSTRUCTION_SET = "arm"
diff --git a/meta/recipes-multimedia/tremor/tremor_20101121.bb b/meta/recipes-multimedia/tremor/tremor_20101121.bb
new file mode 100644
index 0000000000..157b3025eb
--- /dev/null
+++ b/meta/recipes-multimedia/tremor/tremor_20101121.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Fixed-point decoder"
+DESCRIPTION = "tremor is a fixed point implementation of the vorbis codec."
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=db1b7a668b2a6f47b2af88fb008ad555 \
+ file://os.h;beginline=3;endline=14;md5=5c0af5e1bedef3ce8178c89f48cd6f1f"
+DEPENDS = "libogg"
+SRCDATE = "${PV}"
+PR = "r0"
+
+SRC_URI = "svn://svn.xiph.org/trunk;module=Tremor;rev=17636;proto=http"
+
+S = "${WORKDIR}/Tremor"
+
+inherit autotools
+
+EXTRA_OECONF=" --enable-shared --disable-rpath "
+
+ARM_INSTRUCTION_SET = "arm"
diff --git a/meta/recipes-qt/meta/meta-toolchain-qte.bb b/meta/recipes-qt/meta/meta-toolchain-qte.bb
new file mode 100644
index 0000000000..da0dda77c9
--- /dev/null
+++ b/meta/recipes-qt/meta/meta-toolchain-qte.bb
@@ -0,0 +1,26 @@
+# Qt Embedded toolchain
+PR = "r5"
+TOOLCHAIN_HOST_TASK = "task-qte-toolchain-host"
+TOOLCHAIN_TARGET_TASK = "task-qte-toolchain-target"
+
+require recipes-core/meta/meta-toolchain.bb
+SDK_SUFFIX = "toolchain-qte"
+
+QT_DIR_NAME = "qtopia"
+
+toolchain_create_sdk_env_script_append() {
+ echo 'export OE_QMAKE_CC=${TARGET_SYS}-gcc' >> $script
+ echo 'export OE_QMAKE_CXX=${TARGET_SYS}-g++' >> $script
+ echo 'export OE_QMAKE_LINK=${TARGET_SYS}-g++' >> $script
+ echo 'export OE_QMAKE_AR=${TARGET_SYS}-ar' >> $script
+ echo 'export OE_QMAKE_LIBDIR_QT=${SDKPATH}/${TARGET_SYS}/${libdir}' >> $script
+ echo 'export OE_QMAKE_INCDIR_QT=${SDKPATH}/${TARGET_SYS}/${includedir}/${QT_DIR_NAME}' >> $script
+ echo 'export OE_QMAKE_MOC=${SDKPATH}/bin/moc4' >> $script
+ echo 'export OE_QMAKE_UIC=${SDKPATH}/bin/uic4' >> $script
+ echo 'export OE_QMAKE_UIC3=${SDKPATH}/bin/uic34' >> $script
+ echo 'export OE_QMAKE_RCC=${SDKPATH}/bin/rcc4' >> $script
+ echo 'export OE_QMAKE_QDBUSCPP2XML=${SDKPATH}/bin/qdbuscpp2xml4' >> $script
+ echo 'export OE_QMAKE_QDBUSXML2CPP=${SDKPATH}/bin/qdbusxml2cpp4' >> $script
+ echo 'export OE_QMAKE_QT_CONFIG=${SDKPATH}/${TARGET_SYS}/${datadir}/${QT_DIR_NAME}/mkspecs/qconfig.pri' >> $script
+ echo 'export QMAKESPEC=${SDKPATH}/${TARGET_SYS}/${datadir}/${QT_DIR_NAME}/mkspecs/linux-g++' >> $script
+}
diff --git a/meta/recipes-qt/qt-apps/fotowall_0.9.bb b/meta/recipes-qt/qt-apps/fotowall_0.9.bb
index 30dca4eebd..c5c751d9ac 100644
--- a/meta/recipes-qt/qt-apps/fotowall_0.9.bb
+++ b/meta/recipes-qt/qt-apps/fotowall_0.9.bb
@@ -7,8 +7,10 @@ LIC_FILES_CHKSUM = "file://GPL_V2;md5=79808397c3355f163c012616125c9e26 \
file://main.cpp;beginline=6;endline=11;md5=b569acc2bf8974a3082b58fc53b9d8dc"
SECTION = "x11/apps"
+PR = "r1"
+
DEPENDS = "qt4-x11-free"
-RDEPENDS = "qt4-x11-free"
+RRECOMMENDS_${PN} += "qt4-plugin-imageformat-gif qt4-plugin-imageformat-jpeg qt4-plugin-imageformat-tiff"
SRC_URI = "http://qt-apps.org/CONTENT/content-files/71316-Fotowall-0.9.tar.bz2"
diff --git a/meta/recipes-qt/qt-apps/qmmp_0.4.1.bb b/meta/recipes-qt/qt-apps/qmmp_0.4.1.bb
deleted file mode 100644
index c5afd91ea7..0000000000
--- a/meta/recipes-qt/qt-apps/qmmp_0.4.1.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-DESCRIPTION = "Qmmp (Qt-based Multimedia Player) is an audio-player, written with help of Qt library"
-HOMEPAGE = "http://qmmp.ylsoftware.com"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
-SECTION = "multimedia"
-
-PR = "r1"
-
-DEPENDS = "qt4-x11-free taglib"
-RDEPENDS = "qt4-x11-free libmad libvorbis libogg taglib alsa-lib curl"
-
-SRC_URI = "http://qmmp.ylsoftware.com/files/qmmp-0.4.1.tar.bz2"
-
-PARALLEL_MAKE = ""
-
-inherit qmake2 pkgconfig
-
-do_configure_prepend() {
- # fix qt4 lrelease name
- sed -i -e 's/lrelease-qt4/lrelease4/' ${S}/qmmp.pro
-
- # disable the unsupported plugin
- for plugin in sndfile wavpack ; do
- sed -i -e "s/$plugin//" ${S}/src/plugins/Input/Input.pro
- done
- sed -i -e 's/mms//' ${S}/src/plugins/Transports/Transports.pro
- sed -i -e 's/srconverter//' ${S}/src/plugins/Effect/Effect.pro
-
- sed -i -e 's/^CONFIG/#CONFIG/' ${S}/qmmp.pri
- sed -i -e 's/CONFIG += WITH_ENCA/#CONFIG += WITH_ENCA/' ${S}/qmmp.pri
-}
-
-do_install() {
- oe_runmake INSTALL_ROOT=${D} install
-}
diff --git a/meta/recipes-qt/qt-apps/qmmp_0.4.3.bb b/meta/recipes-qt/qt-apps/qmmp_0.4.3.bb
new file mode 100644
index 0000000000..b01c616607
--- /dev/null
+++ b/meta/recipes-qt/qt-apps/qmmp_0.4.3.bb
@@ -0,0 +1,46 @@
+DESCRIPTION = "Qmmp (Qt-based Multimedia Player) is an audio-player, written with help of Qt library"
+HOMEPAGE = "http://qmmp.ylsoftware.com"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
+SECTION = "multimedia"
+
+PR = "r0"
+
+DEPENDS = "qt4-x11-free taglib libmad libvorbis libogg alsa-lib"
+RDEPENDS_${PN} += "taglib alsa-lib curl"
+
+SRC_URI = "http://qmmp.ylsoftware.com/files/${PN}-${PV}.tar.bz2"
+
+SRC_URI[md5sum] = "b79ce55ed8aca31a29360ff828ce1881"
+SRC_URI[sha256sum] = "a75c2c676515182ecfbe811cba29ba4ca736912e52fde283db4d03eb116457a4"
+
+PARALLEL_MAKE = ""
+
+inherit qmake2 cmake
+
+export EXTRA_OECMAKE = "-DQT_QMAKE_EXECUTABLE=${OE_QMAKE_QMAKE} \
+ -DQT_LRELEASE_EXECUTABLE=${OE_QMAKE_LRELEASE} \
+ -DQT_MOC_EXECUTABLE=${OE_QMAKE_MOC} \
+ -DQT_UIC_EXECUTABLE=${OE_QMAKE_UIC} \
+ -DQT_RCC_EXECUTABLE=${OE_QMAKE_RCC} \
+ -DQT_LIBRARY_DIR=${OE_QMAKE_LIBDIR_QT} \
+ -DQT_HEADERS_DIR=${OE_QMAKE_INCDIR_QT} \
+ -DQT_QTCORE_INCLUDE_DIR=${OE_QMAKE_INCDIR_QT}/QtCore \
+ "
+
+FILES_${PN} = "${bindir}/qmmp ${libdir}/*.so* \
+ ${libdir}/qmmp/PlaylistFormats/*.so \
+ ${libdir}/qmmp/Output/libalsa.so \
+ ${libdir}/qmmp/Transports/libhttp.so \
+ ${libdir}/qmmp/Visual/libanalyzer.so \
+ ${datadir}/icons/* \
+ ${datadir}/qmmp/images/* \
+ ${datadir}/applications/qmmp.desktop \
+ "
+
+PACKAGES += "${PN}-plugin-input-mad ${PN}-plugin-input-vorbis"
+
+FILES_${PN}-plugin-input-mad = "${libdir}/qmmp/Input/libmad.so"
+RDEPENDS_${PN}-plugin-input-mad = "libmad"
+FILES_${PN}-plugin-input-vorbis = "${libdir}/qmmp/Input/libvorbis.so"
+RDEPENDS_${PN}-plugin-input-vorbis = "libvorbis libogg"
diff --git a/meta/recipes-qt/qt-apps/quicky_0.4.bb b/meta/recipes-qt/qt-apps/quicky_0.4.bb
index 004e029405..20c04f8db0 100644
--- a/meta/recipes-qt/qt-apps/quicky_0.4.bb
+++ b/meta/recipes-qt/qt-apps/quicky_0.4.bb
@@ -4,8 +4,9 @@ LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://version.h;endline=19;md5=878bdaff438dab86298301fd1a210e14"
SECTION = "x11/apps"
+PR = "r1"
+
DEPENDS = "qt4-x11-free"
-RDEPENDS = "qt4-x11-free"
SRC_URI = "http://qt-apps.org/CONTENT/content-files/80325-quicky-0.4.tar.gz"
diff --git a/meta/recipes-qt/qt4/files/compile.test-lflags.patch b/meta/recipes-qt/qt4/files/compile.test-lflags.patch
new file mode 100644
index 0000000000..e4b256b0ce
--- /dev/null
+++ b/meta/recipes-qt/qt4/files/compile.test-lflags.patch
@@ -0,0 +1,13 @@
+Index: qt-everywhere-opensource-src-4.6.3/config.tests/unix/compile.test
+===================================================================
+--- qt-everywhere-opensource-src-4.6.3.orig/config.tests/unix/compile.test 2010-06-02 06:03:18.000000000 +0400
++++ qt-everywhere-opensource-src-4.6.3/config.tests/unix/compile.test 2010-10-04 17:35:07.587783460 +0400
+@@ -11,7 +11,7 @@
+ EXE=`basename "$6"`
+ DESCRIPTION=$7
+ shift 7
+-LFLAGS=""
++LFLAGS="$LDFLAGS"
+ INCLUDEPATH=""
+ CXXFLAGS=""
+ MAC_ARCH_CXXFLAGS=""
diff --git a/meta/recipes-qt/qt4/files/configure-lflags.patch b/meta/recipes-qt/qt4/files/configure-lflags.patch
new file mode 100644
index 0000000000..df195494ee
--- /dev/null
+++ b/meta/recipes-qt/qt4/files/configure-lflags.patch
@@ -0,0 +1,13 @@
+Index: qtopia-core-opensource-src-4.3.3/configure
+===================================================================
+--- qtopia-core-opensource-src-4.3.3.orig/configure 2008-01-14 08:53:51.000000000 +0000
++++ qtopia-core-opensource-src-4.3.3/configure 2008-01-14 08:54:07.000000000 +0000
+@@ -447,7 +447,7 @@
+ # initalize variables
+ #-------------------------------------------------------------------------------
+
+-SYSTEM_VARIABLES="CC CXX CFLAGS CXXFLAGS LDFLAGS"
++SYSTEM_VARIABLES="CC CXX CFLAGS CXXFLAGS LDFLAGS LFLAGS"
+ for varname in $SYSTEM_VARIABLES; do
+ cmd=`echo \
+ 'if [ -n "\$'${varname}'" ]; then
diff --git a/meta/recipes-qt/qt4/files/configure-paths.patch b/meta/recipes-qt/qt4/files/configure-paths.patch
new file mode 100644
index 0000000000..c9259a1159
--- /dev/null
+++ b/meta/recipes-qt/qt4/files/configure-paths.patch
@@ -0,0 +1,21 @@
+Index: qt-everywhere-opensource-src-4.6.3/configure
+===================================================================
+--- qt-everywhere-opensource-src-4.6.3.orig/configure 2011-01-10 15:47:37.100607001 +0000
++++ qt-everywhere-opensource-src-4.6.3/configure 2011-01-10 15:49:14.576606999 +0000
+@@ -7198,11 +7198,11 @@
+ QMAKE_MOC_SRC = \$\$QT_BUILD_TREE/src/moc
+
+ #local paths that cannot be queried from the QT_INSTALL_* properties while building QTDIR
+-QMAKE_MOC = \$\$QT_BUILD_TREE/bin/moc
+-QMAKE_UIC = \$\$QT_BUILD_TREE/bin/uic
+-QMAKE_UIC3 = \$\$QT_BUILD_TREE/bin/uic3
+-QMAKE_RCC = \$\$QT_BUILD_TREE/bin/rcc
+-QMAKE_QDBUSXML2CPP = \$\$QT_BUILD_TREE/bin/qdbusxml2cpp
++QMAKE_MOC = \${OE_QMAKE_MOC}
++QMAKE_UIC = \${OE_QMAKE_UIC}
++QMAKE_UIC3 = \${OE_QMAKE_UIC3}
++QMAKE_RCC = \${OE_QMAKE_RCC}
++QMAKE_QDBUSXML2CPP = \${OE_QMAKE_QDBUSXML2CPP}
+ QMAKE_INCDIR_QT = \$\$QT_BUILD_TREE/include
+ QMAKE_LIBDIR_QT = \$\$QT_BUILD_TREE/lib
+
diff --git a/meta/recipes-qt/qt4/files/qmake-exists-check.patch b/meta/recipes-qt/qt4/files/qmake-exists-check.patch
new file mode 100644
index 0000000000..cc73837e53
--- /dev/null
+++ b/meta/recipes-qt/qt4/files/qmake-exists-check.patch
@@ -0,0 +1,18 @@
+qt4-tools-nativesdk: avoid rebuilding qmake
+
+qt4-tools-nativesdk patch to avoids building qmake in configure if it already exists
+(as it will, since we symlink it in from the native sysroot in do_configure)
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+--- qt-everywhere-opensource-src-4.6.3.orig/configure 2011-01-10 12:01:56.260607001 +0000
++++ qt-everywhere-opensource-src-4.6.3/configure 2011-01-10 12:02:20.584607015 +0000
+@@ -4286,7 +4286,7 @@
+ }
+
+ # build qmake
+-if true; then ###[ '!' -f "$outpath/bin/qmake" ];
++if [ '!' -f "$outpath/bin/qmake" ]; then
+ echo "Creating qmake. Please wait..."
+
+ OLD_QCONFIG_H=
diff --git a/meta/recipes-qt/qt4/files/qte.sh b/meta/recipes-qt/qt4/files/qte.sh
new file mode 100644
index 0000000000..21d6ecbd6a
--- /dev/null
+++ b/meta/recipes-qt/qt4/files/qte.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+if [ -e /dev/input/touchscreen0 ]
+then
+ QWS_MOUSE_PROTO=Tslib:/dev/input/touchscreen0
+ export QWS_MOUSE_PROTO
+fi
diff --git a/meta/recipes-qt/qt4/files/qthelp-lib-qtclucene.patch b/meta/recipes-qt/qt4/files/qthelp-lib-qtclucene.patch
new file mode 100644
index 0000000000..1d250d8a98
--- /dev/null
+++ b/meta/recipes-qt/qt4/files/qthelp-lib-qtclucene.patch
@@ -0,0 +1,86 @@
+qt-embedded: fix linker error in do_compile
+
+This patch ensures that we link to libQtCLucene where required (i.e. when
+linking to libQtHelp) avoiding a linker error.
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+Index: qt-everywhere-opensource-src-4.6.3/demos/qtdemo/qtdemo.pro
+===================================================================
+--- qt-everywhere-opensource-src-4.6.3.orig/demos/qtdemo/qtdemo.pro 2011-01-11 16:06:47.382828004 +0000
++++ qt-everywhere-opensource-src-4.6.3/demos/qtdemo/qtdemo.pro 2011-01-11 16:10:06.906828001 +0000
+@@ -76,3 +76,10 @@
+ sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES qtdemo.pro images xml *.ico *.icns *.rc *.plist
+ sources.path = $$[QT_INSTALL_DEMOS]/qtdemo
+
++qclucene = QtCLucene$${QT_LIBINFIX}
++if(!debug_and_release|build_pass):CONFIG(debug, debug|release) {
++ mac:qclucene = $${qclucene}_debug
++ win32:qclucene = $${qclucene}d
++}
++linux-lsb-g++:LIBS_PRIVATE += --lsb-shared-libs=$$qclucene
++LIBS_PRIVATE += -l$$qclucene
+Index: qt-everywhere-opensource-src-4.6.3/examples/help/contextsensitivehelp/contextsensitivehelp.pro
+===================================================================
+--- qt-everywhere-opensource-src-4.6.3.orig/examples/help/contextsensitivehelp/contextsensitivehelp.pro 2011-01-11 16:05:56.598828002 +0000
++++ qt-everywhere-opensource-src-4.6.3/examples/help/contextsensitivehelp/contextsensitivehelp.pro 2011-01-11 16:09:57.762828002 +0000
+@@ -18,3 +18,11 @@
+ INSTALLS += target sources
+
+ symbian: include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
++
++qclucene = QtCLucene$${QT_LIBINFIX}
++if(!debug_and_release|build_pass):CONFIG(debug, debug|release) {
++ mac:qclucene = $${qclucene}_debug
++ win32:qclucene = $${qclucene}d
++}
++linux-lsb-g++:LIBS_PRIVATE += --lsb-shared-libs=$$qclucene
++LIBS_PRIVATE += -l$$qclucene
+Index: qt-everywhere-opensource-src-4.6.3/tools/assistant/tools/assistant/assistant.pro
+===================================================================
+--- qt-everywhere-opensource-src-4.6.3.orig/tools/assistant/tools/assistant/assistant.pro 2011-01-11 14:56:50.902828001 +0000
++++ qt-everywhere-opensource-src-4.6.3/tools/assistant/tools/assistant/assistant.pro 2011-01-11 16:09:39.914828003 +0000
+@@ -85,3 +85,11 @@
+ DEFINES += USE_STATIC_SQLITE_PLUGIN
+ }
+ }
++
++qclucene = QtCLucene$${QT_LIBINFIX}
++if(!debug_and_release|build_pass):CONFIG(debug, debug|release) {
++ mac:qclucene = $${qclucene}_debug
++ win32:qclucene = $${qclucene}d
++}
++linux-lsb-g++:LIBS_PRIVATE += --lsb-shared-libs=$$qclucene
++LIBS_PRIVATE += -l$$qclucene
+Index: qt-everywhere-opensource-src-4.6.3/tools/assistant/tools/qcollectiongenerator/qcollectiongenerator.pro
+===================================================================
+--- qt-everywhere-opensource-src-4.6.3.orig/tools/assistant/tools/qcollectiongenerator/qcollectiongenerator.pro 2011-01-11 14:56:50.918828002 +0000
++++ qt-everywhere-opensource-src-4.6.3/tools/assistant/tools/qcollectiongenerator/qcollectiongenerator.pro 2011-01-11 16:09:44.538828001 +0000
+@@ -12,3 +12,11 @@
+ main.cpp
+
+ HEADERS += ../shared/helpgenerator.h
++
++qclucene = QtCLucene$${QT_LIBINFIX}
++if(!debug_and_release|build_pass):CONFIG(debug, debug|release) {
++ mac:qclucene = $${qclucene}_debug
++ win32:qclucene = $${qclucene}d
++}
++linux-lsb-g++:LIBS_PRIVATE += --lsb-shared-libs=$$qclucene
++LIBS_PRIVATE += -l$$qclucene
+Index: qt-everywhere-opensource-src-4.6.3/tools/assistant/tools/qhelpgenerator/qhelpgenerator.pro
+===================================================================
+--- qt-everywhere-opensource-src-4.6.3.orig/tools/assistant/tools/qhelpgenerator/qhelpgenerator.pro 2011-01-11 14:56:50.930828002 +0000
++++ qt-everywhere-opensource-src-4.6.3/tools/assistant/tools/qhelpgenerator/qhelpgenerator.pro 2011-01-11 16:09:50.274828003 +0000
+@@ -12,3 +12,11 @@
+ main.cpp
+
+ HEADERS += ../shared/helpgenerator.h
++
++qclucene = QtCLucene$${QT_LIBINFIX}
++if(!debug_and_release|build_pass):CONFIG(debug, debug|release) {
++ mac:qclucene = $${qclucene}_debug
++ win32:qclucene = $${qclucene}d
++}
++linux-lsb-g++:LIBS_PRIVATE += --lsb-shared-libs=$$qclucene
++LIBS_PRIVATE += -l$$qclucene
diff --git a/meta/recipes-qt/qt4/qt-4.6.3.inc b/meta/recipes-qt/qt4/qt-4.6.3.inc
index 155af66b89..ec2c9208d5 100644
--- a/meta/recipes-qt/qt4/qt-4.6.3.inc
+++ b/meta/recipes-qt/qt4/qt-4.6.3.inc
@@ -19,6 +19,9 @@ SRC_URI = "http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-${PV}.
file://mips-relocate.patch \
"
+SRC_URI[md5sum] = "5c69f16d452b0bb3d44bc3c10556c072"
+SRC_URI[sha256sum] = "f4e0ada8d4d516bbb8600a3ee7d9046c9c79e38cd781df9ffc46d8f16acd1768"
+
S = "${WORKDIR}/qt-everywhere-opensource-src-${PV}"
do_configure_prepend() {
@@ -40,7 +43,7 @@ do_configure_append() {
}
QT_GLFLAGS ?= ""
-QT_CONFIG_FLAGS += " -no-rpath -qt3support -silent ${QT_GLFLAGS}"
+QT_CONFIG_FLAGS += " -no-rpath -qt3support -reduce-relocations -silent ${QT_GLFLAGS}"
do_compile() {
# Fixup missing wsegl header in some SGX SDKs
@@ -51,16 +54,3 @@ do_compile() {
unset CFLAGS CXXFLAGS
oe_runmake ${EXTRA_ENV}
}
-
-do_install_append() {
- install -d ${D}${bindir}
- for i in rcc uic moc ; do
- install -m 0755 ${S}/bin/$i ${D}${bindir}/
- done
-
- #Append an E to the qtdemo file
- if [ -n "${QT_LIBINFIX}" ] ; then
- mv ${D}${bindir}/qtdemo ${D}${bindir}/qtdemo${QT_LIBINFIX}
- fi
-}
-
diff --git a/meta/recipes-qt/qt4/qt-4.7.1.inc b/meta/recipes-qt/qt4/qt-4.7.1.inc
new file mode 100644
index 0000000000..70ee59697c
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt-4.7.1.inc
@@ -0,0 +1,58 @@
+LICENSE = "LGPLv2.1 | GPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE.LGPL;md5=fbc093901857fcd118f065f900982c24 \
+ file://LICENSE.GPL3;md5=babc5b6b77441da277f5c06b2e547720 \
+ file://LGPL_EXCEPTION.txt;md5=411080a56ff917a5a1aa08c98acae354"
+
+FILESPATH =. "${FILE_DIRNAME}/qt-${PV}:"
+
+SRC_URI = "http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-${PV}.tar.gz \
+ file://0004-no-qmake.patch \
+ file://hack-out-pg2-4.7.0.patch \
+ file://0006-freetype-host-includes.patch \
+ file://0001-Added-Openembedded-crossarch-option.patch \
+ file://g++.conf \
+ file://linux.conf \
+ "
+
+SRC_URI[md5sum] = "6f88d96507c84e9fea5bf3a71ebeb6d7"
+SRC_URI[sha256sum] = "8cb5277c41f824cfc6dcee0e95e0bf23a9ad2c8d18d245105137481d092b124a"
+
+S = "${WORKDIR}/qt-everywhere-opensource-src-${PV}"
+
+FILES_${QT_BASE_NAME}-tools += "${bindir}/qml"
+
+do_configure_prepend() {
+ for pro in $(find ${S} -name "*.pro") ; do
+ sed -i 's:$$QT_BUILD_TREE/bin/lrelease:${OE_QMAKE_LRELEASE}:g' $pro
+ done
+
+ sed -i s:SEDME:${S}: ${WORKDIR}/linux.conf
+ sed -i \
+ -e /QMAKE_MOC\ /d \
+ -e /QMAKE_UIC\ /d \
+ -e /QMAKE_UIC3\ /d \
+ -e /QMAKE_RCC\ /d \
+ ${S}/configure
+}
+
+do_configure_append() {
+ sed -e '/QMAKE_TARGET /d' -e '/TARGET /d' -i ${S}/translations/Makefile
+}
+
+QT_GLFLAGS ?= ""
+QT_CONFIG_FLAGS += " -xmlpatterns -no-rpath -qt3support -reduce-relocations -silent ${QT_GLFLAGS}"
+
+do_compile() {
+ # Fixup missing wsegl header in some SGX SDKs
+ if ! [ -e ${STAGING_INCDIR}/wsegl.h ] ; then
+ cp src/3rdparty/powervr/wsegl.h src/plugins/gfxdrivers/powervr/QWSWSEGL/
+ fi
+
+ unset CFLAGS CXXFLAGS
+ install -m 0755 ${STAGING_BINDIR_NATIVE}/rcc4 ${S}/bin/rcc
+ install -m 0755 ${STAGING_BINDIR_NATIVE}/moc4 ${S}/bin/moc
+ install -m 0755 ${STAGING_BINDIR_NATIVE}/uic4 ${S}/bin/uic
+ install -m 0755 ${STAGING_BINDIR_NATIVE}/lrelease4 ${S}/bin/lrelease
+
+ oe_runmake ${EXTRA_ENV}
+}
diff --git a/meta/recipes-qt/qt4/qt-4.7.1/0001-Added-Openembedded-crossarch-option.patch b/meta/recipes-qt/qt4/qt-4.7.1/0001-Added-Openembedded-crossarch-option.patch
new file mode 100644
index 0000000000..71a04a59d2
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt-4.7.1/0001-Added-Openembedded-crossarch-option.patch
@@ -0,0 +1,44 @@
+From b1ba119f6a824dc01bd42ee00dba4a1653867b72 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Matthias=20G=C3=BCnther?= <matgnt@gmail.com>
+Date: Wed, 12 May 2010 16:52:45 +0200
+Subject: [PATCH 1/9] Added Openembedded "-crossarch" option
+
+---
+ configure | 7 ++++++-
+ 1 files changed, 6 insertions(+), 1 deletions(-)
+
+diff --git a/configure b/configure
+index facd192..9d15136 100755
+--- a/configure
++++ b/configure
+@@ -954,7 +954,7 @@ while [ "$#" -gt 0 ]; do
+ shift
+ VAL=$1
+ ;;
+- -prefix|-docdir|-headerdir|-plugindir|-importdir|-datadir|-libdir|-bindir|-translationdir|-sysconfdir|-examplesdir|-demosdir|-depths|-make|-nomake|-platform|-xplatform|-buildkey|-sdk|-arch|-host-arch|-mysql_config)
++ -prefix|-docdir|-headerdir|-plugindir|-importdir|-datadir|-libdir|-bindir|-translationdir|-sysconfdir|-examplesdir|-demosdir|-depths|-make|-nomake|-platform|-xplatform|-buildkey|-sdk|-arch|-host-arch|-mysql_config|-crossarch)
+ VAR=`echo $1 | sed "s,^-\(.*\),\1,"`
+ shift
+ VAL="$1"
+@@ -1443,6 +1443,9 @@ while [ "$#" -gt 0 ]; do
+ xplatform)
+ XPLATFORM="$VAL"
+ ;;
++ crossarch)
++ CROSSARCH="$VAL"
++ ;;
+ debug-and-release)
+ if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
+ CFG_DEBUG_RELEASE="$VAL"
+@@ -2918,6 +2921,8 @@ elif [ "$PLATFORM_MAC" = "yes" ] || [ -z "$CFG_ARCH" ]; then
+ CFG_ARCH=$CFG_HOST_ARCH
+ fi
+
++CFG_ARCH="$CROSSARCH"
++
+ if [ -d "$relpath/src/corelib/arch/$CFG_ARCH" ]; then
+ if [ "$OPT_VERBOSE" = "yes" ]; then
+ echo " '$CFG_ARCH' is supported"
+--
+1.7.0.4
+
diff --git a/meta/recipes-qt/qt4/qt-4.7.1/g++.conf b/meta/recipes-qt/qt4/qt-4.7.1/g++.conf
new file mode 100644
index 0000000000..80f925cc5e
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt-4.7.1/g++.conf
@@ -0,0 +1,60 @@
+#
+# qmake configuration for common gcc
+#
+
+QMAKE_CC = $(OE_QMAKE_CC)
+QMAKE_CFLAGS += -pipe $(OE_QMAKE_CFLAGS)
+QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $(OE_QMAKE_CFLAGS)
+QMAKE_CFLAGS_DEPS += -M
+QMAKE_CFLAGS_WARN_ON += -Wall -W
+QMAKE_CFLAGS_WARN_OFF += -w
+QMAKE_CFLAGS_RELEASE +=
+QMAKE_CFLAGS_DEBUG += -g
+QMAKE_CFLAGS_SHLIB += -fPIC
+QMAKE_CFLAGS_STATIC_LIB += -fPIC
+QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
+QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE}
+
+QMAKE_CXX = $(OE_QMAKE_CXX)
+QMAKE_CXXFLAGS += $$QMAKE_CFLAGS $(OE_QMAKE_CXXFLAGS)
+QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
+QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB
+QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
+QMAKE_CXXFLAGS_PRECOMPILE += -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
+
+QMAKE_LINK = $(OE_QMAKE_LINK)
+QMAKE_LINK_SHLIB = $(OE_QMAKE_LINK)
+QMAKE_LINK_C = $(OE_QMAKE_LINK)
+QMAKE_LINK_C_SHLIB = $(OE_QMAKE_LINK)
+QMAKE_LFLAGS += $(OE_QMAKE_LDFLAGS)
+QMAKE_LFLAGS_RELEASE +=
+QMAKE_LFLAGS_DEBUG +=
+QMAKE_LFLAGS_APP +=
+QMAKE_LFLAGS_SHLIB += -shared
+QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME += -Wl,-soname,
+QMAKE_LFLAGS_THREAD +=
+QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined
+QMAKE_LFLAGS_RPATH = -Wl,-rpath-link,
+
+QMAKE_PCH_OUTPUT_EXT = .gch
+
+# -Bsymbolic-functions (ld) support
+QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions
+QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,
+
+# some linking helper...
+CONFIG += rpath_libdirs
+
+# for the SDK
+isEmpty(QMAKE_QT_CONFIG):QMAKE_QT_CONFIG = $(OE_QMAKE_QT_CONFIG)
diff --git a/meta/recipes-qt/qt4/qt-4.7.1/hack-out-pg2-4.7.0.patch b/meta/recipes-qt/qt4/qt-4.7.1/hack-out-pg2-4.7.0.patch
new file mode 100644
index 0000000000..5c588ff0f7
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt-4.7.1/hack-out-pg2-4.7.0.patch
@@ -0,0 +1,19 @@
+Index: qt-everywhere-opensource-src-4.7.0/configure
+===================================================================
+--- qt-everywhere-opensource-src-4.7.0.orig/configure 2010-09-22 15:43:51.191162141 -0400
++++ qt-everywhere-opensource-src-4.7.0/configure 2010-09-22 15:44:35.179981232 -0400
+@@ -4921,10 +4921,10 @@
+ psql)
+ if [ "$CFG_SQL_psql" != "no" ]; then
+ # Be careful not to use native pg_config when cross building.
+- if [ "$XPLATFORM_MINGW" != "yes" ] && "$WHICH" pg_config >/dev/null 2>&1; then
+- QT_CFLAGS_PSQL=`pg_config --includedir 2>/dev/null`
+- QT_LFLAGS_PSQL=`pg_config --libdir 2>/dev/null`
+- fi
++# if [ "$XPLATFORM_MINGW" != "yes" ] && "$WHICH" pg_config >/dev/null 2>&1; then
++# QT_CFLAGS_PSQL=`pg_config --includedir 2>/dev/null`
++# QT_LFLAGS_PSQL=`pg_config --libdir 2>/dev/null`
++# fi
+ [ -z "$QT_CFLAGS_PSQL" ] || QT_CFLAGS_PSQL="-I$QT_CFLAGS_PSQL"
+ [ -z "$QT_LFLAGS_PSQL" ] || QT_LFLAGS_PSQL="-L$QT_LFLAGS_PSQL"
+ # But, respect PSQL_LIBS if set
diff --git a/meta/recipes-qt/qt4/qt-4.7.1/linux.conf b/meta/recipes-qt/qt4/qt-4.7.1/linux.conf
new file mode 100644
index 0000000000..a54135513b
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt-4.7.1/linux.conf
@@ -0,0 +1,66 @@
+#
+# qmake configuration for common linux
+#
+
+QMAKE_CFLAGS_THREAD += -D_REENTRANT
+QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 =
+QMAKE_LIBDIR_X11 =
+QMAKE_INCDIR_QT = $(OE_QMAKE_INCDIR_QT)
+QMAKE_LIBDIR_QT = $(OE_QMAKE_LIBDIR_QT)
+QMAKE_INCDIR_OPENGL =
+QMAKE_LIBDIR_OPENGL =
+QMAKE_INCDIR_OPENGL_ES1 = $$QMAKE_INCDIR_OPENGL
+QMAKE_LIBDIR_OPENGL_ES1 = $$QMAKE_LIBDIR_OPENGL
+QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_INCDIR_OPENGL
+QMAKE_LIBDIR_OPENGL_ES2 = $$QMAKE_LIBDIR_OPENGL
+QMAKE_INCDIR_EGL =
+QMAKE_LIBDIR_EGL =
+QMAKE_INCDIR_OPENVG =
+QMAKE_LIBDIR_OPENVG =
+
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = $(OE_QMAKE_LIBS_X11)
+QMAKE_LIBS_X11SM = $(OE_QMAKE_LIBS_X11SM)
+QMAKE_LIBS_NIS = -lnsl
+QMAKE_LIBS_EGL = -lEGL
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_OPENGL_ES1 = -lGLES_CM
+QMAKE_LIBS_OPENGL_ES2 = -lGLESv2
+QMAKE_LIBS_OPENVG = -lOpenVG
+QMAKE_LIBS_THREAD = -lpthread
+
+QMAKE_MOC = $(OE_QMAKE_MOC)
+QMAKE_UIC = $(OE_QMAKE_UIC)
+QMAKE_UIC3 = $(OE_QMAKE_UIC3)
+QMAKE_RCC = $(OE_QMAKE_RCC)
+QMAKE_QDBUSCPP2XML = $(OE_QMAKE_QDBUSCPP2XML)
+QMAKE_QDBUSXML2CPP = $(OE_QMAKE_QDBUSXML2CPP)
+
+QMAKE_AR = $(OE_QMAKE_AR) cqs
+QMAKE_OBJCOPY = objcopy
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_COPY_FILE = $(COPY)
+QMAKE_COPY_DIR = $(COPY) -r
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_STRIP = $(OE_QMAKE_STRIP)
+QMAKE_STRIPFLAGS_LIB += --strip-unneeded
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+QMAKE_INSTALL_FILE = install -m 644 -p
+QMAKE_INSTALL_PROGRAM = install -m 755 -p
+
+include(unix.conf)
diff --git a/meta/recipes-qt/qt4/qt4-embedded.inc b/meta/recipes-qt/qt4/qt4-embedded.inc
new file mode 100644
index 0000000000..2ed1819f6f
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt4-embedded.inc
@@ -0,0 +1,34 @@
+DESCRIPTION = "Qt is a versatile cross-platform application framework -- this is the embedded version."
+SECTION = "libs"
+LICENSE = "LGPLv2.1 | GPLv3"
+PRIORITY = "optional"
+HOMEPAGE = "http://qt.nokia.com"
+DEPENDS += "directfb tslib"
+INC_PR = "r26"
+
+QT_BASE_NAME ?= "qt4-embedded"
+QT_BASE_LIB ?= "libqt-embedded"
+
+# Set necessary variables in the profile
+SRC_URI += "file://qte.sh"
+
+QT_CONFIG_FLAGS += " \
+ -embedded ${QT_ARCH} \
+ -qtlibinfix ${QT_LIBINFIX} \
+ -plugin-gfx-transformed -plugin-gfx-qvfb -plugin-gfx-vnc -plugin-gfx-directfb \
+ -plugin-mouse-tslib -qt-mouse-pc -qt-mouse-qvfb -qt-mouse-linuxinput \
+ -qt-kbd-tty \
+ -DQT_KEYPAD_NAVIGATION \
+ "
+
+require qt4.inc
+
+do_install_append() {
+ install -d ${D}${sysconfdir}/profile.d/
+ install -m 0755 ${WORKDIR}/qte.sh ${D}${sysconfdir}/profile.d/
+}
+
+FILES_${PN} += " ${sysconfdir}/profile.d/qte.sh"
+
+inherit qt4e
+
diff --git a/meta/recipes-qt/qt4/qt4-embedded_4.6.3.bb b/meta/recipes-qt/qt4/qt4-embedded_4.6.3.bb
new file mode 100644
index 0000000000..dd662aa3d8
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt4-embedded_4.6.3.bb
@@ -0,0 +1,9 @@
+require qt-${PV}.inc
+require qt4-embedded.inc
+
+SRC_URI += "file://qthelp-lib-qtclucene.patch"
+
+PR = "${INC_PR}.1"
+
+QT_CONFIG_FLAGS_append_armv6 = " -no-neon "
+
diff --git a/meta/recipes-qt/qt4/qt4-embedded_4.7.1.bb b/meta/recipes-qt/qt4/qt4-embedded_4.7.1.bb
new file mode 100644
index 0000000000..c3f6713199
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt4-embedded_4.7.1.bb
@@ -0,0 +1,10 @@
+require qt-${PV}.inc
+require qt4-embedded.inc
+
+PR = "${INC_PR}.1"
+
+QT_CONFIG_FLAGS_append_armv6 = " -no-neon "
+
+QT_CONFIG_FLAGS += " \
+ -exceptions \
+"
diff --git a/meta/recipes-qt/qt4/qt4-tools-native.inc b/meta/recipes-qt/qt4/qt4-tools-native.inc
index 6dca218578..0c4d2c7760 100644
--- a/meta/recipes-qt/qt4/qt4-tools-native.inc
+++ b/meta/recipes-qt/qt4/qt4-tools-native.inc
@@ -1,9 +1,16 @@
DESCRIPTION = "Native tools for Qt/[X11|Mac|Embedded] version 4.x"
-DEPENDS = "zlib-native dbus-native libsm-native"
+DEPENDS = "zlib-native dbus-native"
SECTION = "libs"
HOMEPAGE = "http://qt.nokia.com"
PRIORITY = "optional"
+LICENSE = "LGPLv2.1 | GPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE.LGPL;md5=fbc093901857fcd118f065f900982c24 \
+ file://LICENSE.GPL3;md5=babc5b6b77441da277f5c06b2e547720 \
+ file://LGPL_EXCEPTION.txt;md5=411080a56ff917a5a1aa08c98acae354"
+
+INC_PR = "r11"
+
inherit native
SRC_URI = "http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-${PV}.tar.gz \
@@ -16,13 +23,14 @@ EXTRA_OECONF = "-prefix ${prefix} \
-L ${STAGING_LIBDIR_NATIVE} \
-I ${STAGING_INCDIR_NATIVE} \
-qt-libjpeg -qt-gif -system-zlib \
- -no-libjpeg -no-libpng \
+ -no-libjpeg -no-libpng -no-libmng -no-libtiff \
-no-accessibility \
-no-cups \
-no-exceptions \
-no-nas-sound \
- -no-nis \
+ -no-nis -no-openssl \
-verbose -release -static \
+ -embedded -no-freetype -no-glib -no-iconv \
-qt3support"
# yank default -e, otherwise we get the following error:
@@ -59,7 +67,7 @@ do_install() {
for i in moc uic rcc lrelease lupdate; do
install -m 0755 bin/${i} ${D}${bindir}/${i}4
done
-
+
install -d ${D}${datadir}/qt4/
cp -PfR mkspecs ${D}${datadir}/qt4/
ln -sf linux-g++ ${D}${datadir}/qt4/mkspecs/${BUILD_OS}-oe-g++
diff --git a/meta/recipes-qt/qt4/qt4-tools-native_4.6.3.bb b/meta/recipes-qt/qt4/qt4-tools-native_4.6.3.bb
index ac66eb3d5a..dae8cd19e3 100644
--- a/meta/recipes-qt/qt4/qt4-tools-native_4.6.3.bb
+++ b/meta/recipes-qt/qt4/qt4-tools-native_4.6.3.bb
@@ -1,11 +1,11 @@
require qt4-tools-native.inc
-LICENSE = "LGPLv2.1 | GPLv3"
-LIC_FILES_CHKSUM = "file://LICENSE.LGPL;md5=fbc093901857fcd118f065f900982c24 \
- file://LICENSE.GPL3;md5=babc5b6b77441da277f5c06b2e547720 \
- file://LGPL_EXCEPTION.txt;md5=411080a56ff917a5a1aa08c98acae354"
-PR = "r2"
+PR = "${INC_PR}.0"
-EXTRA_OECONF += " -no-fast -silent -no-rpath -no-freetype -no-fontconfig"
+EXTRA_OECONF += " -no-fast -silent -no-rpath"
TOBUILD := "src/tools/bootstrap ${TOBUILD}"
+
+SRC_URI[md5sum] = "5c69f16d452b0bb3d44bc3c10556c072"
+SRC_URI[sha256sum] = "f4e0ada8d4d516bbb8600a3ee7d9046c9c79e38cd781df9ffc46d8f16acd1768"
+
diff --git a/meta/recipes-qt/qt4/qt4-tools-native_4.7.1.bb b/meta/recipes-qt/qt4/qt4-tools-native_4.7.1.bb
new file mode 100644
index 0000000000..e9de510fea
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt4-tools-native_4.7.1.bb
@@ -0,0 +1,13 @@
+require qt4-tools-native.inc
+
+PR = "${INC_PR}.0"
+
+# Find the g++.conf/linux.conf in the right directory.
+FILESPATHPKG =. "qt-${PV}:"
+
+EXTRA_OECONF += " -no-fast -silent -no-rpath"
+
+TOBUILD := "src/tools/bootstrap ${TOBUILD}"
+
+SRC_URI[md5sum] = "6f88d96507c84e9fea5bf3a71ebeb6d7"
+SRC_URI[sha256sum] = "8cb5277c41f824cfc6dcee0e95e0bf23a9ad2c8d18d245105137481d092b124a"
diff --git a/meta/recipes-qt/qt4/qt4-tools-nativesdk.inc b/meta/recipes-qt/qt4/qt4-tools-nativesdk.inc
new file mode 100644
index 0000000000..f273c9fab8
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt4-tools-nativesdk.inc
@@ -0,0 +1,111 @@
+DESCRIPTION = "SDK tools for Qt/[X11|Mac|Embedded] version 4.x"
+DEPENDS = "zlib-nativesdk dbus-nativesdk libx11-nativesdk qt4-tools-native"
+SECTION = "libs"
+HOMEPAGE = "http://qt.nokia.com"
+PRIORITY = "optional"
+LICENSE = "LGPLv2.1 | GPLv3"
+
+INC_PR = "r3"
+
+FILESPATHPKG =. "qt-${PV}:"
+inherit nativesdk qmake2
+
+SRC_URI = "http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-${PV}.tar.gz \
+ file://configure-lflags.patch \
+ file://compile.test-lflags.patch \
+ file://qt-config.patch \
+ file://qmake-exists-check.patch \
+ file://configure-paths.patch \
+ file://g++.conf \
+ file://linux.conf"
+
+S = "${WORKDIR}/qt-everywhere-opensource-src-${PV}"
+
+LIC_FILES_CHKSUM = "file://LICENSE.LGPL;md5=fbc093901857fcd118f065f900982c24 \
+ file://LICENSE.GPL3;md5=babc5b6b77441da277f5c06b2e547720 \
+ file://LGPL_EXCEPTION.txt;md5=411080a56ff917a5a1aa08c98acae354"
+
+# FIXME: make it work with "${STAGING_BINDIR_NATIVE}/pkg-config --cflags dbus-1"
+EXTRA_OECONF = "-prefix ${prefix} \
+ -qt-libjpeg -qt-gif -system-zlib \
+ -no-libjpeg -no-libpng -no-libmng -no-libtiff \
+ -no-accessibility \
+ -no-cups \
+ -no-exceptions \
+ -no-nas-sound \
+ -no-nis -no-openssl \
+ -verbose -release -fast -static \
+ -platform ${TARGET_OS}-oe-g++ \
+ -xplatform ${TARGET_OS}-oe-g++ \
+ -embedded -no-freetype -no-glib -no-iconv \
+ -qt3support \
+ -I${STAGING_DIR_HOST}${SDKPATHNATIVE}/usr/include \
+ -I${STAGING_DIR_HOST}${SDKPATHNATIVE}/usr/include/freetype2 \
+ -I${STAGING_DIR_HOST}${SDKPATHNATIVE}/usr/include/dbus-1.0 \
+ -I${STAGING_DIR_HOST}${SDKPATHNATIVE}/usr/lib/dbus-1.0/include \
+ -I${STAGING_DIR_HOST}${SDKPATHNATIVE}/usr/include/c++ \
+ -I${STAGING_DIR_HOST}${SDKPATHNATIVE}/usr/include/c++/${TARGET_SYS} \
+ -L${STAGING_DIR_HOST}${SDKPATHNATIVE}/lib \
+ -L${STAGING_DIR_HOST}${SDKPATHNATIVE}/usr/lib"
+
+# yank default -e, otherwise we get the following error:
+# moc_qbuffer.cpp: No such file or directory
+EXTRA_OEMAKE = " "
+
+do_configure() {
+ if [ ! -e bin/qmake ]; then
+ ln -sf ${STAGING_BINDIR_NATIVE}/qmake2 bin/qmake
+ fi
+
+ if [ ! -e mkspecs/${TARGET_OS}-oe-g++ ]; then
+ ln -sf linux-g++ mkspecs/${TARGET_OS}-oe-g++
+ fi
+
+ cp ../g++.conf mkspecs/common
+ cp ../linux.conf mkspecs/common
+
+ (echo o; echo yes) | ./configure ${EXTRA_OECONF} || die "Configuring qt failed. EXTRA_OECONF was ${EXTRA_OECONF}"
+}
+
+TOBUILD = "\
+ src/tools/bootstrap \
+ src/tools/moc \
+ src/corelib \
+ src/sql \
+ src/dbus \
+ src/qt3support \
+ src/xml \
+ src/tools/uic \
+ src/tools/rcc \
+ src/network \
+ src/gui \
+ src/tools/uic3 \
+ tools/linguist/lrelease \
+ tools/linguist/lupdate \
+ tools/qdbus \
+"
+
+do_compile() {
+ for i in ${TOBUILD}; do
+ cd ${S}/$i && oe_runmake CC="${CC}" CXX="${CXX}"
+ done
+}
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 0755 bin/qmake ${D}${bindir}/qmake2
+ for i in moc uic uic3 rcc lrelease lupdate qdbuscpp2xml qdbusxml2cpp; do
+ install -m 0755 bin/${i} ${D}${bindir}/${i}4
+ done
+
+ (cd ${D}${bindir}; \
+ ln -s qmake2 qmake; \
+ for i in moc uic uic3 rcc lrelease lupdate qdbuscpp2xml qdbusxml2cpp; do \
+ ln -s ${i}4 ${i}; \
+ done)
+
+ # make a symbolic link to mkspecs for compatibility with Nokia's SDK
+ # and QTCreator
+ (cd ${D}${bindir}/..; ln -s ${TARGET_SYS}/usr/share/qtopia/mkspecs mkspecs;)
+}
+
diff --git a/meta/recipes-qt/qt4/qt4-tools-nativesdk_4.6.3.bb b/meta/recipes-qt/qt4/qt4-tools-nativesdk_4.6.3.bb
new file mode 100644
index 0000000000..d64542b5fe
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt4-tools-nativesdk_4.6.3.bb
@@ -0,0 +1,6 @@
+require qt4-tools-nativesdk.inc
+
+PR = "${INC_PR}.0"
+
+SRC_URI[md5sum] = "5c69f16d452b0bb3d44bc3c10556c072"
+SRC_URI[sha256sum] = "f4e0ada8d4d516bbb8600a3ee7d9046c9c79e38cd781df9ffc46d8f16acd1768"
diff --git a/meta/recipes-qt/qt4/qt4-tools-nativesdk_4.7.1.bb b/meta/recipes-qt/qt4/qt4-tools-nativesdk_4.7.1.bb
new file mode 100644
index 0000000000..091a539271
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt4-tools-nativesdk_4.7.1.bb
@@ -0,0 +1,6 @@
+require qt4-tools-nativesdk.inc
+
+PR = "${INC_PR}.0"
+
+SRC_URI[md5sum] = "6f88d96507c84e9fea5bf3a71ebeb6d7"
+SRC_URI[sha256sum] = "8cb5277c41f824cfc6dcee0e95e0bf23a9ad2c8d18d245105137481d092b124a"
diff --git a/meta/recipes-qt/qt4/qt4-x11-free.inc b/meta/recipes-qt/qt4/qt4-x11-free.inc
index 22eef7c0eb..057a129ecf 100644
--- a/meta/recipes-qt/qt4/qt4-x11-free.inc
+++ b/meta/recipes-qt/qt4/qt4-x11-free.inc
@@ -1,9 +1,13 @@
require qt4.inc
+DESCRIPTION = "Qt is a versatile cross-platform application framework -- this is the X11 version."
+HOMEPAGE = "http://qt.nokia.com"
SECTION = "x11/libs"
PRIORITY = "optional"
DEPENDS += "virtual/libx11 fontconfig libxft libxext libxrender libxrandr libxcursor"
+INC_PR = "r21"
+
QT_GLFLAGS ?= "-no-opengl"
QT_GLFLAGS_qemux86 = "-opengl"
QT_GLFLAGS_emenlow = "-opengl"
@@ -11,7 +15,6 @@ QT_GLFLAGS_atom-pc = "-opengl"
QT_CONFIG_FLAGS += "-no-xinerama -no-xkb ${QT_GLFLAGS}"
QT_BASE_NAME ?= "qt4"
QT_BASE_LIB ?= "libqt"
-QT_DIR_NAME = "qt4"
-QT_LIBINFIX = ""
-inherit qmake2
+inherit qt4x11
+
diff --git a/meta/recipes-qt/qt4/qt4-x11-free_4.6.3.bb b/meta/recipes-qt/qt4/qt4-x11-free_4.6.3.bb
index 0a03e9b5a3..8cf5449254 100644
--- a/meta/recipes-qt/qt4/qt4-x11-free_4.6.3.bb
+++ b/meta/recipes-qt/qt4/qt4-x11-free_4.6.3.bb
@@ -1,9 +1,6 @@
+require qt-${PV}.inc
require qt4-x11-free.inc
-require qt-4.6.3.inc
-PR = "r1"
+PR = "${INC_PR}.0"
QT_CONFIG_FLAGS += " -xrandr "
-
-SRC_URI[md5sum] = "5c69f16d452b0bb3d44bc3c10556c072"
-SRC_URI[sha256sum] = "f4e0ada8d4d516bbb8600a3ee7d9046c9c79e38cd781df9ffc46d8f16acd1768"
diff --git a/meta/recipes-qt/qt4/qt4-x11-free_4.7.1.bb b/meta/recipes-qt/qt4/qt4-x11-free_4.7.1.bb
new file mode 100644
index 0000000000..75c6314e7f
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt4-x11-free_4.7.1.bb
@@ -0,0 +1,12 @@
+require qt4-x11-free.inc
+require qt-${PV}.inc
+
+PR = "${INC_PR}.1"
+
+QT_CONFIG_FLAGS_append_armv6 = " -no-neon "
+
+QT_CONFIG_FLAGS += " \
+ -no-embedded \
+ -xrandr \
+ -x11"
+
diff --git a/meta/recipes-qt/qt4/qt4.inc b/meta/recipes-qt/qt4/qt4.inc
index 16d5bebd36..de8cb691e3 100644
--- a/meta/recipes-qt/qt4/qt4.inc
+++ b/meta/recipes-qt/qt4/qt4.inc
@@ -1,15 +1,20 @@
-DESCRIPTION = "Qt is a comprehensive cross-platform C++ application framework"
-HOMEPAGE = "http://qt.nokia.com"
+inherit qmake_base
DEPENDS += "qt4-tools-native freetype jpeg libpng zlib dbus openssl glib-2.0 gstreamer gst-plugins-base sqlite3"
-inherit qmake_base
+require qt4_arch.inc
+QT_ARCH := "${@qt_arch(d)}"
+QT_ENDIAN = "${@qt_endian(d)}"
-QT_CONFIG_FLAGS += "-release -no-cups -no-accessibility -reduce-relocations \
- -shared -no-nas-sound -no-sm -no-nis \
+QT_DISTRO_FLAGS ?= "-no-accessibility -no-sm"
+QT_DISTRO_FLAGS_poky-lsb = "-sm"
+
+QT_CONFIG_FLAGS += "-release -no-cups -reduce-relocations \
+ -shared -no-nas-sound -no-nis \
-qt-gif -system-libjpeg -system-libpng -system-zlib \
-no-sql-ibase -no-sql-mysql -no-sql-psql -no-sql-odbc -plugin-sql-sqlite \
- -no-pch -dbus -stl -glib -phonon -webkit"
+ -no-pch -qdbus -stl -glib -phonon -webkit \
+ ${QT_DISTRO_FLAGS} "
EXTRA_OEMAKE = "-e"
@@ -22,7 +27,7 @@ EXTRA_ENV = 'QMAKE="${STAGING_BINDIR_NATIVE}/qmake2 -after \
export QT_CONF_PATH="${WORKDIR}/qt.conf"
# Library packages
-QT_LIB_NAMES = "Qt3Support QtAssistantClient QtCLucene QtCore QtDBus QtDesigner QtDesignerComponents QtGui QtHelp QtNetwork QtOpenGL QtScript QtScriptTools QtSql QtSvg QtTest QtUiTools QtWebKit QtXml QtXmlPatterns phonon QtMultimedia QtOpenVG QtMediaServices"
+QT_LIB_NAMES = "Qt3Support QtAssistantClient QtCLucene QtCore QtDBus QtDesigner QtDesignerComponents QtGui QtHelp QtNetwork QtOpenGL QtScript QtScriptTools QtSql QtSvg QtTest QtUiTools QtWebKit QtXml QtXmlPatterns phonon QtMultimedia QtOpenVG QtMediaServices QtDeclarative"
QT_EXTRA_LIBS = "pvrQWSWSEGL"
@@ -33,7 +38,7 @@ python __anonymous () {
dev_packages = []
dbg_packages = []
for name in bb.data.getVar("QT_LIB_NAMES", d, 1).split():
- pkg = "${QT_BASE_LIB}" + name.lower().replace("qt", "") + "4"
+ pkg = "${QT_BASE_LIB}" + name.lower().replace("qt", "").replace("_", "-") + "4"
# NOTE: the headers for QtAssistantClient are different
incname = name.replace("QtAssistantClient", "QtAssistant")
bb.data.setVar("FILES_%s" % pkg, "${libdir}/lib%(name)s${QT_LIBINFIX}.so.*" % locals(), d)
@@ -51,7 +56,7 @@ python __anonymous () {
dbg_packages.append("%s-dbg" % name)
for name in bb.data.getVar("QT_EXTRA_LIBS", d, 1).split():
- pkg = "${QT_BASE_LIB}" + name.lower().replace("qt", "") + "4"
+ pkg = "${QT_BASE_LIB}" + name.lower().replace("qt", "").replace("_", "-") + "4"
bb.data.setVar("FILES_%s" % pkg, "${libdir}/lib%(name)s.so.*" % locals(), d)
bb.data.setVar("FILES_%s-dev" % pkg, """${libdir}/lib%(name)s.prl
${libdir}/lib%(name)s.a
@@ -87,6 +92,8 @@ OTHER_PACKAGES = "\
${QT_BASE_NAME}-makeqpf \
${QT_BASE_NAME}-mkspecs \
${QT_BASE_NAME}-pixeltool \
+ ${QT_BASE_NAME}-qmlviewer \
+ ${QT_BASE_NAME}-xmlpatterns \
${QT_BASE_NAME}-qt3to4"
PACKAGES += "${LIB_PACKAGES} ${DEV_PACKAGES} ${DBG_PACKAGES} ${OTHER_PACKAGES}"
@@ -106,8 +113,19 @@ RRECOMMENDS_${QT_BASE_NAME}-fonts = " \
${QT_BASE_NAME}-fonts-pfa \
${QT_BASE_NAME}-fonts-pfb \
${QT_BASE_NAME}-fonts-qpf"
+RRECOMMENDS_${QT_BASE_NAME}-demos += " \
+ ${QT_BASE_NAME}-fonts \
+ ${QT_BASE_NAME}-examples \
+ ${QT_BASE_NAME}-plugin-sqldriver-sqlite \
+ ${QT_BASE_NAME}-plugin-imageformat-jpeg \
+ ${QT_BASE_NAME}-assistant \
+ ${PN}-doc"
+RRECOMMENDS_${QT_BASE_NAME}-examples += " \
+ ${QT_BASE_NAME}-plugin-sqldriver-sqlite \
+ ${QT_BASE_NAME}-plugin-imageformat-jpeg"
FILES_${QT_BASE_NAME}-tools = "${bindir}/uic* ${bindir}/moc ${bindir}/rcc ${bindir}/qttracereplay ${bindir}/qdoc*"
+FILES_${QT_BASE_NAME}-tools-dbg = "${bindir}/.debug/uic* ${bindir}/.debug/moc ${bindir}/.debug/rcc ${bindir}/.debug/qttracereplay ${bindir}/.debug/qdoc*"
FILES_${QT_BASE_NAME}-assistant = "${bindir}/*assistant* ${bindir}/qcollectiongenerator ${bindir}/qhelpconverter ${bindir}/qhelpgenerator"
FILES_${QT_BASE_NAME}-assistant-dbg = "${bindir}/.debug/*assistant* ${bindir}/.debug/qcollectiongenerator ${bindir}/.debug/qhelpconverter ${bindir}/.debug/qhelpgenerator"
FILES_${QT_BASE_NAME}-common = "${bindir}/qtconfig"
@@ -119,7 +137,7 @@ FILES_${QT_BASE_NAME}-demos-dbg = "${bindir}/.debug/qtdemo* ${bindir}
FILES_${QT_BASE_NAME}-designer = "${bindir}/*designer*"
FILES_${QT_BASE_NAME}-designer-dbg = "${bindir}/.debug/*designer*"
FILES_${QT_BASE_NAME}-examples = "${bindir}/${QT_DIR_NAME}/examples/*"
-FILES_${QT_BASE_NAME}-examples-dbg = "${bindir}/${QT_DIR_NAME}/examples/.debug ${bindir}/${QT_DIR_NAME}/examples/*/.debug ${bindir}/${QT_DIR_NAME}/examples/*/*/.debug ${bindir}/${QT_DIR_NAME}/examples/*/*/*/.debug ${bindir}/${QT_DIR_NAME}/examples/*/*/*/*/.debug"
+FILES_${QT_BASE_NAME}-examples-dbg = "${bindir}/${QT_DIR_NAME}/examples/.debug ${bindir}/${QT_DIR_NAME}/examples/*/.debug ${bindir}/${QT_DIR_NAME}/examples/*/*/.debug ${bindir}/${QT_DIR_NAME}/examples/*/*/*/.debug ${bindir}/${QT_DIR_NAME}/examples/*/*/*/*/.debug ${bindir}/${QT_DIR_NAME}/examples/declarative/*/*/*/*/*/.debug/* ${bindir}/${QT_DIR_NAME}/examples/declarative/*/*/*/*/.debug/*"
FILES_${QT_BASE_NAME}-fonts-ttf-vera = "${libdir}/fonts/Vera*.ttf"
FILES_${QT_BASE_NAME}-fonts-ttf-dejavu = "${libdir}/fonts/DejaVu*.ttf"
FILES_${QT_BASE_NAME}-fonts-pfa = "${libdir}/fonts/*.pfa"
@@ -131,28 +149,19 @@ FILES_${QT_BASE_NAME}-pixeltool = "${bindir}/pixeltool"
FILES_${QT_BASE_NAME}-pixeltool-dbg = "${bindir}/.debug/pixeltool"
FILES_${QT_BASE_NAME}-qt3to4 = "${bindir}/qt3to4 ${datadir}/${QT_DIR_NAME}/q3porting.xml"
FILES_${QT_BASE_NAME}-qt3to4-dbg = "${bindir}/.debug/qt3to4"
+FILES_${QT_BASE_NAME}-qmlviewer = "${bindir}/qmlviewer"
+FILES_${QT_BASE_NAME}-qmlviewer-dbg = "${bindir}/.debug/qmlviewer"
FILES_${QT_BASE_NAME}-makeqpf = "${bindir}/makeqpf"
FILES_${QT_BASE_NAME}-makeqpf-dbg = "${bindir}/.debug/makeqpf"
FILES_${QT_BASE_NAME}-mkspecs = "${datadir}/${QT_DIR_NAME}/mkspecs/*"
+FILES_${QT_BASE_NAME}-xmlpatterns = "${bindir}/xmlpatterns*"
+FILES_${QT_BASE_NAME}-xmlpatterns-dbg = "${bindir}/.debug/xmlpatterns*"
-ARM_INSTRUCTION_SET = "arm"
-
-set_arch() {
- case ${TARGET_ARCH} in
- arm*) QT_ARCH=arm ;;
- i*86*) QT_ARCH=i386 ;;
- mips*) QT_ARCH=mips ;;
- powerpc*) QT_ARCH=powerpc ;;
- x86_64*) QT_ARCH=x86_64 ;;
- esac
-}
do_configure() {
unset QMAKESPEC
unset QTDIR
- set_arch
-
if [ ! -e bin/qmake ]; then
ln -sf ${STAGING_BINDIR_NATIVE}/qmake2 bin/qmake
fi
@@ -192,30 +201,22 @@ do_configure() {
-demosdir ${bindir}/${QT_DIR_NAME}/demos \
-platform ${TARGET_OS}-oe-g++ \
-xplatform ${TARGET_OS}-oe-g++ \
+ ${QT_ENDIAN} \
-crossarch ${QT_ARCH} \
${QT_CONFIG_FLAGS} -no-fast \
-L${STAGING_LIBDIR} -I${STAGING_INCDIR} \
-I${STAGING_INCDIR}/freetype2
}
-do_compile() {
- unset CFLAGS CXXFLAGS
- install -m 0755 ${STAGING_BINDIR_NATIVE}/rcc4 ${S}/bin/rcc
- install -m 0755 ${STAGING_BINDIR_NATIVE}/moc4 ${S}/bin/moc
- install -m 0755 ${STAGING_BINDIR_NATIVE}/uic4 ${S}/bin/uic
-
- oe_runmake ${EXTRA_ENV}
-}
-
python populate_packages_prepend() {
translation_dir = bb.data.expand('${datadir}/${QT_DIR_NAME}/translations/', d)
translation_name = bb.data.expand('${QT_BASE_NAME}-translation-%s', d)
do_split_packages(d, translation_dir, '^(assistant|designer|linguist|qt|qtconfig|qvfb)_(.*)\.qm$', translation_name, '${PN} translation for %s', extra_depends='' )
-
+
phrasebook_dir = bb.data.expand('${datadir}/${QT_DIR_NAME}/phrasebooks/', d)
phrasebook_name = bb.data.expand('${QT_BASE_NAME}-phrasebook-%s', d)
do_split_packages(d, phrasebook_dir, '^(.*)\.qph$', phrasebook_name, '${PN} phrasebook for %s', extra_depends='' )
-
+
# Package all the plugins and their -dbg version and create a meta package
import os
def qtopia_split(path, name, glob):
@@ -227,7 +228,7 @@ python populate_packages_prepend() {
if not os.path.exists("%s%s" % (bb.data.expand('${D}',d), plugin_dir)):
bb.note("The path does not exist:", bb.data.expand('${D}', d), plugin_dir)
return
-
+
plugin_name = bb.data.expand('${QT_BASE_NAME}-plugin-%s-%%s' % name, d)
dev_packages = []
dev_hook = lambda file,pkg,b,c,d:dev_packages.append((file,pkg))
@@ -257,6 +258,7 @@ python populate_packages_prepend() {
qtopia_split('script', 'script', '^libqtscript(.*)\.so$')
qtopia_split('styles', 'style', '^libq(.*)\.so$')
qtopia_split('phonon_backend','phonon-backend','^libphonon_(.*)\.so$')
+ qtopia_split('bearer', 'bearer', '^libq(.*)bearer\.so$')
}
do_install() {
@@ -285,7 +287,7 @@ do_install() {
-e s#"uic_location=.*$"#"uic_location=${bindir}/uic4"# \
${D}${libdir}/pkgconfig/*.pc
for name in ${QT_LIB_NAMES}; do
- sed -i -e /Requires/s#"${name}"#"${name}${QT_LIBINFIX}"#g ${D}${libdir}/pkgconfig/*.pc
+ sed -i -e /Requires/s#"${name}"#"${name}${QT_LIBINFIX}"#g ${D}${libdir}/pkgconfig/*.pc
done
# QT abuses $includedir to point to its headers, which breaks pkgconfig sysroot, so manually fix it up here:
@@ -297,4 +299,14 @@ do_install() {
install -d ${D}/${libdir}/fonts
touch ${D}/${libdir}/fonts/fontdir
+
+ install -d ${D}${bindir}
+ for i in rcc uic moc ; do
+ install -m 0755 ${S}/bin/$i ${D}${bindir}/
+ done
+
+ #Append an E to the qtdemo file
+ if [ -n "${QT_LIBINFIX}" ] ; then
+ mv ${D}${bindir}/qtdemo ${D}${bindir}/qtdemo${QT_LIBINFIX}
+ fi
}
diff --git a/meta/recipes-qt/qt4/qt4_arch.inc b/meta/recipes-qt/qt4/qt4_arch.inc
new file mode 100644
index 0000000000..7f4be63bca
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt4_arch.inc
@@ -0,0 +1,25 @@
+inherit siteinfo
+
+ARM_INSTRUCTION_SET = "arm"
+
+def qt_arch(d):
+ import bb, re
+ arch = bb.data.getVar('TARGET_ARCH', d, 1)
+ if re.match("^i.86$", arch):
+ arch = "i386"
+ elif re.match("^arm.*", arch):
+ arch = "arm"
+ elif arch == "x86_64":
+ arch = "x86"
+ elif arch == "mipsel":
+ arch = "mips"
+ return arch
+
+def qt_endian(d):
+ import bb
+ if bb.data.getVar('SITEINFO_ENDIANESS', d, True) == "le":
+ return "-little-endian"
+ elif bb.data.getVar('SITEINFO_ENDIANESS', d, True) == "be":
+ return "-big-endian"
+ else:
+ assert False
diff --git a/meta/recipes-qt/tasks/task-poky-qt.bb b/meta/recipes-qt/tasks/task-poky-qt.bb
index e82e277586..da960db5b0 100644
--- a/meta/recipes-qt/tasks/task-poky-qt.bb
+++ b/meta/recipes-qt/tasks/task-poky-qt.bb
@@ -6,7 +6,7 @@ DESCRIPTION = "Qt Tasks for Poky"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-PR = "r2"
+PR = "r3"
PACKAGES = "\
task-poky-qt-demos \
@@ -16,7 +16,7 @@ PACKAGES = "\
ALLOW_EMPTY = "1"
-QTDEMOS ?= "quicky ${COMMERCIAL_QT}"
-QTDEMOS_disabled = "fotowall"
+QTDEMOS ?= "quicky ${COMMERCIAL_QT} fotowall"
+#QTDEMOS_disabled = "fotowall"
RDEPENDS_task-poky-qt-demos = "${QTDEMOS}"
diff --git a/meta/recipes-qt/tasks/task-qte-toolchain-host.bb b/meta/recipes-qt/tasks/task-qte-toolchain-host.bb
new file mode 100644
index 0000000000..2ab6ccf6b9
--- /dev/null
+++ b/meta/recipes-qt/tasks/task-qte-toolchain-host.bb
@@ -0,0 +1,7 @@
+require recipes-core/tasks/task-sdk-host.bb
+
+DESCRIPTION = "Host packages for Qt Embedded SDK"
+LICENSE = "MIT"
+ALLOW_EMPTY = "1"
+
+RDEPENDS_${PN} += "qt4-tools-nativesdk"
diff --git a/meta/recipes-qt/tasks/task-qte-toolchain-target.bb b/meta/recipes-qt/tasks/task-qte-toolchain-target.bb
new file mode 100644
index 0000000000..98fe47794f
--- /dev/null
+++ b/meta/recipes-qt/tasks/task-qte-toolchain-target.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "Target packages for Qt Embedded SDK"
+LICENSE = "MIT"
+ALLOW_EMPTY = "1"
+
+PR = "r5"
+
+LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
+ file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+RDEPENDS_${PN} += " \
+ task-poky-standalone-sdk-target \
+ qt4-embedded-mkspecs \
+ libqt-embeddedmultimedia4-dev \
+ libqt-embeddedphonon4-dev \
+ libqt-embedded3support4-dev \
+ libqt-embeddedclucene4-dev \
+ libqt-embeddedcore4-dev \
+ libqt-embeddeddbus4-dev \
+ libqt-embeddeddesignercomponents4-dev \
+ libqt-embeddeddesigner4-dev \
+ libqt-embeddeduitools4-dev \
+ libqt-embeddedgui4-dev \
+ libqt-embeddedhelp4-dev \
+ libqt-embeddednetwork4-dev \
+ libqt-embeddedscript4-dev \
+ libqt-embeddedscripttools4-dev \
+ libqt-embeddedsql4-dev \
+ libqt-embeddedsvg4-dev \
+ libqt-embeddedtest4-dev \
+ libqt-embeddedwebkit4-dev \
+ libqt-embeddedxml4-dev \
+ libsqlite3-dev \
+ expat-dev \
+ "
+
diff --git a/meta/recipes-sato/eds/eds-dbus/old-gdk-api.patch b/meta/recipes-sato/eds/eds-dbus/old-gdk-api.patch
new file mode 100644
index 0000000000..8b600698bf
--- /dev/null
+++ b/meta/recipes-sato/eds/eds-dbus/old-gdk-api.patch
@@ -0,0 +1,17 @@
+Do not disable old API after upgrading gtk+.
+This avoid build error due to defination missing.
+
+Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
+
+Index: git/configure.ac
+===================================================================
+--- git.orig/configure.ac 2010-12-16 10:25:24.000000000 +0800
++++ git/configure.ac 2010-12-16 10:25:58.000000000 +0800
+@@ -147,7 +147,6 @@
+ AS_COMPILER_FLAGS(WARNING_FLAGS,
+ "-DG_DISABLE_DEPRECATED
+ -DPANGO_DISABLE_DEPRECATED
+- -DGDK_DISABLE_DEPRECATED
+ -DGDK_PIXBUF_DISABLE_DEPRECATED
+ -DG_DISABLE_SINGLE_INCLUDES
+ -DGTK_DISABLE_SINGLE_INCLUDES
diff --git a/meta/recipes-sato/eds/eds-dbus_git.bb b/meta/recipes-sato/eds/eds-dbus_git.bb
index e5b7e15f71..5ab96a7efb 100644
--- a/meta/recipes-sato/eds/eds-dbus_git.bb
+++ b/meta/recipes-sato/eds/eds-dbus_git.bb
@@ -18,6 +18,7 @@ SRC_URI = "git://git.gnome.org/evolution-data-server;protocol=git \
file://nossl.patch;patch=1 \
file://optional_imapx_provider.patch;patch=1 \
file://new-contact-fix.patch;patch=1 \
+ file://old-gdk-api.patch;patch=1 \
file://iconv-detect.h"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-sato/eds/eds-tools_bzr.bb b/meta/recipes-sato/eds/eds-tools_bzr.bb
index 0dfcf593c0..9cead16516 100644
--- a/meta/recipes-sato/eds/eds-tools_bzr.bb
+++ b/meta/recipes-sato/eds/eds-tools_bzr.bb
@@ -1,10 +1,10 @@
LICENSE = "GPLv2"
SECTION = "x11"
DEPENDS = "dbus-glib eds-dbus"
-RDEPENDS = "libedata-book"
+RDEPENDS_${PN} = "libedata-book"
DESCRIPTION = "Test applications for EDS"
-PR = "r0"
+PR = "r1"
SRC_URI = "bzr://burtonini.com/bzr/eds-tools;proto=http"
diff --git a/meta/recipes-sato/gaku/gaku_svn.bb b/meta/recipes-sato/gaku/gaku_svn.bb
index a70863e6bc..594b03736b 100644
--- a/meta/recipes-sato/gaku/gaku_svn.bb
+++ b/meta/recipes-sato/gaku/gaku_svn.bb
@@ -4,20 +4,20 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
file://main.c;beginline=1;endline=20;md5=0c02b4ef945956832b37a036b9cc103a"
DEPENDS = "gtk+ gstreamer libowl-av"
-RDEPENDS = "gst-plugins-base-audioconvert \
+RDEPENDS_${PN} = "gst-plugins-base-audioconvert \
gst-plugins-base-audioresample \
gst-plugins-base-typefindfunctions \
gst-plugins-base-playbin"
-RRECOMMENDS = "gst-plugins-good-id3demux \
+RRECOMMENDS_${PN} = "gst-plugins-good-id3demux \
gst-plugins-base-vorbis \
gst-plugins-base-alsa \
gst-plugins-base-ogg \
${COMMERCIAL_AUDIO_PLUGINS}"
-PV = "0.0+svnr${SRCREV}"
+PV = "0.0+svnr${SRCPV}"
-PR = "r3"
+PR = "r4"
SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=${PN};proto=http"
diff --git a/meta/recipes-sato/gtk-engines/gtk-sato-engine_svn.bb b/meta/recipes-sato/gtk-engines/gtk-sato-engine_svn.bb
index a7ee6c6e43..3c7f1b5429 100644
--- a/meta/recipes-sato/gtk-engines/gtk-sato-engine_svn.bb
+++ b/meta/recipes-sato/gtk-engines/gtk-sato-engine_svn.bb
@@ -4,7 +4,7 @@ LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
file://src/sato-utils.h;endline=24;md5=708f28cfe7fe028d497aaf4389b80b62 \
file://src/sato-main.c;endline=24;md5=b5e5dddebca570275becb51b526e4c5a"
-PV = "0.3.2+svnr${SRCREV}"
+PV = "0.3.2+svnr${SRCPV}"
PR = "r0"
SRC_URI = "svn://svn.o-hand.com/repos/sato/trunk;module=gtk-engine;proto=http"
diff --git a/meta/recipes-sato/images/poky-image-sato-dev.bb b/meta/recipes-sato/images/poky-image-sato-dev.bb
new file mode 100644
index 0000000000..429095e19e
--- /dev/null
+++ b/meta/recipes-sato/images/poky-image-sato-dev.bb
@@ -0,0 +1,9 @@
+#
+# Copyright (C) 2007 OpenedHand Ltd.
+#
+
+IMAGE_FEATURES += "apps-console-core ${SATO_IMAGE_FEATURES} dev-pkgs"
+
+LICENSE = "MIT"
+
+inherit poky-image
diff --git a/meta/recipes-sato/images/poky-image-sato-sdk-directdisk.bb b/meta/recipes-sato/images/poky-image-sato-sdk-directdisk.bb
new file mode 100644
index 0000000000..b69780fa03
--- /dev/null
+++ b/meta/recipes-sato/images/poky-image-sato-sdk-directdisk.bb
@@ -0,0 +1,9 @@
+require recipes-core/images/poky-image-directdisk.inc
+
+DESCRIPTION = "Sato SDK Direct Disk Image"
+
+LICENSE = "MIT"
+
+ROOTFS = "${DEPLOY_DIR_IMAGE}/poky-image-sato-sdk-${MACHINE}.ext3"
+
+do_bootdirectdisk[depends] += "poky-image-sato-sdk:do_rootfs"
diff --git a/meta/recipes-sato/images/poky-image-sato-sdk-live.bb b/meta/recipes-sato/images/poky-image-sato-sdk-live.bb
new file mode 100644
index 0000000000..b5e786e983
--- /dev/null
+++ b/meta/recipes-sato/images/poky-image-sato-sdk-live.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Bootable Live Sato SDK Image"
+
+require recipes-core/images/poky-image-live.inc
+
+LABELS += "boot install"
+
+ROOTFS = "${DEPLOY_DIR_IMAGE}/poky-image-sato-sdk-${MACHINE}.ext3"
+
+LICENSE = "MIT"
+
+do_bootimg[depends] += "poky-image-sato-sdk:do_rootfs"
diff --git a/meta/recipes-sato/images/poky-image-sdk.bb b/meta/recipes-sato/images/poky-image-sato-sdk.bb
index 9f8eef9a52..9f8eef9a52 100644
--- a/meta/recipes-sato/images/poky-image-sdk.bb
+++ b/meta/recipes-sato/images/poky-image-sato-sdk.bb
diff --git a/meta/recipes-sato/images/poky-image-sdk-directdisk.bb b/meta/recipes-sato/images/poky-image-sdk-directdisk.bb
deleted file mode 100644
index 17dcdc5f03..0000000000
--- a/meta/recipes-sato/images/poky-image-sdk-directdisk.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require recipes-core/images/poky-image-directdisk.inc
-
-DESCRIPTION = "SDK Direct Disk Image"
-
-LICENSE = "MIT"
-
-ROOTFS = "${DEPLOY_DIR_IMAGE}/poky-image-sdk-${MACHINE}.ext3"
-
-do_bootdirectdisk[depends] += "poky-image-sdk:do_rootfs"
diff --git a/meta/recipes-sato/images/poky-image-sdk-live.bb b/meta/recipes-sato/images/poky-image-sdk-live.bb
deleted file mode 100644
index b96cd925ac..0000000000
--- a/meta/recipes-sato/images/poky-image-sdk-live.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-DESCRIPTION = "Bootable Live SDK Image"
-
-require recipes-core/images/poky-image-live.inc
-
-LABELS += "boot install"
-
-ROOTFS = "${DEPLOY_DIR_IMAGE}/poky-image-sdk-${MACHINE}.ext3"
-
-LICENSE = "MIT"
-
-do_bootimg[depends] += "poky-image-sdk:do_rootfs"
diff --git a/meta/recipes-sato/leafpad/leafpad_0.8.17.bb b/meta/recipes-sato/leafpad/leafpad_0.8.17.bb
deleted file mode 100644
index 6291b95eef..0000000000
--- a/meta/recipes-sato/leafpad/leafpad_0.8.17.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-DESCRIPTION = "Simple GTK+ Text Editor"
-HOMEPAGE = "http://tarot.freeshell.org/leafpad/"
-BUGTRACKER = ""
-
-LICENSE = "GPLv2 & GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
- file://src/leafpad.h;endline=20;md5=d3d6a89f5e61e8b13bdea537511ba1fa \
- file://src/utils.c;endline=20;md5=0d2cc6584ba3202448bb274f62739571"
-
-DEPENDS = "gtk+ intltool-native"
-DEPENDS_append_poky = " libowl"
-SRC_URI = "http://savannah.nongnu.org/download/${PN}/${PN}-${PV}.tar.gz \
- file://leafpad.desktop"
-
-SRC_URI[md5sum] = "d39acdf4d31de309d484511bdc9f5924"
-SRC_URI[sha256sum] = "8df8de7aaea26148225b6120631b4fe6b89d36d2b52962e7c9cc0ce07bfdbd4c"
-PR = "r0"
-
-SRC_URI_append_poky += " file://owl-menu.patch;apply=yes "
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = " --enable-chooser --disable-gtktest --disable-print"
-
-do_install_append () {
- install -d ${D}/${datadir}
- install -d ${D}/${datadir}/applications
- install -m 0644 ${WORKDIR}/leafpad.desktop ${D}/${datadir}/applications
-}
-
-FILES_${PN} += "${datadir}/applications/leafpad.desktop"
diff --git a/meta/recipes-sato/leafpad/leafpad_0.8.18.1.bb b/meta/recipes-sato/leafpad/leafpad_0.8.18.1.bb
new file mode 100644
index 0000000000..5024e7cf4a
--- /dev/null
+++ b/meta/recipes-sato/leafpad/leafpad_0.8.18.1.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "Simple GTK+ Text Editor"
+HOMEPAGE = "http://tarot.freeshell.org/leafpad/"
+BUGTRACKER = ""
+
+LICENSE = "GPLv2 & GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+ file://src/leafpad.h;endline=20;md5=d3d6a89f5e61e8b13bdea537511ba1fa \
+ file://src/utils.c;endline=20;md5=0d2cc6584ba3202448bb274f62739571"
+
+DEPENDS = "gtk+ intltool-native"
+DEPENDS_append_poky = " libowl"
+SRC_URI = "http://savannah.nongnu.org/download/${PN}/${PN}-${PV}.tar.gz \
+ file://leafpad.desktop"
+
+SRC_URI[md5sum] = "254a72fc67505e3aa52884c729cd7b97"
+SRC_URI[sha256sum] = "959d22ae07f22803bc66ff40d373a854532a6e4732680bf8a96a3fbcb9f80a2c"
+PR = "r0"
+
+SRC_URI_append_poky += " file://owl-menu.patch;apply=yes "
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = " --enable-chooser --disable-gtktest --disable-print"
+
+do_install_append () {
+ install -d ${D}/${datadir}
+ install -d ${D}/${datadir}/applications
+ install -m 0644 ${WORKDIR}/leafpad.desktop ${D}/${datadir}/applications
+}
+
+FILES_${PN} += "${datadir}/applications/leafpad.desktop"
diff --git a/meta/recipes-sato/libowl/libowl_svn.bb b/meta/recipes-sato/libowl/libowl_svn.bb
index 31a142c930..74d0d77981 100644
--- a/meta/recipes-sato/libowl/libowl_svn.bb
+++ b/meta/recipes-sato/libowl/libowl_svn.bb
@@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
SECTION = "libs"
DEPENDS = "gtk+"
-PV = "0.0+svnr${SRCREV}"
+PV = "0.0+svnr${SRCPV}"
PR = "r6"
SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=${PN};proto=http"
diff --git a/meta/recipes-sato/matchbox-config-gtk/matchbox-config-gtk_git.bb b/meta/recipes-sato/matchbox-config-gtk/matchbox-config-gtk_git.bb
new file mode 100644
index 0000000000..9f4e4d3e01
--- /dev/null
+++ b/meta/recipes-sato/matchbox-config-gtk/matchbox-config-gtk_git.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Matchbox GTK+ theme configuration application."
+HOMEPAGE = "http://matchbox-project.org"
+BUGTRACKER = "http://bugzilla.openedhand.com/"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+ file://appearance/mb-appearance.c;endline=25;md5=ea92333cf8a6802639d62d874c114a28"
+
+DEPENDS = "gconf gtk+"
+RDEPENDS_${PN} = "settings-daemon"
+
+PV = "0.0+git${SRCPV}"
+PR = "r0"
+
+S = "${WORKDIR}/git"
+
+SRC_URI = "git://git.pokylinux.org/${PN};protocol=git \
+ file://no-handed.patch;patch=1;pnum=0"
+
+inherit autotools pkgconfig
+
diff --git a/meta/recipes-sato/matchbox-config-gtk/matchbox-config-gtk_svn.bb b/meta/recipes-sato/matchbox-config-gtk/matchbox-config-gtk_svn.bb
deleted file mode 100644
index af748f14ff..0000000000
--- a/meta/recipes-sato/matchbox-config-gtk/matchbox-config-gtk_svn.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "Matchbox GTK+ theme configuration application."
-HOMEPAGE = "http://matchbox-project.org"
-BUGTRACKER = "http://bugzilla.openedhand.com/"
-
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
- file://appearance/mb-appearance.c;endline=25;md5=ea92333cf8a6802639d62d874c114a28"
-
-DEPENDS = "gconf gtk+"
-RDEPENDS = "settings-daemon"
-
-PV = "0.0+svnr${SRCREV}"
-
-S = "${WORKDIR}/${PN}"
-
-SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http \
- file://no-handed.patch;patch=1;pnum=0"
-
-inherit autotools pkgconfig
-
diff --git a/meta/recipes-sato/matchbox-desktop-sato/matchbox-desktop-sato_svn.bb b/meta/recipes-sato/matchbox-desktop-sato/matchbox-desktop-sato_svn.bb
index bdae33d5a3..617fb6dbe0 100644
--- a/meta/recipes-sato/matchbox-desktop-sato/matchbox-desktop-sato_svn.bb
+++ b/meta/recipes-sato/matchbox-desktop-sato/matchbox-desktop-sato_svn.bb
@@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
SECTION = "x11"
DEPENDS = ""
CONFLICTS = "matchbox-common"
-PV = "0.0+svnr${SRCREV}"
+PV = "0.0+svnr${SRCPV}"
PR = "r0"
SRC_URI = "svn://svn.o-hand.com/repos/sato/trunk;module=desktop-folders;proto=http"
diff --git a/meta/recipes-sato/matchbox-desktop/files/dso_linking_change_build_fix.patch b/meta/recipes-sato/matchbox-desktop/files/dso_linking_change_build_fix.patch
new file mode 100644
index 0000000000..54f3670e9b
--- /dev/null
+++ b/meta/recipes-sato/matchbox-desktop/files/dso_linking_change_build_fix.patch
@@ -0,0 +1,26 @@
+after gcc linking has changed, all the libraries must be explicitely specified to for linking.
+This patch avoids this linking error:
+
+| make[2]: Entering directory `/disk0/pokybuild/build1/tmp/work/i586-poky-linux/matchbox-desktop-2.0+svnr2096-r0/matchbox-desktop-2/src'^M
+| ccache i586-poky-linux-gcc -march=i586 --sysroot=/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux -Wall -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb -feliminate-unused-debug-types -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o matchbox-desktop main.o taku-category-bar.o desktop.o ../libtaku/libtaku.a -pthread -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 -ldbus-1 -lpthread -lrt -lstartup-notification-1 ../libtaku/libinotify.a^M
+| /disk0/pokybuild/build1/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: F^A: invalid DSO for symbol `XFree' definition^M
+| /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libX11.so.6: could not read symbols: Bad value^M
+| collect2: ld returned 1 exit status^M
+| make[2]: *** [matchbox-desktop] Error 1
+
+Nitin A Kamble <nitin.a.kamble@intel.com>
+Date: 2011/01/11
+
+Index: matchbox-desktop-2/configure.ac
+===================================================================
+--- matchbox-desktop-2.orig/configure.ac
++++ matchbox-desktop-2/configure.ac
+@@ -14,7 +14,7 @@ if test x$inotify_support = xyes; then
+ AC_DEFINE(WITH_INOTIFY, [1], [If inotify is enabled])
+ fi
+
+-PKG_CHECK_MODULES(GTK, gtk+-2.0)
++PKG_CHECK_MODULES(GTK, [gtk+-2.0 x11])
+
+ AC_ARG_ENABLE(startup_notification,
+ AC_HELP_STRING([--disable-startup-notification], [disable startup notification support]),
diff --git a/meta/recipes-sato/matchbox-desktop/matchbox-desktop_2.0.bb b/meta/recipes-sato/matchbox-desktop/matchbox-desktop_2.0.bb
index 83d4d0b3fd..2943e4d0ab 100644
--- a/meta/recipes-sato/matchbox-desktop/matchbox-desktop_2.0.bb
+++ b/meta/recipes-sato/matchbox-desktop/matchbox-desktop_2.0.bb
@@ -2,9 +2,10 @@ DESCRIPTION = "Matchbox Window Manager Desktop"
LICENSE = "GPL"
DEPENDS = "gtk+ startup-notification"
SECTION = "x11/wm"
-PR = "r1"
+PR = "r2"
-SRC_URI = "http://projects.o-hand.com/matchbox/sources/matchbox-desktop/2.0/matchbox-desktop-${PV}.tar.bz2"
+SRC_URI = "http://projects.o-hand.com/matchbox/sources/matchbox-desktop/2.0/matchbox-desktop-${PV}.tar.bz2 \
+ file://dso_linking_change_build_fix.patch"
EXTRA_OECONF = "--enable-startup-notification"
diff --git a/meta/recipes-sato/matchbox-desktop/matchbox-desktop_git.bb b/meta/recipes-sato/matchbox-desktop/matchbox-desktop_git.bb
new file mode 100644
index 0000000000..09f79138ca
--- /dev/null
+++ b/meta/recipes-sato/matchbox-desktop/matchbox-desktop_git.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "Matchbox Window Manager Desktop"
+HOMEPAGE = "http://matchbox-project.org/"
+BUGTRACKER = "http://bugzilla.openedhand.com/"
+
+LICENSE = "GPLv2+ & LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+ file://libtaku/eggsequence.h;endline=20;md5=b91f68f7642a1459fa1f4c9df94a8f15 \
+ file://src/desktop.c;endline=20;md5=36c9bf295e6007f3423095f405af5a2d \
+ file://src/main.c;endline=19;md5=2044244f97a195c25b7dc602ac7e9a00"
+
+DEPENDS = "gtk+ startup-notification dbus"
+SECTION = "x11/wm"
+PV = "2.0+git${SRCPV}"
+PR = "r0"
+
+SRC_URI = "git://git.pokylinux.org/${PN}-2;protocol=git \
+ file://dso_linking_change_build_fix.patch"
+
+EXTRA_OECONF = "--enable-startup-notification --with-dbus"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
diff --git a/meta/recipes-sato/matchbox-desktop/matchbox-desktop_svn.bb b/meta/recipes-sato/matchbox-desktop/matchbox-desktop_svn.bb
deleted file mode 100644
index 324c81ff27..0000000000
--- a/meta/recipes-sato/matchbox-desktop/matchbox-desktop_svn.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-DESCRIPTION = "Matchbox Window Manager Desktop"
-HOMEPAGE = "http://matchbox-project.org/"
-BUGTRACKER = "http://bugzilla.openedhand.com/"
-
-LICENSE = "GPLv2+ & LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
- file://libtaku/eggsequence.h;endline=20;md5=b91f68f7642a1459fa1f4c9df94a8f15 \
- file://src/desktop.c;endline=20;md5=36c9bf295e6007f3423095f405af5a2d \
- file://src/main.c;endline=19;md5=2044244f97a195c25b7dc602ac7e9a00"
-
-DEPENDS = "gtk+ startup-notification dbus"
-SECTION = "x11/wm"
-PV = "2.0+svnr${SRCREV}"
-PR = "r0"
-
-SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN}-2;proto=http"
-
-EXTRA_OECONF = "--enable-startup-notification --with-dbus"
-
-S = "${WORKDIR}/${PN}-2"
-
-inherit autotools pkgconfig
diff --git a/meta/recipes-sato/matchbox-keyboard/files/single-instance.patch b/meta/recipes-sato/matchbox-keyboard/files/single-instance.patch
new file mode 100644
index 0000000000..d0adc47f75
--- /dev/null
+++ b/meta/recipes-sato/matchbox-keyboard/files/single-instance.patch
@@ -0,0 +1,22 @@
+Multiple matchbox-keyboard instances would occupy whole screen and cause X
+window segfault(Bug 509). Making matchbox-keyboard singleton is one work
+around.
+
+This patch allow only one instance of matchbox-keyboard based on some mechanism
+in matchbox-desktop. In future, an applet and GTK-IM modules in
+matchbox-keyboard can be used to automatically map/unmap the virtual keyboard
+on demand.
+
+Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
+
+
+Index: matchbox-keyboard/matchbox-keyboard.desktop
+===================================================================
+--- matchbox-keyboard.orig/matchbox-keyboard.desktop 2010-12-22 20:41:40.000000000 +0800
++++ matchbox-keyboard/matchbox-keyboard.desktop 2010-12-22 20:42:12.000000000 +0800
+@@ -6,3 +6,5 @@
+ Icon=matchbox-keyboard.png
+ Categories=Panel;Utility;MB
+ X-MB-INPUT-MECHANSIM=True
++X-MB-SingleInstance=true
++StartupNotify=true
diff --git a/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_git.bb b/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_git.bb
new file mode 100644
index 0000000000..245f999335
--- /dev/null
+++ b/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_git.bb
@@ -0,0 +1,61 @@
+DESCRIPTION = "Matchbox virtual keyboard for X11"
+HOMEPAGE = "http://matchbox-project.org"
+BUGTRACKER = "http://bugzilla.openedhand.com/"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+ file://src/matchbox-keyboard.h;endline=20;md5=4ba16ff913ad245dd6d95a6c67f72526 \
+ file://applet/applet.c;endline=20;md5=e9201b3efa0a81a160b88d6feb5cf75b"
+
+DEPENDS = "libfakekey expat libxft gtk+ matchbox-panel-2"
+RDEPENDS_${PN} = "formfactor dbus-wait"
+SECTION = "x11"
+PV = "0.0+git${SRCPV}"
+PR = "r0"
+
+SRC_URI = "git://git.pokylinux.org/${PN};protocol=git \
+ file://configure_fix.patch;patch=1;maxrev=1819 \
+ file://single-instance.patch;patch=1 \
+ file://80matchboxkeyboard.shbg"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig gettext
+
+EXTRA_OECONF = "--disable-cairo --enable-gtk-im --enable-applet"
+
+PACKAGES += "matchbox-keyboard-im matchbox-keyboard-im-dbg \
+ matchbox-keyboard-applet matchbox-keyboard-applet-dbg"
+
+FILES_${PN} = "${bindir}/* \
+ ${sysconfdir} \
+ ${datadir}/applications \
+ ${datadir}/pixmaps \
+ ${datadir}/matchbox-keyboard"
+
+FILES_matchbox-keyboard-im = "${libdir}/gtk-2.0/*/immodules/*.so"
+FILES_matchbox-keyboard-im-dbg += "${libdir}/gtk-2.0/*/immodules/.debug"
+
+FILES_matchbox-keyboard-applet = "${libdir}/matchbox-panel/*.so"
+FILES_matchbox-keyboard-applet-dbg += "${libdir}/matchbox-panel/.debug"
+
+do_install_append () {
+ install -d ${D}/${sysconfdir}/X11/Xsession.d/
+ install -m 755 ${WORKDIR}/80matchboxkeyboard.shbg ${D}/${sysconfdir}/X11/Xsession.d/
+}
+
+pkg_postinst_matchbox-keyboard-im () {
+if [ "x$D" != "x" ]; then
+ exit 1
+fi
+
+gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules
+}
+
+pkg_postrm_matchbox-keyboard-im () {
+if [ "x$D" != "x" ]; then
+ exit 1
+fi
+
+gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules
+}
diff --git a/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_svn.bb b/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_svn.bb
deleted file mode 100644
index 0425fec78a..0000000000
--- a/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_svn.bb
+++ /dev/null
@@ -1,60 +0,0 @@
-DESCRIPTION = "Matchbox virtual keyboard for X11"
-HOMEPAGE = "http://matchbox-project.org"
-BUGTRACKER = "http://bugzilla.openedhand.com/"
-
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
- file://src/matchbox-keyboard.h;endline=20;md5=4ba16ff913ad245dd6d95a6c67f72526 \
- file://applet/applet.c;endline=20;md5=e9201b3efa0a81a160b88d6feb5cf75b"
-
-DEPENDS = "libfakekey expat libxft gtk+ matchbox-panel-2"
-RDEPENDS = "formfactor dbus-wait"
-SECTION = "x11"
-PV = "0.0+svnr${SRCREV}"
-PR = "r4"
-
-SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http \
- file://configure_fix.patch;patch=1;maxrev=1819 \
- file://80matchboxkeyboard.shbg"
-
-S = "${WORKDIR}/${PN}"
-
-inherit autotools pkgconfig gettext
-
-EXTRA_OECONF = "--disable-cairo --enable-gtk-im --enable-applet"
-
-PACKAGES += "matchbox-keyboard-im matchbox-keyboard-im-dbg \
- matchbox-keyboard-applet matchbox-keyboard-applet-dbg"
-
-FILES_${PN} = "${bindir}/* \
- ${sysconfdir} \
- ${datadir}/applications \
- ${datadir}/pixmaps \
- ${datadir}/matchbox-keyboard"
-
-FILES_matchbox-keyboard-im = "${libdir}/gtk-2.0/*/immodules/*.so"
-FILES_matchbox-keyboard-im-dbg += "${libdir}/gtk-2.0/*/immodules/.debug"
-
-FILES_matchbox-keyboard-applet = "${libdir}/matchbox-panel/*.so"
-FILES_matchbox-keyboard-applet-dbg += "${libdir}/matchbox-panel/.debug"
-
-do_install_append () {
- install -d ${D}/${sysconfdir}/X11/Xsession.d/
- install -m 755 ${WORKDIR}/80matchboxkeyboard.shbg ${D}/${sysconfdir}/X11/Xsession.d/
-}
-
-pkg_postinst_matchbox-keyboard-im () {
-if [ "x$D" != "x" ]; then
- exit 1
-fi
-
-gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules
-}
-
-pkg_postrm_matchbox-keyboard-im () {
-if [ "x$D" != "x" ]; then
- exit 1
-fi
-
-gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules
-}
diff --git a/meta/recipes-sato/matchbox-panel-2/matchbox-panel-2_git.bb b/meta/recipes-sato/matchbox-panel-2/matchbox-panel-2_git.bb
new file mode 100644
index 0000000000..256b5a22da
--- /dev/null
+++ b/meta/recipes-sato/matchbox-panel-2/matchbox-panel-2_git.bb
@@ -0,0 +1,36 @@
+DESCRIPTION = "A simple GTK+ based panel for handheld devices."
+HOMEPAGE = "http://matchbox-project.org"
+BUGTRACKER = "http://bugzilla.openedhand.com/"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+ file://matchbox-panel/mb-panel.h;endline=10;md5=0b7db28f4b6863fb853d0467e590019a \
+ file://applets/startup/startup.c;endline=22;md5=b0a64fbef3097d79f8264e6907a98f03"
+
+PRIORITY = "optional"
+DEPENDS = "gtk+ startup-notification dbus dbus-glib"
+DEPENDS += " ${@base_contains("MACHINE_FEATURES", "acpi", "libacpi", "",d)}"
+DEPENDS += " ${@base_contains("MACHINE_FEATURES", "apm", "apmd", "",d)}"
+
+PV = "0.0+git${SRCPV}"
+PR = "r0"
+
+RPROVIDES_${PN} = "matchbox-panel"
+RREPLACES_${PN} = "matchbox-panel"
+RCONFLICTS_${PN} = "matchbox-panel"
+
+SRC_URI = "git://git.pokylinux.org/${PN};protocol=git \
+ file://startup_fix.diff;patch=1"
+
+EXTRA_OECONF = "--enable-startup-notification --enable-dbus"
+EXTRA_OECONF += " ${@base_contains("MACHINE_FEATURES", "acpi", "--with-battery=acpi", "",d)}"
+EXTRA_OECONF += " ${@base_contains("MACHINE_FEATURES", "apm", "--with-battery=apm", "",d)}"
+
+S = "${WORKDIR}/git"
+
+FILES_${PN} += "${libdir}/matchbox-panel/*.so \
+ ${datadir}/matchbox-panel/brightness/*.png \
+ ${datadir}/matchbox-panel/startup/*.png "
+FILES_${PN}-dbg += "${libdir}/matchbox-panel/.debug"
+
+inherit autotools pkgconfig
diff --git a/meta/recipes-sato/matchbox-panel-2/matchbox-panel-2_svn.bb b/meta/recipes-sato/matchbox-panel-2/matchbox-panel-2_svn.bb
deleted file mode 100644
index 8f5ccc84f7..0000000000
--- a/meta/recipes-sato/matchbox-panel-2/matchbox-panel-2_svn.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-DESCRIPTION = "A simple GTK+ based panel for handheld devices."
-HOMEPAGE = "http://matchbox-project.org"
-BUGTRACKER = "http://bugzilla.openedhand.com/"
-
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
- file://matchbox-panel/mb-panel.h;endline=10;md5=0b7db28f4b6863fb853d0467e590019a \
- file://applets/startup/startup.c;endline=22;md5=b0a64fbef3097d79f8264e6907a98f03"
-
-PRIORITY = "optional"
-DEPENDS = "gtk+ startup-notification dbus dbus-glib"
-DEPENDS += " ${@base_contains("MACHINE_FEATURES", "acpi", "libacpi", "",d)}"
-DEPENDS += " ${@base_contains("MACHINE_FEATURES", "apm", "apmd", "",d)}"
-
-PV = "0.0+svnr${SRCREV}"
-PR = "r7"
-
-RPROVIDES_${PN} = "matchbox-panel"
-RREPLACES_${PN} = "matchbox-panel"
-RCONFLICTS_${PN} = "matchbox-panel"
-
-SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http \
- file://startup_fix.diff;patch=1"
-
-EXTRA_OECONF = "--enable-startup-notification --enable-dbus"
-EXTRA_OECONF += " ${@base_contains("MACHINE_FEATURES", "acpi", "--with-battery=acpi", "",d)}"
-EXTRA_OECONF += " ${@base_contains("MACHINE_FEATURES", "apm", "--with-battery=apm", "",d)}"
-
-S = "${WORKDIR}/${PN}"
-
-FILES_${PN} += "${libdir}/matchbox-panel/*.so \
- ${datadir}/matchbox-panel/brightness/*.png \
- ${datadir}/matchbox-panel/startup/*.png "
-FILES_${PN}-dbg += "${libdir}/matchbox-panel/.debug"
-
-inherit autotools pkgconfig
diff --git a/meta/recipes-sato/matchbox-sato/matchbox-session-sato_0.1.bb b/meta/recipes-sato/matchbox-sato/matchbox-session-sato_0.1.bb
index 96d644c3c9..a4abea4b8b 100644
--- a/meta/recipes-sato/matchbox-sato/matchbox-session-sato_0.1.bb
+++ b/meta/recipes-sato/matchbox-sato/matchbox-session-sato_0.1.bb
@@ -6,8 +6,8 @@ LICENSE = "GPL"
LIC_FILES_CHKSUM = "file://session;endline=3;md5=f8a5c5b9c279e52dc094d10e11c2be63"
SECTION = "x11"
-RDEPENDS = "formfactor gtk-sato-engine matchbox-theme-sato gtk-theme-sato matchbox-panel-2 matchbox-desktop-sato initscripts matchbox-session"
-PR = "r27"
+RDEPENDS_${PN} = "formfactor gtk-sato-engine matchbox-theme-sato gtk-theme-sato matchbox-panel-2 matchbox-desktop-sato initscripts matchbox-session"
+PR = "r28"
# This package is architecture specific because the session script is modified
# based on the machine architecture.
diff --git a/meta/recipes-sato/matchbox-stroke/files/dso_linking_change_build_fix.patch b/meta/recipes-sato/matchbox-stroke/files/dso_linking_change_build_fix.patch
new file mode 100644
index 0000000000..dd45341190
--- /dev/null
+++ b/meta/recipes-sato/matchbox-stroke/files/dso_linking_change_build_fix.patch
@@ -0,0 +1,36 @@
+after gcc linking has changed, all the libraries must be explicitely specified
+This patch avoids these linking errors:
+
+| make[1]: Entering directory `/disk0/pokybuild/build1/tmp/work/i586-poky-linux/matchbox-stroke-0.0+svnr1820-r0/matchbox-stroke'^M
+| Making all in src^M
+| make[2]: Entering directory `/disk0/pokybuild/build1/tmp/work/i586-poky-linux/matchbox-stroke-0.0+svnr1820-r0/matchbox-stroke/src'^M
+| ccache i586-poky-linux-gcc -march=i586 --sysroot=/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb -feliminate-unused-debug-types -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o matchbox-stroke matchbox-stroke.o matchbox-stroke-ui.o matchbox-stroke-recog.o matchbox-stroke-mode.o matchbox-stroke-action.o config-parser.o util-hash.o util.o -lXft -lX11 -lXtst -lfakekey -lexpat -lm^M
+| /disk0/pokybuild/build1/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: u: invalid DSO for symbol `XRenderFindVisualFormat' definition^M
+| /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libXrender.so.1: could not read symbols: Bad value^M
+| collect2: ld returned 1 exit status^M
+| make[2]: *** [matchbox-stroke] Error 1
+
+Nitin A Kamble <nitin.a.kamble@intel.com>
+Date: 2011/01/11
+
+
+Index: matchbox-stroke/configure.ac
+===================================================================
+--- matchbox-stroke.orig/configure.ac
++++ matchbox-stroke/configure.ac
+@@ -38,7 +38,7 @@ AC_ARG_WITH(expat-lib,
+ expat_lib=$withval, expat_lib=yes)
+
+
+-PKG_CHECK_MODULES(MBSTROKE, xft libfakekey,,
++PKG_CHECK_MODULES(MBSTROKE, xft libfakekey xrender,,
+ AC_MSG_ERROR([*** Required Librarys not found ***]))
+
+ dnl ------ Expat ------------------------------------------------------------
+@@ -160,4 +160,4 @@ echo "
+ compiler: ${CC}
+
+ Building with Debug: ${enable_debug}
+-"
+\ No newline at end of file
++"
diff --git a/meta/recipes-sato/matchbox-stroke/files/single-instance.patch b/meta/recipes-sato/matchbox-stroke/files/single-instance.patch
new file mode 100644
index 0000000000..f4fec079b5
--- /dev/null
+++ b/meta/recipes-sato/matchbox-stroke/files/single-instance.patch
@@ -0,0 +1,19 @@
+Multiple matchbox-stroke instances would occupy whole screen and cause end user
+confusing. Making matchbox-stroke singleton is one work around.
+
+This patch allow only one instance of matchbox-stroke based on some mechanism
+in matchbox-desktop.
+
+Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
+
+
+Index: matchbox-stroke/matchbox-stroke.desktop
+===================================================================
+--- matchbox-stroke.orig/matchbox-stroke.desktop 2010-07-10 10:23:26.000000000 +0800
++++ matchbox-stroke/matchbox-stroke.desktop 2010-12-22 20:59:26.000000000 +0800
+@@ -6,3 +6,5 @@
+ Icon=matchbox-stroke.png
+ Categories=Panel;Utility;MB
+ X-MB-INPUT-MECHANSIM=True
++X-MB-SingleInstance=true
++StartupNotify=true
diff --git a/meta/recipes-sato/matchbox-stroke/matchbox-stroke_git.bb b/meta/recipes-sato/matchbox-stroke/matchbox-stroke_git.bb
new file mode 100644
index 0000000000..8077a56e1c
--- /dev/null
+++ b/meta/recipes-sato/matchbox-stroke/matchbox-stroke_git.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Matchbox stroke recogniser"
+HOMEPAGE = "http://matchbox-project.org"
+BUGTRACKER = "http://bugzilla.openedhand.com/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://src/matchbox-stroke.h;endline=12;md5=8ed5c5bbec2321fbf5d31bdd55af03aa"
+
+DEPENDS = "libfakekey expat libxft"
+SECTION = "x11/wm"
+PV = "0.0+git${SRCPV}"
+PR = "r0"
+
+SRC_URI = "git://git.pokylinux.org/${PN};protocol=git \
+ file://single-instance.patch;patch=1 \
+ file://configure_fix.patch;patch=1;maxrev=1819 \
+ file://dso_linking_change_build_fix.patch "
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig gettext
+
+FILES_${PN} = "${bindir}/* \
+ ${datadir}/applications \
+ ${datadir}/pixmaps \
+ ${datadir}/matchbox-stroke"
diff --git a/meta/recipes-sato/matchbox-stroke/matchbox-stroke_svn.bb b/meta/recipes-sato/matchbox-stroke/matchbox-stroke_svn.bb
deleted file mode 100644
index 1e25369e37..0000000000
--- a/meta/recipes-sato/matchbox-stroke/matchbox-stroke_svn.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-DESCRIPTION = "Matchbox stroke recogniser"
-HOMEPAGE = "http://matchbox-project.org"
-BUGTRACKER = "http://bugzilla.openedhand.com/"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://src/matchbox-stroke.h;endline=12;md5=8ed5c5bbec2321fbf5d31bdd55af03aa"
-
-DEPENDS = "libfakekey expat libxft"
-SECTION = "x11/wm"
-PV = "0.0+svnr${SRCREV}"
-
-SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http \
- file://configure_fix.patch;patch=1;maxrev=1819 "
-
-S = "${WORKDIR}/${PN}"
-
-inherit autotools pkgconfig gettext
-
-FILES_${PN} = "${bindir}/* \
- ${datadir}/applications \
- ${datadir}/pixmaps \
- ${datadir}/matchbox-stroke"
diff --git a/meta/recipes-sato/matchbox-terminal/matchbox-terminal_git.bb b/meta/recipes-sato/matchbox-terminal/matchbox-terminal_git.bb
new file mode 100644
index 0000000000..c26c33861f
--- /dev/null
+++ b/meta/recipes-sato/matchbox-terminal/matchbox-terminal_git.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Matchbox Terminal"
+HOMEPAGE = "http://www.matchbox-project.org/"
+BUGTRACKER = "http://bugzilla.openedhand.com/"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+ file://main.c;endline=20;md5=96e39176d9e355639a0b8b1c7a840820"
+
+DEPENDS = "gtk+ vte"
+SECTION = "x11/utils"
+PV = "0.0+git${SRCPV}"
+PR = "r0"
+
+SRC_URI = "git://git.pokylinux.org/${PN};protocol=git"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
diff --git a/meta/recipes-sato/matchbox-terminal/matchbox-terminal_svn.bb b/meta/recipes-sato/matchbox-terminal/matchbox-terminal_svn.bb
deleted file mode 100644
index 169223f84e..0000000000
--- a/meta/recipes-sato/matchbox-terminal/matchbox-terminal_svn.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-DESCRIPTION = "Matchbox Terminal"
-HOMEPAGE = "http://www.matchbox-project.org/"
-BUGTRACKER = "http://bugzilla.openedhand.com/"
-
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
- file://main.c;endline=20;md5=96e39176d9e355639a0b8b1c7a840820"
-
-DEPENDS = "gtk+ vte"
-SECTION = "x11/utils"
-PV = "0.0+svnr${SRCREV}"
-PR = "r0"
-
-SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http"
-
-S = "${WORKDIR}/${PN}"
-
-inherit autotools pkgconfig
diff --git a/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato-2/png_rename.patch b/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato-2/png_rename.patch
new file mode 100644
index 0000000000..b12e920004
--- /dev/null
+++ b/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato-2/png_rename.patch
@@ -0,0 +1,14 @@
+Background Image name was changed from background.png to template.png
+
+Signed-off-by: Saul Wold <sgw@linux.intel.com>
+
+Index: matchbox-sato/Sato/matchbox2/Makefile.am
+===================================================================
+--- matchbox-sato.orig/Sato/matchbox2/Makefile.am 2010-12-29 13:08:43.000000000 -0800
++++ matchbox-sato/Sato/matchbox2/Makefile.am 2010-12-29 22:14:45.690428881 -0800
+@@ -1,4 +1,4 @@
+-pngs = background.png
++pngs = template.png
+
+ themesdir = $(datadir)/themes/Sato/matchbox2
+ themes_DATA = theme.xml $(pngs)
diff --git a/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato-2_svn.bb b/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato-2_svn.bb
index 30b632934e..36bde38fcc 100644
--- a/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato-2_svn.bb
+++ b/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato-2_svn.bb
@@ -1,9 +1,11 @@
require matchbox-theme-sato.inc
DEPENDS = "matchbox-wm-2"
-PV = "0.1+svnr${SRCREV}"
+PV = "0.1+svnr${SRCPV}"
+
+SRC_URI = "svn://svn.o-hand.com/repos/sato/trunk;module=matchbox-sato;proto=http \
+ file://png_rename.patch"
-SRC_URI = "svn://svn.o-hand.com/repos/sato/trunk;module=matchbox-sato;proto=http"
S = "${WORKDIR}/matchbox-sato"
EXTRA_OECONF = "--disable-matchbox-1 --enable-matchbox-2"
diff --git a/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato_svn.bb b/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato_svn.bb
index 7d492353bf..16ea8251b1 100644
--- a/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato_svn.bb
+++ b/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato_svn.bb
@@ -1,6 +1,6 @@
require matchbox-theme-sato.inc
-PV = "0.1+svnr${SRCREV}"
+PV = "0.1+svnr${SRCPV}"
PR = "r0"
SRC_URI = "svn://svn.o-hand.com/repos/sato/trunk;module=matchbox-sato;proto=http"
diff --git a/meta/recipes-sato/owl-video-widget/libowl-av_svn.bb b/meta/recipes-sato/owl-video-widget/libowl-av_svn.bb
index 4eeeed6d24..b9612c0741 100644
--- a/meta/recipes-sato/owl-video-widget/libowl-av_svn.bb
+++ b/meta/recipes-sato/owl-video-widget/libowl-av_svn.bb
@@ -9,11 +9,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=ac14b7ca45afea5af040da54db270eb0 \
SECTION = "x11"
DEPENDS = "gtk+ gstreamer gst-plugins-base"
-RDEPENDS = "gst-meta-base"
-RRECOMMENDS = "gst-meta-audio gst-meta-video"
+RDEPENDS_${PN} = "gst-meta-base"
+RRECOMMENDS_${PN} = "gst-meta-audio gst-meta-video"
-PV = "0.0+svnr${SRCREV}"
-PR = "r5"
+PV = "0.0+svnr${SRCPV}"
+PR = "r6"
S = "${WORKDIR}/${PN}"
diff --git a/meta/recipes-sato/owl-video-widget/owl-video_svn.bb b/meta/recipes-sato/owl-video-widget/owl-video_svn.bb
index 5419beacad..f83dbdc5d6 100644
--- a/meta/recipes-sato/owl-video-widget/owl-video_svn.bb
+++ b/meta/recipes-sato/owl-video-widget/owl-video_svn.bb
@@ -8,8 +8,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=ac14b7ca45afea5af040da54db270eb0 \
SECTION = "x11"
DEPENDS = "libowl-av"
-PV = "0.0+svnr${SRCREV}"
-PR = "r2"
+PV = "0.0+svnr${SRCPV}"
+PR = "r3"
S = "${WORKDIR}/video"
diff --git a/meta/recipes-sato/pimlico/contacts.inc b/meta/recipes-sato/pimlico/contacts.inc
index a424295aca..ce990d7ddd 100644
--- a/meta/recipes-sato/pimlico/contacts.inc
+++ b/meta/recipes-sato/pimlico/contacts.inc
@@ -6,7 +6,7 @@ LICENSE = "GPLv2 & GPLv2+ & GPLv3+ "
SECTION = "x11"
DEPENDS = "glib-2.0 gtk+ eds-dbus"
DEPENDS_append_poky = " libowl"
-RDEPENDS = "libedata-book"
+RDEPENDS_${PN} = "libedata-book"
inherit autotools pkgconfig
diff --git a/meta/recipes-sato/pimlico/contacts_0.9.bb b/meta/recipes-sato/pimlico/contacts_0.9.bb
index 1e4628737d..a9e3f15ad1 100644
--- a/meta/recipes-sato/pimlico/contacts_0.9.bb
+++ b/meta/recipes-sato/pimlico/contacts_0.9.bb
@@ -1,5 +1,5 @@
require contacts.inc
-PR = "r2"
+PR = "r3"
SRC_URI =+ "http://pimlico-project.org/sources/${PN}/${PN}-${PV}.tar.gz"
diff --git a/meta/recipes-sato/pimlico/contacts_git.bb b/meta/recipes-sato/pimlico/contacts_git.bb
index c375435309..0d2e235e56 100644
--- a/meta/recipes-sato/pimlico/contacts_git.bb
+++ b/meta/recipes-sato/pimlico/contacts_git.bb
@@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
file://src/contacts-gtk.c;endline=23;md5=e1ee9b9e72045f2d3aa44cf17313b46e"
PV = "0.12+git${SRCPV}"
-PR = "r1"
+PR = "r2"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-sato/pimlico/dates.inc b/meta/recipes-sato/pimlico/dates.inc
index 6ef7b60611..01ab409625 100644
--- a/meta/recipes-sato/pimlico/dates.inc
+++ b/meta/recipes-sato/pimlico/dates.inc
@@ -6,7 +6,7 @@ LICENSE = "GPLv2 & GPLv2+ & LGPLv2+"
SECTION = "x11"
DEPENDS = "glib-2.0 gtk+ libglade eds-dbus"
-RDEPENDS = "libedata-cal"
+RDEPENDS_${PN} = "libedata-cal"
inherit autotools pkgconfig gtk-icon-cache
diff --git a/meta/recipes-sato/pimlico/dates/dso_linking_change_build_fix.patch b/meta/recipes-sato/pimlico/dates/dso_linking_change_build_fix.patch
new file mode 100644
index 0000000000..07a0264c14
--- /dev/null
+++ b/meta/recipes-sato/pimlico/dates/dso_linking_change_build_fix.patch
@@ -0,0 +1,44 @@
+after gcc linking has changed, all the libraries must be explicitely specified
+This patch avoids these linking errors:
+
+
+| make[2]: Entering directory `/disk0/pokybuild/build1/tmp/work/i586-poky-linux/dates-0.4.11+git0+514185dc1f6588085fda41eb59898b93d0487dd4-r2/git/src'^M
+| /bin/sh ../i586-poky-linux-libtool --tag=CC --mode=link ccache i586-poky-linux-gcc -march=i586 --sysroot=/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux -std=gnu99 -Wall -pthread -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/glib-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/glib-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/gtk-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/gtk-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/atk-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/cairo -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pango-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pixman-1 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/freetype2 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/libpng12 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/evolution-data-server-2.30 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/dbus-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/libxml2 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/gconf/2 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/libsoup-2.4 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/dbus-1.0/include -pthread -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/libowl -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/gtk-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/gtk-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/atk-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/cairo -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pango-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/glib-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/glib-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pixman-1 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/freetype2 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/libpng12 -DUSE_OWL=1 -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb -feliminate-unused-debug-types -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o dates dates_gtk.o dates_main.o dates_callbacks.o gconf-bridge.o -pthread -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lecal-1.2 -lical -licalss -licalvcal -ledataserver-1.2 -lxml2 -lsoup-2.4 -lgio-2.0 -lgmodule-2.0 -lgconf-2 -ldbus-glib-1 -ldbus-1 -lpthread -lgobject-2.0 -lgthread-2.0 -lrt -lglib-2.0 -pthread -lowl -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 libgtkdatesview.la
+| i586-poky-linux-libtool: link: ccache i586-poky-linux-gcc -march=i586 --sysroot=/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux -std=gnu99 -Wall -pthread -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/glib-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/glib-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/gtk-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/gtk-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/atk-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/cairo -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pango-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pixman-1 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/freetype2 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/libpng12 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/evolution-data-server-2.30 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/dbus-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/libxml2 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/gconf/2 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/libsoup-2.4 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/dbus-1.0/include -pthread -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/libowl -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/gtk-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/gtk-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/atk-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/cairo -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pango-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/glib-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/glib-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pixman-1 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/freetype2 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/libpng12 -DUSE_OWL=1 -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb -feliminate-unused-debug-types -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o .libs/dates dates_gtk.o dates_main.o dates_callbacks.o gconf-bridge.o -pthread -pthread -L/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libecal-1.2.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libicalss.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libicalvcal.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libical.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libedataserver-1.2.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libsoup-2.4.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libxml2.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgnutls.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libtasn1.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgcrypt.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgpg-error.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgconf-2.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libdbus-glib-1.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libdbus-1.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libowl.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgtk-x11-2.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgdk-x11-2.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libatk-1.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgdk_pixbuf-2.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgio-2.0.so -lresolv /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpangocairo-1.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpangoft2-1.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libstdc++.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libcairo.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpixman-1.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpng12.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libXrender.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libX11.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libxcb.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libXau.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libXdmcp.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libz.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpango-1.0.so -lm /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libfontconfig.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libfreetype.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libexpat.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgobject-2.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgmodule-2.0.so -ldl /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgthread-2.0.so -lpthread /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libglib-2.0.so -lrt ./.libs/libgtkdatesview.a -pthread
+|
+| /disk0/pokybuild/build1/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: e: invalid DSO for symbol `pow@@GLIBC_2.0' definition^M
+| /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libm.so: could not read symbols: Bad value^M
+| collect2: ld returned 1 exit status^M
+| make[2]: *** [dates] Error 1
+
+
+
+| /disk0/pokybuild/build1/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: z: invalid DSO for symbol `pango_layout_get_extents' definition
+| /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpango-1.0.so: could not read symbols: Bad value
+| collect2: ld returned 1 exit status
+| make[2]: *** [dates] Error 1
+
+
+Nitin A Kamble <nitin.a.kamble@intel.com>
+Date: 2011/01/11
+
+Update:
+This is identified as a libtool issue. While creating the libgtkdatesview.la
+file, libtool should have added these needed libraries in there.
+ A bug has been created for this issue:
+ http://bugzilla.pokylinux.org/show_bug.cgi?id=664
+Nitin A Kamble <nitin.a.kamble@intel.com>
+Date: 2011/01/19
+
+Index: git/src/Makefile.am
+===================================================================
+--- git.orig/src/Makefile.am
++++ git/src/Makefile.am
+@@ -34,6 +34,6 @@ dates_SOURCES = $(platform) \
+ gconf-bridge.h \
+ gconf-bridge.c
+
+-dates_LDADD = $(DATES_LIBS) $(OWL_LIBS) libgtkdatesview.la
++dates_LDADD = $(DATES_LIBS) $(OWL_LIBS) libgtkdatesview.la -lm -lpango-1.0
+
+ MAINTAINERCLEANFILES = config.h.in Makefile.in
diff --git a/meta/recipes-sato/pimlico/dates_0.4.8.bb b/meta/recipes-sato/pimlico/dates_0.4.8.bb
index 13afc157d0..ca88a7301e 100644
--- a/meta/recipes-sato/pimlico/dates_0.4.8.bb
+++ b/meta/recipes-sato/pimlico/dates_0.4.8.bb
@@ -1,5 +1,5 @@
require dates.inc
-PR = "r3"
+PR = "r4"
SRC_URI = "http://pimlico-project.org/sources/dates/dates-${PV}.tar.gz"
diff --git a/meta/recipes-sato/pimlico/dates_git.bb b/meta/recipes-sato/pimlico/dates_git.bb
index d09f4e6216..973c42d85a 100644
--- a/meta/recipes-sato/pimlico/dates_git.bb
+++ b/meta/recipes-sato/pimlico/dates_git.bb
@@ -6,9 +6,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
file://src/gconf-bridge.c;endline=22;md5=ad7626c6daf4aec590474a243f4912fa"
PV = "0.4.11+git${SRCPV}"
-PR = "r1"
+PR = "r3"
S = "${WORKDIR}/git"
SRC_URI = "git://git.gnome.org/${PN};protocol=git \
- file://make-382.patch"
+ file://make-382.patch \
+ file://dso_linking_change_build_fix.patch"
diff --git a/meta/recipes-sato/puzzles/oh-puzzles_svn.bb b/meta/recipes-sato/puzzles/oh-puzzles_svn.bb
index 5fcea24b37..3bee48687a 100644
--- a/meta/recipes-sato/puzzles/oh-puzzles_svn.bb
+++ b/meta/recipes-sato/puzzles/oh-puzzles_svn.bb
@@ -11,7 +11,7 @@ SECTION = "x11"
DEPENDS = "gtk+ gconf intltool-native librsvg"
DEPENDS_append_poky = " libowl"
-PV = "0.1+svnr${SRCREV}"
+PV = "0.1+svnr${SRCPV}"
PR = "r10"
bindir = "/usr/games"
diff --git a/meta/recipes-sato/puzzles/puzzles_r9023.bb b/meta/recipes-sato/puzzles/puzzles_r9023.bb
deleted file mode 100644
index acf61de6a6..0000000000
--- a/meta/recipes-sato/puzzles/puzzles_r9023.bb
+++ /dev/null
@@ -1,60 +0,0 @@
-DESCRIPTION="Simon Tatham's Portable Puzzle Collection"
-HOMEPAGE="http://www.chiark.greenend.org.uk/~sgtatham/puzzles/"
-
-DEPENDS = "gtk+ libxt"
-PR = "r0"
-MOD_PV = "${@bb.data.getVar('PV',d,1)[1:]}"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENCE;md5=9928b60f3b78be315b7ab699c1b03ff5"
-
-SRC_URI = "http://www.chiark.greenend.org.uk/~sgtatham/puzzles/puzzles-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "ce3b8b49a4970cdecbd3c0deb236802c"
-SRC_URI[sha256sum] = "52ac700d8ecb6bc51c8892f12f0212a6f12504eaae4cf95bb6fe084889ac5932"
-#SRC_URI = "svn://ixion.tartarus.org/main;module=puzzles;rev=${MOD_PV}"
-
-S = "${WORKDIR}/${PN}-${PV}"
-
-do_configure () {
- ./mkfiles.pl
-}
-
-do_compile_prepend = " \
- export XLDFLAGS='${LDFLAGS} `${STAGING_BINDIR_NATIVE}/pkg-config gtk+-2.0 --libs`'; \
- export CFLAGS='${CFLAGS} -I./ `${STAGING_BINDIR_NATIVE}/pkg-config gtk+-2.0 --cflags`'; "
-
-FILES_${PN} = "${prefix}/games/* ${datadir}/applications/*"
-FILES_${PN}-dbg += "${prefix}/games/.debug"
-
-do_install () {
- rm -rf ${D}/*
- export prefix=${D}
- export DESTDIR=${D}
- install -d ${D}/${prefix}/
- install -d ${D}/${prefix}/games/
- oe_runmake install
-
- install -d ${D}/${datadir}/
- install -d ${D}/${datadir}/applications/
-
- cd ${D}/${prefix}/games
- for prog in *; do
- if [ -x $prog ]; then
- # Convert prog to Title Case
- title=$(echo $prog | sed 's/\(^\| \)./\U&/g')
- echo "making ${D}/${datadir}/applications/$prog.desktop"
- cat <<STOP > ${D}/${datadir}/applications/$prog.desktop
-[Desktop Entry]
-Name=$title
-Exec=${prefix}/games/$prog
-Icon=applications-games
-Terminal=false
-Type=Application
-Categories=Game;
-StartupNotify=true
-X-MB-SingleInstance=true
-STOP
- fi
- done
-}
diff --git a/meta/recipes-sato/puzzles/puzzles_r9076.bb b/meta/recipes-sato/puzzles/puzzles_r9076.bb
new file mode 100644
index 0000000000..fbd0e37d55
--- /dev/null
+++ b/meta/recipes-sato/puzzles/puzzles_r9076.bb
@@ -0,0 +1,61 @@
+DESCRIPTION="Simon Tatham's Portable Puzzle Collection"
+HOMEPAGE="http://www.chiark.greenend.org.uk/~sgtatham/puzzles/"
+
+DEPENDS = "gtk+ libxt"
+PR = "r0"
+MOD_PV = "${@bb.data.getVar('PV',d,1)[1:]}"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=9928b60f3b78be315b7ab699c1b03ff5"
+
+SRC_URI = "http://www.chiark.greenend.org.uk/~sgtatham/puzzles/puzzles-${PV}.tar.gz"
+
+# Checksums seem to be changing regularly right now, need to verify with upstream
+#SRC_URI[md5sum] = "e8b4c7e2341264789f3cd6733857bf1c"
+#SRC_URI[sha256sum] = "69f37e497e63b2f7ab44e7bbd50aee078269c16dbc2d78ec1b00257678f2cbd2"
+#SRC_URI = "svn://ixion.tartarus.org/main;module=puzzles;rev=${MOD_PV}"
+
+S = "${WORKDIR}/${PN}-${PV}"
+
+do_configure () {
+ ./mkfiles.pl
+}
+
+do_compile_prepend = " \
+ export XLDFLAGS='${LDFLAGS} `${STAGING_BINDIR_NATIVE}/pkg-config gtk+-2.0 --libs`'; \
+ export CFLAGS='${CFLAGS} -I./ `${STAGING_BINDIR_NATIVE}/pkg-config gtk+-2.0 --cflags`'; "
+
+FILES_${PN} = "${prefix}/games/* ${datadir}/applications/*"
+FILES_${PN}-dbg += "${prefix}/games/.debug"
+
+do_install () {
+ rm -rf ${D}/*
+ export prefix=${D}
+ export DESTDIR=${D}
+ install -d ${D}/${prefix}/
+ install -d ${D}/${prefix}/games/
+ oe_runmake install
+
+ install -d ${D}/${datadir}/
+ install -d ${D}/${datadir}/applications/
+
+ cd ${D}/${prefix}/games
+ for prog in *; do
+ if [ -x $prog ]; then
+ # Convert prog to Title Case
+ title=$(echo $prog | sed 's/\(^\| \)./\U&/g')
+ echo "making ${D}/${datadir}/applications/$prog.desktop"
+ cat <<STOP > ${D}/${datadir}/applications/$prog.desktop
+[Desktop Entry]
+Name=$title
+Exec=${prefix}/games/$prog
+Icon=applications-games
+Terminal=false
+Type=Application
+Categories=Game;
+StartupNotify=true
+X-MB-SingleInstance=true
+STOP
+ fi
+ done
+}
diff --git a/meta/recipes-sato/screenshot/files/dso_linking_change_build_fix.patch b/meta/recipes-sato/screenshot/files/dso_linking_change_build_fix.patch
new file mode 100644
index 0000000000..d3a9ed1a74
--- /dev/null
+++ b/meta/recipes-sato/screenshot/files/dso_linking_change_build_fix.patch
@@ -0,0 +1,49 @@
+after gcc linking has changed, all the libraries must be explicitely specified
+This patch avoids these linking errors:
+
+
+
+| i586-poky-linux-libtool: link: ccache i586-poky-linux-gcc -march=i586 --sysroot=/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux -Wall -g -pthread -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/gtk-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/gtk-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/atk-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/cairo -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pango-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/glib-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/glib-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pixman-1 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/freetype2 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/libpng12 -pthread -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/glib-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/glib-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/gtk-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/gtk-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/atk-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/cairo -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pango-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pixman-1 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/freetype2 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/libpng12 -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb -feliminate-unused-debug-types -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o .libs/screenshot main.o -pthread /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgtk-x11-2.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgdk-x11-2.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libatk-1.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgdk_pixbuf-2.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgio-2.0.so -lresolv /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpangocairo-1.0.so -L/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpangoft2-1.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libstdc++.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libcairo.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpixman-1.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpng12.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libXrender.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libX11.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libxcb.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libXau.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libXdmcp.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libz.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpango-1.0.so -lm /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libfontconfig.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libfreetype.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libexpat.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgobject-2.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgmodule-2.0.so -ldl /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgthread-2.0.so -lpthread /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libglib-2.0.so -lrt ./.libs/libshot.a -pthread
+| /disk0/pokybuild/build1/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: L: invalid DSO for symbol `gdk_cursor_unref' definition
+| /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgdk-x11-2.0.so: could not read symbols: Bad value
+| collect2: ld returned 1 exit status
+| make[1]: *** [screenshot] Error 1
+
+
+
+
+| i586-poky-linux-libtool: link: ccache i586-poky-linux-gcc -march=i586 --sysroot=/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux -Wall -g -pthread -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/gtk-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/gtk-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/atk-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/cairo -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pango-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/glib-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/glib-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pixman-1 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/freetype2 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/libpng12 -pthread -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/glib-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/glib-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/gtk-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/gtk-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/atk-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/cairo -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pango-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pixman-1 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/freetype2 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/libpng12 -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb -feliminate-unused-debug-types -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o .libs/screenshot main.o -pthread /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgtk-x11-2.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libatk-1.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgdk_pixbuf-2.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgio-2.0.so -lresolv /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpangocairo-1.0.so -L/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpangoft2-1.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libstdc++.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libcairo.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpixman-1.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpng12.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libXrender.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libX11.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libxcb.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libXau.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libXdmcp.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libz.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpango-1.0.so -lm /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libfontconfig.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libfreetype.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libexpat.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgobject-2.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgmodule-2.0.so -ldl /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgthread-2.0.so -lpthread /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libglib-2.0.so -lrt ./.libs/libshot.a /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgdk-x11-2.0.so -pthread
+| /disk0/pokybuild/build1/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: a: invalid DSO for symbol `gdk_pixbuf_unref' definition
+| /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgdk_pixbuf-2.0.so: could not read symbols: Bad value
+| collect2: ld returned 1 exit status
+| make[1]: *** [screenshot] Error 1
+
+
+| i586-poky-linux-libtool: link: ccache i586-poky-linux-gcc -march=i586 --sysroot=/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux -Wall -g -pthread -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/gtk-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/gtk-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/atk-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/cairo -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pango-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/glib-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/glib-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pixman-1 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/freetype2 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/libpng12 -pthread -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/glib-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/glib-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/gtk-2.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/gtk-2.0/include -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/atk-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/cairo -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pango-1.0 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/pixman-1 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/freetype2 -I/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/include/libpng12 -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb -feliminate-unused-debug-types -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o .libs/screenshot main.o -pthread /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgtk-x11-2.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libatk-1.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpangocairo-1.0.so -L/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpangoft2-1.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libstdc++.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libcairo.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpixman-1.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpng12.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libXrender.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libX11.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libxcb.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libXau.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libXdmcp.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpango-1.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libfontconfig.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libfreetype.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libexpat.so ./.libs/libshot.a /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgdk-x11-2.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgdk_pixbuf-2.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgio-2.0.so -lresolv /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libz.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgobject-2.0.so /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgmodule-2.0.so -ldl /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libgthread-2.0.so -lpthread /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libglib-2.0.so -lrt -lm -pthread
+| /disk0/pokybuild/build1/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: }: invalid DSO for symbol `XUngrabServer' definition
+| /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libX11.so: could not read symbols: Bad value
+| collect2: ld returned 1 exit status
+| make[1]: *** [screenshot] Error 1
+
+Nitin A Kamble <nitin.a.kamble@intel.com>
+Date: 2011/01/11
+
+Update:
+This is identified as a libtool issue. While creating the libshot.la
+file, libtool should have added these needed libraries in there.
+ A bug has been created for this issue:
+ http://bugzilla.pokylinux.org/show_bug.cgi?id=664
+Nitin A Kamble <nitin.a.kamble@intel.com>
+Date: 2011/01/19
+
+
+Index: screenshot/Makefile.am
+===================================================================
+--- screenshot.orig/Makefile.am
++++ screenshot/Makefile.am
+@@ -23,4 +23,4 @@ endif
+ # A standalone tool for running from a terminal and scripts
+ bin_PROGRAMS = screenshot
+ screenshot_SOURCES = main.c
+-screenshot_LDADD = $(GTK_LIBS) libshot.la
++screenshot_LDADD = $(GTK_LIBS) libshot.la -lgdk-x11-2.0 -lgdk_pixbuf-2.0 -lX11
diff --git a/meta/recipes-sato/screenshot/screenshot_svn.bb b/meta/recipes-sato/screenshot/screenshot_svn.bb
index a95ba2d54d..ff2b7c8945 100644
--- a/meta/recipes-sato/screenshot/screenshot_svn.bb
+++ b/meta/recipes-sato/screenshot/screenshot_svn.bb
@@ -9,9 +9,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
PRIORITY = "optional"
DEPENDS = "matchbox-panel-2"
-PV = "0.0+svnr${SRCREV}"
+PV = "0.0+svnr${SRCPV}"
+PR = "r1"
-SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=${PN};proto=http"
+SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=${PN};proto=http\
+ file://dso_linking_change_build_fix.patch"
S = ${WORKDIR}/${PN}
diff --git a/meta/recipes-sato/settings-daemon/files/dso_linking_change_build_fix.patch b/meta/recipes-sato/settings-daemon/files/dso_linking_change_build_fix.patch
new file mode 100644
index 0000000000..5fd96d4645
--- /dev/null
+++ b/meta/recipes-sato/settings-daemon/files/dso_linking_change_build_fix.patch
@@ -0,0 +1,29 @@
+after gcc linking has changed, all the libraries must be explicitely specified to for linking.
+This patch avoids this linking error:
+
+| make all-am^M
+| make[1]: Entering directory `/disk0/pokybuild/build1/tmp/work/i586-poky-linux/settings-daemon-0.0+svnr2059-r3/settings-daemon'^M
+| ccache i586-poky-linux-gcc -march=i586 --sysroot=/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux -Wall -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb -feliminate-unused-debug-types -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o settings-daemon settings_daemon-xsettings-common.o settings_daemon-xsettings-manager.o settings_daemon-settings-daemon.o -pthread -lgconf-2 -ldbus-glib-1 -ldbus-1 -lpthread -lgdk-x11-2.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0^M
+| /disk0/pokybuild/build1/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: *^A: invalid DSO for symbol `XCreateSimpleWindow' definition^M
+| /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libX11.so.6: could not read symbols: Bad value^M
+| collect2: ld returned 1 exit status^M
+| make[1]: *** [settings-daemon] Error 1^M
+| make[1]: Leaving directory `/disk0/pokybuild/build1/tmp/work/i586-poky-linux/settings-daemon-0.0+svnr2059-r3/settings-daemon'^M
+| make: *** [all] Error 2^M
+
+Nitin A Kamble <nitin.a.kamble@intel.com>
+Date: 2011/01/11
+
+Index: settings-daemon/configure.ac
+===================================================================
+--- settings-daemon.orig/configure.ac
++++ settings-daemon/configure.ac
+@@ -14,7 +14,7 @@ AC_PROG_CC
+
+
+ dnl TODO: make gconf optional
+-PKG_CHECK_MODULES(APP, [gconf-2.0 gdk-x11-2.0])
++PKG_CHECK_MODULES(APP, [gconf-2.0 gdk-x11-2.0 x11])
+
+
+ AC_SUBST(APP_CFLAGS)
diff --git a/meta/recipes-sato/settings-daemon/settings-daemon_git.bb b/meta/recipes-sato/settings-daemon/settings-daemon_git.bb
new file mode 100644
index 0000000000..f7dc86fec9
--- /dev/null
+++ b/meta/recipes-sato/settings-daemon/settings-daemon_git.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "Settings-daemon provides a bridge between gconf and xsettings"
+HOMEPAGE = "http://svn.o-hand.com/view/matchbox/trunk/settings-daemon/"
+BUGTRACKER = "http://bugzilla.openedhand.com/"
+LICENSE = "MIT-style"
+LIC_FILES_CHKSUM = "file://xsettings-manager.h;endline=22;md5=7cfac9d2d4dc3694cc7eb605cf32a69b \
+ file://xsettings-common.h;endline=22;md5=7cfac9d2d4dc3694cc7eb605cf32a69b"
+DEPENDS = "gconf glib-2.0 gtk+"
+SECTION = "x11"
+PV = "0.0+git${SRCPV}"
+
+PR = "r0"
+
+SRC_URI = "git://git.pokylinux.org/xsettings-daemon;protocol=git \
+ file://addsoundkeys.patch;apply=yes \
+ file://70settings-daemon.sh \
+ file://dso_linking_change_build_fix.patch"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig gconf
+
+FILES_${PN} = "${bindir}/* ${sysconfdir}"
+
+do_install_append () {
+ install -d ${D}/${sysconfdir}/X11/Xsession.d
+ install -m 755 ${WORKDIR}/70settings-daemon.sh ${D}/${sysconfdir}/X11/Xsession.d/
+}
diff --git a/meta/recipes-sato/settings-daemon/settings-daemon_svn.bb b/meta/recipes-sato/settings-daemon/settings-daemon_svn.bb
deleted file mode 100644
index 4d1d9baf40..0000000000
--- a/meta/recipes-sato/settings-daemon/settings-daemon_svn.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-DESCRIPTION = "Settings-daemon provides a bridge between gconf and xsettings"
-HOMEPAGE = "http://svn.o-hand.com/view/matchbox/trunk/settings-daemon/"
-BUGTRACKER = "http://bugzilla.openedhand.com/"
-LICENSE = "MIT-style"
-LIC_FILES_CHKSUM = "file://xsettings-manager.h;endline=22;md5=7cfac9d2d4dc3694cc7eb605cf32a69b \
- file://xsettings-common.h;endline=22;md5=7cfac9d2d4dc3694cc7eb605cf32a69b"
-DEPENDS = "gconf glib-2.0 gtk+"
-SECTION = "x11"
-PV = "0.0+svnr${SRCREV}"
-
-PR = "r3"
-
-SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http \
- file://addsoundkeys.patch;apply=yes \
- file://70settings-daemon.sh"
-
-S = "${WORKDIR}/${PN}"
-
-inherit autotools pkgconfig gconf
-
-FILES_${PN} = "${bindir}/* ${sysconfdir}"
-
-do_install_append () {
- install -d ${D}/${sysconfdir}/X11/Xsession.d
- install -m 755 ${WORKDIR}/70settings-daemon.sh ${D}/${sysconfdir}/X11/Xsession.d/
-}
diff --git a/meta/recipes-sato/web/web-webkit_svn.bb b/meta/recipes-sato/web/web-webkit_svn.bb
index 895d49b27f..3df2bd8baa 100644
--- a/meta/recipes-sato/web/web-webkit_svn.bb
+++ b/meta/recipes-sato/web/web-webkit_svn.bb
@@ -2,12 +2,13 @@ DESCRIPTION = "Multi-platform web browsing application."
HOMEPAGE = "http://o-hand.com/"
BUGTRACKER = "http://bugzilla.openedhand.com/"
-LICENSE = "GPLv2"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
SECTION = "x11"
DEPENDS = "libxml2 glib-2.0 gtk+ libglade webkit-gtk curl gconf js libowl"
-PV = "0.0+svnr${SRCREV}"
+PV = "0.0+svnr${SRCPV}"
PR = "r3"
SRC_URI = "svn://svn.o-hand.com/repos/web/branches;module=webkit;proto=http \
diff --git a/meta/recipes-sato/web/web_svn.bb b/meta/recipes-sato/web/web_svn.bb
index 79838cef73..bdcdaba009 100644
--- a/meta/recipes-sato/web/web_svn.bb
+++ b/meta/recipes-sato/web/web_svn.bb
@@ -4,7 +4,7 @@ DEPENDS = "libxml2 glib-2.0 gtk+ libglade gtkhtml2 curl gconf js libowl"
DESCRIPTION = "Web is a multi-platform web browsing application."
PR = "r4"
-PV = "0.0+svnr${SRCREV}"
+PV = "0.0+svnr${SRCPV}"
SRC_URI = "svn://svn.o-hand.com/repos/${PN};module=trunk;proto=http \
file://owl-window-menu.patch \
diff --git a/meta/recipes-sato/webkit/files/GNUmakefile.am b/meta/recipes-sato/webkit/files/GNUmakefile.am
index 39817f1dd5..8884fcb6f9 100644
--- a/meta/recipes-sato/webkit/files/GNUmakefile.am
+++ b/meta/recipes-sato/webkit/files/GNUmakefile.am
@@ -16,15 +16,11 @@
# webcore_sources, gtk port API and WebCoreSupport parts to webkitgtk_sources,
# etc... The only exceptions are the global variables. See Global Variables
# below.
-#
-# Global Variables
-#
-# global_cppflags = CPPFLAGS that apply to JSC, WebCore, and to any
-# specific port
-# global_cflags = CFLAGS that apply to JSC, WebCore, and to
-# any specific port
-# global_cxxflags = CXXFLAGS that apply to JSC, WebCore, and to any
-# specific port
+
+# Global Variables Reference
+# global_cppflags = CPPFLAGS that apply to all C/C++ files that are built for any project.
+# global_cflags = CFLAGS that apply to all C files that are built for any project.
+# global_cxxflags = CXXFLAGS that apply to all C++ files that are bult for any project.
srcdir = @srcdir@
VPATH = @srcdir@
@@ -35,18 +31,13 @@ DISTCHECK_CONFIGURE_FLAGS = \
# Directory for autogenerated sources
GENSOURCES := $(top_builddir)/DerivedSources
-GENSOURCESWEBKITDOM := $(top_builddir)/DerivedSources/webkit
+GENSOURCES_JAVASCRIPTCORE := $(top_builddir)/DerivedSources/JavaScriptCore
+GENSOURCES_WEBCORE := $(top_builddir)/DerivedSources/WebCore
+GENSOURCES_WEBKIT := $(top_builddir)/DerivedSources/webkit
GENPROGRAMS := $(top_builddir)/Programs
-
-# Script for creating hash tables
-CREATE_HASH_TABLE = $(srcdir)/JavaScriptCore/create_hash_table
-
-# Script for creating regexp tables
-CREATE_REGEXP_TABLES = $(srcdir)/JavaScriptCore/create_regex_tables
-
-# Programs to run the WebKitGtk unit tests
-GTESTER = gtester
-GTESTER_REPORT = gtester-report
+GENSOURCES_INSPECTOR := $(GENPROGRAMS)/resources/inspector
+WebCore := $(srcdir)/WebCore
+WebKit := $(srcdir)/WebKit/gtk
# Libraries and support components
bin_PROGRAMS :=
@@ -63,36 +54,27 @@ javascriptcore_cppflags:=
javascriptcore_sources :=
javascriptcore_built_sources :=
javascriptcore_built_nosources :=
-javascriptcore_dist :=
webcore_cppflags :=
webcore_sources :=
webcore_libadd :=
webcore_built_sources :=
webcore_built_nosources :=
-webcore_dist :=
-webcoregtk_cppflags :=
webcoregtk_sources :=
-IDL_BINDINGS_GDOM :=
-GDOM_AUTO_CLASSES :=
-GDOM_FIXED_CLASSES :=
-GDOM_CLASSES :=
-GDOM_HEADERS_BUILT :=
-GDOM_HEADERS_FIXED :=
-libgdom_h_api :=
-libgdom_cleanfiles :=
+webcoregtk_cppflags :=
+webkitgtk_built_h_api :=
+webkitgtk_static_h_api :=
webkitgtk_h_api :=
webkitgtk_sources :=
webkitgtk_cppflags :=
+webkitgtk_gdom_built_sources :=
webkitgtk_built_sources :=
webkitgtk_built_nosources :=
-webkitgtk_cleanfiles :=
global_cppflags :=
global_cflags :=
global_cxxflags :=
-corekit_cflags :=
-corekit_cppflags :=
JSCORE_GIRSOURCES :=
WEBKIT_GIRSOURCES :=
+FEATURE_DEFINES :=
typelibsdir :=
typelibs_DATA :=
EXTRA_DIST :=
@@ -101,57 +83,15 @@ CLEANFILES :=
DISTCLEANFILES :=
MAINTAINERCLEANFILES :=
-webcoregtk_cppflags += \
- -I$(top_builddir)/DerivedSources/webkit \
- -I$(srcdir)/WebCore/bindings \
- -I$(srcdir)/WebCore/bindings/gobject
-
-# CFLAGS/CXXFLAGS used by WebCore and WebKit
-#
-# gtk+.pc already include glib, cairo, freetype and pango CFLAGS
-# Don't include them for now to reduce the noise when compiling
-# $(GLIB_CFLAGS) $(CAIRO_CFLAGS) $(PANGO_CFLAGS) $(FREETYPE_CFLAGS)
-corekit_cflags += \
- -fno-strict-aliasing \
- $(COVERAGE_CFLAGS) \
- $(ENCHANT_CFLAGS) \
- $(GAIL_CFLAGS) \
- $(GEOCLUE_CFLAGS) \
- $(GLIB_CFLAGS) \
- $(GSTREAMER_CFLAGS) \
- $(GTK_CFLAGS) \
- $(HILDON_CFLAGS) \
- $(LIBSOUP_CFLAGS) \
- $(LIBXML_CFLAGS) \
- $(LIBXSLT_CFLAGS) \
- $(SQLITE3_CFLAGS) \
- $(UNICODE_CFLAGS) \
- $(XT_CFLAGS)
-
-# When building webcore/webkit, we want WebCore/config.h and NOT
-# JavaScriptCore/config.h, hence, it's important that WebCore/ should come first
-# before JavaScriptCore in the include path.
-corekit_cppflags += \
- $(global_cppflags) \
- $(webcore_cppflags) \
- $(webcoregtk_cppflags) \
- $(javascriptcore_cppflags)
-
-# For the Gtk port we want to use XP_UNIX both in X11 and Mac
-if !TARGET_WIN32
-corekit_cppflags += -DXP_UNIX
-endif
-
-# Default compiler flags
-global_cflags += \
+global_cppflags += \
-Wall -W -Wcast-align -Wchar-subscripts -Wreturn-type \
-Wformat -Wformat-security -Wno-format-y2k -Wundef \
-Wmissing-format-attribute -Wpointer-arith -Wwrite-strings \
-Wno-unused-parameter -Wno-parentheses \
- -fno-exceptions
+ -fno-exceptions -DENABLE_GLIB_SUPPORT=1
+
global_cxxflags += \
- $(global_cflags) \
$(SYMBOL_VISIBILITY_INLINES) \
-fno-rtti
@@ -159,30 +99,17 @@ global_cxxflags += \
# It breaks the build on other platforms, so we use it conditionally
if OS_WIN32
no_undefined = -no-undefined
-version_script = -export-symbols-regex "^(webkit_|JS).*"
+version_script = -export-symbols-regex "^(webkit_|k?JS).*"
endif
if OS_GNU
version_script = -Wl,--version-script,$(srcdir)/autotools/symbols.filter
endif
-# Shared libraries
-lib_LTLIBRARIES += \
- libwebkitgtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la
-
# Convenience libraries
noinst_LTLIBRARIES += \
libJavaScriptCore.la
-# JavaScriptCore
-javascriptcore_cppflags += \
- -I$(srcdir)/JavaScriptCore/ForwardingHeaders \
- -I$(srcdir)/JavaScriptCore/parser \
- -I$(srcdir)/JavaScriptCore/wtf \
- -I$(srcdir)/JavaScriptCore/wtf/gtk \
- -I$(srcdir)/JavaScriptCore/wtf/gobject \
- -I$(top_builddir)/DerivedSources
-
nodist_EXTRA_libJavaScriptCore_la_SOURCES = \
$(javascriptcore_built_nosources)
@@ -215,78 +142,6 @@ libJavaScriptCore_la_CPPFLAGS = \
$(global_cppflags) \
$(javascriptcore_cppflags)
-# WebKit
-nodist_EXTRA_libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_SOURCES = \
- $(webcore_built_nosources)
-
-nodist_libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_SOURCES = \
- $(webcore_built_sources) \
- $(webkitgtk_built_sources)
-
-libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_ladir = $(prefix)/include/webkit-@WEBKITGTK_API_VERSION@/webkit
-libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_HEADERS = \
- $(webkitgtk_h_api) \
- WebKit/gtk/webkit/webkitenumtypes.h
-
-libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_SOURCES = \
- $(webcore_sources) \
- $(webcoregtk_sources) \
- $(webkitgtk_sources)
-
-libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_CXXFLAGS = \
- $(global_cxxflags) \
- $(corekit_cflags)
-
-libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_CFLAGS = \
- $(global_cflags) \
- $(corekit_cflags)
-
-libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_CPPFLAGS = \
- $(corekit_cppflags) \
- $(webkitgtk_cppflags) \
- $(HILDON_CPPFLAGS)
-
-libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_LDFLAGS = \
- -version-info @LIBWEBKITGTK_VERSION@ \
- $(version_script) \
- $(no_undefined)
-
-libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_LIBADD = \
- -lpthread \
- libJavaScriptCore.la \
- libWebCoreJS.la \
- libgdom.la \
- $(webcore_ldflags) \
- $(CAIRO_LIBS) \
- $(COVERAGE_LDFLAGS) \
- $(ENCHANT_LIBS) \
- $(FREETYPE_LIBS) \
- $(GAIL_LIBS) \
- $(GEOCLUE_LIBS) \
- $(GLIB_LIBS) \
- $(GSTREAMER_LIBS) \
- $(GTK_LIBS) \
- $(HILDON_LIBS) \
- $(JPEG_LIBS) \
- $(LIBSOUP_LIBS) \
- $(LIBXML_LIBS) \
- $(LIBXSLT_LIBS) \
- $(PANGO_LIBS) \
- $(PNG_LIBS) \
- $(SQLITE3_LIBS) \
- $(UNICODE_LIBS) \
- $(XT_LIBS)
-
-libgdom_ladir = $(prefix)/include/webkit-@WEBKITGTK_API_VERSION@/webkit
-nodist_libgdom_la_HEADERS = \
- $(libgdom_h_api)
-
-libgdom_cleanfiles += \
- $(top_builddir)/WebKit/gtk/webkit/webkitdomenumtypes.h \
- $(top_builddir)/libgdom.la \
- $(top_builddir)/stamp-webkitdomenumtypes.h
-
-#
# Extra checks and flags
global_cppflags += \
-DBUILDING_CAIRO__=1 \
@@ -308,17 +163,29 @@ global_cppflags += \
-DUSE_SYSTEM_MALLOC
endif
+if USE_GSTREAMER
+global_cppflags += \
+ -DWTF_USE_GSTREAMER=1
+endif
+
+# ----
+# GTK+ 2.x/3.x support
+# ----
+if GTK_API_VERSION_2
+global_cppflags += \
+ -DGTK_API_VERSION_2=1
+endif
+
if !ENABLE_DEBUG
global_cppflags += -DNDEBUG
global_cflags += $(SYMBOL_VISIBILITY)
else
-webcoregtk_cppflags += \
+global_cppflags += \
-DG_DISABLE_DEPRECATED \
-DGDK_PIXBUF_DISABLE_DEPRECATED \
-DGDK_DISABLE_DEPRECATED \
-DGTK_DISABLE_DEPRECATED \
-DPANGO_DISABLE_DEPRECATED
-
# Might be useful in the future
# -DGDK_MULTIHEAD_SAFE \
# -DGTK_MULTIHEAD_SAFE
@@ -330,454 +197,19 @@ global_cppflags += \
-DGCC_INSTRUMENT_PROGRAM_FLOW_ARCS
endif
-webkitgtk_h_api += \
- $(srcdir)/WebKit/gtk/webkit/webkit.h \
- $(srcdir)/WebKit/gtk/webkit/webkitdefines.h \
- $(srcdir)/WebKit/gtk/webkit/webkitdownload.h \
- $(srcdir)/WebKit/gtk/webkit/webkiterror.h \
- $(srcdir)/WebKit/gtk/webkit/webkithittestresult.h \
- $(srcdir)/WebKit/gtk/webkit/webkitnetworkrequest.h \
- $(srcdir)/WebKit/gtk/webkit/webkitnetworkresponse.h \
- $(srcdir)/WebKit/gtk/webkit/webkitsoupauthdialog.h \
- $(srcdir)/WebKit/gtk/webkit/webkitwebbackforwardlist.h \
- $(srcdir)/WebKit/gtk/webkit/webkitwebdatasource.h \
- $(srcdir)/WebKit/gtk/webkit/webkitwebframe.h \
- $(srcdir)/WebKit/gtk/webkit/webkitwebhistoryitem.h \
- $(srcdir)/WebKit/gtk/webkit/webkitwebinspector.h \
- $(srcdir)/WebKit/gtk/webkit/webkitwebnavigationaction.h \
- $(srcdir)/WebKit/gtk/webkit/webkitwebpolicydecision.h \
- $(srcdir)/WebKit/gtk/webkit/webkitgeolocationpolicydecision.h \
- $(srcdir)/WebKit/gtk/webkit/webkitwebresource.h \
- $(srcdir)/WebKit/gtk/webkit/webkitwebsettings.h \
- $(srcdir)/WebKit/gtk/webkit/webkitwebwindowfeatures.h \
- $(srcdir)/WebKit/gtk/webkit/webkitwebview.h \
- $(srcdir)/WebKit/gtk/webkit/webkitwebdatabase.h \
- $(srcdir)/WebKit/gtk/webkit/webkitsecurityorigin.h \
- $(top_builddir)/WebKit/gtk/webkit/webkitversion.h
-
-webkitgtk_built_sources += \
- DerivedSources/webkitenumtypes.cpp \
- DerivedSources/webkitdomenumtypes.cpp \
- DerivedSources/webkitmarshal.cpp \
- DerivedSources/webkitmarshal.h \
- WebKit/gtk/webkit/webkitenumtypes.h
-
-webkitgtk_sources += \
- WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp \
- WebKit/gtk/WebCoreSupport/ChromeClientGtk.h \
- WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp \
- WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h \
- WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.cpp \
- WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.h \
- WebKit/gtk/WebCoreSupport/DragClientGtk.cpp \
- WebKit/gtk/WebCoreSupport/DragClientGtk.h \
- WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp \
- WebKit/gtk/WebCoreSupport/EditorClientGtk.h \
- WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp \
- WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h \
- WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp \
- WebKit/gtk/WebCoreSupport/InspectorClientGtk.h \
- WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.cpp \
- WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.h \
- WebKit/gtk/webkit/webkitapplicationcache.cpp \
- WebKit/gtk/webkit/webkitdownload.cpp \
- WebKit/gtk/webkit/webkiterror.cpp \
- WebKit/gtk/webkit/webkithittestresult.cpp \
- WebKit/gtk/webkit/webkitnetworkrequest.cpp \
- WebKit/gtk/webkit/webkitnetworkresponse.cpp \
- WebKit/gtk/webkit/webkitprivate.cpp \
- WebKit/gtk/webkit/webkitprivate.h \
- WebKit/gtk/webkit/webkitsoupauthdialog.c \
- WebKit/gtk/webkit/webkitversion.cpp \
- WebKit/gtk/webkit/webkitwebbackforwardlist.cpp \
- WebKit/gtk/webkit/webkitwebdatasource.cpp \
- WebKit/gtk/webkit/webkitwebframe.cpp \
- WebKit/gtk/webkit/webkitwebhistoryitem.cpp \
- WebKit/gtk/webkit/webkitwebinspector.cpp \
- WebKit/gtk/webkit/webkitwebnavigationaction.cpp \
- WebKit/gtk/webkit/webkitwebpolicydecision.cpp \
- WebKit/gtk/webkit/webkitgeolocationpolicydecision.cpp \
- WebKit/gtk/webkit/webkitwebresource.cpp \
- WebKit/gtk/webkit/webkitwebdatabase.cpp \
- WebKit/gtk/webkit/webkitsecurityorigin.cpp \
- WebKit/gtk/webkit/webkitwebsettings.cpp \
- WebKit/gtk/webkit/webkitwebview.cpp \
- WebKit/gtk/webkit/webkitwebwindowfeatures.cpp \
- WebKit/gtk/webkit/webkitworkers.cpp
-
-webkitgtk_cppflags += \
- -DBUILDING_WEBKIT \
- -DPACKAGE_LOCALE_DIR=\"$(localedir)\" \
- -DDATA_DIR=\"${datadir}\" \
- -I$(srcdir)/WebKit/gtk \
- -I$(srcdir)/WebKit/gtk/WebCoreSupport \
- -I$(srcdir)/WebKit/gtk/webkit \
- -I$(top_builddir)/WebKit/gtk \
- -I$(top_builddir)/WebKit/gtk/webkit \
- -I$(GENSOURCESWEBKITDOM)
-
-webkitgtk_cleanfiles += \
- $(top_builddir)/stamp-webkitmarshal.cpp \
- $(top_builddir)/stamp-webkitmarshal.h \
- $(top_builddir)/stamp-webkitenumtypes.cpp \
- $(top_builddir)/stamp-webkitenumtypes.h \
- $(top_builddir)/Programs/GtkLauncher \
- $(top_builddir)/WebKit/gtk/docs/version.xml \
- $(top_builddir)/WebKit/gtk/docs/GNUmakefile \
- $(top_builddir)/WebKit/gtk/@WEBKITGTK_PC_NAME@-@WEBKITGTK_API_VERSION@.pc \
- $(top_builddir)/WebKit/gtk/webkit/webkitenumtypes.h \
- $(top_builddir)/WebKit/gtk/webkit/webkitversion.h
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = WebKit/gtk/@WEBKITGTK_PC_NAME@-@WEBKITGTK_API_VERSION@.pc
-
-if ENABLE_INTROSPECTION
-
-JSCore-@WEBKITGTK_API_VERSION@.gir: $(builddir)/WebKit/gtk/JSCore-@WEBKITGTK_API_VERSION@.gir
- cp $(builddir)/WebKit/gtk/JSCore-@WEBKITGTK_API_VERSION@.gir $(builddir)/
-
-JSCORE_GIRSOURCES += JSCore-@WEBKITGTK_API_VERSION@.gir
-WEBKIT_GIRSOURCES += WebKit-@WEBKITGTK_API_VERSION@.gir
-
-$(WEBKIT_GIRSOURCES): $(G_IR_SCANNER) $(JSCORE_GIRSOURCES) libwebkitgtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la
- $(AM_V_GEN)$(G_IR_SCANNER) -v --namespace WebKit --nsversion=@WEBKITGTK_API_VERSION@ \
- --include=GObject-2.0 \
- --include=Gtk-@GTK_API_VERSION@ \
- --include=JSCore-@WEBKITGTK_API_VERSION@ \
- --include=Soup-2.4 \
- --library=webkitgtk-@WEBKITGTK_API_VERSION@ \
- --libtool="$(LIBTOOL)" \
- --pkg gobject-2.0 \
- --pkg gtk+-@GTK_API_VERSION@ \
- --pkg libsoup-2.4 \
- --output $@ \
- --add-include-path $(top_srcdir)/WebKit/gtk \
- --add-include-path $(builddir) \
- -I$(top_srcdir)/WebKit/gtk \
- -I$(top_builddir)/WebKit/gtk \
- -I$(top_builddir)/DerivedSources \
- -I$(top_srcdir)/JavaScriptCore/ForwardingHeaders \
- -I$(top_srcdir) \
- $(webkitgtk_h_api) \
- $(libgdom_h_api)
-
-girdir = $(datadir)/gir-1.0
-gir_DATA = $(WEBKIT_GIRSOURCES) $(JSCORE_GIRSOURCES)
-
-typelibsdir += $(libdir)/girepository-1.0
-typelibs_DATA += $(JSCORE_GIRSOURCES:.gir=.typelib) $(WEBKIT_GIRSOURCES:.gir=.typelib)
-
-%.typelib: %.gir $(G_IR_COMPILER)
- $(AM_V_GEN)$(G_IR_COMPILER) --includedir $(top_srcdir)/WebKit/gtk --includedir $(builddir) $< -o $@
-
-CLEANFILES += $(JSCORE_GIRSOURCES) $(WEBKIT_GIRSOURCES) $(typelibs_DATA)
-
-endif
-
-EXTRA_DIST += $(builddir)/WebKit/gtk/JSCore-@WEBKITGTK_API_VERSION@.gir
-
-WEBKIT_MARSHAL = $(GENSOURCES)/webkitmarshal
-WEBKIT_MARSHAL_LIST = $(top_srcdir)/WebKit/gtk/webkitmarshal.list
-
-$(WEBKIT_MARSHAL).cpp: stamp-webkitmarshal.cpp
- @true
-
-$(WEBKIT_MARSHAL).h: stamp-webkitmarshal.h
- @true
-
-stamp-webkitmarshal.cpp: $(WEBKIT_MARSHAL_LIST)
- $(AM_V_GEN) echo "extern \"C\" {" > $(WEBKIT_MARSHAL).cpp && \
- $(GLIB_GENMARSHAL) --prefix=webkit_marshal $(WEBKIT_MARSHAL_LIST) --body >> $(WEBKIT_MARSHAL).cpp && echo '}' >> $(WEBKIT_MARSHAL).cpp && \
- echo timestamp > $(@F)
-
-stamp-webkitmarshal.h: $(WEBKIT_MARSHAL_LIST)
- $(AM_V_GEN)$(GLIB_GENMARSHAL) --prefix=webkit_marshal $(WEBKIT_MARSHAL_LIST) --header > $(WEBKIT_MARSHAL).h && \
- echo timestamp > $(@F)
-
-WebKit/gtk/webkit/webkitenumtypes.h: stamp-webkitenumtypes.h
- @true
-stamp-webkitenumtypes.h: $(webkitgtk_h_api) GNUmakefile
- $(AM_V_GEN)glib-mkenums \
- --fhead "#ifndef WEBKIT_ENUM_TYPES_H\n" \
- --fhead "#define WEBKIT_ENUM_TYPES_H\n\n" \
- --fhead "#include <glib-object.h>\n\n" \
- --fhead "#include <webkit/webkitdefines.h>\n\n" \
- --fhead "G_BEGIN_DECLS\n\n" \
- --ftail "G_END_DECLS\n\n" \
- --ftail "#endif\n" \
- --fprod "#include <webkit/@basename@>\n\n" \
- --eprod "#define WEBKIT_TYPE_@ENUMSHORT@ @enum_name@_get_type()\n\n" \
- --eprod "WEBKIT_API GType\n@enum_name@_get_type(void);\n\n" \
- $(webkitgtk_h_api) | \
- sed 's,web_kit,webkit,' | \
- sed 's,WEBKIT_TYPE_KIT,WEBKIT_TYPE,' \
- > xgen-gth \
- && (cmp -s xgen-gth WebKit/gtk/webkit/webkitenumtypes.h || cp xgen-gth WebKit/gtk/webkit/webkitenumtypes.h) \
- && rm -f xgen-gth \
- && echo timestamp > $(@F)
-
-DerivedSources/webkitenumtypes.cpp: $(webkitgtk_h_api) GNUmakefile
- $(AM_V_GEN)glib-mkenums \
- --fhead "#include <config.h>\n" \
- --fhead "#include <glib-object.h>\n" \
- --fhead "#include \"$(top_builddir)/WebKit/gtk/webkit/webkitenumtypes.h\"\n\n" \
- --fhead "extern \"C\" {\n\n" \
- --fprod "\n/* enumerations from \"@filename@\" */" \
- --vhead "static const G@Type@Value _@enum_name@_values[] = {" \
- --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
- --vtail " { 0, NULL, NULL }\n};\n\n" \
- --vtail "GType @enum_name@_get_type(void)\n{\n" \
- --vtail " static GType type = 0;\n\n" \
- --vtail " if (!type)\n" \
- --vtail " type = g_@type@_register_static(\"@EnumName@\", _@enum_name@_values);\n\n" \
- --vtail " return type;\n}\n\n" \
- --ftail "}\n" \
- $(webkitgtk_h_api) | \
- sed 's,web_kit,webkit,' \
- > xgen-gtc \
- && cp xgen-gtc $@ \
- && rm -f xgen-gtc
-
-WebKit/gtk/webkit/webkitdomenumtypes.h: stamp-webkitdomenumtypes.h
- @true
-stamp-webkitdomenumtypes.h: $(libgdom_h_api) GNUmakefile
- $(AM_V_GEN)glib-mkenums \
- --fhead "#ifndef WEBKIT_DOM_ENUM_TYPES_H\n" \
- --fhead "#define WEBKIT_DOM_ENUM_TYPES_H\n\n" \
- --fhead "#include <glib-object.h>\n\n" \
- --fhead "G_BEGIN_DECLS\n\n" \
- --ftail "G_END_DECLS\n\n" \
- --ftail "#endif\n" \
- --fprod "#include <webkit/@basename@>\n\n" \
- --eprod "#define WEBKIT_DOM_TYPE_@ENUMSHORT@ @enum_name@_get_type()\n\n" \
- --eprod "WEBKIT_API GType\n@enum_name@_get_type(void);n\n" \
- $(libgdom_h_api) | \
- sed 's,web_kit,webkit_dom,' | \
- sed 's,WEBKIT_DOM_TYPE_KIT,WEBKIT_DOM_TYPE,' \
- > xgen-cgth \
- && (cmp -s xgen-cgth WebKit/gtk/webkit/webkitdomenumtypes.h || cp xgen-cgth WebKit/gtk/webkit/webkitdomenumtypes.h) \
- && rm -f xgen-cgth \
- && echo timestamp > $(@F)
-
-DerivedSources/webkitdomenumtypes.cpp: $(top_builddir)/WebKit/gtk/webkit/webkitdomenumtypes.h $(libgdom_h_api) GNUmakefile
- $(AM_V_GEN)glib-mkenums \
- --fhead "#include <config.h>\n" \
- --fhead "#include <glib-object.h>\n" \
- --fhead "#include \"$(top_builddir)/WebKit/gtk/webkit/webkitdomenumtypes.h\"\n\n" \
- --fhead "extern \"C\" {\n\n" \
- --fprod "\n/* enumerations from \"@filename@\" */" \
- --vhead "static const G@Type@Value _@enum_name@_values] = {" \
- --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
- --vtail " { 0, NULL, NULL }\n};\n\n" \
- --vtail "GType @enum_name@_get_type(void)\n{\n" \
- --vtail " static GType type = 0;\n\n" \
- --vtail " if (!type)\n" \
- --vtail " type = g_@type@_register_static(\"@EnumName@\", _@enum_name@_values);\n\n" \
- --vtail " return type;\n}\n\n" \
- --ftail "}\n" \
- $(libgdom_h_api) | \
- sed 's,web_kit,webkitdom,' \
- > xgen-cgtc \
- && cp xgen-cgtc $@ \
- && rm -f xgen-cgtc
-
-# Files that will be distributed
EXTRA_DIST += \
- $(srcdir)/gtk-doc.make \
- WebKit/LICENSE \
- $(javascriptcore_dist) \
- $(webcore_dist) \
$(srcdir)/autotools/symbols.filter \
- $(srcdir)/WebKit/gtk/ChangeLog \
- $(srcdir)/WebKit/gtk/NEWS \
- $(srcdir)/WebKit/gtk/webkitmarshal.list \
- $(srcdir)/WebKit/gtk/docs/GNUmakefile.* \
- $(srcdir)/WebKit/gtk/docs/webkitenvironment.xml \
- $(srcdir)/WebKit/gtk/docs/webkitgtk-docs.sgml \
- $(srcdir)/WebKit/gtk/docs/webkitgtk-sections.txt \
- $(srcdir)/WebKit/gtk/docs/version.xml.in \
- $(srcdir)/WebKit/gtk/po/* \
- $(srcdir)/WebKit/gtk/resources/* \
- $(srcdir)/WebKit/gtk/tests/resources/* \
- $(srcdir)/WebKit/gtk/tests/test_utils.h
-
-# extra resource files
-resourcesdir = ${datadir}/webkit-@WEBKITGTK_API_VERSION@/resources
-dist_resources_DATA = \
- $(shell ls $(srcdir)/WebKit/gtk/resources/*.html)
-
-# END WEBKIT GTK+
+ $(srcdir)/gtk-doc.make \
+ $(srcdir)/WebKit/LICENSE
# Include module makefiles
include JavaScriptCore/GNUmakefile.am
include WebCore/GNUmakefile.am
+include WebKit/gtk/GNUmakefile.am
+include WebCore/bindings/gobject/GNUmakefile.am
include WebKitTools/GNUmakefile.am
include WebKit/gtk/po/GNUmakefile.am
-# Build unit tests
-noinst_PROGRAMS += $(TEST_PROGS)
-
-webkit_tests_cflags = \
- -fno-strict-aliasing \
- -I$(srcdir)/JavaScriptCore/ForwardingHeaders \
- -I$(srcdir)/WebKit/gtk \
- -I$(top_builddir)/WebKit/gtk \
- -I$(top_builddir)/DerivedSources \
- -I$(top_srcdir)/WebCore/bindings \
- -I$(top_srcdir)/WebCore/bindings/gobject \
- $(global_cflags) \
- $(GLIB_CFLAGS) \
- $(GTK_CFLAGS) \
- $(LIBSOUP_CFLAGS)
-
-webkit_tests_ldadd = \
- libwebkitgtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
- $(GTK_LIBS) \
- $(GLIB_LIBS) \
- $(LIBSOUP_LIBS)
-
-webkit_tests_ldflags = \
- -no-install \
- -no-fast-install
-
-TEST_PROGS += \
- Programs/unittests/testdomdocument \
- Programs/unittests/testdomdomwindow \
- Programs/unittests/testdomnode \
- Programs/unittests/testhttpbackend \
- Programs/unittests/testloading \
- Programs/unittests/testglobals \
- Programs/unittests/testmimehandling \
- Programs/unittests/testnetworkrequest \
- Programs/unittests/testnetworkresponse \
- Programs/unittests/testwebframe \
- Programs/unittests/testwebbackforwardlist \
- Programs/unittests/testwebhistoryitem \
- Programs/unittests/testwindow \
- Programs/unittests/testdownload \
- Programs/unittests/testatk \
- Programs/unittests/testatkroles \
- Programs/unittests/testhittestresult \
- Programs/unittests/testwebsettings \
- Programs/unittests/testwebresource \
- Programs/unittests/testwebdatasource \
- Programs/unittests/testwebview \
- Programs/unittests/testkeyevents \
- Programs/unittests/testcopyandpaste
-
-# Add additional tests here
-Programs_unittests_testdomdocument_SOURCES = WebKit/gtk/tests/testdomdocument.c
-Programs_unittests_testdomdocument_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testdomdocument_LDADD = $(webkit_tests_ldadd)
-Programs_unittests_testdomdocument_LDFLAGS = $(webkit_tests_ldflags)
-
-Programs_unittests_testdomdomwindow_SOURCES = WebKit/gtk/tests/testdomdomwindow.c
-Programs_unittests_testdomdomwindow_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testdomdomwindow_LDADD = $(webkit_tests_ldadd)
-Programs_unittests_testdomdomwindow_LDFLAGS = $(webkit_tests_ldflags)
-
-Programs_unittests_testdomnode_SOURCES = WebKit/gtk/tests/testdomnode.c
-Programs_unittests_testdomnode_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testdomnode_LDADD = $(webkit_tests_ldadd)
-Programs_unittests_testdomnode_LDFLAGS = $(webkit_tests_ldflags)
-
-Programs_unittests_testhttpbackend_SOURCES = WebKit/gtk/tests/testhttpbackend.c
-Programs_unittests_testhttpbackend_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testhttpbackend_LDADD = $(webkit_tests_ldadd)
-Programs_unittests_testhttpbackend_LDFLAGS = $(webkit_tests_ldflags)
-
-Programs_unittests_testglobals_SOURCES = WebKit/gtk/tests/testglobals.c
-Programs_unittests_testglobals_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testglobals_LDADD = $(webkit_tests_ldadd)
-Programs_unittests_testglobals_LDFLAGS = $(webkit_tests_ldflags)
-
-Programs_unittests_testloading_SOURCES = WebKit/gtk/tests/testloading.c
-Programs_unittests_testloading_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testloading_LDADD = $(webkit_tests_ldadd)
-Programs_unittests_testloading_LDFLAGS = $(webkit_tests_ldflags)
-
-Programs_unittests_testmimehandling_SOURCES = WebKit/gtk/tests/testmimehandling.c WebKit/gtk/tests/test_utils.c
-Programs_unittests_testmimehandling_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testmimehandling_LDADD = $(webkit_tests_ldadd)
-Programs_unittests_testmimehandling_LDFLAGS = $(webkit_tests_ldflags)
-
-Programs_unittests_testnetworkrequest_SOURCES = WebKit/gtk/tests/testnetworkrequest.c
-Programs_unittests_testnetworkrequest_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testnetworkrequest_LDADD = $(webkit_tests_ldadd)
-Programs_unittests_testnetworkrequest_LDFLAGS = $(webkit_tests_ldflags)
-
-Programs_unittests_testnetworkresponse_SOURCES = WebKit/gtk/tests/testnetworkresponse.c
-Programs_unittests_testnetworkresponse_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testnetworkresponse_LDADD = $(webkit_tests_ldadd)
-Programs_unittests_testnetworkresponse_LDFLAGS = $(webkit_tests_ldflags)
-
-Programs_unittests_testwebframe_SOURCES = WebKit/gtk/tests/testwebframe.c
-Programs_unittests_testwebframe_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testwebframe_LDADD = $(webkit_tests_ldadd)
-Programs_unittests_testwebframe_LDFLAGS = $(webkit_tests_ldflags)
-
-Programs_unittests_testwebbackforwardlist_SOURCES = WebKit/gtk/tests/testwebbackforwardlist.c
-Programs_unittests_testwebbackforwardlist_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testwebbackforwardlist_LDADD = $(webkit_tests_ldadd)
-Programs_unittests_testwebbackforwardlist_LDFLAGS = $(webkit_tests_ldflags)
-
-Programs_unittests_testwebhistoryitem_SOURCES = WebKit/gtk/tests/testwebhistoryitem.c
-Programs_unittests_testwebhistoryitem_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testwebhistoryitem_LDADD = $(webkit_tests_ldadd)
-Programs_unittests_testwebhistoryitem_LDFLAGS = $(webkit_tests_ldflags)
-
-Programs_unittests_testwindow_SOURCES = WebKit/gtk/tests/testwindow.c
-Programs_unittests_testwindow_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testwindow_LDADD = $(webkit_tests_ldadd)
-Programs_unittests_testwindow_LDFLAGS = $(webkit_tests_ldflags)
-
-Programs_unittests_testdownload_SOURCES = WebKit/gtk/tests/testdownload.c
-Programs_unittests_testdownload_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testdownload_LDADD = $(webkit_tests_ldadd)
-Programs_unittests_testdownload_LDFLAGS = $(webkit_tests_ldflags)
-
-Programs_unittests_testatk_SOURCES = WebKit/gtk/tests/testatk.c
-Programs_unittests_testatk_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testatk_LDADD = $(webkit_tests_ldadd)
-Programs_unittests_testatk_LDFLAGS = $(webkit_tests_ldflags)
-
-Programs_unittests_testatkroles_SOURCES = WebKit/gtk/tests/testatkroles.c
-Programs_unittests_testatkroles_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testatkroles_LDADD = $(webkit_tests_ldadd)
-Programs_unittests_testatkroles_LDFLAGS = $(webkit_tests_ldflags)
-
-Programs_unittests_testwebsettings_SOURCES = WebKit/gtk/tests/testwebsettings.c
-Programs_unittests_testwebsettings_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testwebsettings_LDADD = $(webkit_tests_ldadd)
-Programs_unittests_testwebsettings_LDFLAGS = $(webkit_tests_ldflags)
-
-Programs_unittests_testwebresource_SOURCES = WebKit/gtk/tests/testwebresource.c
-Programs_unittests_testwebresource_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testwebresource_LDADD = $(webkit_tests_ldadd)
-
-Programs_unittests_testwebdatasource_SOURCES = WebKit/gtk/tests/testwebdatasource.c
-Programs_unittests_testwebdatasource_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testwebdatasource_LDADD = $(webkit_tests_ldadd)
-
-Programs_unittests_testwebview_SOURCES = WebKit/gtk/tests/testwebview.c WebKit/gtk/tests/test_utils.c
-Programs_unittests_testwebview_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testwebview_LDADD = $(webkit_tests_ldadd)
-Programs_unittests_testwebview_LDFLAGS = $(webkit_tests_ldflags)
-
-Programs_unittests_testhittestresult_SOURCES = WebKit/gtk/tests/testhittestresult.c
-Programs_unittests_testhittestresult_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testhittestresult_LDADD = $(webkit_tests_ldadd)
-
-Programs_unittests_testkeyevents_SOURCES = WebKit/gtk/tests/testkeyevents.c
-Programs_unittests_testkeyevents_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testkeyevents_LDADD = $(webkit_tests_ldadd)
-Programs_unittests_testkeyevents_LDFLAGS = $(webkit_tests_ldflags)
-
-Programs_unittests_testcopyandpaste_SOURCES = WebKit/gtk/tests/testcopyandpaste.c
-Programs_unittests_testcopyandpaste_CFLAGS = $(webkit_tests_cflags)
-Programs_unittests_testcopyandpaste_LDADD = $(webkit_tests_ldadd)
-Programs_unittests_testcopyandpaste_LDFLAGS = $(webkit_tests_ldflags)
-
# Autogenerated sources
BUILT_SOURCES += \
$(javascriptcore_built_sources) \
@@ -785,21 +217,17 @@ BUILT_SOURCES += \
$(webcore_built_sources) \
$(webcore_built_nosources) \
$(webkitgtk_built_sources) \
- $(webkitgtk_built_nosources) \
- $(gdom_built_nosources)
-
-# Project-wide clean rules
-# Files that will be cleaned
-CLEANFILES += \
- $(BUILT_SOURCES) \
- $(webkitgtk_cleanfiles) \
- $(libgdom_cleanfiles)
+ $(webkitgtk_built_nosources)
DISTCLEANFILES += \
- $(CLEANFILES)
+ $(CLEANFILES) \
+ $(builddir)/doltcompile \
+ $(builddir)/doltlibtool
MAINTAINERCLEANFILES += \
$(CLEANFILES) \
+ $(builddir)/doltcompile \
+ $(builddir)/doltlibtool \
$(srcdir)/aconfig.h.in \
$(srcdir)/autotools/config.* \
$(srcdir)/autotools/compile \
@@ -814,7 +242,7 @@ MAINTAINERCLEANFILES += \
# Older automake versions (1.7) place Plo files in a different place so we need
# to create the output directory manually.
-all-local: stamp-po
+all-local:
$(mkdir_p) $(top_builddir)/$(DEPDIR)/DerivedSources
# remove built sources and program directories
@@ -822,35 +250,5 @@ clean-local:
-rm -rf $(GENPROGRAMS)
maintainer-clean-local: distclean-local
-
distclean-local:
-rm -rf $(GENSOURCES) $(GENPROGRAMS)
-
-dist-hook:
- cp $(srcdir)/WebKit/gtk/NEWS $(distdir)/
-
-install-data-local: po-install-data-local
-
-installdirs-data-local: po-installdirs-data-local
-
-uninstall-local: po-uninstall-local
-
-# Run all tests in cwd
-# FIXME: we should run this under xvfb
-test: $(TEST_PROGS)
- $(GTESTER) --verbose $(TEST_PROGS);
-
-# test-report: run tests in cwd and generate report
-# full-report: run tests in cwd with -m perf and -m slow and generate report
-# perf-report: run tests in cwd with -m perf and generate report
-test-report full-report perf-report: $(TEST_PROGS)
- @ case $@ in \
- test-report) test_options="-k";; \
- full-report) test_options="-k -m=perf";; \
- perf-report) test_options="-k -m=perf -m=slow";; \
- esac ; \
- $(GTESTER) --verbose $$test_options -o test-report.xml $(TEST_PROGS); \
- $(GTESTER_REPORT) test-report.xml > test-report.html ;
-
-.PHONY: test test-report perf-report full-report
-check-local: test
diff --git a/meta/recipes-sato/webkit/files/Makefile b/meta/recipes-sato/webkit/files/Makefile
index 1e50d1d358..cdee9da7a6 100644
--- a/meta/recipes-sato/webkit/files/Makefile
+++ b/meta/recipes-sato/webkit/files/Makefile
@@ -1,4 +1,4 @@
-MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKit2 WebKitTools
+MODULES = JavaScriptCore JavaScriptGlue ANGLE WebCore WebKit WebKit2 WebKitTools
all:
@for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
diff --git a/meta/recipes-sato/webkit/files/autogen.sh b/meta/recipes-sato/webkit/files/autogen.sh
index 97beb209d2..60b163d550 100755
--- a/meta/recipes-sato/webkit/files/autogen.sh
+++ b/meta/recipes-sato/webkit/files/autogen.sh
@@ -10,7 +10,7 @@ cd $srcdir
GTKDOCIZE_FLAGS="--copy"
LIBTOOLIZE_FLAGS="--force --automake"
-ACLOCAL_FLAGS="-I autotools"
+ACLOCAL_FLAGS="-I autotools $ACLOCAL_FLAGS"
AUTOMAKE_FLAGS="--foreign --add-missing"
DIE=0
diff --git a/meta/recipes-sato/webkit/files/configure.ac b/meta/recipes-sato/webkit/files/configure.ac
index d4f3e749fc..bb703b4bf7 100644
--- a/meta/recipes-sato/webkit/files/configure.ac
+++ b/meta/recipes-sato/webkit/files/configure.ac
@@ -2,14 +2,14 @@ AC_PREREQ(2.59)
m4_define([webkit_major_version], [1])
m4_define([webkit_minor_version], [3])
-m4_define([webkit_micro_version], [2])
+m4_define([webkit_micro_version], [7])
# This is the version we'll be using as part of our User-Agent string
# e.g., AppleWebKit/$(webkit_user_agent_version) ...
#
# Sourced from WebCore/Configurations/Version.xcconfig
-m4_define([webkit_user_agent_major_version], [531])
-m4_define([webkit_user_agent_minor_version], [2])
+m4_define([webkit_user_agent_major_version], [534])
+m4_define([webkit_user_agent_minor_version], [7])
AC_INIT([WebKit],[webkit_major_version.webkit_minor_version.webkit_micro_version],[http://bugs.webkit.org/])
@@ -34,8 +34,8 @@ AC_SUBST(WEBKIT_USER_AGENT_MINOR_VERSION)
AC_CONFIG_SRCDIR([WebCore/config.h])
dnl # Libtool library version, not to confuse with API version
-dnl # see http://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html#Libtool-versioning
-LIBWEBKITGTK_VERSION=0:0:0
+dnl # see http://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html
+LIBWEBKITGTK_VERSION=4:0:4
AC_SUBST([LIBWEBKITGTK_VERSION])
AM_INIT_AUTOMAKE([foreign subdir-objects tar-ustar])
@@ -82,6 +82,8 @@ WEBKIT_INIT
AC_DISABLE_STATIC
AC_LIBTOOL_WIN32_DLL
AC_PROG_LIBTOOL
+# use dolt to speedup the build
+DOLT
AC_PATH_PROG(FLEX, flex)
if test -z "$FLEX"; then
@@ -165,6 +167,17 @@ if test "$png_ok" != yes; then
fi
AC_SUBST([PNG_LIBS])
+
+if test "$os_win32" = "yes"; then
+ WINMM_LIBS=-lwinmm
+ SHLWAPI_LIBS=-lshlwapi
+ OLE32_LIBS=-lole32
+fi
+AC_SUBST([WINMM_LIBS])
+AC_SUBST([SHLWAPI_LIBS])
+AC_SUBST([OLE32_LIBS])
+
+
# determine the GTK+ version to use
AC_MSG_CHECKING([the GTK+ version to use])
AC_ARG_WITH([gtk],
@@ -186,7 +199,7 @@ case "$with_gtk" in
GAIL_PC_NAME=gail
GAIL_REQUIRED_VERSION=1.8
;;
- 3.0) GTK_REQUIRED_VERSION=2.90
+ 3.0) GTK_REQUIRED_VERSION=2.91
GTK_API_VERSION=3.0
WEBKITGTK_API_MAJOR_VERSION=3
WEBKITGTK_API_MINOR_VERSION=0
@@ -258,7 +271,17 @@ ENCHANT_REQUIRED_VERSION=0.22
# todo: webcore gtk
WEBKIT_CHECK_DEPENDENCIES([glib unicode])
-GETTEXT_PACKAGE=$PACKAGE
+# Check if we can use GSettings
+PKG_CHECK_MODULES([GSETTINGS],
+ [gio-2.0 >= 2.25.0],
+ [have_gsettings=yes],
+ [have_gsettings=no])
+if test "$have_gsettings" = "yes"; then
+ AC_DEFINE([HAVE_GSETTINGS], 1, [Whether we can use GSettings])
+ GLIB_GSETTINGS
+fi
+
+GETTEXT_PACKAGE=$PACKAGE-$GTK_API_VERSION
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",
[The gettext catalog name])
@@ -430,14 +453,6 @@ AC_ARG_ENABLE(datalist,
[],[enable_datalist="yes"])
AC_MSG_RESULT([$enable_datalist])
-# check whether to enable HTML5 ruby support
-AC_MSG_CHECKING([whether to enable HTML5 ruby support])
-AC_ARG_ENABLE(ruby,
- AC_HELP_STRING([--enable-ruby],
- [enable HTML5 ruby support [default=yes]]),
- [],[enable_ruby="yes"])
-AC_MSG_RESULT([$enable_ruby])
-
# check whether to enable HTML5 sandbox iframe support
AC_MSG_CHECKING([whether to enable HTML5 sandboxed iframe support])
AC_ARG_ENABLE(sandbox,
@@ -526,6 +541,22 @@ AC_ARG_ENABLE(workers,
[],[enable_workers="yes"])
AC_MSG_RESULT([$enable_workers])
+# check whether to enable directory upload support
+AC_MSG_CHECKING([whether to enable directory upload support])
+AC_ARG_ENABLE(directory_upload,
+ AC_HELP_STRING([--enable-directory-upload],
+ [enable support for directory upload [default=no]]),
+ [], [enable_directory_upload="no"])
+AC_MSG_RESULT([$enable_directory_upload])
+
+# check whether to enable HTML5 FileSystem API support
+AC_MSG_CHECKING([whether to enable HTML5 FileSystem API support])
+AC_ARG_ENABLE(file_system,
+ AC_HELP_STRING([--enable-file-system],
+ [enable support for HTML5 FileSystem API [default=no]]),
+ [], [enable_file_system="no"])
+AC_MSG_RESULT([$enable_file_system])
+
# turn off svg features if --disable-svg is requested
if test "$enable_svg" = "no"; then
enable_svg_animation=no
@@ -600,8 +631,8 @@ fi
AC_MSG_CHECKING([whether to enable Web Sockets support])
AC_ARG_ENABLE(web_sockets,
AC_HELP_STRING([--enable-web-sockets],
- [enable support for Web Sockets [default=no]]),
- [],[enable_web_sockets="no"])
+ [enable support for Web Sockets [default=yes]]),
+ [],[enable_web_sockets="yes"])
AC_MSG_RESULT([$enable_web_sockets])
# check whether to enable Web Timing support
@@ -612,13 +643,13 @@ AC_ARG_ENABLE(web_timing,
[],[enable_web_timing="no"])
AC_MSG_RESULT([$enable_web_timing])
-# check whether to enable Blob.slice support
-AC_MSG_CHECKING([whether to enable Blob.slice support])
-AC_ARG_ENABLE(blob_slice,
- AC_HELP_STRING([--enable-blob-slice],
- [enable support for Blob.slice [default=no]]),
- [],[enable_blob_slice="no"])
-AC_MSG_RESULT([$enable_blob_slice])
+# check whether to enable Blob support
+AC_MSG_CHECKING([whether to enable Blob support])
+AC_ARG_ENABLE(blob,
+ AC_HELP_STRING([--enable-blob],
+ [enable support for Blob [default=no]]),
+ [],[enable_blob="no"])
+AC_MSG_RESULT([$enable_blob])
# check whether to enable Fast Mobile Scrolling support
AC_MSG_CHECKING([whether to enable Fast Mobile Scrolling])
@@ -628,22 +659,6 @@ AC_ARG_ENABLE(fast_mobile_scrolling,
[],[enable_fast_mobile_scrolling="no"])
AC_MSG_RESULT([$enable_fast_mobile_scrolling])
-# check whether to enable FileReader support
-AC_MSG_CHECKING([whether to enable FileReader support])
-AC_ARG_ENABLE(file_reader,
- AC_HELP_STRING([--enable-file-reader],
- [enable support for FileReader [default=no]]),
- [],[enable_file_reader="no"])
-AC_MSG_RESULT([$enable_file_reader])
-
-# check whether to enable FileWriter support
-AC_MSG_CHECKING([whether to enable FileWriter support])
-AC_ARG_ENABLE(file_writer,
- AC_HELP_STRING([--enable-file-writer],
- [enable support for FileWriter [default=no]]),
- [],[enable_file_writer="no"])
-AC_MSG_RESULT([$enable_file_writer])
-
# check whether to enable code coverage
AC_MSG_CHECKING([whether to enable code coverage support])
AC_ARG_ENABLE(coverage,
@@ -667,6 +682,11 @@ AC_ARG_ENABLE([jit],
[],[enable_jit="yes"])
if test "$enable_jit" = "yes"; then
case "$host_cpu" in
+ arm*)
+ AC_DEFINE([ENABLE_JIT], [1], [Define to enable JIT])
+ AC_DEFINE([ENABLE_YARR], [1], [Define to enable YARR])
+ AC_DEFINE([ENABLE_YARR_JIT], [1], [Define to enable YARR JIT])
+ ;;
i*86|x86_64)
AC_DEFINE([ENABLE_JIT], [1], [Define to enable JIT])
AC_DEFINE([ENABLE_YARR], [1], [Define to enable YARR])
@@ -688,9 +708,36 @@ if test "$enable_jit" = "yes"; then
enable_jit="no (CPU '$host_cpu' not supported)"
;;
esac
+else
+ AC_DEFINE([ENABLE_JIT], [0], [Define to enable JIT])
fi
AC_MSG_RESULT([$enable_jit])
+# Opcode stats
+AC_MSG_CHECKING([whether to enable opcode stats])
+AC_ARG_ENABLE([opcode-stats],
+ [AS_HELP_STRING([--enable-opcode-stats], [Enable Opcode statistics (default: disabled)])],
+ [], [enable_opcode_stats=no])
+AC_MSG_RESULT([$enable_opcode_stats])
+
+if test "$enable_opcode_stats" = "yes"; then
+ if test "$enable_jit" = "yes"; then
+ AC_MSG_ERROR([JIT must be disabled for Opcode stats to work.])
+ fi
+ AC_DEFINE([ENABLE_OPCODE_STATS], [1], [Define to enable Opcode statistics])
+fi
+
+# Link prefetch
+AC_MSG_CHECKING([whether to enable link prefetch support])
+AC_ARG_ENABLE([link-prefetch],
+ [AS_HELP_STRING([--enable-link-prefetch], [Enable Link prefetch support (default: disabled)])],
+ [],[enable_link_prefetch=no])
+AC_MSG_RESULT([$enable_link_prefetch])
+
+if test "$enable_link_prefetch" = "yes"; then
+ AC_DEFINE([ENABLE_LINK_PREFETCH], [1], [Define to enable link prefetch support])
+fi
+
# GObject Introspection
AC_MSG_CHECKING([whether to enable GObject introspection support])
AC_ARG_ENABLE([introspection],
@@ -705,7 +752,7 @@ GIRDIR=
GIRTYPELIBDIR=
if test "$enable_introspection" = "yes"; then
- GOBJECT_INTROSPECTION_REQUIRED=0.6.15
+ GOBJECT_INTROSPECTION_REQUIRED=0.9.5
PKG_CHECK_MODULES([INTROSPECTION],[gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_REQUIRED])
G_IR_SCANNER="$($PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0)"
@@ -816,9 +863,13 @@ if test "$enable_video" = "yes"; then
[gstreamer-0.10 >= $GSTREAMER_REQUIRED_VERSION
gstreamer-app-0.10
gstreamer-base-0.10
+ gstreamer-interfaces-0.10
gstreamer-pbutils-0.10
gstreamer-plugins-base-0.10 >= $GSTREAMER_PLUGINS_BASE_REQUIRED_VERSION
- gstreamer-video-0.10])
+ gstreamer-video-0.10],
+ [have_gstreamer=yes],
+ [have_gstreamer=no])
+
AC_SUBST([GSTREAMER_CFLAGS])
AC_SUBST([GSTREAMER_LIBS])
fi
@@ -859,18 +910,26 @@ AM_CONDITIONAL([USE_GLIB_UNICODE], [test "$with_unicode_backend" = "glib"])
AM_CONDITIONAL([USE_FREETYPE], [test "$with_font_backend" = "freetype"])
AM_CONDITIONAL([USE_PANGO], [test "$with_font_backend" = "pango"])
+# GLib/GIO feature conditionals
+AM_CONDITIONAL([USE_GSETTINGS], [test "$have_gsettings" = "yes"])
+
+# GStreamer feature conditional
+AM_CONDITIONAL([USE_GSTREAMER], [test "$have_gstreamer" = "yes"])
+
# WebKit feature conditionals
AM_CONDITIONAL([ENABLE_DEBUG],[test "$enable_debug" = "yes"])
AM_CONDITIONAL([ENABLE_3D_TRANSFORMS],[test "$enable_3D_transforms" = "yes"])
-AM_CONDITIONAL([ENABLE_BLOB_SLICE],[test "$enable_blob_slice" = "yes"])
+AM_CONDITIONAL([ENABLE_BLOB],[test "$enable_blob" = "yes"])
AM_CONDITIONAL([ENABLE_CHANNEL_MESSAGING],[test "$enable_channel_messaging" = "yes"])
AM_CONDITIONAL([ENABLE_JAVASCRIPT_DEBUGGER],[test "$enable_javascript_debugger" = "yes"])
AM_CONDITIONAL([ENABLE_OFFLINE_WEB_APPLICATIONS],[test "$enable_offline_web_applications" = "yes"])
+AM_CONDITIONAL([ENABLE_DIRECTORY_UPLOAD],[test "$enable_directory_upload" = "yes"])
AM_CONDITIONAL([ENABLE_DOM_STORAGE],[test "$enable_dom_storage" = "yes"])
AM_CONDITIONAL([ENABLE_DATABASE],[test "$enable_database" = "yes"])
AM_CONDITIONAL([ENABLE_DATALIST],[test "$enable_datalist" = "yes"])
AM_CONDITIONAL([ENABLE_EVENTSOURCE],[test "$enable_eventsource" = "yes"])
AM_CONDITIONAL([ENABLE_FAST_MOBILE_SCROLLING],[test "$enable_fast_mobile_scrolling" = "yes"])
+AM_CONDITIONAL([ENABLE_FILE_SYSTEM],[test "$enable_file_system" = "yes"])
AM_CONDITIONAL([ENABLE_ICONDATABASE],[test "$enable_icon_database" = "yes"])
AM_CONDITIONAL([ENABLE_IMAGE_RESIZER],[test "$enable_image_resizer" = "yes"])
AM_CONDITIONAL([ENABLE_INDEXED_DATABASE],[test "$enable_indexed_database" = "yes"])
@@ -879,12 +938,8 @@ AM_CONDITIONAL([ENABLE_XHTMLMP],[test "$enable_xhtmlmp" = "yes"])
AM_CONDITIONAL([ENABLE_XPATH],[test "$enable_xpath" = "yes"])
AM_CONDITIONAL([ENABLE_XSLT],[test "$enable_xslt" = "yes"])
AM_CONDITIONAL([ENABLE_FILTERS],[test "$enable_filters" = "yes"])
-AM_CONDITIONAL([ENABLE_FILE_READER],[test "$enable_file_reader" = "yes"])
-AM_CONDITIONAL([ENABLE_FILE_WRITER],[test "$enable_file_writer" = "yes"])
AM_CONDITIONAL([ENABLE_GEOLOCATION], [test "$enable_geolocation" = "yes"])
AM_CONDITIONAL([ENABLE_MATHML], [test "$enable_mathml" = "yes"])
-AM_CONDITIONAL([ENABLE_RUBY],[test "$enable_ruby" = "yes"])
-AM_CONDITIONAL([ENABLE_SANDBOX],[test "$enable_sandbox" = "yes"])
AM_CONDITIONAL([ENABLE_VIDEO],[test "$enable_video" = "yes"])
AM_CONDITIONAL([ENABLE_NOTIFICATIONS],[test "$enable_notifications" = "yes"])
AM_CONDITIONAL([ENABLE_ORIENTATION_EVENTS],[test "$enable_orientation_events" = "yes"])
@@ -903,6 +958,7 @@ AM_CONDITIONAL([SVG_FLAGS],[test "$svg_flags" = "yes"])
AM_CONDITIONAL([HTML_FLAGS],[test "$html_flags" = "yes"])
AM_CONDITIONAL([ENABLE_WEB_SOCKETS],[test "$enable_web_sockets" = "yes"])
AM_CONDITIONAL([ENABLE_WEB_TIMING],[test "$enable_web_timing" = "yes"])
+AM_CONDITIONAL([ENABLE_OPCODE_STATS],[test "$enable_opcode_stats" = "yes"])
# Gtk conditionals
AM_CONDITIONAL([ENABLE_INTROSPECTION],[test "$enable_introspection" = "yes"])
@@ -918,7 +974,9 @@ WebKit/gtk/docs/version.xml
AC_CONFIG_FILES([
WebKit/gtk/${WEBKITGTK_PC_NAME}-${WEBKITGTK_API_VERSION}.pc:WebKit/gtk/webkit.pc.in
-WebKit/gtk/JSCore-${WEBKITGTK_API_VERSION}.gir:WebKit/gtk/JSCore.gir.in]
+WebKit/gtk/JSCore-${WEBKITGTK_API_VERSION}.gir:WebKit/gtk/JSCore.gir.in
+WebKit/gtk/org.webkitgtk-${WEBKITGTK_API_VERSION}.gschema.xml:WebKit/gtk/org.webkitgtk.gschema.xml.in
+]
,[WEBKITGTK_API_VERSION=$WEBKITGTK_API_VERSION,WEBKITGTK_PC_NAME=$WEBKITGTK_PC_NAME]
)
@@ -936,12 +994,11 @@ Build configuration:
Optimized memory allocator : $enable_fast_malloc
Features:
3D Transforms : $enable_3D_transforms
- Blob.slice support : $enable_blob_slice
+ Blob support : $enable_blob
+ Directory upload : $enable_directory_upload
Fast Mobile Scrolling : $enable_fast_mobile_scrolling
JIT compilation : $enable_jit
Filters support : $enable_filters
- FileReader support : $enable_file_reader
- FileWriter support : $enable_file_writer
Geolocation support : $enable_geolocation
JavaScript debugger/profiler support : $enable_javascript_debugger
MathML support : $enable_mathml
@@ -949,12 +1006,14 @@ Features:
HTML5 channel messaging support : $enable_channel_messaging
HTML5 client-side session and persistent storage support : $enable_dom_storage
HTML5 client-side database storage support : $enable_database
- HTML5 ruby support : $enable_ruby
+ HTML5 FileSystem API support : $enable_file_system
HTML5 sandboxed iframe support : $enable_sandbox
HTML5 server-sent events support : $enable_eventsource
HTML5 video element support : $enable_video
Icon database support : $enable_icon_database
Image resizer support : $enable_image_resizer
+ Link prefetch support : $enable_link_prefetch
+ Opcode stats : $enable_opcode_stats
SharedWorkers support : $enable_shared_workers
Speech input support : $enable_input_speech
SVG support : $enable_svg
@@ -970,6 +1029,7 @@ Features:
XHTML-MP support : $enable_xhtmlmp
XPATH support : $enable_xpath
XSLT support : $enable_xslt
+
GTK+ configuration:
GTK+ version : $with_gtk
GDK target : $with_target
diff --git a/meta/recipes-sato/webkit/files/nodolt.patch b/meta/recipes-sato/webkit/files/nodolt.patch
new file mode 100644
index 0000000000..53313671f4
--- /dev/null
+++ b/meta/recipes-sato/webkit/files/nodolt.patch
@@ -0,0 +1,16 @@
+Dolt cause build error on some platform, so disable it.
+
+Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
+Index: webkit-gtk-1.3.7+svnr72836-r72836-r0/configure.ac
+===================================================================
+--- webkit-gtk-1.3.7+svnr72836-r72836-r0.orig/configure.ac 2011-01-21 11:11:07.000000000 +0800
++++ webkit-gtk-1.3.7+svnr72836-r72836-r0/configure.ac 2011-01-21 11:11:15.000000000 +0800
+@@ -82,8 +82,6 @@
+ AC_DISABLE_STATIC
+ AC_LIBTOOL_WIN32_DLL
+ AC_PROG_LIBTOOL
+-# use dolt to speedup the build
+-DOLT
+
+ AC_PATH_PROG(FLEX, flex)
+ if test -z "$FLEX"; then
diff --git a/meta/recipes-sato/webkit/webkit-gtk_svn.bb b/meta/recipes-sato/webkit/webkit-gtk_svn.bb
index fe31b9c24c..1b5e276739 100644
--- a/meta/recipes-sato/webkit/webkit-gtk_svn.bb
+++ b/meta/recipes-sato/webkit/webkit-gtk_svn.bb
@@ -12,7 +12,7 @@ DEPENDS_darwin8 = "curl icu libxml2 cairo libxslt libidn gnutls gtk+ gstreamer f
SRCREV_FORMAT = "webcore-rwebkit"
-PV = "1.3.2+svnr${SRCREV}"
+PV = "1.3.7+svnr${SRCPV}"
PR = "r0"
SRC_URI = "\
@@ -29,6 +29,7 @@ SRC_URI = "\
file://configure.ac \
file://GNUmakefile.am \
file://gtk-doc.make \
+ file://nodolt.patch \
"
S = "${WORKDIR}/"
@@ -60,6 +61,11 @@ do_compile_prepend() {
cd ${S}
}
+do_install_prepend() {
+ cp ${S}/Programs/.libs/jsc ${S}/Programs/jsc-1 || true
+}
+
+
PACKAGES =+ "${PN}-webinspector ${PN}launcher-dbg ${PN}launcher libjavascriptcore"
FILES_${PN}launcher = "${bindir}/GtkLauncher"
FILES_${PN}launcher-dbg = "${bindir}/.debug/GtkLauncher"
diff --git a/meta/recipes-support/apr/apr-util_1.3.10.bb b/meta/recipes-support/apr/apr-util_1.3.10.bb
new file mode 100644
index 0000000000..930f757ffd
--- /dev/null
+++ b/meta/recipes-support/apr/apr-util_1.3.10.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "Apache Portable Runtime (APR) companion library"
+HOMEPAGE = "http://apr.apache.org/"
+SECTION = "libs"
+DEPENDS = "apr expat gdbm"
+
+LICENSE = "Apache License, Version 2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=519e0a18e03f7c023070568c14b077bb \
+ file://include/apu_version.h;endline=17;md5=806685a84e71f10c80144c48eb35df42"
+
+PR = "r0"
+
+SRC_URI = "${APACHE_MIRROR}/apr/${P}.tar.gz \
+ file://configfix.patch;patch=1 \
+ file://configure_fixes.patch;patch=1"
+
+SRC_URI[md5sum] = "82acd25cf3df8c72eba44eaee8b80c19"
+SRC_URI[sha256sum] = "7c37ac40b2351bfc23000fb6b7b54a67e0872255df315c82eb60c821bcef4b23"
+
+EXTRA_OECONF = "--with-apr=${STAGING_BINDIR_CROSS}/apr-1-config \
+ --without-odbc \
+ --with-dbm=gdbm \
+ --with-gdbm=${STAGING_DIR_HOST}${prefix} \
+ --without-sqlite2 \
+ --without-sqlite3 \
+ --with-expat=${STAGING_DIR_HOST}${prefix}"
+
+
+inherit autotools lib_package binconfig
+
+OE_BINCONFIG_EXTRA_MANGLE = " -e 's:location=source:location=installed:'"
+
+do_configure_prepend() {
+ cp ${STAGING_DATADIR}/apr/apr_rules.mk ${S}/build/rules.mk
+}
+
diff --git a/meta/recipes-support/apr/apr-util_1.3.4.bb b/meta/recipes-support/apr/apr-util_1.3.4.bb
deleted file mode 100644
index b2d6cc44f2..0000000000
--- a/meta/recipes-support/apr/apr-util_1.3.4.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-DESCRIPTION = "Apache Portable Runtime (APR) companion library"
-SECTION = "libs"
-DEPENDS = "apr expat gdbm"
-LICENSE = "Apache License, Version 2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=519e0a18e03f7c023070568c14b077bb"
-PR = "r5"
-
-SRC_URI = "${APACHE_MIRROR}/apr/${P}.tar.gz \
- file://configfix.patch;patch=1 \
- file://configure_fixes.patch;patch=1"
-
-SRC_URI[md5sum] = "a10e2ca150ff07f484c724c36142211f"
-SRC_URI[sha256sum] = "3f07ffdb18fb853290c9b83e82cd5cae66b8fbc357bd391e846c0afdd24fed7e"
-
-EXTRA_OECONF = "--with-apr=${STAGING_BINDIR_CROSS}/apr-1-config \
- --with-dbm=gdbm \
- --with-gdbm=${STAGING_DIR_HOST}${prefix} \
- --without-sqlite2 \
- --without-sqlite3 \
- --with-expat=${STAGING_DIR_HOST}${prefix}"
-
-
-inherit autotools lib_package binconfig
-
-OE_BINCONFIG_EXTRA_MANGLE = " -e 's:location=source:location=installed:'"
-
-do_configure_prepend() {
- cp ${STAGING_DATADIR}/apr/apr_rules.mk ${S}/build/rules.mk
-}
-
diff --git a/meta/recipes-support/apr/apr/buildconf_fix.patch b/meta/recipes-support/apr/apr/buildconf_fix.patch
new file mode 100644
index 0000000000..641340b2a4
--- /dev/null
+++ b/meta/recipes-support/apr/apr/buildconf_fix.patch
@@ -0,0 +1,25 @@
+Remove the new libtool detection method to avoid config failure. Poky's libtool
+has different format for "aclocaldir", and there is no elegant parsing method,
+so fall back to old detection.
+
+Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
+
+Index: apr-1.4.2/buildconf
+===================================================================
+--- apr-1.4.2.orig/buildconf 2009-11-13 06:19:49.000000000 +0800
++++ apr-1.4.2/buildconf 2010-11-29 14:39:19.000000000 +0800
+@@ -50,14 +50,6 @@
+
+ if [ -f libtool.m4 ]; then
+ ltfile=`pwd`/libtool.m4
+-elif grep all_pkgmacro_files $libtoolize > /dev/null; then
+- # libtool 2.x
+- aclocal_dir=`sed -n '/^aclocaldir=/{s/.*=//;p;q;}' < $libtoolize`
+- ltfiles=`sed -n '/^all_pkgmacro_files=/{s/.*=//;;s/"//;p;q;}' < $libtoolize`
+- for f in $ltfiles; do
+- test -f "$aclocal_dir/$f" && cp "$aclocal_dir/$f" build
+- done
+- ltfile=$aclocal_dir/libtool.m4
+ else
+ ltfindcmd="`sed -n \"/=[^\\\`]/p;/libtool_m4=/{s/.*=/echo /p;q;}\" \
+ < $libtoolize`"
diff --git a/meta/recipes-support/apr/apr/cleanup.patch b/meta/recipes-support/apr/apr/cleanup.patch
index fd74826480..47f1c42c5c 100644
--- a/meta/recipes-support/apr/apr/cleanup.patch
+++ b/meta/recipes-support/apr/apr/cleanup.patch
@@ -1,7 +1,7 @@
-Index: apr-1.3.3/build/buildcheck.sh
+Index: apr-1.4.2/build/buildcheck.sh
===================================================================
---- apr-1.3.3.orig/build/buildcheck.sh 2009-01-15 13:32:33.000000000 +0000
-+++ apr-1.3.3/build/buildcheck.sh 2009-01-15 13:33:06.000000000 +0000
+--- apr-1.4.2.orig/build/buildcheck.sh 2009-11-13 08:27:16.000000000 +0800
++++ apr-1.4.2/build/buildcheck.sh 2010-11-26 15:44:00.000000000 +0800
@@ -32,35 +32,4 @@
echo "buildconf: autoconf version $ac_version (ok)"
fi
@@ -12,7 +12,7 @@ Index: apr-1.3.3/build/buildcheck.sh
-# output is multiline from 1.5 onwards
-
-# Require libtool 1.4 or newer
--libtool=`build/PrintPath glibtool libtool libtool15 libtool14`
+-libtool=`build/PrintPath glibtool1 glibtool libtool libtool15 libtool14`
-lt_pversion=`$libtool --version 2>/dev/null|sed -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'`
-if test -z "$lt_pversion"; then
-echo "buildconf: libtool not found."
@@ -39,4 +39,3 @@ Index: apr-1.3.3/build/buildcheck.sh
-
-exit 1
+exit 0
-\ No newline at end of file
diff --git a/meta/recipes-support/apr/apr_1.3.3.bb b/meta/recipes-support/apr/apr_1.3.3.bb
deleted file mode 100644
index 26cc01fe7a..0000000000
--- a/meta/recipes-support/apr/apr_1.3.3.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-DESCRIPTION = "Apache Portable Runtime (APR) library"
-SECTION = "libs"
-LICENSE = "Apache License, Version 2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=0c35ff3c4c83b89d2f076e315caac28b"
-PR = "r5"
-
-SRC_URI = "${APACHE_MIRROR}/apr/${P}.tar.bz2 \
- file://configure_fixes.patch;patch=1 \
- file://cleanup.patch;patch=1 \
- file://configfix.patch;patch=1"
-
-SRC_URI[md5sum] = "2090c21dee4f0eb1512604127dcd158f"
-SRC_URI[sha256sum] = "d95f3b78366c86317043304864bb08cb836312c87ea7d142a4c02154e7e0dd37"
-
-inherit autotools lib_package binconfig
-
-OE_BINCONFIG_EXTRA_MANGLE = " -e 's:location=source:location=installed:'"
-
-do_configure_prepend() {
- cd ${S}
- ./buildconf
-}
-
-SYSROOT_PREPROCESS_FUNCS += "apr_sysroot_preprocess"
-
-apr_sysroot_preprocess () {
- d=${SYSROOT_DESTDIR}${STAGING_DIR_TARGET}${datadir}/apr
- install -d $d/
- cp ${S}/build/apr_rules.mk $d/
- sed -i s,apr_builddir=.*,apr_builddir=,g $d/apr_rules.mk
- sed -i s,apr_builders=.*,apr_builders=,g $d/apr_rules.mk
- sed -i s,LIBTOOL=.*,LIBTOOL=\$\(SHELL\)\ ${TARGET_PREFIX}libtool,g $d/apr_rules.mk
- sed -i s,\$\(apr_builders\),${STAGING_DATADIR}/apr/,g $d/apr_rules.mk
- cp ${S}/build/mkdir.sh $d/
- cp ${S}/build/make_exports.awk $d/
- cp ${S}/build/make_var_export.awk $d/
-}
diff --git a/meta/recipes-support/apr/apr_1.4.2.bb b/meta/recipes-support/apr/apr_1.4.2.bb
new file mode 100644
index 0000000000..ce26ef17cb
--- /dev/null
+++ b/meta/recipes-support/apr/apr_1.4.2.bb
@@ -0,0 +1,50 @@
+DESCRIPTION = "Apache Portable Runtime (APR) library"
+HOMEPAGE = "http://apr.apache.org/"
+SECTION = "libs"
+
+LICENSE = "Apache License, Version 2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0c35ff3c4c83b89d2f076e315caac28b \
+ file://include/apr_lib.h;endline=17;md5=ee42fa7575dc40580a9e01c1b75fae96"
+
+PR = "r0"
+
+SRC_URI = "${APACHE_MIRROR}/apr/${P}.tar.bz2 \
+ file://configure_fixes.patch;patch=1 \
+ file://cleanup.patch;patch=1 \
+ file://configfix.patch;patch=1 \
+ file://buildconf_fix.patch;patch=1"
+
+SRC_URI[md5sum] = "4b00e8f70c067893d075577962656b35"
+SRC_URI[sha256sum] = "2017ca700694d09d2b0b21dd7c4d195e43a48735aac88526160c6195ee8f5391"
+
+inherit autotools lib_package binconfig
+
+OE_BINCONFIG_EXTRA_MANGLE = " -e 's:location=source:location=installed:'"
+
+do_configure_prepend() {
+ cd ${S}
+ ./buildconf
+}
+
+#for some reason, build/libtool.m4 handled by buildconf still be overwritten
+#when autoconf, so handle it again.
+do_configure_append() {
+ cd ${S}
+ sed -i -e 's/LIBTOOL=\(.*\)top_build/LIBTOOL=\1apr_build/' build/libtool.m4
+ sed -i -e 's/LIBTOOL=\(.*\)top_build/LIBTOOL=\1apr_build/' build/apr_rules.mk
+}
+
+SYSROOT_PREPROCESS_FUNCS += "apr_sysroot_preprocess"
+
+apr_sysroot_preprocess () {
+ d=${SYSROOT_DESTDIR}${datadir}/apr
+ install -d $d/
+ cp ${S}/build/apr_rules.mk $d/
+ sed -i s,apr_builddir=.*,apr_builddir=,g $d/apr_rules.mk
+ sed -i s,apr_builders=.*,apr_builders=,g $d/apr_rules.mk
+ sed -i s,LIBTOOL=.*,LIBTOOL=\$\(SHELL\)\ ${TARGET_PREFIX}libtool,g $d/apr_rules.mk
+ sed -i s,\$\(apr_builders\),${STAGING_DATADIR}/apr/,g $d/apr_rules.mk
+ cp ${S}/build/mkdir.sh $d/
+ cp ${S}/build/make_exports.awk $d/
+ cp ${S}/build/make_var_export.awk $d/
+}
diff --git a/meta/recipes-support/attr/acl.inc b/meta/recipes-support/attr/acl.inc
index 68745dd728..15a87a5a0f 100644
--- a/meta/recipes-support/attr/acl.inc
+++ b/meta/recipes-support/attr/acl.inc
@@ -9,7 +9,7 @@ LIC_FILES_CHKSUM = "file://doc/COPYING;md5=c781d70ed2b4d48995b790403217a249 \
file://doc/COPYING.LGPL;md5=9e9a206917f8af112da634ce3ab41764"
DEPENDS = "attr"
-SRC_URI = "http://mirror.cinquix.com/pub/savannah/acl/${BP}.src.tar.gz"
+SRC_URI = "http://download.savannah.gnu.org/releases/acl/${BP}.src.tar.gz"
require ea-acl.inc
diff --git a/meta/recipes-support/attr/acl_2.2.49.bb b/meta/recipes-support/attr/acl_2.2.49.bb
index 2e0e0d3078..197ac7d8a7 100644
--- a/meta/recipes-support/attr/acl_2.2.49.bb
+++ b/meta/recipes-support/attr/acl_2.2.49.bb
@@ -1,6 +1,6 @@
require acl.inc
-PR = "r0"
+PR = "r1"
SRC_URI[md5sum] = "181445894cca986da9ae0099d5ce2d08"
SRC_URI[sha256sum] = "b9c7f4752e4ef4930a62fa5aa0d7efe1cba2b5a3a2d6ee2b45c0a70c72b7e5d5"
diff --git a/meta/recipes-support/attr/attr.inc b/meta/recipes-support/attr/attr.inc
index da7924631e..9a8b0f6abc 100644
--- a/meta/recipes-support/attr/attr.inc
+++ b/meta/recipes-support/attr/attr.inc
@@ -9,7 +9,7 @@ LIC_FILES_CHKSUM = "file://doc/COPYING;md5=2d0aa14b3fce4694e4f615e30186335f \
file://attr/attr.c;endline=17;md5=be0403261f0847e5f43ed5b08d19593c \
file://libattr/libattr.c;endline=17;md5=7970f77049f8fa1199fff62a7ab724fb"
-SRC_URI = "http://nongnu.askapache.com/attr/${BP}.src.tar.gz"
+SRC_URI = "http://download.savannah.gnu.org/attr/${BP}.src.tar.gz"
require ea-acl.inc
diff --git a/meta/recipes-support/attr/attr_2.4.44.bb b/meta/recipes-support/attr/attr_2.4.44.bb
index e22e158c7b..4be27d0d61 100644
--- a/meta/recipes-support/attr/attr_2.4.44.bb
+++ b/meta/recipes-support/attr/attr_2.4.44.bb
@@ -1,6 +1,6 @@
require attr.inc
-PR = "r1"
+PR = "r2"
SRC_URI += "file://memory-leak-in-copy.patch \
file://memory-leak2.patch \
diff --git a/meta/recipes-support/beecrypt/beecrypt/disable-icu-check.patch b/meta/recipes-support/beecrypt/beecrypt/disable-icu-check.patch
index 3e18a87c3f..4a2f414778 100644
--- a/meta/recipes-support/beecrypt/beecrypt/disable-icu-check.patch
+++ b/meta/recipes-support/beecrypt/beecrypt/disable-icu-check.patch
@@ -2,11 +2,11 @@ We are unable to run code at configure time in a cross environemnt, but as we
control the build we can be fairly certain this dependency is met.
JL 05/07/10
-Index: beecrypt-4.1.2/configure.ac
+Index: beecrypt-4.2.1/configure.ac
===================================================================
---- beecrypt-4.1.2.orig/configure.ac 2004-12-21 11:37:56.000000000 +0000
-+++ beecrypt-4.1.2/configure.ac 2010-07-05 16:09:50.390083494 +0100
-@@ -243,32 +243,6 @@
+--- beecrypt-4.2.1.orig/configure.ac 2010-11-26 17:12:25.000000000 +0800
++++ beecrypt-4.2.1/configure.ac 2010-11-26 17:12:30.000000000 +0800
+@@ -292,32 +292,6 @@
# Predefines and checks for C++ API support
AH_TEMPLATE([CPPGLUE],[Define to 1 if you want to include the C++ code])
@@ -36,6 +36,6 @@ Index: beecrypt-4.1.2/configure.ac
- AC_LANG_POP(C)
-fi
-
+ AM_CONDITIONAL([WITH_CPLUSPLUS],[test "$ac_with_cplusplus" = yes])
+
if test "$ac_with_cplusplus" = yes ; then
- AC_DEFINE([CPPGLUE],1)
- fi
diff --git a/meta/recipes-support/beecrypt/beecrypt/fix-security.patch b/meta/recipes-support/beecrypt/beecrypt/fix-security.patch
index 6103562e0a..f28e393ca7 100644
--- a/meta/recipes-support/beecrypt/beecrypt/fix-security.patch
+++ b/meta/recipes-support/beecrypt/beecrypt/fix-security.patch
@@ -3,20 +3,38 @@ project:
http://www.mail-archive.com/fink-commits@lists.sourceforge.net/msg75742.html
JL 05/07/10
-Index: beecrypt-4.1.2/c++/security/Security.h
+Index: beecrypt-4.2.1/include/beecrypt/c++/beeyond/BeeCertificate.h
===================================================================
---- beecrypt-4.1.2.orig/c++/security/Security.h 2010-07-05 17:15:34.811273306 +0100
-+++ beecrypt-4.1.2/c++/security/Security.h 2010-07-05 17:15:38.696388531 +0100
-@@ -75,8 +75,6 @@
+--- beecrypt-4.2.1.orig/include/beecrypt/c++/beeyond/BeeCertificate.h 2010-11-26 17:22:57.000000000 +0800
++++ beecrypt-4.2.1/include/beecrypt/c++/beeyond/BeeCertificate.h 2010-11-26 17:23:01.000000000 +0800
+@@ -147,13 +147,13 @@
+ mutable bytearray* enc;
+
+ BeeCertificate();
+- BeeCertificate(InputStream& in) throw (IOException);
+
+ void encodeTBS(DataOutputStream& out) const throw (IOException);
+
+ bytearray* encodeTBS() const throw (CertificateEncodingException);
+
public:
- typedef vector<const Provider*> provider_vector;
- typedef provider_vector::iterator provider_vector_iterator;
--
++ BeeCertificate(InputStream& in) throw (IOException);
+ BeeCertificate(const BeeCertificate&) throw (CloneNotSupportedException);
+ virtual ~BeeCertificate();
+
+Index: beecrypt-4.2.1/include/beecrypt/c++/security/Security.h
+===================================================================
+--- beecrypt-4.2.1.orig/include/beecrypt/c++/security/Security.h 2010-11-26 17:20:55.000000000 +0800
++++ beecrypt-4.2.1/include/beecrypt/c++/security/Security.h 2010-11-26 17:21:36.000000000 +0800
+@@ -61,7 +61,6 @@
+ friend class SecureRandom;
+ friend class Signature;
+
- private:
struct spi
{
Object* cspi;
-@@ -91,6 +89,7 @@
+@@ -76,6 +75,7 @@
static spi* getSpi(const String& algo, const String& type, const Provider&) throw (NoSuchAlgorithmException);
static spi* getFirstSpi(const String& type);
@@ -24,20 +42,3 @@ Index: beecrypt-4.1.2/c++/security/Security.h
static const String& getKeyStoreDefault();
static bool _init;
-Index: beecrypt-4.1.2/c++/beeyond/BeeCertificate.h
-===================================================================
---- beecrypt-4.1.2.orig/c++/beeyond/BeeCertificate.h 2004-11-03 09:37:27.000000000 +0000
-+++ beecrypt-4.1.2/c++/beeyond/BeeCertificate.h 2010-07-05 17:16:25.216332324 +0100
-@@ -150,11 +150,11 @@
- mutable String* str;
-
- BeeCertificate();
-- BeeCertificate(InputStream& in) throw (IOException);
-
- bytearray* encodeTBS() const;
-
- public:
-+ BeeCertificate(InputStream& in) throw (IOException);
- BeeCertificate(const BeeCertificate&);
- virtual ~BeeCertificate();
-
diff --git a/meta/recipes-support/beecrypt/beecrypt/x64fix.patch b/meta/recipes-support/beecrypt/beecrypt/x64fix.patch
deleted file mode 100644
index ac02425d51..0000000000
--- a/meta/recipes-support/beecrypt/beecrypt/x64fix.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Don't have 64 appended to the libdir for 64bit platforms.
-
-JL 05/07/10
-Index: beecrypt-4.1.2/configure.ac
-===================================================================
---- beecrypt-4.1.2.orig/configure.ac 2010-07-05 16:39:43.000000000 +0100
-+++ beecrypt-4.1.2/configure.ac 2010-07-05 16:40:27.521082866 +0100
-@@ -585,15 +585,6 @@
-
- # Check where to install the libraries
- bc_libalt=
--case $target_os in
--linux*)
-- case $bc_target_arch in
-- powerpc64 | s390x | x86_64)
-- bc_libalt="64"
-- ;;
-- esac
-- ;;
--esac
- AC_SUBST(LIBALT,$bc_libalt)
-
- # Generate output files.
diff --git a/meta/recipes-support/beecrypt/beecrypt_4.1.2.bb b/meta/recipes-support/beecrypt/beecrypt_4.1.2.bb
deleted file mode 100644
index e381a6bfa9..0000000000
--- a/meta/recipes-support/beecrypt/beecrypt_4.1.2.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-# Beecrypt OE build file
-# Copyright (C) 2004-2005, Advanced Micro Devices, Inc. All Rights Reserved
-# Released under the MIT license (see packages/COPYING)
-
-DESCRIPTION="Beecrypt is a general-purpose cryptography library."
-HOMEPAGE="http://sourceforge.net/projects/beecrypt"
-SRC_URI="${SOURCEFORGE_MIRROR}/beecrypt/beecrypt-${PV}.tar.gz \
- file://x64fix.patch \
- file://disable-icu-check.patch \
- file://fix-security.patch"
-
-SRC_URI[md5sum] = "820d26437843ab0a6a8a5151a73a657c"
-SRC_URI[sha256sum] = "f29eb246947677a9e7870521e3d576fd0d91a7072210a4404ed137e40cfc18fd"
-LICENSE = "GPLv2&LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=9894370afd5dfe7d02b8d14319e729a1 \
- file://COPYING.LIB;md5=dcf3c825659e82539645da41a7908589"
-DEPENDS = "icu"
-
-PR = "r0"
-
-inherit autotools
-acpaths=""
-
-EXTRA_OECONF="--with-arch=${TARGET_ARCH} --without-python --enable-shared --enable-static"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-support/beecrypt/beecrypt_4.2.1.bb b/meta/recipes-support/beecrypt/beecrypt_4.2.1.bb
new file mode 100644
index 0000000000..d4c7972167
--- /dev/null
+++ b/meta/recipes-support/beecrypt/beecrypt_4.2.1.bb
@@ -0,0 +1,27 @@
+# Beecrypt OE build file
+# Copyright (C) 2004-2005, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+DESCRIPTION="Beecrypt is a general-purpose cryptography library."
+HOMEPAGE="http://sourceforge.net/projects/beecrypt"
+SRC_URI="${SOURCEFORGE_MIRROR}/beecrypt/beecrypt-${PV}.tar.gz \
+ file://disable-icu-check.patch \
+ file://fix-security.patch"
+
+SRC_URI[md5sum] = "8441c014170823f2dff97e33df55af1e"
+SRC_URI[sha256sum] = "286f1f56080d1a6b1d024003a5fa2158f4ff82cae0c6829d3c476a4b5898c55d"
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=9894370afd5dfe7d02b8d14319e729a1 \
+ file://COPYING.LIB;md5=dcf3c825659e82539645da41a7908589 \
+ file://include/beecrypt/beecrypt.h;endline=20;md5=47a93eef539aac237eef86297a4d71c1"
+
+DEPENDS = "icu"
+
+PR = "r0"
+
+inherit autotools
+acpaths=""
+
+EXTRA_OECONF="--without-python --enable-shared --enable-static --disable-openmp"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-support/boost/boost-jam-native.inc b/meta/recipes-support/boost/boost-jam-native.inc
index fe181ad00f..f0fac09361 100644
--- a/meta/recipes-support/boost/boost-jam-native.inc
+++ b/meta/recipes-support/boost/boost-jam-native.inc
@@ -10,6 +10,8 @@ PRIORITY = "optional"
LICENSE = "Boost Software License"
PR = "r0"
+LIC_FILES_CHKSUM = "file://LICENSE_1_0.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
+
SRC_URI = "${SOURCEFORGE_MIRROR}/boost/boost-jam-${PV}.tgz"
S = "${WORKDIR}/boost-jam-${PV}"
diff --git a/meta/recipes-support/createrepo/createrepo/fix-native-install.patch b/meta/recipes-support/createrepo/createrepo/fix-native-install.patch
new file mode 100644
index 0000000000..2ed2202e77
--- /dev/null
+++ b/meta/recipes-support/createrepo/createrepo/fix-native-install.patch
@@ -0,0 +1,161 @@
+Date: Jan 31, 2011
+
+There are two fixes:
+ 1. -native needs to customize prefix
+ 2. needs to change python reference in binaries
+
+Signed-off-by: Qing He <qing.he@intel.com>
+
+diff --git a/Makefile b/Makefile
+index b2d1a32..3c3639f 100644
+--- a/Makefile
++++ b/Makefile
+@@ -3,22 +3,22 @@ VERSION = 0.4.11
+ SHELL = /bin/sh
+ top_srcdir = .
+ srcdir = .
+-prefix = /usr
+-exec_prefix = ${prefix}
+-
+-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
+-infodir = ${prefix}/info
++prefix ?= /usr
++exec_prefix ?= ${prefix}
++
++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
++infodir ?= ${prefix}/info
+ docdir =
+-includedir = ${prefix}/include
++includedir ?= ${prefix}/include
+ oldincludedir = /usr/include
+-mandir = ${prefix}/share/man
++mandir ?= ${prefix}/share/man
+
+ pkgdatadir = $(datadir)/$(PACKAGE)
+ pkglibdir = $(libdir)/$(PACKAGE)
+diff --git a/bin/Makefile b/bin/Makefile
+index 52c1f50..e30610e 100644
+--- a/bin/Makefile
++++ b/bin/Makefile
+@@ -1,22 +1,22 @@
+ SHELL = /bin/sh
+ top_srcdir = ..
+ srcdir = ../bin
+-prefix = /usr
+-exec_prefix = ${prefix}
+-
+-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
+-infodir = ${prefix}/info
++prefix ?= /usr
++exec_prefix ?= ${prefix}
++
++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
++infodir ?= ${prefix}/info
+ docdir =
+-includedir = ${prefix}/include
++includedir ?= ${prefix}/include
+ oldincludedir = /usr/include
+-mandir = ${prefix}/man
++mandir ?= ${prefix}/man
+
+ pkgdatadir = $(datadir)/$(PACKAGE)
+ pkglibdir = $(libdir)/$(PACKAGE)
+@@ -40,8 +40,11 @@ all: $(srcdir)/$(PACKAGE)
+
+
+ install: all installdirs
+- $(INSTALL_BIN) $(srcdir)/$(PACKAGE) $(DESTDIR)$(bindir)/$(PACKAGE)
+- $(INSTALL_BIN) $(srcdir)/modifyrepo $(DESTDIR)$(bindir)/modifyrepo
++ sed -e "s|@DATADIR@|$(datadir)|" $(srcdir)/$(PACKAGE) > $(srcdir)/$(PACKAGE).tmp
++ sed -e "s|@DATADIR@|$(datadir)|" $(srcdir)/modifyrepo > $(srcdir)/modifyrepo.tmp
++ $(INSTALL_BIN) $(srcdir)/$(PACKAGE).tmp $(DESTDIR)$(bindir)/$(PACKAGE)
++ $(INSTALL_BIN) $(srcdir)/modifyrepo.tmp $(DESTDIR)$(bindir)/modifyrepo
++ rm -f $(srcdir)/$(PACKAGE).tmp $(srcdir)/modifyrepo.tmp
+
+
+ uninstall:
+diff --git a/bin/createrepo b/bin/createrepo
+index b0de515..eaacb39 100755
+--- a/bin/createrepo
++++ b/bin/createrepo
+@@ -1,2 +1,2 @@
+ #!/bin/sh
+-exec /usr/share/createrepo/genpkgmetadata.py "$@"
++exec @DATADIR@/createrepo/genpkgmetadata.py "$@"
+diff --git a/bin/modifyrepo b/bin/modifyrepo
+index c9732d8..6f7c1d4 100755
+--- a/bin/modifyrepo
++++ b/bin/modifyrepo
+@@ -1,2 +1,2 @@
+ #!/bin/sh
+-exec /usr/share/createrepo/modifyrepo.py "$@"
++exec @DATADIR@/createrepo/modifyrepo.py "$@"
+diff --git a/docs/Makefile b/docs/Makefile
+index 0a41179..e128c85 100644
+--- a/docs/Makefile
++++ b/docs/Makefile
+@@ -1,22 +1,22 @@
+ SHELL = /bin/sh
+ top_srcdir = ..
+ srcdir = ../docs
+-prefix = /usr
+-exec_prefix = ${prefix}
+-
+-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
+-infodir = ${prefix}/info
++prefix ?= /usr
++exec_prefix ?= ${prefix}
++
++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
++infodir ?= ${prefix}/info
+ docdir =
+-includedir = ${prefix}/include
++includedir ?= ${prefix}/include
+ oldincludedir = /usr/include
+-mandir = ${datadir}/man
++mandir ?= ${datadir}/man
+
+ pkgdatadir = $(datadir)/$(PACKAGE)
+ pkglibdir = $(libdir)/$(PACKAGE)
diff --git a/meta/recipes-support/createrepo/createrepo_0.4.11.bb b/meta/recipes-support/createrepo/createrepo_0.4.11.bb
new file mode 100644
index 0000000000..ba1d04b2bd
--- /dev/null
+++ b/meta/recipes-support/createrepo/createrepo_0.4.11.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "createrepo creates rpm-metadata for rpms to build the repository"
+HOMEPAGE = "http://createrepo.baseurl.org/"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=18810669f13b87348459e611d31ab760"
+
+PR = "r1"
+
+SRC_URI= "http://createrepo.baseurl.org/download/${BP}.tar.gz \
+ file://fix-native-install.patch \
+ "
+
+SRC_URI[md5sum] = "3e9ccf4abcffe3f49af078c83611eda2"
+SRC_URI[sha256sum] = "a73ae11a0dcde8bde36d900bc3f7f8f1083ba752c70a5c61b72d1e1e7608f21b"
+
+BBCLASSEXTEND = "native"
+
+do_install () {
+ oe_runmake -e 'DESTDIR=${D}' install
+}
diff --git a/meta/recipes-support/db/db/arm-thumb-mutex.patch b/meta/recipes-support/db/db/arm-thumb-mutex.patch
deleted file mode 100644
index acd446fcd8..0000000000
--- a/meta/recipes-support/db/db/arm-thumb-mutex.patch
+++ /dev/null
@@ -1,36 +0,0 @@
---- db-4.3.29-dist/../dbinc/mutex.h 2005-11-15 07:33:27.761042518 -0800
-+++ db-4.3.29-dist/../dbinc/mutex.h 2005-11-15 07:55:24.823920060 -0800
-@@ -470,6 +470,25 @@
- #ifdef LOAD_ACTUAL_MUTEX_CODE
- #define MUTEX_SET_TEST 1 /* gcc/arm: 0 is clear, 1 is set. */
-
-+#if defined __thumb__
-+#define MUTEX_SET(tsl) ({ \
-+ int __r, __p; \
-+ asm volatile( \
-+ ".align 2\n\t" \
-+ "bx pc\n\t" \
-+ "nop\n\t" \
-+ ".arm\n\t" \
-+ "swpb %0, %2, [%3]\n\t" \
-+ "eor %0, %0, #1\n\t" \
-+ "orr %1, pc, #1\n\t" \
-+ "bx %1\n\t" \
-+ ".force_thumb" \
-+ : "=&r" (__r), "=r" (__p) \
-+ : "r" (1), "r" (tsl) \
-+ ); \
-+ __r & 1; \
-+})
-+#else
- #define MUTEX_SET(tsl) ({ \
- int __r; \
- asm volatile( \
-@@ -480,6 +499,7 @@
- ); \
- __r & 1; \
- })
-+#endif
-
- #define MUTEX_UNSET(tsl) (*(volatile tsl_t *)(tsl) = 0)
- #define MUTEX_INIT(tsl) MUTEX_UNSET(tsl)
diff --git a/meta/recipes-support/db/db/arm-thumb-mutex_db5.patch b/meta/recipes-support/db/db/arm-thumb-mutex_db5.patch
new file mode 100644
index 0000000000..37d0d93abd
--- /dev/null
+++ b/meta/recipes-support/db/db/arm-thumb-mutex_db5.patch
@@ -0,0 +1,36 @@
+--- db-5.1.19/../src/dbinc/mutex_int.h.orig 2011-01-05 19:21:42.181805366 -0600
++++ db-5.1.19/../src/dbinc/mutex_int.h 2011-01-05 19:24:53.141853117 -0600
+@@ -474,6 +474,25 @@
+
+ #ifdef LOAD_ACTUAL_MUTEX_CODE
+ /* gcc/arm: 0 is clear, 1 is set. */
++#if defined __thumb__
++#define MUTEX_SET(tsl) ({ \
++ int __r, __p; \
++ __asm__ volatile( \
++ ".align 2\n\t" \
++ "bx pc\n\t" \
++ "nop\n\t" \
++ ".arm\n\t" \
++ "swpb %0, %2, [%3]\n\t" \
++ "eor %0, %0, #1\n\t" \
++ "orr %1, pc, #1\n\t" \
++ "bx %1\n\t" \
++ ".force_thumb" \
++ : "=&r" (__r), "=r" (__p) \
++ : "r" (1), "r" (tsl) \
++ ); \
++ __r & 1; \
++})
++#else
+ #define MUTEX_SET(tsl) ({ \
+ int __r; \
+ __asm__ volatile( \
+@@ -484,6 +503,7 @@
+ ); \
+ __r & 1; \
+ })
++#endif
+
+ #define MUTEX_UNSET(tsl) (*(volatile tsl_t *)(tsl) = 0)
+ #define MUTEX_INIT(tsl) (MUTEX_UNSET(tsl), 0)
diff --git a/meta/recipes-support/db/db/configure_fixes.patch b/meta/recipes-support/db/db/configure_fixes.patch
deleted file mode 100644
index 80aa0e7c1c..0000000000
--- a/meta/recipes-support/db/db/configure_fixes.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-If LD is a binary name + parameters db will fail to work out its GNU ld
-and disable shared libraries. We don't want this.
-
-RP - 22/11/2007
-
-Index: dist/configure
-===================================================================
---- dist.orig/configure 2007-11-23 00:47:27.000000000 +0000
-+++ dist/configure 2007-11-23 00:53:22.000000000 +0000
-@@ -5658,7 +5661,7 @@ if test "${lt_cv_prog_gnu_ld+set}" = set
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- # I'd rather use --version here, but apparently some GNU ld's only accept -v.
--case `"$LD" -v 2>&1 </dev/null` in
-+case `$LD -v 2>&1 </dev/null` in
- *GNU* | *'with BFD'*)
- lt_cv_prog_gnu_ld=yes
- ;;
diff --git a/meta/recipes-support/db/db_4.2.52.bb b/meta/recipes-support/db/db_4.2.52.bb
deleted file mode 100644
index bd0511dbe6..0000000000
--- a/meta/recipes-support/db/db_4.2.52.bb
+++ /dev/null
@@ -1,100 +0,0 @@
-# Version 4 of the Berkeley DB from Sleepycat
-#
-# At present this package only installs the DB code
-# itself (shared libraries, .a in the dev package),
-# documentation and headers.
-#
-# The headers have the same names as those as v3
-# of the DB, only one version can be used *for dev*
-# at once - DB3 and DB4 can both be installed on the
-# same system at the same time if really necessary.
-SECTION = "libs"
-DESCRIPTION = "Berkeley DB v4."
-HOMEPAGE = "http://www.oracle.com/technology/products/berkeley-db/db/index.html"
-LICENSE = "BSD Sleepycat"
-VIRTUAL_NAME = "virtual/db"
-VIRTUAL_NAME_virtclass-native = "virtual/db-native"
-
-CONFLICTS = "db3"
-CONFLICTS_virtclass-native = "db3-native"
-PR = "r8"
-
-SRC_URI = "http://download.oracle.com/berkeley-db/db-${PV}.tar.gz \
- file://configure_fixes.patch;patch=1 "
-
-SRC_URI[md5sum] = "8b5cff6eb83972afdd8e0b821703c33c"
-SRC_URI[sha256sum] = "f4bddd8d1b4cde0daf5e13e3493ed62a25b736b0bf258e1d929e47bc6a82a28c"
-#SRC_URI_MD5 = "http://downloads.sleepycat.com/db-${PV}.tar.gz.md5"
-#TODO SRC_URI += "file://arm-thumb-mutex.patch;patch=1"
-
-inherit autotools
-
-# Put virtual/db in any appropriate provider of a
-# relational database, use it as a dependency in
-# place of a specific db and use:
-#
-# PREFERRED_PROVIDER_virtual/db
-#
-# to select the correct db in the build (distro) .conf
-PROVIDES += "${VIRTUAL_NAME}"
-
-# bitbake isn't quite clever enough to deal with sleepycat,
-# the distribution sits in the expected directory, but all
-# the builds must occur from a sub-directory. The following
-# persuades bitbake to go to the right place
-S = "${WORKDIR}/db-${PV}/dist"
-B = "${WORKDIR}/db-${PV}/build_unix"
-
-# The executables go in a separate package - typically there
-# is no need to install these unless doing real database
-# management on the system.
-PACKAGES += " ${PN}-bin"
-
-# Package contents
-FILES_${PN} = "${libdir}/libdb-4*so*"
-FILES_${PN}-bin = "${bindir}/*"
-# The dev package has the .so link (as in db3) and the .a's -
-# it is therefore incompatible (cannot be installed at the
-# same time) as the db3 package
-FILES_${PN}-dev = "${includedir} ${libdir}/*"
-
-#configuration - set in local.conf to override
-DB4_CONFIG ?= " --disable-cryptography --disable-queue --disable-replication --disable-verify --enable-hash"
-EXTRA_OECONF = "${DB4_CONFIG}"
-
-# Override the MUTEX setting here, the POSIX library is
-# the default - "POSIX/pthreads/library".
-# Don't ignore the nice SWP instruction on the ARM:
-# These enable the ARM assembler mutex code, this won't
-# work with thumb compilation...
-ARM_MUTEX = "--with-mutex=ARM/gcc-assembly"
-MUTEX = ""
-MUTEX_arm = "${ARM_MUTEX}"
-MUTEX_armeb = "${ARM_MUTEX}"
-EXTRA_OECONF += "${MUTEX}"
-
-ARM_INSTRUCTION_SET = "arm"
-
-# Cancel the site stuff - it's set for db3 and destroys the
-# configure.
-CONFIG_SITE = ""
-do_configure() {
- rm -f ${S}/config.sub
- cp ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}/config.sub
- oe_runconf
-}
-
-do_install_append() {
- # The docs end up in /usr/docs - not right.
- if test -d "${D}/${prefix}/docs"
- then
- mkdir -p "${D}/${datadir}"
- test ! -d "${D}/${docdir}" || rm -rf "${D}/${docdir}"
- mv "${D}/${prefix}/docs" "${D}/${docdir}"
- fi
-}
-
-# The db package contains symlinks that trip up insane
-INSANE_SKIP_db = "1"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/db/db_4.3.29.bb b/meta/recipes-support/db/db_4.3.29.bb
deleted file mode 100644
index 04a6680f07..0000000000
--- a/meta/recipes-support/db/db_4.3.29.bb
+++ /dev/null
@@ -1,89 +0,0 @@
-# Has issues with eds
-DEFAULT_PREFERENCE = "-1"
-
-# Version 4 of the Berkeley DB from Sleepycat
-#
-# At present this package only installs the DB code
-# itself (shared libraries, .a in the dev package),
-# documentation and headers.
-#
-# The headers have the same names as those as v3
-# of the DB, only one version can be used *for dev*
-# at once - DB3 and DB4 can both be installed on the
-# same system at the same time if really necessary.
-SECTION = "libs"
-DESCRIPTION = "Berkeley DB v4."
-HOMEPAGE = "http://www.oracle.com/technology/products/berkeley-db/db/index.html"
-LICENSE = "BSD Sleepycat"
-VIRTUAL_NAME ?= "virtual/db"
-CONFLICTS = "db3"
-PR = "r8"
-
-SRC_URI = "http://download.oracle.com/berkeley-db/db-${PV}.tar.gz"
-#SRC_URI_MD5 = "http://downloads.sleepycat.com/db-${PV}.tar.gz.md5"
-SRC_URI += "file://arm-thumb-mutex.patch;patch=1"
-
-inherit autotools
-
-# Put virtual/db in any appropriate provider of a
-# relational database, use it as a dependency in
-# place of a specific db and use:
-#
-# PREFERRED_PROVIDER_virtual/db
-#
-# to select the correct db in the build (distro) .conf
-PROVIDES += "${VIRTUAL_NAME}"
-
-# bitbake isn't quite clever enough to deal with sleepycat,
-# the distribution sits in the expected directory, but all
-# the builds must occur from a sub-directory. The following
-# persuades bitbake to go to the right place
-S = "${WORKDIR}/db-${PV}/dist"
-B = "${WORKDIR}/db-${PV}/build_unix"
-
-# The executables go in a separate package - typically there
-# is no need to install these unless doing real database
-# management on the system.
-PACKAGES += " ${PN}-bin"
-
-# Package contents
-FILES_${PN} = "${libdir}/libdb-4*so*"
-FILES_${PN}-bin = "${bindir}/*"
-# The dev package has the .so link (as in db3) and the .a's -
-# it is therefore incompatible (cannot be installed at the
-# same time) as the db3 package
-FILES_${PN}-dev = "${includedir} ${libdir}/*"
-
-#configuration - set in local.conf to override
-# All the --disable-* options replace --enable-smallbuild, which breaks a bunch of stuff (eg. postfix)
-DB4_CONFIG ?= "--enable-o_direct --disable-cryptography --disable-queue --disable-replication --disable-statistics --disable-verify --enable-compat185"
-
-EXTRA_OECONF = "${DB4_CONFIG}"
-
-# Override the MUTEX setting here, the POSIX library is
-# the default - "POSIX/pthreads/library".
-# Don't ignore the nice SWP instruction on the ARM:
-# These enable the ARM assembler mutex code, this won't
-# work with thumb compilation...
-ARM_MUTEX = "--with-mutex=ARM/gcc-assembly"
-MUTEX = ""
-MUTEX_arm = "${ARM_MUTEX}"
-MUTEX_armeb = "${ARM_MUTEX}"
-EXTRA_OECONF += "${MUTEX}"
-
-# Cancel the site stuff - it's set for db3 and destroys the
-# configure.
-CONFIG_SITE = ""
-do_configure() {
- oe_runconf
-}
-
-do_install_append() {
- # The docs end up in /usr/docs - not right.
- if test -d "${D}/${prefix}/docs"
- then
- mkdir -p "${D}/${datadir}"
- test ! -d "${D}/${docdir}" || rmdir "${D}/${docdir}"
- mv "${D}/${prefix}/docs" "${D}/${docdir}"
- fi
-}
diff --git a/meta/recipes-support/db/db_5.1.19.bb b/meta/recipes-support/db/db_5.1.19.bb
new file mode 100644
index 0000000000..919e532be1
--- /dev/null
+++ b/meta/recipes-support/db/db_5.1.19.bb
@@ -0,0 +1,104 @@
+# Version 5 of the Berkeley DB from Sleepycat
+#
+# At present this package only installs the DB code
+# itself (shared libraries, .a in the dev package),
+# documentation and headers.
+#
+# The headers have the same names as those as v3
+# of the DB, only one version can be used *for dev*
+# at once - DB3 and DB5 can both be installed on the
+# same system at the same time if really necessary.
+SECTION = "libs"
+DESCRIPTION = "Berkeley DB v5."
+HOMEPAGE = "http://www.oracle.com/technology/products/berkeley-db/db/index.html"
+LICENSE = "BSD Sleepycat"
+VIRTUAL_NAME ?= "virtual/db"
+CONFLICTS = "db3"
+PR = "r1"
+
+SRC_URI = "http://download.oracle.com/berkeley-db/db-${PV}.tar.gz"
+#SRC_URI_MD5 = "http://downloads.sleepycat.com/db-${PV}.tar.gz.md5"
+SRC_URI += "file://arm-thumb-mutex_db5.patch;patch=1"
+
+SRC_URI[md5sum] = "76fcbfeebfcd09ba0b4d96bfdf8d884d"
+SRC_URI[sha256sum] = "0194d4ca9266ba1a1c0bfbc233b18bfd05f63163453c81ebcdfdc7112d5ac850"
+
+LIC_FILES_CHKSUM = "file://../LICENSE;md5=86f9294f39f38ef9e89690bcd2320e7a"
+
+inherit autotools
+
+# Put virtual/db in any appropriate provider of a
+# relational database, use it as a dependency in
+# place of a specific db and use:
+#
+# PREFERRED_PROVIDER_virtual/db
+#
+# to select the correct db in the build (distro) .conf
+PROVIDES += "${VIRTUAL_NAME}"
+
+# bitbake isn't quite clever enough to deal with sleepycat,
+# the distribution sits in the expected directory, but all
+# the builds must occur from a sub-directory. The following
+# persuades bitbake to go to the right place
+S = "${WORKDIR}/db-${PV}/dist"
+B = "${WORKDIR}/db-${PV}/build_unix"
+
+# The executables go in a separate package - typically there
+# is no need to install these unless doing real database
+# management on the system.
+PACKAGES += " ${PN}-bin"
+
+# Package contents
+FILES_${PN} = "${libdir}/libdb-5*so*"
+FILES_${PN}-bin = "${bindir}/*"
+# The dev package has the .so link (as in db3) and the .a's -
+# it is therefore incompatible (cannot be installed at the
+# same time) as the db3 package
+FILES_${PN}-dev = "${includedir} ${libdir}/*"
+
+#configuration - set in local.conf to override
+# All the --disable-* options replace --enable-smallbuild, which breaks a bunch of stuff (eg. postfix)
+DB5_CONFIG ?= "--enable-o_direct --disable-cryptography --disable-queue --disable-replication --disable-statistics --disable-verify --disable-compat185 --disable-sql"
+
+EXTRA_OECONF = "${DB5_CONFIG}"
+
+# Override the MUTEX setting here, the POSIX library is
+# the default - "POSIX/pthreads/library".
+# Don't ignore the nice SWP instruction on the ARM:
+# These enable the ARM assembler mutex code, this won't
+# work with thumb compilation...
+ARM_MUTEX = "--with-mutex=ARM/gcc-assembly"
+MUTEX = ""
+MUTEX_arm = "${ARM_MUTEX}"
+MUTEX_armeb = "${ARM_MUTEX}"
+EXTRA_OECONF += "${MUTEX}"
+
+# Cancel the site stuff - it's set for db3 and destroys the
+# configure.
+CONFIG_SITE = ""
+do_configure() {
+ oe_runconf
+}
+
+do_install_append() {
+ mkdir -p ${D}/${includedir}/db51
+ #mv ${D}/${includedir}/db_185.h ${D}/${includedir}/db51/.
+ mv ${D}/${includedir}/db.h ${D}/${includedir}/db51/.
+ mv ${D}/${includedir}/db_cxx.h ${D}/${includedir}/db51/.
+ #mv ${D}/${includedir}/dbsql.h ${D}/${includedir}/db51/.
+ #ln -s db51/db_185.h ${D}/${includedir}/db_185.h
+ ln -s db51/db.h ${D}/${includedir}/db.h
+ ln -s db51/db_cxx.h ${D}/${includedir}/db_cxx.h
+ #ln -s db51/dbsql.h ${D}/${includedir}/dbsql.h
+
+ # The docs end up in /usr/docs - not right.
+ if test -d "${D}/${prefix}/docs"
+ then
+ mkdir -p "${D}/${datadir}"
+ test ! -d "${D}/${docdir}" || rm -rf "${D}/${docdir}"
+ mv "${D}/${prefix}/docs" "${D}/${docdir}"
+ fi
+}
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/meta/recipes-support/enchant/enchant_1.6.0.bb b/meta/recipes-support/enchant/enchant_1.6.0.bb
index 7df4f9738b..a3ef37912a 100644
--- a/meta/recipes-support/enchant/enchant_1.6.0.bb
+++ b/meta/recipes-support/enchant/enchant_1.6.0.bb
@@ -6,11 +6,11 @@ LICENSE = "LGPLv2.1+"
LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=dfcbabf9131dc9a95febef6753a2958b \
file://src/enchant.h;beginline=1;endline=29;md5=8d881caa1d37523567e1d8f726675a18"
DEPENDS = "aspell glib-2.0"
-RDEPENDS = "aspell"
+RDEPENDS_${PN} = "aspell"
inherit autotools pkgconfig
-PR = "r0"
+PR = "r1"
SRC_URI = "http://www.abisource.com/downloads/enchant/${PV}/enchant-${PV}.tar.gz"
diff --git a/meta/recipes-support/gnutls/gnutls-2.8.6/configure-fix.patch b/meta/recipes-support/gnutls/gnutls-2.10.4/configure-fix.patch
index 247e324564..247e324564 100644
--- a/meta/recipes-support/gnutls/gnutls-2.8.6/configure-fix.patch
+++ b/meta/recipes-support/gnutls/gnutls-2.10.4/configure-fix.patch
diff --git a/meta/recipes-support/gnutls/gnutls-2.8.6/gnutls-openssl.patch b/meta/recipes-support/gnutls/gnutls-2.10.4/gnutls-openssl.patch
index 413de06472..413de06472 100644
--- a/meta/recipes-support/gnutls/gnutls-2.8.6/gnutls-openssl.patch
+++ b/meta/recipes-support/gnutls/gnutls-2.10.4/gnutls-openssl.patch
diff --git a/meta/recipes-support/gnutls/gnutls-2.8.6/gnutls-texinfo-euro.patch b/meta/recipes-support/gnutls/gnutls-2.10.4/gnutls-texinfo-euro.patch
index a2d2f03870..a2d2f03870 100644
--- a/meta/recipes-support/gnutls/gnutls-2.8.6/gnutls-texinfo-euro.patch
+++ b/meta/recipes-support/gnutls/gnutls-2.10.4/gnutls-texinfo-euro.patch
diff --git a/meta/recipes-support/gnutls/gnutls_2.10.4.bb b/meta/recipes-support/gnutls/gnutls_2.10.4.bb
new file mode 100644
index 0000000000..3924ecdf9a
--- /dev/null
+++ b/meta/recipes-support/gnutls/gnutls_2.10.4.bb
@@ -0,0 +1,10 @@
+require gnutls.inc
+
+PR = "r0"
+
+SRC_URI += "file://gnutls-openssl.patch \
+ file://gnutls-texinfo-euro.patch \
+ file://configure-fix.patch"
+
+SRC_URI[md5sum] = "4e1517084018a8b1fdc96daabea40528"
+SRC_URI[sha256sum] = "b8bfe36450fe671e99db5ff1e44e6b65fda8a79cacd9e77d550eff7da3745fc8"
diff --git a/meta/recipes-support/gnutls/gnutls_2.8.6.bb b/meta/recipes-support/gnutls/gnutls_2.8.6.bb
deleted file mode 100644
index 59fc2266a0..0000000000
--- a/meta/recipes-support/gnutls/gnutls_2.8.6.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require gnutls.inc
-
-PR = "r0"
-
-SRC_URI += "file://gnutls-openssl.patch \
- file://gnutls-texinfo-euro.patch \
- file://configure-fix.patch"
-
-SRC_URI[md5sum] = "eb0a6d7d3cb9ac684d971c14f9f6d3ba"
-SRC_URI[sha256sum] = "d6f846a7064af3ee2c9aebd65dcee76953b767170cbcd719e990ed6b9688a356"
diff --git a/meta/recipes-support/gnutls/libtasn1_2.8.bb b/meta/recipes-support/gnutls/libtasn1_2.8.bb
deleted file mode 100644
index a10d2ace5c..0000000000
--- a/meta/recipes-support/gnutls/libtasn1_2.8.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-DESCRIPTION = "Library for ASN.1 and DER manipulation"
-HOMEPAGE = "http://www.gnu.org/software/libtasn1/"
-
-LICENSE = "GPLv3+ & LGPLv2.1+"
-LICENSE_${PN}-bin = "GPLv3+"
-LICENSE_${PN} = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
- file://COPYING.LIB;md5=a6f89e2100d9b6cdffcea4f398e37343 \
- file://README;endline=8;md5=c3803a3e8ca5ab5eb1e5912faa405351"
-
-#RREPLACES_${PN}-bin = "libtasn1 (<< 2.7)"
-
-PR = "r0"
-
-SRC_URI = "ftp://ftp.gnutls.org/pub/gnutls/libtasn1/libtasn1-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "53fd164f8670e55a9964666990fb358f"
-SRC_URI[sha256sum] = "2b7d74f4b10b18ae2f0291fcafabe30e42c9ededdea41add8c622302132d545a"
-
-inherit autotools binconfig lib_package
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-support/gnutls/libtasn1_2.9.bb b/meta/recipes-support/gnutls/libtasn1_2.9.bb
new file mode 100644
index 0000000000..63bb3c85f6
--- /dev/null
+++ b/meta/recipes-support/gnutls/libtasn1_2.9.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "Library for ASN.1 and DER manipulation"
+HOMEPAGE = "http://www.gnu.org/software/libtasn1/"
+
+LICENSE = "GPLv3+ & LGPLv2.1+"
+LICENSE_${PN}-bin = "GPLv3+"
+LICENSE_${PN} = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+ file://COPYING.LIB;md5=a6f89e2100d9b6cdffcea4f398e37343 \
+ file://README;endline=8;md5=c3803a3e8ca5ab5eb1e5912faa405351"
+
+#RREPLACES_${PN}-bin = "libtasn1 (<< 2.7)"
+
+PR = "r0"
+
+SRC_URI = "ftp://ftp.gnutls.org/pub/gnutls/libtasn1/libtasn1-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "f4f4035b84550100ffeb8ad4b261dea9"
+SRC_URI[sha256sum] = "fac46855fac8b08cf6f5a1b60cebad8e090bac1f06c335a044e84110d0b412c4"
+
+inherit autotools binconfig lib_package
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-support/hal/hal.inc b/meta/recipes-support/hal/hal.inc
index 839dfd0652..ee6c7ba15d 100644
--- a/meta/recipes-support/hal/hal.inc
+++ b/meta/recipes-support/hal/hal.inc
@@ -7,7 +7,7 @@ LICENSE = "GPLv2+ | AFL"
LIC_FILES_CHKSUM = "file://COPYING;md5=5b5ffd59fbb7c2fff6de76c94177af31"
DEPENDS = "virtual/kernel dbus-glib udev util-linux intltool intltool-native expat libusb gperf-native"
-RDEPENDS += "udev hal-info"
+RDEPENDS_${PN} += "udev hal-info"
SRC_URI = "http://hal.freedesktop.org/releases/hal-${PV}.tar.gz \
file://20hal"
diff --git a/meta/recipes-support/hal/hal_0.5.14.bb b/meta/recipes-support/hal/hal_0.5.14.bb
index f9437f8d60..8b82ca8502 100644
--- a/meta/recipes-support/hal/hal_0.5.14.bb
+++ b/meta/recipes-support/hal/hal_0.5.14.bb
@@ -1,6 +1,6 @@
require hal.inc
-PR = "r2"
+PR = "r3"
EXTRA_OECONF += "--with-linux-input-header=${STAGING_INCDIR}/linux/input.h"
EXTRA_OEMAKE += "-e 'udevrulesdir=$(sysconfdir)/udev/rules.d'"
diff --git a/meta/recipes-support/hal/hal_git.bb b/meta/recipes-support/hal/hal_git.bb
index baed472375..483867f267 100644
--- a/meta/recipes-support/hal/hal_git.bb
+++ b/meta/recipes-support/hal/hal_git.bb
@@ -1,7 +1,7 @@
require hal.inc
PV = "0.5.9.1+git${SRCDATE}"
-PR = "r7"
+PR = "r8"
SRC_URI = "git://anongit.freedesktop.org/hal/;protocol=git \
file://20hal \
diff --git a/meta/recipes-support/libfm/libfm-0.1.14/add_missing.patch b/meta/recipes-support/libfm/libfm-0.1.14/add_missing.patch
deleted file mode 100644
index 3739d8056e..0000000000
--- a/meta/recipes-support/libfm/libfm-0.1.14/add_missing.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-Add missing definitions and declarations for libfm which are
-needed by libfm.
-
-Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
-
-diff -ruN libfm-0.1.12-orig/src/gio/fm-app-lookup.h libfm-0.1.12/src/gio/fm-app-lookup.h
---- libfm-0.1.12-orig/src/gio/fm-app-lookup.h 2010-11-17 22:00:48.000000000 +0800
-+++ libfm-0.1.12/src/gio/fm-app-lookup.h 2010-11-17 22:01:13.000000000 +0800
-@@ -53,6 +53,41 @@
- GType fm_app_lookup_get_type(void);
- void fm_app_lookup_register(GIOModule *module);
-
-+#define G_TYPE_DESKTOP_APP_INFO_LOOKUP (g_desktop_app_info_lookup_get_type ())
-+#define G_DESKTOP_APP_INFO_LOOKUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_DESKTOP_APP_INFO_LOOKUP, GDesktopAppInfoLookup))
-+#define G_IS_DESKTOP_APP_INFO_LOOKUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_DESKTOP_APP_INFO_LOOKUP))
-+#define G_DESKTOP_APP_INFO_LOOKUP_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_DESKTOP_APP_INFO_LOOKUP, GDesktopAppInfoLookupIface))
-+
-+/**
-+ * G_DESKTOP_APP_INFO_LOOKUP_EXTENSION_POINT_NAME:
-+ *
-+ * Extension point for default handler to URI association. See
-+ * <link linkend="extending-gio">Extending GIO</link>.
-+ */
-+#define G_DESKTOP_APP_INFO_LOOKUP_EXTENSION_POINT_NAME "gio-desktop-app-info-lookup"
-+
-+/**
-+ * GDesktopAppInfoLookup:
-+ *
-+ * Interface that is used by backends to associate default
-+ * handlers with URI schemes.
-+ */
-+typedef struct _GDesktopAppInfoLookup GDesktopAppInfoLookup;
-+typedef struct _GDesktopAppInfoLookupIface GDesktopAppInfoLookupIface;
-+
-+struct _GDesktopAppInfoLookupIface
-+{
-+ GTypeInterface g_iface;
-+
-+ GAppInfo * (* get_default_for_uri_scheme) (GDesktopAppInfoLookup *lookup,
-+ const char *uri_scheme);
-+};
-+
-+GType g_desktop_app_info_lookup_get_type (void) G_GNUC_CONST;
-+
-+GAppInfo *g_desktop_app_info_lookup_get_default_for_uri_scheme (GDesktopAppInfoLookup *lookup,
-+ const char *uri_scheme);
-+
- G_END_DECLS
-
- #endif /* __FM_APP_LOOKUP_H__ */
diff --git a/meta/recipes-support/libfm/libfm_0.1.14.bb b/meta/recipes-support/libfm/libfm_0.1.14.bb
index e8e672cf83..c56ad331c1 100644
--- a/meta/recipes-support/libfm/libfm_0.1.14.bb
+++ b/meta/recipes-support/libfm/libfm_0.1.14.bb
@@ -10,10 +10,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
SECTION = "x11/libs"
DEPENDS = "gtk+ menu-cache intltool"
-PR = "r1"
+PR = "r2"
-SRC_URI = "${SOURCEFORGE_MIRROR}/pcmanfm/libfm-${PV}.tar.gz \
- file://add_missing.patch"
+SRC_URI = "${SOURCEFORGE_MIRROR}/pcmanfm/libfm-${PV}.tar.gz"
SRC_URI[md5sum] = "d55e51dced6bb9ef46665243b079761f"
SRC_URI[sha256sum] = "e97bf3f9ed4f33b9f0be73e67d360b89337cccf816361faacd8422722269806b"
diff --git a/meta/recipes-support/libgdbus/libgdbus_git.bb b/meta/recipes-support/libgdbus/libgdbus_git.bb
index c465023d1a..40b44de88e 100644
--- a/meta/recipes-support/libgdbus/libgdbus_git.bb
+++ b/meta/recipes-support/libgdbus/libgdbus_git.bb
@@ -1,12 +1,18 @@
-HOMEPAGE = "http://www.moblin.org/projects/projects_connman.php"
-SUMMARY = "Moblin Glib D-Bus integration"
-LICENSE = "GPLv2&LGPLv2.1"
+SUMMARY = "Library for simple D-Bus integration with GLib"
+DESCRIPTION = "Library for simple D-Bus integration with GLib"
+HOMEPAGE = "http://www.bluez.org"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "GPLv2&LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \
- file://COPYING.LIB;md5=fb504b67c50331fc78734fed90fb0e09"
-DEPENDS = "glib-2.0 dbus"
-PV = "0.0+git${SRCREV}"
-S = "${WORKDIR}/git"
+ file://COPYING.LIB;md5=fb504b67c50331fc78734fed90fb0e09"
-SRC_URI = "git://git.kernel.org/pub/scm/bluetooth/libgdbus.git;protocol=git"
+DEPENDS = "glib-2.0 dbus"
+PV = "0.0+git${SRCPV}"
+PR = "r0"
+
+SRC_URI = "git://git.kernel.org/pub/scm/bluetooth/libgdbus.git;protocol=git"
+
+S = "${WORKDIR}/git"
inherit autotools pkgconfig
diff --git a/meta/recipes-support/liburcu/liburcu_0.4.8.bb b/meta/recipes-support/liburcu/liburcu_0.4.8.bb
deleted file mode 100644
index 655685a650..0000000000
--- a/meta/recipes-support/liburcu/liburcu_0.4.8.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-DESCRIPTION = "The userspace read-copy update library by Mathieu Desnoyers"
-HOMEPAGE = "http://lttng.org/urcu"
-BUGTRACKER = "n/a"
-
-LICENSE = "LGPLv2.1+ & MIT-style"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b472dc110d38774921e1d5ccb0065fff \
- file://urcu.h;beginline=4;endline=32;md5=4de0d68d3a997643715036d2209ae1d9 \
- file://urcu/uatomic_arch_x86.h;beginline=4;endline=21;md5=220552f72c55b102f2ee35929734ef42"
-
-PR = "r0"
-
-SRC_URI = "http://lttng.org/files/urcu/userspace-rcu-${PV}.tar.bz2"
-
-SRC_URI[md5sum] = "408b67506808a1bff2313d83607dbcfe"
-SRC_URI[sha256sum] = "43783a298b5adcfe273878194b28b9dcb95cbe8948a918caaf492c7bcb8c2ff6"
-
-S = "${WORKDIR}/userspace-rcu-${PV}"
-
-inherit autotools
-
-# liburcu, which is only used by lttng-ust, may not build on other
-# platforms, e.g., on ARM, liburcu is only supported on ARMv7l while poky
-# only supports armv4/armv4t/armv5te. 1 more example: liburcu doesn't support
-# MIPS now.
-# So here let us first suppport x86/powerpc platforms now.
-COMPATIBLE_HOST = '(x86_64.*|i.86.*|powerpc.*)-linux'
-
diff --git a/meta/recipes-support/liburcu/liburcu_0.5.2.bb b/meta/recipes-support/liburcu/liburcu_0.5.2.bb
new file mode 100644
index 0000000000..fa9ddb3612
--- /dev/null
+++ b/meta/recipes-support/liburcu/liburcu_0.5.2.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "The userspace read-copy update library by Mathieu Desnoyers"
+HOMEPAGE = "http://lttng.org/urcu"
+BUGTRACKER = "n/a"
+
+LICENSE = "LGPLv2.1+ & MIT-style"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b472dc110d38774921e1d5ccb0065fff \
+ file://urcu.h;beginline=4;endline=32;md5=4de0d68d3a997643715036d2209ae1d9 \
+ file://urcu/uatomic_arch_x86.h;beginline=4;endline=21;md5=220552f72c55b102f2ee35929734ef42"
+
+PR = "r0"
+
+SRC_URI = "http://lttng.org/files/urcu/userspace-rcu-${PV}.tar.bz2"
+
+SRC_URI[md5sum] = "a2978395806eed5d9a2de1e22efe70e0"
+SRC_URI[sha256sum] = "2f22966fe4b00ef547976a31c1c6a7c7bea3449ffa838806d9610e7424e184dd"
+
+S = "${WORKDIR}/userspace-rcu-${PV}"
+
+inherit autotools
+
+# liburcu, which is only used by lttng-ust, may not build on other
+# platforms, e.g., on ARM, liburcu is only supported on ARMv7l while poky
+# only supports armv4/armv4t/armv5te. 1 more example: liburcu doesn't support
+# MIPS now.
+# So here let us first suppport x86/powerpc platforms now.
+COMPATIBLE_HOST = '(x86_64.*|i.86.*|powerpc.*)-linux'
+
diff --git a/meta/recipes-support/lzo/lzo-2.03/autofoo.patch b/meta/recipes-support/lzo/lzo-2.03/autofoo.patch
deleted file mode 100644
index 5762f4c6e2..0000000000
--- a/meta/recipes-support/lzo/lzo-2.03/autofoo.patch
+++ /dev/null
@@ -1,17 +0,0 @@
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: lzo-2.02/configure.ac
-===================================================================
---- lzo-2.02.orig/configure.ac 2007-08-08 15:28:14.000000000 +0100
-+++ lzo-2.02/configure.ac 2007-08-08 15:28:21.000000000 +0100
-@@ -47,7 +47,7 @@ AC_CANONICAL_TARGET
- AM_MAINTAINER_MODE
-
- if test -z "$ac_abs_top_srcdir"; then
-- _AC_SRCPATHS(.)
-+ _AC_SRCDIRS(.)
- fi
- if test -r .Conf.settings1; then
- . ./.Conf.settings1
diff --git a/meta/recipes-support/lzo/lzo-2.03/acinclude.m4 b/meta/recipes-support/lzo/lzo-2.04/acinclude.m4
index c4d2ccd5b5..c4d2ccd5b5 100644
--- a/meta/recipes-support/lzo/lzo-2.03/acinclude.m4
+++ b/meta/recipes-support/lzo/lzo-2.04/acinclude.m4
diff --git a/meta/recipes-support/lzo/lzo-2.04/autoconf.patch b/meta/recipes-support/lzo/lzo-2.04/autoconf.patch
new file mode 100644
index 0000000000..c342387107
--- /dev/null
+++ b/meta/recipes-support/lzo/lzo-2.04/autoconf.patch
@@ -0,0 +1,19 @@
+Date: 12/31/2010
+Didn't find 2.67 specific features, so lower the requirement
+to pass build
+
+Signed-off-by: Qing He <qing.he@intel.com>
+---
+diff --git a/configure.ac b/configure.ac
+index 650749a..2a78845 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -36,7 +36,7 @@ All Rights Reserved.
+ This configure script may be copied, distributed and modified under the
+ terms of the GNU General Public License; see COPYING for more details.])
+
+-AC_PREREQ(2.67)
++AC_PREREQ(2.65)
+ AC_INIT([LZO],[2.04],[markus@oberhumer.com],[lzo],[http://www.oberhumer.com/opensource/lzo/])
+ AC_MSG_NOTICE([Configuring LZO $PACKAGE_VERSION])
+ AC_CONFIG_SRCDIR(src/lzo_init.c)
diff --git a/meta/recipes-support/lzo/lzo_2.03.bb b/meta/recipes-support/lzo/lzo_2.03.bb
deleted file mode 100644
index 05b10ee9f7..0000000000
--- a/meta/recipes-support/lzo/lzo_2.03.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-DESCRIPTION = "Lossless data compression library"
-HOMEPAGE = "http://www.oberhumer.com/opensource/lzo/"
-SECTION = "libs"
-PRIORITY = "optional"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=8cad52263e636e25377bc18420118101 \
- file://src/lzo_init.c;beginline=5;endline=33;md5=094776237523b2e93124cf09b9c76aef"
-PR = "r0"
-
-SRC_URI = "http://www.oberhumer.com/opensource/lzo/download/lzo-${PV}.tar.gz \
- file://autofoo.patch \
- file://acinclude.m4"
-
-SRC_URI[md5sum] = "0c3d078c2e8ea5a88971089a2f02a726"
-SRC_URI[sha256sum] = "8b1b0da8f757b9ac318e1c15a0eac8bdb56ca902a2dd25beda06c0f265f22591"
-
-inherit autotools
-
-EXTRA_OECONF = "--enable-shared"
-
-do_configure_prepend () {
- cp ${WORKDIR}/acinclude.m4 ${S}/
-}
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-support/lzo/lzo_2.04.bb b/meta/recipes-support/lzo/lzo_2.04.bb
new file mode 100644
index 0000000000..f8c8aba3a3
--- /dev/null
+++ b/meta/recipes-support/lzo/lzo_2.04.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "Lossless data compression library"
+HOMEPAGE = "http://www.oberhumer.com/opensource/lzo/"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8cad52263e636e25377bc18420118101 \
+ file://src/lzo_init.c;beginline=5;endline=36;md5=454f781644dfe945e3634a9b699e91f3"
+PR = "r0"
+
+SRC_URI = "http://www.oberhumer.com/opensource/lzo/download/lzo-${PV}.tar.gz \
+ file://autoconf.patch \
+ file://acinclude.m4 \
+ "
+
+SRC_URI[md5sum] = "a383c7055a310e2a71b9ecd19cfea238"
+SRC_URI[sha256sum] = "4ee3a040facf39561f13e4ef2ab99a886fd68251a35d612486ed0625cc6ab428"
+
+inherit autotools
+
+EXTRA_OECONF = "--enable-shared"
+
+do_configure_prepend () {
+ cp ${WORKDIR}/acinclude.m4 ${S}/
+}
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-tbd/consolekit/consolekit_0.4.3.bb b/meta/recipes-tbd/consolekit/consolekit_0.4.3.bb
deleted file mode 100644
index f1da72bb78..0000000000
--- a/meta/recipes-tbd/consolekit/consolekit_0.4.3.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-DESCRIPTION = "ConsoleKit is a framework for defining and tracking users, login sessions, and seats."
-HOMEPAGE="http://www.freedesktop.org/wiki/Software/ConsoleKit"
-BUGTRACKER="https://bugs.freedesktop.org/buglist.cgi?query_format=specific&product=ConsoleKit"
-
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
- file://src/main.c;endline=21;md5=0a994e09769780220163255d8f9071c3"
-
-DEPENDS = "dbus"
-
-inherit gnome
-
-SRC_URI = "http://www.freedesktop.org/software/ConsoleKit/dist/ConsoleKit-0.4.3.tar.bz2 \
- file://nopolkit.patch;patch=1"
-S = "${WORKDIR}/ConsoleKit-${PV}"
-
-FILES_${PN} += "${libdir}/ConsoleKit ${datadir}/dbus-1 ${datadir}/PolicyKit"
-
-
-
-
diff --git a/meta/site/mips-common b/meta/site/mips-common
index 85e4696cbd..6408baa59f 100644
--- a/meta/site/mips-common
+++ b/meta/site/mips-common
@@ -29,3 +29,6 @@ ac_cv_alignof_CORBA_struct=1
# dpkg
dpkg_cv_va_copy=${ac_cv_va_copy=yes}
dpkg_cv___va_copy=${ac_cv___va_copy=yes}
+
+# apr
+apr_cv_tcp_nodelay_with_cork=${apr_cv_tcp_nodelay_with_cork=yes}
diff --git a/meta/site/x86_64-linux b/meta/site/x86_64-linux
index 31acb34437..9c9e0f82a8 100644
--- a/meta/site/x86_64-linux
+++ b/meta/site/x86_64-linux
@@ -114,3 +114,11 @@ as_cv_unaligned_access=${as_cv_unaligned_access=yes}
nfsd_cv_broken_setfsuid=${nfsd_cv_broken_setfsuid=0}
nfsd_cv_func_statfs=${nfsd_cv_func_statfs=statfs2_bsize}
nfsd_cv_bsd_signals=${nfsd_cv_bsd_signals=yes}
+
+#apr
+apr_cv_tcp_nodelay_with_cork=${apr_cv_tcp_nodelay_with_cork=yes}
+
+# rpm
+rpm_ac_cv_va_copy=${ac_cv_va_copy=yes}
+rpm_ac_cv___va_copy=${ac_cv___va_copy=yes}
+
diff --git a/poky-init-build-env b/poky-init-build-env
index 075070370b..82590f2012 100755
--- a/poky-init-build-env
+++ b/poky-init-build-env
@@ -18,12 +18,27 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
+#
+# Normally this is called as '. ./poky-init-buildenv builddir'
+#
+# This works in most shells (not dash), but not all of them pass arg1 when
+# being sourced. To workaround the shell limitation use "set arg1" prior
+# to sourcing this script.
+#
if [ "x$0" = "x./poky-init-build-env" ]; then
echo "Error: This script needs to be sourced. Please run as '. ./poky-init-build-env'"
-elif [ "x$BASH_SOURCE" = "x" ]; then
- echo "Error: You are not running a Bash shell. Please use Bash or add support for your shell to the init scripts"
else
- . `dirname $BASH_SOURCE`/scripts/poky-env-internal
+ if [ -n "$BASH_SOURCE" ]; then
+ OEROOT="`dirname $BASH_SOURCE`"
+ else
+ OEROOT="`pwd`"
+ fi
+ OEROOT=`readlink -f "$OEROOT"`
+ export OEROOT
+ . $OEROOT/scripts/poky-env-internal
+ $OEROOT/scripts/poky-setup-builddir
+ unset OEROOT
+ unset BBPATH
+ [ -n "$BUILDDIR" ] && cd $BUILDDIR
fi
diff --git a/scripts/bitbake b/scripts/bitbake
index 2c03314e0b..f40bd28260 100755
--- a/scripts/bitbake
+++ b/scripts/bitbake
@@ -1,9 +1,33 @@
#!/bin/sh
+NO_BUILD_OPTS="--version -h --help -p --parse-only -s --show-versions -e --environment"
+needpseudo="1"
+for opt in $@; do
+for key in $NO_BUILD_OPTS; do
+ if [ $opt = $key ]
+ then
+ needpseudo="0"
+ break
+ fi
+done
+[ $needpseudo = "0" ] && break
+done
+
+buildpseudo="1"
+if [ $needpseudo = "1" ] && [ -e "$BUILDDIR/pseudodone" ]; then
+ PSEUDOBINDIR=`cat $BUILDDIR/pseudodone`
+ if [ -e "$PSEUDOBINDIR/pseudo" ]; then
+ buildpseudo="0"
+ fi
+fi
+if [ $needpseudo = "0" ]; then
+ buildpseudo="0"
+fi
+
OLDPATH=$PATH
export PATH=`echo $PATH | sed s#[^:]*/scripts:##`
-if [ ! -e "$BUILDDIR/pseudodone" ]; then
- echo "Pseudo has not been built, building this first before the main build"
- bitbake pseudo-native
+if [ $buildpseudo = "1" ]; then
+ echo "Pseudo is not present but is required, building this first before the main build"
+ bitbake pseudo-native -c populate_sysroot
ret=$?
if [ "$ret" != "0" ]; then
exit 1
@@ -19,7 +43,11 @@ if [ ! -e "$BUILDDIR/pseudodone" ]; then
fi
BITBAKE=`which bitbake`
export PATH=$OLDPATH
-PSEUDOBINDIR=`cat $BUILDDIR/pseudodone`
-PSEUDO_BINDIR=$PSEUDOBINDIR PSEUDO_LIBDIR=$PSEUDOBINDIR/../lib/pseudo/lib PSEUDO_PREFIX=$PSEUDOBINDIR/../../ PSEUDO_DISABLED=1 $PSEUDOBINDIR/pseudo $BITBAKE $@
+if [ $needpseudo = "1" ]; then
+ PSEUDOBINDIR=`cat $BUILDDIR/pseudodone`
+ PSEUDO_BINDIR=$PSEUDOBINDIR PSEUDO_LIBDIR=$PSEUDOBINDIR/../lib/pseudo/lib PSEUDO_PREFIX=$PSEUDOBINDIR/../../ PSEUDO_DISABLED=1 $PSEUDOBINDIR/pseudo $BITBAKE $@
+else
+ $BITBAKE $@
+fi
ret=$?
exit $ret
diff --git a/scripts/contrib/bbvars.py b/scripts/contrib/bbvars.py
new file mode 100755
index 0000000000..0896d64445
--- /dev/null
+++ b/scripts/contrib/bbvars.py
@@ -0,0 +1,186 @@
+#!/usr/bin/env python
+
+# This program 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# Copyright (C) Darren Hart <dvhart@linux.intel.com>, 2010
+
+
+import sys
+import getopt
+import os
+import os.path
+import re
+
+def usage():
+ print 'Usage: %s -d FILENAME [-d FILENAME]* -m METADIR [-m MATADIR]*' % os.path.basename(sys.argv[0])
+ print ' -d FILENAME documentation file to search'
+ print ' -h, --help display this help and exit'
+ print ' -m METADIR meta directory to search for recipes'
+ print ' -t FILENAME documentation config file (for doc tags)'
+ print ' -T Only display variables with doc tags (requires -t)'
+
+def recipe_bbvars(recipe):
+ ''' Return a unique set of every bbvar encountered in the recipe '''
+ prog = re.compile("[A-Z_]+")
+ vset = set()
+ try:
+ r = open(recipe)
+ except IOError as (errno, strerror):
+ print 'WARNING: Failed to open recipe ', recipe
+ print strerror
+
+ for line in r:
+ # Strip any comments from the line
+ line = line.rsplit('#')[0]
+ vset = vset.union(set(prog.findall(line)))
+ r.close()
+
+ bbvars = {}
+ for v in vset:
+ bbvars[v] = 1
+
+ return bbvars
+
+def collect_bbvars(metadir):
+ ''' Walk the metadir and collect the bbvars from each recipe found '''
+ bbvars = {}
+ for root,dirs,files in os.walk(metadir):
+ for name in files:
+ if name.find(".bb") >= 0:
+ for key in recipe_bbvars(os.path.join(root,name)).iterkeys():
+ if bbvars.has_key(key):
+ bbvars[key] = bbvars[key] + 1
+ else:
+ bbvars[key] = 1
+ return bbvars
+
+def bbvar_is_documented(var, docfiles):
+ prog = re.compile(".*($|[^A-Z_])%s([^A-Z_]|$)" % (var))
+ for doc in docfiles:
+ try:
+ f = open(doc)
+ except IOError as (errno, strerror):
+ print 'WARNING: Failed to open doc ', doc
+ print strerror
+ for line in f:
+ if prog.match(line):
+ return True
+ f.close()
+ return False
+
+def bbvar_doctag(var, docconf):
+ prog = re.compile('^%s\[doc\] *= *"(.*)"' % (var))
+ if docconf == "":
+ return "?"
+
+ try:
+ f = open(docconf)
+ except IOError as (errno, strerror):
+ return strerror
+
+ for line in f:
+ m = prog.search(line)
+ if m:
+ return m.group(1)
+
+ f.close()
+ return ""
+
+def main():
+ docfiles = []
+ metadirs = []
+ bbvars = {}
+ undocumented = []
+ docconf = ""
+ onlydoctags = False
+
+ # Collect and validate input
+ try:
+ opts, args = getopt.getopt(sys.argv[1:], "d:hm:t:T", ["help"])
+ except getopt.GetoptError, err:
+ print '%s' % str(err)
+ usage()
+ sys.exit(2)
+
+ for o, a in opts:
+ if o in ('-h', '--help'):
+ usage()
+ sys.exit(0)
+ elif o == '-d':
+ if os.path.isfile(a):
+ docfiles.append(a)
+ else:
+ print 'ERROR: documentation file %s is not a regular file' % (a)
+ sys.exit(3)
+ elif o == '-m':
+ if os.path.isdir(a):
+ metadirs.append(a)
+ else:
+ print 'ERROR: meta directory %s is not a directory' % (a)
+ sys.exit(4)
+ elif o == "-t":
+ if os.path.isfile(a):
+ docconf = a
+ elif o == "-T":
+ onlydoctags = True
+ else:
+ assert False, "unhandled option"
+
+ if len(docfiles) == 0:
+ print 'ERROR: no docfile specified'
+ usage()
+ sys.exit(5)
+
+ if len(metadirs) == 0:
+ print 'ERROR: no metadir specified'
+ usage()
+ sys.exit(6)
+
+ if onlydoctags and docconf == "":
+ print 'ERROR: no docconf specified'
+ usage()
+ sys.exit(7)
+
+ # Collect all the variable names from the recipes in the metadirs
+ for m in metadirs:
+ for key,cnt in collect_bbvars(m).iteritems():
+ if bbvars.has_key(key):
+ bbvars[key] = bbvars[key] + cnt
+ else:
+ bbvars[key] = cnt
+
+ # Check each var for documentation
+ varlen = 0
+ for v in bbvars.iterkeys():
+ if len(v) > varlen:
+ varlen = len(v)
+ if not bbvar_is_documented(v, docfiles):
+ undocumented.append(v)
+ undocumented.sort()
+ varlen = varlen + 1
+
+ # Report all undocumented variables
+ print 'Found %d undocumented bb variables (out of %d):' % (len(undocumented), len(bbvars))
+ header = '%s%s%s' % (str("VARIABLE").ljust(varlen), str("COUNT").ljust(6), str("DOCTAG").ljust(7))
+ print header
+ print str("").ljust(len(header), '=')
+ for v in undocumented:
+ doctag = bbvar_doctag(v, docconf)
+ if not onlydoctags or not doctag == "":
+ print '%s%s%s' % (v.ljust(varlen), str(bbvars[v]).ljust(6), doctag)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/scripts/poky-env-internal b/scripts/poky-env-internal
index 1557f9ddbd..80b7a125df 100755
--- a/scripts/poky-env-internal
+++ b/scripts/poky-env-internal
@@ -18,9 +18,11 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-# scripts/ is a sub-directory of OEROOT, we use readlink to get the full path
-SCRIPTPATH=`readlink -f "$BASH_SOURCE"`
-OEROOT="`dirname $SCRIPTPATH`/../"
+# It is assumed OEROOT is already defined when this is called
+if [ -z "$OEROOT" ]; then
+ echo >&2 "Error: OEROOT is not defined!"
+ return
+fi
if [ "x$BDIR" = "x" ]; then
if [ "x$1" = "x" ]; then
@@ -29,116 +31,28 @@ if [ "x$BDIR" = "x" ]; then
BDIR=`readlink -f "$1"`
fi
fi
-if [[ "$BDIR" = /* ]] ; then
+if expr "$BDIR" : '/.*' > /dev/null ; then
BUILDDIR="$BDIR"
else
BUILDDIR="`pwd`/$BDIR"
fi
unset BDIR
-mkdir -p $BUILDDIR/conf
-if ! (test -w "$BUILDDIR"); then
- echo >&2 "Error: Cannot write to $BUILDDIR, perhaps try sourcing with a writable path? i.e. . poky-init-build-env ~/my-build"
- return
-fi
-
BITBAKEDIR="$OEROOT/bitbake$BBEXTRA/"
-PATH="${OEROOT}/scripts:$BITBAKEDIR/bin/:$PATH"
-
-# Remove any symlinks from paths
BITBAKEDIR=`readlink -f "$BITBAKEDIR"`
BUILDDIR=`readlink -f "$BUILDDIR"`
-OEROOT=`readlink -f "$OEROOT"`
-
-cd "$BUILDDIR"
-if ! (test -d "$BITBAKEDIR" && test -d "$BUILDDIR"); then
- echo >&2 "Error: Not all directories exist! Did you run this script in poky directory?"
+if ! (test -d "$BITBAKEDIR"); then
+ echo >&2 "Error: The bitbake directory ($BITBAKEDIR) does not exist! Did you source the script in the poky directory?"
return
fi
-#
-# $POKYCONF can point to a directory for the template local.conf & bblayers.conf
-#
-if [ "x" != "x$POKYCONF" ]; then
- if ! (test -d "$POKYCONF"); then
- # Allow POKYCONF=meta-xyz/conf as a shortcut
- if [ -d "$OEROOT/$POKYCONF" ]; then
- POKYCONF="$OEROOT/$POKYCONF"
- fi
- if ! (test -d "$POKYCONF"); then
- echo >&2 "Error: '$POKYCONF' must be a directory containing local.conf & bblayers.conf"
- return
- fi
- fi
- POKYLAYERCONF="$POKYCONF/bblayers.conf"
- POKYLOCALCONF="$POKYCONF/local.conf"
-fi
-
-if [ "x" = "x$POKYLOCALCONF" ]; then
- POKYLOCALCONF="$OEROOT/meta/conf/local.conf.sample"
-fi
-if ! (test -r "$BUILDDIR/conf/local.conf"); then
-cat <<EOM
-You had no conf/local.conf file. Poky has created this configuration file for
-you with some default values. You may wish to edit it to use a different MACHINE
-(target hardware) or enable parallel build options to take advantage of multiple
-cores for example. See the file for more information as common configuration
-options are commented.
-
-Also, for more information see the Poky handbook:
-http://pokylinux.org/doc/poky-handbook.html
-
-EOM
- cp -f $POKYLOCALCONF $BUILDDIR/conf/local.conf
-fi
-
-if [ "x" = "x$POKYLAYERCONF" ]; then
- POKYLAYERCONF="$OEROOT/meta/conf/bblayers.conf.sample"
-fi
-if ! (test -r "$BUILDDIR/conf/bblayers.conf"); then
-cat <<EOM
-You had no conf/bblayers.conf file. Poky has created this configuration file for
-you with some default values. To add additional metadata layers into your
-configuration please add entries to this file.
-
-For more information see the Poky handbook:
- http://pokylinux.org/doc/poky-handbook.html
-
-EOM
-
- # Put the abosolute path to the layers in bblayers.conf so we can run
- # bitbake without the init script after the first run
- sed "s|##POKYBASE##|$OEROOT|g" $POKYLAYERCONF > $BUILDDIR/conf/bblayers.conf
-fi
-
-# Prevent disturbing a new GIT clone in same console
-unset POKYLOCALCONF
-unset POKYLAYERCONF
+PATH="${OEROOT}/scripts:$BITBAKEDIR/bin/:$PATH"
unset BITBAKEDIR
-unset OEROOT
# Used by the poky-qemu script
export BUILDDIR
export PATH
-# Stop multi byte characters breaking the patcher stuff - This is for Redhat / Fedora people really
-export LANG=C
-export BB_ENV_EXTRAWHITE="MACHINE DISTRO POKYMODE POKYLIBC http_proxy ftp_proxy https_proxy all_proxy ALL_PROXY no_proxy SSH_AGENT_PID SSH_AUTH_SOCK BB_SRCREV_POLICY SDKMACHINE BB_NUMBER_THREADS GIT_PROXY_COMMAND PSEUDO_DISABLED"
-
-cat <<EOM
-
-### Shell environment set up for Poky builds. ###
-
-You can now run 'bitbake <target>'
-
-Common targets are:
- poky-image-minimal
- poky-image-sato
- meta-toolchain
- meta-toolchain-sdk
-
-You can also run generated qemu images with a command like 'poky-qemu qemux86'
-
-EOM
+export BB_ENV_EXTRAWHITE="MACHINE DISTRO POKYMODE POKYLIBC http_proxy ftp_proxy https_proxy all_proxy ALL_PROXY no_proxy SSH_AGENT_PID SSH_AUTH_SOCK BB_SRCREV_POLICY SDKMACHINE BB_NUMBER_THREADS GIT_PROXY_COMMAND PSEUDO_DISABLED"
diff --git a/scripts/poky-extract-sdk b/scripts/poky-extract-sdk
index 977adde1a6..a36d79d31c 100755
--- a/scripts/poky-extract-sdk
+++ b/scripts/poky-extract-sdk
@@ -47,6 +47,11 @@ if [ ! -e "$ROOTFS_TARBALL" ]; then
exit 1
fi
+# Convert SDK_ROOTFS_DIR to a full pathname
+if [[ ${SDK_ROOTFS_DIR:0:1} != "/" ]]; then
+ SDK_ROOTFS_DIR=$(pwd)/$SDK_ROOTFS_DIR
+fi
+
TAR_OPTS=""
if [[ "$ROOTFS_TARBALL" =~ tar\.bz2$ ]]; then
TAR_OPTS="-xjf"
diff --git a/scripts/poky-qemu b/scripts/poky-qemu
index 313248ff49..b19a89ddab 100755
--- a/scripts/poky-qemu
+++ b/scripts/poky-qemu
@@ -29,7 +29,7 @@ usage() {
echo " Additional QEMU command-line options can be passed with:"
echo " nographic - disables video console"
echo " serial - enables a serial console on /dev/ttyS0"
- echo " kvm - enables kvm"
+ echo " kvm - enables KVM when running qemux86/qemux86-64, VT capable CPU required"
echo " \"<extra-qemu-options>\" - enables extra qemu options, excluding serial and kvm"
echo ""
echo "Examples:"
@@ -171,10 +171,29 @@ while [ $i -le $# ]; do
i=$((i + 1))
done
+POKY_KVM_WIKI="https://wiki.yoctoproject.org/wiki/How_to_enable_KVM_for_Poky_qemu"
# Detect KVM configuration
-if [[ "x$KVM_ENABLED" == "xyes" && ! -z "$KVM_CAPABLE" ]]; then
- if [[ "x$MACHINE" == "xqemux86" || "x$MACHINE" == "xqemux86-64" ]]; then
+if [[ "x$KVM_ENABLED" == "xyes" ]]; then
+ if [[ -z "$KVM_CAPABLE" ]]; then
+ echo "You are tring to enable KVM on cpu without VT support. Remove kvm from the command-line, or refer";
+ echo "$POKY_KVM_WIKI";
+ exit 1;
+ fi
+ if [[ "x$MACHINE" != "xqemux86" && "x$MACHINE" != "xqemux86-64" ]]; then
+ echo "KVM only support x86 & x86-64. Remove kvm from the command-line";
+ exit 1;
+ fi
+ if [ ! -e /dev/kvm ]; then
+ echo "Missing KVM device. Have you inserted kvm modules? Pls. refer";
+ echo "$POKY_KVM_WIKI";
+ exit 1;
+ fi
+ if 9<>/dev/kvm ; then
SCRIPT_QEMU_OPT="$SCRIPT_QEMU_OPT -enable-kvm"
+ else
+ echo "You have no rights on /dev/kvm. Pls. change the owndership as described at";
+ echo "$POKY_KVM_WIKI";
+ exit 1;
fi
fi
diff --git a/scripts/poky-setup-builddir b/scripts/poky-setup-builddir
new file mode 100755
index 0000000000..7a1452f7ce
--- /dev/null
+++ b/scripts/poky-setup-builddir
@@ -0,0 +1,113 @@
+#!/bin/sh
+
+# Poky Build Enviroment Setup Script
+#
+# Copyright (C) 2006-2007 OpenedHand Ltd.
+#
+# This program 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+if [ -z "$BUILDDIR" ]; then
+ echo >&2 "Error: The build directory (BUILDDIR) must be set!"
+ exit 1
+fi
+
+mkdir -p $BUILDDIR/conf
+
+if ! (test -d "$BUILDDIR"); then
+ echo >&2 "Error: The builddir ($BUILDDIR) does not exist!"
+ exit 1
+fi
+
+if ! (test -w "$BUILDDIR"); then
+ echo >&2 "Error: Cannot write to $BUILDDIR, perhaps try sourcing with a writable path? i.e. . poky-init-build-env ~/my-build"
+ exit 1
+fi
+
+cd "$BUILDDIR"
+
+#
+# $POKYCONF can point to a directory for the template local.conf & bblayers.conf
+#
+if [ "x" != "x$POKYCONF" ]; then
+ if ! (test -d "$POKYCONF"); then
+ # Allow POKYCONF=meta-xyz/conf as a shortcut
+ if [ -d "$OEROOT/$POKYCONF" ]; then
+ POKYCONF="$OEROOT/$POKYCONF"
+ fi
+ if ! (test -d "$POKYCONF"); then
+ echo >&2 "Error: '$POKYCONF' must be a directory containing local.conf & bblayers.conf"
+ return
+ fi
+ fi
+ POKYLAYERCONF="$POKYCONF/bblayers.conf"
+ POKYLOCALCONF="$POKYCONF/local.conf"
+fi
+
+if [ "x" = "x$POKYLOCALCONF" ]; then
+ POKYLOCALCONF="$OEROOT/meta/conf/local.conf.sample"
+fi
+if ! (test -r "$BUILDDIR/conf/local.conf"); then
+cat <<EOM
+You had no conf/local.conf file. Poky has created this configuration file for
+you with some default values. You may wish to edit it to use a different MACHINE
+(target hardware) or enable parallel build options to take advantage of multiple
+cores for example. See the file for more information as common configuration
+options are commented.
+
+Also, for more information see the Poky handbook:
+http://pokylinux.org/doc/poky-handbook.html
+
+EOM
+ cp -f $POKYLOCALCONF $BUILDDIR/conf/local.conf
+fi
+
+if [ "x" = "x$POKYLAYERCONF" ]; then
+ POKYLAYERCONF="$OEROOT/meta/conf/bblayers.conf.sample"
+fi
+if ! (test -r "$BUILDDIR/conf/bblayers.conf"); then
+cat <<EOM
+You had no conf/bblayers.conf file. Poky has created this configuration file for
+you with some default values. To add additional metadata layers into your
+configuration please add entries to this file.
+
+For more information see the Poky handbook:
+ http://pokylinux.org/doc/poky-handbook.html
+
+EOM
+
+ # Put the abosolute path to the layers in bblayers.conf so we can run
+ # bitbake without the init script after the first run
+ sed "s|##POKYBASE##|$OEROOT|g" $POKYLAYERCONF > $BUILDDIR/conf/bblayers.conf
+fi
+
+# Prevent disturbing a new GIT clone in same console
+unset POKYLOCALCONF
+unset POKYLAYERCONF
+
+cat <<EOM
+
+### Shell environment set up for Poky builds. ###
+
+You can now run 'bitbake <target>'
+
+Common targets are:
+ poky-image-minimal
+ poky-image-sato
+ meta-toolchain
+ meta-toolchain-sdk
+
+You can also run generated qemu images with a command like 'poky-qemu qemux86'
+
+EOM
diff --git a/scripts/poky-setup-rpmrepo b/scripts/poky-setup-rpmrepo
new file mode 100755
index 0000000000..42a9b6aedf
--- /dev/null
+++ b/scripts/poky-setup-rpmrepo
@@ -0,0 +1,89 @@
+#!/bin/bash
+#
+# This utility setup the necessary metadata for an rpm repo
+#
+# Copyright (c) 2011 Intel Corp.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+function usage() {
+ echo "Usage: $0 <rpm-dir>"
+ echo " <rpm-dir>: default is $TPMDIR/deploy/rpm"
+}
+
+if [ $# -gt 1 ]; then
+ usage
+ exit 1
+fi
+
+setup_tmpdir() {
+ if [ -z "$TMPDIR" ]; then
+ if [ "x$BUILDDIR" = "x" -o ! -d "$BUILDDIR/tmp" ]; then
+ # BUILDDIR unset, try and get TMPDIR from bitbake
+ type -P bitbake &>/dev/null || {
+ echo "In order for this script to dynamically infer paths";
+ echo "to kernels or filesystem images, you either need";
+ echo "bitbake in your PATH or to source poky-init-build-env";
+ echo "before running this script" >&2;
+ exit 1; }
+
+ # We have bitbake in PATH, get TMPDIR from bitbake
+ TMPDIR=`bitbake -e | grep TMPDIR=\" | cut -d '=' -f2 | cut -d '"' -f2`
+ else
+ TMPDIR=$BUILDDIR/tmp
+ fi
+ fi
+}
+
+setup_sysroot() {
+ # Toolchain installs set up $POKY_NATIVE_SYSROOT in their
+ # environment script. If that variable isn't set, we're
+ # either in an in-tree poky scenario or the environment
+ # script wasn't source'd.
+ if [ -z "$POKY_NATIVE_SYSROOT" ]; then
+ setup_tmpdir
+ BUILD_ARCH=`uname -m`
+ BUILD_OS=`uname | tr '[A-Z]' '[a-z]'`
+ BUILD_SYS="$BUILD_ARCH-$BUILD_OS"
+
+ POKY_NATIVE_SYSROOT=$TMPDIR/sysroots/$BUILD_SYS
+ fi
+}
+
+setup_tmpdir
+setup_sysroot
+
+
+if [ -n "$1" ]; then
+ RPM_DIR="$1"
+else
+ RPM_DIR="$TMPDIR/deploy/rpm"
+fi
+
+if [ ! -d "$RPM_DIR" ]; then
+ echo "Error: rpm dir $RPM_DIR doesn't exist"
+ exit 1
+fi
+
+CREATEREPO=$POKY_NATIVE_SYSROOT/usr/bin/createrepo
+if [ ! -e "$CREATEREPO" ]; then
+ echo "Error: can't find createrepo binary"
+ echo "please run bitbake createrepo-native first"
+ exit 1
+fi
+
+
+$CREATEREPO "$RPM_DIR"
+
+exit 0
diff --git a/scripts/qemuimage-testlib b/scripts/qemuimage-testlib
index c2c394d5ed..823cbfa18b 100644
--- a/scripts/qemuimage-testlib
+++ b/scripts/qemuimage-testlib
@@ -39,6 +39,19 @@ Test_Info()
echo -e "\tTest_Info: $*"
}
+# function to update target ip address
+# $1 is the process id of the process, which starts the qemu target
+# $2 is the ip address of the target
+Test_Update_IPSAVE()
+{
+ local pid=$1
+ local ip_addr=$2
+
+ if [ "$TEST_SERIALIZE" -eq 1 ]; then
+ echo "$pid $ip_addr" > $TARGET_IPSAVE
+ fi
+}
+
# function to copy files from host into target
# $1 is the ip address of target
# $2 is the files, which need to be copied into target
@@ -99,6 +112,11 @@ Test_SSH_UP()
local timeout=$2
local interval=0
+ # If TEST_SERIALIZE is set, use existing running qemu for testing
+ if [ ${TEST_SERIALIZE} -eq 1 -a -e ${TARGET_IPSAVE} ]; then
+ timeout=50
+ fi
+
while [ ${interval} -lt ${timeout} ]
do
Test_SSH ${ip_addr} "hostname"
@@ -106,13 +124,13 @@ Test_SSH_UP()
interval=`expr $interval + 10`
sleep 10
else
- Test_Info "We can ssh on ${ip_addr} now"
+ Test_Info "We can ssh on ${ip_addr} within ${interval} seconds"
return 0
fi
done
- Test_Info "We can not ssh on ${ip_addr} in ${timeout}"
+ Test_Info "We can not ssh on ${ip_addr} in ${timeout} seconds"
return 1
}
@@ -162,6 +180,8 @@ Test_Kill_Qemu()
local ret=0
local ppid=0
local i=0
+ local index=0
+ local total=0
declare local pid
# Check if $1 pid exists and is a qemu process
@@ -186,16 +206,39 @@ Test_Kill_Qemu()
ret=$?
done
- # Kill these children pids from the last one
- while [ $i -ne 0 ]
- do
- i=$((i-1))
- kill ${pid[$i]}
- sleep 2
- done
+ # When TEST_SERIALIZE is set, qemu process will not be
+ # killed until all the cases are finished
+ if [ ${TEST_SERIALIZE} -eq 1 -a -e ${TEST_STATUS} ]; then
+ index=`sed -n 2p ${TEST_STATUS} | awk '{print $3}'`
+ total=`sed -n 2p ${TEST_STATUS} | awk '{print $4}'`
+ if [ ${index} != ${total} ]; then
+ Test_Info "Do not kill the qemu process and use it for later testing"
+ Test_Update_IPSAVE $PID $TARGET_IPADDR
+ else
+ # If it is the last case, let's kill it
+ while [ $i -ne 0 ]
+ do
+ i=$((i-1))
+ kill ${pid[$i]}
+ sleep 2
+ done
+
+ # Kill the parent id
+ kill $PID
+ fi
- # Kill the parent id
- kill $PID
+ else
+ # Kill these children pids from the last one
+ while [ $i -ne 0 ]
+ do
+ i=$((i-1))
+ kill ${pid[$i]}
+ sleep 2
+ done
+
+ # Kill the parent id
+ kill $PID
+ fi
fi
return
@@ -204,12 +247,12 @@ Test_Kill_Qemu()
# function to check if there is any qemu process
Test_Check_Qemu_UP()
{
- local count=`ps -ef | grep -c qemu`
- if [ ${count} -lt 2 ]; then
+ local count=`ps -eo command | cut -d " " -f 1 | grep -c "\(^qemu\|.*/qemu\)"`
+ if [ ${count} -lt 1 ]; then
Test_Info "There is no Qemu process"
return 1
else
- Test_Info "There is at least Qemu process running"
+ Test_Info "There is at least one Qemu process running"
return 0
fi
}
@@ -365,27 +408,49 @@ Test_Create_Qemu()
elif [ "$QEMUARCH" = "qemumips" ]; then
KERNEL=$(Test_Find_Image -l ${DEPLOY_DIR}/images -k vmlinux -a ${QEMUARCH})
fi
+
+ # If there is no kernel image found, return failed directly
+ if [ $? -eq 1 ]; then
+ Test_Info "No kernel image file found under ${DEPLOY_DIR}/images for ${QEMUARCH}, pls. have a check"
+ return $ret
+ fi
ROOTFS_IMAGE=$(Test_Find_Image -l ${DEPLOY_DIR}/images -t ${QEMUTARGET} -a ${QEMUARCH})
+
+ # If there is no rootfs image found, return failed directly
+ if [ $? -eq 1 ]; then
+ Test_Info "No ${QEMUTARGET} rootfs image file found under ${DEPLOY_DIR}/images for ${QEMUARCH}, pls. have a check"
+ return $ret
+ fi
+
TEST_ROOTFS_IMAGE="${TEST_TMP}/${QEMUTARGET}-${QEMUARCH}-test.ext3"
CP=`which cp`
- if [ -e "$TEST_ROOTFS_IMAGE" ]; then
- rm -rf $TEST_ROOTFS_IMAGE
- fi
- $CP $ROOTFS_IMAGE $TEST_ROOTFS_IMAGE
-
- export MACHINE=$QEMUARCH
- # Create Qemu in localhost VNC Port 1
- xterm -display ${DISPLAY} -e "${RUNQEMU} ${KERNEL} ${TEST_ROOTFS_IMAGE}" &
+ # When TEST_SERIALIZE is set, we use the existing image under tmp folder
+ if [ ${TEST_SERIALIZE} -eq 1 -a -e "$TARGET_IPSAVE" ]; then
+ # If TARGET_IPSAVE exists, check PID of the qemu process from it
+ PID=`awk '{print $1}' $TARGET_IPSAVE`
+ timeout=50
+ else
+ rm -rf $TEST_ROOTFS_IMAGE
+ $CP $ROOTFS_IMAGE $TEST_ROOTFS_IMAGE
+ if [ $? -ne 0 ]; then
+ Test_Info "Image ${ROOTFS_IMAGE} copy to ${TEST_ROOTFS_IMAGE} failed, return fail"
+ return $ret
+ fi
- # Get the pid of the xterm processor, which will be used in Test_Kill_Qemu
- PID=$!
+ export MACHINE=$QEMUARCH
- sleep 5
+ # Create Qemu in localhost VNC Port 1
+ echo "Running xterm -display ${DISPLAY} -e 'BUILDDIR=${TOPDIR} ${RUNQEMU} ${KERNEL} ${TEST_ROOTFS_IMAGE}' &"
+ xterm -display ${DISPLAY} -e "BUILDDIR=${TOPDIR} ${RUNQEMU} ${KERNEL} ${TEST_ROOTFS_IMAGE}" &
- while [ ${up_time} -lt ${timeout} ]
+ # Get the pid of the xterm processor, which will be used in Test_Kill_Qemu
+ PID=$!
+ fi
+
+ while [ ${up_time} -lt 10 ]
do
Test_Check_Qemu_UP
if [ $? -ne 0 ]; then
@@ -402,13 +467,18 @@ Test_Create_Qemu()
if [ ${up_time} -lt ${timeout} ]; then
sleep 5
TARGET_IPADDR=`Test_Fetch_Target_IP $PID`
+ # If IP address is 0, means there is no qemu process found
+ if [ ${TARGET_IPADDR} == "0" ]; then
+ Test_Info "There is no qemu process or qemu ip address found, return failed"
+ return $ret
+ fi
fi
while [ ${up_time} -lt ${timeout} ]
do
Test_Check_IP_UP ${TARGET_IPADDR}
if [ $? -eq 0 ]; then
- Test_Info "Qemu Network is up, ping with ${TARGET_IPADDR} is OK"
+ Test_Info "Qemu Network is up, ping with ${TARGET_IPADDR} is OK within ${up_time} seconds"
ret=0
break
else
@@ -422,7 +492,8 @@ Test_Create_Qemu()
Test_Info "Qemu and its network is up"
return $ret
else
- Test_Info "Qemu or its network is not up in ${timeout}"
+ Test_Info "Qemu or its network is not up in ${timeout} seconds"
+ Test_Update_IPSAVE $PID $TARGET_IPADDR
return $ret
fi
}
diff --git a/scripts/qemuimage-tests/sanity/compiler b/scripts/qemuimage-tests/sanity/compiler
new file mode 100755
index 0000000000..29dbfd9bb9
--- /dev/null
+++ b/scripts/qemuimage-tests/sanity/compiler
@@ -0,0 +1,52 @@
+#!/bin/bash
+# Compiler Test Case for Sanity Test
+# The case boot up the Qemu target with `poky-qemu qemuxxx`.
+# Then check if gcc/g++/make command can work in target.
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+
+. $POKYBASE/scripts/qemuimage-testlib
+
+TIMEOUT=400
+RET=1
+
+# Start qemu and check its network
+Test_Create_Qemu ${TIMEOUT}
+
+# If qemu network is up, check ssh service in qemu
+if [ $? -eq 0 ]; then
+ Test_Info "Begin to Test SSH Service in Qemu"
+ Test_SSH_UP ${TARGET_IPADDR} ${TIMEOUT}
+ RET=$?
+else
+ RET=1
+fi
+
+# Check if gcc/g++/make can work in target
+if [ $RET -eq 0 -a -f $TOOLS/compiler_test.sh ]; then
+ # Copy compiler_test.sh into target
+ Test_Target_Pre ${TARGET_IPADDR} $TOOLS/compiler_test.sh
+ if [ $? -eq 0 ]; then
+ # Run compiler_test.sh to check if gcc/g++/make can work in target
+ Test_SSH ${TARGET_IPADDR} "sh $TARGET_TEST_DIR/compiler_test.sh"
+ RET=$?
+ else
+ RET=1
+ fi
+fi
+
+if [ ${RET} -eq 0 ]; then
+ Test_Info "Compiler Test PASS"
+ Test_Kill_Qemu
+ Test_Print_Result "compiler" 0
+ exit 0
+else
+ Test_Info "Compiler FAIL, Pls. check above error log"
+ Test_Kill_Qemu
+ Test_Print_Result "compiler" 1
+ exit 1
+fi
diff --git a/scripts/qemuimage-tests/sanity/connman b/scripts/qemuimage-tests/sanity/connman
new file mode 100755
index 0000000000..fca6a27845
--- /dev/null
+++ b/scripts/qemuimage-tests/sanity/connman
@@ -0,0 +1,52 @@
+#!/bin/bash
+# Conmman Check Test Case for Sanity Test
+# The case boot up the Qemu target with `poky-qemu qemuxxx`.
+# Then check if connman can work in target.
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+
+. $POKYBASE/scripts/qemuimage-testlib
+
+TIMEOUT=400
+RET=1
+
+# Start qemu and check its network
+Test_Create_Qemu ${TIMEOUT}
+
+# If qemu network is up, check ssh service in qemu
+if [ $? -eq 0 ]; then
+ Test_Info "Begin to Test SSH Service in Qemu"
+ Test_SSH_UP ${TARGET_IPADDR} ${TIMEOUT}
+ RET=$?
+else
+ RET=1
+fi
+
+# Check if connman can work in target
+if [ $RET -eq 0 -a -f $TOOLS/connman_test.sh ]; then
+ # Copy connman_test.sh into target
+ Test_Target_Pre ${TARGET_IPADDR} $TOOLS/connman_test.sh
+ if [ $? -eq 0 ]; then
+ # Run connman_test.sh to check if connman can work in target
+ Test_SSH ${TARGET_IPADDR} "sh $TARGET_TEST_DIR/connman_test.sh"
+ RET=$?
+ else
+ RET=1
+ fi
+fi
+
+if [ ${RET} -eq 0 ]; then
+ Test_Info "Connman Test PASS"
+ Test_Kill_Qemu
+ Test_Print_Result "connman" 0
+ exit 0
+else
+ Test_Info "Connman Test FAIL, Pls. check above error log"
+ Test_Kill_Qemu
+ Test_Print_Result "connman" 1
+ exit 1
+fi
diff --git a/scripts/qemuimage-tests/sanity/dmesg b/scripts/qemuimage-tests/sanity/dmesg
index 36813dcd43..5ed31b735f 100755
--- a/scripts/qemuimage-tests/sanity/dmesg
+++ b/scripts/qemuimage-tests/sanity/dmesg
@@ -11,7 +11,7 @@
. $POKYBASE/scripts/qemuimage-testlib
-TIMEOUT=360
+TIMEOUT=400
RET=1
# Start qemu and check its network
diff --git a/scripts/qemuimage-tests/sanity/rpm_query b/scripts/qemuimage-tests/sanity/rpm_query
new file mode 100755
index 0000000000..08017ffbe6
--- /dev/null
+++ b/scripts/qemuimage-tests/sanity/rpm_query
@@ -0,0 +1,52 @@
+#!/bin/bash
+# RPM Check Test Case for Sanity Test
+# The case boot up the Qemu target with `poky-qemu qemuxxx`.
+# Then check if rpm command can work in target.
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+
+. $POKYBASE/scripts/qemuimage-testlib
+
+TIMEOUT=400
+RET=1
+
+# Start qemu and check its network
+Test_Create_Qemu ${TIMEOUT}
+
+# If qemu network is up, check ssh service in qemu
+if [ $? -eq 0 ]; then
+ Test_Info "Begin to Test SSH Service in Qemu"
+ Test_SSH_UP ${TARGET_IPADDR} ${TIMEOUT}
+ RET=$?
+else
+ RET=1
+fi
+
+# Check if rpm query can work in target
+if [ $RET -eq 0 -a -f $TOOLS/rpm_test.sh ]; then
+ # Copy rpm_test.sh into target
+ Test_Target_Pre ${TARGET_IPADDR} $TOOLS/rpm_test.sh
+ if [ $? -eq 0 ]; then
+ # Run rpm_test.sh to check if rpm query can work in target
+ Test_SSH ${TARGET_IPADDR} "sh $TARGET_TEST_DIR/rpm_test.sh -qa"
+ RET=$?
+ else
+ RET=1
+ fi
+fi
+
+if [ ${RET} -eq 0 ]; then
+ Test_Info "rpm query Test PASS"
+ Test_Kill_Qemu
+ Test_Print_Result "rpm_query" 0
+ exit 0
+else
+ Test_Info "rpm query FAIL, Pls. check above error log"
+ Test_Kill_Qemu
+ Test_Print_Result "rpm_query" 1
+ exit 1
+fi
diff --git a/scripts/qemuimage-tests/sanity/scp b/scripts/qemuimage-tests/sanity/scp
index ce3489d664..c72cdc9d65 100755
--- a/scripts/qemuimage-tests/sanity/scp
+++ b/scripts/qemuimage-tests/sanity/scp
@@ -11,7 +11,7 @@
. $POKYBASE/scripts/qemuimage-testlib
-TIMEOUT=360
+TIMEOUT=400
RET=1
SPID=0
i=0
diff --git a/scripts/qemuimage-tests/sanity/shutdown b/scripts/qemuimage-tests/sanity/shutdown
index e36b4a983d..bc08cf0fdc 100755
--- a/scripts/qemuimage-tests/sanity/shutdown
+++ b/scripts/qemuimage-tests/sanity/shutdown
@@ -13,7 +13,8 @@
. $POKYBASE/scripts/qemuimage-testlib
-TIMEOUT=360
+TIMEOUT=400
+
RET=1
i=0
@@ -61,6 +62,11 @@ fi
if [ ${RET} -eq 0 ]; then
Test_Info "Shutdown Test PASS"
Test_Print_Result "shutdown" 0
+
+ # Remove TARGET_IPSAVE since no existing qemu running now
+ if [ -e ${TARGET_IPSAVE} ]; then
+ rm -rf ${TARGET_IPSAVE}
+ fi
exit 0
else
Test_Info "Shutdown Test FAIL"
diff --git a/scripts/qemuimage-tests/sanity/ssh b/scripts/qemuimage-tests/sanity/ssh
index 084530adfb..2a0e934392 100755
--- a/scripts/qemuimage-tests/sanity/ssh
+++ b/scripts/qemuimage-tests/sanity/ssh
@@ -11,7 +11,7 @@
. $POKYBASE/scripts/qemuimage-testlib
-TIMEOUT=360
+TIMEOUT=400
RET=1
# Start qemu and check its network
diff --git a/scripts/qemuimage-tests/sanity/zypper_help b/scripts/qemuimage-tests/sanity/zypper_help
new file mode 100755
index 0000000000..1ab6d2407f
--- /dev/null
+++ b/scripts/qemuimage-tests/sanity/zypper_help
@@ -0,0 +1,52 @@
+#!/bin/bash
+# Zypper Check Test Case for Sanity Test
+# The case boot up the Qemu target with `poky-qemu qemuxxx`.
+# Then check if zypper command can work in target.
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+
+. $POKYBASE/scripts/qemuimage-testlib
+
+TIMEOUT=400
+RET=1
+
+# Start qemu and check its network
+Test_Create_Qemu ${TIMEOUT}
+
+# If qemu network is up, check ssh service in qemu
+if [ $? -eq 0 ]; then
+ Test_Info "Begin to Test SSH Service in Qemu"
+ Test_SSH_UP ${TARGET_IPADDR} ${TIMEOUT}
+ RET=$?
+else
+ RET=1
+fi
+
+# Check if zypper help can work in target
+if [ $RET -eq 0 -a -f $TOOLS/zypper_test.sh ]; then
+ # Copy zypper_test.sh into target
+ Test_Target_Pre ${TARGET_IPADDR} $TOOLS/zypper_test.sh
+ if [ $? -eq 0 ]; then
+ # Run zypper_test.sh to check if zypper help can work in target
+ Test_SSH ${TARGET_IPADDR} "sh $TARGET_TEST_DIR/zypper_test.sh help"
+ RET=$?
+ else
+ RET=1
+ fi
+fi
+
+if [ ${RET} -eq 0 ]; then
+ Test_Info "zypper help Test PASS"
+ Test_Kill_Qemu
+ Test_Print_Result "zypper_help" 0
+ exit 0
+else
+ Test_Info "zypper help FAIL, Pls. check above error log"
+ Test_Kill_Qemu
+ Test_Print_Result "zypper_help" 1
+ exit 1
+fi
diff --git a/scripts/qemuimage-tests/sanity/zypper_search b/scripts/qemuimage-tests/sanity/zypper_search
new file mode 100755
index 0000000000..d6bcd27a34
--- /dev/null
+++ b/scripts/qemuimage-tests/sanity/zypper_search
@@ -0,0 +1,52 @@
+#!/bin/bash
+# Zypper Check Test Case for Sanity Test
+# The case boot up the Qemu target with `poky-qemu qemuxxx`.
+# Then check if zypper command can work in target.
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+
+. $POKYBASE/scripts/qemuimage-testlib
+
+TIMEOUT=400
+RET=1
+
+# Start qemu and check its network
+Test_Create_Qemu ${TIMEOUT}
+
+# If qemu network is up, check ssh service in qemu
+if [ $? -eq 0 ]; then
+ Test_Info "Begin to Test SSH Service in Qemu"
+ Test_SSH_UP ${TARGET_IPADDR} ${TIMEOUT}
+ RET=$?
+else
+ RET=1
+fi
+
+# Check if zypper search can work in target
+if [ $RET -eq 0 -a -f $TOOLS/zypper_test.sh ]; then
+ # Copy zypper_test.sh into target
+ Test_Target_Pre ${TARGET_IPADDR} $TOOLS/zypper_test.sh
+ if [ $? -eq 0 ]; then
+ # Run zypper_test.sh to check if zypper search can work in target
+ Test_SSH ${TARGET_IPADDR} "sh $TARGET_TEST_DIR/zypper_test.sh search avahi"
+ RET=$?
+ else
+ RET=1
+ fi
+fi
+
+if [ ${RET} -eq 0 ]; then
+ Test_Info "zypper search package avahi Test PASS"
+ Test_Kill_Qemu
+ Test_Print_Result "zypper_search" 0
+ exit 0
+else
+ Test_Info "zypper search package avahi FAIL, Pls. check above error log"
+ Test_Kill_Qemu
+ Test_Print_Result "zypper_search" 1
+ exit 1
+fi
diff --git a/scripts/qemuimage-tests/scenario/qemuarm/poky-image-lsb b/scripts/qemuimage-tests/scenario/qemuarm/poky-image-lsb
index b8e9847b48..4fa6068768 100644
--- a/scripts/qemuimage-tests/scenario/qemuarm/poky-image-lsb
+++ b/scripts/qemuimage-tests/scenario/qemuarm/poky-image-lsb
@@ -1,5 +1,7 @@
-sanity boot
sanity ssh
sanity scp
sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemuarm/poky-image-sato b/scripts/qemuimage-tests/scenario/qemuarm/poky-image-sato
index b8e9847b48..7a6353e1af 100644
--- a/scripts/qemuimage-tests/scenario/qemuarm/poky-image-sato
+++ b/scripts/qemuimage-tests/scenario/qemuarm/poky-image-sato
@@ -1,5 +1,8 @@
-sanity boot
sanity ssh
sanity scp
sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity connman
sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemuarm/poky-image-sdk b/scripts/qemuimage-tests/scenario/qemuarm/poky-image-sdk
index b8e9847b48..42b8e19026 100644
--- a/scripts/qemuimage-tests/scenario/qemuarm/poky-image-sdk
+++ b/scripts/qemuimage-tests/scenario/qemuarm/poky-image-sdk
@@ -1,5 +1,9 @@
-sanity boot
sanity ssh
sanity scp
sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity compiler
+sanity connman
sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemumips/poky-image-lsb b/scripts/qemuimage-tests/scenario/qemumips/poky-image-lsb
index b8e9847b48..4fa6068768 100644
--- a/scripts/qemuimage-tests/scenario/qemumips/poky-image-lsb
+++ b/scripts/qemuimage-tests/scenario/qemumips/poky-image-lsb
@@ -1,5 +1,7 @@
-sanity boot
sanity ssh
sanity scp
sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemumips/poky-image-sato b/scripts/qemuimage-tests/scenario/qemumips/poky-image-sato
index b8e9847b48..7a6353e1af 100644
--- a/scripts/qemuimage-tests/scenario/qemumips/poky-image-sato
+++ b/scripts/qemuimage-tests/scenario/qemumips/poky-image-sato
@@ -1,5 +1,8 @@
-sanity boot
sanity ssh
sanity scp
sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity connman
sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemumips/poky-image-sdk b/scripts/qemuimage-tests/scenario/qemumips/poky-image-sdk
index b8e9847b48..42b8e19026 100644
--- a/scripts/qemuimage-tests/scenario/qemumips/poky-image-sdk
+++ b/scripts/qemuimage-tests/scenario/qemumips/poky-image-sdk
@@ -1,5 +1,9 @@
-sanity boot
sanity ssh
sanity scp
sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity compiler
+sanity connman
sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemuppc/poky-image-lsb b/scripts/qemuimage-tests/scenario/qemuppc/poky-image-lsb
index b8e9847b48..4fa6068768 100644
--- a/scripts/qemuimage-tests/scenario/qemuppc/poky-image-lsb
+++ b/scripts/qemuimage-tests/scenario/qemuppc/poky-image-lsb
@@ -1,5 +1,7 @@
-sanity boot
sanity ssh
sanity scp
sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemuppc/poky-image-sato b/scripts/qemuimage-tests/scenario/qemuppc/poky-image-sato
index b8e9847b48..7a6353e1af 100644
--- a/scripts/qemuimage-tests/scenario/qemuppc/poky-image-sato
+++ b/scripts/qemuimage-tests/scenario/qemuppc/poky-image-sato
@@ -1,5 +1,8 @@
-sanity boot
sanity ssh
sanity scp
sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity connman
sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemuppc/poky-image-sdk b/scripts/qemuimage-tests/scenario/qemuppc/poky-image-sdk
index b8e9847b48..42b8e19026 100644
--- a/scripts/qemuimage-tests/scenario/qemuppc/poky-image-sdk
+++ b/scripts/qemuimage-tests/scenario/qemuppc/poky-image-sdk
@@ -1,5 +1,9 @@
-sanity boot
sanity ssh
sanity scp
sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity compiler
+sanity connman
sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemux86-64/poky-image-lsb b/scripts/qemuimage-tests/scenario/qemux86-64/poky-image-lsb
index b8e9847b48..4fa6068768 100644
--- a/scripts/qemuimage-tests/scenario/qemux86-64/poky-image-lsb
+++ b/scripts/qemuimage-tests/scenario/qemux86-64/poky-image-lsb
@@ -1,5 +1,7 @@
-sanity boot
sanity ssh
sanity scp
sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemux86-64/poky-image-sato b/scripts/qemuimage-tests/scenario/qemux86-64/poky-image-sato
index b8e9847b48..7a6353e1af 100644
--- a/scripts/qemuimage-tests/scenario/qemux86-64/poky-image-sato
+++ b/scripts/qemuimage-tests/scenario/qemux86-64/poky-image-sato
@@ -1,5 +1,8 @@
-sanity boot
sanity ssh
sanity scp
sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity connman
sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemux86-64/poky-image-sdk b/scripts/qemuimage-tests/scenario/qemux86-64/poky-image-sdk
index b8e9847b48..42b8e19026 100644
--- a/scripts/qemuimage-tests/scenario/qemux86-64/poky-image-sdk
+++ b/scripts/qemuimage-tests/scenario/qemux86-64/poky-image-sdk
@@ -1,5 +1,9 @@
-sanity boot
sanity ssh
sanity scp
sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity compiler
+sanity connman
sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemux86/poky-image-lsb b/scripts/qemuimage-tests/scenario/qemux86/poky-image-lsb
index b8e9847b48..4fa6068768 100644
--- a/scripts/qemuimage-tests/scenario/qemux86/poky-image-lsb
+++ b/scripts/qemuimage-tests/scenario/qemux86/poky-image-lsb
@@ -1,5 +1,7 @@
-sanity boot
sanity ssh
sanity scp
sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemux86/poky-image-sato b/scripts/qemuimage-tests/scenario/qemux86/poky-image-sato
index b8e9847b48..7a6353e1af 100644
--- a/scripts/qemuimage-tests/scenario/qemux86/poky-image-sato
+++ b/scripts/qemuimage-tests/scenario/qemux86/poky-image-sato
@@ -1,5 +1,8 @@
-sanity boot
sanity ssh
sanity scp
sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity connman
sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemux86/poky-image-sdk b/scripts/qemuimage-tests/scenario/qemux86/poky-image-sdk
index b8e9847b48..42b8e19026 100644
--- a/scripts/qemuimage-tests/scenario/qemux86/poky-image-sdk
+++ b/scripts/qemuimage-tests/scenario/qemux86/poky-image-sdk
@@ -1,5 +1,9 @@
-sanity boot
sanity ssh
sanity scp
sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity compiler
+sanity connman
sanity shutdown
diff --git a/scripts/qemuimage-tests/tools/compiler_test.sh b/scripts/qemuimage-tests/tools/compiler_test.sh
new file mode 100644
index 0000000000..9c30d6d78b
--- /dev/null
+++ b/scripts/qemuimage-tests/tools/compiler_test.sh
@@ -0,0 +1,137 @@
+#!/bin/bash
+# compiler test script running in target
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+
+# Prepare test folder for compiler test
+COMPILE_FOLDER="/opt/test/compile_test"
+TEST_FILE="$COMPILE_FOLDER/compile_test.c"
+EXECUTE_FILE="$COMPILE_FOLDER/compile_test"
+TEST_MAKEFILE="$COMPILE_FOLDER/makefile"
+TEST_LIST="gcc g++ make"
+
+if [ ! -d $COMPILE_FOLDER ]; then
+ mkdir -p $COMPILE_FOLDER
+fi
+
+Target_Info()
+{
+ echo -e "\tTARGET: $*"
+}
+
+Target_Err()
+{
+ echo -e "\tTARGET: ##### Error Log #####"
+ $@
+ echo -e "\tTARGET: ##### End #####"
+}
+
+# Function to generate a c test file for compiler testing
+Gen_File()
+{
+ temp=`mktemp`
+
+ # Generate c/c++ test file for compiler testing
+ echo "#include <stdio.h>" >> $temp
+ echo "#include <math.h>" >> $temp
+ echo "" >> $temp
+ echo "double" >> $temp
+ echo "convert(long long l)" >> $temp
+ echo "{" >> $temp
+ echo " return (double)l; // or double(l)" >> $temp
+ echo "}" >> $temp
+ echo "" >> $temp
+ echo "int" >> $temp
+ echo "main(int argc, char * argv[])" >> $temp
+ echo "{" >> $temp
+ echo " long long l = 10;" >> $temp
+ echo " double f;" >> $temp
+ echo "" >> $temp
+ echo " f = convert(l);" >> $temp
+ echo " printf(\"convert: %lld => %f\n\", l, f);" >> $temp
+ echo "" >> $temp
+ echo " f = 1234.67;" >> $temp
+ echo " printf(\"floorf(%f) = %f\n\", f, floorf(f));" >> $temp
+ echo " return 0;" >> $temp
+ echo "}" >> $temp
+ echo $temp
+}
+
+# Function to generate a makefile for compiler testing
+Gen_Makefile()
+{
+ temp=`mktemp`
+ basename=`basename $EXECUTE_FILE`
+
+ echo -e "$basename: $basename.o" >> $temp
+ echo -e "\tgcc -o $basename $basename.o -lm" >> $temp
+ echo -e "$basename.o: $basename.c" >> $temp
+ echo -e "\tgcc -c $basename.c" >> $temp
+
+ echo $temp
+}
+
+# Generate a c test file for compiler testing
+test_file=`Gen_File`
+
+MOVE=`which mv`
+$MOVE $test_file $TEST_FILE
+
+# Begin compiler test in target
+for cmd in $TEST_LIST
+do
+ which $cmd
+ if [ $? -ne 0 ]; then
+ Target_Info "No $cmd command found"
+ exit 1
+ fi
+
+ if [ "$cmd" == "make" ]; then
+ rm -rf $EXECUTE_FILE
+
+ # For makefile test, we need to generate a makefile and run with a c file
+ makefile=`Gen_Makefile`
+ $MOVE $makefile $TEST_MAKEFILE
+
+ cd `dirname $TEST_MAKEFILE`
+ make
+
+ if [ $? -ne 0 ]; then
+ Target_Info "$cmd running with error, Pls. check error in following"
+ Target_Err make
+ exit 1
+ fi
+ else
+ rm -rf $EXECUTE_FILE
+
+ # For gcc/g++, we compile a c test file and check the output
+ $cmd $TEST_FILE -o $EXECUTE_FILE -lm
+
+ if [ $? -ne 0 ]; then
+ Target_Info "$cmd running with error, Pls. check error in following"
+ Target_Err $cmd $TEST_FILE -o $EXECUTE_FILE -lm
+ exit 1
+ fi
+ fi
+
+ # Check if the binary file generated by $cmd can work without error
+ if [ -f $EXECUTE_FILE ]; then
+ $EXECUTE_FILE
+ if [ $? -ne 0 ]; then
+ Target_Info "$EXECUTE_FILE running with error, Pls. check error in following"
+ Target_Err $EXECUTE_FILE
+ exit 1
+ else
+ Target_Info "$cmd can work without problem in target"
+ fi
+ else
+ Target_Info "No executalbe file $EXECUTE_FILE found, Pls. check the error log"
+ exit 1
+ fi
+done
+
+exit 0
diff --git a/scripts/qemuimage-tests/tools/connman_test.sh b/scripts/qemuimage-tests/tools/connman_test.sh
new file mode 100644
index 0000000000..d7e63e7dba
--- /dev/null
+++ b/scripts/qemuimage-tests/tools/connman_test.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+# connman test script running in target
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+
+Target_Info()
+{
+ echo -e "\tTARGET: $*"
+}
+
+Target_Err()
+{
+ echo -e "\tTARGET: connman has issue when running, Pls. check the error log"
+ echo -e "\tTARGET: ##### Error Log #####"
+ $1
+ echo -e "\tTARGET: ##### End #####"
+}
+
+# Check if connmand is in target
+if [ ! -f /usr/sbin/connmand ]; then
+ Target_Info "No connmand command found"
+ exit 1
+fi
+
+# Check if connmand is running in background
+count=`ps -eo cmd | cut -d " " -f 1 | grep -c connmand`
+
+if [ $count -ne 1 ]; then
+ Target_Info "connmand has issue when running in background, Pls, check the output of ps"
+ ps -ef cmd | grep connmand
+ exit 1
+fi
+
+# Check if there is always only one connmand running in background
+if [ connmand > /dev/null 2>&1 ]; then
+ Target_Info "connmand command run without problem"
+ count=`ps -eo cmd | cut -d " " -f 1 | grep -c connmand`
+ if [ $count -ne 1 ]; then
+ Target_Info "There are more than one connmand running in background, Pls, check the output of ps"
+ ps -ef cmd | grep connmand
+ exit 1
+ else
+ Target_Info "There is always one connmand running in background, test pass"
+ exit 0
+ fi
+else
+ Target_Err connmand
+ exit 1
+fi
+
+exit 0
diff --git a/scripts/qemuimage-tests/tools/rpm_test.sh b/scripts/qemuimage-tests/tools/rpm_test.sh
new file mode 100644
index 0000000000..6e6f9112ca
--- /dev/null
+++ b/scripts/qemuimage-tests/tools/rpm_test.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+# rpm test script running in target
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+
+Target_Info()
+{
+ echo -e "\tTARGET: $*"
+}
+
+Target_Err()
+{
+ echo -e "\tTARGET: rpm command has issue when running, Pls. check the error log"
+ echo -e "\tTARGET: ##### Error Log #####"
+ $1
+ echo -e "\tTARGET: ##### End #####"
+}
+
+which rpm
+if [ $? -ne 0 ]; then
+ Target_Info "No rpm command found"
+ exit 1
+fi
+
+if [ rpm > /dev/null 2>&1 ]; then
+ Target_Info "rpm command run without problem"
+else
+ Target_Err rpm
+ exit 1
+fi
+
+# run rpm with specific command parsed to rpm_test.sh
+rpm $* > /dev/null 2>&1
+
+if [ $? -eq 0 ]; then
+ Target_Info "rpm $* work without problem"
+ exit 0
+else
+ Target_Err rpm $*
+ exit 1
+fi
diff --git a/scripts/qemuimage-tests/tools/zypper_test.sh b/scripts/qemuimage-tests/tools/zypper_test.sh
new file mode 100644
index 0000000000..5e8e7aaacf
--- /dev/null
+++ b/scripts/qemuimage-tests/tools/zypper_test.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+# zypper test script running in target
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+
+Target_Info()
+{
+ echo -e "\tTARGET: $*"
+}
+
+Target_Err()
+{
+ echo -e "\tTARGET: zypper command has issue when running, Pls. check the error log"
+ echo -e "\tTARGET: ##### Error Log #####"
+ $1
+ echo -e "\tTARGET: ##### End #####"
+}
+
+which zypper
+if [ $? -ne 0 ]; then
+ Target_Info "No zypper command found"
+ exit 1
+fi
+
+if [ zypper > /dev/null 2>&1 ]; then
+ Target_Info "zypper command run without problem"
+else
+ Target_Err zypper
+ exit 1
+fi
+
+# run zypper with specific command parsed to zypper_test.sh
+zypper $* > /dev/null 2>&1
+
+if [ $? -eq 0 ]; then
+ Target_Info "zypper $* work without problem"
+ exit 0
+else
+ Target_Err zypper $*
+ exit 1
+fi
diff --git a/scripts/rpm2cpio.sh b/scripts/rpm2cpio.sh
new file mode 100755
index 0000000000..426fd77bb7
--- /dev/null
+++ b/scripts/rpm2cpio.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+# This comes from the RPM5 5.4.0 distribution.
+
+pkg=$1
+if [ "$pkg" = "" -o ! -e "$pkg" ]; then
+ echo "no package supplied" 1>&2
+ exit 1
+fi
+
+leadsize=96
+o=`expr $leadsize + 8`
+set `od -j $o -N 8 -t u1 $pkg`
+il=`expr 256 \* \( 256 \* \( 256 \* $2 + $3 \) + $4 \) + $5`
+dl=`expr 256 \* \( 256 \* \( 256 \* $6 + $7 \) + $8 \) + $9`
+# echo "sig il: $il dl: $dl"
+
+sigsize=`expr 8 + 16 \* $il + $dl`
+o=`expr $o + $sigsize + \( 8 - \( $sigsize \% 8 \) \) \% 8 + 8`
+set `od -j $o -N 8 -t u1 $pkg`
+il=`expr 256 \* \( 256 \* \( 256 \* $2 + $3 \) + $4 \) + $5`
+dl=`expr 256 \* \( 256 \* \( 256 \* $6 + $7 \) + $8 \) + $9`
+# echo "hdr il: $il dl: $dl"
+
+hdrsize=`expr 8 + 16 \* $il + $dl`
+o=`expr $o + $hdrsize`
+EXTRACTOR="dd if=$pkg ibs=$o skip=1"
+
+COMPRESSION=`($EXTRACTOR |file -) 2>/dev/null`
+if echo $COMPRESSION |grep -q gzip; then
+ DECOMPRESSOR=gunzip
+elif echo $COMPRESSION |grep -q bzip2; then
+ DECOMPRESSOR=bunzip2
+elif echo $COMPRESSION |grep -q xz; then
+ DECOMPRESSOR=unxz
+elif echo $COMPRESSION |grep -q cpio; then
+ DECOMPRESSOR=cat
+else
+ # Most versions of file don't support LZMA, therefore we assume
+ # anything not detected is LZMA
+ DECOMPRESSOR=`which unlzma 2>/dev/null`
+ case "$DECOMPRESSOR" in
+ /* ) ;;
+ * ) DECOMPRESSOR=`which lzmash 2>/dev/null`
+ case "$DECOMPRESSOR" in
+ /* ) DECOMPRESSOR="lzmash -d -c" ;;
+ * ) DECOMPRESSOR=cat ;;
+ esac
+ ;;
+ esac
+fi
+
+$EXTRACTOR 2>/dev/null | $DECOMPRESSOR
diff --git a/scripts/send-pull-request b/scripts/send-pull-request
index 0576a5dd44..7f51a1b259 100755
--- a/scripts/send-pull-request
+++ b/scripts/send-pull-request
@@ -1,6 +1,16 @@
#!/bin/bash
AUTO=0
+# Check env for any default settings, command line options will override these.
+if [ -z "$PULL_MTA" ]; then
+ PULL_MTA="sendmail"
+fi
+
+# Prevent environment leakage to these vars.
+unset TO
+unset CC
+# allow the user to set FROM in the environment
+
usage()
{
cat <<EOM
@@ -8,6 +18,10 @@ Usage: $(basename $0) [-h] [-a] [[-t email]...] -p pull-dir
-t email Explicitly add email to the recipients
-a Automatically harvest recipients from "*-by: email" lines
in the patches in the pull-dir
+ -f Specify a FROM address, you can also use the FROM environment
+ variable. If you do not specify one, it will try to use the one
+ from your git config. This is ignored if -g is used.
+ -g Use git-send-email to send mail instead of sendmail
-p pull-dir Directory containing summary and patch files
EOM
}
@@ -35,11 +49,17 @@ harvest_recipients()
# Parse and verify arguments
-while getopts "ahp:t:" OPT; do
+while getopts "af:ghp:t:" OPT; do
case $OPT in
a)
AUTO=1
;;
+ f)
+ FROM="$OPTARG"
+ ;;
+ g)
+ PULL_MTA="git"
+ ;;
h)
usage
exit 0
@@ -95,13 +115,29 @@ if [ -z "$TO" ] && [ -z "$CC" ]; then
exit 1
fi
+case "$PULL_MTA" in
+ git)
+ FROM="$(git config sendemail.from)"
+ ;;
+ sendmail)
+ if [ -z "$FROM" ]; then
+ FROM="$(git config user.name) <$(git config user.email)>"
+ if [ -z "$FROM" ]; then
+ echo "ERROR: unable to determine a FROM address"
+ usage
+ exit 1
+ fi
+ fi
+ ;;
+esac
# Generate report for the user and require confirmation before sending
cat <<EOM
The following patches:
$(for PATCH in $PDIR/*.patch; do echo " $PATCH"; done)
-will be sent to the following recipients:
+will be sent with the following headers:
+ From: $FROM
To: $TO
CC: $CC
@@ -111,21 +147,52 @@ read cont
if [ "$cont" == "y" ] || [ "$cont" == "Y" ]; then
ERROR=0
- for PATCH in $PDIR/*patch; do
- # Insert To and CC headers via formail to keep them separate and
- # appending them to the sendmail command as -- $TO $CC has proven
- # to be an exercise in futility.
- #
- # Use tail to remove the email envelope from git or formail as
- # msmtp (sendmail) would choke on them.
- cat $PATCH | formail -I "To: $TO" -I "CC: $CC" | tail -n +2 | sendmail -t
- if [ $? -eq 1 ]; then
- ERROR=1
- fi
- done
+ case "$PULL_MTA" in
+ git)
+ export IFS=$','
+ GIT_TO=$(for R in $TO; do echo -n "--to='$R' "; done)
+ GIT_CC=$(for R in $CC; do echo -n "--cc='$R' "; done)
+ unset IFS
+ for PATCH in $PDIR/*patch; do
+ # We harvest the emails manually, so force git not to.
+ eval "git send-email $GIT_TO $GIT_CC --no-chain-reply-to --suppress-cc=all $PATCH"
+ if [ $? -eq 1 ]; then
+ ERROR=1
+ fi
+ done
+ ;;
+ sendmail)
+ for PATCH in $PDIR/*patch; do
+ # Insert To and CC headers via formail to keep them separate and
+ # appending them to the sendmail command as -- $TO $CC has
+ # proven to be an exercise in futility.
+ #
+ # Clear the From header, leaving it up to sendmail to insert an
+ # appropriate one. Insert the original sender (per git) into the
+ # body of the message.
+ #
+ # Use tail to remove the email envelope from git or formail as
+ # msmtp (sendmail) would choke on them.
+ #
+ # Modify the patch date for sequential delivery, but retain the
+ # original date as "Old-Date".
+ DATE=$(date +"%a, %d %b %Y %k:%M:%S %z")
+ GIT_FROM=$(cat $PATCH | formail -X "From:")
+ cat $PATCH | formail -I "To: $TO" -I "CC: $CC" -I "From: $FROM" -i "Date: $DATE" | sed "0,/^$/s/^$/\n$GIT_FROM\n/" | tail -n +2 | sendmail -t
+ if [ $? -eq 1 ]; then
+ ERROR=1
+ fi
+ done
+ ;;
+ *)
+ echo "ERROR: unknown MTA: $PULL_MTA"
+ usage
+ exit 1
+ ;;
+ esac
+
if [ $ERROR -eq 1 ]; then
- echo "ERROR: sendmail failed to send one or more messages. Check your"
- echo " sendmail log for details."
+ echo "ERROR: Failed to send one or more messages. Check your MTA log for details."
fi
else
echo "Send aborted."